{"version":3,"file":"static/js/main.ea54f27f.js","mappings":"4BAAA,IAAIA,EAAM,CACT,aAAc,CACb,MACA,MAED,aAAc,CACb,MACA,MAED,aAAc,CACb,MACA,MAED,aAAc,CACb,MACA,MAED,aAAc,CACb,MACA,MAED,aAAc,CACb,MACA,OAGF,SAASC,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEJ,EAAKE,GAC9B,OAAOG,QAAQC,UAAUC,MAAK,KAC7B,IAAIC,EAAI,IAAIC,MAAM,uBAAyBP,EAAM,KAEjD,MADAM,EAAEE,KAAO,mBACHF,CAAC,IAIT,IAAIG,EAAMX,EAAIE,GAAMU,EAAKD,EAAI,GAC7B,OAAOR,EAAoBK,EAAEG,EAAI,IAAIJ,MAAK,IAClCJ,EAAoBU,EAAED,EAAI,KAEnC,CACAX,EAAoBa,KAAO,IAAOC,OAAOD,KAAKd,GAC9CC,EAAoBW,GAAK,KACzBI,EAAOC,QAAUhB,C,+DC1CV,MAAMiB,EAAaC,IAAmB,IAAlB,IAAEC,GAAUD,EACrC,MAAME,EAAQD,EAAIE,OAAO,CAAEC,QAASH,EAAII,KAAMC,SAAUL,EAAII,OACtDE,EAAiBN,EAAIE,OAAO,CAChCK,IAAKP,EAAIQ,IACTC,aAAcT,EAAII,KAClBM,OAAQT,EACRU,OAAQV,IAEJW,EAAWZ,EAAIE,OAAO,CAC1BK,IAAKP,EAAIQ,IACTK,IAAKb,EAAII,KACTU,YAAad,EAAIe,IACjBL,OAAQT,EACRU,OAAQV,EACRe,WAAYhB,EAAIiB,YAEZ5B,EAAQW,EAAIkB,QAAQ,CACxBC,YAAanB,EAAIoB,KACjBC,cAAerB,EAAII,KACnBkB,iBAAkBtB,EAAII,KACtBmB,kBAAmBvB,EAAIoB,OAEnBI,EAAWxB,EAAIkB,QAAQ,CAAEO,GAAIb,EAAUc,IAAKrC,IAC5CsC,EAAY3B,EAAIE,OAAO,CAAE0B,QAAS5B,EAAIQ,IAAKqB,UAAW7B,EAAIQ,MAC1DsB,EAAW9B,EAAIkB,QAAQ,CAAEO,GAAIE,EAAWD,IAAKrC,IAC7C0C,EAAc/B,EAAIE,OAAO,CAC7BK,IAAKP,EAAIQ,IACTE,OAAQT,EACRU,OAAQV,IAEJ+B,EAAShC,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIiC,IAAIrB,GAAWc,IAAKrC,IAmCzD,OAlCoBW,EAAIkC,QAAQ,CAC9BC,WAAYnC,EAAIoC,KAAK,CAAC9B,GAAiB,CAACkB,GAAW,IACnDa,WAAYrC,EAAIoC,KAAK,CAACpC,EAAII,MAAO,GAAI,IACrCkC,sBAAuBtC,EAAIoC,KACzB,GACA,CACEpC,EAAIE,OAAO,CACTqC,OAAQvC,EAAIiC,IAAIjC,EAAIiB,WACpBuB,QAASxC,EAAIiC,IAAIjC,EAAIiB,cAGzB,IAEFwB,qBAAsBzC,EAAIoC,KACxB,GACA,CACEpC,EAAIE,OAAO,CACTwC,UAAW1C,EAAIiC,IAAIjC,EAAIiB,WACvBY,UAAW7B,EAAI2C,QAGnB,IAEFC,aAAc5C,EAAIoC,KAAK,GAAI,CAACN,GAAW,IACvCe,QAAS7C,EAAIoC,KAAK,CAACL,GAAc,CAACP,GAAW,IAC7CsB,SAAU9C,EAAIoC,KAAK,GAAI,CAACJ,GAAS,CAAC,UAClCe,gBAAiB/C,EAAIoC,KAAK,GAAI,CAACJ,GAAS,CAAC,UACzCgB,WAAYhD,EAAIoC,KAAK,CAACL,GAAc,GAAI,IACxCkB,aAAcjD,EAAIoC,KAAK,CAACpC,EAAI2C,MAAO,GAAI,IACvCO,WAAYlD,EAAIoC,KAAK,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,GAAI,IACnDkC,eAAgBnD,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAIiC,IAAIjC,EAAIiB,YAAa,GAAI,IACjEmC,UAAWpD,EAAIoC,KAAK,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,GAAI,IAClDoC,aAAcrD,EAAIoC,KAAK,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,GAAI,KAErC,EC5DPqC,EAA0BA,IACrCC,EAAAA,GAAMC,OAAgC,CACpCC,UAAWC,EAAAA,GAAUC,YACrB7D,WAAY8D,G,0ECND,SAASC,EAAgBC,GACtC,OACEC,EAAAA,EAAAA,MAACC,EAAAA,EAAO,CAACC,QAAQ,eAAgBH,EAAKI,SAAA,EACpCC,EAAAA,EAAAA,KAAA,QACEC,QAAQ,MACRC,EAAE,gNAEJF,EAAAA,EAAAA,KAAA,QAAME,EAAE,6SAGd,C,gGCAO,SAASC,EAAWvE,GAAuD,IAAtD,SAAEmE,EAAQ,QAAEK,EAAO,WAAEC,GAA8BzE,EAC7E,MAAM0E,GAAQC,EAAAA,EAAAA,KAEd,OACEP,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CACTC,GAAI,CACFC,QAAS,MACTC,OAAQ,UACRC,aAAc,MACdC,gBAA2B,OAAVR,QAAU,IAAVA,EAAAA,EAAcC,EAAMQ,OAAOC,cAC5CC,MAAO,UACPC,SAAU,QAEZb,QAASA,EAAQL,SAEhBA,GAGP,C,eCtBO,SAASmB,EAAStF,GAA+B,IAA9B,QAAEwE,GAAyBxE,EACnD,OACEoE,EAAAA,EAAAA,KAACG,EAAW,CAACC,QAASA,EAAQL,UAC5BC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,YAGN,C,8HCRA,MAAM+F,GAAYC,EAAAA,EAAAA,GAAW,CAC3BC,KAAM,CACJC,QAAS,eACTZ,OAAQ,aAQZ,GAAea,EAAAA,EAAAA,aACb,CAAA5F,EAEE6F,KACI,IAFJ,QAAEC,EAAO,SAAE3B,EAAQ,KAAE4B,GAAO,GAAkE/F,EAG9F,MAAMgG,EAAUR,KACTS,IAAYC,EAAAA,EAAAA,MAEbR,EAAOA,KACXS,IAAgBL,GAChBG,EAAS,eAAgBG,EAAAA,GAAY,EAWvC,OARAC,EAAAA,EAAAA,qBACER,GACA,MACEH,UAEF,CAACA,IAGIK,EAAO,MACZ3B,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACC,UAAWP,EAAQN,KAAMlB,QAASkB,EAAKvB,SACzCA,GAEJ,G,+QCXE,SAASqC,EAASxG,GAUL,IAVM,WACxBiB,EAAU,QACVuD,EAAO,wBACPiC,EAAuB,WACvBC,EAAU,YACVC,EAAW,YACXC,EAAW,SACXC,EAAQ,WACRC,EAAU,OACVC,GACe/G,EACf,MAAM0E,GAAQC,EAAAA,EAAAA,MACRqC,GAAYC,EAAAA,EAAAA,MACZC,GAAcC,EAAAA,EAAAA,GAAczC,EAAM0C,YAAYC,KAAK,OAEnDC,GAAeC,EAAAA,EAAAA,UAAQ,KAC3B,GAAIZ,EAAa,OAAO1F,CACR,GACf,CAAC0F,EAAa1F,KAETuG,OAAQC,IAAcC,EAAAA,EAAAA,IAAazG,IACnCuG,OAAQ3F,EAAO,QAAE8F,IAAYC,EAAAA,EAAAA,IAAgBN,EAAcN,GAC7Da,GAAiBC,EAAAA,EAAAA,IAAgBR,IAEjC,aAAES,EAAY,mBAAEC,EAAkB,mBAAEC,IAAuBC,EAAAA,EAAAA,MAE3DC,GAAqBZ,EAAAA,EAAAA,UAAQ,KACjC,GAAKE,QAAyBW,IAAZvG,EAClB,OAAOwG,EAAAA,EAAAA,IAAgCC,EAAAA,EAAAA,GAAiBzG,EAAS4F,EAAUc,UAAUC,WAAY,EAAE,GAClG,CAACf,EAAW5F,KAOf4G,EAAAA,EAAAA,YAAU,KACJxH,GAAcY,GACZ4E,GAAyBA,EAAwBxF,EAAYY,EAAQ2G,WAC3E,GACC,CAACvH,EAAYY,IAEhB,MAAM6G,EAAWX,EAAaY,SAAS1H,GAYjC2H,GAAWrB,EAAAA,EAAAA,UAAQ,MACnBR,KACCL,KACAe,KAEDoB,EAAAA,EAAAA,GAAiBnC,IACH,OAATe,QAAS,IAATA,OAAS,EAATA,EAAWxG,WAAWuH,cAAe9B,GAI3Ce,EAAUqB,OAAOC,oBAAoBJ,SAASjC,EAAWqC,uBACzDtB,EAAUuB,KAAKD,oBAAoBJ,SAASjC,EAAWqC,wBAEzD,CAACrC,EAAYe,EAAWV,IAQ3B,OANA0B,EAAAA,EAAAA,YAAU,KACJ7B,GAAe3F,GACjB2F,EAAY3F,EAAY2H,EAC1B,GACC,CAACA,EAAU3H,EAAY2F,KAGxB5C,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CACFzB,GAAI,CACFc,QAASiD,EAAW,OAAS,OAC7BK,OAAQ,OACRlE,OAAQ,UACRD,QAASoC,EAAc,SAAW,SAClCgC,oBAAqB,iBACrBC,IAAK,QACLC,WAAY,SACZ,aAAc,CACZ/E,QAAS,GACTU,OAAQ,WAEV,WAAY,CACVN,WAAYC,EAAM2E,QAAQ5E,WAAW6E,OACrCvE,OAAQ,WAEV,UAAW,CACTN,WAAYC,EAAM2E,QAAQ5E,WAAW6E,QAEvC,4BAA6B,CAC3BJ,oBAAqB,mBAGzB1E,QArEoB+E,KACjB9B,GACDjD,GAASA,EAAQiD,EAAU,EAoE7BlB,UAAS,GAAAiD,OAAK1C,EAAa,WAAa,IAAE0C,OAAG3C,EAAW,UAAY,IAAK1C,SAAA,EAEzEC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAAAnC,UACFH,EAAAA,EAAAA,MAACyF,EAAAA,GAAI,CAACC,WAAS,EAACN,WAAW,SAASD,IAAI,SAAQhF,SAAA,EAC9CC,EAAAA,EAAAA,KAACuF,EAAAA,GAAU,CAACC,KAAe,OAATnC,QAAS,IAATA,OAAS,EAATA,EAAWmC,KAAMC,KAAM3C,EAAc,OAAS,OAAQ4C,QAAkB,OAATrC,QAAS,IAATA,OAAS,EAATA,EAAWxG,cAE5FmD,EAAAA,EAAAA,KAACqF,EAAAA,GAAI,CAACM,MAAI,EAACC,IAAE,EAACnF,GAAI,CAAEoF,SAAU,UAAW9F,UACvCC,EAAAA,EAAAA,KAACqF,EAAAA,GAAI,CAACC,WAAS,EAACN,WAAW,SAAQjF,UACjCH,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAACzB,GAAI,CAAEqF,MAAO,QAAS/F,SAAA,EACzBC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CACTQ,MAAM,eACNP,GAAI,CACFsF,WAAY,SACZF,SAAU,SACVG,aAAc,WACd/E,SAAU,OACVgF,WAAY,IACZ,4BAA6B,CAC3BhF,SAAU,SAEZlB,SAEQ,OAATsD,QAAS,IAATA,OAAS,EAATA,EAAWqB,UAEd1E,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CACTS,SAAS,OACTR,GAAI,CAAEsF,WAAY,SAAUF,SAAU,SAAUG,aAAc,WAAYE,OAAQ,aAAcnG,SAEtF,OAATsD,QAAS,IAATA,OAAS,EAATA,EAAWuB,oBAQxB5E,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAAAnC,UACFC,EAAAA,EAAAA,KAACmG,EAAAA,GAAkB,CAACjK,SAAmB,OAATmH,QAAS,IAATA,OAAS,EAATA,EAAW+C,aAAcxF,aAAa,OAAOiE,OAAO,OAAO5D,SAAS,YAGpGjB,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAAAnC,UACFH,EAAAA,EAAAA,MAACyF,EAAAA,GAAI,CAACC,WAAS,EAACe,eAAe,WAAWrB,WAAW,SAAQjF,SAAA,CACzDwC,EAAqBgB,GACrBvD,EAAAA,EAAAA,KAACsG,EAAAA,GAAU,CAAC/C,SAAO,KAEnB3D,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAAAnC,SAAA,EACFC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CACTQ,MAAM,eACNuF,MAAM,QACN9F,GAAI,CACF+F,SAAU,QACVvF,SAAU,OACV,4BAA6B,CAC3BA,SAAU,SAGdgF,WAAY,IAAIlG,SAEG,OAAlBgE,QAAkB,IAAlBA,EAAAA,EAAsB,QAEzB/D,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CACT+F,MAAM,QACN9F,GAAI,CACFyF,OAAQ,YACR,4BAA6B,CAC3BjF,SAAU,SAEZlB,cAEkBiE,IAAnBP,QAA4CO,IAAZvG,QAAuCuG,IAAdX,GACtDoD,EAAAA,EAAAA,IACE,IAAIC,EAAAA,EAAUjD,GACXkD,cAAazC,EAAAA,EAAAA,GAAiBzG,EAAS4F,EAAUc,WACjDC,WACH,EACA,MAEF,UAnCM,KAwCf7B,GAAe+B,EAAW,MACzBtE,EAAAA,EAAAA,KAAC4G,EAAAA,EAAU,CAAC5F,MAAOV,EAAMuG,YAAYC,cAAerB,KAAK,OAAOrF,QA5IhD2G,IACxBA,EAAMC,kBAEF1C,EACFT,EAAmB,CAAChH,IAEpB+G,EAAmB,CAAC/G,GACtB,WA2IJ,C,2TCpNA,MAAMoK,EAAc,CAACC,EAAAA,GAAKC,EAAAA,GAAKC,EAAAA,GAAQC,EAAAA,GAAOC,EAAAA,GAAOC,EAAAA,IAO9C,SAASC,EAAS5L,GAA2C,IAA1C,MAAE6L,EAAK,aAAEC,GAA8B9L,EAC/D,MAAM0E,GAAQC,EAAAA,EAAAA,OAEN6C,OAAQC,IAAcC,EAAAA,EAAAA,IAAamE,EAAMzL,SAE3C2L,GAAcC,EAAAA,EAAAA,cAAY,KAC1BvE,GACFqE,EAAarE,EACf,GACC,CAACqE,EAAcrE,IAElB,OACEzD,EAAAA,EAAAA,MAACiI,EAAAA,GAAI,CACHpH,GAAI,CACFC,QAAS,mBACToH,OAAQ,oBACRlH,aAAc,OACdD,OAAQ,UACR,UAAW,CACTN,WAAYC,EAAM2E,QAAQ5E,WAAW0H,SAGzChD,IAAI,QACJ3E,QAASuH,EAAY5H,SAAA,EAErBC,EAAAA,EAAAA,KAACuF,EAAAA,GAAU,CAACC,KAAMiC,EAAMjC,KAAMC,KAAK,UACnCzF,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CACTC,GAAI,CACFO,MAAO,eACPiF,WAAY,IACZhF,SAAU,OACV,2BAA4B,CAC1BA,SAAU,SAEZlB,SAED0H,EAAM/C,WAIf,CAMO,SAASsD,EAAUC,GAAqC,IAApC,aAAEP,GAA+BO,EAC1D,OACEjI,EAAAA,EAAAA,KAAC6H,EAAAA,GAAI,CACHpH,GAAI,CACFyF,OAAQ,aACRxF,QAAS,SACT,2BAA4B,CAC1B2F,eAAgB,aAChB3F,QAAS,WAGbqE,IAAI,OACJmD,KAAK,OAAMnI,SAEVkH,EAAYxM,KAAK0N,IAChBnI,EAAAA,EAAAA,KAACwH,EAAS,CAA0BC,MAAOU,EAAYT,aAAcA,GAArDS,EAAWnM,YAInC,CC7DA,MAAMoF,GAAYC,EAAAA,EAAAA,IAAW,KACpB,CACL+G,QAAS,CACP1H,QAAS,SACT,2BAA4B,CAC1BA,QAAS,eAcF,SAAS2H,EAAQzM,GAMb,IANc,KAC/B0M,EAAI,SACJC,EAAQ,QACRC,EAAO,oBACPC,EAAsB,GAAE,kBACxBC,EAAoB,IACN9M,EACd,MAAM0E,GAAQC,EAAAA,EAAAA,MACRoI,GAASC,EAAAA,EAAAA,IAAYtI,GACrBsB,EAAUR,IAEV0B,GAAcC,EAAAA,EAAAA,GAAczC,EAAM0C,YAAYC,KAAK,QAClD4F,EAAeC,IAAoBC,EAAAA,EAAAA,UAAS,KAC5CC,EAAqBC,IAA0BF,EAAAA,EAAAA,WAAS,IACxDG,EAAmBC,IAAwBJ,EAAAA,EAAAA,UAAmB,KAE7D3F,OAAQgG,IAAqBC,EAAAA,EAAAA,KAC/BC,GAAkBC,EAAAA,EAAAA,OAElB,aAAE5F,IAAiBG,EAAAA,EAAAA,MAEnB0F,GAAuBrG,EAAAA,EAAAA,UAAQ,IAC5B,IAAI,IAAIsG,IAAIC,EAAAA,GAAyBjP,KAAKQ,GAAMA,EAAEe,UAASoJ,OAAOzB,MACxE,CAAC+F,EAAAA,GAA0B/F,KAExB,UAAEgG,EAAS,cAAEC,IAAkBzG,EAAAA,EAAAA,UAAQ,KAC3C,IAAKiG,EAAkB,MAAO,CAAC,EAE/B,MAAMO,EAAiC,GACjCC,EAAqC,GAgB3C,OAdAN,EACGO,QAAQpC,IACC+B,EAAWjF,SAASkD,EAAM5K,cAEnCiN,SAASrC,IACR,MAAMsC,EAAeX,EAAiBY,MAAM/O,GAAMA,EAAEgP,aAAaC,qBAAuBzC,EAAM5K,aAE9E,OAAZkN,QAAY,IAAZA,GAAAA,EAAcE,aAAaE,iBAC7BR,EAAUS,KAAK3C,GAEfmC,EAAcQ,KAAK3C,EACrB,IAGG,CAAEkC,UAAWA,EAAUlP,KAAKQ,GAAMA,EAAE4B,aAAa+M,cAAeA,EAAcnP,KAAKQ,GAAMA,EAAE4B,aAAa,GAC9G,CAACyM,EAAiBE,EAAYJ,IAE3BiB,GAAmBzC,EAAAA,EAAAA,cACtBH,IACKgB,EAAoBlE,SAAc,OAALkD,QAAK,IAALA,OAAK,EAALA,EAAO5K,WAAWuH,aAC/CmE,GAAUA,EAASd,EAAM,GAE/B,CAACgB,IAGG6B,GAAoB1C,EAAAA,EAAAA,cAAa2C,IACrCtB,GAAuB,GACvBH,EAAiByB,EAAM,GACtB,KAEI,CAAEC,IAAmBC,EAAAA,EAAAA,GAA0B5B,EAAeyB,EAAmB,KAElFI,GAAkBvH,EAAAA,EAAAA,UAAQ,OACzB0F,GAAkBW,GAAeI,GAAkBD,QAEpDlF,EAAAA,EAAAA,GAAiBoE,KACXW,EAAWpE,OAAOwE,GAAexE,OAAOuE,GAAWpF,SAASsE,KAIrE,CAACA,EAAeW,EAAYI,EAAeD,IAExCgB,EAAoBA,CAAC9N,EAAoB8F,KAC7C,MAAMiI,EAAQ1B,EAAkB2B,QAAQhO,IAEzB,IAAX+N,EAWAjI,GACFwG,GAAsB2B,GAEb,IADgB,IAAIA,EAAWjO,MAZnC8F,GACHwG,GAAsB2B,IACpB,MAAMC,EAAiB,IAAID,GAE3B,OADAC,EAAeC,OAAOJ,EAAO,GACtB,IAAIG,EAAe,GAWhC,EAGIE,GAAsB9H,EAAAA,EAAAA,UAAQ,IAC3B,IAAI,IAAIsG,IAAI,IAAID,KAAyB,OAATG,QAAS,IAATA,EAAAA,EAAa,MAAsB,OAAbC,QAAa,IAAbA,EAAAA,EAAiB,OAC7E,CAACJ,EAAYG,EAAWC,IAErBsB,GAAS/H,EAAAA,EAAAA,UAAQ,IACd+F,EAAkBiC,SAAWF,EAAoBE,SAA8B,IAApBT,GACjE,CAACxB,EAAmB+B,EAAqBP,IAE5C,OACE1K,EAAAA,EAAAA,KAAAoL,EAAAA,SAAA,CAAArL,UACEC,EAAAA,EAAAA,KAACqL,EAAAA,EAAS,CACR/C,KAAMA,EACNgD,MAAKC,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACPmN,QAASA,EACTiD,YAAa,CACXhL,GAAI,CACF,qBAAsB,CACpBC,QAAS,IACToF,MAAO,QACPjF,gBAAiB8H,EAASrI,EAAM2E,QAAQ5E,WAAWqL,OAASpL,EAAMQ,OAAO6K,cAE3E,2BAA4B,CAC1BjL,QAAS,OAGbX,UAEFH,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CACFzB,GAAI,CACFmL,SAAU,YACV7L,SAAA,EAEFC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACzB,GAAI,CAAEC,QAASoC,EAAc,SAAW,SAAUoD,OAAQ,cAAenG,UAC5EC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACC,GAAI,CAAEQ,SAAU,OAAQ4K,WAAY,WAAY9L,SAAC,yJAM/DC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CACFzB,GAAI,CACFmL,SAAU,WACV1F,OAAQ,aACRxF,QAASoC,EAAc,SAAW,UAClC/C,UAEFC,EAAAA,EAAAA,KAAC8L,EAAAA,GAAe,CACdC,WAAS,EACTnL,aAAa,MACbP,WAAYC,EAAM2E,QAAQ5E,WAAW2L,OACrCC,gBAAgB,OAChBC,WAAS,EACTC,YAAWZ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACb+Q,WAAY,CACVC,gBACErM,EAAAA,EAAAA,KAACsM,EAAAA,EAAc,CAACV,SAAS,QAAO7L,UAC9BC,EAAAA,EAAAA,KAACuM,EAAAA,EAAU,CAACvL,MAAOV,EAAMuG,YAAYC,cAAerB,KAAK,WAG7D+G,UAAW,IAEbjE,SAAUiC,OAIdxK,EAAAA,EAAAA,KAACgI,EAAU,CAACN,aAAc2C,KAE1BrK,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACzB,GAAI,CAAEyF,OAAQ,SAAUJ,MAAO,OAAQjB,OAAQ,MAAOxE,WAAYC,EAAM2E,QAAQ5E,WAAW6E,WAEhGtF,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAACzB,GAAI,CAAEoE,OAAQ,QAASgB,SAAU,eAAgB9F,SAAA,CACnDmL,GAASlL,EAAAA,EAAAA,KAACyM,EAAAA,GAAM,IAAM,KAEtB/B,GAAmB7B,IAAiBpE,EAAAA,EAAAA,GAAiBoE,KAAmBG,GACvEhJ,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACC,UAAWP,EAAQwG,QAAQrI,UAC9BC,EAAAA,EAAAA,KAAC0M,EAAAA,EAAW,CAAC7P,WAAYgM,EAAe8D,SAAUA,IAAM1D,GAAuB,OAE/E,MAEJrJ,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAAAnC,SAAA,CACD8I,EAAgB,MACf7I,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACC,UAAWP,EAAQwG,QAAQrI,UAC9BC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACS,SAAS,OAAMlB,UACzBC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,gBAKN2E,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAAC0K,GAAI/D,EAAgB,MAAQ,OAAO9I,UAC1B,OAAVyJ,QAAU,IAAVA,EAAAA,EAAc,IAAI/O,KAAKiL,IACvB1F,EAAAA,EAAAA,KAACoC,EAAAA,EAAS,CAERvF,WAAY6I,EACZtF,QAASiK,EACT/H,WAAYuG,EACZtG,aAAW,EACXC,YAAamI,EACblI,SAAUiG,EAAkBnE,SAASmB,GACrChD,WAAY+F,EAAoBlE,SAASmB,IAPpCA,WAab9F,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAAC0K,GAAI/D,GAA0E,KAA/C,OAATc,QAAS,IAATA,EAAAA,EAAa,IAAIvE,OAAoB,OAAbwE,QAAa,IAAbA,EAAAA,EAAiB,IAAIuB,OAAe,MAAQ,OAAOpL,SAAA,CACnG8I,GAA0E,KAA/C,OAATc,QAAS,IAATA,EAAAA,EAAa,IAAIvE,OAAoB,OAAbwE,QAAa,IAAbA,EAAAA,EAAiB,IAAIuB,OAAe,MAC7EnL,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAAC2B,UAAWP,EAAQwG,QAASnH,SAAS,OAAMlB,UACrDC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,cAIJuE,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAAC0K,GAAI/D,GAA8C,KAAnB,OAATc,QAAS,IAATA,EAAAA,EAAa,IAAIwB,OAAe,MAAQ,OAAOpL,SAAA,CACvE8I,GAA8C,KAAnB,OAATc,QAAS,IAATA,EAAAA,EAAa,IAAIwB,OAAe,MACjDnL,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAAC2B,UAAWP,EAAQwG,QAASnH,SAAS,OAAOgF,WAAY,IAAIlG,UACtEC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,cAIJ2E,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAAC0K,GAAI/D,GAA8C,KAAnB,OAATc,QAAS,IAATA,EAAAA,EAAa,IAAIwB,OAAe,MAAQ,OAAOpL,UAC7D,OAAT4J,QAAS,IAATA,EAAAA,EAAa,IAAIlP,KAAKiL,IACtB1F,EAAAA,EAAAA,KAACoC,EAAAA,EAAS,CAERvF,WAAY6I,EACZtF,QAASiK,EACT/H,WAAYuG,EACZrG,YAAamI,EACblI,SAAUiG,EAAkBnE,SAASmB,GACrChD,WAAY+F,EAAoBlE,SAASmB,IANpCA,WAYb9F,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAAC0K,GAAI/D,GAAkD,KAAnB,OAAbe,QAAa,IAAbA,EAAAA,EAAiB,IAAIuB,OAAe,MAAQ,OAAOpL,SAAA,CAC3E8I,GAAkD,KAAnB,OAAbe,QAAa,IAAbA,EAAAA,EAAiB,IAAIuB,OAAe,MACrDnL,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAAC2B,UAAWP,EAAQwG,QAASnH,SAAS,OAAOgF,WAAY,IAAIlG,UACtEC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,cAIJ2E,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAAC0K,GAAI/D,GAAkD,KAAnB,OAAbe,QAAa,IAAbA,EAAAA,EAAiB,IAAIuB,OAAe,MAAQ,OAAOpL,UAC7D,OAAb6J,QAAa,IAAbA,EAAAA,EAAiB,IAAInP,KAAKiL,IAC1B1F,EAAAA,EAAAA,KAACoC,EAAAA,EAAS,CAERvF,WAAY6I,EACZtF,QAASiK,EACT/H,WAAYuG,EACZrG,YAAamI,EACblI,SAAUiG,EAAkBnE,SAASmB,GACrChD,WAAY+F,EAAoBlE,SAASmB,IANpCA,sBAiB3B,C,0ECnSe,SAASmH,EAAYlN,GAAqB,IAADmN,EACtD,OACE9M,EAAAA,EAAAA,KAAC+M,EAAAA,EAAM,IAAKpN,EAAOc,GAAI,CAAEJ,WAAY,aAAuB,QAAZyM,EAAInN,EAAMc,UAAE,IAAAqM,EAAAA,EAAI,CAAC,GAAK/M,SAAC,QAI3E,C,gGCNM,SAAUiN,EAAQrN,GACtB,OACEK,EAAAA,EAAAA,KAACH,EAAAA,EAAOrE,OAAAyR,OAAA,CAACnN,QAAQ,eAAkBH,EAAK,CAAAI,UACtCC,EAAAA,EAAAA,KAAA,SACE3E,GAAG,SACHyK,MAAM,MACNjB,OAAO,MACPqI,EAAE,IACFC,EAAE,IACFC,UAAU,u1UA2IlB,CC5IM,SAAU7H,EAAU3J,GAAyC,IAAxC,KAAE4J,EAAI,KAAEC,EAAI,GAAEhF,EAAE,IAAE4M,GAAsBzR,EACjE,OACEgE,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CACFzB,GAAEjF,OAAAyR,OAAA,CACAnH,MAAW,OAAJL,QAAI,IAAJA,EAAAA,EAAQ,OACfZ,OAAY,OAAJY,QAAI,IAAJA,EAAAA,EAAQ,OAChBmG,SAAU,YACJ,OAAFnL,QAAE,IAAFA,EAAAA,EAAM,CAAC,GAAEV,SAAA,EAGfC,EAAAA,EAAAA,KAAC+M,EAAAA,EAAM,CACLO,IAAK9H,EACL/E,GAAI,CACFqF,MAAW,OAAJL,QAAI,IAAJA,EAAAA,EAAQ,OACfZ,OAAY,OAAJY,QAAI,IAAJA,EAAAA,EAAQ,OAChBpF,WAAY,eACbN,SAAA,SAKFsN,GACCrN,EAAAA,EAAAA,KAACgN,EAAO,CACNvM,GAAI,CACFqF,MAAW,OAAJL,QAAI,IAAJA,EAAAA,EAAQ,OACfZ,OAAY,OAAJY,QAAI,IAAJA,EAAAA,EAAQ,OAChBpF,WAAY,cACZuL,SAAU,WACV2B,IAAK,IACLC,KAAM,OAGR,OAGV,C,eCjCO,SAASjI,EAAU3J,GAAyD,IAAxD,QAAE8J,EAAO,KAAEF,EAAI,GAAE/E,EAAE,KAAEgF,EAAO,QAAyB7J,EAC9E,MAAMuO,GAAmBsD,EAAAA,EAAAA,GAAkB/H,GAE3C,OAAO1F,EAAAA,EAAAA,KAAC0N,EAAY,CAACjI,KAAMA,EAAMD,KAAMA,EAAM/E,GAAIA,EAAI4M,MAAOlD,GAC9D,C,gICdO,SAASwD,EAAMhO,GAAqB,IAADmN,EACxC,OACE9M,EAAAA,EAAAA,KAAC+M,EAAAA,EAAM,IAAKpN,EAAOc,GAAI,CAAEJ,WAAY,iBAA2B,QAAZyM,EAAInN,EAAMc,UAAE,IAAAqM,EAAAA,EAAI,CAAC,GAAK/M,SAAC,QAI/E,C,0BCHA,MAAM6N,EAA2C,CAC/C,CAACC,EAAAA,GAAUC,IAAK,uCAChB,CAACD,EAAAA,GAAUE,IAAK,6BAChB,CAACF,EAAAA,GAAUG,SAAU,8BACrB,CAACH,EAAAA,GAAUI,UAAW,+BACtB,CAACJ,EAAAA,GAAUK,UAAW,+BACtB,CAACL,EAAAA,GAAUM,MAAO,2BAClB,CAACN,EAAAA,GAAUO,MAAO,2BAClB,CAACP,EAAAA,GAAUQ,OAAQ,6BAOd,SAASC,EAAc1S,GAA0C,IAAzC,KAAE6J,EAAO,QAA6B7J,EACnE,MAAM2S,GAAYC,EAAAA,EAAAA,MAElB,OAAOD,GAAYvO,EAAAA,EAAAA,KAAC2N,EAAK,CAAClN,GAAI,CAAEqF,MAAOL,EAAMZ,OAAQY,GAAQ6H,IAAKM,EAAcW,KAAiB,IACnG,C,wLChBA,MAAMnN,GAAYC,EAAAA,EAAAA,IAAYf,IACrB,CACLmO,OAAQ,CACNlN,QAAS,OACTyD,WAAY,SACZqB,eAAgB,SAChBP,MAAO,QACPjB,OAAQ,OACRjE,aAAc,MACdP,WAAYC,EAAM2E,QAAQ5E,WAAW2L,OACrCrL,OAAQ,eAWP,SAAS+N,EAAc9S,GAA6C,IAA5C,WAAEiB,EAAU,KAAE8R,GAA2B/S,EACtE,MAAM0E,GAAQC,EAAAA,EAAAA,MACRqB,EAAUR,IACVwN,GAAsBC,EAAAA,EAAAA,OAErBC,EAAYC,IAAiBhG,EAAAA,EAAAA,WAAS,IACtCxF,EAASyL,IAAcjG,EAAAA,EAAAA,WAAS,GAEjCkG,GAAerH,EAAAA,EAAAA,cAAYsH,UAC/B,GAAI3L,EAAS,OACbyL,GAAW,GACX,MAAM9S,QAAiBiT,EAAAA,EAAAA,IAAiB,CAAEtS,gBAEtCuS,EAAAA,EAAAA,GAAWlT,GACb6S,GAAc,IAEdH,EAAoB,CAAC,CAAE/R,aAAYX,eACnCmT,EAAAA,EAAAA,IAAe,CAAC,CAAExS,aAAYX,cAC9ByS,KAEFK,GAAW,EAAM,GAChB,CAACnS,EAAY+R,EAAqBrL,IAErC,OACE3D,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CACFzB,GAAI,CACFmL,SAAU,WACVhL,aAAc,OACdP,WAAYC,EAAM2E,QAAQ5E,WAAW6E,OACrCxE,QAAS,QACTX,SAAA,EAEFC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAAC+F,MAAM,SAAQxG,UACxBC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,aAGDyT,GACC9O,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CACTC,GAAI,CAAEQ,SAAU,OAAQgF,WAAY,IAAKjF,MAAO,cAAekF,OAAQ,SAAUoJ,UAAW,UAAWvP,UAEvGC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,aAEA,MAEJ2E,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAAC0K,GAAG,OAAOnM,GAAI,CAAEc,QAAS,OAAQ8E,eAAgB,SAAUtB,IAAK,UAAWhF,UAC9EH,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAACC,UAAWP,EAAQ6M,OAAQrO,QAAS6O,EAAalP,SAAA,EACpDC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACQ,MAAM,eAAeiF,WAAY,IAAIlG,UAC/CC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,aAEDkI,GAAUvD,EAAAA,EAAAA,KAACuP,EAAAA,EAAgB,CAACvO,MAAM,UAAUyE,KAAM,GAAIhF,GAAI,CAAEyF,OAAQ,eAAoB,YAKnG,C,2HCtEO,SAASsJ,IACd,OACE5P,EAAAA,EAAAA,MAAA,OAAKkG,MAAM,KAAKjB,OAAO,KAAK/E,QAAQ,YAAY2P,KAAK,OAAOC,MAAM,6BAA4B3P,SAAA,EAC5FH,EAAAA,EAAAA,MAAA,KAAG+P,SAAS,0BAAyB5P,SAAA,EACnCC,EAAAA,EAAAA,KAAA,QACEE,EAAE,kNACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,urBACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,4eACFuP,KAAK,gBAGTzP,EAAAA,EAAAA,KAAA,QAAAD,UACEC,EAAAA,EAAAA,KAAA,YAAU3E,GAAG,oBAAmB0E,UAC9BC,EAAAA,EAAAA,KAAA,QAAM8F,MAAM,KAAKjB,OAAO,KAAK4K,KAAK,QAAQG,UAAU,gCAK9D,CASO,SAASC,EAAajU,GAA8E,IAADkU,EAAA,IAA5E,WAAEjT,EAAU,KAAEyL,EAAI,QAAEE,EAAO,qBAAEuH,GAA6CnU,EACtG,MAAM0E,GAAQC,EAAAA,EAAAA,OACPyP,EAAaC,IAAkBlH,EAAAA,EAAAA,WAAS,IAEzC,mBAAEnF,IAAuBE,EAAAA,EAAAA,OACxBoM,IAAkBC,EAAAA,EAAAA,OAElB,CAAE1I,IAAS2I,EAAAA,EAAAA,IAASvT,GAW3B,IAAIwT,EAAQ,GAGZ,OAFKlB,EAAAA,EAAAA,IAAiBtS,KAAawT,EAAK9E,EAAAA,GAAAC,EAAG,CAAAnQ,GAAA,aAGzCuE,EAAAA,EAAAA,MAAC0Q,EAAAA,GAAK,CACJhI,KAAMA,EACNE,QAASA,EACT8C,MAAKC,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACPoQ,YAAa,CACXhL,GAAI,CACF,mBAAoB,CAClBqF,MAAO,QACPU,SAAU,QACVnG,WAAYC,EAAM2E,QAAQ5E,WAAWqL,UAGzC3L,SAAA,EAEFH,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAAAnC,SAAA,EACFH,EAAAA,EAAAA,MAACiI,EAAAA,EAAI,CACHqE,WAAS,EACTzL,GAAI,CAAEJ,WAAYC,EAAM2E,QAAQ5E,WAAW0H,OAAQrH,QAAS,OAAQE,aAAc,QAClF2F,MAAM,aAAYxG,SAAA,EAElBC,EAAAA,EAAAA,KAAC+M,EAAAA,EAAM,CAACtM,GAAI,CAAEqF,MAAO,OAAQjB,OAAQ,OAAQ0L,YAAa,QAAUjD,IAAgB,QAAbwC,EAAO,OAALrI,QAAK,IAALA,OAAK,EAALA,EAAOjC,YAAI,IAAAsK,EAAAA,EAAI,GAAG/P,SAAC,UAI5FH,EAAAA,EAAAA,MAACiI,EAAAA,EAAI,CAAC2I,UAAQ,EAACjK,MAAM,aAAYxG,SAAA,EAC/BH,EAAAA,EAAAA,MAACY,EAAAA,EAAU,CAACS,SAAS,OAAOgF,WAAW,MAAMwK,UAAU,OAAOzP,MAAM,UAASjB,SAAA,CACrE,OAAL0H,QAAK,IAALA,OAAK,EAALA,EAAO/C,OAAO,IAAO,OAAL+C,QAAK,IAALA,OAAK,EAALA,EAAO7C,KAAK,QAE/B5E,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACS,SAAS,OAAO2L,GAAG,MAAK7M,SACjClD,KAGHmD,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAAC0K,GAAG,MAAMnM,GAAI,CAAEqF,MAAO,eAAgB/F,UACzCC,EAAAA,EAAAA,KAACmG,EAAAA,GAAkB,CAACjK,SAAe,OAALuL,QAAK,IAALA,OAAK,EAALA,EAAOvL,SAA4B0E,aAAa,YAGhFZ,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAAC0K,GAAG,OAAM7M,UACZC,EAAAA,EAAAA,KAAC0Q,EAAAA,GAAU,CAACC,KAAI,GAAAvL,OAAKwL,EAAAA,GAAQ,mBAAAxL,OAAkBvI,EAAU,cAAAuI,OAAkB,OAALqC,QAAK,IAALA,OAAK,EAALA,EAAOvL,UAAW6D,UACtFC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,sBAMRuE,EAAAA,EAAAA,MAACiI,EAAAA,EAAI,CACHqE,WAAS,EACTzL,GAAI,CACFJ,WAAY,0BACZyH,OAAQ,oBACRlH,aAAc,OACdF,QAAS,YACTwF,OAAQ,cAEVnB,IAAI,SACJwB,MAAM,aAAYxG,SAAA,EAElBC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACzB,GAAI,CAAEmL,SAAU,WAAY2B,IAAK,OAAQxN,UAC5CC,EAAAA,EAAAA,KAACwP,EAAW,OAEd5P,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAAAnC,SAAA,EACFC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACQ,MAAM,UAAUP,GAAI,CAAEoL,WAAY,QAAS9L,UACrDC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,cAMF2E,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACQ,MAAM,UAAU4L,GAAG,OAAOnM,GAAI,CAAEoL,WAAY,QAAS9L,UAC/DC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,oBAQNuE,EAAAA,EAAAA,MAACiI,EAAAA,EAAI,CAACqE,WAAS,EAACnH,IAAI,QAAQtE,GAAI,CAAEyF,OAAQ,cAAenG,SAAA,EACvDC,EAAAA,EAAAA,KAAC6Q,EAAAA,EAAQ,CACPC,QAASd,EACTzH,SAAUN,IAA8B,IAA3B8I,QAAQ,QAAED,IAAW7I,EAChCgI,EAAea,EAAQ,EAEzBrQ,GAAI,CACFC,QAAS,QAIbV,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACC,GAAI,CAAEE,OAAQ,UAAWM,SAAU,QAAUb,QAASA,IAAM6P,GAAgBD,GAAajQ,UACnGC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,oBAKN2E,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAAC0K,GAAG,OAAM7M,UACZC,EAAAA,EAAAA,KAACgR,EAAAA,EAAM,CAACC,QAAQ,YAAYxL,KAAK,QAAQyG,WAAS,EAACgF,WAAYb,IAAUL,EAAa5P,QA3GtE+Q,KACf1J,IAELyI,EAAc3E,EAAAA,GAAAC,EAAC,CAAAnQ,GAAA,YACfuI,EAAmB,CAAC/G,IAChBkT,GAAsBA,IAC1BvH,IAAS,EAqGwGzI,SAC1GsQ,IAASrQ,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,iBAKpB,CC7JO,SAASqR,EAAW9Q,GAAoE,IAAnE,WAAEiB,EAAU,SAAE8P,EAAQ,qBAAEoD,GAAwCnU,EAC1F,MAAOwV,EAAMC,IAAWtI,EAAAA,EAAAA,UAAS,GAEjC,OACEnJ,EAAAA,EAAAA,MAAAwL,EAAAA,SAAA,CAAArL,SAAA,CACY,IAATqR,GAAapR,EAAAA,EAAAA,KAAC0O,EAAc,CAAC7R,WAAYA,EAAY8R,KAAMA,IAAM0C,EAAQ,GAAIC,KAAM3E,IAAe,KACzF,IAATyE,GACCpR,EAAAA,EAAAA,KAAC6P,EAAa,CACZhT,WAAYA,EACZyL,KAAe,IAAT8I,EACN5I,QAASA,IAAM6I,EAAQ,GACvBtB,qBAAsBA,IAEtB,OAGV,C,qLC4EO,SAASwB,EAAoBtJ,GAAsE,IAArE,MAAEuJ,EAAK,SAAEC,EAAQ,UAAEC,EAAY,QAAmCzJ,EACrG,OACErI,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAAAnC,SAAA,CACD0R,IACCzR,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACC,GAAI,CAAEO,MAAO,WAAaC,SAAUyQ,EAAWjB,UAAU,OAAM1Q,SAAC,OAK9EC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACiQ,UAAU,OAAOxP,SAAUyQ,EAAU3R,SAC9CyR,MAIT,CASA,SAASG,EAAKC,GAAyD,IAADC,EAAAC,EAAA,IAAvD,OAAEC,EAAM,MAAExH,EAAK,MAAEyH,EAAQ,GAAE,WAAEC,GAAwBL,EAClE,OACEhS,EAAAA,EAAAA,MAAAwL,EAAAA,SAAA,CAAArL,SAAA,EACEC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CACTC,GAAI,CACFoF,SAAU,SACVG,aAAc,WACdD,WAAY,UAEd/E,MAAM,cAAajB,SAElBgS,GAA+D,QAAzDF,EAAkD,QAAlDC,EAAGE,EAAMnI,QAAQqI,GAASA,EAAK3H,QAAUA,IAAO,UAAE,IAAAuH,OAAA,EAA/CA,EAAiDN,aAAK,IAAAK,EAAAA,EAAYtH,IAE7E0H,GACCjS,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CACTC,GAAI,CACFoF,SAAU,SACVG,aAAc,WACdD,WAAY,SACZoM,UAAW,OACXpS,SAEDkS,IAED,OAGV,CAEA,SAASnG,EAAesG,EAyBtB3Q,GACC,IAAD4Q,EAAAC,EAAAC,EAAAC,EAAA,IAzBA,MACEhB,EAAK,MACLjH,EAAK,OACLwH,EAAM,SACNxJ,EAAQ,SACRkJ,EAAQ,MACRO,EAAQ,GAAE,SACVxL,EAAQ,WACRiM,EAAU,SACVvB,EAAQ,WACR9E,EAAU,aACVxL,EAAe,MAAK,UACpBmL,GAAY,EAAK,aACjB2G,EAAY,aACZC,EAAY,WACZV,EAAU,UACVW,EAAS,QACTC,EAAO,OACP/K,EAAM,WACNzH,EAAU,UACVqR,EAAS,aACToB,KACGnT,GACkByS,EAGvB,MAAMxQ,EAtKUhG,KASK,IATJ,aACjBkX,EAAY,UACZ/G,EAAS,WACT1L,EAAU,WACVoS,EAAU,UACVG,EAAS,aACThS,EAAY,MACZ4Q,EAAK,OACL1J,GACelM,EACf,OAAOyF,EAAAA,EAAAA,IAAYf,IACV,CACLyS,SAAU,CACRxR,QAASiQ,GAASzF,EAAY,QAAU,OACxC/G,WAAY,SACZ8C,OAAQiE,EACE,OAANjE,QAAM,IAANA,EAAAA,EAAUxH,EAAM2E,QAAQ6C,OAAOkL,QACpB,IAAXlL,EACAxH,EAAM2E,QAAQ6C,OAAOkL,OACV,YAAXlL,EACAxH,EAAM2E,QAAQ6C,OAAOmL,QACrB,OACJ5S,WAAYA,EACO,WAAfA,EACEC,EAAM2E,QAAQ5E,WAAW0H,OACzB1H,EACFC,EAAM2E,QAAQ5E,WAAW6E,OAC7BtE,eACAF,QAAqB,OAAZoS,QAAY,IAAZA,EAAAA,EAAiB/G,EAAS,WAAgB,WACnDhH,IAAK,QACLF,OAAQkH,GAAa6G,EAAY,OAASH,EAAa,OAAS,UAC5DG,EAAY,CAAEM,UAAW,QAAW,CAAC,EACzChN,OAAQsL,EAAQ,aAAe,IAC/B,2BAA4B,CAC1B9Q,SAAqB,OAAZoS,QAAY,IAAZA,EAAAA,EAAgB/G,GAAS,UAAe,SAEnD,UAAW,CACT/K,MAAOV,EAAM2E,QAAQkO,KAAKC,SAE5B,UAAW,CACTC,YAAa,eAInB,EA0HcjS,CAAU,CACxB0R,eACA/G,YACA1L,aACAoS,aACA7R,eACAkH,SACA0J,QAASA,EACToB,aARcxR,IAUTkS,EAAUC,IAAexK,EAAAA,EAAAA,UAAS,MACnCyK,GAAWC,EAAAA,EAAAA,QAA2B,MACtCC,GAAcD,EAAAA,EAAAA,QAA2B,OACxCE,EAAWC,IAAgB7K,EAAAA,EAAAA,eAA6B/E,GAWzD6P,EAAQA,KAAO,IAADC,EACV,OAARN,QAAQ,IAARA,GAAiB,QAATM,EAARN,EAAUO,eAAO,IAAAD,GAAjBA,EAAmBD,OAAO,GAG5B5R,EAAAA,EAAAA,qBACER,GACA,MACEoS,WAEF,CAACA,KAOHxP,EAAAA,EAAAA,YAAU,KAAO,IAAD2P,EACd,MAAMlO,EAAmB,OAAX4N,QAAW,IAAXA,GAAoB,QAATM,EAAXN,EAAaK,eAAO,IAAAC,OAAT,EAAXA,EAAsBC,YACpCL,EAAkB,OAAL9N,QAAK,IAALA,EAAAA,OAAS9B,EAAU,GAC/B,IAOH,OACEpE,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAAAnC,SAAA,CACDyR,GAAQxR,EAAAA,EAAAA,KAACuR,EAAoB,CAACE,SAAUA,EAAUD,MAAOA,EAAOE,UAAWA,IAAgB,MAC5F1R,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CACFT,IAAKiS,EACLvR,UAAWP,EAAQmR,SACnBtS,GAAI,IACEgS,EAAa,CAAE5N,OAAQ,QAAW,CAAC,KACnCkN,EAAS,CAAEpR,OAAQ,WAAc,CAAC,KAClC6F,EAAW,CAAEA,SAAS,GAADpB,OAAKoB,EAAQ,OAAS,CAAC,GAElDpG,QA9CuB2G,IAInB,IAADmN,EAHHhD,IACAa,EACFwB,EAAYxM,EAAMoN,eAEV,OAARX,QAAQ,IAARA,GAAiB,QAATU,EAARV,EAAUO,eAAO,IAAAG,GAAjBA,EAAmBL,QACrB,EAwCiC9T,UAE7BH,EAAAA,EAAAA,MAAAwL,EAAAA,SAAA,CAAArL,SAAA,CACGgM,IAAa/L,EAAAA,EAAAA,KAACuR,EAAoB,CAACE,SAAUA,EAAUD,MAAOA,EAAOE,UAAWA,KACjF9R,EAAAA,EAAAA,MAACiI,EAAAA,EAAI,CAACqE,WAAS,EAACzL,GAAI,CAAE2T,KAAM,GAAKC,QAAQ,gBAAetU,SAAA,CACpDgS,EAmCExH,GACFvK,EAAAA,EAAAA,KAAC2R,EAAK,CAACK,MAAOA,EAAOzH,MAAOA,EAAO0H,WAAYA,EAAYF,OAAQA,KAEnE/R,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CACTC,GAAI,CACFoF,SAAU,SACVG,aAAc,WACdD,WAAY,UAEd/E,MAAM,UAASjB,SAEdJ,EAAMwM,eA7CTnM,EAAAA,EAAAA,KAACsU,EAAAA,EAAS,CACR7T,GAAI,CACF,UAAW,CACToL,WAAY,UACZ5K,SAAwB,QAAhBoR,EAAE1S,EAAMsB,gBAAQ,IAAAoR,EAAAA,EAAI,QAE9B,aAAc,CACZxG,WAAY,UACZ5K,SAAwB,QAAhBqR,EAAE3S,EAAMsB,gBAAQ,IAAAqR,EAAAA,EAAI,QAE9B,uBAAwB,CACtBrR,SAA+B,QAAvBsR,EAAE5S,EAAMsM,uBAAe,IAAAsG,EAAAA,EAAI,QAErC,0BAA2B,CACzBtR,SAA+B,QAAvBuR,EAAE7S,EAAMsM,uBAAe,IAAAuG,EAAAA,EAAI,SAGvCgB,SAAUA,KACN7T,EACJsR,QAAQ,WACR1I,SAAUgM,IAAA,IAAGxD,QAAQ,MAAExG,IAASgK,EAAA,OAAKhM,GAAYA,EAASgC,EAAM,EAChEA,MAAOA,EACPqI,UAAWA,EACXxG,WAAY,CACVoI,kBAAkB,KACdpI,GAAc,CAAC,GAErBF,WAAS,EACTgF,SAAUA,EACVe,WAAYA,EACZY,QAASA,EACT4B,aAAa,MACbC,YAAY,IAgBf3C,IAAU/R,EAAAA,EAAAA,KAAC2U,EAAAA,EAAqB,CAAClU,GAAI,CAAEE,OAAQ,qBAKrDiU,QAAQtB,KACP1T,EAAAA,EAAAA,MAACiV,EAAAA,EAAI,CACH1S,UAAU,gBACVmR,SAAUA,EACVhL,KAAMsM,QAAQtB,GACd9K,QAzFYsM,KAClBvB,EAAY,KAAK,EAyFXwB,aAAc,CACZvE,SAAU,SACVwE,WAAY,QAEdC,WAAY,CACVC,MAAO,CACLpP,MAAO6N,EACP/D,UAAW,qBAEb7P,SAAA,CAEDiS,EAAMvX,KAAI,CAACyX,EAAMtH,KAChB5K,EAAAA,EAAAA,KAACmV,EAAAA,EAAQ,CAEPhT,UAAS,GAAAiD,OAAOuN,GAAgBA,EAAaT,GAAQ,WAAa,IAClE9R,QAASA,KACDuS,GAAgBA,EAAaT,IAjGrBkD,KAAgC,IAA/B,MAAE7K,GAAuB6K,EAChD7M,GAAUA,EAASgC,GACvBgJ,EAAY,KAAK,EAgGL8B,CAAoBnD,EAAK,EACzBnS,SAEDmS,EAAKV,OAPDU,EAAK3H,MAAQK,KAUJ,IAAjBoH,EAAM7G,OAAeuH,IAAgB1S,EAAAA,EAAAA,KAACyM,EAAAA,EAAM,IAAM,UAK7D,CAEA,SAAejL,EAAAA,EAAAA,YAAWsK,E,sHC7U1B,MAAM1K,GAAYC,EAAAA,EAAAA,IAAW,KACpB,CACLiU,iBAAkB,CAChB1J,SAAU,WACV2B,IAAK,EACLC,KAAM,EACN1H,MAAO,OACPjB,OAAQ,OACRqO,UAAW,QACXqC,WAAY,OACZ1P,SAAU,UAEZ2P,KAAM,CACJ5J,SAAU,WACV2B,IAAK,OACLC,KAAM,EACN1H,MAAO,OACPjB,OAAQ,OACR5E,QAAS,QAWA,SAASwV,EAAW7Z,GAA8D,IAA7D,QAAE2H,EAAO,KAAEiS,GAAO,EAAI,eAAEE,GAAkC9Z,EAC5F,MAAMgG,EAAUR,IACVd,GAAQC,EAAAA,EAAAA,KAEd,OAAOgD,GACL3D,EAAAA,EAAAA,MAACyF,EAAAA,GAAI,CAAClD,UAAWP,EAAQ0T,iBAAkBhQ,WAAS,EAACe,eAAe,SAASsP,aAAa,SAAQ5V,SAAA,EAChGC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CACFC,UAAWqT,EAAO5T,EAAQ4T,KAAO,GACjC/U,GAAI,CAAEJ,WAAYqV,GAAkBpV,EAAM2E,QAAQ1B,QAAQlD,eAE5DL,EAAAA,EAAAA,KAAA,OAAKkV,MAAO,CAAEU,OAAQ,GAAK9P,MAAM,OAAOjB,OAAO,OAAOyI,IAAKuI,EAAcC,IAAI,QAE7E,IACN,C,yGC1CA,MAAM1U,GAAYC,EAAAA,EAAAA,IAAYf,IACrB,CACLgV,iBAAkB,CAChB1J,SAAU,WACV2B,IAAK,EACLC,KAAM,EACN1H,MAAO,OACPjB,OAAQ,OACRqO,UAAW,QACXrN,SAAU,UAEZ2P,KAAM,CACJ5J,SAAU,WACV2B,IAAK,EACLC,KAAM,EACN1H,MAAO,OACPjB,OAAQ,OACRxE,WAAYC,EAAM2E,QAAQ1B,QAAQlD,WAClCJ,QAAS,QAUf,EAAerE,IAAmD,IAAlD,QAAE2H,EAAO,KAAEiS,GAAO,GAA0B5Z,EAC1D,MAAMgG,EAAUR,IAEhB,OAAOmC,GACL3D,EAAAA,EAAAA,MAACyF,EAAAA,GAAI,CAAClD,UAAWP,EAAQ0T,iBAAkBhQ,WAAS,EAACe,eAAe,SAASsP,aAAa,SAAQ5V,SAAA,EAChGC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACC,UAAWqT,EAAO5T,EAAQ4T,KAAO,MACtCxV,EAAAA,EAAAA,KAAA,OAAKkV,MAAO,CAAEU,OAAQ,GAAK9P,MAAM,OAAOjB,OAAO,OAAOyI,IAAKuI,EAAcC,IAAI,QAE7E,IACL,C,2GCtCD,MAAM1U,GAAYC,EAAAA,EAAAA,IAAYf,IACrB,CACLgV,iBAAkB,CAChB1J,SAAU,WACV2B,IAAK,EACLC,KAAM,EACN1H,MAAO,OACPjB,OAAQ,OACRgB,SAAU,UAEZ2P,KAAM,CACJ5J,SAAU,WACV4B,KAAM,EACN1H,MAAO,OACPjB,OAAQ,OACRxE,WAAYC,EAAM2E,QAAQ1B,QAAQlD,WAClCJ,QAAS,QAKf,EAAerE,IAQR,IARS,QACd2H,EAAO,aACPwS,EAAe,GAAE,iBACjBC,GAKDpa,EACC,MAAMgG,EAAUR,IAEhB,OAAOmC,GACL3D,EAAAA,EAAAA,MAACyF,EAAAA,GAAI,CAAClD,UAAWP,EAAQ0T,iBAAkBhQ,WAAS,EAACe,eAAe,SAASsP,aAAa,SAAQ5V,SAAA,EAChGC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CACFC,UAAWP,EAAQ4T,KACnB/U,GAAI,IACEuV,EAAmB,CAAEpV,aAAcoV,GAAqB,CAAC,MAGjEhW,EAAAA,EAAAA,KAACuP,EAAAA,EAAgB,CAACvO,MAAM,UAAUyE,KAAMsQ,OAExC,IACL,C,yGC0LD,MACA,EAAe,IAA0B,gE,0BCrOlC,SAASE,IACd,OACEjW,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACzB,GAAI,CAAEqF,MAAO,OAAQI,OAAQ,cAAenG,UAC/CC,EAAAA,EAAAA,KAACqF,EAAAA,GAAI,CAACC,WAAS,EAACN,WAAW,SAASqB,eAAe,SAAS5F,GAAI,CAAEqF,MAAO,OAAQjB,OAAQ,QAAS9E,UAChGC,EAAAA,EAAAA,KAACqF,EAAAA,GAAI,CAACM,MAAI,EAAA5F,UACRH,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAACzB,GAAI,CAAEc,QAAS,OAAQyD,WAAY,SAAUkR,cAAe,SAAU7P,eAAgB,UAAWtG,SAAA,EACpGC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACQ,MAAM,eAAeuF,MAAM,SAAS9F,GAAI,CAAEQ,SAAU,OAAQiF,OAAQ,cAAenG,UAC7FC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,cAEF2E,EAAAA,EAAAA,KAAA,OAAKsN,IAAK6I,EAAgBL,IAAI,MAC9B9V,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CACFzB,GAAI,CACFqF,MAAO,QACPzF,WAAY,wBACZO,aAAc,MACdF,QAAS,QACTX,UAEFH,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAACzB,GAAI,CAAEoF,SAAU,SAAUtE,QAAS,OAAQ2U,cAAe,SAAUnR,IAAK,UAAWhF,SAAA,EACvFC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACQ,MAAM,eAAeC,SAAS,OAAOR,GAAI,CAAE2V,UAAW,cAAerW,SAAC,sEAGlFH,EAAAA,EAAAA,MAACY,EAAAA,EAAU,CAACQ,MAAM,eAAeC,SAAS,OAAOR,GAAI,CAAE2V,UAAW,cAAerW,SAAA,CAAC,8DAEhFC,EAAAA,EAAAA,KAAC0Q,EAAAA,EAAU,CAACjQ,GAAI,CAAEQ,SAAU,QAAU0P,KAAK,8BAA6B5Q,SAAC,4BAI3EC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACQ,MAAM,eAAeC,SAAS,OAAOR,GAAI,CAAE2V,UAAW,cAAerW,SAAC,yFAUlG,C,gECbO,SAASQ,IACd,OAAO8V,EAAAA,EAAAA,IACT,C,2GCnBO,SAASC,EAAW1a,GAA0E,IAAzE,QAAE2a,EAAO,eAAEC,EAAc,OAAEC,EAAM,OAAEC,EAAM,QAAEhR,GAA2B9J,EAChG,MAAM+a,GAAUC,EAAAA,EAAAA,MAEVC,GAAYC,EAAAA,EAAAA,MAEZnP,EAAcA,KAClB,MAAMoP,EAAKL,EAAM,mCAAAtR,OACsBsR,GACnChR,EAAO,qCAAAN,OAC8BM,GACrC,iBAEJiR,EAAQvM,KAAK2M,GACTP,GAAgBA,IACpBK,EAAUJ,EAAO,EAGbO,EAAa,OAAPT,QAAO,IAAPA,GAAAA,EAAShS,SAAS,sCAC5B3E,EAAAA,EAAAA,MAAAwL,EAAAA,SAAA,CAAArL,SAAA,CACGwW,EAAQU,QAAQ,oCAAqC,IAAI,eAAe,KACzEjX,EAAAA,EAAAA,KAAC0Q,EAAAA,GAAU,CAACtQ,QAASuH,EAAY5H,SAAC,wCAAgD,gEAIpFH,EAAAA,EAAAA,MAAAwL,EAAAA,SAAA,CAAArL,SAAA,CACGwW,EAAQ,iBAAevW,EAAAA,EAAAA,KAAC0Q,EAAAA,GAAU,CAACtQ,QAASuH,EAAY5H,SAAC,wCAAgD,+DAK9G,OAAOC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACiQ,UAAU,OAAM1Q,SAAEiX,GACvC,C,kKCxBA,SAASE,EAAY7T,EAAoC8T,GACvD,SAAMA,KAAU1S,EAAAA,EAAAA,GAAiB0S,IAAW9T,EAAU+T,UAAUhT,aAAe+S,OAE3EA,IACA9T,GACDA,EAAUqB,OAAOC,oBAAoBJ,SAAS4S,EAAOxS,sBACrDtB,EAAUuB,KAAKD,oBAAoBJ,SAAS4S,EAAOxS,qBAIxD,CAEA,SAAS0S,EAAazb,GAAmE,IAADqM,EAAA,IAAjE,UAAE5E,EAAS,OAAEqB,EAAM,OAAEyS,EAAM,MAAEnW,EAAK,MAAEsW,GAA2B1b,EAKpF,OAJauH,EAAAA,EAAAA,UAAQ,IACZ+T,EAAY7T,EAAW8T,IAC7B,CAACA,EAAQ9T,IAEE,MACZzD,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAACzB,GAAI,CAAEc,QAAS,OAAQwD,IAAKuS,EAAQ,QAAU,QAAStS,WAAY,UAAWjF,SAAA,EACjFC,EAAAA,EAAAA,KAACuF,EAAAA,GAAU,CACTC,MAAM+R,EAAAA,EAAAA,GAAgBlU,EAAU+T,UAAUhT,YAC1CqB,KAAK,OACLC,QAASrC,EAAU+T,UAAUhT,cAE/BpE,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACQ,MAAiB,YAAVA,EAAsB,eAAiB,iBAAkByP,UAAU,OAAM1Q,SAC9D,QAD8DkI,EACnF,OAANvD,QAAM,IAANA,EAAAA,EAAmB,OAATrB,QAAS,IAATA,OAAS,EAATA,EAAWqB,cAAM,IAAAuD,EAAAA,EAAI,SAIxC,CAgBO,SAASuP,EAAW5F,GAYL,IAXpBrH,MAAO7E,EAAO,cACd+R,EAAa,OACb3P,EAAM,OACN+B,EACAsN,OAAQO,EAAS,OACjBC,EAAM,WACNlF,EAAU,eACVmF,EAAc,UACdC,EAAS,aACTC,EAAY,aACZC,GACiBnG,EACjB,MAAOrH,EAAOyN,IAAYjP,EAAAA,EAAAA,UAAwB,OAC3CoO,EAAQc,IAAalP,EAAAA,EAAAA,eAA6B/E,IAEjDZ,OAAQ8U,IAAoBC,EAAAA,EAAAA,OAEpC9T,EAAAA,EAAAA,YAAU,KACJqB,GACFsS,EAAStS,EACX,GACC,CAACA,IAEJ,MAAMsM,GAAQ7O,EAAAA,EAAAA,UAAQ,KACpB,GAAK+U,EAEL,OAAOA,EAAgBzd,KAAK4I,IACnB,CACLkH,MAAOlH,EAAU+T,UAAUhT,WAC3BoN,OAAOxR,EAAAA,EAAAA,KAACqX,EAAa,CAAChU,UAAWA,IACjC+U,WAAYC,KAAKC,UAAUjV,MAE7B,GACD,CAAC6U,IAiBJ,OACElY,EAAAA,EAAAA,KAACuY,EAAAA,EAAM,CACLpM,YAAY,iBACZ6F,MAAOA,EACPwG,aAAa,QACbC,cAAc,QACdlQ,SArBuBgC,IACzByN,EAASzN,GACLkN,GACFA,EAAclN,EAChB,EAkBEA,MAAOA,EACPzC,OAAQA,EACR4Q,SAAUT,EACVd,OAAQO,EACRiB,WAnBsBzG,IACxB,IAAKA,EAAKkG,WAAY,OAAO,EAE7B,MAAM/U,EAAYgV,KAAKO,MAAM1G,EAAKkG,YAElC,OAAOlB,EAAY7T,EAAW8T,MAActN,GAAUA,EAAOxG,EAAW,EAetEsU,OAAQA,EACRlF,WAAYA,EACZmF,eAAgBA,EAChBC,UAAWA,EACXC,aAAcA,EACdR,MAAQpF,IACN,IAAKA,EAAM,OAAO6F,EAClB,IAAK7F,EAAKkG,WAAY,OAAO,KAE7B,MAAMA,EAAaC,KAAKO,MAAM1G,EAAKkG,YAE7B/U,EAAY,IACb+U,EACHhB,UAAWta,EAAAA,EAAU+b,SAAST,EAAWhB,UAAU0B,gBAGrD,OAAO9Y,EAAAA,EAAAA,KAACqX,EAAa,CAAChU,UAAWA,EAAWrC,MAAM,UAAUsW,OAAK,GAAG,GAI5E,C,yLC5IA,MAAMlW,EAAYA,CAAC2K,EAAoB0G,KAC9BpR,EAAAA,EAAAA,IAAYf,IACV,CACLyS,SAAU,CACR1S,WAAYC,EAAM2E,QAAQ5E,WAAW6E,OACrCtE,aAAc,MACdF,QAASqL,EAAS,eAAA3G,OAAoBqN,EAAa,MAAQ,OAAM,SACjE,UAAW,CACTzR,MAAOV,EAAM2E,QAAQkO,KAAKC,cA8C7B,SAASzB,EAAK1J,GAA2F,IAAD4J,EAAAC,EAAA,IAAzF,MAAEvH,EAAK,MAAEyH,EAAQ,GAAE,WAAEC,GAAkEhK,EAC3G,OACErI,EAAAA,EAAAA,MAAAwL,EAAAA,SAAA,CAAArL,SAAA,EACEC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CACTC,GAAI,CACFoF,SAAU,SACVG,aAAc,WACdD,WAAY,UAEd/E,MAAM,OACNyP,UAAU,MAAK1Q,SAEwC,QAFxC8R,EAEiC,QAFjCC,EAEdE,EAAMnI,QAAQqI,GAASA,EAAK3H,QAAUA,IAAO,UAAE,IAAAuH,OAAA,EAA/CA,EAAiDN,aAAK,IAAAK,EAAAA,EAAItH,IAE5D0H,GACCjS,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CACTC,GAAI,CACFoF,SAAU,SACVG,aAAc,WACdD,WAAY,SACZoM,UAAW,OACXpS,SAEDkS,IAED,OAGV,CAEO,SAASsG,EAAM3G,GAaL,IAbM,MACrBrH,EAAK,SACLhC,EAAQ,MACRyJ,EAAQ,GAAE,SACVxL,EAAQ,WACRiM,EAAU,SACVvB,EAAQ,UACRnF,GAAY,EAAI,MAChBjG,EAAK,aACL4M,EAAY,aACZC,EAAY,WACZV,KACGtS,GACSiS,EACZ,MAAMhQ,EAAUR,EAAU2K,EAAW0G,EAArBrR,IACTkS,EAAUC,IAAexK,EAAAA,EAAAA,UAAS,MACnC2K,GAAcD,EAAAA,EAAAA,QAA2B,OACxCE,EAAWC,IAAgB7K,EAAAA,EAAAA,eAA6B/E,GACzD1D,GAAQC,EAAAA,EAAAA,MAWd8D,EAAAA,EAAAA,YAAU,KAAO,IAAD2P,EACd,MAAMlO,EAAmB,OAAX4N,QAAW,IAAXA,GAAoB,QAATM,EAAXN,EAAaK,eAAO,IAAAC,OAAT,EAAXA,EAAsBC,YACpCL,EAAkB,OAAL9N,QAAK,IAALA,EAAAA,OAAS9B,EAAU,GAC/B,IAEH,MAKM2E,GAASC,EAAAA,EAAAA,IAAYtI,GAE3B,OACEV,EAAAA,EAAAA,MAAAwL,EAAAA,SAAA,CAAArL,SAAA,EACEC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CACFT,IAAKiS,EACLjT,GAAI,IACEqF,EAAQ,CAAEA,MAAM,GAADV,OAAKU,EAAK,OAAS,CAAC,KACnC2M,EAAa,CAAE5N,OAAQ,QAAW,CAAC,GAEzCzE,QA7BuB2G,IACvBmK,GACJqC,EAAYxM,EAAMoN,cAAc,EA2BCpU,UAE7BC,EAAAA,EAAAA,KAACqF,EAAAA,GAAI,CACHlD,UAAWP,EAAQmR,SACnBtS,GAAI,IACEgS,EAAa,CAAE5N,OAAQ,QAAW,CAAC,KACnC2B,EAAW,CAAEA,SAAS,GAADpB,OAAKoB,EAAQ,OAAS,CAAC,EAChD7F,OAAQ,UACRoY,SAAU,SAEZzT,WAAS,EACTN,WAAW,SAAQjF,UAEnBC,EAAAA,EAAAA,KAAAoL,EAAAA,SAAA,CAAArL,UACEH,EAAAA,EAAAA,MAACyF,EAAAA,GAAI,CAACC,WAAS,EAACN,WAAW,SAAQjF,SAAA,EACjCC,EAAAA,EAAAA,KAACqF,EAAAA,GAAI,CAACM,MAAI,EAACC,IAAE,EAACnF,GAAI,CAAE8P,YAAa,QAASxQ,SACvCwK,GACCvK,EAAAA,EAAAA,KAAC2R,EAAK,CAACK,MAAOA,EAAOzH,MAAOA,EAAO0H,WAAYA,KAE/CjS,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CACTC,GAAI,CACFoF,SAAU,SACVG,aAAc,WACdD,WAAY,UAEd/E,MAAO2H,EAAS,OAAS,UAAU5I,SAElCJ,EAAMwM,iBAKbnM,EAAAA,EAAAA,KAAC2U,EAAAA,EAAqB,CAAClU,GAAI,CAAEqF,MAAO,OAAQjB,OAAQ,OAAQlE,OAAQ,UAAWK,MAAO,sBAM7F4T,QAAQtB,KACP1T,EAAAA,EAAAA,MAACiV,EAAAA,EAAI,CACH1S,UAAU,gBACVmR,SAAUA,EACVhL,KAAMsM,QAAQtB,GACd9K,QAnEYsM,KAClBvB,EAAY,KAAK,EAmEXwB,aAAc,CACZvE,SAAU,SACVwE,WAAY,QAEdC,WAAY,CACVC,MAAO,CACLpP,MAAO6N,EACPoF,SAAU,QACVnJ,UAAW,mBACXoJ,UAAW,UAEbjZ,SAAA,CAEDiS,EAAMvX,KAAI,CAACyX,EAAMtH,KAChB5K,EAAAA,EAAAA,KAACmV,EAAAA,EAAQ,CAEPhT,UAAS,GAAAiD,OAAOuN,GAAgBA,EAAaT,GAAQ,WAAa,IAClE9R,QAASA,KACDuS,GAAgBA,EAAaT,IA7ErBE,KAAgC,IAA/B,MAAE7H,GAAuB6H,EAChD7J,GAAUA,EAASgC,GACvBgJ,EAAY,KAAK,EA4EL8B,CAAoBnD,EAAK,EACzBnS,SAEDmS,EAAKV,OAPDU,EAAK3H,MAAQK,KAUJ,IAAjBoH,EAAM7G,OAAeuH,IAAgB1S,EAAAA,EAAAA,KAACyM,EAAAA,EAAM,IAAM,UAK7D,C,oFCpNe,SAASwM,EAAcrd,GAAmD,IAAlD,KAAEwV,GAA6CxV,EACpF,MAAM,KAAE0M,IAAS4Q,EAAAA,EAAAA,MAEjB,OAAOlZ,EAAAA,EAAAA,KAAC0Q,EAAAA,GAAU,CAACtQ,QAASA,IAAMkI,EAAS,OAAJ8I,QAAI,IAAJA,OAAI,EAAJA,EAAMhN,YAAYrE,SAAC,gBAC5D,C,sHCEe,SAASoZ,EAAgBxZ,GACtC,MAAO,CAAEyZ,IAAWC,EAAAA,EAAAA,MACdC,GAAcC,EAAAA,EAAAA,MAQpB,OACEvZ,EAAAA,EAAAA,KAACgR,EAAAA,EAAM,IACIrR,EAAO4D,aAASS,EACzB5D,QATmB2G,IAChBuS,EAEM3Z,EAAMS,SAAST,EAAMS,QAAQ2G,GADtCqS,GAAQ,EACoC,EAO5CnI,QAAUqI,EAA4B3Z,EAAMsR,QAApB,YACxBC,WAAWoI,KAAwB3Z,EAAMuR,SACzCsI,UACE7Z,EAAM6Z,UAAY7Z,EAAM6Z,UAAY7Z,EAAM4D,SAAUvD,EAAAA,EAAAA,KAACuP,EAAAA,EAAgB,CAACvO,MAAM,UAAUyE,KAAM,KAAS,KACtG1F,SAEAuZ,EAAc3Z,EAAMI,SAAQwL,EAAAA,GAAAC,EAAG,CAAAnQ,GAAA,YAGtC,C,mhBC5BA,MAAM+F,EAAYxF,IAAyD,IAAxD,MAAEoF,EAAK,KAAEyE,GAAyC7J,EACnE,OAAOyF,EAAAA,EAAAA,IAAYf,IACjB,MAAMqI,GAASC,EAAAA,EAAAA,IAAYtI,GAG3B,MAAO,CACLmZ,IAAK,CACHlY,QAAS,eACTuE,MAAW,OAAJL,QAAI,IAAJA,EAAAA,EAAQ,MACfZ,OAAY,OAAJY,QAAI,IAAJA,EAAAA,EAAQ,MAChB5E,gBAAsB,OAALG,QAAK,IAALA,EAAAA,EAAU2H,EAAS,2BAA6B,wBACjE/H,aAAc,MACd8Y,kBAAmB,QACnBC,wBAAyB,YAE3B,2BAA4B,CAC1B,KAAM,CACJ/J,UAAU,iBAADxK,OAdS,EAcyB,QAE7C,MAAO,CACLwK,UAAW,oBAGf,2BAA4B,CAC1B,KAAM,CACJA,UAAW,mBAEb,MAAO,CACLA,UAAU,iBAADxK,OAzBS,EAyByB,QAE7C,MAAO,CACLwK,UAAW,oBAGf,2BAA4B,CAC1B,KAAM,CACJA,UAAW,mBAEb,MAAO,CACLA,UAAU,iBAADxK,OApCS,EAoCyB,SAG/CwU,KAAM,CACJC,cAAc,iBACdtJ,YAAa,OAEfuJ,KAAM,CACJD,cAAc,iBACdtJ,YAAa,OAEfwJ,KAAM,CACJF,cAAc,kBAEjB,GACD,EASG,SAASvT,EAAU2B,GAA6C,IAA5C,QAAE1E,EAAO,KAAEkC,EAAI,MAAEzE,GAAwBiH,EAClE,MAAMrG,EAAUR,EAAU,CAAEJ,QAAOyE,QAAnBrE,GAEhB,OAAOmC,GACL3D,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CACFzB,GAAI,CACFc,QAAS,eACTsD,OAAQ,MACRgH,WAAY,OACZ9L,SAAA,EAEFC,EAAAA,EAAAA,KAAA,QAAMmC,UAAS,GAAAiD,OAAKxD,EAAQ6X,IAAG,KAAArU,OAAIxD,EAAQgY,SAC3C5Z,EAAAA,EAAAA,KAAA,QAAMmC,UAAS,GAAAiD,OAAKxD,EAAQ6X,IAAG,KAAArU,OAAIxD,EAAQkY,SAC3C9Z,EAAAA,EAAAA,KAAA,QAAMmC,UAAS,GAAAiD,OAAKxD,EAAQ6X,IAAG,KAAArU,OAAIxD,EAAQmY,WAE3C,IACN,C,wDC3EA,MAAM3Y,GAAYC,EAAAA,EAAAA,IAAYf,IAAY,CACxC0Z,KAAM,CACJpO,SAAU,QACV2B,IAAK,EACLC,KAAM,EACNoI,OAAQ,KACR9P,MAAO,OACP,YAAa,CACXqM,UAAW7R,EAAM2Z,QAAQ,KAG7BC,SAAU,CACRtE,OAAQ,IACR5U,MAAO,YAII,SAASmZ,EAAiBve,GAMrC,IANsC,aACxCwe,EAAY,YACZC,GAIDze,EACC,MAAMgG,EAAUR,IACVkZ,GAAWC,EAAAA,EAAAA,OACVjS,EAAMkS,IAAWzR,EAAAA,EAAAA,WAAS,GAC3B0R,GAAiBC,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMpX,UAcvD,OAJAc,EAAAA,EAAAA,YAAU,KACRmW,EAAQC,EAAenS,KAAK,GAC3B,CAACmS,EAAenS,QAGjBtI,EAAAA,EAAAA,KAAC4a,EAAAA,EAAQ,CAACzY,UAAWP,EAAQsY,SAAU5R,KAAMA,EAAMlI,QAbrCA,KACVga,GACFE,GAASO,EAAAA,EAAAA,OAGPR,GAAaA,GAAa,EAQsCta,UAClEC,EAAAA,EAAAA,KAAA,OAAK8F,MAAM,OAAOjB,OAAO,OAAOyI,IAAKuI,EAAcC,IAAI,MAG7D,C,gDC7CO,SAASgF,EAAOlf,GAAkC,IAAjC,SAAEmE,EAAQ,GAAEU,GAAkB7E,EACpD,OACEoE,EAAAA,EAAAA,KAAC6H,EAAAA,EAAI,CAACqE,WAAS,EAACmI,QAAQ,SAAQtU,UAC9BC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CACFzB,GAAI,CACFqF,MAAO,OACPU,SAAU,SACVoF,SAAU,WACVlL,QAAS,YACND,GACHV,SAEDA,KAIT,C,sECpBe,SAASgb,EAAQnf,GAAmE,IAAlE,QAAE2H,EAAO,QAAEnD,GAAoDxE,EAC9F,MAAM0E,GAAQC,EAAAA,EAAAA,KAEd,OACEX,EAAAA,EAAAA,MAACoR,EAAAA,EAAM,CACLC,QAAQ,WACRxL,KAAK,QACLhF,GAAI,CACF,iDAAkD,CAChDO,MAAOV,EAAM2E,QAAQkO,KAAK6H,UAC1B3H,YAAa/S,EAAM2E,QAAQkO,KAAK6H,UAChCnW,OAAQ,OACRkU,SAAU,UAGd3Y,QAASA,EAAQL,SAAA,CAEhBwD,GAAUvD,EAAAA,EAAAA,KAACuP,EAAAA,EAAgB,CAAC9J,KAAM,GAAIzE,MAAM,UAAUP,GAAI,CAAEyF,OAAQ,eAAoB,MACzFlG,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACyF,WAAY,IAAIlG,UAC1BC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,eAIR,C,4JCdA,SAAS4f,IACP,OACEjb,EAAAA,EAAAA,KAAA,OAAK8F,MAAM,KAAKjB,OAAO,KAAK/E,QAAQ,YAAY2P,KAAK,OAAOC,MAAM,6BAA4B3P,UAC5FC,EAAAA,EAAAA,KAAA,QACEkb,SAAS,UACTC,SAAS,UACTjb,EAAE,gQACFuP,KAAK,aAIb,CAEA,SAAS2L,IACP,OACExb,EAAAA,EAAAA,MAAA,OAAKkG,MAAM,KAAKjB,OAAO,KAAK/E,QAAQ,YAAY2P,KAAK,OAAOC,MAAM,6BAA4B3P,SAAA,EAC5FC,EAAAA,EAAAA,KAAA,KAAG2P,SAAS,0BAAyB5P,UACnCC,EAAAA,EAAAA,KAAA,QAAME,EAAE,qFAAqFuP,KAAK,eAEpGzP,EAAAA,EAAAA,KAAA,QAAAD,UACEC,EAAAA,EAAAA,KAAA,YAAU3E,GAAG,oBAAmB0E,UAC9BC,EAAAA,EAAAA,KAAA,QAAM8F,MAAM,KAAKjB,OAAO,KAAK4K,KAAK,gBAK5C,CAOA,SAAS4L,EAAazf,GAA2D,IAA1D,iBAAE0f,EAAgB,cAAE7D,GAAmC7b,EAC5E,MAAM0E,GAAQC,EAAAA,EAAAA,MAEPkH,EAAO8T,IAAYxS,EAAAA,EAAAA,UAA2B,OAC9CyS,EAAcC,IAAmB1S,EAAAA,EAAAA,WAAS,GAYjD,OACEnJ,EAAAA,EAAAA,MAAAwL,EAAAA,SAAA,CAAArL,SAAA,EACEH,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CACFzB,GAAI,CACFc,QAAS,OACTsD,OAAQ,OACRiB,MAAO,OACPzF,WAAYC,EAAM2E,QAAQ5E,WAAW0H,OACrCnH,aAAc,OACdoE,WAAY,SACZqB,eAAgB,gBAChB1F,OAAQ,UACRD,QAAS,UAEXN,QAlBoBsb,KACxBD,GAAgB,EAAK,EAiBU1b,SAAA,CAE1B0H,GACC7H,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAACzB,GAAI,CAAEc,QAAS,OAAQyD,WAAY,SAAUD,IAAK,SAAUhF,SAAA,EAC/DC,EAAAA,EAAAA,KAAC+M,EAAAA,EAAM,CAACtM,GAAI,CAAEqF,MAAO,OAAQjB,OAAQ,QAAUyI,IAAU,OAAL7F,QAAK,IAALA,OAAK,EAALA,EAAOjC,KAAKzF,SAAC,UAGjEC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACC,GAAI,CAAEQ,SAAU,OAAQgF,WAAY,KAAOjF,MAAM,eAAcjB,SACnE,OAAL0H,QAAK,IAALA,OAAK,EAALA,EAAO/C,aAIZ1E,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAAAnC,UACFC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACQ,MAAM,eAAcjB,UAC9BC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,gBAIN2E,EAAAA,EAAAA,KAACob,EAAS,QAGZpb,EAAAA,EAAAA,KAAC2b,EAAAA,EAAgB,CACfrT,KAAMkT,EACNhT,QAASA,IAAMiT,GAAgB,GAC/BlT,SAhDqBd,IACzBgQ,EAAchQ,GACd8T,EAAS9T,GACTgU,GAAgB,EAAM,EA8ClBhT,oBAAqB6S,MAI7B,CAOe,SAASM,EAAkB3T,GAA8C,IAA7C,KAAEK,EAAI,QAAEE,GAAkCP,EACnF,MAAM3H,GAAQC,EAAAA,EAAAA,MACPsb,IAAW/Z,EAAAA,EAAAA,MAEZc,GAAYC,EAAAA,EAAAA,OAEXwN,EAAOyL,IAAY/S,EAAAA,EAAAA,UAAiB,KACpCxF,EAASyL,IAAcjG,EAAAA,EAAAA,WAAkB,IAEzCgT,EAAQC,IAAajT,EAAAA,EAAAA,UAA2B,OAChDkT,EAAQC,IAAanT,EAAAA,EAAAA,UAA2B,MAYjD+L,GAAclN,EAAAA,EAAAA,cAAY,KAC9BY,IACAwT,EAAU,MACVE,EAAU,KAAK,GACd,CAAC1T,EAASwT,EAAWE,IAElBZ,GAAmBnY,EAAAA,EAAAA,UAAQ,IACxB,CAAO,OAAN4Y,QAAM,IAANA,OAAM,EAANA,EAAQlf,WAAkB,OAANof,QAAM,IAANA,OAAM,EAANA,EAAQpf,YAAYgN,QAAQsS,KAAUA,KACjE,CAACJ,EAAQE,IAENG,GAA8BC,EAAAA,EAAAA,MAkCpC,OACErc,EAAAA,EAAAA,KAACsQ,EAAAA,EAAK,CACJhI,KAAMA,EACNgD,MAAKC,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACPmN,QAASsM,EACTzU,WAAYC,EAAM2E,QAAQ5E,WAAW2L,OACrCP,YAAa,CACXhL,GAAI,CACF,qBAAsB,CACpBC,QAAS,IACToF,MAAO,QACPjF,gBAAiBP,EAAM2E,QAAQ5E,WAAWqL,QAE5C,2BAA4B,CAC1BhL,QAAS,OAGbX,UAEFH,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CACFzB,GAAI,CACFC,QAAS,YACTa,QAAS,OACTyD,WAAY,SACZkR,cAAe,SACfnR,IAAK,UACLhF,SAAA,EAEFC,EAAAA,EAAAA,KAACqb,EAAa,CAAC5D,cAlFOsE,IAC1BC,EAAUD,GACVD,EAAS,GAAG,EAgF0CR,iBAAkBA,KAEpEtb,EAAAA,EAAAA,KAACib,EAAO,KAERjb,EAAAA,EAAAA,KAACqb,EAAa,CAAC5D,cAjFOwE,IAC1BC,EAAUD,GACVH,EAAS,GAAG,EA+E0CR,iBAAkBA,KAEpEtb,EAAAA,EAAAA,KAACgR,EAAAA,EAAM,CACLC,QAAQ,YACRxL,KAAK,QACLyG,WAAS,EACT9L,QAtEa8O,UACnB,IAAK6M,IAAWE,GAAU1Y,IAAYX,EAAW,OAEjDoM,GAAW,GAEX,MAAMsN,QAAiB5d,EAAAA,EAAAA,IAAQqd,EAAOlf,WAAYof,EAAOpf,YAEzD,IAAKyf,EAGH,OAFAR,EAAQvQ,EAAAA,GAAAC,EAAC,CAAAnQ,GAAA,iBACT2T,GAAW,GAIb,MAAM0H,EAAS4F,EAASzf,WAAWuH,WAC7BmY,QAAoBC,EAAAA,EAAAA,GAAmB9F,EAAQ9T,EAAUwB,YAE/D,IAAKmY,GAAsC,IAAvBA,EAAYpR,OAG9B,OAFA2Q,EAAQvQ,EAAAA,GAAAC,EAAC,CAAAnQ,GAAA,iBACT2T,GAAW,GAIboN,EAA4B,CAAC1F,KAC7B+F,EAAAA,EAAAA,IAAyB/F,GAAQ,GAEjCmF,EAAQ,wBAAyB7Z,EAAAA,IAEjCgN,GAAW,GAEX8F,GAAa,EA0CP5D,WAAYb,EACZmJ,UAAWjW,GAAUvD,EAAAA,EAAAA,KAACuP,EAAAA,EAAgB,CAACvO,MAAM,UAAUyE,KAAM,KAAS,KAAK1F,SAE1EsQ,IAASrQ,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,iBAKpB,C,gDChNO,MAAMqhB,IAA2Blb,EAAAA,EAAAA,aAA2C,CAAC7B,EAAO8B,KACzF,MAAM,SAAE8G,KAAaoU,GAAUhd,EAE/B,OACEK,EAAAA,EAAAA,KAAC4c,EAAAA,GAAa,IACRD,EACJE,KAAK,OACLC,UAAU,UACVC,YAAatb,EACbub,cAAgBC,IAEVA,EAAO1S,QAAU5K,EAAM4K,OAE3BhC,EAAS,CACPwI,OAAQ,CAENxG,MAAwB,MAAjB0S,EAAO1S,MAAgB,KAAO0S,EAAO1S,QAE9C,GAEJ,IAMS,SAAS2S,GAAgBvd,GAA8B,IAADwd,EACnE,MAAM,aAAEC,KAAiBC,GAAmB1d,EAE5C,OACEK,EAAAA,EAAAA,KAACsU,EAAAA,EAAS,IACJ+I,EACJR,KAAK,OACLS,UAAW,CACTC,MAAO,IACwB,QAA7BJ,EAAIE,EAAejR,kBAAU,IAAA+Q,EAAAA,EAAI,CAAC,EAClC3I,kBAAkB,EAClBgJ,eAAgBd,GAChBe,WAAY,CACVC,aAAcN,EAAaM,aAC3BC,cAAeP,EAAaO,cAC5BnR,UAAW,GACXoR,kBAAmBR,EAAaQ,kBAChCrT,MAAO5K,EAAM4K,OAEfkK,aAAc,SAKxB,C,gBC9DO,SAASoJ,GAAsBle,GAAoC,IAADme,EAAAC,EAAAC,EACvE,MAAM,aAAEZ,KAAiBa,GAAmBte,EAE5C,OACEK,EAAAA,EAAAA,KAAC8L,GAAAA,EAAe,IACVmS,EACJ1T,MAAO5K,EAAM4K,MACb6B,WAAY,IACmB,QAA7B0R,EAAIG,EAAe7R,kBAAU,IAAA0R,EAAAA,EAAI,CAAC,EAClCN,eAAgBd,GAChBe,WAAY,CACVC,aAAcN,EAAaM,aAC3BC,cAAyC,QAA5BI,EAAEX,EAAaO,qBAAa,IAAAI,GAAAA,EACzCvR,UAAW,GACXoR,kBAAiD,QAAhCI,EAAEZ,EAAaQ,yBAAiB,IAAAI,GAAAA,EACjDzT,MAAO5K,EAAM4K,SAKvB,C,0ECAO,SAAS2T,GAAQtiB,GAWL,IAXM,KACvBuiB,EAAI,SACJ5V,EAAQ,OACR6V,EAAM,UACNlS,EAAS,WACTmS,EAAU,iBACVC,EAAgB,SAChBrd,EAAW,OAAM,IACjBsd,EAAG,IACHC,EAAG,KACH/Y,GACc7J,EACd,MAAM0E,GAAQC,EAAAA,GAAAA,MACRoW,GAAUC,EAAAA,GAAAA,MACV6H,GAAWC,EAAAA,GAAAA,OAEVC,EAAiBC,IAAsB7V,EAAAA,EAAAA,UAAwB,MAgBhEtG,EAAYoc,GACZA,EAAIC,KACU,UAAZD,EAAIniB,KAA+B,aAAZmiB,EAAIniB,IACzBmiB,EAAIniB,MAAQ+hB,EAASM,UAAY,GAAA3Z,OAAGyZ,EAAIniB,IAAG,OAAQ+hB,EAASM,SAAiB,SAC1E,GAGLT,EACKG,EAAStH,OAAO5S,SAASsa,EAAIniB,KAG/B+hB,EAASM,SAASxa,SAASsa,EAAIniB,KAEpC0hB,EAAeA,IAAWS,EAAIniB,IAC7BiiB,EACEA,IAAoBE,EAAIniB,IADFyhB,EAAK,GAAGzhB,MAAQmiB,EAAIniB,IAInD,OACEsD,EAAAA,EAAAA,KAACqF,GAAAA,GAAI,CAACC,WAAS,EAACe,eAAe,SAAQtG,UACrCC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CACFzB,GAAI,CACFc,QAAS,OACTuE,MAAOoG,EAAY,OAAS,OAC5BrL,gBAAoB,OAAH0d,QAAG,IAAHA,EAAAA,EAAOje,EAAMQ,OAAOke,WACrCpe,aAAuB,UAAT6E,EAAmB,MAAQ,OACzC/E,QAAS,MACToE,oBAA8B,UAAAM,OAAa+Y,EAAKhT,OAA3Be,EAAiC,SAAgC,YACtFnM,SAEDoe,EAAK1jB,KAAKokB,IACT7e,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAEFC,UAAS,GAAAiD,OAAKiZ,EAAa,cAAgB,GAAE,KAAAjZ,OAAI3C,EAASoc,GAAO,SAAW,IAC5Eze,QAASA,IAhDDye,KAChB,IAAIA,EAAIlO,KAKR,OAAKkO,EAAIC,UAKTnI,EAAQvM,KAAKyU,EAAIC,OAJfF,EAAmBC,EAAIniB,UACnB6L,GAAUA,EAASsW,MANvBI,EAAAA,GAAAA,GAAiBJ,EAAIlO,KAAM,cASP,EAqCCuO,CAASL,GACxBpe,GAAI,CACFQ,WACA8X,SAAmB,UAATtT,EAAmB,OAAS,OACtC/E,QAAkB,UAAT+E,EAAmB,SAAW,SACvCZ,OAAiB,UAATY,EAAmB,OAAS,OACpCzE,MAAOV,EAAMuG,YAAYC,cACzBnG,OAAQ,UACRC,aAAuB,UAAT6E,EAAmB,MAAQ,OACzCQ,WAAY,IACZ,WAAY,CACVjF,MAAOV,EAAMuG,YAAYsY,YACzB9e,WAAe,OAAHme,QAAG,IAAHA,EAAAA,EAAOle,EAAMQ,OAAOse,YAElC,eAAgB,CACdnZ,WAAY,KAEd,4BAA6B,CAC3B8S,SAAmB,UAATtT,EAAmB,OAAS,OACtC/E,QAAkB,UAAT+E,EAAmB,SAAW,SACvCxE,SAAU,SAEZlB,UAEFC,EAAAA,EAAAA,KAAC6H,EAAAA,EAAI,CAACwM,QAAQ,SAAS5T,GAAI,CAAEoE,OAAQ,QAAS9E,SAC3C8e,EAAItU,SA3BFsU,EAAIniB,UAkCrB,C,wCClHO,SAAS2iB,GAAYzjB,GAA6C,IAA5C,MAAE4V,EAAK,YAAE8N,GAAgC1jB,EACpE,MAAO0M,EAAMkS,IAAWzR,EAAAA,EAAAA,WAAS,GAMjC,OACEnJ,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAAAnC,SAAA,EACFH,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAACzB,GAAI,CAAEc,QAAS,OAAQwD,IAAK,QAASC,WAAY,UAAWjF,SAAA,CAC9DyR,GACDxR,EAAAA,EAAAA,KAACuf,GAAAA,EAAW,CAAC9Z,KAAK,OAAO9E,OAAO,UAAUP,QAR3Bof,KACnBhF,GAASlS,EAAK,QASZtI,EAAAA,EAAAA,KAACyf,GAAAA,EAAQ,CAACC,QAAQ,EAAOC,GAAIrX,EAAKvI,SAC/Buf,MAIT,C,gBCxBA,MAAMle,IAAYC,EAAAA,EAAAA,IAAYf,IAC5B,MAAMsf,EACyB,SAA7Btf,EAAMuf,cAAcC,KAAe,aAAA1a,OAAgB9E,EAAMQ,OAAOif,mBAAsB,oBAElFC,EACyB,SAA7B1f,EAAMuf,cAAcC,KAAe,aAAA1a,OAAgB9E,EAAMQ,OAAOmf,mBAAsB,oBAExF,MAAO,CACLjG,KAAM,CACJnV,OAAQ,GACRnE,QAAS,EACTwF,OAAQ,GAEVga,WAAY,CACVxf,QAAS,EACTM,MAAOV,EAAM2E,QAAQkb,KAAKC,MAC1B7S,IAAK,MACLC,KAAM,MACN2E,UAAW,OACX,YAAa,CACXvC,UAAW,mBACX5O,MAAOV,EAAM2E,QAAQkb,KAAKC,MAC1B,qBAAsB,CACpB/f,WAAmC,SAAvBC,EAAM2E,QAAQ6a,KAAkBxf,EAAMQ,OAAOmf,kBAAoB3f,EAAMQ,OAAOuf,kBAE5F,aAAc,CACZxf,gBAA8C,SAA7BP,EAAMuf,cAAcC,KAAkBxf,EAAMQ,OAAOse,WAAa,UACjFnf,QAAS,EACT6H,OAAQkY,IAGZ,wBAAyB,CACvBhf,MAAO,UACP8G,OAAQ,mBAGZwY,MAAO,CACLxa,MAAO,GACPjB,OAAQ,GACR0b,UAAW,QAEbC,MAAO,CACL5f,aAAc,GACdkH,OAAQ8X,EACRvf,WAAmC,SAAvBC,EAAM2E,QAAQ6a,KAAkBxf,EAAMQ,OAAOse,WAAa,UACtEnf,QAAS,EACTwgB,WAAYngB,EAAMogB,YAAYrhB,OAAO,CAAC,mBAAoB,YAE5DyR,QAAS,CAAC,EACV6P,aAAc,CAAC,EAChB,IAGY,SAASC,GAAQjhB,GAC9B,MAAMiC,EAAUR,KAEhB,OACEpB,EAAAA,EAAAA,KAAC6gB,GAAAA,EAAM,CACLC,sBAAuBlf,EAAQ+e,aAC/BI,eAAa,EACbnf,QAAS,CACPoY,KAAMpY,EAAQoY,KACdkG,WAAYte,EAAQse,WACpBI,MAAO1e,EAAQ0e,MACfE,MAAO5e,EAAQ4e,MACf1P,QAASlP,EAAQkP,YAEfnR,GAGV,C,qCCvEA,MAAMyB,IAAYC,EAAAA,EAAAA,IAAW,MAC3BsP,KAAM,CACJqQ,eAAgB,OAChBC,WAAY,YAcT,SAASC,GAAItlB,GAAoE,IAAnE,GAAEmb,EAAE,KAAEpG,EAAI,MAAE3P,EAAK,SAAEjB,EAAQ,MAAE+F,EAAK,OAAEjB,EAAM,QAAEtD,GAAoB3F,EACnF,MAAMgG,EAAUR,KACVd,GAAQC,EAAAA,GAAAA,MAEd,OACEP,EAAAA,EAAAA,KAAAoL,EAAAA,SAAA,CAAArL,SACGgX,GACC/W,EAAAA,EAAAA,KAACmhB,GAAAA,GAAS,CAAChf,UAAWP,EAAQ+O,KAAMoG,GAAIA,EAAI7B,MAAO,CAAEpP,QAAOjB,SAAQtD,WAAUxB,SAC3EA,IAED4Q,GACF3Q,EAAAA,EAAAA,KAAA,KACEohB,KAAMzQ,EACNI,OAAO,SACPsQ,IAAI,aACJnM,MAAO,CACLpP,QACAjB,SACAtD,UACAyf,eAAgB,OAChBhgB,MACY,YAAVA,EACIV,EAAMQ,OAAOwgB,YACH,cAAVtgB,EACAV,EAAMQ,OAAOC,cACb,WACNhB,SAEDA,IAGHA,GAIR,C,6MC/CA,MAAMqB,GAAYC,EAAAA,EAAAA,IAAYf,IAAY,CACxCihB,eAAgB,CACd3V,SAAU,YAEZN,MAAO,CACLrK,SAAU,OACVgF,WAAY,IACZ,4BAA6B,CAC3BhF,SAAU,QAEZ,YAAa,CACXD,MAAO,YAGXwgB,WAAY,CACVC,aAAc,QAEhBlX,MAAO,CACL+E,UAAW,QACX8G,UAAW,aAEbsL,YAAa,CACX9V,SAAU,WACV+V,MAAO,EACPpU,IAAK,MACLqC,UAAW,qBACXjP,OAAQ,UACR,UAAW,CACTK,MAAOV,EAAMQ,OAAOwgB,aAEtB,YAAa,CACXtgB,MAAO,UACP,UAAW,CACTA,MAAO,aAIb4gB,aAAc,CACZhW,SAAU,WACV+V,MAAO,MACPpU,IAAK,MACL5M,OAAQ,UACR,UAAW,CACTK,MAAOV,EAAMQ,OAAOwgB,aAEtB,YAAa,CACXtgB,MAAO,UACP,UAAW,CACTA,MAAO,iBA4BA,SAASsP,EAAK1U,GAmBb,IAnBc,MAC5B0P,EAAK,SACLvL,EAAQ,KACRuI,EAAI,YACJuZ,EAAWtW,EAAAA,GAAAC,EAAG,CAAAnQ,GAAA,WAAU,WACxBymB,EAAUvW,EAAAA,GAAAC,EAAG,CAAAnQ,GAAA,WAAS,QACtBmN,EAAO,UACPuZ,EAAS,SACTpV,EAAQ,YACRqV,GAAc,EAAK,WACnBC,GAAa,EAAK,UAClBC,GAAY,EAAI,gBAChBC,EAAe,UACfjW,GAAY,EAAI,SAChB1F,EAAW,KAAI,KACfqW,EAAI,WACJxc,EAAU,YACVoL,EAAW,eACX2W,GACWxmB,EACX,MAAMgG,EAAUR,IACVd,GAAQC,EAAAA,EAAAA,KACR8hB,GAActf,EAAAA,EAAAA,GAAczC,EAAM0C,YAAYC,KAAK,OAEnDqf,GAAUvf,EAAAA,EAAAA,GAAc,qBAE9B,OACEnD,EAAAA,EAAAA,MAAC2iB,EAAAA,EAAM,CACL/Z,QAASA,EACTF,KAAMA,EACN9B,SAAUA,EACV0F,UAAWA,KACPT,EACJhL,GAAI,CACF,uCAAwC,CACtCC,QAAS,KAEX,yBAA0B,CACxBA,QAAS,sBACL2hB,EAAc,CAAE3hB,QAAS,oBAAuB,CAAC,GAEvD,2BAA4B,CAC1BkL,SAAU,WACVlL,QAAS0hB,EAAc,GAAAhd,OAAMgd,EAAc,cAAe,oBACtDC,EAAc,CAAE3hB,QAAS,OAAQ6U,WAAY,kBAAqB,CAAC,MAEtE,CACD,oBAAqB,IACflV,EACA,CAAEQ,gBAAgC,WAAfR,EAA0BC,EAAM2E,QAAQ5E,WAAW2L,OAAS3L,GAC/E,CAAEQ,gBAAiBP,EAAM2E,QAAQ5E,WAAWqL,aAEnC,OAAXD,QAAW,IAAXA,OAAW,EAAXA,EAAahL,KAAM,CAAC,IAE1BV,SAAA,CAEDuL,GACCkX,EAAAA,EAAAA,WAAUlX,GACRA,GAEAtL,EAAAA,EAAAA,KAACyiB,EAAAA,EAAW,CAAA1iB,UACVH,EAAAA,EAAAA,MAACY,EAAAA,EAAU,CAAC2B,UAAWP,EAAQ2f,eAAgB9Q,UAAU,MAAK1Q,SAAA,EAC5DC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAAC2B,UAAS,GAAAiD,OAAKxD,EAAQ0J,MAAK,KAAAlG,OAAIyX,GAAQ,IAAMpM,UAAU,OAAOzP,MAAM,cAAajB,SAC1FuL,IAEF4W,GACCliB,EAAAA,EAAAA,KAACN,EAAAA,EAAe,CAACU,QAASoI,EAASrG,UAAS,GAAAiD,OAAKxD,EAAQ8f,YAAW,KAAAtc,OAAIyX,GAAQ,MAC9E,UAIR,MACJjd,EAAAA,EAAAA,MAAC8iB,EAAAA,EAAa,CAAA3iB,SAAA,CACXmiB,IAAc5W,GACbtL,EAAAA,EAAAA,KAACN,EAAAA,EAAe,CAACU,QAASoI,EAASrG,UAAS,GAAAiD,OAAKxD,EAAQggB,aAAY,KAAAxc,OAAIyX,GAAQ,GAAE,OACjF,KACH9c,EAEAiiB,GAAeC,GACdriB,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CACF0K,GAAG,OACHnM,GAAI,CACFc,QAAS,OACTuD,oBAAqBwd,EAAU,MAAQN,GAAeC,EAAa,UAAY,MAC/Eld,IAAKud,EAAU,SAAW,UAC1BviB,SAAA,CAEDkiB,GACCjiB,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAAAnC,UACFC,EAAAA,EAAAA,KAACgR,EAAAA,EAAM,CAAC9E,WAAS,EAACzG,KAAK,QAAQrF,QAASuM,EAAUsE,QAAQ,WAAUlR,SACjE+hB,MAGH,KACHE,GACChiB,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAAAnC,UACFC,EAAAA,EAAAA,KAACgR,EAAAA,EAAM,CAACE,SAAUiR,EAAiBjW,WAAS,EAACzG,KAAK,QAAQwL,QAAQ,YAAY7Q,QAAS2hB,EAAUhiB,SAC9F8hB,MAGH,QAEJ,UAIZ,C,yGCjLA,QAAejmB,IAAoE,IAAD+mB,EAAA,IAAlE,MAAE7c,EAAQ,QAAO,KAAEwC,EAAI,SAAEvI,KAAaJ,GAAuB/D,EAC3E,MAAM0E,GAAQC,EAAAA,EAAAA,MAEd,OACEP,EAAAA,EAAAA,KAACsQ,EAAAA,EAAK,CACJhI,KAAMA,EACN9B,SAAS,QACL7G,EACJ8L,YAAa,CACXhL,GAAI,CACF,qBAAsB,CACpBqF,QACAjF,iBAAiB+H,EAAAA,EAAAA,IAAYtI,GAASA,EAAM2E,QAAQ5E,WAAWqL,OAASpL,EAAMQ,OAAO6K,kBAElE,QAAjBgX,EAAAhjB,EAAM8L,mBAAW,IAAAkX,OAAA,EAAjBA,EAAmBliB,KAAM,CAAC,IAEhCV,SAEDA,GAGN,C,2GC/Bc,SAAS6iB,EAAWjjB,GAGjC,MAAoC,UAFtBY,EAAAA,EAAAA,KAEDsf,cAAcC,MACzBlgB,EAAAA,EAAAA,MAACC,EAAAA,EAAO,CAACC,QAAQ,iBAAkBH,EAAKI,SAAA,EACtCC,EAAAA,EAAAA,KAAA,QACEE,EAAE,qdACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,6/BACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,seACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,0ZACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,2dACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,8dACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,mZACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,6OACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,+0BACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,4GACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,+2CACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,i1CACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,0qBACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,8jBACFuP,KAAK,gBAIT7P,EAAAA,EAAAA,MAACC,EAAAA,EAAO,CAACC,QAAQ,iBAAkBH,EAAKI,SAAA,EACtCC,EAAAA,EAAAA,KAAA,QACEE,EAAE,ydACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,k/BACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,seACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,oaACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,+dACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,+dACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,wZACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,oPACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,60BACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,gHACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,82CACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,u1CACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,+qBACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,+jBACFuP,KAAK,cAIb,CCzHA,MAAMrO,GAAYC,EAAAA,EAAAA,IAAW,KACpB,CACLwhB,gBAAiB,CACfhe,OAAQ,aAKC,SAAS4H,IACtB,MAAM7K,EAAUR,IAEhB,OACEpB,EAAAA,EAAAA,KAACqF,EAAAA,GAAI,CAACC,WAAS,EAACe,eAAe,SAASrB,WAAW,SAAS7C,UAAWP,EAAQihB,gBAAgB9iB,UAC7FC,EAAAA,EAAAA,KAACqF,EAAAA,GAAI,CAACM,MAAI,EAAA5F,UACRC,EAAAA,EAAAA,KAAC4iB,EAAU,CAAC1N,MAAO,CAAEjU,SAAU,aAIvC,C,gGCnBA,QAAe6hB,EAAAA,cAAqC,CAAC,GCDxC9f,EACH,8BADGA,EAEL,2BAGF+f,EAAc5P,GAAyBA,EAAK6P,OAAO,GAAGC,cAAgB9P,EAAK+P,MAAM,GAE1EC,EAAsBC,GAAqC,GAAAhe,OACnE2d,EAAWK,EAAO5S,WAASpL,OAAG2d,EAAWK,EAAOpO,aAExCqO,EAAa9Y,KAAyDA,GAAmB,IAAVA,E,0BCT5F,SAAS1K,EAAQF,GACf,OACEK,EAAAA,EAAAA,KAAA,OACEF,QAAQ,YACRwjB,UAAU,QACVpO,MAAO,CACLjU,SAAU,GACVggB,WAAY,OACZnb,MAAO,MACPjB,OAAQ,MACRtD,QAAS,eACTkO,KAAM,eACN8T,WAAY,MAEV5jB,GAGV,CAEA,SAAS6jB,IACP,OACE5jB,EAAAA,EAAAA,MAACC,EAAO,CAAAE,SAAA,EACNC,EAAAA,EAAAA,KAAA,QACEE,EAAE,m9BACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEkb,SAAS,UACTC,SAAS,UACTjb,EAAE,kHACFuP,KAAK,cAIb,CAEA,MAAMD,EAAwBA,KAC5BxP,EAAAA,EAAAA,KAACH,EAAO,CAAAE,UACNC,EAAAA,EAAAA,KAAA,QAAME,EAAE,wDAINujB,EAAsBA,KAC1BzjB,EAAAA,EAAAA,KAACH,EAAO,CAAAE,UACNC,EAAAA,EAAAA,KAAA,QACEE,EAAE,y0DACFuP,KAAK,cAKLiU,EAAqBA,KACzB1jB,EAAAA,EAAAA,KAACH,EAAO,CAAAE,UACNC,EAAAA,EAAAA,KAAA,QACEE,EAAE,gHAeR,EAT6D,CAC3DyjB,aAAS3f,EACT4f,SAAS5jB,EAAAA,EAAAA,KAACwjB,EAAS,IACnBK,SAAS7jB,EAAAA,EAAAA,KAACwP,EAAW,IACrBa,OAAOrQ,EAAAA,EAAAA,KAACyjB,EAAS,IACjBK,MAAM9jB,EAAAA,EAAAA,KAAC0jB,EAAQ,IACfngB,SAASvD,EAAAA,EAAAA,KAACuP,EAAAA,EAAgB,CAAC9J,KAAM,GAAIhF,GAAI,CAAEO,MAAO,cCrE7C,IAAK+iB,EAAgB,SAAhBA,GAAgB,OAAhBA,EAAgB,sBAAhBA,EAAgB,gBAAhBA,EAAgB,oBAAhBA,EAAgB,kBAAhBA,EAAgB,kBAAhBA,CAAgB,MCM5B,MAAMC,UAAmBlB,EAAAA,UACvBmB,WAAAA,CAAYtkB,GACVukB,MAAMvkB,GAEN,MAAM,OAAE+f,GAAW/f,EAEnB,IAAIwkB,EAEJC,KAAKC,aAAe,KAEhB1kB,EAAMggB,GACJD,GACFyE,EAAgBJ,EAAiBO,OACjCF,KAAKC,aAAeN,EAAiBQ,UAErCJ,EAAgBJ,EAAiBS,QAGnCL,EADSxkB,EAAM8kB,eAAiB9kB,EAAM+kB,aACtBX,EAAiBY,UAEjBZ,EAAiBO,OAGnCF,KAAKzJ,MAAQ,CAAEiK,OAAQT,GAEvBC,KAAKS,aAAe,IACtB,CAEA,+BAAOC,CAAwBlpB,EAAiBkP,GAAY,IAA1B6U,GAAIoF,GAAQnpB,EAC5C,OAAImpB,GAAUja,EAAU8Z,SAAWb,EAAiBY,UAC3C,CAAEC,OAAQb,EAAiBO,QAE7B,IACT,CAEAU,iBAAAA,GACEZ,KAAKa,cAAa,EAAMb,KAAKC,aAC/B,CAEAa,kBAAAA,CAAmBC,GACjB,IAAIC,EAAa,KACjB,GAAID,IAAcf,KAAKzkB,MAAO,CAC5B,MAAM,OAAEilB,GAAWR,KAAKzJ,MAEpByJ,KAAKzkB,MAAMggB,GACTiF,IAAWb,EAAiBQ,UAAYK,IAAWb,EAAiBS,UACtEY,EAAarB,EAAiBQ,UAEvBK,IAAWb,EAAiBQ,UAAYK,IAAWb,EAAiBS,UAC7EY,EAAarB,EAAiBsB,QAElC,CACAjB,KAAKa,cAAa,EAAOG,EAC3B,CAEAE,oBAAAA,GACElB,KAAKmB,oBACP,CAEAC,WAAAA,GACE,MAAM,QAAEC,GAAYrB,KAAKzkB,MACzB,IAAI+lB,EAAQD,EACRE,EAAOF,EAMX,OAJe,MAAXA,GAAsC,kBAAZA,IAC5BE,EAAOF,EAAQE,KACfD,EAAQD,EAAQC,OAEX,CAAEC,OAAMD,QACjB,CAEAT,YAAAA,GAA4C,IAA/BW,EAAQC,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,IAAAA,UAAA,GAAUT,EAAUS,UAAA1a,OAAA,EAAA0a,UAAA,QAAA7hB,EACpB,OAAfohB,GACFhB,KAAKmB,qBAEDH,IAAerB,EAAiBQ,SAClCH,KAAK0B,aAAaF,GAElBxB,KAAK2B,eAEE3B,KAAKzkB,MAAM8kB,eAAiBL,KAAKzJ,MAAMiK,SAAWb,EAAiBO,QAC5EF,KAAK4B,SAAS,CAAEpB,OAAQb,EAAiBY,WAE7C,CAEA,QAAIsB,GACF,MAAMA,EAAO7B,KAAKzkB,MAAMumB,QAAQnS,QAChC,IAAKkS,EACH,MAAM,IAAI/qB,MAAM,oDAElB,OAAO+qB,CACT,CAEAH,YAAAA,CAAaF,GACX,MAAM,MAAEF,EAAK,GAAErqB,GAAO+oB,KAAKzkB,MACrBwmB,EAAcP,EAEdQ,EAAWhC,KAAKoB,cAEjBI,GAAaF,GAOlBtB,KAAKzkB,MAAM0mB,QAAQjC,KAAK6B,KAAME,EAAa9qB,GAE3C+oB,KAAKkC,aAAa,CAAE1B,OAAQb,EAAiBQ,WAAY,KACvDH,KAAKzkB,MAAM4mB,WAAWnC,KAAK6B,KAAME,EAAa9qB,GAE9C+oB,KAAKoC,gBAAgBJ,EAASV,OAAO,KACnCtB,KAAKkC,aAAa,CAAE1B,OAAQb,EAAiBS,UAAW,KACtDJ,KAAKzkB,MAAM8mB,UAAUrC,KAAK6B,KAAME,EAAa9qB,EAAG,GAChD,GACF,KAfF+oB,KAAKkC,aAAa,CAAE1B,OAAQb,EAAiBS,UAAW,KACtDJ,KAAKzkB,MAAM8mB,UAAUrC,KAAK6B,KAAME,EAAa9qB,EAAG,GAgBtD,CAEA0qB,WAAAA,GACE,MAAM,KAAEJ,EAAI,GAAEtqB,GAAO+oB,KAAKzkB,MACpBymB,EAAWhC,KAAKoB,cAGjBG,GAOLvB,KAAKzkB,MAAM+mB,OAAOtC,KAAK6B,KAAM5qB,GAE7B+oB,KAAKkC,aAAa,CAAE1B,OAAQb,EAAiBsB,UAAW,KACtDjB,KAAKzkB,MAAMgnB,UAAUvC,KAAK6B,KAAM5qB,GAEhC+oB,KAAKoC,gBAAgBJ,EAAST,MAAM,KAClCvB,KAAKkC,aAAa,CAAE1B,OAAQb,EAAiBO,SAAU,KACrDF,KAAKzkB,MAAMinB,SAASxC,KAAK6B,KAAM5qB,EAAG,GAClC,GACF,KAfF+oB,KAAKkC,aAAa,CAAE1B,OAAQb,EAAiBO,SAAU,KACrDF,KAAKzkB,MAAMinB,SAASxC,KAAK6B,KAAM5qB,EAAG,GAgBxC,CAEAkqB,kBAAAA,GAC4B,OAAtBnB,KAAKS,eACPT,KAAKS,aAAagC,SAClBzC,KAAKS,aAAe,KAExB,CAEAyB,YAAAA,CAAaQ,EAAWC,GACtBA,EAAW3C,KAAK4C,gBAAgBD,GAChC3C,KAAK4B,SAASc,EAAWC,EAC3B,CAEAC,eAAAA,CAAgBD,GACd,IAAI3I,GAAS,EAeb,OAbAgG,KAAKS,aAAgB9d,IACfqX,IACFA,GAAS,EACTgG,KAAKS,aAAe,KAEpBkC,EAAShgB,GACX,EAGFqd,KAAKS,aAAagC,OAAS,KACzBzI,GAAS,CAAK,EAGTgG,KAAKS,YACd,CAEA2B,eAAAA,CAAgBf,EAASwB,GACvB7C,KAAK4C,gBAAgBC,GACrB,MAAMC,EAA0C,MAAXzB,IAAoBrB,KAAKzkB,MAAMwnB,eAC/D/C,KAAK6B,OAAQiB,GAKd9C,KAAKzkB,MAAMwnB,gBACb/C,KAAKzkB,MAAMwnB,eAAe/C,KAAK6B,KAAM7B,KAAKS,cAG7B,MAAXY,GACF2B,WAAWhD,KAAKS,aAAcY,IAT9B2B,WAAWhD,KAAKS,aAAc,EAWlC,CAEAwC,MAAAA,GACE,MAAM,OAAEzC,GAAWR,KAAKzJ,MAExB,GAAIiK,IAAWb,EAAiBY,UAC9B,OAAO,KAGT,MAAM,SACJ5kB,EAEA1E,GAAIisB,EACJ3H,GAAI4H,EACJ7C,aAAc8C,EACd/C,cAAegD,EACf/H,OAAQgI,EACRhC,MAAOiC,EACPhC,KAAMiC,EACNnC,QAASoC,EACTV,eAAgBW,EAChBzB,QAAS0B,EACTxB,WAAYyB,EACZvB,UAAWwB,EACXvB,OAAQwB,EACRvB,UAAWwB,EACXvB,SAAUwB,EACVlC,QAASmC,KACNC,GACDlE,KAAKzkB,MAET,OAAOI,EAAS6kB,EAAQ0D,EAC1B,EAGF,SAASC,IAAQ,CAEjBvE,EAAWwE,aAAe,CACxB7I,IAAI,EACJ+E,cAAc,EACdD,eAAe,EACf/E,QAAQ,EACRgG,OAAO,EACPC,MAAM,EAENU,QAASkC,EACThC,WAAYgC,EACZ9B,UAAW8B,EAEX7B,OAAQ6B,EACR5B,UAAW4B,EACX3B,SAAU2B,GAGZ,UChPA,SAASE,EACPhnB,EACA8I,GAEmB,oBAAR9I,EACTA,EAAI8I,GACK9I,IACTA,EAAIsS,QAAUxJ,EAElB,CAEe,SAASme,EACtBC,EACAC,GAOA,OAAO9F,EAAAA,SAAc,IACP,MAAR6F,GAAwB,MAARC,EACX,KAEDC,IACNJ,EAAOE,EAAME,GACbJ,EAAOG,EAAMC,EAAS,GAEvB,CAACF,EAAMC,GACZ,CCpBe,SAASE,EAAmBnpB,GAAmD,IAADopB,EAC3F,MAAM,QAAEtD,EAAO,MAAEvQ,EAAQ,CAAC,EAAC,KAAE4K,GAASngB,EACtC,MAAO,CACLqpB,SAAkC,QAA1BD,EAAE7T,EAAM+T,0BAAkB,IAAAF,EAAAA,EAAwB,kBAAZtD,EAAuBA,EAAQ3F,IAAS,EAAI2F,EAC1FyD,OAAQhU,EAAMiU,yBACdC,MAAOlU,EAAMmU,gBAEjB,CCzBO,MAAMC,EAAgB,CAE3BC,UAAW,+BAGXC,QAAS,+BAETC,OAAQ,6BAERC,MAAO,gCCFHC,EAAYC,GAAoB,GAAAxkB,OAAQykB,KAAKC,MAAMF,GAAa,MAEvD,SAASG,IAGb,IAFTpqB,EAAwBkmB,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAG,CAAC,OAC5BmE,EAAiCnE,UAAA1a,OAAA,EAAA0a,UAAA,QAAA7hB,EAEjC,MAAM,SAAEglB,EAAW,IAAG,OAAEE,EAASI,EAAcC,UAAS,MAAEH,EAAQ,GAAMY,GAAW,CAAC,EAIpF,OAFmBC,MAAMC,QAAQvqB,GAASA,EAAQ,CAACA,IAGhDlF,KAAK0vB,IACJ,MAAMC,EAAwC,kBAAbpB,EAAwBA,EAAWW,EAASX,GACvEqB,EAAkC,kBAAVjB,EAAqBA,EAAQO,EAASP,GACpE,MAAM,GAANhkB,OAAU+kB,EAAY,KAAA/kB,OAAIglB,EAAiB,KAAAhlB,OAAI8jB,EAAM,KAAA9jB,OAAIilB,EAAc,IAExEC,KAAK,IACV,CCrBO,SAASC,EAAYtE,GAC1B,MAAMuE,EALD,SAAuBvE,GAC5B,OAAQA,GAAQA,EAAKwE,eAAkBC,QACzC,CAGcD,CAAcxE,GAC1B,OAAOuE,EAAIG,aAAeC,MAC5B,CCmEA,SAASC,EAAkBC,EAAqC7E,GAC9D,IAAKA,EAAM,OACX,MAAMrW,EAvCR,SACEkb,EACA7E,GAEA,MAAM8E,EAAO9E,EAAK+E,wBACZC,EAAkBV,EAAYtE,GACpC,IAAIrW,EAEJ,GAAIqW,EAAKiF,cACPtb,EAAYqW,EAAKiF,kBACZ,CACL,MAAMC,EAAgBF,EAAgBG,iBAAiBnF,GACvDrW,EAAYub,EAAcE,iBAAiB,sBAAwBF,EAAcE,iBAAiB,YACpG,CAEA,IAAIC,EAAU,EACVC,EAAU,EAEd,GAAI3b,GAA2B,SAAdA,GAA6C,kBAAdA,EAAwB,CACtE,MAAM4b,EAAkB5b,EAAU6b,MAAM,KAAK,GAAGA,MAAM,KAAK,GAAGA,MAAM,KACpEH,EAAUI,SAASF,EAAgB,GAAI,IACvCD,EAAUG,SAASF,EAAgB,GAAI,GACzC,CAEA,OAAQV,GACN,IAAK,OACH,MAAM,cAAN1lB,OAAqB6lB,EAAgBU,WAAaL,EAAUP,EAAKvd,KAAI,OACvE,IAAK,QACH,MAAM,eAANpI,OAAsB2lB,EAAKvd,KAAOud,EAAKjlB,MAAQwlB,EAAO,OACxD,IAAK,KACH,MAAM,cAANlmB,OAAqB6lB,EAAgBW,YAAcL,EAAUR,EAAKxd,IAAG,OACvE,QAEE,MAAM,eAANnI,OAAsB2lB,EAAKxd,IAAMwd,EAAKlmB,OAAS0mB,EAAO,OAE5D,CAIoBM,CAAkBf,EAAW7E,GAC3CrW,IACFqW,EAAK/Q,MAAM4W,gBAAkBlc,EAC7BqW,EAAK/Q,MAAMtF,UAAYA,EAE3B,CAEO,MAAMmc,EAAQjJ,EAAAA,YAA2C,CAACnjB,EAAO8B,KACtE,MAAM,SACJ1B,EAAQ,UACR+qB,EAAY,OACZnL,GAAIqM,EAAM,MACV9W,EAAK,QACLuQ,EAAU,EAAC,QACXY,EAAO,UACPI,EAAS,OACTC,EAAM,SACNE,KACGjK,GACDhd,EAEEumB,EAAUpD,EAAAA,OAAa,MACvBmJ,EAAwBvD,EAAW3oB,EAAS0B,IAAKykB,GACjDgG,EAAYxD,EAAWuD,EAAuBxqB,GAsD9C0qB,EAAiBrJ,EAAAA,aAAkB,KACnCoD,EAAQnS,SACV8W,EAAkBC,EAAW5E,EAAQnS,QACvC,GACC,CAAC+W,IA8BJ,OA5BAhI,EAAAA,WAAgB,KAEd,GAAIkJ,GAAwB,SAAdlB,GAAsC,UAAdA,EACpC,OAGF,MAAMsB,EArJV,SAAkBC,GAAmB,IAC/B5G,EADkB6G,EAAIzG,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAG,IAE7B,SAAS0G,IAA2B,IAAD,IAAAC,EAAA3G,UAAA1a,OAAbshB,EAAI,IAAAxC,MAAAuC,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAA7G,UAAA6G,GAIxBC,aAAalH,GACbA,EAAU2B,YAJIwF,KACZP,EAAKQ,MAAMzI,KAAMqI,EAAK,GAGIH,EAC9B,CAMA,OAJAC,EAAUO,MAAQ,KAChBH,aAAalH,EAAQ,EAGhB8G,CACT,CAsIyBQ,EAAS,KACxB7G,EAAQnS,SACV8W,EAAkBC,EAAW5E,EAAQnS,QACvC,IAGIkX,EAAkBV,EAAYrE,EAAQnS,SAE5C,OADAkX,EAAgB+B,iBAAiB,SAAUZ,GACpC,KACLA,EAAaU,QACb7B,EAAgBgC,oBAAoB,SAAUb,EAAa,CAC5D,GACA,CAACtB,EAAWkB,IAEflJ,EAAAA,WAAgB,KACTkJ,GAGHG,GACF,GACC,CAACH,EAAQG,KAGVnsB,EAAAA,EAAAA,KAACktB,EAAmB,CAClBxN,QAAM,EACNwG,QAASA,EACTG,QA1FmD8G,CAAClH,EAAME,EAAaiH,KACzEvC,EAAkBC,EAAW7E,GHtFVA,KAIrBA,EAAKoH,UAAYpH,EAAKoH,SAAS,EGmF7BC,CAAOrH,GAEHI,GACFA,EAAQJ,EAAME,EAAaiH,EAC7B,EAqFE3G,UAAWA,EACXF,WAnFoBN,IACtB,MAAMiD,GAAc,OAALhU,QAAK,IAALA,OAAK,EAALA,EAAOiU,2BAA4BG,EAAcE,QAC1D+D,EAAkBzE,EAAmB,CACzCrD,UACA3F,KAAM,QACN5K,MAAO,IAAKA,EAAOiU,yBAA0BD,KAG/CjD,EAAK/Q,MAAMsY,iBAAmBzD,EAAiB,oBAAqBwD,GACpEtH,EAAK/Q,MAAMuL,WAAasJ,EAAiB,YAAawD,GAEtDtH,EAAK/Q,MAAM4W,gBAAkB,OAC7B7F,EAAK/Q,MAAMtF,UAAY,MAAM,EAwE3B8W,OArEiD+G,CAACxH,EAAMmH,KAC1D,MAAMlE,GAAc,OAALhU,QAAK,IAALA,OAAK,EAALA,EAAOiU,2BAA4BG,EAAcI,MAC1D6D,EAAkBzE,EAAmB,CACzCrD,UACA3F,KAAM,OACN5K,MAAO,IAAKA,EAAOiU,yBAA0BD,KAG/CjD,EAAK/Q,MAAMsY,iBAAmBzD,EAAiB,oBAAqBwD,GACpEtH,EAAK/Q,MAAMuL,WAAasJ,EAAiB,YAAawD,GAEtD1C,EAAkBC,EAAW7E,GAEzBS,GACFA,EAAOT,EAAMmH,EACf,EAuDExG,SApDqD8G,CAACzH,EAAMmH,KAE9DnH,EAAK/Q,MAAMsY,iBAAmB,GAC9BvH,EAAK/Q,MAAMuL,WAAa,GAEpBmG,GACFA,EAASX,EAAMmH,EACjB,EA8CEzN,GAAIqM,EACJvG,QAASA,KACL9I,EAAK5c,SAERA,CAAC4a,EAAyB2N,IACzBxF,EAAAA,aAAmB/iB,EAAU,CAC3B0B,IAAKyqB,EACLhX,MAAO,CACLyY,WAAsB,WAAVhT,GAAuBqR,OAAoBhoB,EAAX,YACzCkR,KACAnV,EAASJ,MAAMuV,UAEjBoT,KAGa,IC/MbsF,EAAW,CACtBC,SAAU,EACVC,SAAS,EACTC,iBAAiB,EACjBC,2BAA2B,EAC3B/c,QAAS,UACTgd,iBAAkB,IAClBC,YAAaC,EACbpZ,aAAc,CAAEvE,SAAU,MAAOwE,WAAY,SAC7CkY,oBAAqBnB,EACrB9C,mBAAoB,CAClBvD,MAAO,IACPC,KAAM,MAiDGyI,EACXA,CAACpE,EAAcrqB,IACf,SAACiF,GACC,OAD2CihB,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,IAAAA,UAAA,GAElC,IAEF+H,EAAShpB,MACTjF,EAAMiF,MACNolB,EAAQplB,IAIF,qBAATA,EArDoBypB,EAACC,EAAsBC,KACjD,MAAMC,EAAkBC,GAAkD,kBAAdA,GAAwC,OAAdA,EAEtF,OAAID,EAAeF,GAAyBA,EACxCE,EAAeD,GAAuBA,EACnCX,EAASK,gBAAgB,EAiDrBI,CAAoBrE,EAAQiE,iBAAkBtuB,EAAMsuB,kBAGhD,uBAATrpB,EA7CsB8pB,EAACJ,EAAsBC,KACnD,MAAMI,EAAKA,CAAChpB,EAAWipB,IAAoBA,EAAMC,MAAMvzB,UAAaqK,IAASrK,IAE7E,OAAIqzB,EAAGL,EAAiB,CAAC,SAAU,WAC1BA,EAGLK,EAAGL,EAAiB,CAAC,WAChB,IACFV,EAAS3E,sBACR0F,EAAGJ,EAAe,CAAC,YAAcA,KAClCD,GAIHK,EAAGJ,EAAe,CAAC,SAAU,WACxBA,EAGLI,EAAGJ,EAAe,CAAC,WACd,IACFX,EAAS3E,sBACTsF,GAIAX,EAAS3E,kBAAkB,EAoBvByF,CAAsB1E,EAAQf,mBAAoBtpB,EAAMspB,oBAI1De,EAAQplB,IAASjF,EAAMiF,IAASgpB,EAAShpB,EAClD,E,eCpFa,SAASkqB,EAAsBjqB,GAC5C,IAAKA,EACH,OAAO,EAGT,MAAMkqB,EAAWlqB,EAAS,GAE1B,OAAOglB,KAAKC,MAAmD,IAA5C,EAAI,GAAKiF,GAAY,IAAOA,EAAW,GAC5D,CCXO,MAAMC,EACQ,8BADRA,EAED,qBAFCA,EAGM,4BAHNA,EAIC,uBCYR5tB,GAAYC,EAAAA,EAAAA,GAAW,CAC3B2Y,KAAM,CACJnV,OAAQ,GAEVoqB,QAAS,CACPpqB,OAAQ,UAINqqB,EAAgB,MAiJtB,EA/IiBpM,EAAAA,YAAyD,CAACnjB,EAAO8B,KAChF,MAAM,SAAE1B,EAAQ,MAAEmV,EAAK,QAAEuQ,EAAU,IAAK9F,GAAIqM,EAAM,QAAE3F,EAAO,UAAEI,EAAS,OAAEC,EAAM,SAAEE,KAAajK,GAAUhd,EAEjGiC,EAAUR,IAEV+tB,EAAQrM,EAAAA,SACRsM,EAAatM,EAAAA,OAA6B,MAC1CuM,EAAyBvM,EAAAA,SAE/BA,EAAAA,WACE,IAAM,KACAqM,EAAMpb,SACR4Y,aAAawC,EAAMpb,QACrB,GAEF,IAGF,MAAMmS,EAAUpD,EAAAA,OAAa,MACvBoJ,EAAYxD,EAA2BjnB,EAAKykB,GAE5CoJ,EAAiBA,IAAOF,EAAWrb,QAAUqb,EAAWrb,QAAQwb,aAAe,EAwErF,OAEEvvB,EAAAA,EAAAA,KAACktB,EACC,CACAvN,GAAIqM,EACJ3F,QA3EmD8G,CAAClH,EAAME,EAAaiH,KACzEnH,EAAK/Q,MAAMrQ,OAASqqB,EAChB7I,GACFA,EAAQJ,EAAME,EAAaiH,EAC7B,EAwEE3G,UA/CuD+I,CAACvJ,EAAME,EAAaiH,KAC7EnH,EAAK/Q,MAAMrQ,OAAS,OAChB4hB,GACFA,EAAUR,EAAME,EAAaiH,EAC/B,EA4CE7G,WAtEoBN,IACtB,MAAMwJ,EAAcH,KAEZtG,SAAUC,EAAkB,OAAEC,GAAWJ,EAAmB,CAClE5T,QACAuQ,UACA3F,KAAM,UAGR,GAAgB,SAAZ2F,EAAoB,CACtB,MAAMiK,EAAYZ,EAAsBW,GACxCxJ,EAAK/Q,MAAM+T,mBAAkB,GAAA7jB,OAAMsqB,EAAS,MAC5CL,EAAuBtb,QAAU2b,CACnC,MACEzJ,EAAK/Q,MAAM+T,mBACqB,kBAAvBA,EAAkCA,EAAkB,GAAA7jB,OAAM6jB,EAAkB,MAGvFhD,EAAK/Q,MAAMrQ,OAAM,GAAAO,OAAMqqB,EAAW,MAClCxJ,EAAK/Q,MAAMiU,yBAA2BD,GAAU,EAAE,EAoDhDxC,OA1CiD+G,CAACxH,EAAMmH,KAC1DnH,EAAK/Q,MAAMrQ,OAAM,GAAAO,OAAMkqB,IAAgB,MACnC5I,GACFA,EAAOT,EAAMmH,EACf,EAuCExG,SAAUA,EACVD,UArCmBV,IACrB,MAAMwJ,EAAcH,KACZtG,SAAUC,EAAkB,OAAEC,GAAWJ,EAAmB,CAClE5T,QACAuQ,UACA3F,KAAM,SAGR,GAAgB,SAAZ2F,EAAoB,CACtB,MAAMiK,EAAYZ,EAAsBW,GACxCxJ,EAAK/Q,MAAM+T,mBAAkB,GAAA7jB,OAAMsqB,EAAS,MAC5CL,EAAuBtb,QAAU2b,CACnC,MACEzJ,EAAK/Q,MAAM+T,mBACqB,kBAAvBA,EAAkCA,EAAkB,GAAA7jB,OAAM6jB,EAAkB,MAGvFhD,EAAK/Q,MAAMrQ,OAASqqB,EACpBjJ,EAAK/Q,MAAMiU,yBAA2BD,GAAU,EAAE,EAoBhD/B,eAjB0BwI,IACZ,SAAZlK,IACF0J,EAAMpb,QAAUqT,WAAWuI,EAAMN,EAAuBtb,SAAW,GACrE,EAeEmS,QAASA,EACTT,QAAqB,SAAZA,EAAqB,KAAOA,KACjC9I,EAAK5c,SAERA,CAAC4a,EAAyB2N,KACzBtoB,EAAAA,EAAAA,KAAA,OACEyB,IAAKyqB,EACL/pB,WAAWytB,EAAAA,EAAAA,GAAKhuB,EAAQoY,KAAM,CAAE,CAACpY,EAAQqtB,SAAoB,YAAVtU,IACnDzF,MAAO,CACL2a,cAAe,MACfhqB,SAAU,SACVqN,UAAWgc,EACXzO,WAAYsJ,EAAiB,aACf,YAAVpP,GAAuB,CACzB9U,SAAU,cAEE,WAAV8U,IACDqR,GAAU,CACT2B,WAAY,aAEbzY,MAEDoT,EAAUvoB,UAEdC,EAAAA,EAAAA,KAAA,OACEyB,IAAK2tB,EACLjtB,UAAW6sB,EAEX9Z,MAAO,CAAE3T,QAAS,QAASxB,UAE3BC,EAAAA,EAAAA,KAAA,OAAKkV,MAAO,CAAEpP,MAAO,QAAS/F,SAAEA,SAIlB,IC3JpB+qB,EAAsD,CAC1DnJ,MAAO,OACPnU,KAAM,QACNsiB,OAAQ,KACRviB,IAAK,QAWMwiB,EAA0Bhb,GAA4B,eAAA3P,OAClD+d,EAAmBpO,ICzBrB,SAASib,EAAsBC,GAC5C,OAAOA,EAAMC,QACX,CAACC,EAAK9D,IACQ,MAARA,EAAqB8D,EASlB,WAAmC,IAAD,IAAA3D,EAAA3G,UAAA1a,OAANshB,EAAI,IAAAxC,MAAAuC,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAA7G,UAAA6G,GACrC,MAAM0D,EAAS,IAAI3D,GACnB0D,EAAItD,MAAMzI,KAAMgM,GAChB/D,EAAKQ,MAAMzI,KAAMgM,EACnB,IAEF,QAEJ,C,eCdA,MAAMC,EAAsC,qBAAXzF,OAAyB9H,EAAAA,gBAAwBA,EAAAA,UAEnE,SAASwN,EAAiBC,GACvC,MAAM9uB,EAAMqhB,EAAAA,OAAayN,GAMzB,OAJAF,GAAkB,KAChB5uB,EAAIsS,QAAUwc,CAAE,IAGXzN,EAAAA,aAAkB,kBAAa,EAAIrhB,EAAIsS,YAAS8R,UAAQ,GAAE,GACnE,CCCA,MAoHA,EApHiB/C,EAAAA,YAAgD,CAACnjB,EAAO8B,KACvE,MAAM,SACJ1B,EAAQ,UACRoC,EAAS,iBACT8rB,EAAgB,0BAChBD,GAA4B,EAAK,QACjCxlB,EAAO,GACPnN,EAAE,KACFiN,EAAI,cACJkoB,EAAgB,CAAC,GACf7wB,EAEE8wB,EAAgB3N,EAAAA,SAEhBhO,EAAcwb,GAAiB,WAC/B9nB,GACFA,KAAQqd,UAEZ,IAEM6K,EAAmBJ,GAAkBK,IACpCnoB,GAAoC,MAAzBmoB,IAIZF,EAAc1c,SAChB4Y,aAAa8D,EAAc1c,SAE7B0c,EAAc1c,QAAUqT,YAAW,KACjCtS,EAAY,KAAM,UAAWzZ,EAAG,GAC/Bs1B,GAAsB,IAG3B7N,EAAAA,WAAgB,KACVxa,GACFooB,EAAiBzC,GAGZ,KACDwC,EAAc1c,SAChB4Y,aAAa8D,EAAc1c,QAC7B,IAED,CAACzL,EAAM2lB,EAAkByC,IAM5B,MAAME,EAAcA,KACdH,EAAc1c,SAChB4Y,aAAa8D,EAAc1c,QAC7B,EAOI8c,EAAe/N,EAAAA,aAAkB,KACb,MAApBmL,GACFyC,EAAoC,GAAnBzC,EACnB,GACC,CAACA,EAAkByC,IAqCtB,OAdA5N,EAAAA,WAAgB,KACd,IAAKkL,GAA6B1lB,EAIhC,OAHAsiB,OAAOoC,iBAAiB,QAAS6D,GACjCjG,OAAOoC,iBAAiB,OAAQ4D,GAEzB,KACLhG,OAAOqC,oBAAoB,QAAS4D,GACpCjG,OAAOqC,oBAAoB,OAAQ2D,EAAY,CAInC,GACf,CAAC5C,EAA2B6C,EAAcvoB,KAG3CtI,EAAAA,EAAAA,KAAC8wB,EAAAA,EAAiB,CAACC,YAtBIhqB,IACnByB,GAEFA,EAAQzB,EAAO,YAAa1L,EAC9B,EAkBgD0E,UAE9CC,EAAAA,EAAAA,KAAA,OACEyB,IAAKA,KACD+uB,EACJruB,WAAWytB,EAAAA,EAAAA,GAAKZ,EAA2B7sB,GAC3C6uB,aA1C6DjqB,IAC7DypB,EAAcQ,cAChBR,EAAcQ,aAAajqB,GAE7B6pB,GAAa,EAuCTK,aApC6DlqB,IAC7DypB,EAAcS,cAChBT,EAAcS,aAAalqB,GAE7B8pB,GAAc,EAgCqB9wB,SAE9BA,KAEe,I,0BC7HxB,MAAMqB,GAAYC,EAAAA,EAAAA,GAAW,CAC3B2Y,KAAM,CACJzY,QAAS,OACT2vB,SAAU,OACVC,SAAU,EACV,CAACnuB,GAAmB,CAClBmuB,SAAU,UACVpY,SAAU,YAUhB,IALwBvX,EAAAA,EAAAA,aAAiD,CAAA5F,EAA0B6F,KAAS,IAAlC,UAAEU,KAAcxC,GAAO/D,EAC/F,MAAMgG,EAAUR,IAChB,OAAOpB,EAAAA,EAAAA,KAAA,OAAKyB,IAAKA,EAAKU,WAAWytB,EAAAA,EAAAA,GAAKhuB,EAAQoY,KAAM7X,MAAgBxC,GAAS,ICVzEyB,IAAYC,EAAAA,EAAAA,IAAYf,IACrB,CACL0Z,KAAM,CACJnZ,gBAAiBP,EAAM2E,QAAQ5E,WAAW0H,OAC1C9G,SAAU,WACV4K,WAAY,KACZulB,cAAe,YACfpwB,MAAO,OACPgE,WAAY,SACZtE,QAAS,YACTE,aAAc,MACd2f,UACE,kHACF3U,SAAU,WACVylB,aAAc,OACdxrB,SAAU,SACVtE,QAAS,QACT,YAAa,CACX8vB,aAAc,SAGlBC,YAAa,CACXxrB,MAAO,QAETyQ,QAAS,CACPhV,QAAS,OACTyD,WAAY,cAEdusB,eAAgB,CACd/qB,SAAU,QACVN,OAAQ,IACRkQ,UAAW,aACXnQ,WAAY,KAEdurB,aAAc,CACZC,YAAa,OACbtf,UAAW,OAEbuf,OAAQ,CACNnwB,QAAS,OACTyD,WAAY,SACZ2sB,WAAY,OACZF,YAAa,OACblhB,YAAa,QAEfqhB,MAAO,CACLhmB,SAAU,WACV+V,MAAO,OACPpU,IAAK,OACL5M,OAAQ,UACRK,MAAO,WAET6wB,KAAM,CACJjmB,SAAU,WACV9F,MAAO,OACPjB,OAAQ,MACRirB,OAAQ,EACRtiB,KAAM,EACN5M,aAAc,cACd,SAAU,CACRkF,MAAO,MACPlF,aAAc,aAEhB,YAAa,CACXC,gBAAiBP,EAAMQ,OAAOgxB,aAEhC,UAAW,CACTjxB,gBAAiBP,EAAMQ,OAAOixB,aAMhCC,IAAwBxwB,EAAAA,EAAAA,aAA+C,CAAC7B,EAAOsyB,KACnF,MAAM,GAAE52B,EAAE,QAAEkb,EAASmb,OAAQQ,EAAyB,YAAEhE,EAAW,QAAEjd,EAAO,gBAAE8c,EAAe,MAAE7Y,GAAUvV,GAElGwyB,EAAMC,IAAWrpB,EAAAA,EAAAA,WAAS,GAE3BnH,EAAUR,KAEVixB,EAAOnE,EAAYjd,GAEzB,IAAIygB,EAASQ,EACS,oBAAXR,IACTA,EAASA,EAAOr2B,IAGlB,MAAMi3B,EAAwB,YAAZrhB,EAMlB,OAJA5M,EAAAA,EAAAA,YAAU,KACR+tB,GAAQ,EAAK,GACZ,CAACA,KAGFxyB,EAAAA,EAAAA,MAAC2yB,GAAe,CACd9wB,IAAKwwB,EACLO,KAAK,QACLtd,MAAOA,EACP/S,WAAWytB,EAAAA,EAAAA,GAAKZ,EAA6BptB,EAAQoY,KAAM/I,GAASlR,SAAA,EAEpEH,EAAAA,EAAAA,MAAA,OAAKvE,GAAG,qBAAqB8G,UAAS,GAAAiD,OAAKxD,EAAQ2U,QAAO,KAAAnR,OAAI6L,GAAUlR,SAAA,CACpEguB,EAAsE,MAApD/tB,EAAAA,EAAAA,KAAA,OAAKmC,UAAWP,EAAQ0vB,YAAYvxB,SAAEsyB,KAC1DryB,EAAAA,EAAAA,KAAA,OAAKmC,UAAWP,EAAQ2vB,eAAexxB,SAAEwW,IAEvC+b,EAAyF,IAA7EtyB,EAAAA,EAAAA,KAACN,EAAAA,EAAe,CAACyC,UAAS,GAAAiD,OAAKxD,EAAQgwB,OAASxxB,QAAST,EAAM6I,aAG9E7I,EAAM6xB,cAAexxB,EAAAA,EAAAA,KAAA,OAAKmC,UAAS,GAAAiD,OAAKxD,EAAQ4vB,cAAezxB,SAAEJ,EAAM6xB,eAAsB,KAE7FE,IAAU1xB,EAAAA,EAAAA,KAAA,OAAKmC,UAAWP,EAAQ8vB,OAAO3xB,SAAE2xB,IAE1CY,EAKE,MAJFtyB,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CACFC,WAAWytB,EAAAA,EAAAA,GAAKhuB,EAAQiwB,KAAM5gB,EAASkhB,EAAO,OAAS,IACvD1xB,GAAI,CAAEggB,WAAW,SAADrb,OAAWzF,EAAMsuB,iBAAgB,kBAGrC,IAItB,IAAewE,EAAAA,EAAAA,MAAKT,ICnHd5wB,IAAYC,EAAAA,EAAAA,GAAW,CAC3BqxB,YAAa,CACX9mB,SAAU,WACVgE,UAAW,gBACXrC,IAAK,EACLoU,MAAO,EACPmO,OAAQ,EACRtiB,KAAM,EACNuL,SAAU,QACV7S,OAAQ,WAYG,SAASysB,GAAahzB,GACnC,MAAMizB,EAASxxB,KAETqkB,GAAUhS,EAAAA,EAAAA,WACTof,EAAWC,IAAgB/pB,EAAAA,EAAAA,WAAS,GAErC+L,EAAmDkb,EAAsB,CAACrwB,EAAMozB,MAAMvqB,QAAS7I,EAAM6I,UAQrGwqB,GAAqBprB,EAAAA,EAAAA,cAAY,KACrC6d,EAAQ1R,QAAUqT,YAAW,KAC3B0L,GAAcG,IAASA,GAAI,GAC1B,IAAI,GACN,KAEH5uB,EAAAA,EAAAA,YACE,IAAM,KACAohB,EAAQ1R,SACV4Y,aAAalH,EAAQ1R,QACvB,GAEF,IAGF,MAAM,MAAEgf,EAAOnxB,QAASsxB,EAAU,UAAEC,EAAYnB,IAA0BryB,EAEpEiC,GAAUuB,EAAAA,EAAAA,UAAQ,INpCW,WAEU,IAD7CvB,EAAyCikB,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAG,CAAC,EAE7C,MAAMuN,EAAoD,CACxDC,eAAe,EACfC,gCAAgC,EAChCC,mCAAmC,EACnCC,+BAA+B,EAC/BC,kCAAkC,EAClCC,8BAA8B,EAC9BC,iCAAiC,GAEnC,OAAQn4B,OAAOD,KAAKqG,GACjBiI,QAAQnN,IAAS02B,EAAiB12B,KAClCwzB,QAAO,CAAC0D,EAAKl3B,KAAG,IAAWk3B,EAAK,CAACl3B,GAAMkF,EAAQlF,MAAS,CAAC,EAC9D,CMqBgCm3B,CAAsBX,IAAa,CAACA,KAE5D,KACJ5qB,EAAI,cACJkoB,EAAa,oBACbtD,EAAmB,gBACnB4G,EAAe,mBACf7K,EAAkB,0BAClB+E,EACAtsB,QAASqyB,KACNC,GACDjB,EAEExF,EAAkB,CACtBzC,WNhE8B/V,EMgEDif,EAAWjf,aN/DV,WAA5BA,EAAaC,WACR8V,EAAU/V,EAAaC,YAEzB8V,EAAU/V,EAAavE,WM6D5BiV,QAASwD,KACN6K,GNlE2B/e,MMqEhC,IAAIrT,EAAUqyB,EACS,oBAAZryB,IACTA,EAAUA,EAAQsyB,EAAW34B,GAAI24B,EAAWzd,UAG9C,MAAM0d,EACJ,CAAC,UAAW,YAAa,SAAU,YACnC/D,QACA,CAACC,EAAK+D,KAAM,IACP/D,EACH,CAAC+D,GAASlE,EAAsB,CAACrwB,EAAMozB,MAAMmB,GAASv0B,EAAMu0B,QAE9D,CAAC,GAGH,OACEl0B,EAAAA,EAAAA,KAACyf,EAAQ,CAACpkB,GAAI24B,EAAW34B,GAAIopB,eAAa,EAACgB,QAAS,IAAK9F,GAAIkT,EAAWjM,SAAUqN,EAAUrN,SAAS7mB,UACnGC,EAAAA,EAAAA,KAACm0B,EAAQ,CACP7rB,KAAMA,EACNjN,GAAI24B,EAAW34B,GACf2yB,0BAA2BA,EAC3BC,iBAAkB+F,EAAW/F,iBAC7B9rB,WAAWytB,EAAAA,EAAAA,GAAKgD,EAAOF,YAAa9wB,EAAQoY,KAAMpY,EAAQmuB,EAAuBiE,EAAWjf,gBAC5Fyb,cAAeA,EACfhoB,QAASsM,EAAY/U,UAErBC,EAAAA,EAAAA,KAACktB,EAAmB,IACdK,EACJlyB,GAAI24B,EAAW34B,GACfskB,GAAIrX,EACJoe,OAAQuN,EAAUvN,OAClBE,SAAUoM,EACV3M,QAAS4N,EAAU5N,QAGnBI,UAAWuJ,EAAsB,CAACiE,EAAUxN,UA7EO+I,KACrD7vB,EAAMozB,MAAMqB,cACdtf,EAAY,KAAM,aAAcnV,EAAMozB,MAAM13B,GAC9C,IA0E6E0E,SAGtE2B,IAAW1B,EAAAA,EAAAA,KAACmzB,EAAS,IAAKJ,EAAOvqB,QAASA,IAAMsM,EAAY,KAAM,aAAcnV,EAAMozB,MAAM13B,WAKvG,CC1HA,MAAMg5B,GACE,CAAE1Q,QAAS,GAAI2Q,MAAO,GADxBD,GAEM,CAAE1Q,QAAS,EAAG2Q,MAAO,GAG3BC,GAAe,IAAAnvB,OAAO4pB,GAItB5tB,IAAYC,EAAAA,EAAAA,GAAW,CAC3B2Y,KAAM,CACJwa,UAAW,aACXjzB,QAAS,OACTyX,UAAW,OACXpN,SAAU,QACVgK,OAAQ,KACR/Q,OAAQ,OACRiB,MAAO,OACP2a,WAAYsJ,EAAiB,CAAC,MAAO,QAAS,SAAU,OAAQ,aAAc,CAAEf,SAAU,IAAKE,OAAQ,SAGvG2G,cAAe,OACf,CAAC0E,IAAkB,CACjB7zB,QAAQ,GAAD0E,OAAKivB,GAAiB1Q,QAAO,UACpClD,WAAY,0BAEdja,SAAS,eAADpB,OAAwC,EAAvBivB,GAAa1Q,QAAW,OACjD,CAAC3gB,GAAqB,CACpB8C,MAAO,OACPU,SAAS,eAADpB,OAAiBqvB,GAAiB,SAG9CC,UAAW,CACT,CAACH,IAAkB,CACjB7zB,QAAQ,GAAD0E,OAAKivB,GAAiBC,MAAK,YAGtC/mB,IAAK,CACHA,IAAK,OACL2I,cAAe,UAEjB4Z,OAAQ,CACNA,OAAO,GAAD1qB,OAAKivB,GAAa1Q,QAAU0Q,GAAiB1Q,QAAO,MAC1DzN,cAAe,kBAEjB1I,KAAM,CACJA,KAAK,GAADpI,OAAKivB,GAAa1Q,QAAO,MAC7B,CAAC3gB,GAAmB,CAClBgC,WAAY,cAEd,CAAChC,GAAqB,CACpBwK,KAAK,GAADpI,OA5CY,GA4CM,QAG1Buc,MAAO,CACLA,MAAM,GAADvc,OAAKivB,GAAa1Q,QAAO,MAC9B,CAAC3gB,GAAmB,CAClBgC,WAAY,YAEd,CAAChC,GAAqB,CACpB2e,MAAM,GAADvc,OArDW,GAqDO,QAG3BuvB,OAAQ,CACNnnB,KAAM,MACNoC,UAAW,mBACX,CAAC5M,GAAmB,CAClBgC,WAAY,aAYZ4vB,GAAuDj1B,IAC3D,MAAM,QAAEiC,EAAU,CAAC,EAAC,aAAEmT,EAAY,MAAEuf,EAAK,SAAEv0B,GAAaJ,EAClDizB,EAASxxB,KAETyzB,GAAoBjF,EAAAA,EAAAA,GACxBZ,EACA4D,EAAO7d,EAAavE,UACpBoiB,EAAO7d,EAAaC,YACpB,CAAE,CAAC4d,EAAO8B,WAAYJ,GACtB1B,EAAO5Y,KACPpY,EAAQyxB,cACRzxB,EAAQ,wBAADwD,OAAyB+d,EAAmBpO,MAGrD,OAAO/U,EAAAA,EAAAA,KAAA,OAAKmC,UAAW0yB,EAAkB90B,SAAEA,GAAe,EAG5D,IAAe0yB,EAAAA,EAAAA,MAAKmC,IC3EpB,MAAME,WAAyB3B,EAAAA,UAC7BlP,WAAAA,CAAYtkB,GAA+B,IAADo1B,EACxC7Q,MAAMvkB,GAAMo1B,EAAA3Q,KAed,KAIA4Q,gBAAkB,SAACze,GACjB,MAAM0e,EAD4EpP,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAG,CAAC,GAGhF,IAAEnpB,EAAG,iBAAEw4B,KAAqBlL,GAAYiL,EAExCE,EAAkB9R,EAAU3mB,GAC5BrB,EAAK85B,EAAmBz4B,GAAsB,IAAI04B,MAAOC,UAAYxL,KAAKyL,SAE1EC,EAASnH,EAAMpE,EAAS+K,EAAKp1B,OAC7BozB,EAAuB,CAC3B13B,QACG2uB,EACHzT,UACAjO,MAAM,EACN2mB,SAAS,EACTmF,cAAc,EACdtG,QAASyH,EAAO,WAChB7D,OAAQ6D,EAAO,UACf7zB,QAAS6zB,EAAO,WAChBtkB,QAASskB,EAAO,WAChBxgB,aAAcwgB,EAAO,gBACrBvH,0BAA2BuH,EAAO,6BAClCtH,iBAAkBsH,EAAO,oBACzBxH,gBAAiBwH,EAAO,mBACxBrI,oBAAqBqI,EAAO,uBAC5BtM,mBAAoBsM,EAAO,sBAC3BzB,gBAAiByB,EAAO,mBAAmB,GAC3CrH,YAAaqH,EAAO,eAAe,GACnCrgB,MAAOqgB,EAAO,SAAS,GACvB/E,cAAe+E,EAAO,iBAAiB,GACvCpzB,WAAWytB,EAAAA,EAAAA,GAAKmF,EAAKp1B,MAAMwC,UAAW6nB,EAAQ7nB,YAyBhD,OAtBI4wB,EAAMjF,UACRiF,EAAM9E,sBAAmBjqB,GAG3B+wB,EAAK/O,UAAUrL,IACb,QAA0B3W,IAArBkxB,GAAkCH,EAAKp1B,MAAMu1B,kBAAqBA,EAAkB,CACvF,MAAMM,EAAmB7vB,GACvBwvB,EAAkBxvB,EAAKtK,KAAOA,EAAKsK,EAAK4Q,UAAYA,EAEhDkf,EAAU9a,EAAM+a,MAAMC,UAAUH,IAAoB,EACpDI,EAASjb,EAAMkb,OAAOF,UAAUH,IAAoB,EAC1D,GAAIC,GAAWG,EACb,OAAOjb,CAEX,CAEA,OAAOoa,EAAKe,mBAAmB,IAC1Bnb,EACH+a,MAAO,IAAI/a,EAAM+a,MAAO3C,IACxB,IAGG13B,CACT,EAEA,KAIAy6B,mBAA+Bnb,IAC7B,MAAM,OAAEkb,GAAWlb,EACnB,OAAIkb,EAAO1qB,QAAUiZ,KAAKyJ,SACjBzJ,KAAK2R,oBAAoBpb,GAE3ByJ,KAAK4R,aAAarb,EAAM,EAGjC,KAGAqb,aAAyBrb,IACvB,MAAM,MAAE+a,EAAK,OAAEG,GAAWlb,EAC1B,OAAI+a,EAAMvqB,OAAS,EACV,IACFwP,EACHkb,OAAQ,IAAIA,EAAQH,EAAM,IAC1BA,MAAOA,EAAMxS,MAAM,EAAGwS,EAAMvqB,SAGzBwP,CAAK,EAGd,KAQAob,oBAAgCpb,IAC9B,GAAIA,EAAMkb,OAAOhH,MAAMlpB,IAAUA,EAAK2C,MAAQ3C,EAAKyuB,eACjD,OAAOzZ,EAGT,IAAIsb,GAAS,EACTC,GAAS,EAEWvb,EAAMkb,OAAO3F,QAAO,CAACC,EAAKpc,IAAYoc,GAAOpc,EAAQzL,MAAQyL,EAAQ+Z,QAAU,EAAI,IAAI,KAEvF1J,KAAKyJ,WAE3BqI,GAAS,GAGX,MAAML,EAASlb,EAAMkb,OAAOp7B,KAAKkL,GAC1BswB,GAAYtwB,EAAKmoB,UAAWoI,EAwB1B,IAAKvwB,IAvBVswB,GAAS,EAEJtwB,EAAKspB,SAONtpB,EAAK6C,SACP7C,EAAK6C,QAAQ,KAAM,WAAY7C,EAAKtK,IAGlC+oB,KAAKzkB,MAAM6I,SACb4b,KAAKzkB,MAAM6I,QAAQ,KAAM,WAAY7C,EAAKtK,IAGrC,IACFsK,EACH2C,MAAM,IAhBC,IACF3C,EACHyuB,cAAc,MAqBtB,MAAO,IAAKzZ,EAAOkb,SAAQ,EAG7B,KAGAM,mBAA0D,CAAClQ,EAAME,EAAazpB,KAC5E,IAAK2mB,EAAU3mB,GACb,MAAM,IAAIxB,MAAM,0DAGlBkpB,KAAK4B,UAASpqB,IAAA,IAAC,OAAEi6B,GAAQj6B,EAAA,MAAM,CAC7Bi6B,OAAQA,EAAOp7B,KAAKkL,GAAUA,EAAKtK,KAAOqB,EAAM,IAAKiJ,EAAMspB,SAAS,GAAS,IAAKtpB,KACnF,GAAE,EAGL,KAGAywB,iBAAwD,CAACrvB,EAAOsvB,EAAQ35B,KAOtE,GAJI0nB,KAAKzkB,MAAM6I,SACb4b,KAAKzkB,MAAM6I,QAAQzB,EAAOsvB,EAAQ35B,GAGrB,cAAX25B,EACF,OAGF,MAAMC,OAAyBtyB,IAARtH,EAEvB0nB,KAAK4B,UAAS/d,IAAA,IAAC,OAAE4tB,EAAM,MAAEH,GAAOztB,EAAA,MAAM,CACpC4tB,OAAQA,EAAOp7B,KAAKkL,GACb2wB,GAAkB3wB,EAAKtK,KAAOqB,EAI5BiJ,EAAKspB,QAAU,IAAKtpB,EAAM2C,MAAM,GAAU,IAAK3C,EAAMyuB,cAAc,GAHjE,IAAKzuB,KAKhB+vB,MAAOA,EAAM7rB,QAAQlE,GAASA,EAAKtK,KAAOqB,IAC3C,GAAE,EAGL,KAGA65B,cAAmD75B,IAEjD,MAAM85B,EAAapS,KAAKzJ,MAAMkb,OAAO7rB,MAAMrE,GAASA,EAAKtK,KAAOqB,IAC5D2mB,EAAU3mB,IAAQ85B,GAAcA,EAAWhuB,SAC7CguB,EAAWhuB,QAAQ,KAAM,aAAc9L,GAGzC0nB,KAAKgS,iBAAiB,KAAM,aAAc15B,EAAI,EAGhD,KAOA+5B,kBAAwD,CAACxQ,EAAMvpB,KAC7D,IAAK2mB,EAAU3mB,GACb,MAAM,IAAIxB,MAAM,yDAGlBkpB,KAAK4B,UAAUrL,IACb,MAAM+b,EAAWtS,KAAK4R,aAAa,IAC9Brb,EACHkb,OAAQlb,EAAMkb,OAAOhsB,QAAQlE,GAASA,EAAKtK,KAAOqB,MAGpD,OAA8B,IAA1Bg6B,EAAShB,MAAMvqB,OACVurB,EAGFtS,KAAK2R,oBAAoBW,EAAS,GACzC,EA1OFtS,KAAKzJ,MAAQ,CACXkb,OAAQ,GACRH,MAAO,GACPiB,aAAc,CACZ3B,gBAAiB5Q,KAAK4Q,gBACtBuB,cAAenS,KAAKmS,eAG1B,CAEA,YAAI1I,GACF,OAAOzJ,KAAKzkB,MAAMkuB,UAAYD,EAASC,QACzC,CAiOAxG,MAAAA,GACE,MAAM,aAAEsP,GAAiBvS,KAAKzJ,OACxB,QAAEic,EAAO,SAAE72B,EAAQ,MAAEu0B,GAAQ,EAAK,WAAEuC,EAAa,CAAC,EAAC,QAAEj1B,GAAYwiB,KAAKzkB,MAEtEm3B,EAAQ1S,KAAKzJ,MAAMkb,OAAO3F,QAAyB,CAACC,EAAKpc,KAC7D,MAAMgjB,EAAW5T,EAAmBpP,EAAQgB,cACtCiiB,EAAqB7G,EAAI4G,IAAa,GAC5C,MAAO,IACF5G,EACH,CAAC4G,GAAW,IAAIC,EAAoBjjB,GACrC,GACA,CAAC,GAEEkjB,EAAYz7B,OAAOD,KAAKu7B,GAAOr8B,KAAKy8B,IACxC,MAAMrB,EAASiB,EAAMI,IACdC,GAAgBtB,EAEvB,OACE71B,EAAAA,EAAAA,KAAC40B,GAAiB,CAAcN,MAAOA,EAAOvf,aAAcoiB,EAAapiB,aAAcnT,QAASA,EAAQ7B,SACrG81B,EAAOp7B,KAAKs4B,IACX/yB,EAAAA,EAAAA,KAAC2yB,GAAY,CAEXI,MAAOA,EACPnxB,QAASA,EACTuxB,UAAW0D,EAAW9D,EAAM9hB,SAC5BzI,QAAS4b,KAAKgS,iBACd/P,QAASjC,KAAKzkB,MAAM0mB,QACpBK,OAAQtC,KAAKzkB,MAAM+mB,OACnBE,SAAUoJ,EAAsB,CAAC5L,KAAKqS,kBAAmBrS,KAAKzkB,MAAMinB,WACpEH,UAAWuJ,EAAsB,CAAC5L,KAAK+R,mBAAoB/R,KAAKzkB,MAAM8mB,aARjEsM,EAAM13B,OAHO67B,EAcJ,IAIxB,OACEt3B,EAAAA,EAAAA,MAACw3B,EAAgBC,SAAQ,CAAC9sB,MAAOosB,EAAa52B,SAAA,CAC3CA,EACA62B,GAAUU,EAAAA,EAAAA,cAAaL,EAAWL,GAAWK,IAGpD,EAGF,YCtTA,QAAsCM,EAAAA,EAAAA,YAAWH,E,4ICCjD,MAAMI,EAAe,CAAC,GAAI,GAAI,KAgB9B,EAAe57B,IAOS,IAPR,MACd67B,EAAK,aACLC,EAAY,iBACZC,EAAgB,gBAChBC,EAAkB,GAAE,QACpBC,EAAO,aACPC,GAAe,GACCl8B,EAChB,MAAOm8B,EAASC,GAAclV,EAAAA,SAAe,IACtCmV,EAAUC,GAAepV,EAAAA,SAAe8U,IACxCtkB,EAAUC,GAAeuP,EAAAA,SAAe,MAMzChO,EAAcA,KAClBvB,EAAY,KAAK,EAyBnB,OACEvT,EAAAA,EAAAA,KAACqF,EAAAA,GAAI,CAACC,WAAS,EAACK,MAAI,EAACC,GAAI,GAAInF,GAAI,CAAEmM,GAAI,QAAS7M,UAC9CH,EAAAA,EAAAA,MAACyF,EAAAA,GAAI,CAACC,WAAS,EAACe,eAAgBwxB,EAAU,WAAa,GAAG93B,SAAA,EACxDC,EAAAA,EAAAA,KAACqF,EAAAA,GAAI,CAACM,MAAI,EAACC,IAAE,EAACN,WAAS,EAAAvF,UACrBC,EAAAA,EAAAA,KAACqF,EAAAA,GAAI,CAACM,MAAI,EAAA5F,UACRC,EAAAA,EAAAA,KAACm4B,EAAAA,GAAQ,CAACC,MAAO,EAAG13B,QAAQ,OAAMX,UAChCC,EAAAA,EAAAA,KAACq4B,EAAAA,EAAmB,CAClBZ,MAAO5N,KAAKyO,KAAKC,OAAOd,GAAS,IAAMQ,GACvCO,KAAMT,EACN/2B,MAAM,UACNy3B,MAAM,UACNlwB,SAjCWmwB,CAACz9B,EAAQ88B,KAChCC,EAAWD,GACPL,GACFA,EAAa,CACXK,UACAE,YAEJ,UA+BKH,IACCl4B,EAAAA,EAAAA,MAACyF,EAAAA,GAAI,CAACM,MAAI,EAAA5F,SAAA,EACRC,EAAAA,EAAAA,KAACm4B,EAAAA,GAAQ,CAACC,MAAO,EAAGh4B,QAhDT2G,IACnBwM,EAAYxM,EAAMoN,cAAc,EA+CkBzT,QAAQ,OAAMX,UACtDH,EAAAA,EAAAA,MAACyF,EAAAA,GAAI,CAACC,WAAS,EAACN,WAAW,SAAQjF,SAAA,CAChCk4B,EAAS,UAAMj4B,EAAAA,EAAAA,KAAC24B,EAAAA,EAAqB,CAACl4B,GAAI,CAAEQ,SAAU,gBAG3DjB,EAAAA,EAAAA,KAAC6U,EAAAA,EAAI,CACHxZ,GAAG,wBACHiY,SAAUA,EACVslB,aAAW,EACXtwB,KAAMsM,QAAQtB,GACd9K,QAASsM,EACT7D,QAAQ,eACR8D,aAAc,CACZvE,SAAU,SACVwE,WAAY,SAEd6jB,gBAAiB,CACfroB,SAAU,MACVwE,WAAY,SACZjV,SAEDy3B,EAAa/8B,KAAKw9B,IACjBr4B,EAAAA,EAAAA,MAACuV,EAAAA,EAAQ,CAAgB/U,QAASA,IApDxB63B,KACtBnjB,IACAojB,EAAYD,GACZD,EAAW,GACPL,GACFA,EAAiB,CACfI,QAAS,EACTE,YAEJ,EA2CoDa,CAAeb,GAAUl4B,SAAA,CAC9Dk4B,EAAS,UADGA,cAU9B,C,iGC9GM,MAAMc,EAAe,CAC1B,CAACC,EAAAA,GAAeC,OAAQ,QACxB,CAACD,EAAAA,GAAeE,YAAa,QAC7B,CAACF,EAAAA,GAAeG,WAAY,QAC5B,CAACH,EAAAA,GAAeI,KAAM,MACtB,CAACJ,EAAAA,GAAe9xB,KAAM,KACtB,CAAC8xB,EAAAA,GAAeK,OAAQ,SACxB,CAACL,EAAAA,GAAeM,OAAQ,UAGbC,EAAkB,CAC7B,CAACP,EAAAA,GAAeC,OAAQ,UACxB,CAACD,EAAAA,GAAeE,YAAa,UAC7B,CAACF,EAAAA,GAAeG,WAAY,UAC5B,CAACH,EAAAA,GAAeI,KAAM,UACtB,CAACJ,EAAAA,GAAe9xB,KAAM,cACtB,CAAC8xB,EAAAA,GAAeK,OAAQ,UACxB,CAACL,EAAAA,GAAeM,OAAQ,WAWX,SAASnzB,EAAkBvK,GAMb,IANc,SACzCM,EAAQ,OACR2I,EAAM,SACN5D,EAAW,OAAM,aACjBL,EAAe,MAAK,MACpBkF,GACwBlK,EACxB,OACEoE,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAAAnC,UACFC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CACFzB,GAAI,CACFqF,QACAiT,SAAU,OACVxX,QAAS,OACT8E,eAAgB,SAChBrB,WAAY,SACZH,OAAc,OAANA,QAAM,IAANA,EAAAA,EAAU,cAClBnE,QAAS,MACTG,gBAAiB3E,EAAWq9B,EAAgBr9B,GAAY,GACxD0E,gBACAb,UAEFC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CACTC,GAAI,CACFQ,WACAD,MAAO,eACPiF,WAAY,IACZqJ,UAAW,UAEXvP,SAED7D,EAAW68B,EAAa78B,GAAY,UAK/C,C,qKC9DA,IAAIs9B,EAAiE,CAAC,EAEtE,IACE,MAAMvvB,EAAewvB,EAAQ,OACvBC,EAAoBD,EAAQ,OAElCD,EAAkB,IACbvvB,KACAyvB,EAEP,CAAE,MAAOrpB,GACPspB,QAAQtpB,MAAMA,EAChB,CAEA,MAAMupB,EAAyC,CAAC,EAChDp+B,OAAOD,KAAKi+B,GAAiB1vB,SAAS+vB,IACpCD,EAAYC,GAAYL,EAAgBK,GAAUC,EAAAA,GAAQ,IAGrD,MAAMC,EAAiBC,GACrBJ,EAAYI,GAGRC,EAAiB,CAC5BC,0BAA2B,0BAC3BC,cAAe,QACfC,sBAAuB,sBACvBC,KAAMP,EAAAA,KAAYQ,EAAAA,GAAQxsB,GAAK,OAAS,SACxCysB,KAAM,aACNC,sBAAuB,0BACvBC,gBAAiB,oBACjBC,cAAe,qBACfC,YAAa,cACbC,SAAU,kBACVC,aAAc,eACdC,oBAAqB,uBACrBC,gBAAiB,kBACjBC,WAAY,aACZC,KAAM,OACNC,UAAW,OACXC,WAAY,oBACZC,cAAe,QACfC,UAAW,YAEXC,cAAe,cACfC,WAAY,WACZC,UAAW,UACXC,gBAAiB,kBAEjBC,aAAc,eAEdC,mBAAoB,qBACpBC,eAAgB,iBAChBC,uBAAwB,yBACxBC,WAAY,aAEZC,UAAW,aACXC,YAAa,gBAGFC,EAAiBlC,EAAcE,EAAeM,MAC9C2B,EAAiBnC,EAAcE,EAAeI,MAG9CG,GAFgCT,EAAcE,EAAeG,uBACzCL,EAAcE,EAAeQ,iBACzBV,EAAcE,EAAeO,wBAGrD2B,GAFiBpC,EAAcE,EAAeiB,WAC7BnB,EAAcE,EAAeyB,cACpBQ,GAC1BE,EAAsBrC,EAAcE,EAAeuB,WACnDa,EAAuBtC,EAAcE,EAAe0B,oBACpDW,EAAmBvC,EAAcE,EAAe2B,gBAGhDW,GAFcxC,EAAcE,EAAe8B,WAChChC,EAAcE,EAAe+B,aACpBjC,EAAcE,EAAewB,kBAE9De,EAAAA,GAAMC,oBAAoB7C,GAC1Bx6B,EAAAA,GAAMs9B,QAAQC,EAAAA,IAEP,MAAMC,EAAmB,IAAIphC,OAAOyhB,OAAO2c,G,2ECnF3C,MAAMiD,EAAW,8BAEXC,EAAkB,8BAElBC,EAAkB,iDAElBC,EAAe,W,+GCH5B,MAAMC,EAAY,CAChB,CAACC,EAAAA,GAAQC,SAAU,8BACnB,CAACD,EAAAA,GAAQE,SAAU,+BAGRC,EAAqBJ,EAAUK,EAAAA,IAI/BC,IAFyBC,EAAAA,EAAAA,IAAmBP,EAAUK,EAAAA,KAExBlmB,GAAiB,mDAAAhS,OACPgS,IAExCqmB,EAAmBC,EAAAA,GAAkBJ,EAAAA,IAIrCK,GAFsBC,EAAAA,GAAqBN,EAAAA,IAEnBO,EAAAA,GAAcP,EAAAA,KAE5C,IAAKQ,EAAe,SAAfA,GAAe,OAAfA,EAAe,0BAAfA,EAAe,gBAAfA,EAAe,sBAAfA,EAAe,kBAAfA,CAAe,K,4ICjB3B,MAAMC,EAAY,CAChB,CAACb,EAAAA,GAAQC,SAAU,+BACnB,CAACD,EAAAA,GAAQE,SAAU,wCAGfY,EAAY,CAChB,CAACd,EAAAA,GAAQC,SAAU,8BACnB,CAACD,EAAAA,GAAQE,SAAU,+BAGfH,EAAY,CAChB,CAACC,EAAAA,GAAQC,SAAU,8BACnB,CAACD,EAAAA,GAAQE,SAAU,+BAGfa,EAAY,CAChB,CAACf,EAAAA,GAAQC,SAAS,kDAClB,CAACD,EAAAA,GAAQE,SAAS,WAAFh4B,OAAc63B,EAAUC,EAAAA,GAAQE,SAAQ,2BAGpDc,EAAW,CACf,CAAChB,EAAAA,GAAQC,SAAS,mDAAF/3B,OAAsD44B,EAAUV,EAAAA,KAChF,CAACJ,EAAAA,GAAQE,SAAS,mDAAFh4B,OAAsD44B,EAAUV,EAAAA,MAG5Ea,EAAqB,CACzB,CAACjB,EAAAA,GAAQC,SAAS,6CAClB,CAACD,EAAAA,GAAQE,SAAS,8CAKPgB,GAF4Bd,EAAAA,GAEVL,EAAUK,EAAAA,KAM5Be,GAJ4Bf,EAAAA,GAEFA,EAAAA,GAEFa,EAAmBb,EAAAA,KAI3CG,GAFqBH,EAAAA,GAEFI,EAAAA,GAAkBJ,EAAAA,KAErCgB,EAAsBV,EAAAA,GAAqBN,EAAAA,IAE3CK,EAAwBE,EAAAA,GAAcP,EAAAA,IAMtCiB,GAJsB,GAAAn5B,OAAMy4B,EAAAA,GAAcP,EAAAA,IAAM,KAAAl4B,OAAIi5B,GAI9B,MAEtB/2B,EAAQg2B,EAAAA,KAAUJ,EAAAA,GAAQC,QAAUqB,EAAAA,GAAaC,EAAAA,E,yEC1DvD,MAIMC,EAA6B,6B,2jBCJnC,IAAKC,EAAY,SAAZA,GAAY,OAAZA,EAAY,YAAZA,EAAY,QAAZA,CAAY,M,qCCGjB,MAMMC,EAAoB,KACpBC,EAAyB,QAEzBC,EAAoB,KAGpBC,EAAuB,iBAKvBC,EAAmB,CAC9B,QACA,QACA,QACA,MACA,KACA,KACA,MACA,OACA,MACA,OACA,MACA,OACA,OACA,OAGWC,EAAgC96B,IACvCiL,EAAAA,EAAAA,GAAWjL,IACXo0B,OAAOp0B,GA5BgC,IA6BpCo0B,OAAOp0B,GAOHyM,EAJe,CAC1B,CAAC0pB,EAAAA,GAAQxsB,IAAK,4BAGqBgsB,EAAAA,IAExBoF,EAAU,0BAEVC,EAAe,sBAMfC,EAAqB,YAKrBC,IAHY,GAAK,GAAK,GAAGj7B,WACJm0B,OAAO+G,UAEN,IACtBC,EAAuB,EACvBC,EAAwB,E,0DChE9B,MAAMC,EAAoB,CAE/B,QACA,QACA,QACA,QACA,QACA,QACA,QACA,SAKWC,EAAkC,O,gNCZxC,IAAKC,EAAK,SAALA,GAAK,OAALA,EAAK,cAALA,EAAK,cAALA,CAAK,MAKLC,EAAK,SAALA,GAAK,OAALA,EAAK,wBAALA,EAAK,wBAALA,CAAK,MAKV,MAAMC,EAAc,IAEpB,IAAKC,EAAS,SAATA,GAAS,OAATA,EAAAA,EAAS,eAATA,EAAAA,EAAS,qBAATA,EAAAA,EAAS,iBAATA,CAAS,MAOlBA,EAAUC,IACVD,EAAUE,OACVF,EAAUG,KAGN,IAAKC,EAAU,SAAVA,GAAU,OAAVA,EAAU,sCAAVA,EAAU,sBAAVA,EAAU,wBAAVA,EAAU,wBAAVA,CAAU,MAOf,MAAMC,EAAwB,IAExBC,EAAwB,IAExBC,EAAwB,IAExBC,EAAsD,CACjE,CAAEjlC,GAAI,OAAQkP,MAAO,KACrB,CAAElP,GAAI,OAAQkP,MAAO,KACrB,CAAElP,GAAI,OAAQkP,MAAO,MAGVg2B,EAAyB,IAIzBC,EAA+B3jB,IAAY,IAAA4jB,EAAA,OACE,QAAxDA,EAAAH,EAAmBz2B,QAAQlE,GAASA,EAAKtK,KAAOwhB,IAAM,UAAE,IAAA4jB,OAAA,EAAxDA,EAA0Dl2B,QAAS,GAAG,EAE3Dm2B,EAAqBC,GAAwB,IAAIC,EAAAA,EAAQD,EAAU,KAGnEE,EAAgC,GAEhCC,EAA2B,EAE3BC,EAA6B,CACxC,CAACjB,EAAUC,KAAM,CACfiB,IAAK,KACLC,IAAK,OAEP,CAACnB,EAAUE,QAAS,CAClBgB,IAAK,GACLC,IAAK,GAEP,CAACnB,EAAUG,MAAO,CAChBe,IAAK,GACLC,IAAK,IAIIC,EAA4B,eAC5BC,EAAiC,mB,+GCxEvC,MAAMC,EAAwB,CACnC,8BACA,8BACA,8BACAC,EAAAA,GAAAA,GACAjF,EAAAA,IAIWkF,EAAmB,CAC9B,8BACA,8BACA,8BACA,8BACA,8BACAD,EAAAA,GAAAA,GACAjF,EAAAA,IASWmF,EAAmC,CAC9C,CACE/vB,MAAO,UACPnW,GAAI,UACJkP,MAAO,WAET,CACEiH,MAAO,SACPnW,GAAI,SACJkP,MAAO,UAET,CACEiH,MAAO,UACPnW,GAAI,UACJkP,MAAO,WAET,CACEiH,MAAO,UACPnW,GAAI,UACJkP,MAAO,WAET,CACEiH,MAAO,WACPnW,GAAI,WACJkP,MAAO,YAET,CACEiH,MAAO,YACPnW,GAAI,YACJkP,MAAO,aAET,CACEiH,MAAO,SACPnW,GAAI,SACJkP,MAAO,UAET,CACEiH,MAAO,QACPnW,GAAI,QACJkP,MAAO,SAET,CACEiH,MAAO,WACPnW,GAAI,WACJkP,MAAO,YAGT,CACEiH,MAAO,QACPnW,GAAI,QACJkP,MAAO,UAIEi3B,EAAc,IAEdC,EAAsB,G,4ECpF5B,IAAKnH,EAAO,SAAPA,GAAO,OAAPA,EAAO,QAAPA,EAAO,cAAPA,CAAO,MAKZ,MAAMoH,EAAU,CACrB,CAACpH,EAAQqH,OAAO,wBAChB,CAACrH,EAAQxsB,IAAK,mBAGHgsB,EAAU8H,KAEVC,EAAgB/H,IAAYQ,EAAQxsB,GAGpC6uB,GAF+BrC,EAAQqH,MAEhCD,EAAQ5H,IAEEQ,EAAQxsB,GAELwsB,EAAQqH,K,mXCflC,IAAKG,EAAU,SAAVA,GAAU,OAAVA,EAAU,cAAVA,EAAU,gBAAVA,CAAU,MAKf,MAAMC,EAAwBF,EAAAA,GAAO36B,EAAAA,GAAIlL,QAAUgmC,EAAAA,GAAYhmC,QACzDimC,GAAyBJ,EAAAA,GAAO16B,EAAAA,GAAInL,SAEpCkmC,EAAmB,OAEnBC,EAA8B,8BAE9BC,EAAiC,UACjCC,EAA+B,UAE/BC,EAA8B,UAC9BC,EAA+B,UAC/BC,EAA8B,S,yJCbpC,MAEMC,EAAsC,CACjDr8B,aAAc4yB,EAAAA,EAAeI,IAC7BsJ,SAAU,GACV99B,KAAM,cACNT,SAAU,EACVO,OAAQ,OACR7H,WAAYC,EAAAA,EAAU+b,SAAuB,OAAdqjB,EAAAA,SAAc,IAAdA,EAAAA,GAAAA,EAAAA,GAAkB,aAGtCyG,EAAoC,IAC5CF,EACHj9B,KAAK,kBAADJ,OAAoBq9B,EAAqB5lC,WAAWuH,WAAU,SAClEw+B,SAAUC,OAAO,GACjBhmC,WAAY4lC,EAAqB5lC,WAAWuH,WAC5C0+B,YAAaD,OAAO,IAGTb,EAAc,IAAIlmC,EAAAA,EAAM,CACnCE,QAAS2mC,EAAuB9lC,WAChCsH,SAAUw+B,EAAuBx+B,SACjCO,OAAQi+B,EAAuBj+B,OAC/BE,KAAM+9B,EAAuB/9B,KAC7BY,KAAMm9B,EAAuBn9B,KAC7BtJ,SAAU88B,EAAAA,EAAeI,IACzBwJ,SAAUrK,OAAOoK,EAAuBC,YAG7BG,EAAM,IAAIjnC,EAAAA,EAAM,CAC3BE,QA9B2B,8BA+B3BmI,SAAU,GACVO,OAAQ,MACRE,KAAM,SACNY,KAAM,GACNtJ,SAAU88B,EAAAA,EAAeG,UACzByJ,SAAU,IAuBCI,GApBO,IAAIlnC,EAAAA,EAAM,CAC5BE,QAAS,8BACTmI,SAAU,EACVO,OAAQ,OACRE,KAAM,OACNY,KAAM,GACNtJ,SAAU88B,EAAAA,EAAeK,MACzBuJ,SAAU,IAGQ,IAAI9mC,EAAAA,EAAM,CAC5BE,QAAS,8BACTmI,SAAU,EACVO,OAAQ,OACRE,KAAM,OACNY,KAAM,GACNtJ,SAAU88B,EAAAA,EAAeK,MACzBuJ,SAAU,IAGO,IAAI9mC,EAAAA,EAAM,CAC3BE,QAAS,8BACTmI,SAAU,EACVO,OAAQ,MACRE,KAAM,cACNY,KAAM,GACNtJ,SAAU88B,EAAAA,EAAeK,MACzBuJ,SAAU,KAGCK,EAAM,IAAInnC,EAAAA,EAAM,CAC3BE,QAAS,8BACTmI,SAAU,EACVO,OAAQ,MACRE,KAAM,UACNY,KAAM,GACNtJ,SAAU88B,EAAAA,EAAeK,MACzBuJ,SAAU,MAGCM,EAAU,IAAIpnC,EAAAA,EAAM,CAC/BE,QAAS,8BACTmI,SAAU,EACVO,OAAQ,OACRE,KAAM,UACNY,KAAM,GACNtJ,SAAU88B,EAAAA,EAAeK,MACzBuJ,SAAU,MAGO,IAAI9mC,EAAAA,EAAM,CAC3BE,QAAS,8BACTmI,SAAU,EACVO,OAAQ,MACRE,KAAM,OACNY,KAAM,GACNtJ,SAAU88B,EAAAA,EAAeK,MACzBuJ,SAAU,MAGO,IAAI9mC,EAAAA,EAAM,CAC3BE,QAAS,8BACTmI,SAAU,EACVO,OAAQ,MACRE,KAAM,SACNY,KAAM,GACNtJ,SAAU88B,EAAAA,EAAeK,MACzBuJ,SAAU,MAGS,IAAI9mC,EAAAA,EAAM,CAC7BE,QAAS,8BACTmI,SAAU,EACVO,OAAQ,QACRE,KAAM,QACNY,KAAM,GACNtJ,SAAU88B,EAAAA,EAAeK,MACzBuJ,SAAU,K,yGCxHL,MAAMO,EAA4B,CACvCj8B,EAAAA,GAAIlL,QACJgmC,EAAAA,GAAYhmC,QACZmL,EAAAA,GAAInL,QACJoL,EAAAA,GAAOpL,QACPqL,EAAAA,GAAMrL,QACNsL,EAAAA,GAAMtL,SAGKonC,EAAmB,CAACl8B,EAAAA,GAAIlL,QAASgmC,EAAAA,GAAYhmC,SAE7C0N,EAA2B,CAACxC,EAAAA,GAAKC,EAAAA,GAAKC,EAAAA,GAAQC,EAAAA,GAAOC,EAAAA,G,iJCb3D,MAAMg2B,EAAiBJ,EAAAA,GAAQC,QAIzBkG,EAAmB,EAEnBC,EAAmB,CAACpG,EAAAA,GAAQC,QAASD,EAAAA,GAAQE,SAE7CmG,EAAkD,CAC7D,EAAG,mBACH,EAAG,UACH,EAAG,UACH,GAAI,QACJ,GAAI,SACJ,IAAK,UACL,MAAO,SACP,MAAO,YACP,MAAO,OACP,SAAU,WAGC1F,EAAgB,CAC3B,CAACX,EAAAA,GAAQC,SAAS,+BAClB,CAACD,EAAAA,GAAQE,SAAS,wCAGPoG,EAAsBxnC,GAC3B,GAANoJ,OAAUy4B,EAAcP,GAAM,KAAAl4B,OAAIpJ,GAGvBwhC,EAAsBiG,GAC3B,WAANr+B,OAAkBq+B,EAAQ,0BAGfC,EAAkBh+B,GACvB,mDAANN,OAA0DM,GAG/Cg4B,EAAoB,CAC/B,CAACR,EAAAA,GAAQC,SAAS,0BAClB,CAACD,EAAAA,GAAQE,SAAS,mCAGPQ,EAAuB,CAClC,CAACV,EAAAA,GAAQC,SAAS,6BAClB,CAACD,EAAAA,GAAQE,SAAS,qC,2XC7Cb,MAAMuG,EAAS,CACpBC,UAAW,UACXC,KAAM,UACNC,SAAU,UACVC,OAAQ,UACRC,QAAS,WAGJ,SAASC,EAAetpB,GAC7B,OAAOgpB,EAAY,OAALhpB,QAAK,IAALA,EAAAA,EAAS,UACzB,C,+CCIO,SAASupB,EAAQtoC,GAA6E,IAA5E,YAAEuoC,EAAW,aAAEC,EAAY,cAAEC,EAAa,OAAEC,EAAM,MAAEC,GAAqB3oC,EAChG,MAAMgH,GAAYC,EAAAA,EAAAA,OACXU,EAASyL,IAAcjG,EAAAA,EAAAA,WAAkB,IACzCy7B,EAAOC,IAAY17B,EAAAA,EAAAA,UAAsD,MAuChF,OArCA1E,EAAAA,EAAAA,YAAU,MACR6K,iBACE,KAAKw1B,EAAAA,EAAAA,GAAoBJ,EAAQC,GAAQ,OAEzC,MAAM5pB,GAAQgqB,EAAAA,EAAAA,GAA2BR,GAGzC,GAFAM,EAAS,MAELN,IAAgBS,EAAAA,EAAYC,KAAM,CAAC,IAADC,EACpC,IAAKliC,EAAW,OAEhBoM,GAAW,GAEX,MAAM+1B,QAAoBC,EAAAA,EAAAA,IAAkBpiC,EAAUwB,WAAYkgC,EAAQC,EAAOH,EAAcC,GACzFG,EAA4B,QAAvBM,EAAc,OAAXC,QAAW,IAAXA,OAAW,EAAXA,EAAarjC,eAAO,IAAAojC,EAAAA,EAAI,GAEhCG,SACEnqC,QAAQoqC,IACZV,EAAM/pC,KAAIyU,eACKi2B,EAAAA,EAAAA,IAA6BC,EAAKC,YAAYjhC,gBAG/DkhC,OAEFb,EAASQ,EACX,KAAO,CACLj2B,GAAW,GACX,MAAM5L,QAAemiC,EAAAA,EAAAA,IAAc,CAAE5qB,QAAO2pB,SAAQC,QAAOH,eAAcC,kBACnEG,EAAc,OAANphC,QAAM,IAANA,OAAM,EAANA,EAAQ1B,QACtB+iC,EAASD,EACX,CAEAx1B,GAAW,EACb,CAEAw2B,EAAM,GACL,CAACrB,EAAavhC,EAAW0hC,EAAQC,EAAOH,EAAcC,KAElDlhC,EAAAA,EAAAA,UAAQ,MAASI,UAASH,OAAQohC,KAAU,CAACjhC,EAASihC,GAC/D,CCrDO,SAASiB,EACd/uB,EACAgvB,EACAC,GAEA,MAAOpiC,EAASyL,IAAcjG,EAAAA,EAAAA,WAAS,IAChC68B,EAAMC,IAAW98B,EAAAA,EAAAA,UACtB,MAEInG,GAAYC,EAAAA,EAAAA,MAuBlB,OArBAwB,EAAAA,EAAAA,YAAU,KACK6K,WACX,GAAIwH,GAAU9T,GAAa8iC,EAAgB,CACzC,MAAMtiC,QAAe0iC,EAAAA,EAAAA,IACnBJ,EACA5oC,EAAAA,EAAU+b,SAASnC,GACnBqvB,EAAAA,GAAWC,cAAcpjC,GAAWqjC,gBAGtCJ,EAAQ,CACNpoC,QAAS2F,EAAOwiC,KAChBlvB,SACAgvB,mBAEF12B,GAAW,EACb,GAGFw2B,EAAM,GACL,CAAC9uB,EAAQ9T,EAAW+iC,EAAQD,KAExBviC,EAAAA,EAAAA,UAAQ,KACN,CACLI,UACAH,OAAQwiC,KAET,CAACriC,EAASqiC,GACf,CC1BO12B,eAAeg3B,IAKpB,OAAOC,EAAAA,EAAAA,KAJMj3B,MAAOo1B,EAAgBC,UACrB6B,EAAAA,EAAAA,SAAgBpiC,EAAWsgC,EAAQC,IAGhB,IACpC,CAwEO,SAAS8B,EACd3vB,EACA9T,EACA0jC,GAEA,MAAMvf,GAAWnf,EAAAA,EAAAA,cAAYsH,UAC3B,GAAKwH,GAAW9T,EAChB,aAAa2jC,EAAAA,EAAAA,IAAwB7vB,EAAQ9T,EAAU,GACtD,CAAC8T,EAAQ9T,IAEZ,OAAO4jC,EAAAA,EAAAA,GAAkDzf,EAAUuf,EACrE,CAEO,SAASG,EAA2B/vB,GACzC,MAAOgwB,EAAaC,IAAkB59B,EAAAA,EAAAA,UAAiB,GAEjD69B,GAASh/B,EAAAA,EAAAA,cAAY,KACzB++B,GAAgB77B,GAAcA,EAAY,GAAE,GAC3C,IAEGic,GAAWnf,EAAAA,EAAAA,cAAYsH,UAC3B,GAAKwH,EACL,aAAamwB,EAAAA,EAAAA,IAAoBnwB,EAAO,GACvC,CAACA,IAIJ,MAAO,EAFUowB,EAAAA,EAAAA,GAAyC/f,EAAU2f,GAElDE,EACpB,C,kaC3GO,SAASG,IACd,MAAMnkC,GAAYC,EAAAA,EAAAA,OACXmkC,IAAgBC,EAAAA,EAAAA,OACjB,gBAAEC,IAAoBC,EAAAA,EAAAA,MAE5B,OAAOv/B,EAAAA,EAAAA,cACLsH,UAA6E,IAAtE,MAAEzH,EAAK,OAAE2/B,EAAM,OAAE1wB,EAAM,QAAEsT,EAAO,SAAE9tB,GAA8BN,EACrE,IAAKgH,EAAW,OAAO,EAEvB,MAAMykC,QAAuBC,EAAAA,EAAAA,GAAU,CACrCzqC,WAAY4K,EAAMzL,QAClBurC,MAAO3kC,EAAUwB,WACjBojC,QAAS9wB,IAGL+wB,GAAyB5E,OAAOuE,GAAUvE,OAAOqE,IAAkB9iC,WAEzE,IAAKijC,GAAkBA,IAAmBxE,OAAO,IAAMA,OAAOuE,GAAUC,EAAgB,CACtF,MAAM,OAAEziB,EAAM,QAAErO,SAAkBmxB,EAAAA,EAAAA,GAAQ,CACxC7qC,WAAY4K,EAAMzL,QAClBwrC,QAAS9wB,EACTnM,MAAOk9B,EACPE,QAAS/kC,EACT1G,aAGF,MAAe,QAAX0oB,IACFoiB,EAAa,qBAAD5hC,OAAsBqC,EAAM/C,OAAM,MAAAU,OAAKmR,GAAWyT,IACvD,EAIX,CAEA,OAAO,CAAI,GAEb,CAAC0d,EAAAA,EAAS9kC,EAAWskC,GAEzB,C,+CC5CO,SAASU,EAA0Bnb,GACxC,MAAMob,GAAgBC,EAAAA,EAAAA,MAEhBC,ECGD,SAA8Btb,GACnC,MAAM,SAAEub,IAAa7kC,EAAAA,EAAAA,UAAQ,KAC3B,MAAM6kC,EAAqB,GAc3B,OAZAvb,EAAK3iB,SAAQlO,IAAmB,IAAlB,SAAE8mC,GAAU9mC,EACpB8mC,IACGsF,EAASzjC,SAASm+B,EAASnmC,OAAOP,UACrCgsC,EAAS59B,KAAKs4B,EAASnmC,OAAOP,SAG3BgsC,EAASzjC,SAASm+B,EAASlmC,OAAOR,UACrCgsC,EAAS59B,KAAKs4B,EAASlmC,OAAOR,SAElC,IAGK,CAAEgsC,WAAU,GAClB,CAAC3vB,KAAKC,UAAUmU,KAEbwb,GAASC,EAAAA,EAAAA,GAAUF,GAEnBG,GAAWhlC,EAAAA,EAAAA,UAAQ,IAChBspB,EAAKhyB,KAAIwN,IAAmB,IAAlB,SAAEy6B,GAAUz6B,EAC3B,IAAKy6B,EAAU,MAAO,MAAC1+B,OAAWA,OAAWA,GAE7C,MAAM+X,EAASksB,EAAOj+B,MAAM/O,IAAO,IAADmtC,EAChC,OAAW,QAAJA,EAAAntC,EAAE,UAAE,IAAAmtC,OAAA,EAAJA,EAAMpsC,WAAY0mC,EAASnmC,OAAOP,OAAO,IAG5CigB,EAASgsB,EAAOj+B,MAAM/O,IAAO,IAADotC,EAChC,OAAW,QAAJA,EAAAptC,EAAE,UAAE,IAAAotC,OAAA,EAAJA,EAAMrsC,WAAY0mC,EAASlmC,OAAOR,OAAO,IAGlD,MAAO,CAAC+f,EAASA,EAAO,QAAK/X,EAAWiY,EAASA,EAAO,QAAKjY,EAAWu0B,OAAOmK,EAAStmC,KAAK,KAE9F,CAACic,KAAKC,UAAUmU,GAAOwb,IAEpBzD,GAAQN,EAAAA,EAAAA,IAASiE,GAEvB,OAAOhlC,EAAAA,EAAAA,UAAQ,IACKspB,EAAKhyB,KAAI,CAAC6tC,EAAK19B,KAAW,IAAD29B,EACzC,MAAMtD,EAAQqD,EAAIE,cACZpD,EAAmB,QAAfmD,EAAG/D,EAAM55B,UAAM,IAAA29B,OAAA,EAAZA,EAAe,GAE5B,GAAKtD,EAEL,OAAOA,EAAMxqC,KAAKqpB,IAChB,GAAKshB,EAEL,OAAO,IAAIqD,EAAAA,EAAS,CAClBrD,OACAsD,UAAW5kB,EAAK4kB,UAAUtkC,WAC1BukC,UAAWpQ,OAAOzU,EAAK6kB,WACvBC,UAAWrQ,OAAOzU,EAAK8kB,YACvB,GACF,KAIH,CAACvwB,KAAKC,UAAUmU,GAAO+X,GAC5B,CD/DoBqE,CAAqBpc,GAEvC,OAAOtpB,EAAAA,EAAAA,UAAQ,KAAO,IAAD2lC,EACnB,IAAKjB,IAAkBE,EAAW,OAClC,GAA6B,IAAzBF,EAAc18B,QAAqC,IAArB48B,EAAU58B,OAAc,OAE1D,IAAI49B,EAkBJ,OAhBAhB,EAAUzC,OAAOx7B,SAAS8B,IACxB,GAAIA,EAAU,CAAC,IAADo9B,EAAAC,EACZ,MAAMC,EAAet9B,EAASu9B,QAAQC,UAChCC,EAAez9B,EAAS09B,QAAQF,UAEhCG,EAAyF,QAA9EP,EAAGnB,EAAc79B,MAAM8Z,GAASA,EAAK9nB,UAAY4P,EAASw5B,KAAK7oC,OAAOP,iBAAQ,IAAAgtC,OAAA,EAA3EA,EAA6EQ,SAC3FC,EAAyF,QAA9ER,EAAGpB,EAAc79B,MAAM8Z,GAASA,EAAK9nB,UAAY4P,EAASw5B,KAAK5oC,OAAOR,iBAAQ,IAAAitC,OAAA,EAA3EA,EAA6EO,SAEpC,IAADE,EAA5D,QAAoB1lC,IAAhBulC,QAA6CvlC,IAAhBylC,EAC/BV,GAAwB,QAAXW,EAACX,SAAU,IAAAW,EAAAA,EAAI,IAAIhjC,EAAAA,EAAU,IACvCijC,KAAK,IAAIjjC,EAAAA,EAAUwiC,GAAcviC,aAAa4iC,IAC9CI,KAAK,IAAIjjC,EAAAA,EAAU2iC,GAAc1iC,aAAa8iC,GAErD,KAGe,QAAjBX,EAAOC,SAAU,IAAAD,OAAA,EAAVA,EAAY1kC,UAAU,GAC5B,CAACiU,KAAKC,UAAUyvB,GAAYF,GACjC,CAOO,SAAS+B,EAAwBhuC,GAA0D,IAAzD,SAAE8mC,EAAQ,cAAE8F,GAA0C5sC,EAC7F,OAAOgsC,EAA0B,CAAC,CAAElF,WAAU8F,kBAChD,C,0BEhCO,SAASqB,IACd,MAAOhuB,EAASiuB,IAAYhoC,EAAAA,EAAAA,OACrByB,EAASyL,IAAcjG,EAAAA,EAAAA,WAAS,GAEjCge,GAAWnf,EAAAA,EAAAA,cAAYsH,eACdpU,QAAQoqC,IACnBzY,EAAKhyB,KAAIyU,UAA0D,IAAnD,MAAEzH,EAAK,KAAE7C,EAAI,KAAEiY,EAAI,KAAE1hB,EAAMisC,OAAQ2C,GAAUnuC,EAC3D,MAAMwrC,EAASvE,OAAOkH,GAChBC,EAAgBnH,OAAOp7B,EAAMm7B,UAInC,GAFEwE,IAAWvE,OAAO,KAAgB,SAAThmB,EAAkBuqB,EAAS4C,EAAgBnH,OAAO,GAAKuE,EAAS4C,GAErE,OAEtBh7B,GAAW,GAEX,MAAMi7B,EAAapuB,EAAQ,iBAADzW,QACPlB,EAAAA,EAAAA,GAAiBkjC,EAAQ3/B,EAAMtD,UAAU+lC,WAAU,KAAA9kC,OAAIqC,EAAM/C,QAC9EylC,EAAAA,GAAa5mC,SAGf,GAAa,SAATsZ,GAAqB1hB,EAAM,CAC7B,MAAMiI,QAAegnC,EAAAA,EAAAA,IAAgBjvC,EAAKoB,OAAO6H,WAAYjJ,EAAKqB,OAAO4H,WAAYjJ,EAAKiB,KAE1F,GAAIgH,EAAOwhB,SAAW+Z,EAAAA,EAAa0L,GAAI,CACrC,MAAMjnC,QAAeknC,EAAAA,EAAAA,IAAmBlD,EAAQ4C,GAC5C5mC,EAAOwhB,SAAW+Z,EAAAA,EAAa0L,GACjCxuB,EAAQ,YAADzW,OAAaR,EAAI,iBAAiBulC,EAAAA,GAAavmB,SAEtD/H,EAAQ,sBAADzW,OAAuBR,EAAI,MAAAQ,OAAKhC,EAAOmT,SAAW4zB,EAAAA,GAAa95B,MAE1E,KAAO,CAAC,IAADk6B,EACL1uB,EAAQ,uBAADzW,OAAsC,QAAtCmlC,EAAwBnnC,EAAOmT,eAAO,IAAAg0B,EAAAA,EAAI,IAAMJ,EAAAA,GAAa95B,MACtE,CACF,KAAO,CACL,MAAMjN,QAAeknC,EAAAA,EAAAA,IAAmBlD,EAAQ4C,GAE5C5mC,EAAOwhB,SAAW+Z,EAAAA,EAAa0L,GACjCxuB,EAAQ,YAADzW,OAAaR,EAAI,iBAAiBulC,EAAAA,GAAavmB,SAEtD/H,EAAQzY,EAAOmT,QAAUnT,EAAOmT,QAAO,sBAAAnR,OAAyBR,GAAQulC,EAAAA,GAAa95B,MAEzF,CAEAy5B,EAASG,GACTj7B,GAAW,EAAM,MAGpB,IAEH,OAAO7L,EAAAA,EAAAA,UAAQ,MAASI,UAASwjB,cAAa,CAACxjB,EAASwjB,GAC1D,C,eCzDO,SAASyjB,EAAkB5uC,GAAkF,IAA9E,UAAEmsC,EAAS,KAAE0C,EAAI,UAAEC,EAAS,cAAEC,GAAwC/uC,EAC1G,OAAOuH,EAAAA,EAAAA,UAAQ,IACR4kC,EAED0C,IAASG,EAAAA,EAAaC,QAAgB,IAAI9C,GAE1C0C,IAASG,EAAAA,EAAaE,UACnBJ,EAEDlvC,OAAOD,KAAKmvC,GAAWv/B,OAAS48B,EAAU58B,OAAe48B,EAEtD,IAAIA,GAAW0C,MAAK,CAACM,EAAGC,KAC7B,MAAMC,EAAUzvC,OAAOD,KAAKmvC,GAEtBQ,EAAOD,EAAQjhC,MAAMtN,GAAQA,EAAI6H,SAASwmC,EAAE1vC,KAAOqB,EAAI6H,SAASwmC,EAAEngC,MAAMxG,cACxE+mC,EAAOF,EAAQjhC,MAAMtN,GAAQA,EAAI6H,SAASymC,EAAE3vC,KAAOqB,EAAI6H,SAASymC,EAAEpgC,MAAMxG,cAE9E,GAAI8mC,GAAQC,EAAM,CAChB,MAAMC,EAASV,EAAUQ,GACnBG,EAASX,EAAUS,GAEzB,GAAIC,GAAUC,EACZ,OAAOD,EAAOE,cAAcD,IAAW,EAAI,CAE/C,CAEA,OAAO,CAAC,IAnBatD,EAuBrB0C,IAASG,EAAAA,EAAaW,cACnBZ,EACDnvC,OAAOD,KAAKovC,GAAex/B,OAAS48B,EAAU58B,OAAe48B,EAE1D,IAAIA,GAAW0C,MAAK,CAACM,EAAGC,KAC7B,MAAMC,EAAUzvC,OAAOD,KAAKovC,GAEtBO,EAAOD,EAAQjhC,MAAMtN,GAAQA,EAAI6H,SAASwmC,EAAE1vC,KAAOqB,EAAI6H,SAASwmC,EAAEngC,MAAMxG,cACxE+mC,EAAOF,EAAQjhC,MAAMtN,GAAQA,EAAI6H,SAASymC,EAAE3vC,KAAOqB,EAAI6H,SAASymC,EAAEpgC,MAAMxG,cAE9E,GAAI8mC,GAAQC,EAAM,CAChB,MAAMC,EAAST,EAAcO,GACvBG,EAASV,EAAcQ,GAE7B,GAAIC,GAAUC,EACZ,OAAOD,EAAOE,cAAcD,IAAW,EAAI,CAE/C,CAEA,OAAO,CAAC,IAlBiBtD,EAsBtB,GAnDgB,IAoDtB,CAAC2C,EAAWC,EAAeF,EAAM1C,GACtC,C,eCpDO,SAASyD,EAAoB5vC,GAOL,IAPM,MACnC6L,EAAK,kBACLgkC,EAAiB,cACjBC,EAAa,QACbjuC,EAAO,kBACPkuC,EAAiB,UACjBrE,GAC0B1rC,EAC1B,MACEwT,EAAAA,EAAAA,GAAW3H,KACX2H,EAAAA,EAAAA,GAAWq8B,KACXr8B,EAAAA,EAAAA,GAAWs8B,KACXt8B,EAAAA,EAAAA,GAAW3R,KACX2R,EAAAA,EAAAA,GAAWu8B,IAUb,OAAK,IAAIjlC,EAAAA,EAAUglC,EAActnC,YAAYwnC,WAAWD,GAGrD,IAAIjlC,EAAAA,EAAUglC,EAActnC,YAC1BulC,KAAK8B,GACLG,WAAW,IAAIllC,EAAAA,EAAUilC,GAAmBhC,KAAKliC,EAAMm7B,WAKzD,IAAIl8B,EAAAA,EAAUglC,EAActnC,YAC1BulC,KAAK8B,GACL9B,KAAKlsC,GACLmuC,WACC,IAAIllC,EAAAA,EAAUilC,GAAmBhC,MAC/BkC,EAAAA,EAAAA,IAAcpkC,KAAW6/B,GAItB,IAAI5gC,EAAAA,EAAmB,OAAT4gC,QAAS,IAATA,OAAS,EAATA,EAAWljC,YAAYwnC,WAAWnuC,GAH9B,EAAjBgK,EAAMm7B,SAINn7B,EAAMm7B,WAOX,eAFE,wBAlBA,eAP0E,qBA4BrF,CCbO,SAASkJ,EAA6BC,EAA4CzF,GACvF,MAAM1jC,GAAYC,EAAAA,EAAAA,OACXU,EAASyL,IAAcjG,EAAAA,EAAAA,WAAS,IAChCg/B,EAAWiE,IAAgBjjC,EAAAA,EAAAA,eAA4C/E,GAiC9E,OA/BAK,EAAAA,EAAAA,YAAU,MACR6K,iBACE,IAAIE,EAAAA,EAAAA,GAAW28B,KAAU38B,EAAAA,EAAAA,GAAWxM,GAAY,OAChD,GAAqB,IAAjBmpC,EAAM5gC,OAER,YADA6gC,EAAa,IAIfh9B,GAAW,GAEX,MAAM+4B,QAAkBjtC,QAAQoqC,IAC9B6G,EACG7b,QACC,CAAC+b,EAAMC,IACED,EAAK7mC,OAAO8mC,EAAK3vB,YAAY9hB,KAAK0xC,GAAe,CAACD,EAAK9G,KAAKhhC,WAAY+nC,EAAYD,OAE7F,IAEDzxC,KAAIyU,UAAuC,IAA/BwH,EAAQy1B,EAAYC,GAAKnkC,EAEpC,MAAO,UADgBokC,EAAAA,EAAAA,IAAgB31B,EAAOtS,WAAY+nC,GACpC9wC,GAAIqb,EAAOtS,WAAYwG,MAAO2tB,OAAO4T,GAAaC,OAAM,KAIpFJ,EAAajE,EAAUl+B,QAAQ+B,KAAeA,KAC9CoD,GAAW,EACb,CAEAw2B,EAAM,GACL,CAACuG,EAAOnpC,EAAW0jC,KAEfnjC,EAAAA,EAAAA,UAAQ,MAASI,UAASH,OAAQ2kC,KAAc,CAACA,EAAWxkC,GACrE,C,eCtFO,SAAS+oC,EAAiB3G,GAC/B,MAAM/iC,GAAYC,EAAAA,EAAAA,MAClB,OAAO0pC,EAAAA,EAAAA,GAAqB,OAAT3pC,QAAS,IAATA,OAAS,EAATA,EAAWwB,WAAYuhC,EAC5C,CCOO,SAAS6G,EAAmB5wC,GAML,IANM,MAClC6L,EAAK,aACLglC,EAAY,kBACZhB,EAAiB,cACjBC,EAAa,OACbtE,GACyBxrC,EACzB,OAAOuH,EAAAA,EAAAA,UAAQ,KACb,IACEiM,EAAAA,EAAAA,GAAW3H,KACX2H,EAAAA,EAAAA,GAAWq9B,KACXr9B,EAAAA,EAAAA,GAAWq8B,KACXr8B,EAAAA,EAAAA,GAAWs8B,KACXt8B,EAAAA,EAAAA,GAAWg4B,GAEX,OAEF,MAAMsF,EAAoBlB,EAAqB,CAC7C/jC,QACAgkC,oBACAhuC,QAASgvC,EACTd,kBAAmBvE,EACnBsE,kBAGF,MAA0B,wBAAtBgB,EAAoD,IAC9B,iBAAtBA,EAA6CjlC,EAAMm7B,SAASx+B,WACtC,0BAAtBsoC,GAAwE,EAAjBjlC,EAAMm7B,UAAcx+B,WAExE,GAAG,GACT,CAACqD,EAAOglC,EAAchB,EAAmBC,GAC9C,C,eCxCO,SAASiB,EAAuB/nC,EAA0BgoC,GAC/D,MAMM7iC,ECRD,SAAqC8iC,GAC1C,MAAMC,GAAmBC,EAAAA,EAAAA,KAEzB,OAAO5pC,EAAAA,EAAAA,UAAQ,IACN2pC,EAAiB9iC,MAAM/O,GAAMA,EAAEgP,aAAa+iC,yBAA2BH,KAC7E,CAACA,EAAcC,GACpB,CDEuBG,EANA9pC,EAAAA,EAAAA,UAAQ,KAC3B,GAAKyB,GAASgoC,EACd,OAAIhoC,EAAKL,SAAS,cAAsBqoC,OAAxC,CACgB,GACf,CAAChoC,EAAMgoC,KAIJlnC,GAAUvC,EAAAA,EAAAA,UAAQ,KACtB,GAAKyB,GAASgoC,EACd,OAAIhoC,EAAKL,SAAS,cACG,OAAZwF,QAAY,IAAZA,OAAY,EAAZA,EAAcE,aAAaC,wBADpC,CAIgB,GACf,CAACtF,EAAMgoC,EAAa7iC,KAEhB,CAAEtC,IAAS2I,EAAAA,EAAAA,IAAS1K,GAE3B,OAAOvC,EAAAA,EAAAA,UAAQ,KACb,IAAKuC,EACH,OAAQd,GACN,IAAK,cACH,MAAO,oCACT,IAAK,aACH,MAAO,wCACT,IAAK,iBACH,MAAO,mCACT,QACE,OAIN,OAAY,OAAL6C,QAAK,IAALA,OAAK,EAALA,EAAOjC,IAAI,GACjB,CAACiC,EAAO/B,EAASd,EAAMgoC,GAC5B,C,eEjCO,SAASM,IACd,MAAOlG,IAAgBC,EAAAA,EAAAA,MAEvB,OAAOr/B,EAAAA,EAAAA,cAAYsH,MAAOzH,EAAciP,EAAgB0wB,EAAgB+F,KACtE,MAAM,OAAEvoB,EAAM,QAAErO,SAAkB62B,EAAAA,EAAAA,IAAS12B,EAAQjP,EAAMzL,QAAS6mC,OAAOp7B,EAAMm7B,UAAWC,OAAOuE,IAEjG,MAAe,QAAXxiB,IACEuoB,EACFA,EAAgB,CAAE52B,YAElBywB,EAAYz7B,EAAAA,GAAAC,EACV,CAAAnQ,GAAA,SAAA4hB,OAAA,CAAAowB,EAAuB5lC,EAAM/C,OAAM6R,QAAKA,OAIrC,EAGE,GACV,GACL,CAUO,SAAS+2B,IACd,MAAOtG,IAAgBC,EAAAA,EAAAA,MAEvB,OAAOr/B,EAAAA,EAAAA,cAAYsH,UAAkG,IAA3F,SAAEq+B,EAAQ,QAAE7nC,EAAO,OAAEgR,EAAM,OAAE0wB,EAAM,gBAAE+F,GAAgDvxC,EAC7G,MAAM,OAAEgpB,EAAM,QAAErO,SAAkB62B,EAAAA,EAAAA,IAAS12B,EAAQhR,EAASm9B,OAAO0K,GAAW1K,OAAOuE,IAErF,MAAe,QAAXxiB,IACEuoB,EACFA,EAAgB,CAAE52B,YAElBywB,EAAYz7B,EAAAA,GAAAC,EAAC,CAAAnQ,GAAA,SAAA4hB,OAAA,CAAA1G,QAAwBA,OAGhC,EAGE,GACV,GACL,CCtBO,SAASi3B,EAAgCC,EAAuBhmC,GACrE,MAAMrL,EAAMqL,EAAMm7B,SAKlB,OAAOiJ,EAAAA,EAAAA,IAAcpkC,GAAS,IAAIf,EAAAA,EAAU+mC,EAAUrpC,YAAYulC,KAAKvtC,GAAKgI,WAAaqpC,EAAUrpC,UACrG,CAWO,SAASspC,EAA+BD,EAAuBhmC,GACpE,MAAMrL,EAAMqL,EAAMm7B,SAElB,OAAOiJ,EAAAA,EAAAA,IAAcpkC,GACjB,IAAIf,EAAAA,EAAU+mC,EAAUrpC,YAAYulC,KAAKvtC,GAAKgI,WAC9C,IAAIsC,EAAAA,EAAU+mC,EAAUrpC,YAAYA,UAC1C,CAEO,SAASupC,EACdC,EACAC,EACAzxC,GAEA,MAAMM,GAAMyG,EAAAA,EAAAA,UAAQ,IACXyqC,GAAoBC,GAAoBzxC,EAAG,GAAAgJ,OAC3CwoC,EAAgB,KAAAxoC,OAAIyoC,EAAgB,KAAAzoC,OAAI0oC,OAAO1xC,SAClD4H,GACH,CAAC4pC,EAAkBC,EAAkBzxC,KAEjCf,EAAI0yC,IAAwBC,EAAAA,EAAAA,IAAyBtxC,GAe5D,OAbA2H,EAAAA,EAAAA,YAAU,KACK6K,WACX,GAAI0+B,GAAoBC,GAAoBzxC,GAAOM,IAAQrB,EAAI,CAC7D,MAAMisB,QAAY2mB,EAAAA,EAAAA,IAAkBL,EAAkBC,EAAkBzxC,GACpEkrB,GACFymB,EAAqB,CAAErxC,MAAKrB,GAAIisB,GAEpC,GAGFke,EAAM,GACL,CAACnqC,EAAIuyC,EAAkBC,EAAkBzxC,EAAKM,KAE1CyG,EAAAA,EAAAA,UAAQ,IAAM9H,GAAI,CAACA,GAC5B,CA4FO,SAAS6yC,IACd,MAAOlH,IAAgBC,EAAAA,EAAAA,MAEvB,OAAOr/B,EAAAA,EAAAA,cAAYsH,UAAqF,IAA9E,MAAEzH,EAAK,OAAE2/B,EAAM,OAAE1wB,EAAM,gBAAEy2B,EAAe,SAAEjxC,GAA8BN,EAChG,MAAMuyC,GAAcC,EAAAA,EAAAA,IAAwBlyC,GAE5C,IAAI0oB,EAAuB+Z,EAAAA,EAAa0P,MACpC93B,EAAU,GAEd,GAAI43B,EAAa,CACf,MAAQvpB,OAAQ0pB,EAAS/3B,QAASg4B,SAAmBC,EAAAA,EAAAA,IACnD93B,EACAjP,EAAMzL,QACN6mC,OAAOuE,GACPvE,OAAOp7B,EAAMm7B,WAEfhe,EAAS0pB,EACT/3B,EAAUg4B,CACZ,KAAO,CACL,MAAQ3pB,OAAQ0pB,EAAS/3B,QAASg4B,SAAmBE,EAAAA,EAAAA,IACnD/3B,EACAjP,EAAMzL,QACN6mC,OAAOuE,GACPvE,OAAOp7B,EAAMm7B,WAEfhe,EAAS0pB,EACT/3B,EAAUg4B,CACZ,CAEA,MAAe,QAAX3pB,IACEuoB,EACFA,EAAgB,CAAE52B,YAElBywB,EAAa,qBAAD5hC,OACWqC,EAAM/C,OAAM,MAAAU,OAAKmR,EAAO,2GAI1C,EAGE,GACV,GACL,CAEO,SAASm4B,IACd,MAAO1H,IAAgBC,EAAAA,EAAAA,MAEjBrkC,GAAYC,EAAAA,EAAAA,MAElB,OAAO+E,EAAAA,EAAAA,cACLsH,MAAOzH,EAAc2/B,EAAgB1wB,EAAgBsT,KAA2B,IAAD2kB,EAC7E,IAAK/rC,EAEH,OADAokC,EAAYz7B,EAAAA,GAAAC,EAAC,CAAAnQ,GAAA,aACN,EAGT,MAAM,OAAEupB,EAAM,QAAErO,SAAkBq4B,EAAAA,EAAAA,IAAc,CAC9C73B,GAAIL,EACJ7Z,WAAY4K,EAAMzL,QAClBorC,OAAQ,IAAI1gC,EAAAA,EAAU0gC,GACtByH,KAA2B,QAAvBF,EAAW,OAAT/rC,QAAS,IAATA,OAAS,EAATA,EAAWwB,kBAAU,IAAAuqC,EAAAA,EAAI,GAC/BG,WAAY,IAAI/I,EAAAA,GAAWC,cAAcpjC,GAAWqjC,gBACpD7pC,IAAKqL,EAAMm7B,SACXz+B,SAAUsD,EAAMtD,WAGlB,MAAe,QAAXygB,IACFoiB,EAAa,sBAAD5hC,OAAuBqC,EAAM/C,OAAM,MAAAU,OAAKmR,GAAWyT,IACxD,EAGE,GAEb,CAACpnB,GAEL,C,oJChPO,SAASmsC,EAAsBnzC,GAAqE,IAApE,MAAE6L,EAAK,WAAEunC,EAAU,cAAEtD,GAA4C9vC,EACtG,OAAOuH,EAAAA,EAAAA,UAAQ,KACb,IAAKsE,IAAS2H,EAAAA,EAAAA,GAAWs8B,KAAkBt8B,EAAAA,EAAAA,GAAW4/B,GAAa,OAInE,OAFyB,IAAItoC,EAAAA,EAAUglC,EAActnC,YAAYulC,KAAKqF,GAEjDC,UAAU,GAAWC,EAAAA,EAAeC,cAAc1nC,EAAO,IAI1EokC,EAAAA,EAAAA,IAAcpkC,GAEZunC,EAAWC,UAAU,GAChBC,EAAAA,EAAeC,cAAc1nC,EAAOikC,EAActnC,YAGpD8qC,EAAAA,EAAeC,cACpB1nC,EACA,IAAIf,EAAAA,EAAUglC,EAActnC,YAAYulC,KAAKqF,GAAYI,MAAM3nC,EAAMm7B,UAAUx+B,YAM5E8qC,EAAAA,EAAeC,cACpB1nC,EACA,IAAIf,EAAAA,EAAUglC,EAActnC,YAAYulC,KAAKqF,EAAW5qC,YAAYA,WACrE,GACA,CAACsnC,EAAesD,GACrB,CASO,SAASK,EAAkBpnC,GAA8E,IAA7E,MAAER,EAAK,QAAEhK,EAAO,OAAEiZ,EAAQ4wB,UAAWgI,GAAqCrnC,EAC3G,MAAMrF,GAAY2sC,EAAAA,EAAAA,MAEZC,GAAsBrsC,EAAAA,EAAAA,UAAQ,KAClC,GAAKsE,KAASgoC,EAAAA,EAAAA,GAAYH,GAC1B,OAAOzD,EAAAA,EAAAA,IAAcpkC,QAASzD,EAAYyD,EAAMzL,OAAO,GACtD,CAACyL,EAAO6nC,KAEHlsC,OAAQkkC,IAAcoI,EAAAA,EAAAA,IAAa,CAAE7yC,WAAY2yC,EAAqBjI,MAAO3kC,EAAW4kC,QAAS9wB,IAEzG,OAAOvT,EAAAA,EAAAA,UAAQ,KACb,IAAIiM,EAAAA,EAAAA,GAAW3R,KAAY2R,EAAAA,EAAAA,GAAW3H,GAAQ,OAE9C,GAAI,IAAIf,EAAAA,EAAUjJ,GAASwxC,UAAU,GAAI,OAAOC,EAAAA,EAAeC,cAAc1nC,EAAO,GAIpF,IAAIokC,EAAAA,EAAAA,IAAcpkC,GAChB,OAAOynC,EAAAA,EAAeC,cAAc1nC,EAAO,IAAIf,EAAAA,EAAUjJ,GAAS2xC,MAAuB,EAAjB3nC,EAAMm7B,UAAcx+B,YAI9F,MAAMurC,EAA2B,OAATrI,QAAS,IAATA,EAAAA,EAAagI,EAIrC,YAAuBtrC,IAAnB2rC,GAKA,IAAIjpC,EAAAA,EAAUipC,EAAevrC,YAAYwnC,WAAWnuC,GAJ/CyxC,EAAAA,EAAeC,cAAc1nC,EAAO,IAAIf,EAAAA,EAAUjJ,GAAS2xC,MAAuB,EAAjB3nC,EAAMm7B,UAAcx+B,YAQvF8qC,EAAAA,EAAeC,cAAc1nC,EAAO,IAAIf,EAAAA,EAAUjJ,GAAS2xC,MAAM3nC,EAAMm7B,UAAUx+B,WAAW,GAClG,CAACkjC,EAAWgI,EAAa7nC,EAAOhK,EAAS+xC,GAC9C,CAWO,SAASI,EAAqBh+B,GAOV,IAPW,OACpC8E,EAAM,WACNs4B,EAAU,cACVtD,EACApE,UAAWgI,EAAW,MACtB7nC,EAAK,QACLhK,GACsBmU,EACtB,MAAMi+B,EAAkBR,EAAmB,CAAE5nC,QAAOhK,UAASiZ,SAAQ4wB,UAAWgI,IAC1EQ,EAAsBf,EAAuB,CAAEtnC,QAAOunC,aAAYtD,kBAExE,OAAOvoC,EAAAA,EAAAA,UAAQ,KACb,MAAIiM,EAAAA,EAAAA,GAAWygC,KAAoBzgC,EAAAA,EAAAA,GAAW0gC,KAAwB1gC,EAAAA,EAAAA,GAAW3H,KAC5EooC,EAAgBE,SAASC,OAAOF,EAAoBC,UAEzD,OAAOF,EAAgBI,IAAIH,EAAoB,GAC9C,CAACD,EAAiBC,GACvB,C,sKC5GO,IAAKI,EAAS,SAATA,GAAS,OAATA,EAAS,kBAATA,EAAS,wBAATA,EAAS,gBAATA,EAAS,kBAATA,EAAS,sBAATA,CAAS,MAkBrB,SAASC,EAAoBC,GAC3B,MAAM,GAANhrC,OAAUgrC,EAAe7zC,OAAM,KAAA6I,OAAIgrC,EAAe5zC,OAAM,KAAA4I,OAAIgrC,EAAeh0C,IAC7E,CAIO,SAAS8nC,EAASiE,GAAyE,IAApDkI,EAAaxqB,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,IAAAA,UAAA,GACzD,MAAO2e,EAAOC,IAAY17B,EAAAA,EAAAA,UAAmD,CAAC,IACvExF,EAASyL,IAAcjG,EAAAA,EAAAA,WAAS,GAEjCunC,GAAsBntC,EAAAA,EAAAA,UAAQ,IAC3BglC,EAAS1tC,KAAImB,IAAwC,IAAtC20C,EAAWC,EAAWC,GAAU70C,EACpD,IAAK20C,IAAcC,IAAcC,EAAW,OAAO,KAEnD,MAAM10B,EAASw0B,EAAUG,QACnBz0B,EAASu0B,EAAUE,QAEzB,IAAK30B,IAAWE,GAAUF,EAAOi0B,OAAO/zB,GAAS,OAAO,KAExD,MAAO1f,EAAQC,GAAUuf,EAAO40B,YAAY10B,GAAU,CAACF,EAAQE,GAAU,CAACA,EAAQF,GAElF,MAAO,CAAExf,OAAQA,EAAOP,QAASQ,OAAQA,EAAOR,QAASI,IAAKq0C,EAAW,KAE1E,CAACtI,IAwEJ,OAtEA9jC,EAAAA,EAAAA,YAAU,MACR6K,iBACE,GAAIohC,GAAuBA,EAAoBnlC,OAAQ,CACrD6D,GAAW,GAEX,MAAM5L,QAAetI,QAAQoqC,IAC3BoL,EAAoB71C,KAAIyU,UACtB,IAAK0hC,EAAS,OAAO,KAErB,MAAMxL,QAAa1mC,EAAAA,EAAAA,IAAQkyC,EAAQr0C,OAAQq0C,EAAQp0C,OAAQo0C,EAAQx0C,KAEnE,IAAKgpC,EAAM,OAAO,KAElB,MAAMyL,QAAqBC,EAAAA,EAAAA,IAAoB1L,EAAKvoC,WAAWuH,YAE/D,MAAO,CACL1H,IAAKyzC,EAAoBS,GACzBv1C,GAAI+pC,EAAKvoC,WAAWuH,WACpBs+B,SAAUmO,EACVE,MAAO,GACPjgC,UAAWu/B,EACZ,KAIC7L,EAA0C,CAAC,EAEjDphC,EAAO0G,SAASqS,IACVA,IACFqoB,EAAMroB,EAAIzf,KAAOyf,EACnB,IAGFsoB,EAASD,GACTx1B,GAAW,IAGW,IAAlBqhC,GACFC,EAAoB71C,KAAIyU,UACtB,IAAK0hC,EAAS,OAEd,MAAMxL,QAAa4L,EAAAA,EAAAA,IAAoBJ,EAAQr0C,OAAQq0C,EAAQp0C,OAAQo0C,EAAQx0C,KAE/E,GAAKgpC,EAKE,CACL,MAAMyL,QAAqBC,EAAAA,EAAAA,IAAoB1L,EAAKvoC,WAAWuH,YAE/DqgC,GAAU35B,IAAS,IACdA,EACH,CAACqlC,EAAoBS,IAAW,CAC9Bl0C,IAAKyzC,EAAoBS,GACzBv1C,GAAI+pC,EAAKvoC,WAAWuH,WACpBs+B,SAAUmO,EACVE,MAAO,GACPjgC,SAAS,MAGf,MAjBE2zB,GAAU35B,IAAS,IACdA,EACH,CAACqlC,EAAoBS,IAAW,QAepC,GAGN,CACF,CAEApL,EAAM,GACL,CAACntB,KAAKC,UAAUg4B,GAAsBD,KAElCltC,EAAAA,EAAAA,UAAQ,IACNmtC,EAAoB71C,KAAI,CAAC21C,EAAgBxlC,KAC9C,IAAKwlC,EAAgB,MAAO,CAACF,EAAUe,QAAS,MAChD,GAAI1tC,EAAS,MAAO,CAAC2sC,EAAUgB,QAAS,MAExC,MAAMx0C,EAAMyzC,EAAoBC,GAC1BhtC,EAA4CohC,EAAM9nC,GAExD,IAAK0G,EAAQ,MAAO,CAAC8sC,EAAUiB,WAAY,MAE3C,MAAM,SAAEzO,EAAQ,GAAErnC,EAAE,QAAEyV,GAAY1N,EAElC,GAAa,OAARs/B,QAAQ,IAARA,IAAAA,EAAUnmC,QAAmB,OAARmmC,QAAQ,IAARA,IAAAA,EAAUlmC,QAAmB,OAARkmC,QAAQ,IAARA,IAAAA,EAAUtmC,MAAQf,EAAI,MAAO,CAAC60C,EAAUiB,WAAY,MAEnG,IACE,MAAM,IAAE/0C,EAAG,aAAEE,EAAY,UAAEosC,EAAS,KAAEvW,GAASuQ,GACxCnmC,EAAQC,GAAU2rC,EAASv9B,GAElC,IAAKrO,IAAWC,EAAQ,MAAO,CAAC0zC,EAAUiB,WAAY,MAGtD,MAAMC,EAAW,IAAIt1C,EAAAA,EAAM,CACzBE,QAASO,EAAOP,QAChBmI,SAAU5H,EAAO4H,SACjBO,OAAQnI,EAAOmI,OACfE,KAAMrI,EAAOqI,KACb1I,SAAUK,EAAOP,UAAY0mC,EAASnmC,OAAOP,QAAU0mC,EAASnmC,OAAOL,SAAWwmC,EAASlmC,OAAON,SAClGsJ,KAAMjJ,EAAOiJ,KACbo9B,SAAUrmC,EAAOqmC,WAGbyO,EAAW,IAAIv1C,EAAAA,EAAM,CACzBE,QAASQ,EAAOR,QAChBmI,SAAU3H,EAAO2H,SACjBO,OAAQlI,EAAOkI,OACfE,KAAMpI,EAAOoI,KACb1I,SAAUM,EAAOR,UAAY0mC,EAASlmC,OAAOR,QAAU0mC,EAASlmC,OAAON,SAAWwmC,EAASnmC,OAAOL,SAClGsJ,KAAMhJ,EAAOgJ,KACbo9B,SAAUpmC,EAAOomC,WAGnB,MAAO,CACL9xB,EAAUo/B,EAAUoB,OAASpB,EAAUqB,UACvC,IAAIC,EAAAA,EACFn2C,EACA+1C,EACAC,EACA9Y,OAAOn8B,IACPq1C,EAAAA,EAAAA,GAAen1C,IACfm1C,EAAAA,EAAAA,GAAe/I,GACfnQ,OAAOpG,IAGb,CAAE,MAAO9hB,GAEP,OADAspB,QAAQtpB,MAAM,mCAAoCA,GAC3C,CAAC6/B,EAAUiB,WAAY,KAChC,MAED,CAAC94B,KAAKC,UAAUksB,GAAQjhC,EAAS4kC,EAAU9vB,KAAKC,UAAUg4B,IAC/D,CAEO,SAASoB,EACdnB,EACAC,EACAC,GAEC,IADDJ,EAAaxqB,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,IAAAA,UAAA,GAOb,OAAOqe,GALiE/gC,EAAAA,EAAAA,UACtE,IAAM,CAAC,CAACotC,EAAWC,EAAWC,KAC9B,CAACF,EAAWC,EAAWC,IAGCJ,GAAe,EAC3C,CAEO,SAASsB,EAAkB1J,GAChC,MAAQ7kC,OAAQwuC,IAAaC,EAAAA,EAAAA,MAE7B,OAAO1uC,EAAAA,EAAAA,UAAQ,KACb,GAAK8kC,GAAW2J,EAEhB,OAAO3J,EAAOxtC,KAAKgN,GACVmqC,EAAS/nC,QAAQu7B,GACfA,EAAK5oC,OAAOR,UAAYyL,GAAS29B,EAAK7oC,OAAOP,UAAYyL,KAElE,GACD,CAACmqC,EAAU3J,GAChB,CAYO,SAAS6J,EAA8B7J,GAC5C,MAAM8J,EAAaJ,EAAkB1J,GAErC,OAAO9kC,EAAAA,EAAAA,UAAQ,KACb,GAAK4uC,GAAeA,EAAW,IAAO9J,EAEtC,OAAInO,EAAAA,KAAYQ,EAAAA,GAAQqH,UAEpBsG,EAAOj+B,MAAMvC,GAAUA,IAAUP,EAAAA,GAAIlL,WAElCisC,EAAO/X,QAAO,CAAC+b,EAAMC,EAAMthC,KAChC,MAAMonC,IAAyBD,EAAWnnC,GAAOZ,MAC9Co7B,GAASA,EAAK7oC,OAAOP,UAAYkL,EAAAA,GAAIlL,SAAWopC,EAAK5oC,OAAOR,UAAYkL,EAAAA,GAAIlL,UAG/E,OAAOiwC,GAAQ+F,CAAoB,IAClC,GAAM,GACR,CAACD,GACN,C,qFC3OO,SAASE,IACd,MAAMt7B,GAAUC,EAAAA,EAAAA,MACVs7B,GAAgBC,EAAAA,EAAAA,MAEtB,OAAOvqC,EAAAA,EAAAA,cAAY,KACjB+O,EAAQvM,KAAK,kBACb8nC,GAAe,GACd,CAACv7B,EAASu7B,GACf,C,oJCRM,SAAUE,EAAgBC,EAAYpC,EAAQqC,EAAiBC,GAMnE,IALAC,EAAAA,EAAAA,GAAUF,EAAU,EAAG,kBAEvBE,EAAAA,EAAAA,GAAUH,EAAMlnC,QAAUmnC,EAAS,cAGd,IAAjBD,EAAMlnC,OAER,OADAknC,EAAMjoC,KAAK6lC,GACJ,KACF,CACL,MAAMwC,EAASJ,EAAMlnC,SAAWmnC,EAEhC,GAAIG,GAAUF,EAAWF,EAAMA,EAAMlnC,OAAS,GAAI8kC,IAAQ,EACxD,OAAOA,EAGT,IAAIyC,EAAK,EACPC,EAAKN,EAAMlnC,OAEb,KAAOunC,EAAKC,GAAI,CACd,MAAMC,EAAOF,EAAKC,IAAQ,EACtBJ,EAAWF,EAAMO,GAAM3C,IAAQ,EACjCyC,EAAKE,EAAM,EAEXD,EAAKC,CAET,CAEA,OADAP,EAAMrnC,OAAO0nC,EAAI,EAAGzC,GACbwC,EAASJ,EAAMQ,MAAS,IACjC,CACF,C,0BCzBM,MAAOC,EAiBX7uB,WAAAA,CAAmBugB,EAAejnB,EAAew1B,GARzC,KAAAC,UAA2C,MASjDR,EAAAA,EAAAA,GAAUhO,EAAMr5B,OAAS,EAAG,SAE5B,MAAM8nC,EAAe11B,EAAMmzB,SAC3B8B,EAAAA,EAAAA,GAAUhO,EAAM,GAAG0O,cAAcD,GAAe,UAEhDT,EAAAA,EAAAA,GAAUhO,EAAMA,EAAMr5B,OAAS,GAAG+nC,cAAcH,EAAOrC,SAAU,UAKjE,MAAMyC,EAAqB,CAACF,GAC5B,IAAK,MAAOG,EAAGhO,KAASZ,EAAM6O,UAAW,CACvC,MAAMC,EAAoBH,EAAUC,IACpCZ,EAAAA,EAAAA,GAAUc,EAAkBtD,OAAO5K,EAAK7oC,SAAW+2C,EAAkBtD,OAAO5K,EAAK5oC,QAAS,QAC1F,MAAM+2C,EAAYD,EAAkBtD,OAAO5K,EAAK7oC,QAAU6oC,EAAK5oC,OAAS4oC,EAAK7oC,OAC7E42C,EAAU/oC,KAAKmpC,EACjB,CAEAnvB,KAAKogB,MAAQA,EACbpgB,KAAK+uB,UAAYA,EACjB/uB,KAAK7G,MAAQA,EACb6G,KAAK2uB,OAAe,OAANA,QAAM,IAANA,EAAAA,EAAWI,EAAUA,EAAUhoC,OAAS,EACxD,CAKA,YAAWqoC,GACT,GAAuB,OAAnBpvB,KAAK4uB,UAAoB,OAAO5uB,KAAK4uB,UAEzC,MAAMS,EAAQrvB,KAAKogB,MAAMthB,MAAM,GAAGgN,QAChC,CAAAt0B,EAAuBwpC,KAAQ,IAA9B,UAAEsO,EAAS,MAAED,GAAO73C,EACnB,OAAO83C,EAAU1D,OAAO5K,EAAK7oC,QACzB,CACEm3C,UAAWtO,EAAK5oC,OAChBi3C,MAAOA,EAAME,SAASvO,EAAKmE,cAE7B,CACEmK,UAAWtO,EAAK7oC,OAChBk3C,MAAOA,EAAME,SAASvO,EAAKqE,aAC5B,GAEPrlB,KAAKogB,MAAM,GAAGjoC,OAAOyzC,OAAO5rB,KAAK7G,MAAMmzB,SACnC,CACEgD,UAAWtvB,KAAKogB,MAAM,GAAGhoC,OACzBi3C,MAAOrvB,KAAKogB,MAAM,GAAG+E,aAEvB,CACEmK,UAAWtvB,KAAKogB,MAAM,GAAGjoC,OACzBk3C,MAAOrvB,KAAKogB,MAAM,GAAGiF,cAE3BgK,MAIF,OAFArvB,KAAK4uB,UAAY,IAAIY,EAAAA,EAAMxvB,KAAK7G,MAAO6G,KAAK2uB,OAAQU,EAAMI,YAAaJ,EAAMK,WAEtE1vB,KAAK4uB,SACd,E,0SCpEI,SAAUe,EACdhJ,EACAC,GAKA,IAFAwH,EAAAA,EAAAA,GAAUzH,EAAEiJ,YAAYjE,SAASC,OAAOhF,EAAEgJ,YAAYjE,UAAW,mBACjEyC,EAAAA,EAAAA,GAAUzH,EAAEkJ,aAAalE,SAASC,OAAOhF,EAAEiJ,aAAalE,UAAW,mBAC/DhF,EAAEkJ,aAAaC,QAAQlJ,EAAEiJ,cAAe,CAC1C,GAAIlJ,EAAEiJ,YAAYE,QAAQlJ,EAAEgJ,aAAc,CAIxC,OAFcjJ,EAAEoJ,MAAMjkB,QAAO,CAACkkB,EAAOC,IAAQD,EAAQC,EAAIC,MAAMnB,UAAUhoC,QAAQ,GACnE6/B,EAAEmJ,MAAMjkB,QAAO,CAACkkB,EAAOC,IAAQD,EAAQC,EAAIC,MAAMnB,UAAUhoC,QAAQ,EAEnF,CAEA,OAAI4/B,EAAEiJ,YAAYO,SAASvJ,EAAEgJ,cACnB,EAED,CAEX,CAEE,OAAIjJ,EAAEkJ,aAAaM,SAASvJ,EAAEiJ,cACrB,GAEC,CAGd,CAqBM,MAAOO,EAQX,SAAWF,GAET,OADA9B,EAAAA,EAAAA,GAAgC,IAAtBpuB,KAAK+vB,MAAMhpC,OAAc,mBAC5BiZ,KAAK+vB,MAAM,GAAGG,KACvB,CA0BA,eAAWN,GACT,GAAI5vB,KAAKqwB,aACP,OAAOrwB,KAAKqwB,aAGd,MAAMC,EAAgBtwB,KAAK+vB,MAAM,GAAGH,YAAYjE,SAC1C4E,EAAuBvwB,KAAK+vB,MAC/B15C,KAAImB,IAAA,IAAC,YAAEo4C,GAAap4C,EAAA,OAAKo4C,CAAW,IACpC9jB,QAAO,CAACkkB,EAAOC,IAAQD,EAAMnE,IAAIoE,IAAMnF,EAAAA,EAAeC,cAAcuF,EAAe,IAGtF,OADAtwB,KAAKqwB,aAAeE,EACbvwB,KAAKqwB,YACd,CAWA,gBAAWR,GACT,GAAI7vB,KAAKwwB,cACP,OAAOxwB,KAAKwwB,cAGd,MAAMC,EAAiBzwB,KAAK+vB,MAAM,GAAGF,aAAalE,SAC5C+E,EAAwB1wB,KAAK+vB,MAChC15C,KAAIwN,IAAA,IAAC,aAAEgsC,GAAchsC,EAAA,OAAKgsC,CAAY,IACtC/jB,QAAO,CAACkkB,EAAOC,IAAQD,EAAMnE,IAAIoE,IAAMnF,EAAAA,EAAeC,cAAc0F,EAAgB,IAGvF,OADAzwB,KAAKwwB,cAAgBE,EACd1wB,KAAKwwB,aACd,CAWA,kBAAWG,GACT,OAAI3wB,KAAK4wB,gBAAwB5wB,KAAK4wB,iBAEtC5wB,KAAK4wB,gBAAkB,IAAIpB,EAAAA,EACzBxvB,KAAK4vB,YAAYjE,SACjB3rB,KAAK6vB,aAAalE,SAClB3rB,KAAK4vB,YAAYiB,SACjB7wB,KAAK6vB,aAAagB,UAGb,IAAIrB,EAAAA,EACTxvB,KAAK4vB,YAAYjE,SACjB3rB,KAAK6vB,aAAalE,SAClB3rB,KAAK4vB,YAAYiB,SACjB7wB,KAAK6vB,aAAagB,UAEtB,CAWA,eAAWC,GACT,GAAI9wB,KAAK+wB,aACP,OAAO/wB,KAAK+wB,aAGd,IAAIC,EAAmBlG,EAAAA,EAAeC,cAAc/qB,KAAK6vB,aAAalE,SAAU,GAChF,IAAK,MAAM,MAAEuE,EAAK,YAAEN,KAAiB5vB,KAAK+vB,MAAO,CAC/C,MAAMX,EAAWc,EAAMd,SACvB4B,EAAmBA,EAAiBnF,IAAIuD,EAAS6B,MAAMrB,GACzD,CAEA,MAAMkB,EAAcE,EAAiBE,SAASlxB,KAAK6vB,cAAcsB,OAAOH,GAGxE,OAFAhxB,KAAK+wB,aAAe,IAAIvU,EAAAA,EAAQsU,EAAYpB,UAAWoB,EAAYrB,aAE5DzvB,KAAK+wB,YACd,CAUO,cAAaK,CAClBlB,EACAmB,G,yCAEA,OAAOjB,EAAMkB,UAAUpB,EAAOmB,EAAUE,EAAAA,GAAUC,YACpD,G,CAUO,eAAaC,CAClBvB,EACAwB,G,yCAEA,OAAOtB,EAAMkB,UAAUpB,EAAOwB,EAAWH,EAAAA,GAAUI,aACrD,G,CAYO,gBAAaL,CAClBpB,EACAlN,EACA4O,G,yCAEA,MAAMC,EAAmC,IAAIhsB,MAAMqqB,EAAMnB,UAAUhoC,QACnE,IAAI6oC,EACAC,EACJ,GAAI+B,IAAcL,EAAAA,GAAUC,YAAa,EACvCpD,EAAAA,EAAAA,GAAUpL,EAAO2I,SAASC,OAAOsE,EAAM/2B,OAAQ,SAC/C04B,EAAQ,GAAK7O,EAAOsJ,QACpB,IAAK,IAAI0C,EAAI,EAAGA,EAAIkB,EAAMnB,UAAUhoC,OAAS,EAAGioC,IAAK,CACnD,MAAMhO,EAAOkP,EAAM9P,MAAM4O,IAClBa,SAAsB7O,EAAK8Q,gBAAgBD,EAAQ7C,IAC1D6C,EAAQ7C,EAAI,GAAKa,CACnB,CACAD,EAAc9E,EAAAA,EAAeiH,qBAAqB7B,EAAM/2B,MAAO6pB,EAAO0M,UAAW1M,EAAOyM,aACxFI,EAAe/E,EAAAA,EAAeiH,qBAC5B7B,EAAMvB,OACNkD,EAAQA,EAAQ9qC,OAAS,GAAG2oC,UAC5BmC,EAAQA,EAAQ9qC,OAAS,GAAG0oC,YAEhC,KAAO,EACLrB,EAAAA,EAAAA,GAAUpL,EAAO2I,SAASC,OAAOsE,EAAMvB,QAAS,UAChDkD,EAAQA,EAAQ9qC,OAAS,GAAKi8B,EAAOsJ,QACrC,IAAK,IAAI0C,EAAIkB,EAAMnB,UAAUhoC,OAAS,EAAGioC,EAAI,EAAGA,IAAK,CACnD,MAAMhO,EAAOkP,EAAM9P,MAAM4O,EAAI,IACtBY,SAAqB5O,EAAKgR,eAAeH,EAAQ7C,IACxD6C,EAAQ7C,EAAI,GAAKY,CACnB,CACAA,EAAc9E,EAAAA,EAAeiH,qBAAqB7B,EAAM/2B,MAAO04B,EAAQ,GAAGnC,UAAWmC,EAAQ,GAAGpC,aAChGI,EAAe/E,EAAAA,EAAeiH,qBAAqB7B,EAAMvB,OAAQ3L,EAAO0M,UAAW1M,EAAOyM,YAC5F,CAEA,OAAO,IAAIW,EAAM,CACf6B,OAAQ,CAAC,CAAErC,cAAaC,eAAcK,UACtC0B,aAEJ,G,CAYO,iBAAaM,CAClBD,EAIAL,G,yCAEA,MAAMO,EAIA,GAEN,IAAK,MAAM,MAAEjC,EAAK,OAAElN,KAAYiP,EAAQ,CACtC,MAAMJ,EAAmC,IAAIhsB,MAAMqqB,EAAMnB,UAAUhoC,QACnE,IAAI6oC,EACAC,EAEJ,GAAI+B,IAAcL,EAAAA,GAAUC,YAAa,EACvCpD,EAAAA,EAAAA,GAAUpL,EAAO2I,SAASC,OAAOsE,EAAM/2B,OAAQ,SAC/Cy2B,EAAc9E,EAAAA,EAAeiH,qBAAqB7B,EAAM/2B,MAAO6pB,EAAO0M,UAAW1M,EAAOyM,aACxFoC,EAAQ,GAAK/G,EAAAA,EAAeiH,qBAAqB7B,EAAM/2B,MAAMmzB,QAAStJ,EAAO0M,UAAW1M,EAAOyM,aAE/F,IAAK,IAAIT,EAAI,EAAGA,EAAIkB,EAAMnB,UAAUhoC,OAAS,EAAGioC,IAAK,CACnD,MAAMhO,EAAOkP,EAAM9P,MAAM4O,IAClBa,SAAsB7O,EAAK8Q,gBAAgBD,EAAQ7C,IAC1D6C,EAAQ7C,EAAI,GAAKa,CACnB,CAEAA,EAAe/E,EAAAA,EAAeiH,qBAC5B7B,EAAMvB,OACNkD,EAAQA,EAAQ9qC,OAAS,GAAG2oC,UAC5BmC,EAAQA,EAAQ9qC,OAAS,GAAG0oC,YAEhC,KAAO,EACLrB,EAAAA,EAAAA,GAAUpL,EAAO2I,SAASC,OAAOsE,EAAMvB,QAAS,UAChDkB,EAAe/E,EAAAA,EAAeiH,qBAAqB7B,EAAMvB,OAAQ3L,EAAO0M,UAAW1M,EAAOyM,aAC1FoC,EAAQA,EAAQ9qC,OAAS,GAAK+jC,EAAAA,EAAeiH,qBAC3C7B,EAAMvB,OAAOrC,QACbtJ,EAAO0M,UACP1M,EAAOyM,aAGT,IAAK,IAAIT,EAAIkB,EAAMnB,UAAUhoC,OAAS,EAAGioC,EAAI,EAAGA,IAAK,CACnD,MAAMhO,EAAOkP,EAAM9P,MAAM4O,EAAI,IACtBY,SAAqB5O,EAAKgR,eAAeH,EAAQ7C,IACxD6C,EAAQ7C,EAAI,GAAKY,CACnB,CAEAA,EAAc9E,EAAAA,EAAeiH,qBAAqB7B,EAAM/2B,MAAO04B,EAAQ,GAAGnC,UAAWmC,EAAQ,GAAGpC,YAClG,CAEA0C,EAAgBnsC,KAAK,CAAEkqC,QAAON,cAAaC,gBAC7C,CAEA,OAAO,IAAIO,EAAM,CACf6B,OAAQE,EACRP,aAEJ,G,CAWO,2BAAOQ,CAIZC,GAMA,OAAO,IAAIjC,EAAKh5C,OAAAyR,OAAAzR,OAAAyR,OAAC,CAAC,EACbwpC,GAAoB,CACvBJ,OAAQ,CACN,CACErC,YAAayC,EAAqBzC,YAClCC,aAAcwC,EAAqBxC,aACnCK,MAAOmC,EAAqBnC,UAIpC,CAWO,6CAAOoC,CAIZD,GAQA,OAAO,IAAIjC,EAAMiC,EACnB,CAOAxyB,WAAAA,CAAArS,GAUC,IAVmB,OAClBykC,EAAM,UACNL,GAQDpkC,EACC,MAAM8iC,EAAgB2B,EAAO,GAAGrC,YAAYjE,SACtC8E,EAAiBwB,EAAO,GAAGpC,aAAalE,UAC9CyC,EAAAA,EAAAA,GACE6D,EAAOM,OAAMvkC,IAAA,IAAC,MAAEkiC,GAAOliC,EAAA,OAAKsiC,EAAchE,QAAQV,OAAOsE,EAAM/2B,MAAMmzB,QAAQ,IAC7E,yBAEF8B,EAAAA,EAAAA,GACE6D,EAAOM,OAAMvhC,IAAA,IAAC,MAAEk/B,GAAOl/B,EAAA,OAAKy/B,EAAenE,QAAQV,OAAOsE,EAAMvB,OAAOrC,QAAQ,IAC/E,yBAGF,MAAMkG,EAAWP,EAAO57C,KAAI8Z,IAAA,IAAC,MAAE+/B,GAAO//B,EAAA,OAAK+/B,EAAM9P,MAAMr5B,MAAM,IAAE+kB,QAAO,CAACkkB,EAAOC,IAAQD,EAAQC,GAAK,GAC7FwC,EAAiB,IAAIptC,IAC3B,IAAK,MAAM,MAAE6qC,KAAW+B,EACtB,IAAK,MAAMjR,KAAQkP,EAAM9P,MACvBqS,EAAe5G,IAAIuB,EAAAA,EAAKsF,WAAW1R,EAAK7oC,OAAQ6oC,EAAK5oC,OAAQ4oC,EAAKhpC,OAItEo2C,EAAAA,EAAAA,GAAUoE,IAAaC,EAAepxC,KAAM,oBAE5C2e,KAAK+vB,MAAQkC,EACbjyB,KAAK4xB,UAAYA,CACnB,CAOOe,gBAAAA,CAAiBC,GAAyD,IAA7BlB,EAASjwB,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAGzB,KAAK6vB,aAEnE,IADAzB,EAAAA,EAAAA,IAAWwE,EAAkBzC,SAAS0C,EAAAA,IAAO,sBACzC7yB,KAAK4xB,YAAcL,EAAAA,GAAUI,aAC/B,OAAOD,EAEP,MAAMoB,EAA4B,IAAIC,EAAAA,EAASC,EAAAA,IAC5CnH,IAAI+G,GACJK,SACA1D,SAASmC,EAAUb,UAAUA,SAChC,OAAO/F,EAAAA,EAAeC,cAAc2G,EAAU/F,SAAUmH,EAE5D,CAOOI,eAAAA,CAAgBN,GAAuD,IAA3BvB,EAAQ5vB,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAGzB,KAAK4vB,YAEjE,IADAxB,EAAAA,EAAAA,IAAWwE,EAAkBzC,SAAS0C,EAAAA,IAAO,sBACzC7yB,KAAK4xB,YAAcL,EAAAA,GAAUC,YAC/B,OAAOH,EAEP,MAAM8B,EAA2B,IAAIJ,EAAAA,EAASC,EAAAA,IAAKnH,IAAI+G,GAAmBrD,SAAS8B,EAASR,UAAUA,SACtG,OAAO/F,EAAAA,EAAeC,cAAcsG,EAAS1F,SAAUwH,EAE3D,CAOOC,mBAAAA,CAAoBR,GACzB,OAAO,IAAIpD,EAAAA,EACTxvB,KAAK4vB,YAAYjE,SACjB3rB,KAAK6vB,aAAalE,SAClB3rB,KAAKkzB,gBAAgBN,GAAmB/B,SACxC7wB,KAAK2yB,iBAAiBC,GAAmB/B,SAE7C,CAiBO,uBAAawC,CAAgBC,EAAAC,EAAAC,G,yCAClCpT,EACAqT,EACAC,GAAoB,IACpB,cAAEC,EAAgB,EAAC,QAAEC,EAAU,GAACnyB,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAuB,CAAC,EAExDoyB,EAAApyB,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAuB,GACvBqyB,EAAAryB,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAsCgyB,EACtCM,EAAAtyB,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAA8D,GAAE,oBAEhE2sB,EAAAA,EAAAA,GAAUhO,EAAMr5B,OAAS,EAAG,UAC5BqnC,EAAAA,EAAAA,GAAUwF,EAAU,EAAG,aACvBxF,EAAAA,EAAAA,GAAUqF,IAAqBK,GAAgBD,EAAa9sC,OAAS,EAAG,qBAExE,MAAMsqC,EAAWyC,EAAaxH,QACxB0H,EAAWN,EAAYpH,QAC7B,IAAK,IAAI0C,EAAI,EAAGA,EAAI5O,EAAMr5B,OAAQioC,IAAK,CACrC,MAAMhO,EAAOZ,EAAM4O,GAEnB,IAAKhO,EAAK7oC,OAAOyzC,OAAOyF,EAAS1F,YAAc3K,EAAK5oC,OAAOwzC,OAAOyF,EAAS1F,UAAW,SAEtF,IAAI+F,EACJ,KACGA,SAAmB1Q,EAAK8Q,gBAAgBT,EAC3C,CAAE,MAAOplC,GAEP,GAAIA,EAAMgoC,+BACR,SAEF,MAAMhoC,CACR,CAEA,GAAIylC,EAAU/F,SAASuI,SAAWxC,EAAU/F,SAASC,OAAOoI,GAC1DhG,EACE+F,QACM3D,EAAMkB,UACV,IAAI5C,EAAM,IAAImF,EAAc7S,GAAOyS,EAAiB9H,SAAU+H,GAC9DD,EACAlC,EAAAA,GAAUC,aAEZmC,EACAhE,QAEG,GAAIiE,EAAU,GAAKxT,EAAMr5B,OAAS,EAAG,CAC1C,MAAMotC,EAAyB/T,EAAMthB,MAAM,EAAGkwB,GAAGhuC,OAAOo/B,EAAMthB,MAAMkwB,EAAI,EAAG5O,EAAMr5B,eAG3EqpC,EAAMiD,iBACVc,EACAV,EACAC,EACA,CACEC,gBACAC,QAASA,EAAU,GAErB,IAAIC,EAAc7S,GAClB0Q,EACAqC,EAEJ,CACF,CAEA,OAAOA,CACT,CAvDkE,EAuDjE,G,CAkBM,wBAAaK,CAAiBd,EAAAe,EAAAC,G,yCACnClU,EACAmU,EACAC,GAA0C,IAC1C,cAAEb,EAAgB,EAAC,QAAEC,EAAU,GAACnyB,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAuB,CAAC,EAExDoyB,EAAApyB,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAuB,GACvBgzB,EAAAhzB,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAuC+yB,EACvCT,EAAAtyB,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAA+D,GAAE,oBAEjE2sB,EAAAA,EAAAA,GAAUhO,EAAMr5B,OAAS,EAAG,UAC5BqnC,EAAAA,EAAAA,GAAUwF,EAAU,EAAG,aACvBxF,EAAAA,EAAAA,GAAUoG,IAAsBC,GAAiBZ,EAAa9sC,OAAS,EAAG,qBAE1E,MAAM2qC,EAAY+C,EAAcnI,QAC1BoI,EAAUH,EAAWjI,QAC3B,IAAK,IAAI0C,EAAI,EAAGA,EAAI5O,EAAMr5B,OAAQioC,IAAK,CACrC,MAAMhO,EAAOZ,EAAM4O,GAEnB,IAAKhO,EAAK7oC,OAAOyzC,OAAO8F,EAAU/F,YAAc3K,EAAK5oC,OAAOwzC,OAAO8F,EAAU/F,UAAW,SAExF,IAAI0F,EACJ,KACGA,SAAkBrQ,EAAKgR,eAAeN,EACzC,CAAE,MAAOzlC,GAEP,GAAIA,EAAM0oC,4BACR,SAEF,MAAM1oC,CACR,CAEA,GAAIolC,EAAS1F,SAASC,OAAO8I,GAC3B1G,EACE+F,QACM3D,EAAMkB,UACV,IAAI5C,EAAM,CAAC1N,KAAS6S,GAAeU,EAAYC,EAAkB7I,UACjE6I,EACAjD,EAAAA,GAAUI,cAEZgC,EACAhE,QAEG,GAAIiE,EAAU,GAAKxT,EAAMr5B,OAAS,EAAG,CAC1C,MAAMotC,EAAyB/T,EAAMthB,MAAM,EAAGkwB,GAAGhuC,OAAOo/B,EAAMthB,MAAMkwB,EAAI,EAAG5O,EAAMr5B,eAG3EqpC,EAAMgE,kBACVD,EACAI,EACAC,EACA,CACEb,gBACAC,QAASA,EAAU,GAErB,CAAC5S,KAAS6S,GACVxC,EACA0C,EAEJ,CACF,CAEA,OAAOA,CACT,CAvDmE,EAuDlE,G,kGC/nBI,SAAStG,EAAa8G,EAA+Bb,GAC1D,MAAMkB,GCHmCj9B,EDGkB48B,ECHS18B,EDGG67B,GCFhE30C,EAAAA,EAAAA,UAAQ,IACN4Y,GAAUE,EACb,CAAC,CAACF,EAAQE,IACPpS,QAAQo+B,GAAWrzB,QAAQqzB,EAAO,IAAMA,EAAO,MAC/Cp+B,QAAOjO,IAAA,IAAEq9C,EAAIC,GAAGt9C,EAAA,OAAKq9C,EAAGj9C,UAAYk9C,EAAGl9C,OAAO,IACjD,IACH,CAAC+f,EAAQE,KAPP,IAAoCF,EAA2BE,EDKpE,MAAMk9B,GAAkEh2C,EAAAA,EAAAA,UAAQ,IACvE61C,EAAwB9oB,QAC7B,CAACkpB,EAAIx9C,KAAwB,IAArBmgB,EAAQE,GAAOrgB,EACrB,OAAOw9C,EAAKh0C,OAAO,CAEjB,CAAC2W,EAAQE,EAAQ6jB,EAAAA,GAAUE,SAE3B,GAEJ,KAED,CAACgZ,IAEExU,GAAQN,EAAAA,EAAAA,IAASiV,GAEvB,OAAOh2C,EAAAA,EAAAA,UAAQ,KACN,CACLqhC,MAAOA,EACJ36B,QAAQwvC,IACCA,EAAM,KAAOnJ,EAAAA,EAAUoB,QAAU+H,EAAM,KAAOnJ,EAAAA,EAAUqB,YAA2B,OAAb8H,EAAM,KAErF5+C,KAAIwN,IAAA,IAAE,CAAEm9B,GAAKn9B,EAAA,OAAKm9B,CAAI,IACzB7hC,QAASihC,EAAM3V,MAAKjd,IAAA,IAAE+I,GAAM/I,EAAA,OAAK+I,IAAUu1B,EAAAA,EAAUgB,OAAO,IAC5DpgC,SAAU0zB,EAAM3V,MAAKzc,IAAA,IAAEuI,GAAMvI,EAAA,OAAKuI,IAAUu1B,EAAAA,EAAUqB,SAAS,IAC/D+H,cAAe9U,EAAMx6B,MAAMqvC,GAAUA,EAAM,KAAOnJ,EAAAA,EAAUiB,gBAE7D,CAAC3M,GACN,CEvBO,SAAS+U,EACdZ,EACAb,EACAtT,EACAgV,EACAC,GAGC,IAFDC,EAAsB7zB,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAG8yB,EACzBX,EAAOnyB,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAG,EAEV,MAAMizB,EAAoB,OAAVH,QAAU,IAAVA,OAAU,EAAVA,EAAYjI,QACtB0H,EAAsB,OAAXN,QAAW,IAAXA,OAAW,EAAXA,EAAapH,QAE9B,IAAKoI,IAAYV,EAAU,MAAM,IAAIl9C,MAAM,4BAE3C,IAAK,MAAMkqC,KAAQZ,EAAO,CACxB,IAAKY,IAASA,EAAK8N,cAAc4F,IAAYU,EAAYxvC,MAAM2vC,IAAaC,OAtB5DC,EAsBuEzU,MAtB1D0U,EAsBgEH,IAnB5FE,EAAMt9C,OAAOyzC,OAAO8J,EAAMv9C,SAAWs9C,EAAMr9C,OAAOwzC,OAAO8J,EAAMt9C,SAAWq9C,EAAMz9C,MAAQ09C,EAAM19C,IAHnG,IAAoBy9C,EAAaC,CAsByE,IAAG,SAEzG,MAAMC,EAAc3U,EAAK7oC,OAAOyzC,OAAO8I,GAAW1T,EAAK5oC,OAAS4oC,EAAK7oC,OACjEw9C,EAAY/J,OAAOoI,GACrBqB,EAASrvC,KAAK,IAAI0oC,EAAM,IAAI0G,EAAapU,GAAOsU,EAAiB5B,IACxDE,EAAU,GACnBuB,EAAiBQ,EAAajC,EAAatT,EAAO,IAAIgV,EAAapU,GAAOqU,EAAUC,EAAiB1B,EAAU,EAEnH,CAEA,OAAOyB,CACT,CAEO,SAASO,EAAarB,EAA+Bb,GAC1D,MAAM,MAAEtT,EAAOjhC,QAAS02C,EAAY,QAAEnpC,EAAO,YAAEwoC,GAAgBzH,EAAa8G,EAAYb,GAElFoC,GAAgBC,EAAAA,EAAAA,MAEtB,OAAOh3C,EAAAA,EAAAA,UAAQ,KACb,GAAI82C,IAAiBzV,IAAUmU,IAAeb,EAAa,MAAO,CAAEv0C,SAAS,EAAM8yC,OAAQ,GAAIvlC,SAAS,GAExG,MAAO,CAAEvN,SAAS,EAAO8yC,OADVkD,EAAiBZ,EAAYb,EAAatT,EAAO,GAAI,GAAImU,EAAYuB,EAAgB,EAAI,GACvEppC,UAASwoC,cAAa,GACtD,CAACX,EAAYb,EAAatT,EAAOyV,EAAcC,EAAeppC,EAASwoC,GAC5E,CCxCO,IAAKc,EAAU,SAAVA,GAAU,OAAVA,EAAU,kBAAVA,EAAU,kBAAVA,EAAU,gCAAVA,EAAU,cAAVA,EAAU,kBAAVA,EAAU,sBAAVA,CAAU,MASf,SAASC,EACd3F,EACAG,EACAyF,GAEA,MAAMC,EAAkBD,GAGlB,OAAEjE,EAAQ9yC,QAASi3C,EAAa,QAAE1pC,EAAO,YAAEwoC,GAAgBU,EAAatF,EAAeG,GAEvF4F,EACJ/F,GAAiBG,EAAiBH,EAAchE,QAAQC,YAAYkE,EAAenE,cAAW1sC,EAE1F02C,GAAcv3C,EAAAA,EAAAA,UAAQ,KAAO,IAADw3C,EAAAC,EAChC,GAAKvE,EACL,OAAgB,QAAhBsE,EAAOtE,EAAO,UAAE,IAAAsE,GAAU,QAAVC,EAATD,EAAWnW,MAAM,UAAE,IAAAoW,OAAV,EAATA,EAAqBv/C,EAAE,GAC7B,CAACg7C,IAEEwE,GAAS13C,EAAAA,EAAAA,UAAQ,KACrB,IAAKo3C,QAAkCv2C,IAAfy2C,EAA0B,OAElD,MAAMnG,EAAQ+B,EACX5L,MAAK,CAACM,EAAGC,IACJD,EAAEyI,SAASsH,YAAY9P,EAAEwI,WAAmB,EAC5CzI,EAAEyI,SAASe,SAASvJ,EAAEwI,UAAkB,EACrC,IAER/4C,KAAK65C,IAAW,IAADyG,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EACd,MAAO,CACLjW,KAAoB,QAAhB2V,EAAEzG,EAAM9P,MAAM,UAAE,IAAAuW,OAAA,EAAdA,EAAgB1/C,GACtBy9C,QAAoB,QAAbkC,EAAE1G,EAAM/2B,aAAK,IAAAy9B,GAAS,QAATC,EAAXD,EAAatK,eAAO,IAAAuK,OAAT,EAAXA,EAAsBj/C,QAC/Bo8C,SAAsB,QAAd8C,EAAE5G,EAAMvB,cAAM,IAAAmI,GAAS,QAATC,EAAZD,EAAcxK,eAAO,IAAAyK,OAAT,EAAZA,EAAuBn/C,QACjCy5C,SAAU8E,GAAkB9I,EAAAA,EAAAA,IAAe9F,EAAAA,EAAAA,GAAkB4O,EAA4B,QAAba,EAAE9G,EAAM/2B,aAAK,IAAA69B,OAAA,EAAXA,EAAaj3C,WAAa,IACxGssC,UAAyB,QAAhB4K,EAAE/G,EAAM9P,MAAM,UAAE,IAAA6W,OAAA,EAAdA,EAAgBj/C,IAC5B,IAGL,OAAKk4C,EAAM,GAEJj8B,KAAKC,UAAU,CACpB5B,OAAQ49B,EAAM,GAAGlP,KACjBqQ,SAAUnB,EAAM,GAAGmB,SACnBgF,oBALF,CAME,GACD,CAACpE,EAAQkE,IAEN78C,GAAY49C,EAAAA,EAAAA,IAAqBZ,IAE/Bn3C,QAASg4C,EAAmBn4C,OAAQo4C,IAAmBC,EAAAA,EAAAA,IAAmBZ,GAE5Ea,GAAgBv4C,EAAAA,EAAAA,UAAQ,IACxBq4C,EACK,CAAC,CAAE1F,UAAU,KAAD1wC,OAAO,IAAIsB,EAAAA,EAAUonC,OAAO0N,IAAiBp3C,SAAS,OAEpE,IACN,CAACo3C,EAAgBD,IAEpB,OAAOp4C,EAAAA,EAAAA,UAAQ,KACb,IACGuxC,IACAG,GACDH,EAAc1E,OAAO6E,KACpB0F,GACD,IAAI7zC,EAAAA,EAAU6zC,GAAiBtL,UAAU,GAEzC,MAAO,CACLt0B,MAAOy/B,EAAWnJ,QAClB0K,MAAO,KACPjB,cACArE,SACAiD,eAIJ,GAAIkB,GAAiBe,EACnB,MAAO,CACL5gC,MAAOy/B,EAAWlJ,QAClByK,MAAO,KACPjB,cACArE,SACAiD,eAIJ,MAAM,UAAEsC,EAAS,UAAE9F,GAAc4F,EAAcxrB,QAC7C,CAAC2rB,EAAgFjgD,EAAiBw3C,KAAO,IAAtB,UAAE0C,GAAWl6C,EAC9F,OAAKk6C,IAEyB,OAA1B+F,EAAY/F,WAMZ,IAAIpvC,EAAAA,EAAUm1C,EAAY/F,WAAWlK,WAAWkK,IAL3C,CACL8F,UAAWvF,EAAOjD,GAClB0C,aALmB+F,CAeL,GAEpB,CACED,UAAW,KACX9F,UAAW,OAIT9B,GAAc8H,EAAAA,EAAAA,IAAevB,EAAiB7F,GAEpD,OAAKkH,GAAc9F,GAAc9B,EAU1B,CACLr5B,MAAO7J,EAAUspC,EAAW2B,MAAQ3B,EAAW7I,UAC/C7zC,YACAi+C,MAAOnH,EAAMgC,qBAAqB,CAChClC,MAAOsH,EACP5F,UAAWL,EAAAA,EAAUC,YACrB5B,cACAC,aAAc/E,EAAAA,EAAeC,cAAc0F,EAAgBiB,EAAU1xC,cAEvEs2C,cACArE,SACAiD,eApBO,CACL3+B,MAAOy/B,EAAW4B,eAClBL,MAAO,KACPjB,cACArE,SACAiD,cAgBH,GACA,CACD5E,EACA6F,EACA1F,EACA6G,EACArF,EACAmE,EACA98C,EACAoT,EACA4pC,EACApB,GAEJ,C,8FC/JOpqC,eAAesN,EAAmB3f,EAAoB+F,GAC3D,OAAOq5C,EAAAA,EAAAA,gBACQC,EAAAA,EAAAA,IAASr/C,IAAas/C,8BAA8Br/C,EAAAA,EAAU+b,SAASjW,KACpFgjC,IACJ,C,6VCcO12B,eAAexQ,EAAQnC,EAAgBC,GAAoD,IAApCJ,EAAcypB,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAGia,EAAAA,GAAUE,OACvF,MAAMoc,GAAcC,EAAAA,EAAAA,IAAU9/C,EAAQC,GAEtC,aAAa8/C,EAAAA,EAAAA,IAAY,CACvBlgD,IAAKymC,OAAOzmC,GACZG,QAAQggD,EAAAA,EAAAA,IAAiBH,EAAY7/C,QACrCC,QAAQ+/C,EAAAA,EAAAA,IAAiBH,EAAY5/C,SAEzC,CAEO0S,eAAe8hC,EAAoBz0C,EAAgBC,GAAoD,IAApCJ,EAAcypB,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAGia,EAAAA,GAAUE,OACnG,MAAMoc,GAAcC,EAAAA,EAAAA,IAAU9/C,EAAQC,GAEtC,OAAOy/C,EAAAA,EAAAA,gBAEG98C,EAAAA,EAAAA,MACNT,QAAQ,CACRtC,IAAKymC,OAAOzmC,GACZG,QAAQggD,EAAAA,EAAAA,IAAiBH,EAAY7/C,QACrCC,QAAQ+/C,EAAAA,EAAAA,IAAiBH,EAAY5/C,WAEvCopC,IACJ,CAEO12B,eAAelR,EAAWzB,EAAgBC,EAAgBJ,EAAgBE,GAC/E,IAAIkgD,EAAUjgD,EACVkgD,EAAUjgD,EAOd,OALIggD,EAAUC,IACZD,EAAUhgD,EACVigD,EAAUlgD,SAGCmgD,EAAAA,EAAAA,IAAe,CAC1BtgD,IAAKymC,OAAOzmC,GACZG,QAAQggD,EAAAA,EAAAA,IAAiBC,GACzBhgD,QAAQ+/C,EAAAA,EAAAA,IAAiBE,GACzBngD,gBAEJ,CA4BO,SAASqgD,EAAyBjmC,EAA4By1B,GACnE,OAAOyQ,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAYsH,UACV,QAAelL,IAAX0S,QAAuC1S,IAAfmoC,EAC5B,aA5BCj9B,eAAwCwH,EAAgBy1B,GAC7D,MAAM/G,QAAa0L,EAAAA,EAAAA,IAAoBp6B,GACjC9K,QAAiBygC,EAAAA,EAAAA,IAAgB31B,EAAQmsB,OAAOsJ,IAEtD,GAAI/G,GAAQx5B,EACV,MAAO,CACL+8B,UAAW/8B,EAAS+8B,UACpBC,UAAWh9B,EAASg9B,UACpBF,UAAW98B,EAAS88B,UACpBmU,YAAajxC,EAASixC,YACtBC,YAAalxC,EAASkxC,YACtBC,yBAA0BnxC,EAASmxC,yBACnCC,yBAA0BpxC,EAASoxC,yBACnCpyC,MAAO2tB,OAAO4T,GACd9wC,GAAIqb,EACJna,OAAQ6oC,EAAK7oC,OAAOP,QACpBQ,OAAQ4oC,EAAK5oC,OAAOR,QACpBI,IAAKgpC,EAAKhpC,IAAIgI,WAKpB,CAMmB64C,CAAyBvmC,EAAQy1B,EAAW,GACxD,CAACz1B,EAAQy1B,IAEhB,CAEO,SAASsP,EAAmBhvB,GACjC,MAAM+Y,GAAO59B,EAAAA,EAAAA,cAAYsH,UACvB,IAAKud,EAAM,OAEX,MAAMywB,EAAQ7kC,KAAKO,MAAM6T,GAEzB,aAAa4oB,EAAAA,EAAAA,IAAM6H,EAAMxmC,OAAQ,CAC/B++B,SAAUyH,EAAMzH,SAChBgF,WAAYyC,EAAMzC,WAClB0C,iBAAkB,KAClB,GACD,CAAC1wB,IAEJ,OAAO2wB,EAAAA,EAAAA,GAAkB5X,EAAM,oBAAqB/Y,EACtD,CAmBOvd,eAAe++B,EAAkBoP,EAAkBC,EAAkBlhD,GAC1E,MAAMgpC,QAAa1mC,EAAQ2+C,EAAUC,EAAUlhD,GAC/C,OAAW,OAAJgpC,QAAI,IAAJA,OAAI,EAAJA,EAAMvoC,WAAWuH,UAC1B,CAiBO8K,eAAequC,EAAoB7mC,GACxC,MAAMtT,QAAeo6C,EAAAA,EAAAA,IAAuB9mC,GAE5C,GAAItT,EACF,OAAOA,EAAO8sB,QACZ,CAAC+b,EAAMC,KACE,CACLuR,SAAUxR,EAAKwR,SAAS9T,KAAKuC,EAAK,GAAGuR,SAASr5C,YAC9Cs5C,SAAUzR,EAAKyR,SAAS/T,KAAKuC,EAAK,GAAGwR,SAASt5C,eAGlD,CAAEq5C,SAAU,IAAI/2C,EAAAA,EAAU,GAAIg3C,SAAU,IAAIh3C,EAAAA,EAAU,IAK5D,CAiBO,SAASi3C,EAAkBpiD,GAChC,MAAOH,EAAKwiD,IAAU70C,EAAAA,EAAAA,UAAiC,IAkBvD,OAhBA1E,EAAAA,EAAAA,YAAU,KACK6K,WACX,MAAM2uC,EAAc,OAAJtiD,QAAI,IAAJA,OAAI,EAAJA,EAAMd,KAAIyU,UACxB,GAAKxS,EACL,aAAauxC,EAAkBvxC,EAAIH,OAAQG,EAAIF,OAAQE,EAAIN,IAAI,IAGjE,GAAIyhD,GAAaA,EAAQ1yC,OAAQ,CAC/B,MAAM/P,QAAYN,QAAQoqC,IAAwB2Y,GAClDD,EAAOxiD,EACT,GAGFoqC,EAAM,GACL,CAACjqC,KAEG4H,EAAAA,EAAAA,UAAQ,IAAM/H,GAAK,CAACA,GAC7B,CAOO,SAAS0iD,EAA4BviD,GAC1C,MAAO06C,EAAS8H,IAAch1C,EAAAA,EAAAA,UAAuE,KAC9FxF,EAASyL,IAAcjG,EAAAA,EAAAA,WAAS,GAEjC3N,EAAMuiD,EAAkBpiD,GAsB9B,OApBA8I,EAAAA,EAAAA,YAAU,KACK6K,WACX,GAAI9T,EAAI+P,OAAQ,CACd6D,GAAW,GACX,MAAM6uC,EAAa,OAAHziD,QAAG,IAAHA,OAAG,EAAHA,EAAKX,KAAIyU,UACvB,GAAI7T,EAAI,aAAakiD,EAAoBliD,EACzB,IAGlB,GAAIwiD,GAAaA,EAAQ1yC,OAAQ,CAC/B,MAAM6yC,QAAgBljD,QAAQoqC,IAA8D2Y,GAC5FE,EAAWC,EACb,CACAhvC,GAAW,EACb,GAGFw2B,EAAM,GACL,CAACpqC,KAEG+H,EAAAA,EAAAA,UAAQ,MAASC,OAAQ6yC,EAAS1yC,aAAY,CAAC0yC,EAAS1yC,GACjE,CAQO,SAAS06C,EAAwBr7C,EAA+B0hC,EAAgBC,GACrF,MAAQnhC,OAAQ86C,IAAeC,EAAAA,EAAAA,IAAsBv7C,GAE/Cw7C,GAAYj7C,EAAAA,EAAAA,UAAQ,KACxB,GAAK+6C,EACL,OAAOA,EAAWA,EAAW/yC,OAAS,EAAE,GACvC,CAAC+yC,IAEJ,OAAOtB,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAYsH,UACV,IAAKtM,KAAc8hC,EAAAA,EAAAA,GAAoBJ,EAAQC,GAAQ,OAEvD,MAAM2Z,QAAmBG,EAAAA,EAAAA,IAAsBz7C,GAE/C,IAAKs7C,GAAoC,IAAtBA,EAAW/yC,OAAc,OAE5C,MAAMizC,EAAYF,EAAWA,EAAW/yC,OAAS,GAEjD,OAAO8wC,EAAAA,EAAAA,gBACQqC,EAAAA,EAAAA,IAAYF,IAAYG,IAAI37C,EAAWigC,OAAOyB,GAASzB,OAAO0B,GAAQ,KACnFqB,IAAI,GACL,CAAChjC,EAAW0hC,EAAQC,EAAO6Z,IAElC,CAUO,SAAS9C,EAAqBz+C,GACnC,MAAOa,EAAWoB,IAAgBiK,EAAAA,EAAAA,WAAS,GAY3C,OAVA1E,EAAAA,EAAAA,YAAU,KACK6K,WACX,IAAKrS,EAAY,OACjB,MAAMa,QAdLwR,eAAoCrS,GACzC,MAAMuG,GAAS64C,EAAAA,EAAAA,gBACAC,EAAAA,EAAAA,IAASr/C,IAAayB,wBACnCsnC,KAEF,OAAa,OAANxiC,QAAM,IAANA,OAAM,EAANA,EAAQ1F,SACjB,CAQ8B8gD,CAAqB3hD,GAC7CiC,IAAepB,EAAU,EAG3B8nC,EAAM,GACL,CAAC3oC,KAEGsG,EAAAA,EAAAA,UAAQ,IAAMzF,GAAW,CAACA,GACnC,C,iOC3OOwR,eAAe0/B,EAAahzC,GASX,IATY,WAClCiB,EAAU,GACVka,EAAE,OACFqwB,EAAM,KACNyH,EAAI,WACJC,EAAU,KACVrc,EAAI,IACJr2B,EAAG,SACH+H,GACmBvI,EACfwH,EAA+B,CAAEwiC,UAAM5hC,EAAWuS,QAAS,GAAIqO,OAAQ+Z,EAAAA,EAAa0P,OAGtFjrC,EADEvG,IAAeqK,EAAAA,GAAIlL,cACNyiD,EAAAA,EAAWC,SAAS,CACjC7hD,aACA8hD,UAAU,EACV9D,OAAQ,CACNhM,MAAMpqC,EAAAA,EAAAA,GAAiBoqC,GAAQ,CAAEjsC,UAAW9F,EAAAA,EAAU+b,SAASg2B,IAAU,CAAE7yC,QAAS6yC,GACpF93B,IAAItS,EAAAA,EAAAA,GAAiBsS,GAAM,CAAEnU,UAAW9F,EAAAA,EAAU+b,SAAS9B,IAAQ,CAAE/a,QAAS+a,GAC9EqwB,OAAQvE,OAAOuE,EAAOhjC,YACtB0qC,aACArc,gBAIWmsB,EAAAA,GAAaF,SAAS,CACnCC,UAAU,EACV9hD,aACAg+C,OAAQ,CACNhM,MAAMpqC,EAAAA,EAAAA,GAAiBoqC,GAAQ,CAAEjsC,UAAW9F,EAAAA,EAAU+b,SAASg2B,IAAU,CAAE7yC,QAAS6yC,GACpF93B,IAAItS,EAAAA,EAAAA,GAAiBsS,GAAM,CAAEnU,UAAW9F,EAAAA,EAAU+b,SAAS9B,IAAQ,CAAE/a,QAAS+a,GAC9EqwB,OAAQvE,OAAOuE,EAAOhjC,YACtB0qC,aACArc,OACAr2B,SAAa4H,IAAR5H,EAAoBymC,OAAOzmC,QAAO4H,KAK7C,MAAM,KAAE4hC,EAAI,QAAErvB,EAAO,OAAEqO,GAAWxhB,EAElC,IAAIy7C,EAActoC,EAElB,GAAIsoC,EAAYt6C,SAAS,qBAAsB,CAC7C,MAAM9G,EAAUohD,EAAY5nC,QAAQ,MAAO,IAEvCxZ,IACFohD,EAAW,sBAAAz5C,OAAyBjB,GAAWD,EAAAA,EAAAA,GAAiBzG,EAAS0G,GAAU+lC,WAAazsC,GAEpG,CAEA,MAAO,CACLmnB,SACArO,QAASsoC,EACTjZ,OAEJ,CAkCO,SAASkZ,EAAejiD,EAAgC8oC,GAC7D,OAAOiX,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAYsH,UACV,GAAKrS,EACL,aATCqS,eAA8BrS,GACnC,GAAKA,EACL,aAAc+hD,EAAAA,GAAaG,OAAO,CAAEliD,gBAAe+oC,IACrD,CAMmBoZ,CAAeniD,EAAW,GACtC,CAACA,IACJ8oC,EAEJ,CAEOz2B,eAAe+vC,EAAiBpiD,GACrC,OAAO+hD,EAAAA,GAAalc,SAAS,CAAE7lC,cACjC,CAWOqS,eAAegwC,EAAiBriD,GACrC,GAAKA,EACL,OAAOo/C,EAAAA,EAAAA,gBAAkCkD,EAAAA,EAAAA,OAAaC,QAAQviD,IAAa+oC,IAC7E,CAEA,SAASyZ,EAAY35C,GACnB,MAAM45C,GAAgBnwC,EAAAA,EAAAA,IAAiBzJ,GACvC,OAAO45C,IAAkBtmB,EAAAA,EAAeK,OAASimB,IAAkBtmB,EAAAA,EAAeM,KACpF,CAEOpqB,eAAeqwC,EAAa1iD,GACjC,GAAKA,EAEL,OAAO/B,QAAQoqC,IAAI,CACjB+Z,EAAiBpiD,GACjBwiD,EAAYxiD,GAAcqiD,EAAiBriD,GAAc,OACxD7B,MAAKiN,IAAqB,IAADu3C,EAAA,IAAlBp8C,EAAQoC,GAAKyC,EACrB,IAAK7E,EAAQ,OAEb,MAAMs/B,EAAWt/B,EAAOwiC,KAExB,IAAKlD,QAAkC1+B,IAAtB0+B,EAASv+B,eAA2CH,IAAjB0+B,EAAStmC,UAAyC4H,IAApB0+B,EAASh+B,OACzF,OAIF,MAAO,CACLc,KAHY65C,EAAYxiD,IAAc2I,GAAwBk9B,EAASl9B,MAGxDi6C,EACf7c,SAAUF,EAAStmC,IACnB+H,SAAUu+B,EAASv+B,SACnBS,KAAM89B,EAAS99B,KACfF,OAAQg+B,EAASh+B,OACjB7H,aACAuJ,aAA0C,QAA9Bo5C,GAAErwC,EAAAA,EAAAA,IAAiBtS,UAAW,IAAA2iD,EAAAA,EAAIxmB,EAAAA,EAAeK,MAC7DyJ,YAAaD,OAAO,GACrB,GAEL,C,mRC1MO,SAAS6c,EAA0Bh6C,EAA6Bi6C,GACrE,MAAMC,GAAez8C,EAAAA,EAAAA,UAAQ,KAC3B,IAAKuC,IAAYi6C,IAAuBA,EAAmBE,yBAAyB,GAAI,OAExF,MAAMC,EAAeH,EAAmBE,yBAAyB,GAAG71C,MACjEvC,GAAUA,EAAMyC,mBAAmB9F,aAAesB,IAGrD,OAAmB,OAAZo6C,QAAY,IAAZA,OAAY,EAAZA,EAAcC,sBAAsB,GAC1C,CAACr6C,EAASi6C,IAEb,OAAOK,EAAAA,EAAAA,IAA0BJ,EACnC,C,sEC2BO1wC,eAAeC,EAAgBvT,GAAyC,IAAxC,WAAEiB,GAAmCjB,EAC1E,MAAMqkD,QA3CD/wC,eAA+BrS,GACpC,IAEE,UADwBqjD,EAAAA,EAAaxd,SAAS,CAAE7lC,gBAAe+oC,KAClDlhC,OAAQ,CAGnB,mBAF+By7C,EAAAA,EAAAA,IAAMtjD,IAAaujD,6BAClBp2C,MAAM/O,GAAiB,WAAXA,EAAE2J,OACpBo0B,EAAAA,EAAeM,MAClCN,EAAAA,EAAeK,KACxB,CACF,CAAE,MAAOhpB,GACPspB,QAAQtpB,MAAMA,EAChB,CAGF,CA6B8BgwC,CAAgBxjD,GAC5C,IAAI4yC,EAAAA,EAAAA,GAAYwQ,GAAgB,OAAOA,EAEvC,MAAMK,QAnBDpxC,eAAgCrS,GACrC,IAEE,UADwB0jD,EAAAA,EAAa7d,SAAS,CAAE7lC,gBAAe+oC,KAClDlhC,OAAQ,OAAOs0B,EAAAA,EAAeC,KAC7C,CAAE,MAAO5oB,GACPspB,QAAQtpB,MAAMA,EAChB,CAGF,CAU+BmwC,CAAiB3jD,GAC9C,IAAI4yC,EAAAA,EAAAA,GAAY6Q,GAAiB,OAAOA,EAExC,MAAMG,QAjCDvxC,eAA8BrS,GACnC,IAEE,UADwB6jD,EAAAA,EAAWhe,SAAS,CAAE7lC,gBAAe+oC,KAChDlhC,OAAQ,OAAOs0B,EAAAA,EAAeI,GAC7C,CAAE,MAAO/oB,GACPspB,QAAQtpB,MAAMA,EAChB,CAGF,CAwB6BswC,CAAe9jD,GAC1C,OAAI4yC,EAAAA,EAAAA,GAAYgR,GAAsBA,OAAtC,CAGF,CCtDO,SAASlE,EAAiB90C,GAC/B,MAAM,UAAEm5C,GAAcC,EAAAA,EAAMC,WAAWC,WACvC,IAAI7kD,EAAW0kD,EAAUn5C,GAGzB,GAFIA,IAAUk7B,EAAAA,GAAuB9lC,aAAYX,EAAWymC,EAAAA,GAAuBv8B,cAC/EqB,IAAUu5C,EAAAA,GAAenkD,aAAYX,EAAW8kD,EAAAA,GAAe56C,eAC9DlK,EAAU,MAAMhB,MAAM,sBAADkK,OAAuBqC,EAAK,6BACtD,MAAO,CAAEzL,QAASyL,EAAOvL,SAAUA,EACrC,C,8HCIOgT,eAAeo4B,EAAS1rC,GAAuE,IAAtE,WAAEiB,EAAU,MAAE0qC,EAAK,QAAEC,EAAO,WAAEyZ,EAAU,SAAEC,GAAyBtlD,EACjG,aACQgjD,EAAAA,GAAatX,UAAU,CAC3BzqC,aACAg+C,OAAQ,CACNrT,QAAS1qC,EAAAA,EAAU+b,SAAS2uB,GAC5BD,OAAO9iC,EAAAA,EAAAA,GAAiB8iC,GAAS,CAAE3kC,UAAW9F,EAAAA,EAAU+b,SAAS0uB,IAAW,CAAEvrC,QAASurC,GACvF0Z,aACAnS,WAAYoS,MAGhBtb,IACJ,CAUO,SAAS8J,EAAYznC,GAA0E,IAAzE,WAAEpL,EAAU,QAAE2qC,EAAO,WAAEyZ,EAAU,MAAE1Z,EAAK,SAAE2Z,GAA4Bj5C,EACjG,OAAO20C,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAYsH,UACV,GAAKs4B,GAAYD,KAASn4B,EAAAA,EAAAA,GAAWvS,GACrC,aAAayqC,EAAU,CACrBE,UACAyZ,aACA1Z,QACA2Z,WACArkD,cACA,GACD,CAAC2qC,EAASyZ,EAAY1Z,EAAO2Z,EAAUrkD,IAE9C,C,mHCpCOqS,eAAew4B,EAAO9rC,GAAkE,IAAjE,WAAEiB,EAAU,QAAE2qC,EAAO,MAAEj9B,EAAK,QAAEo9B,EAAO,SAAEzrC,GAAuBN,EAC1F,IAAK+rC,EACH,MAAO,CAAE/iB,OAAQ+Z,EAAAA,EAAa0P,MAAOzI,UAAM5hC,EAAWuS,QAAS,cAGjE,GAAIra,EAAU,CAEZ,OADgB0iD,EAAAA,GAAauC,iBAAiBjlD,GAC/BwrC,QAAQ,CACrB7qC,aACA8hD,UAAU,EACV9D,OAAQ,CACNrT,QAAS1qC,EAAAA,EAAU+b,SAAS2uB,GAC5BF,UAAWzE,OAAOt4B,GAClBukC,gBAAY9qC,EACZ2jC,YAGN,CAEA,OAAOiX,EAAAA,GAAalX,QAAQ,CAC1B7qC,aACA8hD,UAAU,EACV9D,OAAQ,CACNrT,QAAS1qC,EAAAA,EAAU+b,SAAS2uB,GAC5BF,UAAWzE,OAAOt4B,GAClBukC,gBAAY9qC,EACZ2jC,YAGN,CAEO,SAASyZ,IACd,OAAOx5C,EAAAA,EAAAA,cAAYsH,UAA2E,IAApE,WAAErS,EAAU,QAAE2qC,EAAO,MAAEj9B,EAAK,QAAEo9B,EAAO,SAAEzrC,GAAuB+L,EACtF,IAAK0/B,EACH,aAAa7sC,QAAQC,QAAQ,CAC3B6pB,OAAQ,MACRrO,QAAS,oBAGb,MAAM8wB,QAAuBC,EAAAA,EAAAA,GAAU,CACrCzqC,aACA0qC,MAAOI,EAAQvjC,WACfojC,YAGF,OAAKH,GAAkBA,IAAmBxE,OAAO,IAAMA,OAAOt4B,GAAS88B,QACxDK,EAAQ,CACnB7qC,aACA2qC,UACAj9B,QACAo9B,UACAzrC,mBAGSpB,QAAQC,QAAQ,CAC3B6pB,OAAQ,KACRghB,MAAM,EACNrvB,QAAS,kCACgB,GAC1B,GACL,C,0ECtEO,SAAS9I,EAAkB/H,GAChC,MAAQtC,OAAQgG,IAAqBC,EAAAA,EAAAA,KAErC,OAAOlG,EAAAA,EAAAA,UAAQ,KACb,IAAKuC,IAAY0D,EAAkB,OACnC,MAAMW,EAAeX,EAAiBY,MAAM/O,GAAMA,EAAEgP,aAAaC,qBAAuBxE,IACxF,OAAmB,OAAZqE,QAAY,IAAZA,OAAY,EAAZA,EAAcE,aAAaE,gBAAgB,GACjD,CAACf,EAAkB1D,GACxB,C,6JCZO,MAAM/J,EAAaC,IAAmB,IAAlB,IAAEC,GAAUD,EACrC,MAAMylD,EAAYxlD,EAAIkB,QAAQ,CAC5BukD,GAAIzlD,EAAIQ,IACRklD,IAAK1lD,EAAIkB,QAAQ,CACfykD,sBAAuB3lD,EAAIoB,KAC3BwkD,oBAAqB5lD,EAAIoB,KACzBykD,oBAAqB7lD,EAAIoB,KACzB0kD,aAAc9lD,EAAIoB,KAClB2kD,WAAY/lD,EAAIoB,KAChB4kD,QAAShmD,EAAIoB,KACb6kD,MAAOjmD,EAAII,KACX8lD,UAAWlmD,EAAIoB,KACf+kD,eAAgBnmD,EAAIoB,SAGlBglD,EAAWpmD,EAAIE,OAAO,CAC1BK,IAAKP,EAAIQ,IACT8H,SAAUtI,EAAIqmD,KACd3a,MAAO1rC,EAAIiB,UACX0I,KAAM3J,EAAII,KACV2I,KAAM/I,EAAII,KACV6mC,YAAajnC,EAAIQ,IACjBqI,OAAQ7I,EAAII,OAERkmD,EAAYtmD,EAAIE,OAAO,CAC3BqmD,aAAcvmD,EAAIwmD,MAClBC,WAAYzmD,EAAIwmD,MAChB3f,SAAUuf,EACVM,YAAa1mD,EAAIwmD,MACjBG,OAAQ3mD,EAAIwmD,MACZI,MAAO5mD,EAAIiB,YAEb,OAAOjB,EAAIkC,QAAQ,CACjBupC,UAAWzrC,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIiB,WAAY,CAACjB,EAAIQ,KAAM,CAAC,UAChEqrC,QAAS7rC,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIQ,KAAM,CAACglD,GAAY,IACzDqB,UAAW7mD,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACjB,EAAIQ,KAAM,IAChDsmD,sBAAuB9mD,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,IAC/C8H,SAAUtI,EAAIoC,KAAK,GAAI,CAACpC,EAAIqmD,MAAO,CAAC,UACpCU,sBAAuB/mD,EAAIoC,KACzB,CAACpC,EAAIe,KACL,CAACf,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIiB,UAAWjB,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIiB,UAAWjB,EAAIgnD,MAAMhnD,EAAIQ,IAAKR,EAAIe,UAC1F,IAEFkmD,SAAUjnD,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,CAAC,UACnC0mD,qBAAsBlnD,EAAIoC,KAAK,GAAI,CAACpC,EAAIe,KAAM,IAC9ComD,iBAAkBnnD,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,CAAC,UAC3C4mD,mBAAoBpnD,EAAIoC,KACtB,GACA,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIiB,UAAWjB,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIiB,UAAWjB,EAAIgnD,MAAMhnD,EAAIQ,IAAKR,EAAIe,UAC1F,IAEFsmD,iBAAkBrnD,EAAIoC,KAAK,GAAI,CAACpC,EAAIe,KAAM,IAC1CumD,YAAatnD,EAAIoC,KAAK,GAAI,CAACgkD,GAAW,CAAC,UACvCmB,oBAAqBvnD,EAAIoC,KAAK,GAAI,CAACpC,EAAIe,KAAM,IAC7CymD,gBAAiBxnD,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,IACzCinD,YAAaznD,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,CAAC,UACtCkjD,aAAc1jD,EAAIoC,KAAK,GAAI,CAACkkD,GAAY,CAAC,UACzCoB,iBAAkB1nD,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACjB,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIiB,UAAWjB,EAAIQ,OAAQ,CAAC,UAC3FkmD,YAAa1mD,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,IACrCmJ,KAAM3J,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UAChC2I,KAAM/I,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UAChCunD,qBAAsB3nD,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,IAC9ConD,OAAQ5nD,EAAIoC,KAAK,CAACpC,EAAIQ,KAAM,GAAI,CAAC,WACjCqnD,QAAS7nD,EAAIoC,KAAK,CAACpC,EAAII,MAAO,GAAI,CAAC,WACnC0nD,iBAAkB9nD,EAAIoC,KAAK,CAACpC,EAAIe,KAAM,GAAI,IAC1CgnD,QAAS/nD,EAAIoC,KAAK,CAACpC,EAAII,MAAO,GAAI,CAAC,WACnC4nD,SAAUhoD,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,GAAI,CAAC,WACzC4H,OAAQ7I,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UAClC6mC,YAAajnC,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,IACrCqiD,SAAU7iD,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIQ,KAAM,CAACglD,GAAY,IAC1DyC,aAAcjoD,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIiB,UAAWjB,EAAIQ,KAAM,CAACglD,GAAY,KAC7E,EChEE0C,EAAS,8BAETC,EAAM90C,SACV9P,EAAAA,GAAMC,OAAoB,CAAExC,WAAYknD,EAAQpoD,WAAYsoD,EAAStF,aAEjEuF,EAAsB,CAACH,GAEhBI,EAAwBtnD,GAAuBqnD,EAAoB3/C,SAAS1H,G,iHCFlFqS,eAAe42B,EAAgBjpC,EAAoB8qC,EAA6Byc,GACrF,GAAID,EAAqBtnD,GAAa,aDGjCqS,eAA8BrS,EAAoB8qC,GACvD,GAAQ9qC,IACDknD,EAAL,CACE,IAAIM,EAAAA,EAAAA,GAAY1c,GACd,OAAOsU,EAAAA,EAAAA,gBAAkC+H,KAAOtB,UAAU/a,IAE5D,MAAMzsC,MAAM,sBAAsB,CAGlC,MAAMA,MAAM,iBAElB,CCdqDopD,CAAeznD,EAAY8qC,GAI9E,IAFiBx4B,EAAAA,EAAAA,IAAiBtS,KAEjBm8B,EAAAA,EAAeI,IAAK,CACnC,IAAIp9B,EAAU,GAEd,GAAKooD,EAQE,CACL,MAAMG,EAAMxe,EAAAA,GAAWye,UAAUJ,IAE7BK,EAAAA,EAAAA,GAAeF,KACbF,EAAAA,EAAAA,GAAY1c,KACd3rC,EAAU0oD,EAAAA,GAAkB1e,cAAc,CACxCpjC,UAAW+kC,EACXyc,WAAYG,IACXI,QAGT,MAjBI3oD,GADEqoD,EAAAA,EAAAA,GAAY1c,IACJid,EAAAA,EAAAA,GAAmBjd,EAAQvjC,aAC5BK,EAAAA,EAAAA,GAAiBkjC,IAChBid,EAAAA,EAAAA,GAAmBjd,GAEnBA,EAed,aAAaiX,EAAAA,GAAanhD,QAAQ,CAChCZ,aACAg+C,OAAQ,CACNgK,KAAM,CAAE7oD,WACRyL,MAAO,KAGb,CAEA,OAAI5K,IAAeqK,EAAAA,GAAIlL,cACRyiD,EAAAA,EAAWhhD,QAAQ,CAC9BZ,aACAg+C,OAAQ,CACNgK,MAAMR,EAAAA,EAAAA,GAAY1c,GACd,CAAE/kC,UAAW+kC,IACbljC,EAAAA,EAAAA,GAAiBkjC,GACjB,CAAE/kC,UAAW9F,EAAAA,EAAU+b,SAAS8uB,IAChC,CAAE3rC,QAAS2rC,GACflgC,MAAO,GACPqnC,WAAYsV,EAAa,IAAIA,QAAcpgD,WAKpC46C,EAAAA,GAAanhD,QAAQ,CAChCZ,aACAg+C,OAAQ,CACNgK,MAAMR,EAAAA,EAAAA,GAAY1c,GACd,CAAE/kC,UAAW+kC,IACbljC,EAAAA,EAAAA,GAAiBkjC,GACjB,CAAE/kC,UAAW9F,EAAAA,EAAU+b,SAAS8uB,IAChC,CAAE3rC,QAAS2rC,GACflgC,MAAO,GACPqnC,WAAYsV,EAAa,IAAIA,QAAcpgD,IAGjD,CAEO,SAASR,EACd3G,EACA8qC,EACArB,EACA8d,GAEA,OAAOU,EAAAA,EAAAA,KACLl9C,EAAAA,EAAAA,cAAYsH,UAAa,IAAD61C,EAAAC,EACtB,IAAKrd,IAAY9qC,EAAY,OAC7B,MAAMuG,QAAe0iC,EAAgBjpC,EAAY8qC,EAASyc,GAC1D,OAAO,IAAI19C,EAAAA,EAAUtD,GAAgC,QAA1B2hD,EAAc,QAAdC,EAAG5hD,EAAOwiC,YAAI,IAAAof,OAAA,EAAXA,EAAa5gD,kBAAU,IAAA2gD,EAAAA,EAAQ,EAAE,GAC9D,CAACpd,EAAS9qC,EAAYunD,IACzB9d,EAEJ,CAyDO,SAAS2e,EACdtd,EACAoI,EACAzJ,GAEA,MAAM,QAAE/iC,EAAO,OAAEH,GAAWI,EAAwB,OAARusC,QAAQ,IAARA,OAAQ,EAARA,EAAU/zC,QAAS2rC,EAASrB,GAExE,OAAOnjC,EAAAA,EAAAA,UAAQ,IACRC,IAAUG,GAAYwsC,EAMpB,CACLxsC,UACAH,OAAQ8rC,EAAAA,EAAeC,cAAcY,EAAU3sC,EAAO8hD,aAP/C,CACL3hD,UACAH,YAAQY,IAOX,CAACT,EAASH,EAAQ2sC,GACvB,CAiDO,SAASoV,EACdz/C,EACA1J,EACAsqC,GAEA,MAAO8e,EAAaC,IAAkBt8C,EAAAA,EAAAA,eAAgC/E,IAEhE,QAAET,EAAO,OAAEH,GAAWI,EAAgBkC,EAAS1J,EAASsqC,GAQ9D,OANAjiC,EAAAA,EAAAA,YAAU,KACJjB,GACFiiD,EAAejiD,EACjB,GACC,CAACA,KAEGD,EAAAA,EAAAA,UAAQ,KACRuC,IAAY0/C,GAAe7hD,GAAW+hD,MAAMF,EAAYF,YACpD,CACL3hD,UACAH,OAAQgiD,GAAe1/C,EAAU0/C,OAAcphD,GAG5C,CACLT,UACAH,OAAQgiD,IAET,CAAC7hD,EAAS6hD,EAAa1/C,GAC5B,C,6ZChLM,MAAO6/C,EAWJ,aAAalmD,CAAO2qB,G,yCACzB,MAAM,OAAEw7B,EAAM,UAAEC,EAAS,QAAEC,EAAU,GAAa,OAAP17B,QAAO,IAAPA,EAAAA,EAAW,CAAC,EACjD27B,OAnEWC,EAAOJ,EAAgBC,EAAmBC,IAAmBG,OAAA,6BAChF,aAAaC,EAAAA,EAAAA,QAAON,EAAQE,EAAS,CACnCK,QAASA,CAACC,EAAUC,EAAYC,EAAYC,KACvB,IAAfF,GACFD,EAASI,kBAAkBX,GAGxBO,EAASK,iBAAiBC,SAASb,IACtCO,EAASI,kBAAkBX,GAGzBQ,EAAaP,GACDS,EAAYI,YAAYd,GAChC34B,OACR,IAED05B,OAAOjpD,KAzBZ,SAAkCA,GAEhC,QAAIA,EAAIgH,SAAS,wCAEbhH,EAAIgH,SAAS,uDAEbhH,EAAIgH,SAAS,wDAAjB,CACF,EAoBQkiD,CAAyB3Y,OAAOvwC,MAClCmpD,EAAAA,EAAAA,UAASlB,GAAQxqD,MAAK,KACpB4vB,OAAOnM,SAASknB,QAAQ,GAIZ,GAEpB,IAyCqBigB,CAAaJ,EAAQC,EAAWC,GACjD,OAAO,IAAIH,EAAUI,EAAIF,EAC3B,G,CAGAxhC,WAAAA,CACU0iC,EACAC,GADA,KAAAD,IAAAA,EACA,KAAAC,WAAAA,CACP,CAQUC,GAAAA,CAAOnqD,EAAkB6N,G,yCACpC,aApDJ,SAA4Bo7C,EAAcF,EAAmB/oD,EAAkB6N,G,yCAC7E,aAAao7C,EAAGmB,IAAIrB,EAAWl7C,EAAO7N,EACxC,G,CAkDiBqqD,CAAa3iC,KAAKuiC,IAAKviC,KAAKwiC,WAAYlqD,EAAK6N,EAC5D,G,CAUag0C,GAAAA,CAAO7hD,G,+CAClB,OAA2D,QAApDsqD,QApEX,SAA4BrB,EAAcF,EAAmB/oD,G,yCAC3D,aAAaipD,EAAGpH,IAAIkH,EAAW/oD,EACjC,G,CAkEkBuqD,CAAa7iC,KAAKuiC,IAAKviC,KAAKwiC,WAAYlqD,UAAK,IAAAsqD,EAAAA,EAAI,IACjE,G,CAOaE,MAAAA,CAAOxqD,G,yCAClB,aArEJ,SAA4BipD,EAAcF,EAAmB/oD,G,yCAC3D,aAAaipD,EAAGwB,OAAO1B,EAAW/oD,EACpC,G,CAmEiB0qD,CAAahjC,KAAKuiC,IAAKviC,KAAKwiC,WAAYlqD,EACvD,G,CAOa2qD,MAAAA,G,yCACX,aA1EJ,SAAgC1B,EAAcF,G,yCAC5C,aAAaE,EAAG0B,OAAO5B,EACzB,G,CAwEiB6B,CAAcljC,KAAKuiC,IAAKviC,KAAKwiC,WAC5C,G,2mBC7HI,SAAgBW,EAAgBC,G,yCAAIC,GAAgB,IAAEljB,EAAK1e,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAG,IAAG,mBACrE,MAAM6hC,GAAUC,EAAAA,EAAAA,IAASF,EAAOljB,GAE1BnhC,EAAqB,GAE3B,IAAK,IAAIgwC,EAAI,EAAGA,EAAIsU,EAAQv8C,OAAQioC,IAAK,CACvC,MAAMwU,QAAY9sD,QAAQoqC,IAAIwiB,EAAQtU,IACtChwC,EAAOgH,KAAKw9C,EACd,CAEA,OAAOxkD,EAAOkiC,MAChB,CAXuE,EAWtE,G,gBCLD,IAAI2C,EAAkB,IAEtB/4B,iBACE,IACE+4B,SAAgB,sCAA8BtkB,OAChD,CAAE,MAAOpmB,GACPo8B,QAAQkuB,KAAKtqD,EACf,CACF,CAEAuqD,G,eCPA,MAAMC,EAAmB,mBACnBC,EAAsB,KAEtBC,EAAU,ICMV,MAUJhkC,WAAAA,CAAYuhC,GAAiD,IAAjC0C,EAAUriC,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAG,EAAG4/B,EAAiB5/B,UAAA1a,OAAA,EAAA0a,UAAA,QAAA7hB,EANrD,KAAA0hD,QAAU,EAOhBthC,KAAKshC,QAAUwC,EACf9jC,KAAKohC,OAASA,EACdphC,KAAKqhC,UAAYA,CACnB,CAEA,OAAIkB,GACF,OAAO,IAAI7rD,SAASC,IACdqpB,KAAK+jC,cACPptD,EAAQqpB,KAAK+jC,eAIf5C,EAAUlmD,OAAO,CACfqmD,QAASthC,KAAKshC,QACdD,UAAWrhC,KAAKqhC,UAChBD,OAAQphC,KAAKohC,SACZxqD,MAAM2qD,IACPvhC,KAAK+jC,cAAgBxC,EACrB5qD,EAAQ4qD,EAAG,GACX,GAEN,CAEapH,GAAAA,CAAI7hD,G,yCACf,MAAMipD,QAAWvhC,KAAKuiC,IACtB,aAAahB,EAAGpH,IAAY7hD,EAC9B,G,CAEamqD,GAAAA,CAAInqD,EAAa6N,G,yCAC5B,MAAMo7C,QAAWvhC,KAAKuiC,UAChBhB,EAAGkB,IAAInqD,EAAK6N,EACpB,G,CAEa28C,MAAAA,CAAOxqD,G,yCAClB,MAAMipD,QAAWvhC,KAAKuiC,UAChBhB,EAAGuB,OAAOxqD,EAClB,G,CAEa2qD,MAAAA,G,yCACX,MAAM1B,QAAWvhC,KAAKuiC,IACtB,aAAahB,EAAG0B,QAClB,G,GC3EqB,cACG,GFgB0B,UAEpDn4C,eAAek5C,EAAoB1iD,GACjC,MAAM2iD,QAAoBJ,EAAQ1J,IAAI,SAADn5C,OAAUM,IAC/C,GAAI2iD,EAAa,OAAOhwC,KAAKO,MAAMyvC,EAErC,CAEAn5C,eAAeo5C,EAAoBjlD,SAC3B4kD,EAAQpB,IAAI,SAADzhD,OAAU/B,EAAUxG,YAAcwb,KAAKC,UAAUjV,GACpE,CAQO,SAASklD,EAAuB7iD,GACrC,MAAM8iD,GAAO,IAAIpzB,MAAOC,UAClBozB,EAAM79B,OAAO89B,aAAaC,QAAQZ,GAExC,GAAKU,EAEE,CACL,MAAMG,EAAUvwC,KAAKO,MAAM6vC,GAC3BG,EAAQljD,GAAW8iD,EAAKpkD,WAExBwmB,OAAO89B,aAAaG,QAAQd,EAAkB1vC,KAAKC,UAAUswC,GAC/D,MANEh+B,OAAO89B,aAAaG,QAAQd,EAAkB1vC,KAAKC,UAAU,CAAE,CAAC5S,GAAU8iD,EAAKpkD,aAOnF,CAEA,SAAS0kD,EAAsBpjD,GAC7B,MAAMqjD,EArBD,SAA6BrjD,GAAkB,IAADsjD,EACnD,MAAMP,EAAM79B,OAAO89B,aAAaC,QAAQZ,GACxC,OAAKU,GAC6D,QAAlEO,EAAQ3wC,KAAKO,MAAM6vC,GAAuC/iD,UAAQ,IAAAsjD,EAAAA,EADjD,IAEnB,CAiBuBC,CAAoBvjD,GACzC,OAAKqjD,IACE,IAAI3zB,MAAOC,UAAYkD,OAAOwwB,GAAgBf,CACvD,CAEA,SAASkB,EAAmBb,GAC1B,QAASA,QAAwCrkD,IAAzBqkD,EAAYlkD,eAAmDH,IAAzBqkD,EAAYzlB,QAC5E,CAEO1zB,eAAei6C,EAAczjD,GAClC,MAAM2iD,QAAoBD,EAAoB1iD,GAE9C,GAAIwjD,EAAmBb,KAAiBS,EAAsBpjD,GAC5D,OAAO2iD,EAGT,MAAMe,QAAsB7J,EAAAA,EAAAA,IAAa75C,GAEzC,OAAI0jD,SACId,EAAoB,IACrBc,EACHtmB,YAAa,IACbF,SAAUwmB,EAAcxmB,SAASx+B,aAEnCmkD,EAAuB7iD,GAChB0jD,QAPT,CASF,CAEO,IAAKC,EAAc,SAAdA,GAAc,OAAdA,EAAc,kBAAdA,EAAc,wBAAdA,EAAc,gBAAdA,EAAc,kBAAdA,CAAc,MAOnB,SAASC,EAActhB,GAC5B,MAAOuhB,EAAYC,IAAiBzgD,EAAAA,EAAAA,UAAkD,CAAC,IAChF0gD,EAAUC,IAAe3gD,EAAAA,EAAAA,UAAoC,CAAC,GAE/D4gD,GDlECxmD,EAAAA,EAAAA,UAAQ,IAAM8kC,GAAQ,CAACA,ICoExB2hB,EAAmB16C,UACvB,IAAKxJ,EAAS,OAEd,IAAImkD,EAKJ,GAHInkD,IAAYs7C,EAAAA,GAAenkD,aAAYgtD,EAAW7I,EAAAA,IAClDt7C,IAAYi9B,EAAAA,GAAuB9lC,aAAYgtD,EAAWlnB,EAAAA,IAE1DknB,EASF,OARAL,GAAe1+C,IAAS,IACnBA,EACH,CAACpF,GAAUmkD,WAEbH,GAAa5+C,IAAS,IACjBA,EACH,CAACpF,IAAU,MAKfgkD,GAAa5+C,IAAS,IACjBA,EACH,CAACpF,IAAU,MAGb,MAAMokD,EAAaH,EAAY3/C,MAAM/O,GAAMA,EAAE4B,aAAe6I,IAExDokD,IACFN,GAAe1+C,IAAS,IACnBA,EACH,CAACpF,GAAU,IACNokD,EACHtkD,KAAMi6C,EACN7c,SAAUC,OAAOinB,EAAW1tD,KAC5B+H,SAAUo0B,OAAOuxB,EAAW3lD,UAC5BiC,aAAc0jD,EAAW5tD,SACzB4mC,YAAaD,OAAO,QAIxB6mB,GAAa5+C,IAAS,IACjBA,EACH,CAACpF,IAAU,OAIf,MAAM2iD,QAAoBD,EAAoB1iD,GAE9C,IAAIqkD,GAAwB,EAG5B,IACMb,EAAmBb,KACrBmB,GAAe1+C,IAAS,IACnBA,EACH,CAACpF,GAAU,CACTd,KAAMyjD,EAAYzjD,KAClBY,KAAM6iD,EAAY7iD,KAElBd,OAAQ2jD,EAAY3jD,OACpB7H,WAAYwrD,EAAYxrD,WACxBimC,YAAaD,OAAO,GACpBD,SAAUylB,EAAYzlB,SAASr+B,SAAS,WACpCs+B,OAAOwlB,EAAYzlB,SAAS3rB,QAAQ,MAAO,KAC3C4rB,OAAOwlB,EAAYzlB,SAASx+B,YAChCD,SAAUo0B,OAAO8vB,EAAYlkD,UAC7BiC,aAAciiD,EAAYjiD,kBAI9BsjD,GAAa5+C,IAAS,IACjBA,EACH,CAACpF,IAAU,MAGjB,CAAE,MAAOnI,GACPo8B,QAAQtpB,MAAM9S,GACdwsD,GAAwB,CAC1B,CAEA,IAAK1B,GAAeS,EAAsBpjD,KAAawjD,EAAmBb,IAAgB0B,EAAuB,CAC/G,MAAM1mD,QAAkBk8C,EAAAA,EAAAA,IAAa75C,GAErC,GAAIrC,EAAW,OACPilD,EAAoB,IACrBjlD,EAEHu/B,SAAUv/B,EAAUu/B,SAASx+B,WAC7B0+B,YAAa,MAEfylB,EAAuB7iD,GAIvB,MAAM45C,GAAgBnwC,EAAAA,EAAAA,IAAiB9L,EAAUxG,YAEjD2sD,GAAe1+C,IAAS,IACnBA,EACH,CAACpF,GAAU,IACNrC,EACHu/B,SAAUC,OAAOx/B,EAAUu/B,SAASx+B,YACpCD,SAAUo0B,OAAOl1B,EAAUc,UAC3BiC,aAA2B,OAAbk5C,QAAa,IAAbA,EAAAA,EAAiBj8C,EAAU+C,iBAG/C,CACF,CAEAsjD,GAAa5+C,IAAS,IACjBA,EACH,CAACpF,IAAU,KACV,EAYL,OATArB,EAAAA,EAAAA,YAAU,MACR6K,iBAEEq4C,EADcvf,EAASvtC,KAAIyU,eAAyB06C,EAAiBlkD,KAC7C,GAC1B,CAEA8/B,EAAM,GACL,CAACntB,KAAKC,UAAU0vB,MAEZ7kC,EAAAA,EAAAA,UAAQ,IACN6kC,EAASvtC,KAAKiL,IACnB,IAAKA,EAAS,MAAO,CAAC2jD,EAAepY,aAASjtC,GAE9C,MAAMX,EAAYkmD,EAAW7jD,GAG7B,OAFgB+jD,EAAS/jD,GAEL,CAAC2jD,EAAenY,aAASltC,GACxCX,EAEE,CAACgmD,EAAe/X,OAAQjuC,GAFR,CAACgmD,EAAepY,aAASjtC,EAEP,KAE1C,CAACulD,EAAYE,EAAUzhB,GAC5B,CAEO,SAAS1kC,EAAaoC,GAC3B,MAAOiV,EAAOtX,GAAaimD,EAAc,CAAC5jD,IAAU,GAEpD,OAAOvC,EAAAA,EAAAA,UAAQ,IACRE,EAOE,CACLD,OAAQC,EACRE,QAASoX,IAAU0uC,EAAenY,SAR3B,CACL9tC,YAAQY,EACRT,QAASoX,IAAU0uC,EAAenY,UAQrC,CAAC7tC,EAAWsX,GACjB,C,uEGpPO,SAASpD,EAAgB7R,GAC9B,MAAM,mDAANN,OAA0DM,EAC5D,CAEO,SAASskD,EAAatkD,GAC3B,OAAOvC,EAAAA,EAAAA,UAAQ,KACb,GAAKuC,EAEL,MAAM,mDAANN,OAA0DM,EAAO,GAChE,CAACA,GACN,C,gGCgBO,SAASukD,EAAwBC,GACtC,MAAMC,GARCzvC,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM6qB,KAAK4kB,WAStC9vC,GAAWC,EAAAA,EAAAA,MAEX8vC,GAAsBziD,EAAAA,EAAAA,cAC1BhM,IAA2C,IAA1C,UAAE0uD,GAAkC1uD,EACnC0e,GAASiwC,EAAAA,EAAAA,IAAe,CAAEL,UAASI,cAAa,GAElD,CAACJ,EAAS5vC,IAGZ,OAAOnX,EAAAA,EAAAA,UAAQ,IAAM,CAACgnD,EAAaD,GAAUG,IAAsB,CAACH,EAASG,EAAqBF,GACpG,CClCA,IAAIK,EAAiB,EAEd,SAASpN,EAAqB7sB,EAAa7zB,EAAa+tD,EAAgB9kB,EAAkB+kB,GAAuB,IAADC,EACrH,MAAMC,EAAgC,QDJVV,ECIMxtD,EAAjBiuD,GDHVjwC,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM6qB,KAAKolB,cAAaV,UCGnB,IAAAS,EAAAA,EAAI,CAAC,EDJtC,IAAuBT,ECM5B,MAAMW,EDFD,WACL,MAAMvwC,GAAWC,EAAAA,EAAAA,MAEjB,OAAO3S,EAAAA,EAAAA,cACL,CAACsiD,EAAiB9mD,KAChBkX,GAASuwC,EAAAA,EAAAA,IAAiB,CAAEX,UAAS9mD,WAAU,GAEjD,CAACkX,GAEL,CCP2BwwC,IAElBvnD,EAASyL,IAAcjG,EAAAA,EAAAA,WAAS,IAChCgiD,EAAcC,GAAsBf,EAAwBvtD,GAsBnE,OApBA2H,EAAAA,EAAAA,YAAU,KACR,GAAIksB,IAAgB,IAAVk6B,EAAiB,CACzBz7C,GAAW,GAEXw7C,IACA,MAAM5/C,EAAQ4/C,EAEdQ,EAAmB,CAAEV,UAAW1/C,IAEhC2lB,IAAKv1B,MAAMoI,IACT,MAAM6nD,EDFP,SAAsBvuD,GAC3B,OAAOmkD,EAAAA,EAAMC,WAAWtb,KAAK4kB,SAAS1tD,EACxC,CCA2BwuD,CAAaxuD,GAE5BuuD,IAAergD,IACjBigD,EAAiBnuD,EAAK,IAAKkuD,EAAa,CAAChgD,GAAQxH,IACjD4L,GAAW,GACb,GAEJ,IACC,CAACuhB,EAAIk6B,EAAO9kB,KAERxiC,EAAAA,EAAAA,UAAQ,KAKN,CACLC,OAJAwnD,EAAYG,GAAgBH,EAAYG,GAAgBL,EAAaE,EAAYG,EAAe,QAAK/mD,EAKrGT,aAED,CAACqnD,EAAarnD,EAASwnD,GAC5B,C,wICrCO,IAAKI,EAAgB,SAAhBA,GAAgB,OAAhBA,EAAgB,kBAAhBA,EAAgB,cAAhBA,EAAgB,kBAAhBA,CAAgB,MAMrB,SAAS/6C,EAAS1K,GACvB,MAAQtC,OAAQC,EAAWE,QAAS6nD,IAAiB9nD,EAAAA,EAAAA,IAAaoC,GAElE,OAAOvC,EAAAA,EAAAA,UAAQ,KAAO,IAADq8C,EACnB,OAAK95C,EACDA,IAAYwB,EAAAA,GAAIlL,QAAgB,CAACmvD,EAAiBpP,MAAO70C,EAAAA,IACzDxB,IAAYs8B,EAAAA,GAAYhmC,QAAgB,CAACmvD,EAAiBpP,MAAO/Z,EAAAA,IAChE3+B,EACD+nD,EAAqB,CAACD,EAAiBja,aAASltC,GAE7C,CACLmnD,EAAiBpP,MACjB,IAAIjgD,EAAAA,EAAM,CACRE,QAAS0J,EACTvB,SAAUo0B,OAAOl1B,EAAUc,UAC3BO,OAAQrB,EAAUqB,OAClBE,KAAMvB,EAAUuB,KAChBY,KAAMnC,EAAUmC,KAChBo9B,SAAUrK,OAAOl1B,EAAUu/B,UAC3B1mC,SAAgD,QAAxCsjD,GAAErwC,EAAAA,EAAAA,IAAiB9L,EAAUxG,mBAAW,IAAA2iD,EAAAA,EAAIxmB,EAAAA,GAAeI,OAZhD,CAAC+xB,EAAiBla,aAASjtC,GAH7B,CAACmnD,EAAiBla,aAASjtC,EAiB/C,GACA,CAAC0B,EAASrC,EAAW+nD,GAC1B,CAEO,SAASljB,EAAUF,GACxB,MAAMC,GAASqhB,EAAAA,EAAAA,IAActhB,GAE7B,OAAO7kC,EAAAA,EAAAA,UAAQ,IACN6kC,EAASvtC,KAAI,CAACiL,EAASkF,KAAW,IAADygD,EACtC,MAAO,CAAEhoD,GAAa4kC,EAAOr9B,GAE7B,OAAKvH,GAAcqC,EAIZ,CACLylD,EAAiBpP,MACjB,IAAIjgD,EAAAA,EAAM,CACRE,QAAS0J,EACTvB,SAAUo0B,OAAOl1B,EAAUc,UAC3BO,OAAQrB,EAAUqB,OAClBE,KAAMvB,EAAUuB,KAChBY,KAAMnC,EAAUmC,KAChBo9B,SAAUrK,OAAOl1B,EAAUu/B,UAC3B1mC,SAAgD,QAAxCmvD,GAAEl8C,EAAAA,EAAAA,IAAiB9L,EAAUxG,mBAAW,IAAAwuD,EAAAA,EAAIryB,EAAAA,GAAeK,SAZ9D,CAAC8xB,EAAiBla,aAASjtC,EAcnC,KAEF,CAACikC,EAAQD,GACd,C,2FCxDO,MAAMsjB,GAAgBC,EAAAA,EAAAA,eAAc,CAAC,GAErC,SAASC,IACd,OAAOj0B,EAAAA,EAAAA,YAAW+zB,EACpB,CAEO,SAASG,EAAkB/uD,GAChC,MAAM,gBAAEgvD,GAAoBF,IAE5B,OAAOroD,EAAAA,EAAAA,UAAQ,KACb,GAAKzG,EACL,OAAOgvD,EAAgBhvD,EAAI,GAC1B,CAACgvD,EAAiBhvD,GACvB,CAEO,SAASivD,EAAyBjvD,GACvC,MAAM,gBAAEgvD,EAAe,mBAAEE,GAAuBJ,IAEhD,OAAOroD,EAAAA,EAAAA,UAAQ,IACRzG,EAEE,CAACgvD,EAAgBhvD,GAAM,IAAMkvD,EAAmBlvD,IAFtC,MAACsH,EAAW,IAAM4nD,EAAmB,gBAGrD,CAACF,EAAiBhvD,EAAKkvD,GAC5B,C,+DC9BO,SAASplB,EACdhB,GAGC,IAFDqmB,EAAuBhmC,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,IAAAA,UAAA,GACvBimC,EAAQjmC,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAG,IAEX,MAAO+f,EAAMC,IAAW98B,EAAAA,EAAAA,eAAwB/E,IACzCmuB,EAAMC,IAAWrpB,EAAAA,EAAAA,UAAiB,GAyBzC,OAvBA1E,EAAAA,EAAAA,YAAU,MACR6K,iBACE,GAAIs2B,EAAM,CACR,MAAMpiC,QAAeoiC,IACrBK,EAAQziC,EACV,CACF,CAEA2oD,EAAO,GACN,CAAC55B,EAAMqT,EAAMqmB,KAEhBxnD,EAAAA,EAAAA,YAAU,KACR,MAAM8qB,EAAQ68B,aAAY,KACpBxmB,GACFpT,GAAStnB,GAAcA,EAAY,GACrC,GACCghD,GAEH,MAAO,KACLG,cAAc98B,EAAM,CACrB,GACA,CAAC28B,EAAUtmB,KAEPriC,EAAAA,EAAAA,UAAQ,IAAMyiC,GAAM,CAACA,GAC9B,C,yGC7BA,IAAIsmB,EAAU,EAEP,SAASC,IAEd,OADAD,IACOA,EAAQ9nD,UACjB,CAEO,SAASgoD,IACd,MAAM,KAAE9jD,IAAS4Q,EAAAA,EAAAA,MACXmzC,GAAiBC,EAAAA,EAAAA,MAEvB,OAAO1kD,EAAAA,EAAAA,cACL,CAAC2kD,EAAoC7vD,KACnC,IACIa,EADA2uC,EAAO,EAEPub,EAAoC8E,EAExC,MAAMh8B,EAAKrhB,UACJu4C,IAAOA,EAAQ,IACpB,IAAK,IAAIrU,EAAIhiC,EAAMgiC,EAAIqU,EAAMt8C,OAAQioC,IAAK,CACxClH,EAAOkH,EACPiZ,EAAe3vD,EAAKwvC,EAAM3uC,GAE1B,IAAe,UADMkqD,EAAMrU,KAIzB,OAFA71C,EAAM61C,EACNiZ,EAAe3vD,EAAKwvC,EAAM3uC,IACnB,EAET2uC,EAAOkH,EAAI,EACXiZ,EAAe3vD,EAAKwvC,EAAM3uC,EAC5B,CAEA,OAAO,CAAI,EAGPivD,EAAQA,KACZtgB,EAAO,EACP3uC,OAAMyG,CAAS,EAejB,MAAO,CAAEwhC,KAZIt2B,UACXs9C,IAEAlkD,EAAK5L,SAEQ6zB,EAAG,IAOHi8B,QAAOC,MAJRv9C,UAAa,IAADw9C,EACxB,aAAan8B,EAAM,QAAJm8B,EAACnvD,SAAG,IAAAmvD,EAAAA,EAAI,EAAE,EAGEC,YAAazgB,EAAM0gB,UAAWrvD,EAAK,GAElE,CAAC+K,EAAM+jD,GAEX,CAEO,SAASv1C,IACd,MAAM,MAAE8a,IAAU1Y,EAAAA,EAAAA,MAElB,OAAOtR,EAAAA,EAAAA,cACJlL,IACCk1B,EAAMl1B,EAAI,GAEZ,CAACk1B,GAEL,C,yMChEO,IAAKuY,EAAY,SAAZA,GAAY,OAAZA,EAAY,aAAZA,EAAY,YAAZA,EAAY,kBAAZA,EAAY,kBAAZA,CAAY,MAOjB,MAAM0iB,EAAmF,CAC9F,CAAC1iB,EAAavmB,SAAU,UACxB,CAACumB,EAAa95B,OAAQ,QACtB,CAAC85B,EAAatmB,SAAU,UACxB,CAACsmB,EAAa5mC,SAAU,WAGbupD,EAAY3iB,EAAa95B,MACzBrO,EAAcmoC,EAAavmB,QAC3BmpC,EAAc5iB,EAAa5mC,QAMjC,SAASzB,IAId,MAAMwY,GAAWC,EAAAA,EAAAA,OACX,cAAEgc,EAAa,gBAAEvB,IAAoBg4B,EAAAA,EAAAA,MAErC1kD,GAAOV,EAAAA,EAAAA,cACX,CAAC2O,EAAoBsG,EAAmCmN,IAC/CgL,EAAgBze,EAAS,CAC9BtF,QAAS4L,KAAQ8hB,EAAAA,EAAgB9hB,IAAS8hB,EAAAA,EAAa0L,GAAKwiB,EAASvvD,GAAKuvD,EAAStvD,IAAOsvD,EAAShwC,MAC/FA,IAASstB,EAAa5mC,QAAU,CAAEuqB,SAAS,GAAS,CAAC,KAC9C,OAAP9D,QAAO,IAAPA,EAAAA,EAAW,CAAC,KAGpB,CAAC1P,IAGGsX,GAAQhqB,EAAAA,EAAAA,cACXqlD,IACC12B,EAAc02B,EAAW,GAE3B,CAAC3yC,IAGH,OAAOnX,EAAAA,EAAAA,UAAQ,IAAM,CAACmF,EAAMspB,IAAQ,CAACtpB,EAAMspB,GAC7C,CAEO,SAASzhB,IACd,MAAO+8C,EAAcC,GAAiBrrD,IAEhCwG,GAAOV,EAAAA,EAAAA,cACX,CAAC2O,EAASyT,IACDkjC,EAAa32C,EAASvU,EAAagoB,IAE5C,CAACkjC,IAGGt7B,GAAQhqB,EAAAA,EAAAA,cACXlL,IACCywD,EAAczwD,EAAI,GAEpB,CAACywD,IAGH,OAAOhqD,EAAAA,EAAAA,UAAQ,IAAM,CAACmF,EAAMspB,IAAQ,CAACtpB,EAAMspB,GAC7C,CAEO,SAASqV,IACd,MAAOimB,EAAcC,GAAiBrrD,IAEhCwG,GAAOV,EAAAA,EAAAA,cACX,CAAC2O,EAAoByT,IACZkjC,EAAa32C,EAASu2C,EAAW9iC,IAE1C,CAACkjC,IAGGt7B,GAAQhqB,EAAAA,EAAAA,cACXlL,IACCywD,EAAczwD,EAAI,GAEpB,CAACywD,IAGH,OAAOhqD,EAAAA,EAAAA,UAAQ,IAAM,CAACmF,EAAMspB,IAAQ,CAACtpB,EAAMspB,GAC7C,CAEO,SAASw7B,IACd,MAAOF,EAAcC,GAAiBrrD,IAEhCwG,GAAOV,EAAAA,EAAAA,cACX,CAAC2O,EAAiByT,IACTkjC,EAAa32C,EAASw2C,EAAa,IAAa,OAAP/iC,QAAO,IAAPA,EAAAA,EAAW,CAAC,KAE9D,CAACkjC,IAGGt7B,GAAQhqB,EAAAA,EAAAA,cACXlL,IACCywD,EAAczwD,EAAI,GAEpB,CAACywD,IAGH,OAAOhqD,EAAAA,EAAAA,UAAQ,IAAM,CAACmF,EAAMspB,IAAQ,CAACtpB,EAAMspB,GAC7C,CAEO,SAASy7B,IACd,MAAM/yC,GAAWC,EAAAA,EAAAA,MACX+yC,GAAS5yC,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMpX,QAAQ+E,OAEjDA,GAAOV,EAAAA,EAAAA,cAAY,KACvB0S,GAASizC,EAAAA,EAAAA,MAAc,GACtB,CAACjzC,IAEEsX,GAAQhqB,EAAAA,EAAAA,cAAY,KACxB0S,GAASO,EAAAA,EAAAA,MAAe,GACvB,CAACP,IAEJ,OAAOnX,EAAAA,EAAAA,UAAQ,IAAM,CAACmF,EAAMspB,EAAO07B,IAAS,CAAChlD,EAAMspB,EAAO07B,GAC5D,C,mLC1HO,SAASE,IACd,MAAM,aAAEC,IAAiB/yC,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM+yC,SAEzD,OAAOvqD,EAAAA,EAAAA,UAAQ,KACb,GAAIsqD,EAAatiD,OACf,OAAOsiD,EAAaA,EAAatiD,OAAS,GAAGZ,KAG/B,GACf,CAACkjD,GACN,CAEO,SAASE,EAAY5d,GAC1B,MAAM6d,GAAYzqD,EAAAA,EAAAA,UAAQ,KACxB,GAAK4sC,KACO,OAARA,QAAQ,IAARA,GAAAA,EAAUW,QAAQV,OAAOhO,EAAAA,KAAwB,OAAR+N,QAAQ,IAARA,GAAAA,EAAUW,QAAQV,OAAO9oC,EAAAA,KACtE,OAAO6oC,CAAQ,GACd,CAACA,IAEE8d,GAAaC,EAAAA,EAAAA,IAAsB,OAATF,QAAS,IAATA,OAAS,EAATA,EAAWld,QAAQ10C,SAE7C+xD,GAAY5qD,EAAAA,EAAAA,UAAQ,IACjB22B,EAAAA,KAAYQ,EAAAA,GAAQxsB,GAAK5G,EAAAA,GAAM86B,EAAAA,IACrC,CAAClI,EAAAA,GAASQ,EAAAA,KAEP0zB,EAAiBR,IAEjBS,GAAiB9qD,EAAAA,EAAAA,UAAQ,KAC7B,GAAI6qD,EACF,OAAO,IAAIpa,EAAAA,EACTma,EACAA,GACApiB,EAAAA,EAAAA,GAAkB,EAAGoiB,EAAU5pD,UAAUC,YACzCunC,EAAAA,EAAAA,GAAkBqiB,EAAgBD,EAAU5pD,UAAUC,WAG1C,GACf,CAAC4pD,EAAgBD,IAEpB,OAAO5qD,EAAAA,EAAAA,UAAQ,KACb,GAAK4sC,GAAake,EAElB,OAAY,OAARle,QAAQ,IAARA,GAAAA,EAAUW,QAAQV,OAAO9oC,EAAAA,KAAgB,OAAR6oC,QAAQ,IAARA,GAAAA,EAAUW,QAAQV,OAAOhO,EAAAA,IAAqBisB,EAAeC,UAE9FL,EACKA,EAAWrkB,cADpB,CAIgB,GACf,CAACuG,EAAUge,EAAWF,EAAYI,GACvC,CAEO,SAASvqD,EAAgBgC,GAC9B,MAAMsjD,GAAW7lD,EAAAA,EAAAA,UAAQ,KACvB,GAAKuC,GACDA,IAAYs8B,EAAAA,GAAYhmC,SAAW0J,IAAYwB,EAAAA,GAAIlL,QACvD,OAAO0J,CAAO,GACb,CAACA,IAEEmoD,GAAaC,EAAAA,EAAAA,IAAa9E,GAE1BgF,EAAiBR,IAEvB,OAAOrqD,EAAAA,EAAAA,UAAQ,KACb,GAAKuC,GAAYsoD,EAEjB,OAAItoD,IAAYwB,EAAAA,GAAIlL,SAAW0J,IAAYs8B,EAAAA,GAAYhmC,QAAgBgyD,EAEnEH,EACKA,EAAWrkB,cADpB,CAIgB,GACf,CAAC9jC,EAASmoD,EAAYG,GAC3B,CAEO,SAASG,EAAYC,GAC1B,MAAM3a,EAAQka,EAA0B,OAAdS,QAAc,IAAdA,OAAc,EAAdA,EAAgBre,UAE1C,OAAO5sC,EAAAA,EAAAA,UAAQ,KACb,IAAKswC,IAAU2a,EAAgB,OAAO,KACtC,IACE,OAAO,IAAI1nD,EAAAA,EAAU+sC,GAAO9sC,aAAaynD,EAAehlB,UAC1D,CAAE,MAAO/4B,GACP,OAAO,IACT,IACC,CAAC+9C,EAAgB3a,GACtB,C,kLCzFO,SAAS4a,IACd,MAAMC,GAAYC,EAAAA,EAAAA,MACZC,EAAuBC,KAEvB,OAAErrD,IAAWw5C,EAAAA,EAAAA,KACjBh1C,EAAAA,EAAAA,cAAYsH,UACV,IAAKo/C,IAAcE,EAAsB,OAIzC,aAFwBF,EAAUI,0BAElB,GACf,CAACJ,KAGN,OAAOnrD,EAAAA,EAAAA,UAAQ,IAAMC,GAAQ,CAACA,GAChC,C,0BClBO,SAASurD,IACd,MAAM,QAAEC,IAAYC,EAAAA,EAAAA,gBAEpB,OAAc,OAAPD,QAAO,IAAPA,EAAAA,EAAWvrB,EAAAA,EACpB,CAEO,SAASorB,IACd,MAAMG,EAAUD,IAEhB,OAAOxrD,EAAAA,EAAAA,UAAQ,KACb,GAAKyrD,EAEL,OAAOtrB,EAAAA,GAAiB/+B,SAASqqD,EAAQ,GACxC,CAACA,EAAStrB,EAAAA,IACf,C,mCCbO,SAASwrB,EAAcnpB,GAC5B,MAAM,QAAEgC,IAAYknB,EAAAA,EAAAA,iBACbpxD,EAASsxD,IAAchmD,EAAAA,EAAAA,eAAgC/E,IACvDT,EAASyL,IAAcjG,EAAAA,EAAAA,WAAS,GAgBvC,OAdA1E,EAAAA,EAAAA,YAAU,MACR6K,iBACE,GAAIy4B,EAAS,CACX34B,GAAW,GACX,MAAMggD,EAAO,IAAIC,EAAAA,IAAKA,EAAAA,IAAKC,eACrBzxD,QAAgBuxD,EAAKG,IAAIC,WAAWznB,GAC1ConB,EAAW,IAAIroD,EAAAA,EAAUjJ,EAAQ2G,aACjC4K,GAAW,EACb,CACF,CAEAw2B,EAAM,GACL,CAACmC,EAAShC,KAENxiC,EAAAA,EAAAA,UAAQ,MAASC,OAAQ3F,EAAS8F,aAAY,CAAC9F,EAAS8F,GACjE,CCrBO,SAAS8rD,EAAoB9+B,EAAaoV,GAC/C,MAAM6oB,EAAuBC,IAE7B,OAAO7R,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAYsH,eACGqhB,KACZ,CAACi+B,EAAsBj+B,IAC1BoV,EAEJ,C,iBCNO,SAAS2pB,EAAgBC,EAAqC5pB,GACnE,MAAM,QAAEgC,IAAYknB,EAAAA,EAAAA,gBACdW,GAAWC,EAAAA,EAAAA,IAAiBF,GAElC,OAAO3S,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAYsH,UACV,IAAKsgD,IAAa7nB,EAAS,OAC3B,MAAMvkC,QAAeosD,EAAS9M,UAAU/a,GACxC,OAAO,IAAIjhC,EAAAA,EAAUtD,EAAOgB,WAAW,GACtC,CAACorD,EAAU7nB,IACdhC,EAEJ,C,iHCfO,SAAS+pB,IACd,MAAM,KAAE9pB,IAAS+pB,EAAAA,EAAAA,IACf,kBACAzgD,UACE,MAAM8/C,EAAO,IAAIC,EAAAA,IAAKA,EAAAA,IAAKC,eACrBU,QAAoBZ,EAAKG,IAAIU,iBACnC,OAAOt3B,OAAOq3B,EAAY,GAE5B,CACEE,gBAAiB,MAIrB,OAAOlqB,CACT,CAEO,SAASmqB,IACd,MAAM,KAAEnqB,IAASoqB,EAAAA,EAAAA,GAAwB,kBACzC,OAAOpqB,CACT,CAEO,SAASqqB,IACd,MAAM,KAAErqB,IAAS+pB,EAAAA,EAAAA,IACf,2BACAzgD,UACE,MAAM8/C,EAAO,IAAIC,EAAAA,IAAKA,EAAAA,IAAKC,eACrBgB,QAAclB,EAAKG,IAAIgB,SAAS,aACtC,OAAO53B,OAAOA,OAAO23B,EAAME,QAAQ,GAErC,CACEN,gBAAiB,MAIrB,OAAOlqB,CACT,CAEO,SAASyqB,IACd,MAAM,KAAEzqB,IAASoqB,EAAAA,EAAAA,GAAwB,2BACzC,OAAOpqB,CACT,C,kJC7BA,MAAM0qB,EAAmB,CAACpzB,EAAAA,GAAQC,QAASD,EAAAA,GAAQqzB,OAAQrzB,EAAAA,GAAQE,SAEnE,SAASozB,EAAwBx0D,GAAmD,IAAlCy0D,EAAA5qC,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAgC,GAChF,OAAOyqC,EAAiBlrD,OAAOqrD,GAAoBvgC,QAAmB,CAACuC,EAAMm8B,KAC3En8B,EAAKm8B,GAAW5yD,EACTy2B,IACN,CAAC,EACN,CAEyC+9B,EAAwB,6CAA8C,CAC7GtzB,EAAAA,GAAQwzB,SACRxzB,EAAAA,GAAQyzB,aACRzzB,EAAAA,GAAQ0zB,QACR1zB,EAAAA,GAAQ2zB,eACR3zB,EAAAA,GAAQE,UAUPF,EAAAA,GAAQC,QACRD,EAAAA,GAAQqzB,OACRrzB,EAAAA,GAAQE,QACRF,EAAAA,GAAQwzB,SACRxzB,EAAAA,GAAQyzB,aACRzzB,EAAAA,GAAQ4zB,UACR5zB,EAAAA,GAAQ6zB,KACR7zB,EAAAA,GAAQ8zB,IACR9zB,EAAAA,GAAQ0zB,QACR1zB,EAAAA,GAAQ+zB,KACR/zB,EAAAA,GAAQg0B,MAORh0B,EAAAA,GAAQC,QACRD,EAAAA,GAAQqzB,OACRrzB,EAAAA,GAAQyzB,aACRzzB,EAAAA,GAAQwzB,SACRxzB,EAAAA,GAAQ6zB,KACR7zB,EAAAA,GAAQ4zB,UACR5zB,EAAAA,GAAQ8zB,IACR9zB,EAAAA,GAAQ0zB,QACR1zB,EAAAA,GAAQg0B,MAxCJ,MA4CDC,EAAoC,CACxCC,qBAAsB,6CACtBC,iBAAkB,6CAClBC,cAAe,6CACfC,kBAAmB,6CACnBC,kCAAmC,8CAE/BC,EAAiBj2D,OAAAyR,OAAAzR,OAAAyR,OAAA,GAClBkkD,GAAiB,CACpBO,0BAA2B,+CAEvBC,EAAgBn2D,OAAAyR,OAAAzR,OAAAyR,OAAA,GACjBkkD,GAAiB,CACpBO,0BAA2B,+CAGvBE,EAAqCT,EACrCU,EAAsBr2D,OAAAyR,OAAAzR,OAAAyR,OAAA,GACvBkkD,GAAiB,CACpBE,iBAAkB,6CAClBS,gBAAiB,+CAEbC,EAAoCZ,EAGpCa,EAAiC,CACrCZ,qBAAsB,6CACtBC,iBAAkB,6CAClBC,cAAe,6CACfC,kBAAmB,6CACnBC,kCAAmC,6CACnCM,gBAAiB,8CA0ING,EAAsE,CACjF,CAAC/0B,EAAAA,GAAQC,SAAUs0B,EACnB,CAACv0B,EAAAA,GAAQwzB,UAAWkB,EACpB,CAAC10B,EAAAA,GAAQyzB,cAAekB,EACxB,CAAC30B,EAAAA,GAAQ0zB,SAAUmB,EACnB,CAAC70B,EAAAA,GAAQ2zB,gBAAiBkB,EAC1B,CAAC70B,EAAAA,GAAQqzB,QAASoB,EAClB,CAACz0B,EAAAA,GAAQ+zB,MAAOe,EAChB,CAAC90B,EAAAA,GAAQg1B,gBAAiBF,EAC1B,CAAC90B,EAAAA,GAAQ8zB,KA/I2B,CACpCI,qBAAsB,6CACtBC,iBAAkB,6CAClBC,cAAe,6CACfC,kBAAmB,6CACnBC,kCAAmC,6CACnCM,gBAAiB,6CACjBK,oBAAqB,8CAyIrB,CAACj1B,EAAAA,GAAQk1B,iBArIuC,CAChDhB,qBAAsB,6CACtBC,iBAAkB,6CAClBC,cAAe,6CACfC,kBAAmB,6CACnBC,kCAAmC,6CACnCM,gBAAiB,8CAgIjB,CAAC50B,EAAAA,GAAQm1B,kBA5HwC,CACjDjB,qBAAsB,6CACtBC,iBAAkB,6CAClBC,cAAe,6CACfC,kBAAmB,6CACnBC,kCAAmC,6CACnCM,gBAAiB,6CACjBK,oBAAqB,8CAsHrB,CAACj1B,EAAAA,GAAQo1B,iBAlHuC,CAChDlB,qBAAsB,6CACtBC,iBAAkB,6CAClBC,cAAe,6CACfC,kBAAmB,6CACnBC,kCAAmC,6CACnCM,gBAAiB,8CA6GjB,CAAC50B,EAAAA,GAAQq1B,kBAzGwC,CACjDnB,qBAAsB,6CACtBC,iBAAkB,6CAClBC,cAAe,6CACfC,kBAAmB,6CACnBC,kCAAmC,6CACnCM,gBAAiB,6CACjBK,oBAAqB,8CAmGrB,CAACj1B,EAAAA,GAAQE,SA/F+B,CACxCg0B,qBAAsB,6CACtBC,iBAAkB,6CAClBC,cAAe,6CACfC,kBAAmB,6CACnBC,kCAAmC,6CACnCM,gBAAiB,6CACjBK,oBAAqB,8CAyFrB,CAACj1B,EAAAA,GAAQ4zB,WArFiC,CAC1CM,qBAAsB,6CACtBC,iBAAkB,6CAClBC,cAAe,6CACfC,kBAAmB,6CACnBC,kCAAmC,6CACnCM,gBAAiB,6CACjBK,oBAAqB,8CA+ErB,CAACj1B,EAAAA,GAAQ6zB,MA5E4B,CACrCK,qBAAsB,6CACtBC,iBAAkB,6CAClBC,cAAe,6CACfC,kBAAmB,6CACnBC,kCAAmC,6CACnCM,gBAAiB,6CACjBK,oBAAqB,8CAsErB,CAACj1B,EAAAA,GAAQs1B,aAlEmC,CAC5CpB,qBAAsB,6CACtBC,iBAAkB,6CAClBC,cAAe,6CACfC,kBAAmB,6CACnBC,kCAAmC,6CACnCM,gBAAiB,6CACjBK,oBAAqB,8CA4DrB,CAACj1B,EAAAA,GAAQu1B,MAzD4B,CACrCrB,qBAAsB,6CACtBC,iBAAkB,6CAClBC,cAAe,6CACfC,kBAAmB,6CACnBC,kCAAmC,6CACnCM,gBAAiB,6CACjBK,oBAAqB,8CAmDrB,CAACj1B,EAAAA,GAAQw1B,cAhDoC,CAC7CtB,qBAAsB,6CACtBC,iBAAkB,6CAClBC,cAAe,6CACfC,kBAAmB,6CACnBC,kCAAmC,6CACnCM,gBAAiB,8CA2CjB,CAAC50B,EAAAA,GAAQy1B,WAxCiC,CAC1CvB,qBAAsB,6CACtBC,iBAAkB,6CAClBC,cAAe,6CACfC,kBAAmB,6CACnBC,kCAAmC,6CACnCM,gBAAiB,6CACjBK,oBAAqB,8CAkCrB,CAACj1B,EAAAA,GAAQg0B,OA/B6B,CACtCE,qBAAsB,6CACtBC,iBAAkB,6CAClBC,cAAe,6CACfC,kBAAmB,6CACnBC,kCAAmC,6CACnCM,gBAAiB,6CACjBK,oBAAqB,+CA6CVS,GAjByBp3D,OAAAyR,OAAA,GACjCq2B,EAAAA,GAAiBpT,QAAmB,CAACuC,EAAMm8B,KAC5Cn8B,EAAKm8B,GAAWqD,EAAuBrD,GAASwC,qBACzC3+B,IACN,CAAC,IAG4Bj3B,OAAAyR,OAAA,GAC7Bq2B,EAAAA,GAAiBpT,QAAmB,CAACuC,EAAMm8B,KAC5C,MAAM2C,EAAoBU,EAAuBrD,GAAS2C,kBAI1D,OAHIA,IACF9+B,EAAKm8B,GAAW2C,GAEX9+B,CAAI,GACV,CAAC,IAG0Bj3B,OAAAyR,OAAA,GAC3Bq2B,EAAAA,GAAiBpT,QAAmB,CAACuC,EAAMm8B,KAC5Cn8B,EAAKm8B,GAAWqD,EAAuBrD,GAASyC,iBACzC5+B,IACN,CAAC,K,GAMmD+9B,EACvD,8CAMCtzB,EAAAA,GAAQC,QAMRD,EAAAA,GAAQC,QAGmCqzB,EAAwB,8CAGnEtzB,EAAAA,GAAQC,QAIRD,EAAAA,GAAQC,QAGkB3hC,OAAAyR,OAAA,GACxBq2B,EAAAA,GAAiBpT,QAAmB,CAACuC,EAAMm8B,KAC5Cn8B,EAAKm8B,GAAWqD,EAAuBrD,GAAS0C,cACzC7+B,IACN,CAAC,IAG6Cj3B,OAAAyR,OAAA,GAC9Cq2B,EAAAA,GAAiBpT,QAAmB,CAACuC,EAAMm8B,KAC5C,MAAM4C,EAAoCS,EAAuBrD,GAAS4C,kCAI1E,OAHIA,IACF/+B,EAAKm8B,GAAW4C,GAEX/+B,CAAI,GACV,CAAC,IAG8Bj3B,OAAAyR,OAAA,GAC/BujD,EAAwB,+CAI1BtzB,EAAAA,GAAQC,QAGqB3hC,OAAAyR,OAAA,GAC3Bq2B,EAAAA,GAAiBpT,QAAmB,CAACuC,EAAMm8B,KAC5C,MAAMkD,EAAkBG,EAAuBrD,GAASkD,gBAIxD,OAHIA,IACFr/B,EAAKm8B,GAAWkD,GAEXr/B,CAAI,GACV,CAAC,IAGqD6Q,EAAAA,GAAiBpT,QAAmB,CAACuC,EAAMm8B,KACpG,MAAM8C,EAA4BO,EAAuBrD,GAAS8C,0BAIlE,OAHIA,IACFj/B,EAAKm8B,GAAW8C,GAEXj/B,CAAI,GACV,CAAC,G,+lLC9VJ,MAAMogC,EAAY,IAAIC,QAaf,SAASC,IAAmE,IAA7C,QAAEnE,EAAU,GAAyB/oC,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAG,CAAC,EAC7E,MAAMmtC,GAASC,EAAAA,EAAAA,GAAU,CAAErE,YAE3B,OAAOzrD,EAAAA,EAAAA,UAAQ,IAdV,SAAwB6vD,GAC7B,IAAKA,EAAQ,OAEb,MAAM,UAAEE,GAAcF,EAEhBG,EAAW,IAAIC,EAAAA,EAAaF,EAAWG,EAAAA,EAAQh4D,IAErD,OADAw3D,EAAUhM,IAAImM,EAAQG,GACfA,CACT,CAMuBG,CAAeN,IAAS,CAACpE,EAASoE,GACzD,CCPA,MAAQO,GAAKC,GAAiBC,EAGvB,SAASC,EACdC,EACAC,GAEW,IADXC,IAAoBhuC,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,KAAAA,UAAA,GAEpB,MAAM,SAAEstC,EAAQ,QAAExrB,IAAYknB,EAAAA,EAAAA,gBACxBiF,EAAiBf,IAEvB,OAAO5vD,EAAAA,EAAAA,UAAQ,KACb,IAAKwwD,IAAwBC,EAAK,OAAO,KACzC,IAAI53D,EAGJ,GAF6CA,EAAV,kBAAxB23D,EAA4CA,EACxCA,EAAoBr2B,EAAAA,KAC9BthC,EAAS,OAAO,KAErB,IAAK,IAAD+3D,EAAAC,EACF,OAAOC,EAAAA,EAAAA,IACLj4D,EACA43D,EACAT,GAAoB,OAARA,QAAQ,IAARA,GAAiB,QAATY,EAARZ,EAAUr5B,eAAO,IAAAi6B,GAAjBA,EAAmBnF,SAAWtrB,EAAAA,GAAiB/+B,SAAiB,OAAR4uD,QAAQ,IAARA,GAAiB,QAATa,EAARb,EAAUr5B,eAAO,IAAAk6B,OAAT,EAARA,EAAmBpF,SACnFuE,EACAW,EACJD,GAAwBlsB,EAAUA,OAAU3jC,EAEhD,CAAE,MAAOqM,GAEP,OADAspB,QAAQtpB,MAAM,yBAA0BA,GACjC,IACT,IACC,CAACsjD,EAAqBC,EAAKT,EAAUU,EAAsBlsB,GAChE,CAEO,SAASusB,EAAqBL,GACnC,OAAOH,EAAmBr1B,EAAAA,GAAuBu1B,EAAKC,EACxD,CAEO,SAASpE,EAAiBD,EAA8BqE,GAC7D,OAAOH,EAAmBlE,EAAU2E,EAAUN,EAChD,CAEO,SAASO,EAA6B5E,EAA8BqE,GACzE,OAAOH,EAAyBlE,EAAU6E,EAAgBR,EAC5D,CAEO,SAAStF,IAGd,OAAOmF,EAFoBd,EAAoBt1B,EAAAA,IAEmBk2B,GAAc,EAClF,C,qFCvDO,SAASc,EACd7sD,EACA8/B,EACAC,EACA7B,GAEA,MAAM6pB,GAAWC,EAAAA,EAAAA,IAAsB,OAALhoD,QAAK,IAALA,OAAK,EAALA,EAAOzL,SAAS,IAK5C,OAAEoH,EAAM,QAAEG,IAAYq5C,EAAAA,EAAAA,KAC1Bh1C,EAAAA,EAAAA,cAAYsH,UACV,IAAKq4B,IAAUC,EAAS,OACxB,MAAMF,QAA0B,OAARkoB,QAAQ,IAARA,OAAQ,EAARA,EAAUloB,UAAUC,EAAOC,IACnD,OAAgB,OAATF,QAAS,IAATA,OAAS,EAATA,EAAWljC,UAAU,GAC3B,CAACmjC,EAAOC,EAASgoB,IACpB7pB,GAGI8H,EAAkB,OAANrqC,QAAM,IAANA,OAAM,EAANA,EAAQgB,WACpBkjC,GAAYnkC,EAAAA,EAAAA,UAAQ,IAAOsE,GAASgmC,EAAYA,OAAYzpC,GAAY,CAACyD,EAAOgmC,IAEtF,OAAOtqC,EAAAA,EAAAA,UAAQ,MAASoxD,eAAgBjtB,EAAWktB,UAAWjxD,KAAY,CAAC+jC,EAAW/jC,GACxF,C,wICvBO,IAAKkxD,EAAa,SAAbA,GAAa,OAAbA,EAAa,kBAAbA,EAAa,4BAAbA,EAAa,kBAAbA,EAAa,oBAAbA,CAAa,MAiClB,SAASC,EACdC,EACAltD,EACA+/B,EACAotB,GAWA,MAAM,QAAEhG,IAAYC,EAAAA,EAAAA,gBAGdgG,EA5CR,SACEF,EACAltD,EACA+/B,EACAotB,GAEA,MAAM,QAAEjtB,IAAYknB,EAAAA,EAAAA,gBAEdiG,EAAkBF,EAAqBntD,EAAO+/B,IAC9C,eAAE+sB,IAAmBD,EAAAA,EAAAA,GAAuB7sD,EAAc,OAAPkgC,QAAO,IAAPA,EAAAA,OAAW3jC,EAAWwjC,EAASstB,GAExF,OAAO3xD,EAAAA,EAAAA,UAAQ,IACRwxD,GAAoBntB,GAGpB+sB,EAGE,IAAI7tD,EAAAA,EAAU6tD,GAAgB3oB,WAAW+oB,GAC5CG,EACEL,EAAcM,QACdN,EAAcO,aAChBP,EAAcQ,SAVuBR,EAAcS,SAWtD,CAACP,EAAiBG,EAAiBttB,EAAS+sB,GACjD,CAoBwBY,CAA2BR,EAAiBltD,EAAO+/B,EAASotB,GAE5EQ,GAAgB3F,EAAAA,EAAAA,IAAsB,OAALhoD,QAAK,IAALA,OAAK,EAALA,EAAOzL,SAExC0rC,GAAU9/B,EAAAA,EAAAA,cAAYsH,UAC1B,SAASmmD,EAAWhlD,GAClBspB,QAAQkuB,KAAK,GAADziD,QAAS,OAALqC,QAAK,IAALA,OAAK,EAALA,EAAO/C,SAAU,QAAO,qBAAqB2L,EAE/D,CAGA,GAAIwkD,IAAkBJ,EAAcO,aAClC,OAAOK,EAAW,oCACb,IAAKzG,EACV,OAAOyG,EAAW,cACb,IAAK5tD,EACV,OAAO4tD,EAAW,YACb,IAAKD,EACV,OAAOC,EAAW,yBACb,IAAKV,EACV,OAAOU,EAAW,6BACb,IAAK7tB,EACV,OAAO6tB,EAAW,cAGpB,IAAIC,GAAW,EACf,MAAMC,QAAqBH,EAAcI,YAAY9tB,QAAQF,EAASiuB,EAAAA,IAAYjP,OAAM,KAEtF8O,GAAW,EACJF,EAAcI,YAAY9tB,QAAQF,EAASmtB,MAGpD,OAAOS,EACJ1tB,QAAQF,EAAS8tB,EAAWX,EAAkBc,EAAAA,GAAY,CACzDC,UAAUC,EAAAA,EAAAA,GAAmBJ,KAE9Bv6D,MAAM46D,IACE,CACLA,WACAhW,aAAcn4C,EAAMzL,QACpB65D,eAAgBruB,EAChBJ,OAAQutB,MAGXnO,OAAOn2C,IACNglD,EAAWhlD,GAEJ,CACLA,MAAOy9B,OAAOz9B,MAEhB,GACH,CAACwkD,EAAeptD,EAAO2tD,EAAeT,EAAiBntB,EAASonB,IAEnE,MAAO,CAACiG,EAAentB,EACzB,C,sFClEO,SAASsY,EAA0BJ,GACxC,MAAMgP,GAAUD,EAAAA,EAAAA,MACVH,GAAuBC,EAAAA,EAAAA,OAIrBrrD,OAAQwB,GArDX,SAAsBg7C,GAC3B,MAAM4P,GAAWC,EAAAA,EAAAA,IAAiB7P,GAAc,GAEhD,OAAOyP,EAAAA,EAAAA,KACLznD,EAAAA,EAAAA,cAAYsH,UACV,GAAK0wC,GAAiB4P,EACtB,aAAaA,EAAS5qD,MAAM,GAC3B,CAACg7C,EAAc4P,IAEtB,CA4C2BsG,CAAalW,IAC9Bx8C,OAAQsB,GA3CX,SAAwBk7C,GAC7B,MAAM4P,GAAWC,EAAAA,EAAAA,IAAiB7P,GAAc,GAEhD,OAAOyP,EAAAA,EAAAA,KACLznD,EAAAA,EAAAA,cAAYsH,UACV,GAAK0wC,GAAiB4P,EACtB,aAAaA,EAAS9qD,QAAQ,GAC7B,CAACk7C,EAAc4P,IAEtB,CAkC6BuG,CAAenW,IAClCx8C,OAAQe,GAjCX,SAA0By7C,GAC/B,MAAM4P,GAAWC,EAAAA,EAAAA,IAAiB7P,GAAc,GAEhD,OAAOyP,EAAAA,EAAAA,KACLznD,EAAAA,EAAAA,cAAYsH,UACV,GAAK0wC,GAAiB4P,EACtB,aAAaA,EAASrrD,UAAU,GAC/B,CAACy7C,EAAc4P,IAEtB,CAwB+BwG,CAAiBpW,IACtCx8C,OAAQoC,GAvBX,SAAsBo6C,GAC3B,OAAOyP,EAAAA,EAAAA,KACLznD,EAAAA,EAAAA,cAAYsH,UACV,GAAK0wC,EACL,MAAM,uFAANx6C,OAA8Fw6C,EAAY,eACzG,CAACA,IAER,CAgB2BoK,CAAapK,GAEtC,OAAOz8C,EAAAA,EAAAA,UAAQ,KAEb,GAA4B,kBAAjBy8C,GAA8BA,IAEnCz7C,GAAyB,IAAbA,IAAoBO,GAAWE,EAIjD,OAAO,IAAIqxD,EAAAA,EAAW,CAAEj6D,QAAS4jD,EAAcz7C,WAAUS,OAAMF,SAAQc,QAAO,GAC7E,CAACo6C,EAAcgP,EAAShqD,EAAMF,EAAQP,EAAUqB,EAAMgpD,GAC3D,C,+ECzDoB55C,QACW,cAA7BgW,OAAOnM,SAASy3C,UAEe,UAA7BtrC,OAAOnM,SAASy3C,UAEhBtrC,OAAOnM,SAASy3C,SAASC,MAAM,2D,wICdpB,SAASC,EAAex6D,GAAiE,IAA9D6iB,UAAU,SAAEM,EAAQ,OAAE5H,IAA+Bvb,EAI7F,OAHAyI,EAAAA,EAAAA,YAAU,KACRgyD,EAAAA,GAAAA,SAAiB,GAADjxD,OAAI2Z,GAAQ3Z,OAAG+R,GAAS,GACvC,CAAC4H,EAAU5H,IACP,IACT,C,4FCXO,MAAMm/C,EAAqB,E,2FCSlC,MAAMl1D,GAAYC,EAAAA,EAAAA,IAAYf,IACrB,CACLoB,QAAS,CACPrB,WAAYC,EAAM2E,QAAQ5E,WAAW0H,OACrCD,OAAO,aAAD1C,OAAe9E,EAAM2E,QAAQ5E,WAAW6E,QAC9CtE,aAAc,OACdF,QAAS,YACTyR,UAAW,OACXtM,SAAU,OACVmT,UAAW,SAEbvK,OAAQ,CACNlN,QAAS,OACTyD,WAAY,SACZqB,eAAgB,SAChBxB,OAAQ,OACRnE,QAAS,SACTL,WAAY,UACZkgB,UAAW,kCACX3f,aAAc,MACdD,OAAQ,eAKD41D,EAAoB,eAYlB,SAASC,EAAkB56D,GAQtC,IARuC,KACzC0M,EAAI,QACJE,EAAO,OACPiuD,GAKD76D,EACC,MAAMgG,EAAUR,KAETs1D,EAAQC,IAAa5tD,EAAAA,EAAAA,WAAS,GAE/BzI,GAAQC,EAAAA,EAAAA,KAQd,OACEX,EAAAA,EAAAA,MAAC0Q,EAAAA,EAAK,CACJhF,MAAKC,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACPiN,KAAMA,EACNE,QAASA,EACTqU,KAAK,UACLpR,YAAa,CACXhL,GAAI,CACF,qBAAsB,CACpBI,gBAAiBP,EAAM2E,QAAQ5E,WAAW2L,UAG9CjM,SAAA,EAEFC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAAAnC,UACFC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAAAT,UACTC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,gBAGJuE,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAACC,UAAWP,EAAQF,QAAQ3B,SAAA,EAC9BC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAAAnC,UACFC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAAAT,UACTC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,gBAQJ2E,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAAC0K,GAAG,OAAM7M,UACZC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAAAT,UACTC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,gBAOJ2E,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAAC0K,GAAG,OAAM7M,UACZC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAAAT,UACTC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,gBAMJ2E,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAAC0K,GAAG,OAAM7M,UACZC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAAAT,UACTC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,SAAAu7D,WAAA,CAAAvpB,GAEErtC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACQ,MAAM,UAAUyP,UAAU,iBAO5CzQ,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAAC0K,GAAG,OAAM7M,UACZC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAAAT,UACTC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,SAAAu7D,WAAA,CAAAvpB,GAEErtC,EAAAA,EAAAA,KAAC0Q,EAAAA,GAAU,CAACC,KAAK,2CAKzB3Q,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAAC0K,GAAG,OAAM7M,UACZH,EAAAA,EAAAA,MAACyF,EAAAA,GAAI,CACHC,WAAS,EACTN,WAAW,SACXvE,GAAI,CACFE,OAAQ,UACRsgB,WAAY,OACZlc,IAAK,QACLmsB,SAAU,UAEZ9wB,QAASA,IAAMu2D,GAAWD,GAAQ32D,SAAA,EAElCC,EAAAA,EAAAA,KAAC6Q,EAAAA,EAAQ,CACPC,QAAS4lD,EACTnuD,SAAUN,IAA8B,IAA3B8I,QAAQ,QAAED,IAAW7I,EAChC0uD,EAAU7lD,EAAQ,KAGtB9Q,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CACTC,GAAI,CACFQ,SAAU,OACVmV,UAAW,cACXrW,UAEFC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,mBAIN2E,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAAC0K,GAAG,OAAM7M,UACZC,EAAAA,EAAAA,KAACgR,EAAAA,EAAM,CAAC9E,WAAS,EAAC+E,QAAQ,YAAYxL,KAAK,QAAQyL,UAAWwlD,EAAQt2D,QAtGzDy2D,MAnBd3nD,eAA8BwnD,SAC7BzO,EAAAA,EAAQY,QAAQ0N,EAAmBl+C,KAAKC,UAAUo+C,GAC1D,CAkBII,EAAe,GACftuD,IACAiuD,GAAQ,EAmGsF12D,UACxFC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,gBAGJ2E,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAAC0K,GAAG,MAAK7M,UACXC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACS,SAAS,OAAMlB,UACzBC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,iBAKV,CCrKA,MAAM+F,GAAYC,EAAAA,EAAAA,IAAYf,IACrB,CACLgF,UAAW,CACT5E,QAAS,YACTL,WAAY,4DACZ,CAACC,EAAM0C,YAAYC,KAAK,OAAQ,CAC9BvC,QAAS,aAGb+N,OAAQ,CACNlN,QAAS,OACTyD,WAAY,SACZqB,eAAgB,SAChBxB,OAAQ,OACRnE,QAAS,SACTL,WAAY,UACZkgB,UAAW,kCACX3f,aAAc,MACdD,OAAQ,UACR,CAACL,EAAM0C,YAAYC,KAAK,OAAQ,CAC9B4B,OAAQ,OACRnE,QAAS,UAEX,CAACJ,EAAM0C,YAAYC,KAAK,OAAQ,CAC9BkP,UAAW,YAMJ,SAAS4kD,IACtB,MAAMn1D,EAAUR,IACVd,GAAQC,EAAAA,EAAAA,MAEPy2D,EAAmBC,IAAwBluD,EAAAA,EAAAA,WAAS,IACpD2tD,EAAQC,IAAa5tD,EAAAA,EAAAA,WAAS,GAE/BjG,GAAcC,EAAAA,EAAAA,GAAczC,EAAM0C,YAAYC,KAAK,QAEzDoB,EAAAA,EAAAA,YAAU,KACR,WACE,MAAMqyD,QDdLxnD,iBACL,MAAMgoD,QAAoBjP,EAAAA,EAAQU,QAAQ4N,GAE1C,OADgBW,EAAmB7+C,KAAKO,MAAMs+C,GAAhB,EAEhC,CCU2BC,GAEnBR,EADa,SAAXD,IAAgC,IAAXA,EAK1B,EAPD,EAOI,GACH,IAMH,OAAQA,EAqCJ,MApCF92D,EAAAA,EAAAA,MAAAwL,EAAAA,SAAA,CAAArL,SAAA,EACEC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CACFzB,GAAI,CACFmL,SAAU,QACVkkB,OAAQ,EACRtiB,KAAM,EACN1H,MAAO,OACP8P,OAAQ0gD,GACRv2D,UAEFH,EAAAA,EAAAA,MAACyF,EAAAA,GAAI,CACH6Q,cAAepT,EAAc,SAAW,MACxCwC,WAAS,EACTN,WAAW,SACX7C,UAAWP,EAAQ0D,UAAUvF,SAAA,EAE7BC,EAAAA,EAAAA,KAACqF,EAAAA,GAAI,CAACM,MAAI,EAACC,IAAE,EAAA7F,UACXC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACQ,MAAM,eAAeC,SAAU6B,EAAc,OAAS,OAAO/C,UACvEC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,gBAGJ2E,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACC,UAAWP,EAAQ6M,OAAQrO,QA1BrBy2D,KACjBI,GAAqB,EAAK,EAyBgCl3D,UAClDC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACQ,MAAM,YAAYiF,WAAW,MAAMhF,SAAU6B,EAAc,OAAS,OAAO/C,UACrFC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,oBAKP27D,GACCh3D,EAAAA,EAAAA,KAACw2D,EAAkB,CACjBluD,KAAM0uD,EACNxuD,QAASA,IAAMyuD,GAAqB,GACpCR,OAAQA,IAAME,GAAU,KAExB,OAGV,C,0BCrGe,SAASS,IACtB,OACEx3D,EAAAA,EAAAA,MAAA,OACEkG,MAAM,MACNjB,OAAO,MACP/E,QAAQ,cACR2P,KAAK,OACLC,MAAM,6BACN2nD,WAAW,+BAA8Bt3D,SAAA,EAEzCC,EAAAA,EAAAA,KAAA,QAAM3E,GAAG,oBAAoBi8D,UAAU,iBAAiBpqD,EAAE,IAAIC,EAAE,IAAIrH,MAAM,MAAMjB,OAAO,MAAK9E,UAC1FC,EAAAA,EAAAA,KAAA,QAAM8F,MAAM,MAAMjB,OAAO,MAAM4K,KAAK,eAEtCzP,EAAAA,EAAAA,KAAA,KAAGwV,KAAK,0BAAyBzV,UAC/BC,EAAAA,EAAAA,KAAA,QAAMkN,EAAE,IAAIC,EAAE,IAAIrH,MAAM,MAAMjB,OAAO,MAAM4K,KAAK,sBAElD7P,EAAAA,EAAAA,MAAA,QAAAG,SAAA,EACEC,EAAAA,EAAAA,KAAA,WAAS3E,GAAG,WAAWk8D,oBAAoB,oBAAoBzxD,MAAM,IAAIjB,OAAO,IAAG9E,UACjFC,EAAAA,EAAAA,KAAA,OAAKoN,UAAU,sBAAsBwC,UAAU,4DAEjD5P,EAAAA,EAAAA,KAAA,SACE3E,GAAG,qBACHyK,MAAM,MACNjB,OAAO,MACPuI,UAAU,46gGAKpB,C,0BCzBA,SAASoqD,IACP,OACE53D,EAAAA,EAAAA,MAAA,OAAKkG,MAAM,KAAKjB,OAAO,KAAK/E,QAAQ,YAAY2P,KAAK,OAAOC,MAAM,6BAA4B3P,SAAA,EAC5FC,EAAAA,EAAAA,KAAA,KAAG2P,SAAS,0BAAyB5P,UACnCC,EAAAA,EAAAA,KAAA,QACEE,EAAE,gNACFuP,KAAK,aAGTzP,EAAAA,EAAAA,KAAA,QAAAD,UACEC,EAAAA,EAAAA,KAAA,YAAU3E,GAAG,oBAAmB0E,UAC9BC,EAAAA,EAAAA,KAAA,QAAM8F,MAAM,KAAKjB,OAAO,KAAK4K,KAAK,gBAK5C,CAOM,SAAUgoD,EAAU77D,GAAuC,IAAtC,SAAEmE,EAAQ,QAAEyI,GAA0B5M,EAC/D,OACEgE,EAAAA,EAAAA,MAACiI,EAAAA,EAAI,CAACpH,GAAI,CAAEqF,MAAO,MAAOjB,OAAQ,OAAQxE,WAAY,UAAWK,QAAS,UAAYqE,IAAI,SAAQhF,SAAA,EAChGC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CACTC,GAAI,CACFO,MAAO,UACPL,OAAQ,UACR,2BAA4B,CAAEM,SAAU,SACzClB,SAEAA,IAGFyI,GACCxI,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACzB,GAAI,CAAEE,OAAQ,WAAaP,QAASoI,EAAOzI,UAC9CC,EAAAA,EAAAA,KAACw3D,EAAS,MAEV,OAGV,CC7Ce,SAASE,IACtB,OACE13D,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CACFzB,GAAI,CACFmL,SAAU,QACV2B,IAAK,IACLC,KAAM,IACNmU,MAAO,IACPkO,cAAe,OACfjgB,UAAW,QACXvP,WAAY,2FACZyF,MAAO,QACPjB,OAAQ,QACR+Q,OAAQ,OAIhB,CCfA,SAAS4hD,IACP,OACE53D,EAAAA,EAAAA,MAAA,OAAKkG,MAAM,KAAKjB,OAAO,KAAK/E,QAAQ,YAAY2P,KAAK,OAAOC,MAAM,6BAA4B3P,SAAA,EAC5FC,EAAAA,EAAAA,KAAA,KAAG2P,SAAS,0BAAyB5P,UACnCC,EAAAA,EAAAA,KAAA,QACEE,EAAE,gNACFuP,KAAK,aAGTzP,EAAAA,EAAAA,KAAA,QAAAD,UACEC,EAAAA,EAAAA,KAAA,YAAU3E,GAAG,oBAAmB0E,UAC9BC,EAAAA,EAAAA,KAAA,QAAM8F,MAAM,KAAKjB,OAAO,KAAK4K,KAAK,gBAK5C,CAEe,SAASkoD,EAAO/7D,GAAwC,IAAvC,QAAEwE,GAAkCxE,EAClE,MAAM+a,GAAUC,EAAAA,EAAAA,MAMhB,OACEhX,EAAAA,EAAAA,MAACyF,EAAAA,GAAI,CAACC,WAAS,EAACN,WAAW,SAASvE,GAAI,CAAEoE,OAAQ,OAAQxE,WAAY,UAAWK,QAAS,UAAWX,SAAA,EACnGC,EAAAA,EAAAA,KAACqF,EAAAA,GAAI,CAACM,MAAI,EAACC,IAAE,EAACxF,QANMw3D,KACtBjhD,EAAQvM,KAAK,QAAQ,EAKoBrK,UACrCC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACC,GAAI,CAAEO,MAAO,UAAWL,OAAQ,UAAW,2BAA4B,CAAEM,SAAU,SAAWlB,UACxGC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,gBAIJ2E,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACzB,GAAI,CAAEE,OAAQ,WAAaP,QAASA,EAAQL,UAC/CC,EAAAA,EAAAA,KAACw3D,EAAS,QAIlB,C,kDCmDA,MACA,GAAe,IAA0B,8DCDzC,MACA,GAAe,IAA0B,+DCzF1B,SAASK,KACtB,MAAMv3D,GAAQC,EAAAA,EAAAA,KAEd,OAAOP,EAAAA,EAAAA,KAAA,OAAKsN,IAA4B,SAAvBhN,EAAM2E,QAAQ6a,KAAkBg4C,GAAWtyD,GAAMsQ,IAAI,GAAGhQ,MAAM,OACjF,CCLe,SAASiyD,KACtB,OACE/3D,EAAAA,EAAAA,KAACg4D,GAAAA,EAAU,CAACj3C,eAAa,EAACtQ,UAAWyQ,EAAAA,GAAMnK,GAAG,IAAGhX,UAC/CC,EAAAA,EAAAA,KAAC63D,GAAI,KAGX,C,kJCGO,SAASI,GAAcr8D,GAAiD,IAAhD,MAAE4V,EAAK,KAAEb,EAAI,QAAE3U,GAA8BJ,EAC1E,MAAMs8D,GAAUzkD,EAAAA,EAAAA,QAAgB,MAahC,OACE7T,EAAAA,EAAAA,MAACiI,EAAAA,EAAI,CAAC9C,IAAI,QAAOhF,SAAA,EACfC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CACFzB,GAAI,CACFC,QAAS,UACTL,WAAY,UACZO,aAAc,OACdI,MAAO,SACPC,SAAU,QAEZwP,UAAU,OAAM1Q,SAEfyR,KAGHxR,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CACTiQ,UAAU,OACVhQ,GAAI,CACFsF,WAAY,eACZpF,OAAQ,UACRK,MAAO,eACPC,SAAU,QAEZb,QAlCa+3D,KACH,IAADC,EAATF,IACK,OAAPA,QAAO,IAAPA,GAAgB,QAATE,EAAPF,EAASnkD,eAAO,IAAAqkD,GAAhBA,EAAkB92D,OACpB,EA+BwBvB,UAEnBs4D,EAAAA,GAAAA,GAAQr8D,MAGXgE,EAAAA,EAAAA,KAACs4D,GAAAA,EAAI,CAAC52D,QAAgB,OAAP1F,QAAO,IAAPA,EAAAA,EAAW,GAAI2F,MAAI,EAACF,IAAKy2D,KAExCl4D,EAAAA,EAAAA,KAAC2N,EAAAA,GAAK,CACJL,IAAI,4BACJ7M,GAAI,CAAEqF,MAAO,OAAQjB,OAAQ,OAAQlE,OAAQ,WAC7CP,QAtCmBm4D,KAClB5nD,IACLsO,EAAAA,GAAAA,GAAiBtO,EAAM,oBAAoB,MAwC/C,CC3DO,SAAS6nD,KACd,MAAM51D,GAAY2sC,EAAAA,EAAAA,MAElB,OACEvvC,EAAAA,EAAAA,KAACi4D,GAAc,CACbj8D,QAAS4G,GAAYgiD,EAAAA,GAAAA,GAAmBhiD,GAAa,GACrD4O,MAAKjG,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACPsV,KAAM/N,GAAY61D,EAAAA,GAAAA,GAAa71D,GAAa,IAGlD,CCVe,SAAS81D,KACtB,MAAM91D,GAAY2sC,EAAAA,EAAAA,MAElB,OACEvvC,EAAAA,EAAAA,KAACi4D,GAAc,CACbj8D,QAAS4G,EACT4O,MAAKjG,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACPsV,KAAM/N,GAAY61D,EAAAA,GAAAA,GAAa71D,QAAaoB,GAGlD,C,uCCVA,MAAM5C,IAAYC,EAAAA,EAAAA,IAAYf,IAAY,CACxCihB,eAAgB,CACd3V,SAAU,YAEZN,MAAO,CACLrK,SAAUX,EAAMW,SAAS03D,GACzB1yD,WAAY,KAEdub,WAAY,CACVC,aAAc,QAEhBlX,MAAO,CACL+E,UAAW,QACX8G,UAAW,aAEbsL,YAAa,CACX9V,SAAU,WACV+V,MAAO,EACPpU,IAAK,MACLqC,UAAW,qBACXjP,OAAQ,UACR,UAAW,CACTK,MAAOV,EAAM2E,QAAQ+V,UAAU49C,WAKtB,SAASC,GAAkBj9D,GAQtC,IARuC,KACzC0M,EAAI,SACJqE,EAAQ,UACRoV,GAKDnmB,EACC,MAAMgG,EAAUR,KAEhB,OACExB,EAAAA,EAAAA,MAAC2iB,GAAAA,EAAM,CAACja,KAAMA,EAAKvI,SAAA,EACjBC,EAAAA,EAAAA,KAACyiB,GAAAA,EAAW,CAAA1iB,UACVC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAAC2B,UAAWP,EAAQ2f,eAAgB9Q,UAAU,MAAK1Q,UAC5DC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAAC2B,UAAWP,EAAQ0J,MAAOmF,UAAU,OAAOzP,MAAM,cAAajB,UACxEC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,kBAIN2E,EAAAA,EAAAA,KAAC0iB,GAAAA,EAAa,CAAA3iB,UACZH,EAAAA,EAAAA,MAACyF,EAAAA,GAAI,CAACC,WAAS,EAAC2U,QAAS,EAAEla,SAAA,EACzBC,EAAAA,EAAAA,KAACqF,EAAAA,GAAI,CAACM,MAAI,EAACC,GAAI,GAAG7F,UAChBC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACqL,WAAW,UAAS9L,UAC9BC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,gBAMJuE,EAAAA,EAAAA,MAACyF,EAAAA,GAAI,CAACC,WAAS,EAACK,MAAI,EAACU,eAAe,WAAW4T,QAAS,EAAGjV,WAAW,SAAQjF,SAAA,EAC5EC,EAAAA,EAAAA,KAACqF,EAAAA,GAAI,CAACM,MAAI,EAAA5F,UACRC,EAAAA,EAAAA,KAACgR,EAAAA,EAAM,CAAC8nD,kBAAgB,EAAC5sD,WAAS,EAAC2Q,KAAK,SAAS5L,QAAQ,WAAWjQ,MAAM,UAAUZ,QAASuM,EAAS5M,UACpGC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,gBAGJ2E,EAAAA,EAAAA,KAACqF,EAAAA,GAAI,CAACM,MAAI,EAAA5F,UACRC,EAAAA,EAAAA,KAACgR,EAAAA,EAAM,CAAC8nD,kBAAgB,EAAC5sD,WAAS,EAAC2Q,KAAK,SAAS5L,QAAQ,YAAYjQ,MAAM,UAAUZ,QAAS2hB,EAAUhiB,UACtGC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,yBAQhB,CCzEe,SAAS09D,GAAan9D,GAA0E,IAAzE,SAAEmE,EAAQ,SAAEi5D,GAA0Dp9D,EAC1G,MAAOq9D,EAAmBC,IAAwBnwD,EAAAA,EAAAA,WAAS,GACrDowD,GAASC,EAAAA,EAAAA,MAQf,OACEx5D,EAAAA,EAAAA,MAAAwL,EAAAA,SAAA,CAAArL,SAAA,EACEC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAAC9B,QAASA,IAAM84D,GAAqB,GAAMn5D,SAAEA,KACjDC,EAAAA,EAAAA,KAAC64D,GAAkB,CACjBvwD,KAAM2wD,EACNl3C,UAXkB7S,gBAChBiqD,IACND,GAAqB,GACjBF,GAAUA,GAAU,EASpBrsD,SAAUA,IAAMusD,GAAqB,OAI7C,C,4ECjBO,SAASG,KACd,MAAMz2D,GAAYC,EAAAA,EAAAA,MAEZy2D,GAAYxL,EAAAA,GAAAA,IAAa5mD,GAAAA,GAAIlL,UAC3BoH,OAAQqpC,IAAiBjpC,EAAAA,GAAAA,IAAgB0D,GAAAA,GAAIlL,QAAS4G,GAE9D,OACEhD,EAAAA,EAAAA,MAACiI,EAAAA,EAAI,CAACpH,GAAI,CAAEC,QAAS,cAAgB2T,QAAQ,SAAS7D,UAAQ,EAACjK,MAAM,SAAQxG,SAAA,EAC3EC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACC,GAAI,CAAEQ,SAAU,OAAQgF,WAAY,IAAKC,OAAQ,aAAclF,MAAO,gBAAiBjB,SAChG0sC,GAAgB6sB,GACb7yD,EAAAA,GAAAA,KACEvC,EAAAA,GAAAA,GAAiBuoC,EAAcvlC,GAAAA,GAAI/C,UAAUwC,aAAa2yD,EAAU9vB,UAAUplC,WAC9E,EACA,KAEF,QAGNxE,EAAAA,EAAAA,MAACY,EAAAA,EAAU,CAACC,GAAI,CAAEQ,SAAU,OAAQiF,OAAQ,aAAcnG,SAAA,CACvD0sC,GACGxoC,EAAAA,GAAAA,IAAgCC,EAAAA,GAAAA,GAAiBuoC,EAAcvlC,GAAAA,GAAI/C,UAAUC,WAAY,GACzF,KAAM,IAAI,WAKtB,CCVe,SAASs0D,KACtB,MAAMp4D,GAAQC,EAAAA,EAAAA,MACR8hB,GAActf,EAAAA,EAAAA,GAAczC,EAAM0C,YAAYC,KAAK,QAElDqF,EAAMkS,IAAWzR,EAAAA,EAAAA,WAAS,GAE3BwwD,GAAY9lD,EAAAA,EAAAA,QAA8B,MAC1C+lD,GAAW/lD,EAAAA,EAAAA,QAAOnL,GAElB1F,GAAYC,EAAAA,EAAAA,MACZyW,GAAcC,EAAAA,EAAAA,MACd4/C,GAASC,EAAAA,EAAAA,MACTziD,GAAUC,EAAAA,EAAAA,MACV6iD,GAAgBjrD,EAAAA,EAAAA,OAEf,CAAEkrD,IAAiBrgD,EAAAA,EAAAA,MAMpBvE,EAAe/N,IACfwyD,EAAUxlD,SAAWwlD,EAAUxlD,QAAQuyC,SAASv/C,EAAMgK,SAC1DyJ,GAAQ,EAAM,GAQhBnW,EAAAA,EAAAA,YAAU,KACJk1D,EAAUxlD,UAAgC,IAArBylD,EAASzlD,UAA6B,IAATzL,GACpDixD,EAAUxlD,QAAQF,QAEpB2lD,EAASzlD,QAAUzL,CAAI,GACtB,CAACA,IAEJ,MAAMqxD,GAAiB/xD,EAAAA,EAAAA,cAAY,KACjC+O,EAAQvM,KAAK,UAAU,GACtB,CAACuM,IAEJ,OACE/W,EAAAA,EAAAA,MAACiI,EAAAA,EAAI,CAAC9C,IAAI,QAAOhF,SAAA,CACduZ,GACCtZ,EAAAA,EAAAA,KAAC2N,GAAAA,GAAK,CACJL,IAAI,qBACJ7M,GAAI,CAAEqF,MAAO,OAAQjB,OAAQ,OAAQlE,OAAQ,WAC7CP,QAASu5D,IAET,MAEJ35D,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACT,IAAK83D,EAAWn5D,QAASkZ,EAnCbkG,KACnBhF,GAASg/C,IAAcA,GAAS,EAQNtqD,gBACpBiqD,IACNO,GAAc,EAAK,EAwB+Dj5D,GAAI,CAAEmV,OAAQ,IAAK7V,SAChGuZ,GACC1Z,EAAAA,EAAAA,MAACiI,EAAAA,EAAI,CACH9C,IAAI,SACJtE,GAAI,CACFC,QAAS,mBACTE,aAAc,OACdP,WAAYC,EAAM2E,QAAQ5E,WAAW0H,OACrCpH,OAAQ,WACRZ,SAAA,EAEFC,EAAAA,EAAAA,KAACsO,GAAAA,GAAc,CAAC7I,KAAK,UACrBzF,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACC,GAAI,CAAEO,MAAO,eAAgBiF,WAAY,KAAMlG,SACxD6C,GAAYy1D,EAAAA,GAAAA,GAAQz1D,EAAUwB,YAAc,MAE/CpE,EAAAA,EAAAA,KAAC45D,GAAAA,EAAW,CAACn0D,KAAK,OAAOo0D,YAAY,MAAM74D,MAAM,gBAGnDhB,EAAAA,EAAAA,KAACgR,EAAAA,EAAM,CAACC,QAAQ,YAAYxQ,GAAI,CAAEqF,MAAO,QAASjB,OAAQ,OAAQjE,aAAc,QAASb,UACvFC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,gBAKN2E,EAAAA,EAAAA,KAAC85D,GAAAA,EAAM,CACLC,UAAW13C,EAAc,eAAiB,aAC1C/Z,KAAMA,EACNgL,SAAUimD,EAAUxlD,QACpBye,UAAMxuB,EACNyc,YAAU,EACVu5C,eAAa,EACbC,cAAe,CACbC,UAAW,CACT,CACEt1D,KAAM,SACNolB,QAAS,CACPsa,OAAQ,CAACjiB,EAAc,IAAM,EAAG,QAKxCnN,MAAO,CACLU,OAAQ,KACR7V,SAEDnE,IAAA,IAAC,gBAAEk4B,GAAiBl4B,EAAA,OACnBoE,EAAAA,EAAAA,KAACm6D,GAAAA,EAAI,IAAKrmC,EAAe/zB,UACvBC,EAAAA,EAAAA,KAACo6D,GAAAA,EAAK,CAAAr6D,UACJC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CACFzB,GAAI,CACFqF,MAAO,QACPpF,QAAS,OACTE,aAAc,OACdkH,OAAO,oBACPzH,WAAY,WACZN,UAEFC,EAAAA,EAAAA,KAAC8wB,GAAAA,EAAiB,CAACC,YAAajc,EAAY/U,UAC1CH,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAAAnC,SAAA,EACFC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACzB,GAAI,CAAEmL,SAAU,WAAY2B,IAAK,OAAQoU,MAAO,QAAS5hB,UAC5DC,EAAAA,EAAAA,KAAC+4D,GAAa,CAACC,SAAUA,IAAMx+C,GAAQ,GAAOza,UAC5CC,EAAAA,EAAAA,KAAC2N,GAAAA,GAAK,CAACL,IAAI,qBAAqB7M,GAAI,CAAEqF,MAAO,OAAQjB,OAAQ,OAAQlE,OAAQ,kBAIjFX,EAAAA,EAAAA,KAACq5D,GAAe,KAEhBz5D,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CACFzB,GAAI,CACFyF,OAAQ,aACR7F,WAAY,UACZO,aAAc,MACdF,QAAS,QACTX,SAAA,EAEFC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CACTC,GAAI,CACFoL,WAAY,OACZ5K,SAAU,QACVlB,UAEFC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,cAGF2E,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACzB,GAAI,CAAEyF,OAAQ,cAAenG,UAChCC,EAAAA,EAAAA,KAACw4D,GAAc,OAGjBx4D,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACzB,GAAI,CAAEyF,OAAQ,cAAenG,UAChCC,EAAAA,EAAAA,KAAClD,GAAS,SAIb28D,IAAkB5rD,GAAAA,GAAUC,IAC3B9N,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CACFzB,GAAI,CACFyF,OAAQ,YACR7F,WAAY,wBACZO,aAAc,MACdF,QAAS,QACTX,UAEFC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CACTC,GAAI,CACFoL,WAAY,OACZ5K,SAAU,OACVD,MAAO,WACPjB,UAEFC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,eAOF,eAKP,MAKjB,CCvMO,MCsBMg/D,GAAa,EAEbC,GAAoB,EAEpBjkB,GAAkB,CAC7B,CACE35C,IAAK,OACLkI,KAAK,OACLka,KAAM,QACNy7C,SAAU,CACR,CAAE79D,IAAK,cAAekI,KAAK,cAAgBka,KAAM,QAASuT,KCnCjD,WACb,OACEryB,EAAAA,EAAAA,KAAA,OAAK8F,MAAM,KAAKjB,OAAO,KAAK/E,QAAQ,YAAY2P,KAAK,OAAOC,MAAM,6BAA4B3P,UAC5FC,EAAAA,EAAAA,KAAA,QACEkb,SAAS,UACTC,SAAS,UACTjb,EAAE,wWACFuP,KAAK,kBAIb,GDyBM,CAAE/S,IAAK,WAAYkI,KAAK,WAAaka,KAAM,YAAauT,KEpC/C,WACb,OACEryB,EAAAA,EAAAA,KAAA,OAAK8F,MAAM,KAAKjB,OAAO,KAAK/E,QAAQ,YAAY2P,KAAK,OAAOC,MAAM,6BAA4B3P,UAC5FC,EAAAA,EAAAA,KAAA,QACEkb,SAAS,UACTC,SAAS,UACTjb,EAAE,0mBACFuP,KAAK,kBAIb,KF4BE,CACE/S,IAAK,YACLkI,KAAK,YACLka,KAAM,cAER,CACEpiB,IAAK,aACLkI,KAAK,OACL21D,SAAU,CACR,CAAE79D,IAAK,OAAQkI,KAAK,OAASka,KAAM,SACnC,CAAEpiB,IAAK,gBAAiBkI,KAAK,kBAAoBka,KAAM,YAG3D,CACEpiB,IAAK,YACLkI,KAAK,YACLka,KAAK,cAEP,CACEpiB,IAAK,OACLkI,KAAK,OACL+L,KAAMC,EAAAA,IAER,CACElU,IAAK,cACLkI,KAAK,MACLka,KAAM,4BAER,CACEpiB,IAAK,eACLkI,KAAK,QACLka,KAAM,gBAER,CACEpiB,IAAK,MACLkI,KAAK,YACLka,KAAK,gBAEP,CACEpiB,IAAK,SACLkI,KAAK,SACLka,KAAK,WAEP,CACEpiB,IAAK,UACLkI,KAAK,UACLka,KAAK,YAEP,CACEpiB,IAAK,WACLkI,KAAK,YACL21D,SAAU,CACR,CAAE79D,IAAK,mBAAoBkI,KAAK,UAAY+L,KAAM,8BAA+B0hB,KG3FxE,WACb,OACEryB,EAAAA,EAAAA,KAAA,OAAK8F,MAAM,KAAKjB,OAAO,KAAK/E,QAAQ,YAAY2P,KAAK,OAAOC,MAAM,6BAA4B3P,UAC5FC,EAAAA,EAAAA,KAAA,QACEE,EAAE,0xCACFuP,KAAK,WAIb,GHmFM,CAAE/S,IAAK,oBAAqBkI,KAAK,WAAa+L,KAAM,gCAAiC0hB,KI5F5E,WACb,OACEryB,EAAAA,EAAAA,KAAA,OAAK8F,MAAM,KAAKjB,OAAO,KAAK/E,QAAQ,YAAY2P,KAAK,OAAOC,MAAM,6BAA4B3P,UAC5FC,EAAAA,EAAAA,KAAA,QACEE,EAAE,+XACFuP,KAAK,WAIb,GJoFM,CACE/S,IAAK,iBACLkI,KAAK,QACL+L,KAAM,4DACN0hB,KKjGO,WACb,OACEzyB,EAAAA,EAAAA,MAAA,OACEkG,MAAM,KACNjB,OAAO,KACP/E,QAAQ,YACR2P,KAAK,OACLC,MAAM,6BACN2nD,WAAW,+BAA8Bt3D,SAAA,EAEzCC,EAAAA,EAAAA,KAAA,QAAMkN,EAAE,IAAIC,EAAE,IAAIrH,MAAM,KAAKjB,OAAO,KAAK4K,KAAK,yBAC9C7P,EAAAA,EAAAA,MAAA,QAAAG,SAAA,EACEC,EAAAA,EAAAA,KAAA,WAAS3E,GAAG,gBAAgBk8D,oBAAoB,oBAAoBzxD,MAAM,IAAIjB,OAAO,IAAG9E,UACtFC,EAAAA,EAAAA,KAAA,OAAKoN,UAAU,sBAAsBwC,UAAU,yBAEjD5P,EAAAA,EAAAA,KAAA,SACE3E,GAAG,qBACHyK,MAAM,MACNjB,OAAO,MACPuI,UAAU,osiBAKpB,GL2EM,CAAE1Q,IAAK,kBAAmBkI,KAAK,SAAW+L,KAAM,8BAA+B0hB,KMnGtE,WACb,OACEryB,EAAAA,EAAAA,KAAA,OAAK8F,MAAM,KAAKjB,OAAO,KAAK/E,QAAQ,YAAY2P,KAAK,OAAOC,MAAM,6BAA4B3P,UAC5FC,EAAAA,EAAAA,KAAA,QACEE,EAAE,itBACFuP,KAAK,WAIb,GN2FM,CAAE/S,IAAK,mBAAoBkI,KAAK,UAAY+L,KAAM,uCAAwC0hB,KOpGjF,WACb,OACEzyB,EAAAA,EAAAA,MAAA,OAAKkG,MAAM,KAAKjB,OAAO,KAAK/E,QAAQ,YAAY2P,KAAK,OAAOC,MAAM,6BAA4B3P,SAAA,EAC5FC,EAAAA,EAAAA,KAAA,QAAMkN,EAAE,MAAMC,EAAE,MAAMrH,MAAM,KAAKjB,OAAO,KAAK21D,GAAG,IAAI/qD,KAAK,WACzDzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,yhDACFuP,KAAK,cAIb,GP2FM,CAAE/S,IAAK,kBAAmBkI,KAAK,SAAW+L,KAAM,kCAAmC0hB,KQrG1E,WACb,OACEryB,EAAAA,EAAAA,KAAA,OAAK8F,MAAM,KAAKjB,OAAO,KAAK/E,QAAQ,YAAY2P,KAAK,OAAOC,MAAM,6BAA4B3P,UAC5FC,EAAAA,EAAAA,KAAA,QACEE,EAAE,okCACFuP,KAAK,WAIb,GR6FM,CAAE/S,IAAK,mBAAoBkI,KAAK,UAAY+L,KAAM,gCAAiC0hB,KStG1E,WACb,OACEzyB,EAAAA,EAAAA,MAAA,OAAKkG,MAAM,KAAKjB,OAAO,KAAK/E,QAAQ,YAAY2P,KAAK,OAAOC,MAAM,6BAA4B3P,SAAA,EAC5FC,EAAAA,EAAAA,KAAA,QACEE,EAAE,kaACFuP,KAAK,WAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,44CACFuP,KAAK,YAIb,GT0FM,CAAE/S,IAAK,mBAAoBkI,KAAK,UAAY+L,KAAM,sBAAuB0hB,KUvGhE,WACb,OACEzyB,EAAAA,EAAAA,MAAA,OAAKkG,MAAM,KAAKjB,OAAO,KAAK/E,QAAQ,YAAY2P,KAAK,OAAOC,MAAM,6BAA4B3P,SAAA,EAC5FC,EAAAA,EAAAA,KAAA,UAAQy6D,GAAG,IAAIC,GAAG,IAAIC,EAAE,MAAMlrD,KAAK,WACnCzP,EAAAA,EAAAA,KAAA,QACEkb,SAAS,UACTC,SAAS,UACTjb,EAAE,6lCACFuP,KAAK,cAIb,KVmGE,CACE/S,IAAK,OACLkI,KAAM,OACNka,KAAM,iBAER,CACEpiB,IAAK,UACLkI,KAAK,WAADQ,ODnHuB,UCoH3B0Z,KAAM,GACN5N,UAAU,I,4BWvGR,SAAUiE,GAAQvZ,GAUR,IAVS,MACvB2O,EAAK,OACL6T,EAAM,MACN5M,EAAK,KACL6gB,EAAI,YACJuoC,EAAW,SACX76D,EAAQ,SACRmR,EAAQ,aACR8f,EAAY,aACZC,GACcr1B,EACd,MAAM0E,GAAQC,EAAAA,GAAAA,MAEd,OACEX,EAAAA,EAAAA,MAACiI,EAAAA,EAAI,CACHqE,WAAS,EACTzL,GAAI,CACFJ,WAAYC,EAAM2E,QAAQ5E,WAAW2L,OACrCtL,QAAS,SACTmE,OAAQ,OACR,WAAY,CACVxE,WAAYC,EAAM2E,QAAQ5E,WAAW0H,QAEvC,UAAW,CACT1H,WAAY6Q,EAAW5Q,EAAM2E,QAAQ5E,WAAW2L,OAAS1L,EAAM2E,QAAQ5E,WAAW0H,OAClF,QAAS,CACP/G,MAAO,gBAET,mBAAoB,CAClBA,MAAOkQ,EAAW,iBAAmB,kBAI3C9Q,QAASA,IAAMw6D,EAAYrwD,GAC3BymB,aAAcA,EACdC,aAAcA,EAAYlxB,SAAA,CAEzByR,GACC5R,EAAAA,EAAAA,MAACiI,EAAAA,EAAI,CAACpH,GAAI,CAAEO,MAAOod,EAAS,eAAiB,kBAAoBrZ,IAAI,SAASmH,WAAS,EAAAnM,SAAA,CACpFsyB,GACDryB,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CACT2B,UAAU,gBACV1B,GAAI,CAAEQ,SAAU,OAAQD,MAAOod,EAAS,eAAiB,kBAAkBre,SAE1EyR,OAGH,KAEHzR,IAGP,CC7CO,SAAS86D,GAAaj/D,GAQL,IAADk/D,EAAA,IARO,MAC5BxmB,EAAK,WACLymB,EAAU,YACVhqC,EAAW,OACX3N,EAAM,YACNw3C,EAAW,UACXb,EAAS,UACTpmD,GACmB/X,EACnB,MACMo/D,GADWt8C,EAAAA,EAAAA,MACSK,SAEpBtc,EAAY6xC,GACT0mB,KAAkB,OAAL1mB,QAAK,IAALA,OAAK,EAALA,EAAOx1B,MAG7B,OAAOw1B,EAAMimB,UAAYjmB,EAAMimB,SAASpvD,QACtCnL,EAAAA,EAAAA,KAACi7D,GAAAA,EAAW,CACV3yD,KAAMyyD,IAAezmB,EAAM53C,IAC3B0mB,OAAQA,EACR22C,UAAoB,OAATA,QAAS,IAATA,EAAAA,EAAa,cACxBhpC,YAAaA,EACbpd,UAAWA,EAAU5T,UAEL,QAAf+6D,EAACxmB,EAAMimB,gBAAQ,IAAAO,EAAAA,EAAI,IAAIrgE,KAAKygE,IAC3B,MAAMC,EAAOD,EAAS7oC,KAEtB,OACEryB,EAAAA,EAAAA,KAACkhB,EAAAA,GAAI,CAAoBnK,GAAImkD,EAASp8C,KAAMnO,KAAMuqD,EAASvqD,KAAK5Q,UAC9DC,EAAAA,EAAAA,KAACmV,GAAQ,CACP3D,MAAO0pD,EAASt2D,KAChBwZ,OAAQ3b,EAASy4D,GACjB7oC,KAAM8oC,GAAOn7D,EAAAA,EAAAA,KAACm7D,EAAI,IAAM,KACxB5wD,MAAO2wD,EACPN,YAAaA,KANNM,EAASx+D,IAQb,MAIX,IACN,CClDO,SAAS0+D,GAAkBx/D,GAA+E,IAA9E,KAAE0M,EAAI,OAAE+tC,EAAM,OAAEjzB,EAAM,YAAEw3C,EAAW,YAAE7pC,GAAsCn1B,EAC5G,MAAOy/D,EAAgBC,IAAqBvyD,EAAAA,EAAAA,UAAwB,OAC7DwyD,EAAeC,IAAoBzyD,EAAAA,EAAAA,eAAc/E,GASlDy3D,EAA0BA,KAC9BH,EAAkB,KAAK,EAGnBI,EAAqBA,KACzBJ,EAAkB,KAAK,EAGnBK,EAAmBrnB,IAClBA,EAAMimB,WACTmB,IACAd,EAAYtmB,GACd,EAGF,OACEt0C,EAAAA,EAAAA,KAACi7D,GAAAA,EAAW,CAAC3yD,KAAMA,EAAM8a,OAAQA,EAAQ22C,UAAU,eAAehpC,YAAaA,EAAYhxB,SACxFs2C,EAAO57C,KAAI,CAAC65C,EAAO1pC,KAAK,IAAAgxD,EAAA,OACvB57D,EAAAA,EAAAA,KAACkhB,EAAAA,GAAI,CAA2BnK,GAAIu9B,EAAMx1B,KAAMnO,KAAM2jC,EAAM3jC,KAAK5Q,UAC/DC,EAAAA,EAAAA,KAACmV,GAAQ,CACP5K,MAAO+pC,EACP9iC,MAAO8iC,EAAM1vC,KACbg2D,YAAaA,IAAMe,EAAgBrnB,GACnCtjB,aAAc/oB,IAAA,IAAC,OAAE8I,GAAQ9I,EAAA,MA9BH4zD,EAACvnB,EAAcvjC,KACzCujC,EAAMimB,UAAYjmB,EAAMimB,SAASpvD,SACnCmwD,EAAkBhnB,EAAM53C,KACxB8+D,EAAiBzqD,GACnB,EA0BsC8qD,CAAwBvnB,EAAOvjC,EAAO,EACpEkgB,aAAcwqC,EACdvqD,UAA6B,IAAnBojC,EAAMpjC,SAAkBnR,UAElCC,EAAAA,EAAAA,KAAC66D,GAAa,CACZvmB,MAAOA,EACPvjB,YAAa2qC,EACbd,YAAae,EACbv4C,OAAQm4C,EACRR,WAAYM,OAdG,QAgBRO,EAhBFtnB,EAAMx1B,YAAI,IAAA88C,EAAAA,EAAIhxD,EAiBlB,KAIf,CC1DA,MAAMxJ,IAAYC,EAAAA,EAAAA,IAAYf,IACrB,CACLw7D,QAAS,CACPj3D,OAAQ,OACRlE,OAAQ,UACRD,QAAS,SACT,UAAW,CACT,wBAAyB,CACvBM,MAAO,YAGX,WAAY,CACV,wBAAyB,CACvBA,MAAO,YAGX,CAACV,EAAM0C,YAAYC,KAAK,OAAQ,CAC9B4B,OAAQ,OACRnE,QAAS,WAGbq7D,KAAM,CACJr7D,QAAS,SACTC,OAAQ,UACR,UAAW,CACT,SAAU,CACRN,WAAY,UAIlBoZ,IAAK,CACH3T,MAAO,MACPjB,OAAQ,MACRxE,WAAYC,EAAMQ,OAAOif,kBACzBnf,aAAc,MACd2P,YAAa,MACb,eAAgB,CACdA,YAAa,YAWd,SAASyrD,GAAYpgE,GAA8C,IAA7C,OAAEy6C,EAAM,YAAEukB,GAAgCh/D,EACrE,MAAMgG,EAAUR,KACVK,GAAMgS,EAAAA,EAAAA,QAAO,OAEZnL,EAAMkS,IAAWzR,EAAAA,EAAAA,WAAS,GAmBjC,OACEnJ,EAAAA,EAAAA,MAACyF,EAAAA,GAAI,CACH5D,IAAKA,EACLkE,MAAI,EAEJxD,UAAWP,EAAQm6D,KACnB/qC,aAvBqBirC,KACvBzhD,GAAQ,EAAK,EAuBXyW,aApBqBirC,KACvB1hD,GAAQ,EAAM,EAmBmBza,SAAA,EAE/BH,EAAAA,EAAAA,MAACiI,EAAAA,EAAI,CAACqE,WAAS,EAACmI,QAAQ,SAAS5T,GAAI,CAAEoE,OAAQ,QAAS9E,SAAA,EACtDC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACuO,UAAU,OAAOtO,UAAS,GAAAiD,OAAKxD,EAAQ6X,IAAG,WAC/CzZ,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACuO,UAAU,OAAOtO,UAAS,GAAAiD,OAAKxD,EAAQ6X,IAAG,WAC/CzZ,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACuO,UAAU,OAAOtO,UAAS,GAAAiD,OAAKxD,EAAQ6X,IAAG,cAGjDzZ,EAAAA,EAAAA,KAACo7D,GAAkB,CACjB9yD,KAAMA,EACN8a,OAAW,OAAH3hB,QAAG,IAAHA,OAAG,EAAHA,EAAKsS,QACbgd,YA3Bcjc,KAClB0F,GAAQ,EAAM,EA2BVogD,YAxBmBtmB,IACvB95B,GAAQ,GACJogD,GAAaA,EAAYtmB,EAAM,EAuB/B+B,OAAQA,EAAOxsC,QAAO,CAACyqC,EAAO1pC,IAAUA,EAAQyvD,IAAczvD,IAAUyvD,SAhBtE,OAoBV,CCxFO,SAAS8B,GAAMvgE,GAAwC,IAAvC,OAAEy6C,EAAM,YAAEukB,GAA0Bh/D,EACzD,MACMo/D,GADWt8C,EAAAA,EAAAA,MACSK,SACpBze,GAAQC,EAAAA,EAAAA,MAER8hB,GAActf,EAAAA,EAAAA,GAAczC,EAAM0C,YAAYC,KAAK,QAElDo4D,EAAgBC,IAAqBvyD,EAAAA,EAAAA,UAAwB,OAC7DwyD,EAAeC,IAAoBzyD,EAAAA,EAAAA,eAAc/E,GASlDo4D,EAAuBA,KAC3Bd,EAAkB,KAAK,EAGnBI,EAAqBA,KACzBJ,EAAkB,KAAK,EAGzB,SAAS74D,EAAS6xC,GAChB,QAASA,EAAMx1B,MAAQw1B,EAAM53C,MAAQs+D,EAASvvC,MAAM,KAAK,EAC3D,CAEA,MAAM4wC,EAAoB/nB,IACnBA,EAAMimB,WACTmB,IACId,GAAaA,EAAYtmB,GAC/B,EAGF,OACEt0C,EAAAA,EAAAA,KAAAoL,EAAAA,SAAA,CAAArL,SACGs2C,EAAO57C,KAAI,CAAC65C,EAAO1pC,KAAK,IAAAgxD,EAAAU,EAAAC,EAAA,OACvB3xD,GAASyvD,GAAa,MACpBr6D,EAAAA,EAAAA,KAACkhB,EAAAA,GAAI,CAA2BnK,GAAc,QAAZulD,EAAEhoB,EAAMx1B,YAAI,IAAAw9C,EAAAA,EAAI,GAAI3rD,KAAM2jC,EAAM3jC,KAAK5Q,UACrEC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAEF9B,QAASA,IAAMi8D,EAAiB/nB,GAChCnyC,UAAS,GAAAiD,OAAK3C,EAAS6xC,GAAS,SAAW,IAC3C7zC,GAAI,CACFoE,OAAQ,OACRlE,OAAQ,UACRD,QAAS,SACT,UAAW,CACT,wBAAyB,CACvBM,MAAO,YAGX,WAAY,CACV,wBAAyB,CACvBA,MAAO,YAGX,CAACV,EAAM0C,YAAYC,KAAK,OAAQ,CAC9B4B,OAAQ,OACRnE,QAAS,WAEXX,UAEFH,EAAAA,EAAAA,MAACyF,EAAAA,GAAI,CACHC,WAAS,EACTN,WAAW,SACXvE,GAAI,CAAEoE,OAAQ,QACdmsB,aAAc/oB,IAAA,IAAC,OAAE8I,GAAQ9I,EAAA,MA3DVu0D,EAACloB,EAAcvjC,KACtCujC,EAAMimB,UAAYjmB,EAAMimB,SAASpvD,SACnCmwD,EAAkBhnB,EAAM53C,KACxB8+D,EAAiBzqD,GACnB,EAuD0CyrD,CAAqBloB,EAAOvjC,EAAO,EACjEkgB,aAAcmrC,EAAqBr8D,SAAA,EAEnCH,EAAAA,EAAAA,MAACY,EAAAA,EAAU,CACTC,GAAI,CAAEc,QAAS,OAAQyD,WAAY,SAAUD,IAAK,SAClD9D,SAAUohB,EAAc,OAAS,OACjCrhB,MAAOyB,EAAS6xC,GAAS,eAAiB,iBAAiBv0C,SAAA,CAE1Du0C,EAAM1vC,KACN0vC,EAAMimB,UAAWv6D,EAAAA,EAAAA,KAAC45D,GAAAA,EAAW,CAACn0D,KAAK,SAAY,SAGlDzF,EAAAA,EAAAA,KAAC66D,GAAa,CACZvmB,MAAOA,EACPvjB,YAAa2qC,EACbd,YAAayB,EACbj5C,OAAQm4C,EACRR,WAAYM,EACZtB,UAAU,qBA7CC,QA+CRwC,EA/CFjoB,EAAMx1B,YAAI,IAAAy9C,EAAAA,EAAI3xD,IAFF,QAkDbgxD,EAlDGtnB,EAAMx1B,YAAI,IAAA88C,EAAAA,EAAIhxD,EAoD1B,KAIT,CCxGe,SAAS6xD,KACtB,OACE78D,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAACzB,GAAI,CAAEc,QAAS,OAAQwD,IAAK,SAAUhF,SAAA,EACzCC,EAAAA,EAAAA,KAACm8D,GAAM,CAAC9lB,OAAQA,KACfA,GAAOlrC,OAASkvD,IAAar6D,EAAAA,EAAAA,KAACg8D,GAAY,CAAC3lB,OAAQA,KAAa,OAGvE,C,ICbI,GAAS,GAAO,G,YACpB,SAAS,KAAa,OAAO,GAAW76C,OAAOyR,OAASzR,OAAOyR,OAAOyvD,OAAS,SAAUC,GAAK,IAAK,IAAI1hE,EAAI,EAAGA,EAAI4qB,UAAU1a,OAAQlQ,IAAK,CAAE,IAAIK,EAAIuqB,UAAU5qB,GAAI,IAAK,IAAI0/D,KAAKr/D,GAAG,CAAG,GAAEshE,eAAep3B,KAAKlqC,EAAGq/D,KAAOgC,EAAEhC,GAAKr/D,EAAEq/D,GAAK,CAAE,OAAOgC,CAAG,EAAG,GAAS9vC,MAAM,KAAMhH,UAAY,CAEnR,SAASg3C,GAASjhE,EAAMkhE,GACtB,IAAI,MACFxxD,EAAK,QACLyxD,KACGp9D,GACD/D,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtDkK,MAAO,GACPjB,OAAQ,GACR/E,QAAS,YACT2P,KAAM,OACNC,MAAO,6BACPjO,IAAKq7D,EACL,kBAAmBC,GAClBp9D,GAAQ2L,EAAqB,gBAAoB,QAAS,CAC3DjQ,GAAI0hE,GACHzxD,GAAS,KAAM,KAAY,GAAuB,gBAAoB,SAAU,CACjFmvD,GAAI,GACJC,GAAI,GACJC,EAAG,GACHlrD,KAAM,qCACH,KAAU,GAAqB,gBAAoB,OAAQ,CAC9DyL,SAAU,UACVC,SAAU,UACVjb,EAAG,inCACHuP,KAAM,WACH,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,iBAAkB,CACvHpU,GAAI,4BACJ2hE,IAAK,QACLC,GAAI,QACJC,GAAI,QACJC,GAAI,QACJC,cAAe,kBACD,gBAAoB,OAAQ,CAC1CC,UAAW,YACI,gBAAoB,OAAQ,CAC3C/4B,OAAQ,EACR+4B,UAAW,eAEf,CACA,MAAM,GAA0B,aAAiBR,IAClC,I,IC5CX,GAAI,G,YACR,SAAS,KAAa,OAAO,GAAWrhE,OAAOyR,OAASzR,OAAOyR,OAAOyvD,OAAS,SAAUC,GAAK,IAAK,IAAI1hE,EAAI,EAAGA,EAAI4qB,UAAU1a,OAAQlQ,IAAK,CAAE,IAAIK,EAAIuqB,UAAU5qB,GAAI,IAAK,IAAI0/D,KAAKr/D,GAAG,CAAG,GAAEshE,eAAep3B,KAAKlqC,EAAGq/D,KAAOgC,EAAEhC,GAAKr/D,EAAEq/D,GAAK,CAAE,OAAOgC,CAAG,EAAG,GAAS9vC,MAAM,KAAMhH,UAAY,CAEnR,SAASy3C,GAAa1hE,EAAMkhE,GAC1B,IAAI,MACFxxD,EAAK,QACLyxD,KACGp9D,GACD/D,EACJ,OAAoB,gBAAoB,MAAO,GAAS,CACtDkK,MAAO,GACPjB,OAAQ,GACR/E,QAAS,YACT2P,KAAM,OACNC,MAAO,6BACPjO,IAAKq7D,EACL,kBAAmBC,GAClBp9D,GAAQ2L,EAAqB,gBAAoB,QAAS,CAC3DjQ,GAAI0hE,GACHzxD,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEqE,SAAU,2BACI,gBAAoB,OAAQ,CAC1CzP,EAAG,ofACHuP,KAAM,cACF,KAAU,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClHpU,GAAI,qBACU,gBAAoB,OAAQ,CAC1CyK,MAAO,GACPjB,OAAQ,GACR4K,KAAM,aAEV,CACA,MAAM,GAA0B,aAAiB6tD,IAClC,ICrBR,SAASnB,GAAMvgE,GAAyC,IAAxC,OAAEy6C,EAAM,aAAEknB,GAA2B3hE,EAC1D,MACMo/D,GADWt8C,EAAAA,EAAAA,MACSK,UACnBy+C,EAAaC,IAAkB10D,EAAAA,EAAAA,eAA6B/E,GAE7Dq4D,EAAoB/nB,IACpBA,EAAMimB,SACJiD,IAAgBlpB,EAAM53C,IACxB+gE,OAAez5D,GAEfy5D,EAAenpB,EAAM53C,KAMzB6gE,EAAajpB,EAAM,EAGf7xC,EAAY6xC,GACT0mB,KAAkB,OAAL1mB,QAAK,IAALA,OAAK,EAALA,EAAOx1B,MAG7B,OACE9e,EAAAA,EAAAA,KAAAoL,EAAAA,SAAA,CAAArL,SACGs2C,EAAO57C,KAAI,CAAC65C,EAAO1pC,KAAW,IAADgxD,EAAAd,EAC5B,OACEl7D,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAEF9B,QAASA,IAAMi8D,EAAiB/nB,GAChC7zC,GAAI,CACFC,QAAS,YACTg9D,aAAc,oBACd,iBAAkB,CAChBA,aAAc,SAEhB39D,SAAA,EAEFH,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAACzB,GAAI,CAAEc,QAAS,OAAQ8E,eAAgB,iBAAkBtG,SAAA,EAC5DC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACS,SAAS,OAAOD,MAAM,eAAcjB,SAC7Cu0C,EAAM1vC,OAGR0vC,EAAMimB,UAAWv6D,EAAAA,EAAAA,KAAC29D,GAAa,IAAM,SAGxC39D,EAAAA,EAAAA,KAACyf,GAAAA,EAAQ,CAACE,GAAI69C,IAAgBlpB,EAAM53C,IAAIqD,SACrCu0C,EAAMimB,UAAYjmB,EAAMimB,SAASpvD,QAChCnL,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACzB,GAAI,CAAEyF,OAAQ,aAAc3E,QAAS,OAAQuD,oBAAqB,MAAOC,IAAK,UAAWhF,UAC5E,QAAf+6D,EAACxmB,EAAMimB,gBAAQ,IAAAO,EAAAA,EAAI,IAAIrgE,KAAKygE,IAC3B,MAAMC,EAAOD,EAAS7oC,KAEtB,OACEryB,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAEF9B,QAASA,IAAMi8D,EAAiBnB,GAChCz6D,GAAI,CACFO,MAAOyB,EAASy4D,GAAY,eAAiB,kBAC7Cn7D,UAEFH,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAACzB,GAAI,CAAEc,QAAS,OAAQwD,IAAK,SAAUC,WAAY,UAAWjF,SAAA,CAC/Do7D,GAAOn7D,EAAAA,EAAAA,KAACm7D,EAAI,IAAM,MACnBn7D,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACC,GAAI,CAAEO,MAAOyB,EAASy4D,GAAY,eAAiB,kBAAmBn7D,SAC/Em7D,EAASt2D,WATTs2D,EAASx+D,IAYV,MAIV,SA1CS,QA2CJk/D,EA3CNtnB,EAAMx1B,YAAI,IAAA88C,EAAAA,EAAIhxD,EA4Cf,KAKhB,CC1Ee,SAASgzD,GAAYhiE,GAAkC,IAAjC,QAAE4M,GAA4B5M,EACjE,MAAM+a,GAAUC,EAAAA,EAAAA,OACT4mD,EAAaC,IAAkB10D,EAAAA,EAAAA,eAA6B/E,IAC5D65D,EAAYC,IAAiB/0D,EAAAA,EAAAA,WAAkB,GAEhDszD,EAAoB/nB,IACxB,GAAIA,EAAMimB,SACJiD,IAAgBlpB,EAAM53C,IACxB+gE,OAAez5D,GAEfy5D,EAAenpB,EAAM53C,UAMzB,GAAK43C,EAAMx1B,MAASw1B,EAAM3jC,KAA1B,CAEiB,IAADotD,EAETnC,EAFP,GAAItnB,EAAM3jC,MACRsO,EAAAA,GAAAA,GAA2B,QAAX8+C,EAACzpB,EAAM3jC,YAAI,IAAAotD,EAAAA,EAAI,GAAI,qBAEnCpnD,EAAQvM,KAAe,QAAXwxD,EAACtnB,EAAMx1B,YAAI,IAAA88C,EAAAA,EAAI,IAGzBpzD,GAASA,GARyB,CAQhB,EAGlBw1D,GAAiB76D,EAAAA,EAAAA,UAAQ,IACtBkzC,GAAOxsC,QAAO,CAACyqC,EAAO1pC,IAAUA,EAAQ0vD,MAC9C,CAACjkB,GAAQikB,KAEN2D,GAAe96D,EAAAA,EAAAA,UAAQ,IACpBkzC,GAAOxsC,QAAO,CAACyqC,EAAO1pC,IAAUA,GAAS0vD,MAC/C,CAACjkB,GAAQikB,KAEZ,OACE16D,EAAAA,EAAAA,MAAAwL,EAAAA,SAAA,CAAArL,SAAA,EACEH,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAACzB,GAAI,CAAEc,QAAS,OAAQ8E,eAAgB,gBAAiBrB,WAAY,SAAUtE,QAAS,QAASX,SAAA,EACnGC,EAAAA,EAAAA,KAAC63D,GAAI,KACL73D,EAAAA,EAAAA,KAACk+D,GAAAA,EAAO,CAAChpD,MAAO,CAAEvU,OAAQ,WAAaP,QAASoI,QAOlD5I,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAAAnC,SAAA,EACFC,EAAAA,EAAAA,KAACm8D,GAAM,CAAC9lB,OAAQ2nB,EAAgBT,aAAclB,IAE7C4B,EAAa9yD,OAAS,GACrBvL,EAAAA,EAAAA,MAAAwL,EAAAA,SAAA,CAAArL,SAAA,EACEH,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CACFzB,GAAI,CACFC,QAAS,YACTa,QAAS,OACT8E,eAAgB,gBAChBrB,WAAY,UAEd5E,QAASA,IAAM09D,GAAeD,GAAY99D,SAAA,EAE1CH,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAACzB,GAAI,CAAEc,QAAS,OAAQwD,IAAK,SAAUhF,SAAA,EACzCC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACzB,GAAI,CAAEqF,MAAO,MAAOjB,OAAQ,MAAOjE,aAAc,MAAOP,WAAY,WACzEL,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACzB,GAAI,CAAEqF,MAAO,MAAOjB,OAAQ,MAAOjE,aAAc,MAAOP,WAAY,WACzEL,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACzB,GAAI,CAAEqF,MAAO,MAAOjB,OAAQ,MAAOjE,aAAc,MAAOP,WAAY,cAE3EL,EAAAA,EAAAA,KAAC29D,GAAa,QAGhB39D,EAAAA,EAAAA,KAACyf,GAAAA,EAAQ,CAACE,GAAIk+C,EAAW99D,UACvBC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAAAnC,UACFC,EAAAA,EAAAA,KAACm8D,GAAM,CAAC9lB,OAAQ4nB,EAAcV,aAAclB,WAIhD,UAIZ,CClFO,MAQM8B,IARiBC,EAAAA,EAAAA,GAAY,CACxCp7D,YAAa,CACXia,OAAQ,CACNohD,GAAI,QAKyCr7D,YAEpC,SAASs7D,KACtB,MAAOC,EAAYC,IAAiBz1D,EAAAA,EAAAA,WAAkB,GAEhDsZ,GAActf,EAAAA,EAAAA,GAAco7D,GAAqBl7D,KAAK,OAM5D,OACEjD,EAAAA,EAAAA,KAAAoL,EAAAA,SAAA,CAAArL,UACEH,EAAAA,EAAAA,MAACiI,EAAAA,EAAI,CAACwM,QAAQ,gBAAgB5T,GAAI,CAAEqF,MAAO,QAAS/F,SAAA,EAClDC,EAAAA,EAAAA,KAAC6H,EAAAA,EAAI,CAACpH,GAAI,CAAEoE,OAAQ,QAAS9E,SAC1BsiB,GACCriB,EAAAA,EAAAA,KAACy+D,GAAAA,EAAiB,CAACh+D,GAAI,CAAEE,OAAQ,WAAaP,QAT7Bs+D,KACzBF,GAAc,EAAK,KAUX5+D,EAAAA,EAAAA,MAAAwL,EAAAA,SAAA,CAAArL,SAAA,EACEC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACzB,GAAI,CAAEyF,OAAQ,cAAenG,UAChCC,EAAAA,EAAAA,KAAC+3D,GAAW,OAEd/3D,EAAAA,EAAAA,KAAC2+D,GAAM,UAKb3+D,EAAAA,EAAAA,KAAC6H,EAAAA,EAAI,CACH9C,IAAI,SACJsP,QAAQ,WACR5T,GAAI,CACF,2BAA4B,CAAEsE,IAAK,UACnChF,UAEFC,EAAAA,EAAAA,KAAC04D,GAAc,OAGjB14D,EAAAA,EAAAA,KAAC4+D,EAAAA,GAAM,CACLx7C,OAAO,OACP9a,KAAMi2D,EACN/1D,QAASA,IAAMg2D,GAAc,GAC7B/9D,GAAI,CACFqF,MAAO,OACP,mBAAoB,CAClBA,MAAO,SAET/F,UAEFC,EAAAA,EAAAA,KAAC49D,GAAY,CAACp1D,QAASA,IAAMg2D,GAAc,WAKrD,CCtEA,SAAShH,KACP,OACE53D,EAAAA,EAAAA,MAAA,OAAKkG,MAAM,KAAKjB,OAAO,KAAK/E,QAAQ,YAAY2P,KAAK,OAAOC,MAAM,6BAA4B3P,SAAA,EAC5FC,EAAAA,EAAAA,KAAA,KAAG2P,SAAS,0BAAyB5P,UACnCC,EAAAA,EAAAA,KAAA,QACEE,EAAE,gNACFuP,KAAK,aAGTzP,EAAAA,EAAAA,KAAA,QAAAD,UACEC,EAAAA,EAAAA,KAAA,YAAU3E,GAAG,oBAAmB0E,UAC9BC,EAAAA,EAAAA,KAAA,QAAM8F,MAAM,KAAKjB,OAAO,KAAK4K,KAAK,gBAK5C,CAMO,SAASovD,GAAOjjE,GAAgC,IAA/B,QAAE4M,GAA0B5M,EAClD,OACEgE,EAAAA,EAAAA,MAACyF,EAAAA,GAAI,CAACC,WAAS,EAACN,WAAW,SAASvE,GAAI,CAAEoE,OAAQ,OAAQxE,WAAY,UAAWK,QAAS,UAAWX,SAAA,EACnGC,EAAAA,EAAAA,KAACqF,EAAAA,GAAI,CAACM,MAAI,EAACC,IAAE,EAAA7F,UACXC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CACTC,GAAI,CACFO,MAAO,UACPL,OAAQ,UACR,2BAA4B,CAAEM,SAAU,SACxClB,SACH,kGAKHC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACzB,GAAI,CAAEE,OAAQ,WAAaP,QAASoI,EAAQzI,UAC/CC,EAAAA,EAAAA,KAACw3D,GAAS,QAIlB,CClCA,MAAMp2D,IAAYC,EAAAA,EAAAA,IAAYf,IACrB,CACLoB,QAAS,CACPrB,WAAY,cACZyF,MAAO,OACPoN,UAAW,qBACXie,SAAU,EACVzwB,QAAS,SACTE,aAAc,MACdk+D,uBAAwB,EACxBC,wBAAyB,EACzB,kBAAmB,CACjBr+D,QAAS,UAEX+f,WAAYngB,EAAMogB,YAAYrhB,OAAO,SAAU,CAC7C6pB,OAAQ5oB,EAAMogB,YAAYwI,OAAOQ,MACjCV,SAAU1oB,EAAMogB,YAAYsI,SAASg2C,gBAEvC,CAAC1+D,EAAM0C,YAAYC,KAAK,OAAQ,CAC9BvC,QAAS,SACTwS,UAAW,sBAEb,CAAC5S,EAAM0C,YAAYC,KAAK,OAAQ,CAC9BvC,QAAS,SACTG,gBAAiB,gBAGrBo+D,YAAa,CACX1pD,WAAY,OACZ,QAAS,CACPlV,WAAYC,EAAM2E,QAAQ5E,WAAW2L,QAEvC,CAAC1L,EAAM0C,YAAYC,KAAK,OAAQ,CAC9BsS,WAAY,aAMd2pD,GAAqB,CAAC,aAErB,SAASC,GAAUvjE,GAA+C,IAA9C,SAAEmE,GAAyCnE,EACpE,MAAM0E,GAAQC,EAAAA,EAAAA,MACRqB,EAAUR,KACVqd,GAAWC,EAAAA,EAAAA,OAEV0gD,EAAMC,IAAWt2D,EAAAA,EAAAA,WAAS,IAC1Bu2D,EAAeC,IAAoBx2D,EAAAA,EAAAA,WAAS,IAC5Cy2D,EAAYC,IAAiB12D,EAAAA,EAAAA,WAAS,GAEvC22D,GAAiBv8D,EAAAA,EAAAA,UAAQ,IACtB+7D,GAAmB36D,SAASka,EAASM,WAC3C,CAACN,IAEJ,OACE7e,EAAAA,EAAAA,MAAAwL,EAAAA,SAAA,CAAArL,SAAA,EACEC,EAAAA,EAAAA,KAAC6H,EAAAA,EAAI,CACHqE,WAAS,EACTzL,GAAI,CACFmL,SAAU,QACV2B,IAAK,EACL7M,QAAS,SACTmE,OAAQ,OACRhE,gBAAiB,UACjB+U,OAAQ,EACR,CAACtV,EAAM0C,YAAYC,KAAK,OAAQ,CAC9B4B,OAAQ,SAEV9E,UAEFC,EAAAA,EAAAA,KAACs+D,GAAM,OAGT1+D,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAACC,UAAS,GAAAiD,OAAKxD,EAAQq9D,YAAW,KAAA75D,OAA0B,cAAtBqZ,EAASM,SAA2B,MAAQ,IAAKhf,SAAA,CACxFq/D,GAAQ3gD,EAASM,SAASxa,SAAS,aAAcvE,EAAAA,EAAAA,KAAC23D,EAAO,CAACv3D,QAASA,IAAMi/D,GAAQ,KAAa,KAC9FC,GAAgBt/D,EAAAA,EAAAA,KAACy3D,EAAU,CAACjvD,QAASA,IAAM+2D,GAAiB,KAAa,KACzEC,GAAc/gD,EAASM,SAASxa,SAAS,QAASvE,EAAAA,EAAAA,KAAC6+D,GAAO,CAACr2D,QAASA,IAAMi3D,GAAc,KAAa,MAEtGz/D,EAAAA,EAAAA,KAAA,QAAMmC,UAAS,GAAAiD,OAAKxD,EAAQF,QAAO,KAAA0D,OAAIs6D,EAAiB,gBAAkB,IAAK3/D,SAAEA,QAGnFC,EAAAA,EAAAA,KAAC03D,EAAU,MAGjB,CCvFO,SAASiI,GAAM/jE,GAA6B,IAA5B,SAAEmE,GAAuBnE,EAC9C,OAAOoE,EAAAA,EAAAA,KAACm/D,GAAU,CAAAp/D,SAAEA,GACtB,C,2BCIA,SAAS6/D,GAAQhkE,GAAqC,IAApC,MAAEyU,EAAK,QAAEwvD,GAAwBjkE,EAcjD,OATAyI,EAAAA,EAAAA,YAAU,KACR,GAAIgM,EAAO,CACT,MAAMyvD,EAAczvD,EAAMjM,YACtB,+BAA+B27D,KAAKD,IAAgB,uBAAuBC,KAAKD,KAClFl1C,OAAOnM,SAASknB,QAEpB,IACC,CAACt1B,KAGFrQ,EAAAA,EAAAA,KAAC2/D,GAAM,CAAA5/D,UACLC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACzB,GAAI,CAAEqF,MAAO,OAAQjB,OAAQ,uBAAwB9E,UACxDC,EAAAA,EAAAA,KAACqF,EAAAA,GAAI,CAACC,WAAS,EAACN,WAAW,SAASqB,eAAe,SAAS5F,GAAI,CAAEqF,MAAO,OAAQjB,OAAQ,QAAS9E,UAChGC,EAAAA,EAAAA,KAACqF,EAAAA,GAAI,CAACM,MAAI,EAAA5F,UACRH,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAACzB,GAAI,CAAEc,QAAS,OAAQyD,WAAY,SAAUkR,cAAe,SAAU7P,eAAgB,UAAWtG,SAAA,EACpGC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACQ,MAAM,eAAeuF,MAAM,SAAS9F,GAAI,CAAEQ,SAAU,OAAQiF,OAAQ,cAAenG,UAC7FC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,cAGF2E,EAAAA,EAAAA,KAACo3D,EAAU,KAEXx3D,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CACFzB,GAAI,CACFqF,MAAO,QACPjB,OAAQ,QACRxE,WAAY,wBACZO,aAAc,MACdF,QAAS,QACTX,SAAA,EAEFH,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAACzB,GAAI,CAAEoE,OAAQ,QAASgB,SAAU,UAAW9F,SAAA,EAC/CC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACQ,MAAM,eAAeC,SAAS,OAAOR,GAAI,CAAE2V,UAAW,cAAerW,SAC9EsQ,EAAMjM,cAGTpE,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACQ,MAAM,eAAeC,SAAS,OAAOR,GAAI,CAAE2V,UAAW,cAAerW,SAC9E8/D,QAGL7/D,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CACFzB,GAAI,CACFqF,MAAO,OACPjB,OAAQ,OACRtD,QAAS,OACTyD,WAAY,SACZqB,eAAgB,SAChB8L,UAAW,OACX9R,WAAY,UACZO,aAAc,MACdD,OAAQ,WAEVP,QAvDQ4/D,KAAO,IAADC,EAC5B3+D,KAAK,GAAD8D,OAAqB,QAArB66D,EAAS,OAAL5vD,QAAK,IAALA,OAAK,EAALA,EAAOjM,kBAAU,IAAA67D,EAAAA,EAAI,GAAE,KAAA76D,OAAIy6D,GAAU,EAsDN9/D,UAEzBC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACQ,MAAM,eAAeC,SAAS,OAAMlB,UAC9CC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,4BAUpB,CAMe,SAAS6kE,GAAaj4D,GAAoC,IAAnC,SAAElI,GAA8BkI,EACpE,OAEEjI,EAAAA,EAAAA,KAACmgE,EAAAA,GAAoB,CAACC,SAAUxuD,IAAA,IAAC,MAAEvB,EAAK,QAAEwvD,GAASjuD,EAAA,OAAK5R,EAAAA,EAAAA,KAAC4/D,GAAQ,CAACvvD,MAAOA,EAAOwvD,QAASA,GAAW,EAAC9/D,SAClGA,GAGP,C,4BCtFA,MAAMqB,IAAYC,EAAAA,EAAAA,IAAW,KACpB,CACLg/D,eAAgB,CACdv6D,MAAO,OACPjB,OAAQ,OACRgB,SAAU,SACV,YAAa,CACXy6D,UAAU,kBACV3mD,wBAAyB,aAG7B,qBAAsB,CACpB,KAAM,CACJ/J,UAAW,gBAEb,OAAQ,CACNA,UAAW,uBAaZ,SAAS2wD,GAAkB3kE,GAAoD,IAAnD,MAAE4V,EAAK,MAAEjH,EAAK,KAAE/E,EAAI,SAAE0L,GAA0BtV,EACjF,MAAO,CAAE4kE,IAA0BnnD,EAAAA,EAAAA,MAE7B/Y,GAAQC,EAAAA,EAAAA,MACRqB,EAAUR,MACT4lC,IAAgBC,EAAAA,GAAAA,OAEhB1jC,EAASyL,IAAcjG,EAAAA,EAAAA,WAAS,IAChC03D,EAAeC,IAAoB33D,EAAAA,EAAAA,UAAiC,OAE3E1E,EAAAA,EAAAA,YAAU,MACR6K,iBACE,MAAMuxD,EAAgB,IAAIE,GAAAA,SACpBF,EAAcG,KAAKr2D,GACzBm2D,EAAiBD,EACnB,CAEAj7B,EAAM,GACL,IAoCH,OACE5lC,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CACFzB,GAAI,CACFc,QAAS,OACTyD,WAAY,SACZqB,eAAgB,gBAChB1F,OAAQ,UACRD,QAAS,YACTL,WAAY,4BACZO,aAAc,MACd,CAACN,EAAM0C,YAAYC,KAAK,OAAQ,CAC9BvC,QAAS,aAGbN,QAhDkB8O,UACpB,IAAIgC,EAEJ,IAAK,IAAD2vD,EAAAC,EACF,GAAIv9D,IAAYgH,IAAUk2D,EAAe,OAEzC,KAAM71C,OAAOm2C,IAAgB,QAAVF,EAACj2C,OAAOm2C,UAAE,IAAAF,IAATA,EAAWG,iBAAmBz2D,IAAU02D,GAAAA,GAAchzD,SAExE,YADA+4B,EAAYz7B,EAAAA,GAAAC,EAAC,CAAAnQ,GAAA,YAIf,KAAMuvB,OAAOm2C,IAAgB,QAAVD,EAACl2C,OAAOm2C,UAAE,IAAAD,IAATA,EAAWI,OAAS32D,IAAU02D,GAAAA,GAAc7yD,KAE9D,YADA44B,EAAYz7B,EAAAA,GAAAC,EAAC,CAAAnQ,GAAA,YAIf2T,GAAW,SAEqByxD,EAAcU,WAG5Cn6B,EAAYz7B,EAAAA,GAAAC,EAAC,CAAAnQ,GAAA,YAGfmlE,GAAuB,GACvBxxD,GAAW,EACb,CAAE,MAAOqB,GACPspB,QAAQtpB,MAAMA,GACdrB,GAAW,GAEXg4B,EAAa,wBAAD5hC,OAAyBoM,EAAK,MAAApM,OAAKiL,GACjD,GAiByBtQ,SAAA,EAEvBC,EAAAA,EAAAA,KAAC6H,EAAAA,EAAI,CAAC9C,IAAI,QAAOhF,UACfC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACQ,MAAM,eAAeC,SAAS,OAAOgF,WAAY,IAAIlG,SAC9DyR,OAILxR,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACC,UAAS,GAAAiD,OAAKxD,EAAQy+D,gBAAcj7D,OAAG7B,EAAU,WAAa,IAAKxD,UACtEC,EAAAA,EAAAA,KAAA,OAAK8F,MAAM,OAAOjB,OAAO,OAAOyI,IAAK9H,EAAMsQ,IAAI,SAIvD,CC9GA,MAAM1U,IAAYC,EAAAA,EAAAA,IAAYf,IACrB,CACL8H,QAAS,CACPwD,SAAU,WACVhL,aAAc,OACd4F,SAAU,QAEZ46D,UAAW,CACT7/D,QAAS,OACTuD,oBAAqB,UACrBC,IAAK,YACL,CAACzE,EAAM0C,YAAYC,KAAK,OAAQ,CAC9B6B,oBAAqB,OACrBC,IAAK,WAGTs8D,cAAe,CACb1gE,OAAQ,UACRD,QAAS,YACTL,WAAY,4BACZO,aAAc,MACd,CAACN,EAAM0C,YAAYC,KAAK,OAAQ,CAC9BvC,QAAS,aAGb4gE,iBAAkB,CAChBz8D,OAAQ,OACRxE,WAAY,wBACZyH,OAAQ,oBACRlH,aAAc,MACd,CAACN,EAAM0C,YAAYC,KAAK,OAAQ,CAC9B4B,OAAQ,aAcD,SAAS87D,KACtB,MAAOr4D,EAAMk4D,IAA0BnnD,EAAAA,EAAAA,MAEjCzX,EAAUR,KAEVmgE,EAAoB,CACxB,CACE/vD,MAAO,oBACPjH,MAAOsD,GAAAA,GAAUC,GACjBtI,KAAM,wCAER,CAAEgM,MAAO,OAAQjH,MAAOsD,GAAAA,GAAUO,KAAM5I,KAAM,4BAC9C,CACEgM,MAAO,eACPjH,MAAOsD,GAAAA,GAAUQ,MACjB7I,KAAM,6BAER,CACEgM,MAAO,iBACPjH,MAAOsD,GAAAA,GAAUG,QACjBxI,KAAM,+BAER,CAAEgM,MAAO,OAAQjH,MAAOsD,GAAAA,GAAUM,KAAM3I,KAAM,4BAC9C,CACEgM,MAAO,mBACPjH,MAAOsD,GAAAA,GAAUI,SACjBzI,KAAM,gCAER,CACEgM,MAAO,YACPjH,MAAOsD,GAAAA,GAAUE,GACjBvI,KAAM,8BAER,CACEgM,MAAO,WACPjH,MAAOsD,GAAAA,GAAUK,SACjB1I,KAAM,iCAIV,OACExF,EAAAA,EAAAA,KAACsQ,EAAAA,EAAK,CAAChI,KAAMA,EAAME,QAASA,IAAMg4D,GAAuB,GAAQl1D,MAAKC,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAAoB0E,UAC1FC,EAAAA,EAAAA,KAAC6H,EAAAA,GAAI,CAACtB,MAAM,SAAQxG,UAClBH,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAACC,UAAWP,EAAQwG,QAAQrI,SAAA,EAC9BC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CACTC,GAAI,CACFQ,SAAU,OACV4K,WAAY,QACZ9L,UAEFC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,SAAAu7D,WAAA,CAAAvpB,GAEErtC,EAAAA,EAAAA,KAAC0Q,EAAAA,GAAU,CAACC,KAAK,mFAEJ6wD,GAEbxhE,EAAAA,EAAAA,KAAC0Q,EAAAA,GAAU,CACTC,KAAK,2EACLlQ,GAAI,CACFkxB,WAAY,uBASpB3xB,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAAC0K,GAAG,OAAM7M,UACZC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACC,UAAWP,EAAQw/D,UAAUrhE,SAC/BwhE,EAAQ9mE,KAAKgnE,IACZzhE,EAAAA,EAAAA,KAACugE,GAAkB,CAEjB/uD,MAAOiwD,EAAOjwD,MACdhM,KAAMi8D,EAAOj8D,KACb+E,MAAOk3D,EAAOl3D,MACd2G,SAAUuwD,EAAOvwD,UAJZuwD,EAAOl3D,mBAa9B,C,gBCvIA,MAAMnJ,IAAYC,EAAAA,EAAAA,IAAYf,IAAY,CACxC0Z,KAAM,CACJpO,SAAU,QACV2B,IAAK,EACLC,KAAM,EACNoI,OAAQ,KACR9P,MAAO,OACP,YAAa,CACXqM,UAAW7R,EAAM2Z,QAAQ,SAKhB,SAASynD,KACtB,MAAM9/D,EAAUR,KAEhB,OACEpB,EAAAA,EAAAA,KAAA,OAAKmC,UAAWP,EAAQoY,KAAKja,UAC3BC,EAAAA,EAAAA,KAAC2hE,GAAAA,EAAc,CAAC3gE,MAAM,aAG5B,C,+GCvBOkO,eAAe0yD,KAKpB,OAAOz7B,EAAAA,GAAAA,KAJMj3B,MAAOo1B,EAAgBC,UACrBs9B,EAAAA,GAAAA,IAAev9B,EAAQC,IAGJ,IACpC,C,gBCMO,MAAMu9B,GAAS,CAAC/+B,GAAAA,GAAKC,GAAAA,GAAKC,GAAAA,GAAKC,GAAAA,GAAS6+B,GAAAA,GAAetjC,GAAAA,I,gBCZ/C,SAASujC,KACtB,OAAOhiE,EAAAA,EAAAA,KAACuP,GAAAA,EAAgB,CAAC9J,KAAM,GAAIhF,GAAI,CAAEO,MAAO,WAAaihE,UAAW,GAC1E,CCJO,SAASC,KACd,OACEtiE,EAAAA,EAAAA,MAAA,OAAKkG,MAAM,KAAKjB,OAAO,KAAK/E,QAAQ,YAAY2P,KAAK,OAAOC,MAAM,6BAA4B3P,SAAA,EAC5FC,EAAAA,EAAAA,KAAA,KAAG2P,SAAS,0BAAyB5P,UACnCC,EAAAA,EAAAA,KAAA,QAAME,EAAE,qFAAqFuP,KAAK,eAEpGzP,EAAAA,EAAAA,KAAA,QAAAD,UACEC,EAAAA,EAAAA,KAAA,YAAU3E,GAAG,oBAAmB0E,UAC9BC,EAAAA,EAAAA,KAAA,QAAM8F,MAAM,KAAKjB,OAAO,KAAK4K,KAAK,gBAK5C,CAEO,SAAS0yD,KACd,OACEviE,EAAAA,EAAAA,MAAA,OAAKkG,MAAM,KAAKjB,OAAO,KAAK/E,QAAQ,YAAY2P,KAAK,OAAOC,MAAM,6BAA4B3P,SAAA,EAC5FH,EAAAA,EAAAA,MAAA,KAAGiK,OAAO,8BAA6B9J,SAAA,EACrCC,EAAAA,EAAAA,KAAA,UAAQy6D,GAAG,KAAKC,GAAG,KAAKC,EAAE,KAAKlrD,KAAK,aACpCzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,sVACFuP,KAAK,cAGTzP,EAAAA,EAAAA,KAAA,QAAAD,UACEH,EAAAA,EAAAA,MAAA,UACEvE,GAAG,wBACH6R,EAAE,IACFC,EAAE,IACFrH,MAAM,KACNjB,OAAO,KACPu9D,YAAY,iBACZC,0BAA0B,OAAMtiE,SAAA,EAEhCC,EAAAA,EAAAA,KAAA,WAASsiE,aAAa,IAAIl/D,OAAO,wBACjCpD,EAAAA,EAAAA,KAAA,iBACE2f,GAAG,cACH9C,KAAK,SACLI,OAAO,4CACP7Z,OAAO,eAETpD,EAAAA,EAAAA,KAAA,gBACAA,EAAAA,EAAAA,KAAA,kBAAgBuiE,aAAa,OAC7BviE,EAAAA,EAAAA,KAAA,eAAawiE,IAAI,YAAYC,SAAS,SACtCziE,EAAAA,EAAAA,KAAA,iBAAe6c,KAAK,SAASI,OAAO,kEACpCjd,EAAAA,EAAAA,KAAA,WAAS8f,KAAK,SAAS0iD,IAAI,qBAAqBp/D,OAAO,oCACvDpD,EAAAA,EAAAA,KAAA,WAAS8f,KAAK,SAASH,GAAG,gBAAgB6iD,IAAI,iCAAiCp/D,OAAO,iBAKhG,CAEO,SAASqgB,KACd,OACE7jB,EAAAA,EAAAA,MAAA,OAAKkG,MAAM,KAAKjB,OAAO,KAAK/E,QAAQ,YAAY2P,KAAK,OAAOC,MAAM,6BAA4B3P,SAAA,EAC5FC,EAAAA,EAAAA,KAAA,KAAG6J,OAAO,8BAA6B9J,UACrCC,EAAAA,EAAAA,KAAA,UAAQy6D,GAAG,KAAKC,GAAG,KAAKC,EAAE,KAAKlrD,KAAK,eAEtCzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,+iCACFuP,KAAK,WAEPzP,EAAAA,EAAAA,KAAA,QAAAD,UACEH,EAAAA,EAAAA,MAAA,UACEvE,GAAG,wBACH6R,EAAE,IACFC,EAAE,IACFrH,MAAM,KACNjB,OAAO,KACPu9D,YAAY,iBACZC,0BAA0B,OAAMtiE,SAAA,EAEhCC,EAAAA,EAAAA,KAAA,WAASsiE,aAAa,IAAIl/D,OAAO,wBACjCpD,EAAAA,EAAAA,KAAA,iBACE2f,GAAG,cACH9C,KAAK,SACLI,OAAO,4CACP7Z,OAAO,eAETpD,EAAAA,EAAAA,KAAA,gBACAA,EAAAA,EAAAA,KAAA,kBAAgBuiE,aAAa,OAC7BviE,EAAAA,EAAAA,KAAA,eAAawiE,IAAI,YAAYC,SAAS,SACtCziE,EAAAA,EAAAA,KAAA,iBAAe6c,KAAK,SAASI,OAAO,kEACpCjd,EAAAA,EAAAA,KAAA,WAAS8f,KAAK,SAAS0iD,IAAI,qBAAqBp/D,OAAO,oCACvDpD,EAAAA,EAAAA,KAAA,WAAS8f,KAAK,SAASH,GAAG,gBAAgB6iD,IAAI,iCAAiCp/D,OAAO,iBAKhG,CCzEA,SAASs/D,GAAU9mE,GAAuD,IAAtD,IAAEugB,EAAG,WAAEwmD,EAAU,cAAEC,GAAgChnE,EACrE,MAAM0E,GAAQC,EAAAA,EAAAA,KAEd,OACEP,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACzB,GAAI,CAAEqF,MAAO,OAAQjB,OAAQ,OAAQtD,QAAS,OAAQyD,WAAY,UAAWjF,UAChFC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CACFzB,GAAI,CACFqF,MAAO,OACPjB,OAAQ,OACRtD,QAAS,OACTyD,WAAY,SACZqB,eAAgB,UAChBtG,SAED6iE,GACC5iE,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAAAnC,UACFC,EAAAA,EAAAA,KAACyjB,GAAS,MAEVk/C,EAAaxmD,EAAI/K,MACnBpR,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CACFzB,GAAI,CACFqF,MAAO,MACPjB,OAAQ,MACRxE,WAAYC,EAAM2E,QAAQ5E,WAAW6E,OACrCtE,aAAc,SAGhB+hE,IAAexmD,EAAI/K,MACrBpR,EAAAA,EAAAA,KAACgiE,GAAkB,IACjB7lD,EAAI/K,KAAOuxD,GACb3iE,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAAAnC,UACFC,EAAAA,EAAAA,KAACmiE,GAAW,MAEZ,QAIZ,CAEe,SAASU,GAAY56D,GAQd,IARe,MACnCqD,EAAK,QACL9C,EAAO,KACPF,EAAI,QACJ5G,EAAO,WACPihE,EAAU,UACV/V,EAAS,YACTttC,GACiBrX,EACjB,MAAO66D,EAAaC,IAAkBh6D,EAAAA,EAAAA,UAAmB,IAEnDzI,GAAQC,EAAAA,EAAAA,KAERyiE,EAAgB5xD,KACX0xD,EAAYv+D,SAAS6M,IAASA,IAASuxD,GAelDt+D,EAAAA,EAAAA,YAAU,KACJs+D,IAAejhE,EAAQyJ,QACrB3C,GAASA,GACf,GACC,CAAC9G,EAASihE,IAEb,MAAMC,EAAiBzmD,GACdywC,IAAczwC,EAAI/K,QAAU+K,EAAI8mD,UAGzC,OACErjE,EAAAA,EAAAA,MAAC0Q,EAAAA,GAAK,CAAChI,KAAMA,EAAMgD,MAAOA,EAAO9C,QAASA,EAAS4Z,eAAe,sBAAqBriB,SAAA,CACpFuf,GAActf,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACqL,WAAW,OAAM9L,SAAEuf,IAA4B,MAE1Etf,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACzB,GAAI,CAAEqF,MAAO,OAAQjB,OAAQ,WAElC7E,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACzB,GAAI,CAAEc,QAAS,OAAQ2U,cAAe,SAAUnR,IAAK,UAAWhF,SAClE2B,EAAQjH,KAAI,CAAC0hB,EAAKvR,KAEfhL,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAEFzB,GAAI,CACFc,QAAS,QACTxB,SAAA,EAEFC,EAAAA,EAAAA,KAAC0iE,GAAU,CAACvmD,IAAKA,EAAKwmD,WAAYA,EAAY/V,UAAWA,EAAWgW,cAAeA,EAAczmD,MACjGvc,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAACzB,GAAI,CAAE2T,KAAM,KAAMrU,SAAA,EACrBH,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CACFzB,GAAI,CACFc,QAAS,OACTb,QAAS,YACToH,OAAO,aAAD1C,OAAew9D,EAAczmD,GAAO7b,EAAMQ,OAAOixB,OAASzxB,EAAM2E,QAAQ5E,WAAW6E,QACzFtE,aAAc,OACdoE,WAAY,SACZqB,eAAgB,gBAChB1F,OAAQ,aACJqiE,EAAa7mD,EAAI/K,MACjB,CACE/Q,WAAYC,EAAM2E,QAAQ5E,WAAW2L,OACrCk3D,oBAAqB,OACrBC,qBAAsB,OACtBrE,uBAAwB3iD,EAAIpc,SAAW,IAAM,OAC7Cg/D,wBAAyB5iD,EAAIpc,SAAW,IAAM,QAEhD,CAAC,GAEPK,QAASA,KACH+b,EAAIpc,UA3DDqR,KACvB,MAAMxG,EAAQk4D,EAAYj4D,QAAQuG,GAElC,IAAe,IAAXxG,EACFm4D,EAAe,IAAID,EAAa1xD,QAC3B,CACL,MAAMgyD,EAAiB,IAAIN,GAC3BM,EAAep4D,OAAOJ,EAAO,GAC7Bm4D,EAAe,IAAIK,GACrB,GAkDkCC,CAAgBlnD,EAAI/K,KAAK,EAC3CrR,SAAA,EAEFH,EAAAA,EAAAA,MAACY,EAAAA,EAAU,CAACQ,MAAM,eAAeiF,WAAY,IAAIlG,SAAA,CAC9Coc,EAAI/K,KAAO,EAAE,KAAG+K,EAAI7Q,SAGtB6Q,EAAIpc,UACHC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CACFzB,GAAI,CACFqF,MAAO,OACPjB,OAAQ,OACR4b,WAAY,eACRuiD,EAAa7mD,EAAI/K,MAAQ,CAAExB,UAAW,kBAAqB,CAAC,GAChE7P,UAEFC,EAAAA,EAAAA,KAACkiE,GAAK,MAEN,QAGLc,EAAa7mD,EAAI/K,OAAW+K,EAAIpc,UAC/BH,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CACFzB,GAAI,CACF6iE,WAAW,aAADl+D,OACRw9D,EAAczmD,GAAO7b,EAAMQ,OAAOixB,OAASzxB,EAAM2E,QAAQ5E,WAAW6E,QAEtEw4D,aAAa,aAADt4D,OACVw9D,EAAczmD,GAAO7b,EAAMQ,OAAOixB,OAASzxB,EAAM2E,QAAQ5E,WAAW6E,QAEtEq+D,YAAY,aAADn+D,OACTw9D,EAAczmD,GAAO7b,EAAMQ,OAAOixB,OAASzxB,EAAM2E,QAAQ5E,WAAW6E,QAEtE45D,uBAAwB,OACxBC,wBAAyB,QACzBh/D,SAAA,EAEFH,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CACFzB,GAAI,CACFC,QAAS,YACTL,WAAYC,EAAM2E,QAAQ5E,WAAW2L,OACrC8yD,uBAAwB,OACxBC,wBAAyB,QACzBh/D,SAAA,CAEDoc,EAAIpc,SAAStF,KAAI,CAAC+oE,EAAM54D,KACvBhL,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAEFzB,GAAI,CACFc,QAAS,OACT8E,eAAgB,gBAChBrB,WAAY,SACZmN,UAAqB,IAAVvH,EAAc,MAAQ,OACjC7K,SAAA,EAEFC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACiQ,UAAU,MAAK1Q,SAAEyjE,EAAKhyD,SAClCxR,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACiQ,UAAU,MAAK1Q,SAAEyjE,EAAKj5D,UAAmB,GAAAnF,OAT7C+W,EAAI/K,KAAI,KAAAhM,OAAIwF,EAAK,gBAY5BuR,EAAI8mD,WACHrjE,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAEFzB,GAAI,CACFc,QAAS,OACT8E,eAAgB,gBAChBrB,WAAY,SACZmN,UAAqB,IAAVvH,EAAc,MAAQ,OACjC7K,SAAA,EAEFC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACiQ,UAAU,MAAK1Q,UACzBC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,cAEF2E,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACiQ,UAAU,MAAMzP,MAAM,cAAcP,GAAI,CAAE+F,SAAU,SAAUzG,SACvEoc,EAAI8mD,cACM,GAAA79D,OAbL+W,EAAI/K,KAAI,yBAehB,KACD+K,EAAIsnD,cAAgB7W,IAAczwC,EAAI/K,MACvCxR,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAEFzB,GAAI,CACFc,QAAS,OACT8E,eAAgB,gBAChBrB,WAAY,SACZmN,UAAqB,IAAVvH,EAAc,MAAQ,OACjC7K,SAAA,EAEFC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACiQ,UAAU,MAAK1Q,UACzBC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,cAEF2E,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACiQ,UAAU,MAAMzP,MAAM,cAAcP,GAAI,CAAE+F,SAAU,SAAUzG,SACvEoc,EAAIsnD,iBACM,GAAAr+D,OAbL+W,EAAI/K,KAAI,4BAehB,QAGLw7C,IAAczwC,EAAI/K,MAAQ+K,EAAIunD,cAAgBvnD,EAAIunD,aAAav4D,OAAS,GACvEnL,EAAAA,EAAAA,KAACqF,EAAAA,GAAI,CACHC,WAAS,EACTN,WAAW,SACXvE,GAAI,CACFJ,WAAYC,EAAM2E,QAAQ5E,WAAWqL,OACrCozD,uBAAwB,OACxBC,wBAAyB,QACzBh/D,SAEDoc,EAAIunD,aAAajpE,KAAI,CAACi3B,EAAQ9mB,KAC7B5K,EAAAA,EAAAA,KAACqF,EAAAA,GAAI,CAEHM,MAAI,EACJC,IAAE,EACFnF,GAAI,CACF6iE,WAAsB,IAAV14D,EAAc,OAAM,aAAAxF,OAAgB9E,EAAM2E,QAAQ5E,WAAW6E,SACzEnF,UAEFC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CACFzB,GAAI,CACFc,QAAS,OACTyD,WAAY,SACZqB,eAAgB,SAChBxB,OAAQ,QACR9E,SAED2xB,KACG,GAAAtsB,OAhBE+W,EAAI/K,KAAI,KAAAhM,OAAIwF,EAAK,gBAoB7B,QAEJ,UACA,GAAAxF,OA/JE+W,EAAI/K,KAAI,KAAAhM,OAAIwF,UAsKlC,C,gBC7QA,SAAS+4D,GAAQ/nE,GAA8B,IAA7B,KAAEwV,GAAwBxV,EAC1C,MAAM,WAAE+mE,EAAU,UAAE/V,EAAS,QAAElrD,EAAO,QAAE8G,EAAO,MAAE8C,EAAK,YAAEgU,IAAgBskD,EAAAA,GAAAA,IAAexyD,GAEvF,OACEpR,EAAAA,EAAAA,KAAC6jE,GAAW,CACVv4D,MAAOA,EACPhD,MAAI,EACJq6D,WAAYA,EACZ/V,UAAWA,EACXlrD,QAASA,EACT8G,QAASA,EACT8W,YAAaA,GAGnB,CAEe,SAASwkD,KACtB,MAAMhB,GAAciB,EAAAA,GAAAA,MAEpB,OACE/jE,EAAAA,EAAAA,KAAAoL,EAAAA,SAAA,CAAArL,SACG+iE,EAAYroE,KAAK2W,IAChBpR,EAAAA,EAAAA,KAAC2jE,GAAQ,CAAYvyD,KAAMA,GAAZA,MAIvB,C,gBCxBA,MAAM4yD,GAAW,GAEXC,GAAgD,CAAC,EAgChD,SAASC,KACd,MAAO57D,IAAQ2+B,EAAAA,GAAAA,OAEf5iC,EAAAA,EAAAA,YAAU,KACRjF,GAAAA,GAAM+kE,SAAS9zD,IACQA,EAAMkG,QARhBhS,SAAS,+EA3B1B,SAAsBgS,GACpB,MAAM6tD,EAAYH,GAAe1tD,GAE3B8tD,GAAM,IAAIjvC,MAAOC,UAEvB,OAAK+uC,EAKDC,EAAMD,EAAuB,IAAXJ,KACpBC,GAAe1tD,GAAW8tD,GACnB,IANPJ,GAAe1tD,GAAW8tD,GACnB,EASX,CAoBYC,CAAa,uDACfh8D,EAAIiD,EAAAA,GAAAC,EAAC,CAAAnQ,GAAA,WAET,GACA,GACD,GACL,CCnCO,SAASkpE,MACdlgE,EAAAA,EAAAA,YAAU,KACRjF,GAAAA,GAAMolE,UAASt1D,SACPud,EAAKkyB,UAAYkC,EAAAA,EAAMC,WAAW2jB,KAAKC,aAAe72D,GAAAA,GAAUO,aAd5Ec,iBACE,MAAM,UAACtM,GAAai+C,EAAAA,EAAMC,WAAW2jB,KAErC,GAAI75C,OAAOm2C,IAAMn2C,OAAOm2C,GAAGG,MAAUt+D,EAEnC,aAD4BgoB,OAAOm2C,GAAGG,KAAKyD,gBACtBvgE,aAAexB,EAGtC,OAAO,CACT,CAMoBgiE,GACH,CACLhhD,SAAS,EACTrN,QAAOhL,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,YAKR,CAAEuoB,SAAS,EAAMrN,QAAS,KACjC,GACD,GACL,CC3Be,SAASimB,GAAK5gC,GAA+C,IAA9C,SAAEmE,GAAyCnE,EAIvE,OAHAsoE,KACAK,MAEOvkE,EAAAA,EAAAA,KAAAoL,EAAAA,SAAA,CAAArL,SAAGA,GACZ,C,uFCFA,SAAS8kE,GAAW7jC,EAAaC,GAC/B,OALF,SAAc6jC,GACZ,OAAO,IAAIhqE,SAASC,GAAYqsB,WAAWrsB,EAAS+pE,IACtD,CAGSx4C,CAAK0U,EAAMnX,KAAKC,MAAMD,KAAKyL,SAAWzL,KAAKoX,IAAI,EAAGA,EAAMD,IACjE,CAGO,MAAM+jC,WAAsB7pE,MAAM+oB,WAAAA,GAAA,SAAA4B,WAAA,KACvCjhB,KAAO,gBAAgB,KACvB2R,QAAU,wBAAyB,EAI9B,MAAMyuD,WAAuB9pE,MAAM+oB,WAAAA,GAAA,SAAA4B,WAAA,KACxCjhB,KAAO,gBAAiB,ECmB1B,MAAMqgE,GAAiE,CACrE,CAAC/nC,GAAAA,GAAQyzB,cAAe,CAAEgM,EAAG,GAAIuI,QAAS,IAAKC,QAAS,KACxD,CAACjoC,GAAAA,GAAQo1B,iBAAkB,CAAEqK,EAAG,GAAIuI,QAAS,IAAKC,QAAS,KAC3D,CAACjoC,GAAAA,GAAQwzB,UAAW,CAAEiM,EAAG,GAAIuI,QAAS,IAAKC,QAAS,KACpD,CAACjoC,GAAAA,GAAQk1B,iBAAkB,CAAEuK,EAAG,GAAIuI,QAAS,IAAKC,QAAS,KAC3D,CAACjoC,GAAAA,GAAQ6zB,MAAO,CAAE4L,EAAG,GAAIuI,QAAS,IAAKC,QAAS,MAE5CC,GAAsC,CAAEzI,EAAG,EAAGuI,QAAS,EAAGC,QAAS,GAQ1D,SAASE,GAAOzpE,GAAmE,IAAlE,oBAAE0pE,EAAmB,QAAEC,EAAO,UAAEC,GAAyB5pE,EACvF,MAAM,QAAE+rC,EAAO,QAAEinB,EAAO,SAAEuE,IAAatE,EAAAA,GAAAA,gBAEjC4W,GAAkB1V,EAAAA,GAAAA,MAElB2V,GAAoBC,EAAAA,GAAAA,MACpBC,GAAiBvX,EAAAA,GAAAA,MAEjBwX,GAAaj+D,EAAAA,EAAAA,cAChBk+D,IAAkB,IAADC,EAChB,IAAK5S,IAAavE,EAAS,MAAM,IAAI1zD,MAAM,0BAE3C,OD9BC,SACLq1B,EAAoB30B,GAE0B,IAE1CoqE,GAHJ,EAAErJ,EAAC,QAAEuI,EAAO,QAAEC,GAAuBvpE,EAEjCqqE,GAAY,EA6BhB,MAAO,CACLC,QA3Bc,IAAIprE,SAAWoU,MAAOnU,EAASorE,KAG7C,IAFAH,EAAkBG,IAEL,CACX,IAAI/iE,EACJ,IACEA,QAAemtB,IACV01C,IACHlrE,EAAQqI,GACR6iE,GAAY,GAEd,KACF,CAAE,MAAO51D,GACP,GAAI41D,EACF,MAEF,GAAItJ,GAAK,KAAOtsD,aAAiB20D,IAAiB,CAChDmB,EAAO91D,GACP41D,GAAY,EACZ,KACF,CACAtJ,GACF,OACMkI,GAAWK,EAASC,EAC5B,KAIAt+C,OAAQA,KACFo/C,IACJA,GAAY,EACZD,EAAgB,IAAIjB,IAAgB,EAG1C,CCXatY,EACL,IACE0G,EAASiT,sBAAsBN,GAAM9qE,MAAKkU,UACxC,GAAgB,OAAZm3D,EAAkB,CACpB,GAAI1+B,EAAS,CACX,MAAM2+B,EAAKhB,EAAoBQ,GAE3BQ,EAAGC,SAEDX,GAAkBU,EAAGC,SAAWX,EAAe1gB,YACjDwgB,EAAkBI,GAEXQ,EAAGE,UAAY1B,KAAG,MAAQ1vC,KAAKivC,OACxCqB,EAAkBI,EAEtB,CACA,MAAM,IAAId,EACZ,CACA,OAAOqB,CAAO,KAnBmC,QAArCN,EAAGd,GAA0BrW,UAAQ,IAAAmX,EAAAA,EAAIX,GAsB1D,GAEH,CAACz9B,EAASi+B,EAAgBhX,EAAS0W,EAAqBnS,EAAUuS,IA2BpE,OAxBArhE,EAAAA,EAAAA,YAAU,KACR,IAAKuqD,IAAYuE,IAAasS,EAAiB,OAE/C,MAAMgB,EAAUjrE,OAAOD,KAAK+pE,GACzBz7D,QAAQi8D,GA7ER,SAAqBL,EAAyBa,GACnD,GAAIA,EAAGD,QAAS,OAAO,EACvB,IAAKC,EAAGI,uBAAwB,OAAO,EACvC,MAAMC,EAAmBlB,EAAkBa,EAAGI,uBAC9C,GAAIC,EAAmB,EAAG,OAAO,EACjC,MAAMC,IAAkB,IAAIxxC,MAAOC,UAAYixC,EAAGE,WAAa1B,KAAG,MAElE,OAAI8B,EAAiB,GAEZD,EAAmB,IAGxBC,EAAiB,IAEZD,EAAmB,CAI9B,CA2DwBE,CAAYpB,EAAiBH,EAAoBQ,MAClErrE,KAAKqrE,IACJ,MAAM,QAAEI,EAAO,OAAEr/C,GAAWg/C,EAAWC,GAUvC,OATAI,EACGlrE,MAAMqrE,IAELb,EAAU,CAAE5W,UAASkX,OAAMO,WAAU,IAEtC7f,OAAOn2C,IACFA,aAAiB00D,IACrBQ,EAAQ,CAAE3W,UAASkX,OAAMlW,YAAa6V,GAAkB,IAErD5+C,CAAM,IAGjB,MAAO,KACL4/C,EAAQ38D,SAAS+c,GAAWA,KAAS,CACtC,GACA,CAAC+nC,EAASuE,EAAUsS,EAAiBI,EAAYL,EAAWD,EAASD,IAEjE,IACT,C,eCzGO,SAASwB,GAAsBT,GACpC,MAAO,CACLU,UAAWV,EAAQU,UACnBnX,YAAayW,EAAQzW,YACrBL,gBAAiB8W,EAAQ9W,gBACzB1gB,KAAMw3B,EAAQx3B,KACdjqB,OAAQyhD,EAAQzhD,OAChB7N,GAAIsvD,EAAQtvD,GACZiwD,gBAAiBX,EAAQW,gBACzBC,iBAAkBZ,EAAQY,iBAE9B,CAEe,SAAS5B,KAEtB,MAAM,QAAEzW,IAAYC,EAAAA,GAAAA,gBAMdqY,GAAexsD,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMusD,eAC/C5B,GAAsBniE,EAAAA,EAAAA,UAAQ,IAC7ByrD,GAAYsY,EAAatY,GACvBpzD,OAAOyhB,OAAOiqD,EAAatY,IAAU1+B,QAC1C,CAACC,EAAKm2C,MACAa,EAAAA,GAAAA,IAAYb,KAAKn2C,EAAIm2C,EAAGR,MAAQQ,GAC7Bn2C,IAET,CAAC,GAN4C,CAAC,GAQ/C,CAACy+B,EAASsY,IAEP5sD,GAAWC,EAAAA,EAAAA,MACXgrD,GAAU39D,EAAAA,EAAAA,cACdhM,IAAA,IAAC,QAAEgzD,EAAO,KAAEkX,EAAI,YAAElW,GAAqEh0D,EAAA,OACrF0e,GAAS8sD,EAAAA,GAAAA,IAAmB,CAAExY,UAASkX,OAAMlW,gBAAe,GAC9D,CAACt1C,IAEGkrD,GAAY59D,EAAAA,EAAAA,cAChBK,IAAiG,IAAhG,QAAE2mD,EAAO,KAAEkX,EAAI,QAAEO,GAAyEp+D,EACzFqS,GACE+sD,EAAAA,GAAAA,IAAoB,CAClBzY,UACAkX,OACAO,QAASS,GAAsBT,KAElC,GAgBH,CAAC/rD,EAAUgrD,IAGb,OAAOtlE,EAAAA,EAAAA,KAACsnE,GAAU,CAAChC,oBAAqBA,EAAqBC,QAASA,EAASC,UAAWA,GAC5F,C,gEC1EO,MAAM+B,IAAcC,EAAAA,GAAAA,GAAa,CACtCC,OAAQ,CAACpU,GAAAA,EAASqU,GAAAA,GAClBC,WAAY,CACV,CAACtU,GAAAA,EAAQh4D,KAAKusE,EAAAA,GAAAA,KACd,CAACF,GAAAA,EAAQrsE,KAAKusE,EAAAA,GAAAA,Q,4BCFX,SAASC,GAAajsE,GAAoC,IAAnC,SAAEmE,GAA8BnE,EAC5D,MAAOksE,EAAYC,IAAiBh/D,EAAAA,EAAAA,WAAS,GAQ7C,OANA1E,EAAAA,EAAAA,YAAU,KAAO,IAAD2jE,GACP,QAAHA,EAAAz6D,WAAG,IAAAy6D,OAAA,EAAHA,EAAKvpD,YAAawpD,KAAKxpD,UACzBspD,GAAc,EAChB,GACC,CAACA,IAEGD,GAAa9nE,EAAAA,EAAAA,KAAAoL,EAAAA,SAAA,CAAArL,SAAGA,KAAeC,EAAAA,EAAAA,KAAA,OAAAD,SAAK,0BAC7C,C,4BCbA,MAAMmoE,GAAc,CAACC,GAAAA,IAEd,SAASC,GAAcC,GAC5B,GAAIA,aAAax6D,GAAAA,UAAW,CAC1B,MAAMy6D,EAAaJ,GAAYl+D,MAAMs+D,GAAeA,EAAW/5D,YAAc85D,IAC7E,IAAKC,EACH,MAAMptE,MAAM,yBAEd,OAAOotE,CACT,CACE,OAAOH,GAAAA,EAEX,CCTO,MAMDI,GAAqB,IANS,CAClCC,GAAAA,GAAeC,gBACfD,GAAAA,GAAeE,eACfF,GAAAA,GAAeG,WCJF,SAASvV,GAAYx3D,GAAyC,IAAxC,SAAEmE,GAAmCnE,GCAxEyI,EAAAA,EAAAA,YAAU,KAAO,IAADukE,EAKAC,EAJW,QAAzBD,EAAAE,GAAAA,GAASC,wBAAgB,IAAAH,GAAzBA,EAA2BpiB,OAAM,KAC/B7sB,QAAQtpB,MAAM,wCAAwC,IAGpD24D,EAAAA,KACiB,QAAnBH,EAAAC,GAAAA,GAASG,kBAAU,IAAAJ,GAAnBA,EAAqBriB,OAAM,KACzB7sB,QAAQtpB,MAAM,wCAAwC,IAE1D,GACC,IDPH,MAAM64D,GDOC/lE,EAAAA,EAAAA,UAAQ,KACb,MAAMgmE,EAA2C,GAEjDA,EAAuB/+D,QAAQm+D,IAG/BY,EAAuB/+D,KAAKo+D,GAAAA,GAAeluC,SAG3C,MAAM8uC,EAAgDD,EACnD1uE,IAAI2tE,IACJ3tE,KAAImB,IAAA,IAAC,UAAE2S,EAAS,MAAE86D,GAAOztE,EAAA,MAAK,CAAC2S,EAAW86D,EAAM,IACnD,OAAOD,CAAc,GACpB,IClBH,OAAOppE,EAAAA,EAAAA,KAACspE,GAAAA,kBAAiB,CAACJ,WAAYA,EAAWnpE,SAAEA,GACrD,C,+DEJe,SAASo0B,KACtB,MAAM7Z,GAAWC,EAAAA,EAAAA,OACVjS,EAAMkS,GAAWsI,EAAAA,UAAe,GACjCymD,GAAkB7uD,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM6uD,WAElD10D,EAAcA,CAAC/N,EAAYsvB,KAChB,cAAXA,GACJ/b,GAASic,EAAAA,GAAAA,KAAgB,EAW3B,OAJAzT,EAAAA,WAAgB,KACdtI,EAAQ+uD,EAAgBjhE,KAAK,GAC5B,CAACihE,EAAgB73C,OAAQ63C,EAAgBjhE,QAG1C1I,EAAAA,EAAAA,MAAAwL,EAAAA,SAAA,CAAArL,SAAA,CAE+B,YAA5BwpE,EAAgBt4D,UACfjR,EAAAA,EAAAA,KAACypE,GAAAA,EAAW,CACV10D,aAAcw0D,EAAgBx0D,aAC9BzM,KAAMA,EACN2lB,iBAAkBs7C,EAAgBt7C,iBAClCzlB,QAASsM,EACTyB,QAASgzD,EAAgBhzD,QACzB2W,oBAAqBitC,GAAAA,IAKI,UAA5BoP,EAAgBt4D,UACfjR,EAAAA,EAAAA,KAACypE,GAAAA,EAAW,CACVv8C,oBAAqBitC,GAAAA,EACrBplD,aAAcw0D,EAAgBx0D,aAC9BzM,KAAMA,EACN2lB,iBAAkBs7C,EAAgBt7C,iBAClCzlB,QAASsM,EAAY/U,UAErBC,EAAAA,EAAAA,KAAC0pE,GAAAA,EAAK,CACJz4D,QAAQ,SACR04D,SAAUJ,EAAgBK,cAC1BnpE,GAAI,CACFopE,QAAQ,GAADzkE,OAAKmkE,EAAgBK,cAAa,SACzC5oE,MAAyC,YAAlCuoE,EAAgBK,cAA8B,WAAa,IAEpEl4C,QAC4B,IAA1B63C,EAAgB33C,OACd5xB,EAAAA,EAAAA,KAAC8pE,GAAAA,EAAU,CAACrkE,KAAK,QAAQzE,MAAM,UAAUZ,QAxC9B2pE,KACvBzvD,GAASic,EAAAA,GAAAA,KAAgB,EAuCsDx2B,UACjEC,EAAAA,EAAAA,KAACw3D,GAAAA,EAAS,CAACv2D,SAAS,YAEpB,KACLlB,SAEAwpE,EAAgBhzD,cAM7B,CC9DA,UAAeyzD,EAAAA,EAAAA,IAAWpuE,IAAkE,IAAjE,SAAEmE,EAAU0e,UAAU,SAAEM,IAAmCnjB,EASpF,OARAyI,EAAAA,EAAAA,YAAU,KACRumB,OAAOq/C,SAAS,CACd18D,IAAK,EACLC,KAAM,EACN08D,SAAU,UACV,GACD,CAACnrD,IAEGhf,GAAa,IAAY,I,uCCZlC,UACEoqE,MAAO,UAGPC,aAAc,UACdC,WAAY,UACZ/oD,YAAa,UACbgpD,YAAa,UACbC,WAAY,UAGZC,eAAgB,UAChBC,aAAc,UACd1pE,cAAe,UACf2pE,cAAe,UACfC,aAAc,UAGdC,aAAc,UACdC,WAAY,UACZC,YAAa,UACbh5C,YAAa,UAGbi5C,WAAY,UACZC,UAAW,UAGXC,YAAa,UACbC,WAAY,UACZC,WAAY,UAGZC,aAAc,UACdC,YAAa,UACbC,YAAa,UAEbv5C,OAAQ,UAERlO,QAAS,UAGT0nD,OAAQ,UACRC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UACTC,QAAS,UAKTC,UAAW,UACXC,eAAgB,UAGhBhtD,WAAY,UACZitD,WAAY,UACZ7sD,WAAY,UACZ8sD,WAAY,UACZC,WAAY,UAGZC,gBAAiB,UACjBrsD,kBAAmB,UACnBssD,iBAAkB,UAClBC,eAAgB,UAChBC,cAAe,UAEfC,QAAS,UAETnsD,iBAAkB,UAElBosD,eAAgB,UAChBC,iBAAkB,UAClBC,mBAAoB,UACpBC,kBAAmB,UACnBC,gBAAiB,UACjBC,eAAgB,UAEhBC,YAAa,UACbC,YAAa,UACbC,YAAa,UAEbthE,aAAc,UACduhE,YAAa,UAEbC,wBAAyB,UAGzBC,iBAAkB,UAClBC,gBAAiB,UACjBC,gBAAiB,UACjBC,eAAgB,UAChBC,eAAgB,UAChBC,eAAgB,UAGhBC,mBAAoB,UACpBztD,kBAAmB,UACnB0tD,kBAAmB,UACnBC,iBAAkB,UAClBC,iBAAkB,UAElBC,qBAAsB,UACtBC,mBAAoB,UACpB96D,QAAS,UACT+6D,QAAS,UAETC,IAAK,UAEL,eAAgB,W,UChHlB,MAAMC,IAAW9P,EAAAA,EAAAA,GAAY,CAAC,GAEvB,SAAS+P,GAAwB7tE,GACtC,MAAMqI,GAASC,EAAAA,GAAAA,IAAYtI,GAErB8tE,EAAyBzlE,EAASrI,EAAM+tE,gBAAkB/tE,EAAMQ,OAAOuf,iBAEvEiuD,EAAsB3lE,EAASrI,EAAMiuE,iBAAmBjuE,EAAMQ,OAAOisE,YAErEyB,GAA6BC,EAAAA,GAAAA,IAASC,KAAAA,IAAAC,EAAAA,GAAAA,GAAA,kHAStCC,GAA6BH,EAAAA,GAAAA,IAASI,KAAAA,IAAAF,EAAAA,GAAAA,GAAA,kRAe5C,MAAO,CACLG,cAAe,CACbC,eAAgB,CACd/0D,KAAM,CACJnO,WAAY,KAIlBmjE,UAAW,CACTD,eAAgB,CACd/0D,KAAM,CACJ/T,WAAY,IACZrF,aAAc,OACdquE,cAAe,OACf,8BAA+B,CAC7BjuE,MAAO2H,EAASrI,EAAMQ,OAAOC,cAAgBT,EAAMQ,OAAOuf,iBAC1DhN,YAAa1K,EAASrI,EAAMQ,OAAOC,cAAgBT,EAAMQ,OAAOuf,iBAChE,UAAW,CACThgB,WAAY,2BAEd,cAAe,CACbyH,OAAO,aAAD1C,OAAetE,GAAOorE,YAC5BlrE,MAAO,YAGX,qCAAsC,IAChC2H,EACA,CACEtI,WAAY,WAEd,CAAEW,MAAO,UAAWX,WAAY,YAEtC,wBAAyB,CACvB,cAAe,CACbA,WAAYS,GAAOorE,WACnB3rD,UAAW,OACX,iBAAkB,CAChBvf,MAAOF,GAAOurE,oBAIpB,uBAAwB,CACtB,iBAAkB,CAChBrrE,MAAO,UACP8G,OAAQ,uBAIdonE,iBAAkB,CAChB7uE,WAAY+tE,EACZ,wBAAyB,CACvB1tE,QAAS,cAGbyuE,mBAAoB,CAClB9uE,WAAYsI,EAASrI,EAAMQ,OAAOorE,WAAa,UAC/ClrE,MAAO2H,EAAS,UAAYrI,EAAMQ,OAAOwgB,YACzCxZ,OAAQ,oBACRyY,UAAW,UAIjB6uD,SAAU,CACR5mD,aAAc,CACZ6mD,UAAW,GAEbN,eAAgB,CACd/0D,KAAM,CACJs1D,gBAAiB,OACjBzuE,gBAAiB8H,EAASrI,EAAMQ,OAAOke,WAAa1e,EAAMQ,OAAOqpE,MAGjE,4DAA6D,CAC3D,oEAAqE,CACnE,UAAW,CACTtpE,gBAAiBP,EAAMQ,OAAOwgB,aAEhC,2BAA4B,CAC1BtgB,MAAO,WAKfuuE,QAAS,CACP3uE,aAAa,GAADwE,OAAK9E,EAAMM,aAAY,SAIzC4uE,cAAe,CACbT,eAAgB,CACd/0D,KAAM,CACJhZ,MAAOV,EAAMQ,OAAO2uE,SACpB/uE,QAAS,QAEX4K,MAAO,CACLrK,SAAU,cAIhByuE,eAAgB,CACdX,eAAgB,CACd/0D,KAAM,CACJtZ,QAAS,OAET,eAAgB,CACd,CAACwtE,GAASlrE,YAAYC,KAAK,OAAQ,CACjC0sE,cAAe,SAGnB,CAACzB,GAASlrE,YAAYC,KAAK,OAAQ,CACjCvC,QAAS,WAKjBkvE,eAAgB,CACdb,eAAgB,CACd/0D,KAAM,CACJtZ,QAAS,UAIfmvE,SAAU,CACRd,eAAgB,CACd/0D,KAAM,CACJhV,WAAY,UAEd8qE,SAAU,CACRhoE,OAAQ,gBAIdioE,cAAe,CACbhB,eAAgB,CACd/0D,KAAM,CACJ,cAAe,CACbpZ,aAAc,QAEhB,qBAAsB,CACpBI,MAAOV,EAAMwG,cACbyO,WAAY,OACZo6D,cAAe,OACf9uE,gBAAiBP,EAAM0vE,eACvB,iBAAkB,CAChBhvE,MAAOV,EAAM6e,YACbte,gBAAiBytE,EACjB,UAAW,CACTztE,gBAAiBytE,GAEnB,0BAA2B,CACzBttE,MAAOV,EAAM6e,cAGjB,UAAW,CACTte,gBAAiBytE,EACjBttE,MAAOV,EAAM6e,YACb,0BAA2B,CACzBne,MAAOV,EAAM6e,eAMnB,8BAA+B,CAC7Bne,MAAOV,EAAM6e,YACb5J,WAAY,OACZo6D,cAAe,OACfluD,aAAc,MACdgQ,YAAa,MACb,eAAgB,CACdhQ,aAAc,GAEhB,qBAAsB,CACpBzgB,MAAO,WAET,0BAA2B,CACzBA,MAAOV,EAAM2vE,aACb5vE,WAAY+tE,EACZ,0BAA2B,CACzBptE,MAAOV,EAAM2vE,cAEf,qBAAsB,CACpBjvE,MAAOV,EAAM2vE,gBAInB,0BAA2B,CACzBjvE,MAAOV,EAAM6e,YACb5J,WAAY,MACZo6D,cAAe,MACfl+C,YAAa,MACbpxB,WAAY,cACZ,qBAAsB,CACpBW,MAAO,WAET,0BAA2B,CACzBA,MAAOV,EAAM2vE,aACb5vE,WAAY,cACZ,0BAA2B,CACzBW,MAAOV,EAAM2vE,cAEf,qBAAsB,CACpBjvE,MAAOV,EAAMQ,OAAOmf,wBAOhCiwD,gBAAiB,CACfnB,eAAgB,CACd/0D,KAAM,CACJhZ,MAAOV,EAAM6e,YACbpG,SAAU,UAIhBo3D,gBAAiB,CACfpB,eAAgB,CACd37D,QAAS,CACPpS,MAAOV,EAAMmvE,YAInBW,aAAc,CACZrB,eAAgB,CACd/0D,KAAM,CACJ,wBAAyB,CACvB/Y,SAAU,SAGdsc,MAAO,CACLvc,MAAOV,EAAMmvE,SACb,iBAAkB,CAChBzuE,MAAOV,EAAMwG,cACb7F,SAAU,WACVgF,WAAY,QAKpBoqE,iBAAkB,CAChBtB,eAAgB,CACd/0D,KAAM,CACJ3Z,WAAYsI,EAASrI,EAAMQ,OAAOkrE,eAAiB1rE,EAAMQ,OAAOyqE,OAChE3qE,aAAa,GAADwE,OAAK9E,EAAMM,aAAY,MACnC,aAAc,CACZyS,YAAa/S,EAAMQ,OAAOif,mBAE5B,0BAA2B,CACzB1M,YAAa/S,EAAMQ,OAAOspE,cAE5B,2BAA4B,CAC1B1pE,QAAS,IAGb6c,MAAO,CACLtX,WAAY,IACZ5F,WAAYsI,EAASrI,EAAMQ,OAAOkrE,eAAiB1rE,EAAMQ,OAAOyqE,OAChE7qE,QAAS,cACTE,aAAa,GAADwE,OAAK9E,EAAMM,aAAY,MACnC,gCAAiC,CAC/BF,QAAS,YACT,mCAAoC,CAClC+wB,YAAa,KAInB6+C,kBAAmB,CACjB7+C,YAAa,GAEf8+C,eAAgB,CACdl9D,YAAa/S,EAAMQ,OAAOka,UAC1Bpa,aAAa,GAADwE,OAAK9E,EAAMM,aAAY,SAIzC4vE,UAAW,CACTzB,eAAgB,CACd/0D,KAAM,CACJ,iBAAkB,CAChBhZ,MAAO2H,EAASrI,EAAMQ,OAAOqe,YAAc,GAAK7e,EAAMQ,OAAO4qE,UAGjE+E,KAAM,CACJ5vE,gBAAiBP,EAAM6pE,MACvBrkE,MAAO,OAET4qE,WAAY,CACV1vE,MAAOV,EAAMQ,OAAOwgB,eAI1BqvD,gBAAiB,CACf5B,eAAgB,CACd/0D,KAAM,CACJ,yBAA0B,CACxB3Z,WAAYsI,EAASrI,EAAMQ,OAAOqe,YAAc,GAAK7e,EAAMQ,OAAO0pE,eAClE5pE,aAAc,EACdI,MAAOV,EAAMmvE,SACb,sBAAuB,CACrBzuE,MAAO2H,EAASrI,EAAMQ,OAAOqe,YAAc,GAAK7e,EAAMQ,OAAO2pE,gBAInEmG,OAAQ,CACNhwE,aAAa,GAADwE,OAAK9E,EAAMM,aAAY,MACnC2f,UACE,+GAIRswD,WAAY,CACV9B,eAAgB,CACd/0D,KAAM,CACJ3G,YAAa/S,EAAMwwE,QACnB7wE,QAAS0I,EAAS,GAAM,KAI9BooE,UAAW,CACThC,eAAgB,CACdh9D,OAAQ,CACN,UAAW,CACTlR,gBAAiB,kBAKzBmwE,YAAa,CACXjC,eAAgB,CACdh9D,OAAQ,CACN9Q,SAAU,QAEZ+Y,KAAM,CACJtZ,QAAS,KAIfuwE,UAAW,CACTlC,eAAgB,CACd/0D,KAAM,CACJhZ,MAAO2H,EAASrI,EAAMQ,OAAOke,WAAa1e,EAAMQ,OAAOwpE,YACvDjqE,WAAYsI,EAASrI,EAAM6e,YAAc7e,EAAMQ,OAAOupE,cAI5D6G,QAAS,CACPnC,eAAgB,CACd/0D,KAAM,CACJ,0CAA2C,CACzChZ,MAAO,cAKfmwE,mBAAoB,CAClBpC,eAAgB,CACd/0D,KAAM,CACJhZ,MAAOV,EAAMmvE,SACbxuE,SAAU,UAIhBmwE,YAAa,CACXrC,eAAgB,CACdv9D,MAAO,CACLW,UAAW,GACXsP,aAAc,MAIpB4vD,eAAgB,CACdtC,eAAgB,CACd/0D,KAAM,CACJuG,UAAW,UAIjB+wD,8BAA+B,CAC7BvC,eAAgB,CACd5wD,KAAM,CACJtd,gBAAiB8H,EAASrI,EAAMQ,OAAOirE,UAAYzrE,EAAMQ,OAAOspE,aAChE,2BAA4B,CAC1B/2D,YAAa1K,EAASrI,EAAMQ,OAAOqe,YAAc,GAAK7e,EAAMQ,OAAOupE,YAErE,iBAAkB,CAChBrpE,MAAO2H,EAASrI,EAAMQ,OAAOgG,cAAgBxG,EAAMQ,OAAOgrE,SAE5D,uBAAwB,CACtBjrE,gBAAiBP,EAAMQ,OAAOwpE,aAEhC,kBAAmB,CACjBtpE,MAAOV,EAAMQ,OAAOwpE,gBAK5BiH,QAAS,CACPxC,eAAgB,CACdyC,cAAe,CACb9T,aAAc,YACdrqD,YAAa1K,EAASrI,EAAMQ,OAAOqe,YAAc,GAAK7e,EAAMQ,OAAO2qE,WAIzEgG,UAAW,CACT1C,eAAgB,CACd5E,MAAO,CACLzpE,QAAS,gBACTG,gBAAiB8H,EAASrI,EAAMQ,OAAOse,WAAa9e,EAAMQ,OAAOupE,cAIvEqH,SAAU,CACR3C,eAAgB,CACd/0D,KAAM,CACJ,OAAQ,CACNjU,WAAY,UAEd,yCAA0C,CACxC0rB,YAAa,UAKrBkgD,aAAc,CACZ5C,eAAgB,CACd/0D,KAAM,CACJ3G,YAAa1K,EAAS,6BAA+BrI,EAAMQ,OAAO2qE,QAClE,sBAAuB,CACrBxqE,SAAUX,EAAMW,SAAS2E,GACzB5E,MAAOV,EAAMsxE,iBAKrBC,WAAY,CACV9C,eAAgB,CACd+C,QAAS,CACPzxE,WAAY,UACZO,aAAc,MACdF,QAAS,YACT8F,SAAU,QACVxF,MAAO,UACPC,SAAU,OACV4K,WAAY,OACZ5F,WAAY,IACZ,sBAAuB,CACrBjF,MAAO,cAKf+wE,cAAe,CACbhD,eAAgB,CACd/0D,KAAM,CAIJ,kCAAmC,CACjCpZ,aAAc,OAEhB,0BAA2B,CACzB,iBAAkB,CAChBC,gBAAiBP,EAAMQ,OAAOC,gBAGlC,sBAAuB,CACrBgY,SAAU,OACVlU,OAAQ,SAGZmtE,IAAK,CACHnxE,gBAAiBP,EAAMQ,OAAOwgB,eAIpC2wD,kBAAmB,CACjBlD,eAAgB,CACd/0D,KAAM,CACJpO,SAAU,WACV,iBAAkB,CAChBsH,UAAW,YAKnBg/D,WAAY,CACVnD,eAAgB,CACd/0D,KAAM,CACJ,wBAAyB,CACvBhZ,MAAO2H,EAASrI,EAAMwG,cAAgBxG,EAAM6e,YAC5C,eAAgB,CACdne,MAAOV,EAAM6e,cAGjB,sBAAuB,CACrBne,MAAO2H,EAASrI,EAAMQ,OAAOorE,WAAa,UAC1C,eAAgB,CACdlrE,MAAO2H,EAASrI,EAAMQ,OAAOmf,kBAAoB3f,EAAMQ,OAAOuf,kBAEhE,0BAA2B,CACzBrf,MAAO2H,EAASrI,EAAMQ,OAAOmf,kBAAoB,YAGrD,2BAA4B,CAC1B5M,YAAa1K,EAASrI,EAAMQ,OAAOorE,WAAa,cAKxDiG,eAAgB,CACdpD,eAAgB,CACd/0D,KAAM,CACJ,MAAO,CACL,UAAW,CACTgH,eAAe,mBAAD5b,OAAqB9E,EAAMwG,cAAa,eAExD,wBAAyB,CACvB9F,MAAOV,EAAMwG,gBAGjB,wBAAyB,CACvB9F,MAAOV,EAAM6e,gBAKrBizD,UAAW,CACTrD,eAAgB,CACd/0D,KAAM,CACJlU,MAAO,OACPlF,aAAc,UAIpByxE,QAAS,CACPtD,eAAgB,CACd/0D,KAAM,CACJ,kBAAmB,IACgB,SAA7B1Z,EAAMuf,cAAcC,KAAkB,CAAEjf,gBAAiBP,EAAMQ,OAAO6K,cAAiB,CAAC,GAE9F,iBAAkB,IACiB,SAA7BrL,EAAMuf,cAAcC,KAAkB,CAAEjf,gBAAiBP,EAAMQ,OAAOosE,aAAgB,CAAC,MAKnGoF,WAAY,CACVvD,eAAgB,CACd/0D,KAAM,CACJ,kBAAmB,CACjB,mBAAoB,CAClB3Z,WAAYC,EAAMQ,OAAOse,WACzBtX,OAAQ,oBACRlH,aAAc,MACd,kBAAmB,CACjBF,QAAS,GAEX,sBAAuB,CACrBL,WAAYC,EAAMQ,OAAOse,WACzB7J,WAAY,OACZo6D,cAAe,OACf3uE,MAAOV,EAAM6e,YACb,aAAc,CACZ9e,WAAYC,EAAMQ,OAAOorE,WACzBjsE,QAAS,GACTU,OAAQ,cACR,UAAW,CACTN,WAAYC,EAAMQ,OAAOorE,WACzBjsE,QAAS,IAEX,WAAY,CACVI,WAAYC,EAAMQ,OAAOorE,WACzBjsE,QAAS,KAGb,WAAY,CACVI,WAAY,WAEd,UAAW,CACTA,WAAY,iBAQ1BkyE,QAAS,CACPxD,eAAgB,CACd/0D,KAAM,CACJ,wBAAyB,CACvBtZ,QAAS,EACTL,WAAYC,EAAMQ,OAAOse,WACzBtX,OAAQ,oBACRlH,aAAc,MACdkF,MAAO,QACPD,SAAU,SACV,yCAA0C,CACxCxF,WAAYC,EAAMQ,OAAOse,WACzB7J,WAAY,OACZo6D,cAAe,OACfzpE,OAAQ,QACR,WAAY,CACV7F,WAAY,WAEd,UAAW,CACTA,WAAY,YAGhB,WAAY,CACVA,WAAYC,EAAMQ,OAAOke,WACzBlX,OAAO,cAAD1C,OAAgB9E,EAAMQ,OAAOse,YACnC,yCAA0C,CACxC/e,WAAYC,EAAMQ,OAAOke,WACzB,WAAY,CACV3e,WAAYC,EAAMQ,OAAOse,WACzB,qBAAsB,CACpBpe,MAAO,SAGX,4BAA6B,CAC3BA,MAAO,QAET,UAAW,CACTX,WAAYC,EAAMQ,OAAOse,WACzB,qBAAsB,CACpBpe,MAAO,YAMjB,8BAA+B,CAC7BN,QAAS,EACTL,WAAY,UACZyH,OAAQ,oBACRlH,aAAc,OACdkF,MAAO,QACPD,SAAU,SACV,yCAA0C,CACxCxF,WAAY,UACZkV,WAAY,OACZo6D,cAAe,OACf,kBAAmB,CACjB/uE,aAAc,iBAEhB,eAAgB,CACdA,aAAc,iBAEhB,WAAY,CACVP,WAAY,WAEd,UAAW,CACTA,WAAY,gBAOxBmyE,oBAAqB,CACnBzD,eAAgB,CACd/0D,KAAM,CACJsmD,UAAU,GAADl7D,OAAKopE,EAA0B,yBACxC,gCAAiC,CAC/BlO,UAAU,GAADl7D,OAAKwpE,EAA0B,kCAMpD,CCtsBO,SAAS6D,GAAanyE,GAC3B,MAAMqI,GAASC,EAAAA,GAAAA,IAAYtI,GAE3B,MAAO,CACLwf,KAAMxf,EAAMuf,cAAcC,KAC1B4yD,OAAQ,CACNC,MAAOryE,EAAMQ,OAAOirE,WAEtB34D,QAAS,CACPgN,MAAOzX,EAASrI,EAAMQ,OAAOssE,iBAAmB9sE,EAAMQ,OAAOspE,aAC7DxR,KAAMjwD,EAASrI,EAAMQ,OAAOusE,gBAAkB/sE,EAAMQ,OAAOuf,iBAC3DF,KAAMxX,EAASrI,EAAMQ,OAAOwsE,gBAAkBhtE,EAAMQ,OAAOwpE,YAC3D,IAAK3hE,EAASrI,EAAMQ,OAAOysE,eAAiBjtE,EAAMQ,OAAOupE,WACzD,IAAK1hE,EAASrI,EAAMQ,OAAO0sE,eAAiBltE,EAAMQ,OAAOypE,WACzD,IAAK5hE,EAASrI,EAAMQ,OAAO2sE,eAAiBntE,EAAMQ,OAAOypE,YAE3DvvD,UAAW,CACToF,MAAOzX,EAASrI,EAAMQ,OAAO4sE,mBAAqBptE,EAAMQ,OAAO0pE,eAC/D5R,KAAMjwD,EAASrI,EAAMQ,OAAOmf,kBAAoB3f,EAAMQ,OAAOC,cAC7Dof,KAAMxX,EAASrI,EAAMQ,OAAO4sE,mBAAqBptE,EAAMQ,OAAO4pE,cAC9D,IAAK/hE,EAASrI,EAAMQ,OAAO8sE,iBAAmBttE,EAAMQ,OAAO2pE,aAC3D,IAAK9hE,EAASrI,EAAMQ,OAAO+sE,iBAAmBvtE,EAAMQ,OAAO6pE,cAE7Dt6D,MAAO,CACL+P,MAAO9f,EAAMQ,OAAOiqE,WACpBnS,KAAMt4D,EAAMQ,OAAOkqE,WAErB4H,OAAQ,CACNxyD,MAAO9f,EAAMQ,OAAOmqE,YACpBrS,KAAMt4D,EAAMQ,OAAOoqE,WACnB/qD,KAAM7f,EAAMQ,OAAOqqE,YAErBtnD,QAAS,CACPzD,MAAO9f,EAAMQ,OAAOsqE,aACpBxS,KAAMt4D,EAAMQ,OAAOuqE,YACnBlrD,KAAM7f,EAAMQ,OAAOwqE,aAErB1nD,QAAS,CACPxD,MAAO9f,EAAMQ,OAAO8pE,aACpB,IAAKtqE,EAAMQ,OAAO+pE,WAClBjS,KAAMt4D,EAAMQ,OAAOgqE,YACnB3qD,KAAM7f,EAAMQ,OAAOgxB,aAErB+gD,KAAM,CACJ,GAAIvyE,EAAMQ,OAAOyqE,OACjB,IAAKjrE,EAAMQ,OAAO0qE,QAClB,IAAKlrE,EAAMyf,kBACX,IAAKzf,EAAMwyE,QACX,IAAKxyE,EAAMQ,OAAOsrE,gBAClB,IAAK9rE,EAAMmvE,UAEbtvD,KAAM,CACJC,MAAO9f,EAAMQ,OAAOsrE,gBACpBxT,KAAMt4D,EAAMQ,OAAOke,WACnBmB,KAAM7f,EAAMQ,OAAOmrE,WACnBlkE,OAAQzH,EAAMQ,OAAOse,WACrBla,OAAQ5E,EAAMQ,OAAOorE,YAEvB/4D,KAAM,CACJC,QAAS9S,EAAM6e,YACfnE,UAAW1a,EAAMwG,cACjBisE,SAAUzyE,EAAMsxE,aAChBzxD,KAAM7f,EAAMmvE,SACZrvD,MAAO9f,EAAM0yE,UACbjhD,OAAQzxB,EAAMQ,OAAOixB,OACrBkhD,cAAe3yE,EAAMQ,OAAO+iB,QAC5B7X,OAAQrD,EAASrI,EAAMQ,OAAOke,WAAa1e,EAAMQ,OAAOspE,aACxD,IAAKzhE,EAASrI,EAAMQ,OAAO2sE,eAAiBntE,EAAMQ,OAAOypE,WACzD2I,cAAe5yE,EAAMQ,OAAOusE,gBAC5B8F,gBAAiB7yE,EAAMQ,OAAOmf,kBAC9B,gBAAiB3f,EAAMQ,OAAOusE,gBAC9B,kBAAmB/sE,EAAMQ,OAAOmf,kBAChCguD,IAAK3tE,EAAMQ,OAAOmtE,IAClBrqD,QAAStjB,EAAMQ,OAAO,iBAExBT,WAAY,CACV8pE,MAAO7pE,EAAM6pE,MACbxmD,QAASrjB,EAAM8yE,kBACfpnE,OAAQrD,EAASrI,EAAMQ,OAAOke,WAAa1e,EAAMQ,OAAOspE,aACxD1+D,OAAQ/C,EAASrI,EAAMQ,OAAOmrE,WAAa3rE,EAAMQ,OAAOisE,YACxDhlE,OAAQY,EAASrI,EAAMQ,OAAOse,WAAa9e,EAAMQ,OAAOqpE,MACxDjlE,OAAQyD,EAASrI,EAAMQ,OAAOorE,WAAa5rE,EAAMQ,OAAOksE,YACxDqG,OAAQ1qE,EAASrI,EAAMQ,OAAOqrE,WAAa7rE,EAAMQ,OAAOmsE,aAE1DnlE,OAAQ,CACNkL,OAAQrK,EAAS,oBAAmB,aAAAvD,OAAgB9E,EAAMQ,OAAOqsE,yBACjEl6D,QAAS,oBACTqgE,QAAS3qE,EAAS,oBAAmB,aAAAvD,OAAgB9E,EAAMQ,OAAOqsE,0BAEpEoG,OAAQ,CACNC,eAAgB7qE,EAAS,CAAEkhE,QAAS,WAAc,CAAEA,QAAS,gBAE/DtmE,QAAS,CACPlD,WAAYsI,EAASrI,EAAMQ,OAAOse,WAAa9e,EAAMQ,OAAOqpE,OAGlE,CClGO,SAASsJ,GAAgBnzE,GAC9B,MAAO,CACLozE,WAAYpzE,EAAMuf,cAAc6zD,WAChCC,GAAI,CACF1tE,WAAY,IACZjF,MAAOV,EAAMwG,cACb7F,SAAU,WAEZ2yE,GAAI,CACF3yE,SAAU,WACVD,MAAOV,EAAMwG,cACbb,WAAY,KAEd4tE,GAAI,CACF5yE,SAAU,OACVD,MAAOV,EAAMwG,cACbb,WAAY,KAEd6tE,GAAI,CACF7yE,SAAU,UACVD,MAAOV,EAAMwG,cACbb,WAAY,KAEd8tE,GAAI,CACF9yE,SAAU,SACVD,MAAOV,EAAMwG,cACbb,WAAY,KAEd+tE,GAAI,CACF/yE,SAAU,WACVD,MAAOV,EAAMwG,cACbb,WAAY,KAEdguE,UAAW,CACThzE,SAAU,WACVgF,WAAY,IACZjF,MAAoC,SAA7BV,EAAMuf,cAAcC,KAAkBxf,EAAMwyE,QAAUxyE,EAAMmvE,UAErEyE,UAAW,CACTjzE,SAAU,UACVgF,WAAY,IACZjF,MAAOV,EAAMwG,eAEfqtE,QAAS,CACPlzE,SAAU,UACVD,MAAOV,EAAMwG,cACbb,WAAY,KAEdmuE,MAAO,CACLnzE,SAAU,WACVgF,WAAY,IACZ4F,WAAY,UACZ7K,MAAOV,EAAMwG,eAEfutE,MAAO,CACLjjD,cAAe,MACfnrB,WAAY,IACZ4F,WAAY,QACZ7K,MAAOV,EAAMwG,cACb7F,SAAU,QAEZqzE,YAAa,CACXniE,UAAW,EACXsP,aAAc,EACd,YAAa,CACXlU,IAAK,OACLC,KAAM,EACNxM,MAAOV,EAAMqrE,QACb,yBAA0B,CACxBp+D,IAAK,QAGT,kBAAmB,CACjB7M,QAAS,iCAEX,WAAY,CACVa,QAAS,QAEX,aAAc,CACZgM,IAAK,IAGTgnE,YAAa,CACXtzE,SAAU,WACVD,MAAOV,EAAMwyE,QACbpyE,QAAS,mBACTuuE,cAAe,aACfhpE,WAAY,OAEduuE,eAAgB,CACdvzE,SAAU,YACVgF,WAAY,IACZjF,MAAOV,EAAMwG,cACbmoE,cAAe,cAEjBwF,aAAc,CACZ9zE,OAAQ,UACRC,aAAc,OAEhB8zE,YAAa,CACX5uE,MAAO,OACPjB,OAAQ,OACR5D,SAAU,QAEZ0zE,aAAc,CACZ7uE,MAAO,OACPjB,OAAQ,OACR5D,SAAU,UAEZ2zE,YAAa,CACX9uE,MAAO,OACPjB,OAAQ,OACR5D,SAAU,UAGhB,CC3GA,MAAMA,GAAW,CACf2E,GAAI,UACJivE,GAAI,WACJxW,GAAI,OACJ1F,GAAI,WAGAmc,GAAS,GAMR,SAASx0E,GAAMuf,GACpB,MAAMhZ,EAA2B,CAC/B/F,OAAM,GACNG,YACA6xE,QAAS,GACT3I,MAAO,GACPiJ,kBAAmB,GACnB/yE,WAAY,GACZ8e,YAAa,GACbY,kBAAmB,GACnB0vD,SAAU,GACVuD,UAAW,GACX/C,aAAc,GACd1B,iBAAkB,GAClBuC,QAAS,GACTjxD,gBACAwuD,gBAAgB,6BAADjpE,OAA+BtE,GAAOgtE,qBAAoB,aAAA1oE,OAAYtE,GAAOitE,mBAAkB,YAC9GntE,aAAc,IAGhB,GACO,SADCif,EAAcC,KAElBjZ,EAAYsjE,MAAQrpE,GAAOmrE,WAC3BplE,EAAYusE,kBAAoBtyE,GAAOirE,UACvCllE,EAAYxG,WAAaS,GAAOkrE,eAChCnlE,EAAYsY,YAAcre,GAAOsrE,gBACjCvlE,EAAYC,cAAgBhG,GAAOif,kBACnClZ,EAAY+qE,aAAe9wE,GAAOurE,iBAClCxlE,EAAY4oE,SAAW3uE,GAAOsrE,gBAC9BvlE,EAAYmsE,UAAYlyE,GAAO4rE,iBAC/B7lE,EAAYmpE,eAAiBlvE,GAAOke,WACpCnY,EAAYopE,aAAenvE,GAAOmf,kBAClCpZ,EAAY0nE,iBAAmBztE,GAAOmf,kBAAoB,GAC1DpZ,EAAYopE,aAAenvE,GAAOqpE,MAClCtjE,EAAYiqE,QAAUhwE,GAAOsrE,gBAC7BvlE,EAAYisE,QAAUhyE,GAAOif,uBAI7BlZ,EAAYsjE,MAAQrpE,GAAOqpE,MAC3BtjE,EAAYusE,kBAAoBtyE,GAAOqpE,MACvCtjE,EAAYxG,WAAaS,GAAOspE,aAChCvjE,EAAYsY,YAAcre,GAAO4rE,iBACjC7lE,EAAYC,cAAgBhG,GAAO6rE,mBACnC9lE,EAAY+qE,aAAe9wE,GAAO8rE,kBAClC/lE,EAAY4oE,SAAW3uE,GAAOgrE,QAC9BjlE,EAAYmpE,eAAiBlvE,GAAOqpE,MACpCtjE,EAAYopE,aAAenvE,GAAO4rE,iBAClC7lE,EAAY0nE,iBAAmBztE,GAAO0pE,eACtC3jE,EAAYopE,aAAenvE,GAAOqpE,MAClCtjE,EAAYiqE,QAAUhwE,GAAO2qE,QAC7B5kE,EAAYisE,QAAUhyE,GAAOgrE,QAIjC,OAAO1N,EAAAA,EAAAA,GAAY,CACjBtzC,UAAWjL,EAAck1D,UAAY,MAAQ,MAC7C9vE,QAASwtE,GAAa5rE,GACtBmuE,OAAQ,CACNC,iBAAkB,CAChBpvE,SAAU,SACVG,aAAc,WACdD,WAAY,UAEdmvE,kBAAmB,CACjBrvE,SAAU,SACVG,aAAc,WACdzE,QAAS,cACT,qBAAsB,WACtB,qBAAsB,IAG1B4zE,WAAY1B,GAAgB5sE,GAC5B+vD,WAAYuX,GAAwBtnE,GACpCA,cACA/F,OAAM,GACNG,YACA4e,gBACAu1D,OAAQN,IAEZ,CCjGe,SAASO,KACtB,OACEr1E,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACzB,GAAI,CAAEqF,MAAO,OAAQjB,OAAQ,uBAAwB9E,UACxDC,EAAAA,EAAAA,KAACqF,EAAAA,GAAI,CAACC,WAAS,EAACN,WAAW,SAASqB,eAAe,SAAS5F,GAAI,CAAEqF,MAAO,OAAQjB,OAAQ,QAAS9E,UAChGH,EAAAA,EAAAA,MAACyF,EAAAA,GAAI,CAACM,MAAI,EAAA5F,SAAA,EACRC,EAAAA,EAAAA,KAACo3D,EAAU,KACXp3D,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACQ,MAAM,eAAeuF,MAAM,SAAS9F,GAAI,CAAE0R,UAAW,QAASpS,UACxEC,EAAAA,EAAAA,KAAAmB,EAAAA,GAAA,CAAA9F,GAAA,mBAMZ,C,gBCde,SAASi6E,GAASniD,GAC/B,OAAQxzB,IACNK,EAAAA,EAAAA,KAACu1E,EAAAA,SAAQ,CAACnV,UAAUpgE,EAAAA,EAAAA,KAACw1E,GAAM,IAAIz1E,UAC7BC,EAAAA,EAAAA,KAACmzB,EAAS,IAAKxzB,KAGrB,CCNA,MAAM81E,GAASH,IAASI,EAAAA,EAAAA,OAAK,IAAM,gFAE7BC,GAAQL,IAASI,EAAAA,EAAAA,OAAK,IAAM,gFAC5BE,GAAON,IAASI,EAAAA,EAAAA,OAAK,IAAM,gFAC3BG,GAAaP,IAASI,EAAAA,EAAAA,OAAK,IAAM,4DAEjCI,GAAUR,IAASI,EAAAA,EAAAA,OAAK,IAAM,0FAC9BK,GAAiBT,IAASI,EAAAA,EAAAA,OAAK,IAAM,0FACrCM,GAAqBV,IAASI,EAAAA,EAAAA,OAAK,IAAM,2DAEzCO,GAAOX,IAASI,EAAAA,EAAAA,OAAK,IAAM,uHAC3BQ,GAAUZ,IAASI,EAAAA,EAAAA,OAAK,IAAM,kIAC9BS,GAAYb,IAASI,EAAAA,EAAAA,OAAK,IAAM,wHAChCU,GAAed,IAASI,EAAAA,EAAAA,OAAK,IAAM,kIACnCW,GAAoBf,IAASI,EAAAA,EAAAA,OAAK,IAAM,kIACxCY,GAAoBhB,IAASI,EAAAA,EAAAA,OAAK,IAAM,wHACxCa,GAAcjB,IAASI,EAAAA,EAAAA,OAAK,IAAM,mCAClCc,GAA2BlB,IAASI,EAAAA,EAAAA,OAAK,IAAM,mCAC/Ce,GAAoBnB,IAASI,EAAAA,EAAAA,OAAK,IAAM,iCACxCgB,GAAapB,IAASI,EAAAA,EAAAA,OAAK,IAAM,mCACjCjtC,GAAW6sC,IAASI,EAAAA,EAAAA,OAAK,IAAM,wHAE/BiB,GAAUrB,IAASI,EAAAA,EAAAA,OAAK,IAAM,8GAC9BkB,GAAgBtB,IAASI,EAAAA,EAAAA,OAAK,IAAM,8GACpCmB,GAAUvB,IAASI,EAAAA,EAAAA,OAAK,IAAM,mCAC9BoB,GAAUxB,IAASI,EAAAA,EAAAA,OAAK,IAAM,mCAC9BqB,GAAczB,IAASI,EAAAA,EAAAA,OAAK,IAAM,kCAElCsB,GAAkB1B,IAASI,EAAAA,EAAAA,OAAK,IAAM,qEACtCuB,GAAoB3B,IAASI,EAAAA,EAAAA,OAAK,IAAM,4DACxCwB,GAAqB5B,IAASI,EAAAA,EAAAA,OAAK,IAAM,0FAGzCyB,GAAmB7B,IAASI,EAAAA,EAAAA,OAAK,IAAM,6GACvC0B,GAAuB9B,IAASI,EAAAA,EAAAA,OAAK,IAAM,mCAE3C2B,GAAS/B,IAASI,EAAAA,EAAAA,OAAK,IAAM,kCAC7B4B,GAAgBhC,IAASI,EAAAA,EAAAA,OAAK,IAAM,sEACpC6B,GAAiBjC,IAASI,EAAAA,EAAAA,OAAK,IAAM,sEACrC8B,GAAuBlC,IAASI,EAAAA,EAAAA,OAAK,IAAM,gFAC3C+B,GAAoBnC,IAASI,EAAAA,EAAAA,OAAK,IAAM,mCAExCgC,GAAkBpC,IAASI,EAAAA,EAAAA,OAAK,IAAM,mCACtCiC,GAAyBrC,IAASI,EAAAA,EAAAA,OAAK,IAAM,kCAC7CkC,GAAmBtC,IAASI,EAAAA,EAAAA,OAAK,IAAM,0DAEvCmC,GAAcvC,IAASI,EAAAA,EAAAA,OAAK,IAAM,sHAClCoC,GAAsBxC,IAASI,EAAAA,EAAAA,OAAK,IAAM,wHAC1CqC,GAAOzC,IAASI,EAAAA,EAAAA,OAAK,IAAM,4DAE3BsC,GAAc1C,IAASI,EAAAA,EAAAA,OAAK,IAAM,mCAClCuC,GAAY3C,IAASI,EAAAA,EAAAA,OAAK,IAAM,mCAOzBwC,GAAsE,CACjF,UAAWzC,GAEX,wCAAyCmB,GACzC,mCAAoCM,GAEpC,SAAUpB,GACV,qBAAsBC,GACtB,gBAAiBC,GACjB,QAASL,GACT,oBAAqBC,GACrB,eAAgBC,GAEhB,QAASI,GACT,aAAcE,GACd,yDAA0DC,GAC1D,wCAAyCE,GACzC,wCAAyCD,GACzC,wCAAyC5tC,GAEzC,iBAAkB8tC,GAClB,mCAAoCC,GACpC,uBAAwBC,GACxB,oBAAqBC,GACrB,YAAaR,GAEb,qBAAsB2B,GACtB,2CAA4CC,GAC5C,gBAAiBC,GAGjB,+BAAgCZ,GAChC,6CAA8CR,GAC9C,2BAA4BS,GAE5B,UAAWC,GACX,sBAAuBC,GACvB,yBAA0BG,GAE1B,2CAA4CF,GAC5C,8BAA+BC,GAE/B,eAAgBE,GAChB,gCAAiCC,GACjC,sBAAuBC,GAEvB,WAAYd,GACZ,gBAAiBC,GACjB,+BAAgCE,GAChC,oBAAqBJ,GACrB,6BAA8BG,GAE9B,eA1DiB1B,IAASI,EAAAA,EAAAA,OAAK,IAAM,+EA2DrC,cA1DeJ,IAASI,EAAAA,EAAAA,OAAK,IAAM,mCA2DnC,0CA1DgBJ,IAASI,EAAAA,EAAAA,OAAK,IAAM,mEA2DpC,gBAAiBsC,GACjB,uBAAwBC,GAExB,aA5De3C,IAASI,EAAAA,EAAAA,OAAK,IAAM,uECrD/ByC,GAA6B,GAEpB,SAASC,KACtB,MAAM35D,GAAWC,EAAAA,EAAAA,MAEX25D,EAAU78E,OAAOD,KAAK28E,IAE5B,OACEl4E,EAAAA,EAAAA,KAAC8yC,EAAAA,GAAK,CAACh0B,KAAMu5D,EAAQt4E,UACnBC,EAAAA,EAAAA,KAAC2/D,GAAM,CAAA5/D,UACLH,EAAAA,EAAAA,MAACihB,EAAAA,GAAM,CAACpC,SAAUA,EAAS1e,SAAA,CACxBs4E,EAAQ59E,KAAKugE,IACZ,MAAMvqD,EAAY0nE,GAAiB5zE,SAASy2D,GAAY/kD,GAAAA,EAAciiE,GAAald,GAGnF,OAAOh7D,EAAAA,EAAAA,KAAC8yC,EAAAA,GAAK,CAAgBwlC,OAAK,EAACx5D,KAAMk8C,EAAUvqD,UAAWA,GAA3CuqD,EAAwD,KAG7Eh7D,EAAAA,EAAAA,KAAC8yC,EAAAA,GAAK,CAACh0B,KAAK,IAAIrO,UAAW4kE,OARI52D,EAASM,aAalD,CC1Be,SAASo9C,KACtB,OACEv8D,EAAAA,EAAAA,MAACihB,EAAAA,GAAM,CAAA9gB,SAAA,EACLC,EAAAA,EAAAA,KAAC8yC,EAAAA,GAAK,CAACwlC,OAAK,EAACx5D,KAAK,IAAG/e,UACnBC,EAAAA,EAAAA,KAACu4E,EAAAA,GAAQ,CAACxhE,GAAG,aAEf/W,EAAAA,EAAAA,KAACw4E,GAAU,MAGjB,CCuBe,SAASC,KACtB,MAAO/sB,EAAiBE,IAAsB7iD,EAAAA,EAAAA,UAAoC,CAAC,GAC7E8W,GAAgBnF,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMkF,iBAEtD64D,EAAAA,EAAAA,OACAC,EAAAA,EAAAA,OACAC,EAAAA,GAAAA,OACAC,EAAAA,EAAAA,MAEA,MAAM,YAAEv/D,IAAgBw/D,EAAAA,EAAAA,OAEjBC,IAAuB1/D,EAAAA,EAAAA,OAEtB9V,QAASy1E,IAA6BC,EAAAA,EAAAA,OACtC11E,QAAS21E,EAAwB,SAAEC,G7B7BtC,SAAgCv9E,GAA6D,IAA5D,yBAAEo9E,GAAuDp9E,EAC/F,MAAOw9E,EAAeC,IAAoBtwE,EAAAA,EAAAA,WAAS,IAC5CuwE,EAASC,IAAcxwE,EAAAA,EAAAA,WAAS,IAEhCowE,EAAUK,IAAezwE,EAAAA,EAAAA,eAAqC/E,GAE/D4K,GAAsBC,EAAAA,GAAAA,MAEtBvF,GAAkBC,EAAAA,EAAAA,OAEjB,CAAEwkC,IAAwBC,EAAAA,GAAAA,OAEjC3pC,EAAAA,EAAAA,YAAU,KACJy1B,GAAAA,KAAYQ,GAAAA,GAAQxsB,GACtBhT,QAAQoqC,IAAI,EACVu0C,EAAAA,GAAAA,OACAvzC,EAAAA,GAAAA,MAAmBsgB,OAAM,KAAe,IACxCob,KAAoBpb,OAAM,KAAe,MACxCxrD,MAAKiN,IAAoD,IAADyxE,EAAAC,EAAA,IAAjDC,EAAcC,EAAeC,GAAe7xE,EACpD,MAAM8xE,EAAwE,GAEjE,OAAbF,QAAa,IAAbA,GAAAA,EAAe/vE,SAASs7B,IACtB20C,EAAkB3vE,KAAK,CACrBvN,WAAYuoC,EAAK40C,aAAah+E,QAC9BE,SAAUkpC,EAAK40C,aAAa99E,WAG9B69E,EAAkB3vE,KAAK,CACrBvN,WAAYuoC,EAAK60C,YAAYj+E,QAC7BE,SAAUkpC,EAAK60C,YAAY/9E,UAC3B,IAGU,OAAd49E,QAAc,IAAdA,GAAAA,EAAgBhwE,SAAS/C,IACvBgzE,EAAkB3vE,KAAK,CACrBvN,WAAYkK,EAAMmzE,SAClBh+E,SAAU6K,EAAMu4C,eAChB,IAGQ,OAAZs6B,QAAY,IAAZA,GAAAA,EAAc9vE,SAASs7B,IACrB20C,EAAkB3vE,KAAK,CACrBvN,WAAYuoC,EAAK7oC,OAAOP,QACxBE,SAAUkpC,EAAK7oC,OAAOL,WAGxB69E,EAAkB3vE,KAAK,CACrBvN,WAAYuoC,EAAK5oC,OAAOR,QACxBE,SAAUkpC,EAAK5oC,OAAON,WAGxBs9E,EAAYI,GAEZ7rC,EAAqB,CAAErxC,IAAK0oC,EAAK1oC,IAAKrB,GAAI+pC,EAAKvoC,WAAWuH,YAAa,KAGzEiL,EAAAA,GAAAA,IAAe0qE,GACfnrE,EAAoBmrE,IAEpBI,EAAAA,GAAAA,IACE,IACqG,QAAnGT,EAAgB,OAAZE,QAAY,IAAZA,OAAY,EAAZA,EAAcn/E,KAAK0hB,GAAQ,CAACA,EAAItf,WAAWuH,WAAY+X,EAAI5f,OAAOP,QAASmgB,EAAI3f,OAAOR,kBAAS,IAAA09E,EAAAA,EAAI,MAKrG,QAJFC,EAAiB,OAAbE,QAAa,IAAbA,OAAa,EAAbA,EAAep/E,KAAK0hB,GAAQ,CAC9BA,EAAItf,WAAWuH,WACf+X,EAAI89D,YAAYj+E,QAChBmgB,EAAI69D,aAAah+E,kBACjB,IAAA29E,EAAAA,EAAI,IACNzpD,QAAO,CAAC+b,EAAMC,IACPD,EAAK7mC,OAAO8mC,IAClB,KAGLqtC,GAAW,EAAK,IAGlBA,GAAW,EACb,GACC,KAEHl1E,EAAAA,EAAAA,YAAU,KACR,GAAIiF,GAAmBA,EAAgB6B,OAAS,EAAG,CACjD,MAAM4uE,EAAoBzwE,EAAgB7O,KAAKgN,IACtC,CACL5K,WAAY4K,EAAM5K,WAClBX,SAAUuL,EAAMvL,aAIpB0S,EAAoBmrE,GAEpBV,GAAiB,IAEjBc,EAAAA,GAAAA,IAAgB7wE,EAAgB7O,KAAK0hB,GAAQA,EAAItf,aACnD,MAAYm8E,GACVK,GAAiB,EACnB,GACC,CAAC/vE,EAAiB0vE,KAErB30E,EAAAA,EAAAA,YAAU,KACJy1B,GAAAA,KAAYQ,GAAAA,GAAQxsB,KACtBg0D,GAAOh4D,SAASrC,IACdmH,EAAoB,CAClB,CACE/R,WAAY4K,EAAMzL,QAClBE,SAAUuL,EAAMvL,WAElB,KAGJi+E,EAAAA,GAAAA,IAAgBrY,GAAOrnE,KAAK0hB,GAAQA,EAAIngB,aAG1CqT,EAAAA,GAAAA,IAAe,CACb,CAAExS,WAAYmlC,GAAAA,GAAYhmC,QAASE,SAAU8lC,GAAAA,GAAY9lC,UACzD,CAAEW,WAAYqK,GAAAA,GAAIlL,QAASE,SAAUgL,GAAAA,GAAIhL,WACzC,GACD,IAGH,MAAMk+E,GAAiBC,EAAAA,GAAAA,MAYvB,OAXAh2E,EAAAA,EAAAA,YAAU,KACR,GAAI+1E,EAAgB,CAClB,MAAME,EAAe9+E,OAAOD,KAAK6+E,GAAgB3/E,KAAKiC,IAAG,CACvDG,WAAYH,EACZR,SAAUk+E,EAAe19E,QAG3B2S,EAAAA,GAAAA,IAAeirE,EACjB,IACC,CAACF,KAEGj3E,EAAAA,EAAAA,UAAQ,KACN,CACLI,QAASy1E,GAA4BI,IAAkBE,EACvDH,cAED,CAACC,EAAeJ,EAA0BM,EAASH,GACxD,C6B5G0DoB,CAAwB,CAAEvB,8BAElF3vE,EAAAA,EAAAA,KAEA,MAAMmxE,EAAc,IAAIC,GAAAA,EAElBC,GAAwB9yE,EAAAA,EAAAA,cAC3BlL,IAAiB,IAADi+E,EACf/uB,EAAmB,IAAKF,EAAiB,CAAChvD,IAA2B,QAArBi+E,EAACjvB,EAAgBhvD,UAAI,IAAAi+E,EAAAA,EAAI,GAAK,GAAI,GAEpF,CAACjvB,EAAiBE,IAGpB,OACE5rD,EAAAA,EAAAA,KAAC6nE,GAAa,CAAA9nE,UACZC,EAAAA,EAAAA,KAAC46E,GAAAA,EAAa,CAACC,OAAQtT,GAAYxnE,UACjCC,EAAAA,EAAAA,KAAC86E,GAAAA,GAAmB,CAAC9nB,OAAQwnB,EAAYz6E,UACvCC,EAAAA,EAAAA,KAAC+6E,EAAAA,EAAoB,CAACC,aAAW,EAAAj7E,UAC/BH,EAAAA,EAAAA,MAACwzD,GAAY,CAAArzD,SAAA,EACXC,EAAAA,EAAAA,KAAC8yC,EAAAA,GAAK,CAACriC,UAAW2lD,KAClBp2D,EAAAA,EAAAA,KAACi7E,GAAmB,KACpBj7E,EAAAA,EAAAA,KAACk7E,EAAAA,EAAa,CAAC56E,MAAOA,GAAMuf,GAAe9f,UACzCC,EAAAA,EAAAA,KAAC80B,EAAAA,EAAgB,CAACjH,SAAU,IAAI9tB,UAC9BC,EAAAA,EAAAA,KAACsrD,GAAAA,GAAcj0B,SAAQ,CACrB9sB,MAAO,CAAE4uE,WAAUztB,kBAAiBE,mBAAoB8uB,GAAwB36E,UAEhFH,EAAAA,EAAAA,MAACu7E,GAAY,CAAAp7E,SAAA,EACXC,EAAAA,EAAAA,KAACo7E,EAAAA,GAAW,KACZx7E,EAAAA,EAAAA,MAACy7E,GAAgB,CAAAt7E,SAAA,CACdm5E,GACCl5E,EAAAA,EAAAA,KAACw1E,GAAM,KAEPx1E,EAAAA,EAAAA,KAACkgE,GAAa,CAAAngE,UACZC,EAAAA,EAAAA,KAACm8D,GAAM,OAGXn8D,EAAAA,EAAAA,KAACm0B,GAAQ,KACTn0B,EAAAA,EAAAA,KAACma,EAAAA,GAAiB,KAClBna,EAAAA,EAAAA,KAAC8jE,GAAW,IACXxqD,GAActZ,EAAAA,EAAAA,KAAC+2D,EAAa,IAAM,KAClCgiB,GAAsB/4E,EAAAA,EAAAA,KAAC2gE,GAAe,IAAM,2BAYrE,C/EvFsC,kBAAzB5hC,EAAAA,IACTs3B,EAAAA,GAAAA,WAAmBt3B,EAAAA,IAEnBs3B,EAAAA,GAAAA,IAAY,CACVilB,aAAa,EACbC,kBAAoBvS,EAAAA,GAAuB,SAAUp+C,OAAS,aAAe,gBAA9C,aAGjCyrC,EAAAA,GAAAA,WAAmB,OAAQ,CAAEmlB,UAAU,EAAMC,OAAO,I,yBgFhBxD,SAASC,GAAYC,GACnB,MAAMC,EAA4BD,EAAqBE,cACvD,OAAOp8C,GAAAA,GAAkBz1B,MACtB8xE,GACCA,EAAOD,gBAAkBD,GAA6BE,EAAOrwD,MAAM,KAAK,KAAOmwD,GAErF,CA2BO,SAASG,KAAmB,IAADngF,EAAAogF,EAChC,OAA8E,QAA9EpgF,EAAyD,QAAzDogF,GAAOthE,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM+yC,OAAOuuB,oBAAW,IAAAD,EAAAA,EA1BpD,WACL,IAAKE,UAAUC,SAAU,OAEzB,MAAOA,EAAUC,GAAUF,UAAUC,SAAS1wD,MAAM,KAEvC,IAAD4wD,EAAZ,OAAID,GACuD,QAAzDC,EAAOX,GAAY,GAADt2E,OAAI+2E,EAAQ,KAAA/2E,OAAIg3E,EAAOn5D,uBAAgB,IAAAo5D,EAAAA,EAGpDX,GAAYS,EACrB,CAgB+DG,UAAiB,IAAA1gF,EAAAA,EAAI8jC,GAAAA,EACpF,C,QCzBO,SAAS68C,GAAgB3gF,GAAyC,IAAxC,SAAEmE,GAAmCnE,EAEpE,MAAMkgF,EAASC,MACRS,EAAQC,IAAa1zE,EAAAA,EAAAA,WAAS,GAarC,OAXA1E,EAAAA,EAAAA,YAAU,MAbZ6K,eAA+B4sE,GAC7B,MAAM,SAAEY,SAAmB,QAAO,KAADt3E,OAAc02E,EAAM,QAErDvwE,EAAAA,GAAKoxE,eAAeb,EAAQ,CAAEc,QAASA,IAAMA,QAAQd,KACrDvwE,EAAAA,GAAKsxE,KAAKf,EAAQY,GAClBnxE,EAAAA,GAAK09D,SAAS6S,EAChB,EAQIgB,CAAgBhB,GACb9gF,MAAK,KACJyhF,GAAU,EAAK,IAEhBj2B,OAAOn2C,IACNspB,QAAQtpB,MAAM,4BAA6ByrE,EAAQzrE,EAAM,GACzD,GACH,CAACyrE,IAGCU,GAEEx8E,EAAAA,EAAAA,KAAC+8E,EAAAA,GAAY,CAACxxE,KAAMA,EAAAA,GAAKxL,SAAEA,IAFd,IAGtB,C,gBC3BO,SAASi9E,KAEd,OAAOpoE,QAAQgtB,CAAAA,SAAAA,aAAAA,WAAAA,GAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,cAAAA,EAAAA,0BAAAA,2CAAAA,cAAAA,aAAAA,qBAAAA,KAAAA,mBAAAA,wFAAAA,yBAAAA,OAAAA,qBAAAA,gGAAYq7C,kBAC7B,C,mBC+BA9c,GAAAA,EAAY,CACV+c,IAAKt7C,+FACLu7C,YDfIH,KAAuB,UAfsBA,KAkB1C,cAFuB,aCe9BI,SDpBOx7C,ECqBPy7C,iBAAkB9kD,OAAsD,QAAhD+kD,GAAC17C,CAAAA,SAAAA,aAAAA,WAAAA,GAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,qBAAAA,EAAAA,cAAAA,EAAAA,0BAAAA,2CAAAA,cAAAA,aAAAA,qBAAAA,KAAAA,mBAAAA,wFAAAA,yBAAAA,OAAAA,qBAAAA,gGAAY27C,2CAAmC,IAAAD,GAAAA,GAAI,GAC5EE,WAbgEz2E,GA7B3D,SAA2BsJ,GAAoB,IAADotE,EAAAC,EAAAC,EAAAC,EAEnD,QAAiB,QAAjBH,EAAIptE,EAAMkG,eAAO,IAAAknE,IAAbA,EAAel5E,SAAS,uCAGX,QAAjBm5E,EAAIrtE,EAAMkG,eAAO,IAAAmnE,IAAbA,EAAen5E,SAAS,sDAExB,UAAW8L,IAAgC,kBAAhBA,EAAMwtE,QAG/BxtE,EAAMwtE,MAAM1nB,MAAM,wBAIP,QAAjBwnB,EAAIttE,EAAMkG,eAAO,IAAAonE,IAAbA,EAAexnB,MAAM,uBAGR,QAAjBynB,EAAIvtE,EAAMkG,eAAO,IAAAqnE,IAAbA,EAAeznB,MAAM,iBAGrB9lD,aAAiBytE,cAAgC,gBAAX,OAALztE,QAAK,IAALA,OAAK,EAALA,EAAOzL,KAG9C,CAOMm5E,CAAkBh3E,GACb,KAGFA,EASPi3E,aAAc,CACZ,IAAIC,GAAAA,GAAe,CACjBC,kCAAkC,EAClCC,4BAA4B,OCvClCvzD,OAAOwzD,QAAU,CAACpnE,EAAKqnE,EAAKC,EAAKrrD,EAAK5iB,KACpC,MAAMkuE,EAASluE,EAAQA,EAAMjM,WAAa,GAC1Cu1B,QAAQtpB,MAAM2G,EAAKqnE,EAAKC,EAAKrrD,EAAK5iB,EAAO,yBAErC,+BAA+B0vD,KAAKwe,IAAW,uBAAuBxe,KAAKwe,KAC7E3zD,OAAOnM,SAASknB,QAClB,EAKF/a,OAAOgX,QAAU,CAAC,EAElB,MAAM5nB,GAAO0Q,SAAS8zD,eAAe,SAErCC,EAAAA,EAAAA,GAAWzkE,IAAMqN,QAEfrnB,EAAAA,EAAAA,KAACq3B,EAAAA,GAAQ,CAACwpB,MAAOA,EAAAA,EAAM9gD,UACrBC,EAAAA,EAAAA,KAAC0+E,EAAAA,EAAW,CAACn7E,QAAS,KAAMo7E,UAAWA,EAAAA,EAAU5+E,UAC/CC,EAAAA,EAAAA,KAAC4+E,EAAAA,GAAa,CAAA7+E,UACZC,EAAAA,EAAAA,KAACu8E,GAAgB,CAAAx8E,UACfC,EAAAA,EAAAA,KAACy4E,GAAG,arFmGR,kBAAmByD,WACrBA,UAAU2C,cAAcC,MACrB9jF,MAAM+jF,IACLA,EAAaC,YAAY,IAE1Bx4B,OAAOn2C,IACNspB,QAAQtpB,MAAMA,EAAMkG,QAAQ,G,+DsFpI7B,MAAM0oE,EAAuB,CAClCC,4BAA2B3zE,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAC7B8jF,cAAa5zE,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACf+jF,qBAAoB7zE,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACtBgkF,sBAAqB9zE,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACvBikF,qBAAoB/zE,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACtBkkF,WAAUh0E,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACZmkF,kBAAiBj0E,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACnBokF,kBAAiBl0E,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACnBqkF,oBAAmBn0E,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACrBskF,iBAAgBp0E,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAClBukF,aAAYr0E,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACdwkF,qBAAoBt0E,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACtBykF,yBAAwBv0E,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAC1B0kF,iBAAgBx0E,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAClBomD,oBAAmBl2C,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACrB2kF,mBAAkBz0E,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,YAGT4kF,EAAsB,CACjC,wBAAuB10E,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACzB,iBAAgBkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAClB,cAAakQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACf,mDAAkDkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACpD,2DAA0DkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAC5D,4CAA2CkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAC7C,oBAAmBkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,YAGV6kF,EAAoB,CAC/BC,iBAAgB50E,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAClB+kF,2BAA0B70E,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAC5BglF,gBAAe90E,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACjBilF,mBAAkB/0E,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACpBklF,oBAAmBh1E,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACrB,2BAA0BkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAC5B,sBAAqBkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACvBmlF,kBAAiBj1E,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACnB,qBAAoBkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACtB,mCAAkCkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACpC,oDAAmDkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACrD,sBAAqBkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACvB,uBAAsBkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACxB,wBAAuBkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACzB,gBAAekQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACjB,gBAAekQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACjBolF,mBAAkBl1E,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACpB,kBAAiBkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACnB,iBAAgBkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAClB,gBAAekQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACjB,6BAA4BkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAC9B,8CAA6CkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAC/C,kBAAiBkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACnB,cAAakQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACf,mBAAkBkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACpB,uBAAsBkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACxB,sBAAqBkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACvB,6BAA4BkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAC9B,gCAA+BkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACjC,0BAAyBkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAC3B,gCAA+BkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACjC,sBAAqBkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACvB,sBAAqBkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACvB,qCAAoCkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACtC,uBAAsBkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,YAGbqlF,EAAwB,CACnC,+BAA8Bn1E,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAChC,8CAA6CkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAC/C,gCAA+BkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACjC,mDAAkDkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACpD,qCAAoCkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACtC,qDAAoDkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACtD,2DAA0DkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAC5D,yEAAwEkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAC1E,8DAA6DkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAC/D,gCAA+BkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACjC,8FAA6FkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAC/F,mDAAkDkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACpD,8FAA6FkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAC/F,0CAAyCkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAC3C,uBAAsBkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACxB,qCAAoCkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACtC,+BAA8BkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAChC,mDAAkDkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACpD,mCAAkCkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACpC,8CAA6CkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAC/C,qDAAoDkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACtD,gDAA+CkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACjD,4BAA2BkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAC7B,qDAAoDkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACtD,sFAAqFkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACvF,oDAAmDkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACrD,sEAAqEkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACvE,iEAAgEkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAClE,sCAAqCkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACvC,uBAAsBkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACxB,sCAAqCkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACvC,sBAAqBkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACvB,yBAAwBkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAC1B,wBAAuBkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACzB,uBAAsBkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACxB,uBAAsBkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACxB,yCAAwCkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAC1C,+BAA8BkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAChC,oCAAmCkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACrC,iCAAgCkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAClC,yDAAwDkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAC1D,uCAAsCkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACxC,0CAAyCkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAC3C,+BAA8BkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAChC,wBAAuBkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACzB,4CAA2CkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAC7C,uEAAsEkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACxE,oEAAmEkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACrE,0DAAyDkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAC3D,2CAAqCkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACvC,wCAAkCkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACpC,uDAAsDkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACxD,uDAAsDkQ,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,YAG7CslF,EAAsB,CACjCh/B,aAAYp2C,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACdulF,iBAAgBr1E,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAClBwlF,iBAAgBt1E,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WAClBylF,kBAAiBv1E,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACnB0lF,YAAWx1E,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACb2lF,mBAAkBz1E,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACpBomD,oBAAqB,uBACrBw/B,iBAAkB,oBAGPC,EAAuB,CAClC,0CAAyC31E,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,YAGhC8lF,EAAsB,CACjC1/B,oBAAmBl2C,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACrB+lF,qBAAoB71E,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,WACtBgmF,uBAAsB91E,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,YAQbimF,EAAsB,IAC9BpB,KACAjB,KACA0B,KACAD,KACAT,KAVgC,CACnC,gCAA+B10E,EAAAA,GAAAC,EAAE,CAAAnQ,GAAA,eAW9B8lF,KACAD,GAGQK,EAAoBhrE,IAC/B,MAAMlb,EAAKimF,EAAY/qE,GAGvB,OAFShL,EAAAA,GAAAC,EAAK,CAAEnQ,QAEFkb,CAAO,C,yECxKvB,MAAMirE,EAAM,wBAELtyE,eAAeuyE,IACpB,MAAMC,QAAqBz5B,EAAAA,EAAQU,QAAQ64B,GAC3C,OAAmB,OAAZE,QAAY,IAAZA,OAAY,EAAZA,EAAcj2D,MAAM,IAC7B,CAUOvc,eAAeirE,EAAgBvgD,SAR/B1qB,eAA+B0qB,GACpC,MAAM+nD,QAA4BF,IAE5BC,EAAe,IAAwB,OAAnBC,QAAmB,IAAnBA,EAAAA,EAAuB,MAAQ/nD,SAEnDquB,EAAAA,EAAQY,QAAQ24B,EAAK,IAAI,IAAI/3E,IAAIi4E,IAAep3D,KAAK,KAC7D,CAGQs3D,CAAgBhoD,EACxB,C,2FChBO,MAAMioD,GAAQC,EAAAA,EAAAA,IAAyB,cAEjC3oB,GAAS2oB,EAAAA,EAAAA,IAAmB,eAE5BC,GAAkBD,EAAAA,EAAAA,IAAuC,wBAEzDE,GAAwBF,EAAAA,EAAAA,IAAsB,+B,0QCOpD,SAASG,IACd,IAAIxoB,EAAgB5Y,EAAAA,EAAMC,WAAW2jB,KAAKC,WAE1C,OADIwd,EAAAA,EAAAA,OAAezoB,EAAgB5rD,EAAAA,GAAUE,IACtC0rD,CACT,CAEO,SAASjrD,IACd,MAAMirD,EAAgBwoB,IACtB,OAAO9+E,EAAAA,EAAAA,UAAQ,IAAMs2D,GAAe,CAACA,GACvC,CAcO,SAASlgD,IACd,MAAMD,GAAcoB,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM8pD,KAAKnrD,cACnD6oE,GAAaznE,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMynE,QAAQD,aACrDzd,GAAahqD,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM8pD,KAAKC,aAExD,QAAKA,MACDA,IAAe72D,EAAAA,GAAUO,OAAS+zE,IAC/B7oE,EACT,CAOO,SAAS+oE,IACd,MAAM,QAAED,GAAYvhC,EAAAA,EAAMC,WAC1B,OAAOshC,EAAQD,UACjB,CAMOjzE,eAAeozE,EAAU1mF,GAAmC,IAAlC,WAAE8oE,GAA6B9oE,EAC9D,MAAM+e,EAAQkmC,EAAAA,EAAMC,WAEdl+C,QAAkB2/E,EAAAA,EAAAA,MAExB,IAAK3/E,EAAW,OAEhB,MAAM+kC,GAAUid,EAAAA,EAAAA,GAAmBhiD,GAE7B4/E,EACJ9d,IAAe72D,EAAAA,GAAUG,SAAW02D,IAAe72D,EAAAA,GAAU40E,eAAiB9nE,EAAM8pD,KAAK+d,SAAW,GAChGE,EACJhe,IAAe72D,EAAAA,GAAUG,SAAW02D,IAAe72D,EAAAA,GAAU40E,eAAiB9nE,EAAM8pD,KAAKie,SAAW,GAEtG7hC,EAAAA,EAAMvmC,UACJunE,EAAAA,EAAAA,IAAM,CACJj9E,KAAM8/D,EACN8d,WACA76C,UACA/kC,YACA8hE,aACAge,cAIJ7hC,EAAAA,EAAMvmC,UAASynE,EAAAA,EAAAA,IAAgB,CAAEzoE,aAAa,KAC9CunC,EAAAA,EAAMvmC,UAASqoE,EAAAA,EAAAA,IAAkB,GACnC,CAWO,SAASC,EAAiBC,GAC/BhiC,EAAAA,EAAMvmC,UAASqoE,EAAAA,EAAAA,GAAkBE,GACnC,CAEO,SAASzpB,IACd,MAAM9+C,GAAWC,EAAAA,EAAAA,MACXmqD,EAAal2D,IAEnB,OAAO5G,EAAAA,EAAAA,cAAYsH,gBACXoL,GAAS6+C,EAAAA,EAAAA,OACXuL,GAAc95C,OAAOk4D,aAAal4D,OAAOk4D,YAAYC,mBACnDH,GAAiB,GACvBtoE,GAASynE,EAAAA,EAAAA,IAAgB,CAAEzoE,aAAa,IAAS,GAChD,CAACgB,EAAUsoE,GAChB,CAEO,SAAS9J,IACd,MAAMx+D,GAAWC,EAAAA,EAAAA,OACVhX,EAASyL,IAAcjG,EAAAA,EAAAA,WAAS,GAEjCi6E,EAA0BzpE,IAC1B4oE,GA7GCznE,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMynE,QAAQD,aA8GzChpB,EAASC,IAoCf,OAlCA/0D,EAAAA,EAAAA,YAAU,MACR6K,iBACE,MAAMuqD,EAAgBwoB,IACtB,IAAKxoB,EAGH,OAFAn/C,GAASynE,EAAAA,EAAAA,IAAgB,CAAEzoE,aAAa,UACxCtK,GAAW,GAIb,MAAMi0E,QAAsBtiB,EAAAA,GAAgBthE,OAAOo6D,GAGnD,SAFsBwpB,EAAcC,UAKlC,OAFA/pB,SACAnqD,GAAW,GAIb,MAAMsK,QApHLpK,eAAkCuqD,GASvC,aARMlrD,EAAAA,GAAUqyD,KAAKnH,SAETlrD,EAAAA,GAAU+K,cAEX/K,EAAAA,GAAUA,YACnBqc,OAAOk4D,YAAcv0E,EAAAA,GAAUA,iBAFzBA,EAAAA,GAAU4yD,gBAKLgiB,EAAAA,EAAAA,KACf,CA0GgCC,CAAmB3pB,GAEzCA,IAAkB5rD,EAAAA,GAAUE,IAC9Bu0E,EAAW,CAAE5d,WAAY72D,EAAAA,GAAUE,KAGrCuM,GAASynE,EAAAA,EAAAA,IAAgB,CAAEzoE,iBAEvBA,GA3DH,WACL,MAAM,KAAEmrD,GAAS5jB,EAAAA,EAAMC,YACjB,WAAE4jB,GAAeD,EAElBC,GAELtlE,EAAAA,GAAMikF,aAAa3e,EACrB,CAoDuB4e,GAEjBt0E,GAAW,EACb,CAEAw2B,EAAM,GACL,CAAC28C,KAEGh/E,EAAAA,EAAAA,UAAQ,MAASmW,YAAa0pE,EAAyBz/E,aAAY,CAACy/E,EAAyBz/E,GACtG,CAEO,SAASV,IACd,MAAMD,GAAY8X,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM8pD,KAAK7hE,YACjD8hE,GAAahqD,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM8pD,KAAKC,aAClDyd,GAAaznE,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMynE,QAAQD,aAE3D,OAAOh/E,EAAAA,EAAAA,UAAQ,KACb,GAAKP,IACD8hE,IAAe72D,EAAAA,GAAUO,MAAS+zE,GACtC,OAAI99B,EAAAA,EAAAA,GAAYzhD,GAAmBA,EAC5B9F,EAAAA,EAAU+b,SAASjW,EAAU,GACnC,CAACA,EAAW8hE,EAAYyd,GAC7B,CAEO,SAASoB,IACd,MAAM3gF,EAAYC,IAElB,OAAOM,EAAAA,EAAAA,UAAQ,KACb,GAAKP,EACL,OAAOgiD,EAAAA,EAAAA,GAAmBhiD,EAAUwB,WAAW,GAC9C,CAACxB,GACN,CAEO,SAAS2sC,IACd,MAAM3sC,EAAYC,IAElB,OAAOM,EAAAA,EAAAA,UAAQ,IACG,OAATP,QAAS,IAATA,OAAS,EAATA,EAAWwB,YACjB,CAACxB,GACN,CAEO,SAASyW,IACd,MAAMiB,GAAWC,EAAAA,EAAAA,MACXjS,GAAOoS,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM8pD,KAAKsU,sBAE5CyK,GAAS57E,EAAAA,EAAAA,cACZU,IACCgS,GAAS0nE,EAAAA,EAAAA,IAAsB15E,GAAM,GAEvC,CAACgS,IAGH,MAAO,CAAChS,EAAMk7E,EAChB,C,kFC1MO,MAAM34B,GAAmBi3B,EAAAA,EAAAA,IAA+C,yBAElE2B,GAAkB3B,EAAAA,EAAAA,IAAmB,wBAErCv3B,GAAiBu3B,EAAAA,EAAAA,IAAqD,sB,kFCJ5E,MAAM4B,GAAc5B,EAAAA,EAAAA,IAAqB,6BACnC6B,GAAc7B,EAAAA,EAAAA,IAAqB,6BACnC8B,GAA6B9B,EAAAA,EAAAA,IAAsB,2C,oGCEzD,MAAM+B,GAAgB/B,EAAAA,EAAAA,IAAqB,wBAErCgC,GAAqBhC,EAAAA,EAAAA,IAA6B,6BAElDiC,GAAmBjC,EAAAA,EAAAA,IAA8B,2BAEjDkC,GAAkBlC,EAAAA,EAAAA,IAAkC,0BAEpDmC,GAAsBnC,EAAAA,EAAAA,IAAwC,6B,yfCGrE,SAAgBoC,EAAgBC,G,yCACpC,mBAAoBC,EAAAA,EAAAA,OAAgBC,kBAAkBF,EACxD,G,CAgBM,SAAUG,IACd,OAAO1nC,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,aARA,W,yCACJ,MAAMziD,QAAe8gF,EAAgB,eACrC,OAAOhgF,EAAAA,EAAAA,GAAiBd,EAAOmhF,KAAMnhF,EAAOe,UAAUC,UACxD,G,CAKmBogF,EACf,KAAG,IAEP,C,qTCbM,SAAUC,IACd,OAAO7nC,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,aArBA,W,yCACJ,MAAMwe,GAAM,IAAIjvC,MAAOC,UACjBqvD,EAAQrgB,EAAM,MAEdsgB,QAAqBC,MAAM,6EAADx/E,OAC+CsmB,UAC1Eg5D,EAAQ,KAAMtgF,WACf,IACD,SAAAgB,OAAQsmB,UAAU24C,EAAM,KAAMjgE,WAAY,IAAG,cAC9CoiD,OAAM,KAAe,IAEvB,IAAKm+B,EAAc,OAEnB,MAAMvhF,QAAgBuhF,EAAaE,OAEnC,OAAO5oC,EAAAA,EAAAA,IAA4B74C,EAAO0hF,0BAA0Bl/C,IACtE,G,CAKmBm/C,EACf,KAAG,IAEP,C,qCClBO,SAASxB,IACd,OAAO7oE,EAAAA,EAAAA,KAAgBC,GAAoBA,EAAM8pD,KAAK98B,SACxD,CAEO,SAASp+B,IACd,OAAOmR,EAAAA,EAAAA,KAAgBC,GAAoBA,EAAM+yC,OAAOvO,WAC1D,CAEO,SAAS6lC,IACd,OAAOtqE,EAAAA,EAAAA,KAAgBC,GAAoBA,EAAM+yC,OAAOD,cAC1D,CASO,SAASD,IACd,MAAMC,EAAeu3B,IAErB,OAAO7hF,EAAAA,EAAAA,UAAQ,KACb,GAAIsqD,GAAgBA,EAAatiD,OAAQ,CAEvC,OADcsiD,EAAaA,EAAatiD,OAAS,GAAGZ,KAEtD,CACgB,GACf,CAACkjD,GACN,CAEO,SAASw3B,EAAqB79C,GACnC,MAAM89C,EAAW13B,IAEjB,OAAOrqD,EAAAA,EAAAA,UAAQ,KACb,GAAK+hF,GAAa99C,EAClB,OAAO,IAAI1gC,EAAAA,EAAUw+E,GAAUv+E,cAAazC,EAAAA,EAAAA,GAAiBkjC,EAAQlgC,EAAAA,GAAI/C,UAAU,GAClF,CAAC+gF,EAAU99C,GAChB,CAEO,SAAS+9C,IACd,MAAM13B,EAAeu3B,IAErB,OAAO7hF,EAAAA,EAAAA,UAAQ,KAC6B,IAADiiF,EAAAC,EAAzC,OAAI53B,GAAgBA,EAAatiD,QACkB,QAAjDi6E,EAA4C,QAA5CC,EAAO53B,EAAaA,EAAatiD,OAAS,UAAE,IAAAk6E,OAAA,EAArCA,EAAuCC,WAAG,IAAAF,EAAAA,EAE5C,CAAC,GACP,CAAC33B,GACN,CAMO,SAASirB,IACd,MAAMp+D,GAAWC,EAAAA,EAAAA,OAETnX,OAAQmiF,GAAYjB,KAE5BjgF,EAAAA,EAAAA,YAAU,MACR6K,iBACMq2E,GACFjrE,GAASupE,EAAAA,EAAAA,IAActrD,OAAOgtD,IAElC,CAEA//C,EAAM,GACL,CAAC+/C,GACN,CAEO,SAAS5M,IACd,MAAMr+D,GAAWC,EAAAA,EAAAA,MACXirE,GArBC9qE,EAAAA,EAAAA,KAAgBC,GAAoBA,EAAM+yC,OAAO83B,YAuBhDpiF,OAAQqiF,GAAchB,KAE9BpgF,EAAAA,EAAAA,YAAU,KACR,IAAKohF,IAAcD,GAAiC,IAArBC,EAAUt6E,OAAc,OAEvD,MAAMu6E,EAAYD,EAAUhrF,KAAK0hB,IAAG,CAClC5R,MAAO,IAAI7D,EAAAA,EAAU,IAAIA,EAAAA,EAAUyV,EAAI,IAAIwpE,UAAU,KAAOC,MAAMJ,GAAUt3B,QAAQ,IAAIhJ,WACxF2gC,UAAW1pE,EAAI,GAAG/X,WAClBkhF,IAAK,IAAI5+E,EAAAA,EAAUyV,EAAI,IAAIwpE,UAAU,KAAOvhF,eAG9CkW,GAASwpE,EAAAA,EAAAA,IAAmB4B,GAAW,GACtC,CAACF,EAAUC,GAChB,CAEO,SAASxM,IACd,MAAM3+D,GAAWC,EAAAA,EAAAA,OACTnX,OAAQ6kC,EAAM,QAAE1kC,IAAYuiF,EAAAA,EAAAA,MAkBpC,OAhBAzhF,EAAAA,EAAAA,YAAU,KACR,GAAI4jC,GAAUA,EAAO98B,OAAS,EAAG,CAC/B,MAAM46E,EAAoB,IAAI99C,GAAQwC,MAAK,CAACM,EAAGC,KAC7C,GAAID,GAAKC,EAAG,CACV,GAAID,EAAEi7C,KAAOh7C,EAAEg7C,KAAM,OAAQ,EAC7B,GAAIj7C,EAAEi7C,OAASh7C,EAAEg7C,KAAM,OAAO,EAC9B,GAAIj7C,EAAEi7C,KAAOh7C,EAAEg7C,KAAM,OAAO,CAC9B,CAEA,OAAO,CAAC,IAGV1rE,GAAS0pE,EAAAA,EAAAA,IAAgB+B,GAC3B,IACC,CAAC99C,EAAQ3tB,IAEL,CACL/W,UACAH,OAAQ6kC,EAEZ,CAEO,SAASg+C,EAAsBvgF,GACpC,MAAM4D,EAAkBC,IAExB,OAAOpG,EAAAA,EAAAA,UAAQ,KACb,IAAKuC,IAAY4D,GAA8C,IAA3BA,EAAgB6B,OAAc,OAAO,EACzE,MAAM1D,EAAQ6B,EAAgBU,MAAM/O,GAAMA,EAAE4B,aAAe6I,IAC3D,OAAOkP,QAAQnN,EAAM,GACpB,CAAC6B,EAAiB5D,GACvB,CAMO,SAASmzE,IACd,MAAMv+D,GAAWC,EAAAA,EAAAA,MACX2rE,GALCxrE,EAAAA,EAAAA,KAAgBC,GAAoBA,EAAM+yC,OAAOw4B,iBAMjD3iF,EAASyL,IAAcjG,EAAAA,EAAAA,WAAS,GAoBvC,OAlBA1E,EAAAA,EAAAA,YAAU,KACR,MAAMugF,EAAQ11E,MAAOo1B,EAAgBC,KACnC,MAAMnhC,QAAe+iF,EAAAA,EAAAA,IAAmB7hD,EAAQC,GAChD,OAAa,OAANnhC,QAAM,IAANA,OAAM,EAANA,EAAQ1B,OAAO,GAGxBwN,iBACE,GAAIg3E,EAAc/6E,OAAS,GAAK5H,EAAS,OAEzCyL,GAAW,GACX,MAAM42B,QAAawgD,EAAAA,EAAAA,IAAgDxB,EAAO,IAAM,GAChFtqE,GAAS2pE,EAAAA,EAAAA,IAAoBr+C,IAC7B52B,GAAW,EACb,CAEAw2B,EAAM,GACL,CAAC0gD,EAAe5rE,KAEZnX,EAAAA,EAAAA,UAAQ,MAASI,UAASH,OAAQ8iF,KAAkB,CAAC3iF,EAAS2iF,GACvE,C,mICvKO,MAAM3rE,EAAiBA,KAAM8rE,EAAAA,EAAAA,MACvB3rE,EAAiD4rE,EAAAA,E,0ICIvD,MCHP,GAAeC,EAAAA,EAAAA,IDGiC,CAC9C7S,WAAW,gCACX5zD,KAAM,OACNg8D,OAAQ,KACR/G,WAAW,EACXyR,sBAAsB,ICRoBC,IAC1CA,EACGC,QAAQhD,EAAAA,IAAa,CAAC/oE,EAAK/e,KAAmB,IAAjB,QAAE+qF,GAAS/qF,EACvC+e,EAAMmF,KAAO6mE,CAAO,IAErBD,QAAQ/C,EAAAA,IAAa,CAAChpE,EAAK1S,KAAmB,IAAjB,QAAE0+E,GAAS1+E,EACvC0S,EAAMmhE,OAAS6K,CAAO,IAEvBD,QAAQ9C,EAAAA,IAA4B,CAACjpE,EAAK/I,KAAmB,IAAjB,QAAE+0E,GAAS/0E,EACtD+I,EAAM6rE,qBAAuBG,CAAO,GACpC,I,eCAC,MAAMC,EAA8B,CACzCl1D,QAAQ,EACRppB,MAAM,EACNiO,QAAS,qBACTxB,aAAc,CACZvE,SAAU,MACVwE,WAAY,SAEd/D,QAAS,UACT24D,cAAe,UACfnpD,WAAY,OACZmR,OAAO,EACPi1D,cAAc,EACd54D,iBAAkB,KCxBpB,GAAes4D,EAAAA,EAAAA,IAAcK,GAAeH,IAC1CA,EACGC,QAAQI,EAAAA,GAAc,CAACnsE,EAAK/e,KAAmB,IAAjB,QAAE+qF,GAAS/qF,EACxC,MAAO,IACF+e,EACH+W,QAAS/W,EAAM+W,OACfppB,MAAM,EACNiO,QAASowE,EAAQpwE,QAAUowE,EAAQpwE,QAAUqwE,EAAarwE,QAC1DxB,aAAc4xE,EAAQ5xE,aAAe4xE,EAAQ5xE,aAAe6xE,EAAa7xE,aACzE9D,QAAS01E,EAAQ11E,QAAU01E,EAAQ11E,QAAU21E,EAAa31E,QAC1D24D,cAAe+c,EAAQ/c,cAAgB+c,EAAQ/c,cAAgBgd,EAAahd,cAC5EnpD,WAAYkmE,EAAQlmE,WAAakmE,EAAQlmE,WAAammE,EAAanmE,WACnEmR,OAAO,EACPi1D,aAAcF,EAAQE,aAAeF,EAAQE,aAAeD,EAAaC,aAC1E,IAEFH,QAAQnwD,EAAAA,GAAgB5b,IAChB,IACFA,EACH+W,QAAS/W,EAAM+W,OACfppB,MAAM,EACNiO,QAAS,GACTqb,OAAO,KAET,I,eCjBC,MAAMg1D,EAA4B,CACvCG,eAAgB,CAAC,EACjBC,cAAe,CAAC,EAChBrjF,aAAc,GACd8mC,KAAM,UACNw8C,Y,SAAaC,EAAgBC,KCL/B,GAAeZ,EAAAA,EAAAA,IAAcK,GAAeH,IAC1CA,EACGC,QAAQ9iF,EAAAA,IAAoB,CAAC+W,EAAK/e,KAAmB,IAAjB,QAAE+qF,GAAS/qF,EAC9C,MAAMwrF,EAAkB,IAAIzsE,EAAMhX,gBAAiBgjF,GAEnD,MAAO,IACFhsE,EACHhX,aAAcyjF,EACf,IAEFV,QAAQ7iF,EAAAA,IAAoB,CAAC8W,EAAK1S,KAAmB,IAAjB,QAAE0+E,GAAS1+E,EAC9C,MAAMm/E,EAAkB,IAAIzsE,EAAMhX,cAAckG,QAAQpC,IAAWk/E,EAAQpiF,SAASkD,KAEpF,MAAO,IACFkT,EACHhX,aAAcyjF,EACf,IAEFV,QAAQW,EAAAA,IAAuB,CAAC1sE,EAAK/I,KAAmB,IAAjB,QAAE+0E,GAAS/0E,EACjD+I,EAAMosE,eAAiB,IAClBpsE,EAAMosE,eACT,CAAC,GAAD3hF,OAAIuhF,EAAQ/jF,UAAS,KAAAwC,OAAIuhF,EAAQ9pE,OAAS8pE,EAAQ3qF,QACnD,IAEF0qF,QAAQY,EAAAA,IAAqB,CAAC3sE,EAAKvI,KAAmB,IAAjB,QAAEu0E,GAASv0E,EAC/C,MAAMm1E,EAAS5sE,EAAMqsE,cAAc,GAAD5hF,OAAIuhF,EAAQ/jF,YAC1C,IAAI+X,EAAMqsE,cAAc,GAAD5hF,OAAIuhF,EAAQ/jF,aAAciH,QAC9C8Q,GAAUA,EAAM6sE,cAAgB15C,OAAO64C,EAAQa,eAElD,GAEEC,GACJ9sE,EAAMqsE,cAAc,GAAD5hF,OAAIuhF,EAAQ/jF,YAAe,IAAI+X,EAAMqsE,cAAc,GAAD5hF,OAAIuhF,EAAQ/jF,aAAgB,IACjGiH,QAAQ8Q,GAAUA,EAAM6sE,cAAgB15C,OAAO64C,EAAQa,eAAc,GAEvED,EAAOG,QAAQ,CACb/sE,MAAOgsE,EAAQhsE,MACfgtE,KAAMhB,EAAQgB,KACdH,YAAa15C,OAAO64C,EAAQa,aAC5Bj9E,MAAOo8E,EAAQp8E,MAAQo8E,EAAQp8E,MAAQk9E,EAAYA,EAAUl9E,MAAQ,KAGvE,MAAMq9E,EAAUL,EAAO98C,MAAK,CAACM,EAAGC,IAC1BzS,OAAOwS,EAAEy8C,aAAejvD,OAAOyS,EAAEw8C,cAAsB,EACvDjvD,OAAOwS,EAAEy8C,aAAejvD,OAAOyS,EAAEw8C,aAAqB,EACnD,IAGT7sE,EAAMqsE,cAAc,GAAD5hF,OAAIuhF,EAAQ/jF,YAAeglF,CAAO,IAEtDlB,QAAQmB,EAAAA,IAAsB,CAACltE,EAAKvF,KAAmB,IAAjB,QAAEuxE,GAASvxE,EAChDuF,EAAM8vB,KAAOk8C,CAAO,IAErBD,QAAQoB,EAAAA,IAAmB,CAACntE,EAAKpG,KAAmB,IAAjB,QAAEoyE,GAASpyE,EAC7CoG,EAAMssE,YAAcN,CAAO,GAC3B,I,eClDC,MAAMC,EAA4B,CACvCpB,SAAU,KACV/3B,aAAc,GACdtO,UAAW,GACX4oC,uBAAuB,EACvBC,cAAe,GACf/L,W,SAAYv8C,GACZuoD,qBAAqB,EACrB/B,cAAe,ICpBjB,GAAeK,EAAAA,EAAAA,IAAcK,GAAeH,IAC1CA,EACGC,QAAQ7C,EAAAA,IAAe,CAAClpE,EAAK/e,KAAmB,IAAjB,QAAE+qF,GAAS/qF,EACzC+e,EAAM6qE,SAAWmB,CAAO,IAEzBD,QAAQ5C,EAAAA,IAAoB,CAACnpE,EAAK1S,KAAmB,IAAjB,QAAE0+E,GAAS1+E,EAC9C0S,EAAM8yC,aAAek5B,CAAO,IAE7BD,QAAQ3C,EAAAA,IAAkB,CAACppE,EAAK/I,KAAmB,IAAjB,QAAE+0E,GAAS/0E,EAC5C+I,EAAMshE,WAAa0K,CAAO,IAE3BD,QAAQ1C,EAAAA,IAAiB,CAACrpE,EAAKvI,KAAmB,IAAjB,QAAEu0E,GAASv0E,EAC3CuI,EAAMwkC,UAAYwnC,CAAO,IAE1BD,QAAQzC,EAAAA,IAAqB,CAACtpE,EAAKvF,KAAmB,IAAjB,QAAEuxE,GAASvxE,EAC/CuF,EAAMurE,cAAgBS,CAAO,GAC7B,I,8CCPC,MAAMC,EAA0B,CACrC,CAAC9kD,EAAAA,GAAWomD,OAAQ,CAAEC,WAAYpmD,EAAAA,IAClC,CAACD,EAAAA,GAAWsmD,QAAS,CAAED,WAAYlmD,EAAAA,IACnCqY,WAAY,GACZ+tC,iBAAkBvmD,EAAAA,GAAWomD,MAC7BI,gBAAiB,CAAC,EAClBC,cAAe,CAAC,EAChBC,wBAAyB,CAAC,GCP5B,GAAejC,EAAAA,EAAAA,IAAcK,GAAeH,IAC1CA,EACGC,QAAQ+B,EAAAA,IAAW,CAAC9tE,EAAK/e,KAAmB,IAAjB,QAAE+qF,GAAS/qF,EACrC,MAAQ8sF,MAAOL,EAAgB,WAAE/tC,GAAeqsC,EAEhDhsE,EAAM0tE,iBAAmBA,EACzB1tE,EAAM2/B,WAAaA,CAAU,IAE9BosC,QAAQiC,EAAAA,IAAgB,CAAChuE,EAAK1S,KAAmB,IAAjB,QAAE0+E,GAAS1+E,EAC1C,MAAM,MAAEygF,EAAK,WAAEP,GAAexB,EAExBiC,EAAaF,IAAU5mD,EAAAA,GAAWomD,MAAQpmD,EAAAA,GAAWsmD,OAAStmD,EAAAA,GAAWomD,MAC/E,OAAIC,IAAextE,EAAMiuE,GAAYT,WAC5B,IACFxtE,EACH0tE,iBAAkB1tE,EAAM0tE,mBAAqBvmD,EAAAA,GAAWomD,MAAQpmD,EAAAA,GAAWsmD,OAAStmD,EAAAA,GAAWomD,MAC/F,CAACQ,GAAQ,CAAEP,cACX,CAACS,GAAa,CAAET,WAAYxtE,EAAM+tE,GAAOP,aAIpC,IACFxtE,EACH,CAAC+tE,GAAQ,CAAEP,cACZ,IAGJzB,QAAQmC,EAAAA,IAAmBluE,IACnB,IACFA,EACH2/B,WAAY,GACZ+tC,iBAAkB1tE,EAAM0tE,mBAAqBvmD,EAAAA,GAAWomD,MAAQpmD,EAAAA,GAAWsmD,OAAStmD,EAAAA,GAAWomD,MAC/F,CAACpmD,EAAAA,GAAWomD,OAAQ,CAAEC,WAAYxtE,EAAMmnB,EAAAA,GAAWsmD,QAAQD,YAC3D,CAACrmD,EAAAA,GAAWsmD,QAAS,CAAED,WAAYxtE,EAAMmnB,EAAAA,GAAWomD,OAAOC,gBAG9DzB,QAAQoC,EAAAA,IAAgB,IAChBlC,IAERF,QAAQqC,EAAAA,IAAuB,CAACpuE,EAAK/I,KAAmB,IAAjB,QAAE+0E,GAAS/0E,EACjD+I,EAAM2tE,gBAAgB3B,EAAQjqF,KAAOiqF,EAAQtrF,EAAE,IAEhDqrF,QAAQsC,EAAAA,IAAqB,CAACruE,EAAKvI,KAAmB,IAAjB,QAAEu0E,GAASv0E,EAC/CuI,EAAM4tE,cAAc5B,EAAQjqF,KAAOiqF,EAAQp8E,KAAK,IAEjDm8E,QAAQuC,EAAAA,IAA+B,CAACtuE,EAAKvF,KAAmB,IAAjB,QAAEuxE,GAASvxE,EACzDuF,EAAM6tE,wBAAwB7B,EAAQjqF,KAAO,CAAEysC,QAASw9C,EAAQx9C,QAASG,QAASq9C,EAAQr9C,QAAS,GACnG,I,eClDC,MAAMs9C,EAAmC,CAC9CsC,eAAgB,GAChBC,gBAAiB,GACjBC,WAAY,GACZf,iBAAkBzoD,EAAAA,GAAMypD,WACxB/uC,WAAY,ICJd,GAAeisC,EAAAA,EAAAA,IAAcK,GAAeH,IAC1CA,EAEGC,QAAQ4C,EAAAA,IAAa,CAAC3uE,EAAK/e,KAAmB,IAAjB,QAAE+qF,GAAS/qF,EACvC,MAAM,MAAE8sF,EAAK,WAAEpuC,GAAeqsC,EAE9B,OAAchsE,EAAM0tE,iBACX,IACF1tE,EACH0tE,iBAAkBK,EAClBpuC,aAOD,IAGJosC,QAAQ6C,EAAAA,IAAkB5uE,IACzBA,EAAMuuE,gBAAiB,EACvBvuE,EAAMwuE,iBAAkB,CAAI,IAE7BzC,QAAQ8C,EAAAA,IAAiB,CAAC7uE,EAAK1S,KAAmB,IAAjB,QAAE0+E,GAAS1+E,EAC3C0S,EAAMuuE,eAAiBvC,CAAO,IAE/BD,QAAQ+C,EAAAA,IAAkB,CAAC9uE,EAAK/I,KAAmB,IAAjB,QAAE+0E,GAAS/0E,EAC5C+I,EAAMwuE,gBAAkBxC,CAAO,IAEhCD,QAAQgD,EAAAA,IAAkB,CAAC/uE,EAAKvI,KAAmB,IAAjB,QAAEu0E,GAASv0E,EAC5CuI,EAAMyuE,WAAazC,CAAO,IAE3BD,QAAQiD,EAAAA,IAAgB,IAChB/C,GACP,I,eCxBC,MAAMA,EAA+B,CAC1CgD,gBAAgB,EAChBC,eAAe,EACfC,kBAAmB,GACnBC,aAAc,CACZC,KAAM7pD,EAAAA,GACN8pD,KAAM7pD,EAAAA,GACN8pD,KAAM7pD,EAAAA,IAER8pD,yBAA0BtpD,EAAAA,GAC1Bl9B,aAAc,GACdymF,oBAAoB,EACpBC,kBAAmB,GACnBnjD,gBAAiBpG,EAAAA,GACjBwpD,oBAAoB,EACpBC,kBAAkB,GCpBpB,GAAehE,EAAAA,EAAAA,IAAcK,GAAeH,IAC1CA,EACGC,QAAQ8D,EAAAA,IAAsB,CAAC7vE,EAAK/e,KAAmB,IAAjB,QAAE+qF,GAAS/qF,EAChD+e,EAAMivE,eAAiBjD,CAAO,IAE/BD,QAAQ+D,EAAAA,IAAyB,CAAC9vE,EAAK1S,KAAmB,IAAjB,QAAE0+E,GAAS1+E,EACnD0S,EAAMmvE,kBAAoBnD,CAAO,IAElCD,QAAQgE,EAAAA,IAAqB,CAAC/vE,EAAK/I,KAAmB,IAAjB,QAAE+0E,GAAS/0E,EAC/C+I,EAAMkvE,cAAgBlD,CAAO,IAE9BD,QAAQiE,EAAAA,IAAgC,CAAChwE,EAAKvI,KAAmB,IAAjB,QAAEu0E,GAASv0E,EAC1DuI,EAAMwvE,yBAA2BxD,CAAO,IAEzCD,QAAQkE,EAAAA,IAAoB,CAACjwE,EAAKvF,KAAmB,IAAjB,QAAEuxE,GAASvxE,EAC9C,MAAM,KAAEyH,EAAI,MAAEtS,GAAUo8E,EACxBhsE,EAAMovE,aAAaltE,GAAQtS,CAAK,IAEjCm8E,QAAQ9iF,EAAAA,IAAoB,CAAC+W,EAAKpG,KAAmB,IAAjB,QAAEoyE,GAASpyE,EAC9CoG,EAAMhX,aAAe,IAAIgX,EAAMhX,gBAAiBgjF,EAAQ,IAEzDD,QAAQmE,EAAAA,IAAoB,CAAClwE,EAAKmwE,KAAmB,IAAjB,QAAEnE,GAASmE,EAC9CnwE,EAAMhX,aAAegX,EAAMhX,aAAakG,QAAQpC,IAA+D,IAArDk/E,EAAQhxD,WAAWo1D,GAAWA,IAAWtjF,KAAc,IAElHi/E,QAAQsE,EAAAA,IAA0B,CAACrwE,EAAKswE,KAAmB,IAAjB,QAAEtE,GAASsE,EACpDtwE,EAAMyvE,mBAAqBzD,CAAO,IAEnCD,QAAQwE,EAAAA,IAAyB,CAACvwE,EAAKwwE,KAAmB,IAAjB,QAAExE,GAASwE,EACnD,MAAM,kBAAEd,GAAsB1vE,EACxBywE,EAAa,IAAI,IAAI3hF,IAAI,IAAI4gF,KAAsB1D,KAEzDhsE,EAAM0vE,kBAAoBe,CAAU,IAErC1E,QAAQ2E,EAAAA,IAA2B,CAAC1wE,EAAK2wE,KAAmB,IAAjB,QAAE3E,GAAS2E,EACrD3wE,EAAMusB,gBAAkBy/C,CAAO,IAEhCD,QAAQ6E,EAAAA,IAA0B,CAAC5wE,EAAK6wE,KAAmB,IAAjB,QAAE7E,GAAS6E,EACpD7wE,EAAM2vE,mBAAqB3D,CAAO,IAEnCD,QAAQ+E,EAAAA,IAAwB,CAAC9wE,EAAK+wE,KAAmB,IAAjB,QAAE/E,GAAS+E,EAClD/wE,EAAM4vE,iBAAmB5D,CAAO,GAChC,I,eCnDC,MAAMC,EAA8B,CACzCyB,iBAAkBnoD,EAAAA,GAAWyrD,kBAC7BrxC,WAAY,KCLd,GAAeisC,EAAAA,EAAAA,IAAcK,GAAeH,IAC1CA,EACGC,QAAQkF,EAAAA,GAAkB,CAACjxE,EAAK/e,KAAmB,IAAjB,QAAE+qF,GAAS/qF,EAC5C,MAAM,WAAE0+C,EAAU,iBAAE+tC,GAAqB1B,EAEzChsE,EAAM0tE,iBAAmBA,EACzB1tE,EAAM2/B,WAAaA,CAAU,IAE9BosC,QAAQmF,EAAAA,GAAgB,IAChBjF,GACP,I,eCPC,MCHP,GAAeL,EAAAA,EAAAA,IDGuB,CACpCuF,sBAAuB,GACvBC,aAAc,KCL4BtF,IAC1CA,EACGC,QAAQsF,EAAAA,IAA6B,CAACrxE,EAAK/e,KAAmB,IAAjB,QAAE+qF,GAAS/qF,EACvD+e,EAAMmxE,sBAAwB,IAAInxE,EAAMmxE,yBAAkC,OAAPnF,QAAO,IAAPA,EAAAA,EAAW,GAAI,IAEnFD,QAAQuF,EAAAA,IAA6B,CAACtxE,EAAK1S,KAAmB,IAAjB,QAAE0+E,GAAS1+E,EACvD,MAAM6jF,EAAwB,IAAIriF,IAAIkR,EAAMmxE,uBAE5CA,EAAsB3kC,OAAOw/B,GAE7BhsE,EAAMmxE,sBAAwB,IAAIA,EAAsB,IAEzDpF,QAAQwF,EAAAA,IAAW,CAACvxE,EAAK/I,KAAmB,IAAjB,QAAE+0E,GAAS/0E,EACrC+I,EAAMoxE,aAAepxE,EAAMoxE,aAAa3mF,OAAOuhF,EAAQ,IAExDD,QAAQyF,EAAAA,IAAW,CAACxxE,EAAKvI,KAAmB,IAAjB,QAAEu0E,GAASv0E,EACrCuI,EAAMoxE,aAAepxE,EAAMoxE,aAAaliF,QAAQ5O,GAAMA,EAAE4B,aAAe8pF,EAAQ9pF,YAAW,GAC1F,I,eCCC,MAAM+pF,EAA0B,CACrChiF,KAAM,GACN49E,SAAU,KACV5/E,UAAW,GACX8hE,WAAY,KACZprD,aAAa,EACbquB,QAAS,GACT+6C,SAAU,GACV3J,qBAAqB,GCzBvB,GAAewN,EAAAA,EAAAA,IAAcK,GAAeH,IAC1CA,EACGC,QAAQ7E,EAAAA,IAAO,CAAClnE,EAAK/e,KAAmB,IAAjB,QAAE+qF,GAAS/qF,EACjC,MAAO,IACF+e,KACAgsE,EACJ,IAEFD,QAAQvtB,EAAAA,IAAQ,KACR,IAAKytB,MAEbF,QAAQ3E,EAAAA,IAAiB,CAACpnE,EAAK1S,KAAmB,IAAjB,QAAE0+E,GAAS1+E,EAC3C0S,EAAMrB,YAAcqtE,EAAQrtE,WAAW,IAExCotE,QAAQ1E,EAAAA,IAAuB,CAACrnE,EAAK/I,KAAmB,IAAjB,QAAE+0E,GAAS/0E,EACjD+I,EAAMo+D,oBAAsB4N,CAAO,GACnC,I,eCjBC,MCAP,GAAeJ,EAAAA,EAAAA,IDA2B,CACxCpE,YAAY,ICD8BsE,IAC1CA,EAAQC,QAAQ9D,EAAAA,GAAkB,CAACjoE,EAAK/e,KAAmB,IAAjB,QAAE+qF,GAAS/qF,EACnD+e,EAAMwnE,YAAcwE,CAAO,GAC3B,I,eCAG,MCHP,GAAeJ,EAAAA,EAAAA,IDG8B,CAC3C3lC,UAAW,CAAC,EACZwrC,YAAa,KCL6B3F,IAC1CA,EACGC,QAAQ2F,EAAAA,GAAsB,CAAC1xE,EAAK/e,KAAmB,IAAjB,QAAE+qF,GAAS/qF,EAChD+qF,EAAQ78E,SAAQ7B,IAA+B,IAA9B,WAAEpL,EAAU,SAAEX,GAAU+L,EACnCpL,IACF8d,EAAMimC,UAAU/jD,GAAcX,EAChC,GACA,IAEHwqF,QAAQ4F,EAAAA,GAAmB,CAAC3xE,EAAK/I,KAAmB,IAAjB,QAAE+0E,GAAS/0E,EAC7C+I,EAAMyxE,YAAc,IAAI,IAAI3iF,IAAIkR,EAAMyxE,YAAYhnF,OAAOuhF,IAAU,GACnE,I,eCLC,MCLP,GAAeJ,EAAAA,EAAAA,IDKwB,CACrC37B,YAAa,CAAC,EACdN,UAAW,EACXF,SAAU,CAAC,ICR+Bq8B,IAC1CA,EACGC,QAAQ77B,EAAAA,IAAkB,CAAClwC,EAAK/e,KAAmB,IAAjB,QAAE+qF,GAAS/qF,EAC5C+e,EAAMiwC,YAAc,IACfjwC,EAAMiwC,YACT,CAAC+7B,EAAQz8B,SAAUy8B,EAAQvjF,OAC5B,IAEFsjF,QAAQjD,EAAAA,IAAkB9oE,IACzBA,EAAM2vC,WAAa,CAAC,IAErBo8B,QAAQn8B,EAAAA,IAAgB,CAAC5vC,EAAK1S,KAAmB,IAAjB,QAAE0+E,GAAS1+E,EAC1C0S,EAAMyvC,SAAW,IACZzvC,EAAMyvC,SACT,CAACu8B,EAAQz8B,SAAUy8B,EAAQr8B,UAC5B,GACD,I,eCFC,MCfP,GAAei8B,EAAAA,EAAAA,IDeyB,CACtCgG,MAAO,CAAC,EACRC,OAAQ,GACR9vF,IAAK,EACLkpC,KAAM,CAAC,ICnBmC6gD,IAC1CA,EACGC,QAAQp+E,EAAAA,IAAM,CAACqS,EAAK/e,KAAmB,IAAjB,QAAE+qF,GAAS/qF,EAC5B+qF,IACFhsE,EAAM6xE,OAAS,CAAC7F,GAClB,IAEDD,QAAQ90D,EAAAA,IAAO,CAACjX,EAAK1S,KAAmB,IAAjB,QAAE0+E,GAAS1+E,EAC7B0+E,GAAWhsE,EAAM6xE,OAAOjoF,SAASoiF,KACnChsE,EAAM6xE,OAAS,GACjB,IAED9F,QAAQ+F,EAAAA,IAAW9xE,IAClBA,EAAM6xE,OAAS,EAAE,IAElB9F,QAAQgG,EAAAA,IAAmB,CAAC/xE,EAAK/I,KAAmB,IAAjB,QAAE+0E,GAAS/0E,EAC7C+I,EAAM4xE,MAAQ,IACT5xE,EAAM4xE,MACT,CAAC5F,EAAQjqF,KAAMiqF,EAAQp8E,MACxB,IAEFm8E,QAAQiG,EAAAA,IAAYhyE,IACnBA,EAAMje,KAAO,CAAC,IAEfgqF,QAAQkG,EAAAA,IAAY,CAACjyE,EAAKvI,KAAmB,IAAjB,QAAEu0E,GAASv0E,EACtCuI,EAAMirB,KAAO,IACRjrB,EAAMirB,KACT,CAAC+gD,EAAQjqF,KAAMiqF,EAAQ/gD,KACxB,GACD,I,eC3BC,MCFP,GAAe2gD,EAAAA,EAAAA,IDEuB,CACpCn9E,iBAAkB,KCHwBq9E,IAC1CA,EAAQC,QAAQmG,EAAAA,GAAwB,CAAClyE,EAAK/e,KAAmB,IAAjB,QAAE+qF,GAAS/qF,EACzD+e,EAAMvR,iBAAmBu9E,CAAO,GAChC,I,yBCKG,MAAMC,EAAmC,CAC9CkG,cAAe,GACf5D,eAAgB,GAChBC,gBAAiB,GACjBC,WAAY,GACZf,iBAAkBzoD,EAAAA,GAAMypD,WACxB/uC,WAAY,ICNd,GAAeisC,EAAAA,EAAAA,IAAcK,GAAeH,IAC1CA,EACGC,QAAQqG,EAAAA,IAAqB,CAACpyE,EAAK/e,KAAmB,IAAjB,QAAE+qF,GAAS/qF,EAC/C+e,EAAMmyE,cAAgBnG,CAAO,IAE9BD,QAAQ4C,EAAAA,IAAa,CAAC3uE,EAAK1S,KAAmB,IAAjB,QAAE0+E,GAAS1+E,EACvC,MAAM,MAAEygF,EAAK,WAAEpuC,GAAeqsC,EAE9B,OAAchsE,EAAM0tE,iBACX,IACF1tE,EACH0tE,iBAAkBK,EAClBpuC,aAOD,IAGJosC,QAAQ6C,EAAAA,IAAkB5uE,IACzBA,EAAMuuE,gBAAiB,EACvBvuE,EAAMwuE,iBAAkB,CAAI,IAE7BzC,QAAQ8C,EAAAA,IAAiB,CAAC7uE,EAAK/I,KAAmB,IAAjB,QAAE+0E,GAAS/0E,EAC3C+I,EAAMuuE,eAAiBvC,CAAO,IAE/BD,QAAQ+C,EAAAA,IAAkB,CAAC9uE,EAAKvI,KAAmB,IAAjB,QAAEu0E,GAASv0E,EAC5CuI,EAAMwuE,gBAAkBxC,CAAO,IAEhCD,QAAQgD,EAAAA,IAAkB,CAAC/uE,EAAKvF,KAAmB,IAAjB,QAAEuxE,GAASvxE,EAC5CuF,EAAMyuE,WAAazC,CAAO,IAE3BD,QAAQiD,EAAAA,IAAgB,IAChB/C,GACP,I,gBChCC,MAAMA,GAA+B,CAC1CgD,gBAAgB,EAChBC,eAAe,EACfC,kBAAmB,GACnBC,aAAc,CACZC,KAAM7pD,EAAAA,GACN8pD,KAAM7pD,EAAAA,GACN8pD,KAAM7pD,EAAAA,IAER8pD,yBAA0BtpD,EAAAA,GAC1BynD,gBAAiB,CAAC,EAClB3kF,aAAc,ICxBhB,IAAe4iF,EAAAA,EAAAA,IAAcK,IAAeH,IAC1CA,EAAQC,QAAQkE,GAAAA,GAAoB,CAACjwE,EAAK/e,KAAmB,IAAjB,QAAE+qF,GAAS/qF,EACrD,MAAM,KAAEihB,EAAI,MAAEtS,GAAUo8E,EACxBhsE,EAAMovE,aAAaltE,GAAQtS,CAAK,GAChC,I,gBCDG,MAAMq8E,GAA8B,CACzCyB,iBAAkBnoD,EAAAA,GAAWyrD,kBAC7BrxC,WAAY,KCLd,IAAeisC,EAAAA,EAAAA,IAAcK,IAAeH,IAC1CA,EACGC,QAAQkF,GAAAA,GAAkB,CAACjxE,EAAK/e,KAAmB,IAAjB,QAAE+qF,GAAS/qF,EAC5C,MAAM,WAAE0+C,EAAU,iBAAE+tC,GAAqB1B,EAEzChsE,EAAM0tE,iBAAmBA,EACzB1tE,EAAM2/B,WAAaA,CAAU,IAE9BosC,QAAQmF,GAAAA,GAAgB,IAChBjF,IACP,I,gBCLC,MCLP,IAAeL,EAAAA,EAAAA,IDKwB,CACrCjgB,GAAI,CAAC,EACL0mB,WAAY,CAAC,EACbC,kBAAmB,CAAC,ICRsBxG,IAC1CA,EACGC,QAAQwG,GAAAA,IAAU,CAACvyE,EAAK/e,KAAmB,IAAjB,QAAE+qF,GAAS/qF,EACpC,MAAMuxF,EAAQxyE,EAAM2rD,GAAG,GAADlhE,OAAIuhF,EAAQ/jF,YAAe,CAAC+jF,EAAQrgB,MAAO3rD,EAAM2rD,GAAG,GAADlhE,OAAIuhF,EAAQ/jF,aAAgB,CAAC+jF,EAAQrgB,IAC9G3rD,EAAM2rD,GAAG,GAADlhE,OAAIuhF,EAAQ/jF,YAAeuqF,CAAK,IAEzCzG,QAAQ0G,GAAAA,IAAkB,CAACzyE,EAAK1S,KAAmB,IAADolF,EAAA,IAAhB,QAAE1G,GAAS1+E,EAC5C,MAAMqlF,EAAc3yE,EAAMqyE,WAAW,GAAD5nF,OAAIuhF,EAAQ/jF,YAC5C,IAAI+X,EAAMqyE,WAAW,GAAD5nF,OAAIuhF,EAAQ/jF,aAAciH,QAC3Cs8C,GAAgBA,EAAYqhC,cAAgB15C,OAAO64C,EAAQrgB,GAAGkhB,eAEjE,GAEEC,GACJ9sE,EAAMqyE,WAAW,GAAD5nF,OAAIuhF,EAAQ/jF,YAAe,IAAI+X,EAAMqyE,WAAW,GAAD5nF,OAAIuhF,EAAQ/jF,aAAgB,IAC3FiH,QAAQs8C,GAAgBA,EAAYqhC,cAAgB15C,OAAO64C,EAAQrgB,GAAGkhB,eAAc,GAEtF8F,EAAY5F,QAAQ,CAClB/sE,MAAOgsE,EAAQrgB,GAAG3rD,MAClBmrD,KAAqB,QAAjBunB,EAAE1G,EAAQrgB,GAAGR,YAAI,IAAAunB,EAAAA,EAAa,OAAT5F,QAAS,IAATA,OAAS,EAATA,EAAW3hB,KACpC0hB,YAAa15C,OAAO64C,EAAQrgB,GAAGkhB,aAC/Bj9E,MAAOo8E,EAAQrgB,GAAG/7D,MAAQo8E,EAAQrgB,GAAG/7D,MAAQk9E,EAAYA,EAAUl9E,MAAQ,KAG7E,MAAMgjF,EAAYD,EAAY7iD,MAAK,CAACM,EAAGC,IACjCzS,OAAOwS,EAAEy8C,aAAejvD,OAAOyS,EAAEw8C,cAAsB,EACvDjvD,OAAOwS,EAAEy8C,aAAejvD,OAAOyS,EAAEw8C,aAAqB,EACnD,IAGT7sE,EAAMqyE,WAAW,GAAD5nF,OAAIuhF,EAAQ/jF,YAAe2qF,CAAS,IAErD7G,QAAQ8G,GAAAA,IAAe,CAAC7yE,EAAK/I,KAAmB,IAAjB,QAAE+0E,GAAS/0E,EACzC,MAAMlV,EAAG,GAAA0I,OAAMuhF,EAAQ/jF,UAAS,KAAAwC,OAAIuhF,EAAQvvE,WACtC+1E,EAAQxyE,EAAMsyE,kBAAkBvwF,GAAO,CAACiqF,EAAQrgB,MAAO3rD,EAAMsyE,kBAAkBvwF,IAAQ,CAACiqF,EAAQrgB,IACtG3rD,EAAMsyE,kBAAkBvwF,GAAOywF,CAAK,GACpC,ICfN,IACEttE,cAAe4tE,EACfjkB,SAAUkkB,EACVnqF,QAASoqF,EAAAA,GACTlsB,OAAQmsB,EACRlgC,OAAQmgC,EACR7D,KAAM8D,EACNC,UAAWC,EACXC,cAAeC,EACfC,SAAUC,EACVC,IAAKC,EACL7pB,KAAM8pB,EACN/oD,KAAMgpD,EACNp9E,KAAMq9E,EACN1tC,WAAY2tC,EACZxnB,aAAcynB,EAAAA,GAEdC,YAAaC,GACbC,gBAAiBC,EACjBC,WAAYC,GACZjgC,KAAMC,GACN5hD,IAAK6hF,GCsBDC,GAAoB,CACxBzyF,IAAK,UAPsB,CAC3BurD,QAAO,IACPmnC,gBAAiBC,EAAAA,EACjB3pC,QAAS,GAMT4pC,UAAW,CACT,QACA,UACA,SACA,UACA,WACA,OACA,gBACA,WACA,OACA,OACA,kBACA,aACA,OAEFC,QAAU50E,IAAgB,IAAD60E,EAAAC,EAAAC,EACvB,IAAIh5D,EAAW,CAAC,EAsBhB,OAnBEA,GADgC,KAAzB,OAAL/b,QAAK,IAALA,GAAe,QAAV60E,EAAL70E,EAAOg1E,gBAAQ,IAAAH,OAAV,EAALA,EAAiB9pC,SACR,IAAW,OAAL/qC,QAAK,IAALA,EAAAA,EAAS,CAAC,EAAI8pD,KAAM,CAAC,GAE3B,IAAW,OAAL9pD,QAAK,IAALA,EAAAA,EAAS,CAAC,GAK3B+b,EAD+B,KAAxB,OAAL/b,QAAK,IAALA,GAAe,QAAV80E,EAAL90E,EAAOg1E,gBAAQ,IAAAF,OAAV,EAALA,EAAiB/pC,SACR,IAAW,OAAL/qC,QAAK,IAALA,EAAAA,EAAS,CAAC,EAAIomC,WAAY,CAAC,GAEjC,IAAW,OAALpmC,QAAK,IAALA,EAAAA,EAAS,CAAC,GAK3B+b,EAD+B,KAAxB,OAAL/b,QAAK,IAALA,GAAe,QAAV+0E,EAAL/0E,EAAOg1E,gBAAQ,IAAAD,OAAV,EAALA,EAAiBhqC,SACR,IAAW,OAAL/qC,QAAK,IAALA,EAAAA,EAAS,CAAC,EAAIomC,WAAY,CAAC,GAEjC,IAAW,OAALpmC,QAAK,IAALA,EAAAA,EAAS,CAAC,GAGtB7f,QAAQC,QAAQ27B,EAAS,EAElCgvB,QAAS,GAGLkqC,GAAuB,CAC3BlzF,IAAK,UACLurD,QAAS4nC,EAAAA,EACTT,gBAAiBC,EAAAA,EACjB3pC,QAAS,GAGLoqC,IAAcC,EAAAA,EAAAA,IAAgB,IAC/BC,GACH5N,SAAS6N,EAAAA,EAAAA,IAAwCL,GAAsBM,KAInEC,IAAiBF,EAAAA,EAAAA,IAAoCd,GAAmBW,IAExEjvC,IAAQuvC,EAAAA,EAAAA,IAAe,CAC3BC,QAASF,GACTG,WAAaC,GAAyBA,EAAqB,CAAEC,OAAO,EAAMC,mBAAmB,MAGlF9R,IAAY+R,EAAAA,EAAAA,IAAa7vC,IAKtC,K,iFCzIO,MAAM0M,GAAcu0B,EAAAA,EAAAA,IAAmB,gBACjCjnE,GAAeinE,EAAAA,EAAAA,IAAmB,iBAU/C,GAAeyE,EAAAA,EAAAA,IAJoB,CACjCj+E,MAAM,IAGoCm+E,IAC1CA,EACGC,QAAQn5B,GAAc5yC,IACrBA,EAAMrS,MAAO,CAAI,IAElBo+E,QAAQ7rE,GAAeF,IACtBA,EAAMrS,MAAO,CAAK,GAClB,G,2FCjBC,MAAM0jF,GAA8BlK,EAAAA,EAAAA,IAAuB,mCAErDmK,GAA8BnK,EAAAA,EAAAA,IAAqB,mCAEnDoK,GAAYpK,EAAAA,EAAAA,IAA8D,iBAE1EqK,GAAYrK,EAAAA,EAAAA,IAAqC,gB,gDCPvD,MAAMc,GAAmBd,E,SAAAA,IAAsB,2B,uECA/C,MAAMgF,GAAehF,EAAAA,EAAAA,IAAqC,yBACpDvrD,GAAgBurD,EAAAA,EAAAA,IAAmB,yB,gDCAzC,MAAM+K,GAAyB/K,E,SAAAA,IAA8B,gC,wGCG7D,SAAS/0C,IACd,OAAOryB,EAAAA,EAAAA,KAAgBC,GAAoBA,EAAMtN,IAAIjE,kBACvD,CAEO,SAASC,IACd,MAAMiR,GAAWC,EAAAA,EAAAA,MACXo2E,EAAgB5jD,KACfxpC,EAASyL,IAAcjG,EAAAA,EAAAA,WAAS,GAevC,OAbA1E,EAAAA,EAAAA,YAAU,MACR6K,iBACE,GAAIyhF,EAAcxlF,OAAS,GAAK5H,EAAS,OAEzCyL,GAAW,GACX,MAAM42B,QAAagrD,EAAAA,EAAAA,MACnBt2E,GAASuyE,EAAAA,EAAAA,GAAuBjnD,IAChC52B,GAAW,EACb,CAEAw2B,EAAM,GACL,CAAClrB,KAEGnX,EAAAA,EAAAA,UAAQ,MAASI,UAASH,OAAQutF,KAAkB,CAACptF,EAASotF,GACvE,C,6GC1BO,MAAMjE,GAAoB5K,EAAAA,EAAAA,IAAuD,2BAE3Ex5E,GAAOw5E,EAAAA,EAAAA,IAAiC,cAExClwD,GAAQkwD,EAAAA,EAAAA,IAAiC,eAEzC6K,GAAY7K,EAAAA,EAAAA,IAAmB,mBAE/B2K,GAAW3K,EAAAA,EAAAA,IAAmB,kBAE9B8K,GAAa9K,EAAAA,EAAAA,IAAyC,mB,gKCN5D,SAAS+O,EAAen0F,GAC7B,OAAOmkD,EAAAA,EAAMC,WAAW1vC,KAAKm7E,MAAM7vF,EACrC,CAcO,SAASwc,IACd,MAAMoB,GAAWC,EAAAA,EAAAA,MAEXu2E,GAAWlpF,EAAAA,EAAAA,cACdlL,IACC4d,GAAShS,EAAAA,EAAAA,IAAK5L,GAAK,GAErB,CAAC4d,IAGGy2E,GAAYnpF,EAAAA,EAAAA,cACflL,IACC4d,GAASsX,EAAAA,EAAAA,IAAMl1B,GAAK,GAEtB,CAAC4d,IAGH,OAAOnX,EAAAA,EAAAA,UACL,MACEmF,KAAMwoF,EACNl/D,MAAOm/D,KAET,CAACD,EAAUC,GAEf,CAEO,SAAS5+C,IACd,MAAM73B,GAAWC,EAAAA,EAAAA,MAEjB,OAAO3S,EAAAA,EAAAA,cAAY,KACjB0S,GAASmyE,EAAAA,EAAAA,MAAW,GACnB,CAACnyE,GACN,CAEO,SAAS02E,IACd,MAAM12E,GAAWC,EAAAA,EAAAA,OACX,MAAEqX,GAAU1Y,IAElB,OAAOtR,EAAAA,EAAAA,cACL,CAAClL,EAAa0U,KAAuB,IAAD6/E,EAAAC,EAClC,MAAMC,EAA8B,QAAtBF,EAAGJ,EAAen0F,UAAI,IAAAu0F,EAAAA,EAAI,CAAC,EAEzC32E,GACEoyE,EAAAA,EAAAA,IAAkB,CAChBhwF,MACA6N,MAAO,IACF6G,EACHuxD,WAA+B,QAArBuuB,EAAEC,EAASxuB,kBAAU,IAAAuuB,EAAAA,EAAI,EACnCtkC,UAAWukC,EAASvkC,UACpBpkD,QAASA,IAAMopB,EAAMl1B,MAG1B,GAEH,CAAC4d,EAAUsX,GAEf,CAEO,SAAS06B,IACd,MAAMhyC,GAAWC,EAAAA,EAAAA,MAEjB,OAAO3S,EAAAA,EAAAA,cACL,CAAClL,EAAaimE,EAAoB/V,KAAmC,IAADwkC,EAClE,MAAMD,EAA8B,QAAtBC,EAAGP,EAAen0F,UAAI,IAAA00F,EAAAA,EAAI,CAAC,EAEzC92E,GAASoyE,EAAAA,EAAAA,IAAkB,CAAEhwF,MAAK6N,MAAO,IAAK4mF,EAAUxuB,aAAY/V,eAAe,GAErF,CAACtyC,GAEL,CAEO,SAASypD,IACd,OAAOrpD,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMvJ,KAAKo7E,QAC9C,CAEO,SAAS5oB,EAAelnE,GAC7B,OAAOge,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMvJ,KAAKm7E,MAAM7vF,IACpD,CAMO,SAAS20F,EAAe30F,GAC7B,OAAOmkD,EAAAA,EAAMC,WAAW1vC,KAAKw0B,KAAKlpC,EACpC,CAEO,SAAS40F,IACd,MAAMh3E,GAAWC,EAAAA,EAAAA,MAEjB,OAAO3S,EAAAA,EAAAA,cACL,CAAClL,EAAakpC,KACZtrB,GAASsyE,EAAAA,EAAAA,IAAW,CAAElwF,MAAKkpC,SAAQ,GAErC,CAACtrB,GAEL,C,qHCpHO,MAAMquE,GAAiB7G,EAAAA,EAAAA,IAC5B,uBAGW+G,GAAmB/G,EAAAA,EAAAA,IAAmB,yBAEtC2G,GAAY3G,EAAAA,EAAAA,IAAwD,kBAEpEgH,GAAiBhH,EAAAA,EAAAA,IAAmB,uBAIpCiH,GAAwBjH,EAAAA,EAAAA,IAAiC,mCAEzDkH,GAAsBlH,EAAAA,EAAAA,IAAyD,4BAE/EmH,GAAgCnH,EAAAA,EAAAA,IAI1C,qC,uECfI,MAAM8J,GAAmB9J,EAAAA,EAAAA,IAAsC,6BAEzD+J,GAAiB/J,EAAAA,EAAAA,IAAmB,0B,mKCR1C,MAAM0I,GAAuB1I,EAAAA,EAAAA,IAAsB,kCAE7C4I,GAAsB5I,EAAAA,EAAAA,IAAsB,iCAE5C2I,GAA0B3I,EAAAA,EAAAA,IAAuB,qCAEjD8I,GAAqB9I,EAAAA,EAAAA,IAA8C,gCAEnE6I,GAAiC7I,EAAAA,EAAAA,IAAqB,4CAEtDl+E,GAAqBk+E,EAAAA,EAAAA,IAAuB,+BAE5C+I,GAAqB/I,EAAAA,EAAAA,IAAuB,gCAE5CkJ,GAA2BlJ,EAAAA,EAAAA,IAAsB,sCAEjDoJ,GAA0BpJ,EAAAA,EAAAA,IAAuB,qCAEjDuJ,GAA4BvJ,EAAAA,EAAAA,IAAqB,uCAEjDyJ,GAA2BzJ,EAAAA,EAAAA,IAAsB,mCAEjD2J,GAAyB3J,EAAAA,EAAAA,IAAsB,mC,wNCCrD,SAAS3nC,IACd,OAAOz/B,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMozE,UAAUlE,eACnD,CAUO,SAAS0H,IACd,MAAMj3E,GAAWC,EAAAA,EAAAA,MACXi3E,GAjBC92E,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMozE,UAAUnE,iBAmB3C6H,GAAsB7pF,EAAAA,EAAAA,cAAY,KACtC0S,GAASkwE,EAAAA,EAAAA,KAAsBgH,GAAY,GAC1C,CAACl3E,EAAUk3E,IAEd,MAAO,CAACA,EAAYC,EACtB,CAiBO,SAAStqD,IACd,MAAM7sB,GAAWC,EAAAA,EAAAA,MACX2sB,GAAkBxsB,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMozE,UAAU7mD,kBAE5DwqD,GAAwB9pF,EAAAA,EAAAA,cAC3Bs/B,IACC5sB,GAAS+wE,EAAAA,EAAAA,IAA0BnkD,GAAiB,GAEtD,CAAC5sB,EAAU4sB,IAGb,OAAO/jC,EAAAA,EAAAA,UAAQ,MAAS+jC,kBAAiBwqD,2BAA0B,CAACA,EAAuBxqD,GAC7F,CAeO,SAASyqD,EAAmB90E,GACjC,MAAMvC,GAAWC,EAAAA,EAAAA,MAUjB,MAAO,EAvEAG,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMozE,UAAUhE,eA8DVltE,IAEfjV,EAAAA,EAAAA,cACrB2C,IACC+P,GAASswE,EAAAA,EAAAA,IAAmB,CAAE/tE,OAAMtS,UAAS,GAE/C,CAAC+P,IAIL,CAEO,SAASs3E,EAA8B/0E,GAC5C,MAAOm6B,GAAqB26C,EAAmB90E,GAE/C,OAAO1Z,EAAAA,EAAAA,UAAQ,KACb,GAAI6zC,GAA2C,IAAtBA,EACvB,OAAOtW,EAAAA,EAAAA,IAAkBsW,GAG3B,IAAI66C,EAAkC,KAEtC,IACEA,GAAkBnxD,EAAAA,EAAAA,KAAkBF,EAAAA,EAAAA,IAA4B3jB,GAClE,CAAE,MACAg1E,GAAkBnxD,EAAAA,EAAAA,KAAkBF,EAAAA,EAAAA,IAA4B3jB,GAClE,CAEA,OAAOg1E,CAAe,GACrB,CAAC76C,EAAmBtW,EAAAA,IACzB,CAyCO,SAASoxD,IACd,MAAM1H,GAAqB1vE,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMozE,UAAU3D,qBAC/D9vE,GAAWC,EAAAA,EAAAA,MAEXqsB,GAASh/B,EAAAA,EAAAA,cACZmqF,IACCz3E,GAAS0wE,EAAAA,EAAAA,IAAyB+G,GAAM,GAE1C,CAACz3E,IAGH,OAAOnX,EAAAA,EAAAA,UAAQ,IAAM,CAACinF,EAAoBxjD,IAAS,CAACwjD,EAAoBxjD,GAC1E,CAEO,SAASorD,IACd,OAAOt3E,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMozE,UAAU1D,mBACnD,CAEO,SAAShuE,IACd,MAAM/B,GAAWC,EAAAA,EAAAA,MAEjB,OAAO3S,EAAAA,EAAAA,cACJqqF,IACC33E,GAAS4wE,EAAAA,EAAAA,IAAwB+G,GAAS,GAE5C,CAAC33E,GAEL,CAEO,SAAS43E,IACd,MAAMvqD,GAAU47C,EAAAA,EAAAA,MACV4O,EAAyBH,IACzBI,EAA+B/1E,KAE9Bg2E,EAAgBC,IAAqBvpF,EAAAA,EAAAA,WAAS,IAE7C3F,OAAQmvF,EAAa,QAAEhvF,IAAYivF,EAAAA,EAAAA,IAAqB7qD,GAYhE,OAVAtjC,EAAAA,EAAAA,YAAU,KACR,GAAIkuF,EAAe,CACjB,MAAMnH,EAAa,IAAI,IAAI3hF,IAAI,IAAI0oF,KAA2BI,KAC9DH,EAA6BhH,GAC7BkH,GAAkB,EACpB,MAAuB,IAAZ/uF,GACT+uF,GAAkB,EACpB,GACC,CAACj6E,KAAKC,UAAU65E,GAAyBI,EAAeH,EAA8B7uF,IAElF,CACLA,QAAS8uF,EAEb,CAMO,SAASI,IACd,MAAMn4E,GAAWC,EAAAA,EAAAA,MACX+vE,GALC5vE,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMozE,UAAUzD,qBAO3CvjE,GAAWnf,EAAAA,EAAAA,cACd8qF,IACCp4E,GAASixE,EAAAA,EAAAA,IAAyBmH,GAAa,GAEjD,CAACp4E,IAGH,OAAOnX,EAAAA,EAAAA,UAAQ,IAAM,CAACmnF,EAAoBvjE,IAAW,CAACujE,EAAoBvjE,GAC5E,CAEO,SAAS4rE,IACd,OAAOj4E,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMozE,UAAUxD,kBACnD,CAEO,SAASqI,IACd,MAAMt4E,GAAWC,EAAAA,EAAAA,MACXgwE,EAAmBoI,IAEnB5rE,GAAWnf,EAAAA,EAAAA,cACd2iF,IACCjwE,GAASmxE,EAAAA,EAAAA,IAAuBlB,GAAkB,GAEpD,CAACjwE,IAGH,OAAOnX,EAAAA,EAAAA,UAAQ,IAAM,CAAConF,EAAkBxjE,IAAW,CAACwjE,EAAkBxjE,GACxE,C,oYC5NO,SAAS8rE,IACd,MAAMv4E,GAAWC,EAAAA,EAAAA,MAEXu4E,GAAsBlrF,EAAAA,EAAAA,cAC1B,CAAC8gF,EAAmBP,KAClB7tE,GACEquE,EAAAA,EAAAA,IAAe,CACbD,QACAP,eAEH,GAEH,CAAC7tE,IAGGy4E,GAAiBnrF,EAAAA,EAAAA,cAAY,KACjC0S,GAASuuE,EAAAA,EAAAA,MAAmB,GAC3B,CAACvuE,KAEG,CAAE04E,IAAyBvoF,EAAAA,EAAAA,QAA+BzG,EAAW+uF,EAAgB,KAS5F,MAAO,CACLD,sBACAC,eAAgBC,EAChBC,aAVkBrrF,EAAAA,EAAAA,cAClB,CAAC8gF,EAAmBpuC,KAClBhgC,GAASmuE,EAAAA,EAAAA,IAAU,CAAEC,QAAOpuC,eAAc,GAE5C,CAAChgC,IAQL,CAEO,SAAS44E,IACd,OAAOx4E,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMqvE,MACzC,CAEO,SAASmJ,IACd,MAAM74E,GAAWC,EAAAA,EAAAA,MAEjB,OAAO3S,EAAAA,EAAAA,cAAY,IAAM0S,GAASwuE,EAAAA,EAAAA,QAAmB,CAACxuE,GACxD,CAMO,SAAS84E,EAAWx3F,GAAgC,IAADqM,EAAA2J,EAAAyhF,EAAA,IAA9B,QAAE/sD,GAA0B1qC,EACtD,MAAMgH,GAAYC,EAAAA,EAAAA,MACZywF,GAAwB1B,EAAAA,EAAAA,GAA8B,QAEtDrtC,GAAMphD,EAAAA,EAAAA,UAAQ,IACXP,EAAYmjC,EAAAA,GAAWC,cAAcpjC,GAAWqjC,oBAAiBjiC,GACvE,CAACpB,KAEE,iBACJylF,EAAgB,WAChB/tC,EACA,CAACxY,EAAAA,GAAWomD,QAAUC,WAAYoL,GAClC,CAACzxD,EAAAA,GAAWsmD,SAAWD,WAAYqL,IACjCN,KAEGO,EAAoBC,IAActjF,EAAAA,EAAAA,IAASmjF,IAC3CI,EAAqB55C,IAAe3pC,EAAAA,EAAAA,IAASojF,GAE9CI,EAAYvL,IAAqBvmD,EAAAA,GAAWomD,OAE1C9kF,OAAQywF,IAAyB5uC,EAAAA,EAAAA,IAAmBriD,EAAW8wF,EAAYptD,IAC3EljC,OAAQ0wF,IAA0B7uC,EAAAA,EAAAA,IAAmBriD,EAAWm3C,EAAazT,GAE/EytD,EAAmB,CACvB,CAACjyD,EAAAA,GAAWomD,OAAQ2L,EACpB,CAAC/xD,EAAAA,GAAWsmD,QAAS0L,GAGjBE,GAAel4C,EAAAA,EAAAA,IAAexB,EAAiD,QAAvCryC,EAAG2rF,EAAYF,EAAa35C,SAAW,IAAA9xC,EAAAA,OAAKjE,GAEpFiwF,EAAa,CACjB,CAACnyD,EAAAA,GAAWomD,OAAkB,OAAVwL,QAAU,IAAVA,EAAAA,OAAc1vF,EAClC,CAAC89B,EAAAA,GAAWsmD,QAAoB,OAAXruC,QAAW,IAAXA,EAAAA,OAAe/1C,GAGhCkwF,EAAqD,QAAxCtiF,EAAIgiF,EAAY75C,EAAc25C,SAAU,IAAA9hF,EAAAA,OAAK5N,GAEzDmwF,GC7GM,SAAwB5pF,EAAU6e,GAC/C,MAAOgrE,EAAgBC,IAAqBtrF,EAAAA,EAAAA,UAAYwB,GAgBxD,OAdAlG,EAAAA,EAAAA,YAAU,KAER,MAAM4iB,EAAUG,YAAW,KACzBitE,EAAkB9pF,EAAM,GACvB6e,GAKH,MAAO,KACLuD,aAAa1F,EAAQ,CACtB,GACA,CAAC1c,EAAO6e,IAEJgrE,CACT,CD2FgCE,EAC5BnxF,EAAAA,EAAAA,UAAQ,IAAM,CAACm3C,EAAY45C,IAAgB,CAAC55C,EAAY45C,IACxD,KAGI1/C,GAAQ6F,EAAAA,EAAAA,GACZq5C,EACA35C,EACCO,GAA6B,MAAfA,GAAsB65C,IAAwB75C,EAAyB65C,OAAZnwF,GAGtE0S,GAASvT,EAAAA,EAAAA,UAAQ,IAAW,OAALqxC,QAAK,IAALA,OAAK,EAALA,EAAOkG,aAAa,CAAClG,KAI1CpxC,OAAQmxF,IAA2B/wF,EAAAA,EAAAA,GAAgB,CACzD3G,WAAsB,OAAV62F,QAAU,IAAVA,OAAU,EAAVA,EAAY13F,QACxBA,QAAS0a,EACT6tC,MACAje,aAEMljC,OAAQoxF,IAA4BhxF,EAAAA,EAAAA,GAAgB,CAC1D3G,WAAuB,OAAXk9C,QAAW,IAAXA,OAAW,EAAXA,EAAa/9C,QACzBA,QAAS0a,EACT6tC,MACAje,YAGImuD,GAAuBtxF,EAAAA,EAAAA,UAAQ,KACnC,GAAKP,EACL,OAAO2xF,CAAsB,GAC5B,CAACA,EAAwB3xF,IAEtB8xF,GAAwBvxF,EAAAA,EAAAA,UAAQ,KACpC,GAAKP,EACL,OAAO4xF,CAAuB,GAC7B,CAACA,KAEIpxF,OAAQsoC,IAAkBipD,EAAAA,EAAAA,IAAqBj+E,EAAQ9T,EAAW0jC,IACpE,wBAAEsuD,EAAuB,yBAAEC,IAA6B1xF,EAAAA,EAAAA,UAAQ,KACpE,IAAKuT,IAAWg1B,IAAkBgoD,EAAY,MAAO,CAAC,EAEtD,MAAMtuD,EAAOoP,EAAM6B,OAAO,GAAG7R,MAAM,GAEnC,MAAO,CACLowD,wBACExvD,EAAK7oC,OAAOP,UAAY03F,EAAW13F,QAAU0vC,EAAc+R,SAAW/R,EAAcgS,SACtFm3C,yBACEzvD,EAAK7oC,OAAOP,UAAY03F,EAAW13F,QAAU0vC,EAAcgS,SAAWhS,EAAc+R,SACvF,GACA,CAACjJ,EAAOk/C,EAAYhoD,IAEjBopD,GAAmB3xF,EAAAA,EAAAA,UAAQ,KAC/B,GAAKuwF,EAEL,OAAO7nD,EAAAA,EAAAA,IAAc6nD,QAAc1vF,EAAY0vF,EAAW13F,OAAO,GAChE,CAAC03F,KAEItwF,OAAQkkC,IAAcoI,EAAAA,EAAAA,IAAa,CACzC7yC,WAAYi4F,EACZvtD,MAAgB,OAAT3kC,QAAS,IAATA,OAAS,EAATA,EAAWwB,WAClBojC,QAAS9wB,IAGLg2B,GAAoBlB,EAAAA,EAAAA,IAAqB,CAC7C/jC,MAAOisF,EACPjoD,kBAAmBgpD,EACnBh3F,SAASkuC,EAAAA,EAAAA,GAAsC,OAApBkoD,QAAoB,IAApBA,OAAoB,EAApBA,EAAsBzqD,UAAqB,OAAVsqD,QAAU,IAAVA,OAAU,EAAVA,EAAYvvF,UACxEwnC,mBAAmBA,EAAAA,EAAAA,GAAkB2O,EAAsB,OAAVo5C,QAAU,IAAVA,OAAU,EAAVA,EAAYvvF,UAAUC,WACvEsnC,cAAekpD,EACfttD,cAGIytD,IAAiBnlD,EAAAA,EAAAA,IAAsB,CAC3CnoC,MAAOisF,EACPj2F,SAASkuC,EAAAA,EAAAA,GAAsC,OAApBkoD,QAAoB,IAApBA,OAAoB,EAApBA,EAAsBzqD,UAAqB,OAAVsqD,QAAU,IAAVA,OAAU,EAAVA,EAAYvvF,UAAUC,WAClFsS,OAAa,OAAL89B,QAAK,IAALA,OAAK,EAALA,EAAOkG,YACf1L,WAAYylD,EACZ/oD,cAAekpD,EACfttD,cAGI0tD,IAAa7xF,EAAAA,EAAAA,UAAQ,IACpB8wF,EAAWnyD,EAAAA,GAAWomD,QAAW+L,EAAWnyD,EAAAA,GAAWsmD,QACvD4L,EACA15C,GAA6B,MAAfA,GACdm6C,IAAwBrlF,EAAAA,EAAAA,GAAWwlF,GAA0BrpF,EAAAA,GAAAC,EAAO,CAAAnQ,GAAA,YACpC,KAAjC45F,EAAAA,EAAAA,IAAiB36C,GAAuB/uC,EAAAA,GAAAC,EAAO,CAAAnQ,GAAA,WACpB,mBAApBm5C,EAAM92C,WAA4B82C,EAAM92C,UACzB,iBAAtBgvC,EAA4C,gBAANtnC,OAAiC,OAAVsuF,QAAU,IAAVA,OAAU,EAAVA,EAAYhvF,OAAM,YAE5E,KAHuD6G,EAAAA,GAAAC,EAAO,CAAAnQ,GAAA,WAH9BkQ,EAAAA,GAAAC,EAAO,CAAAnQ,GAAA,WAD3BkQ,EAAAA,GAAAC,EAAO,CAAAnQ,GAAA,WAD2CkQ,EAAAA,GAAAC,EAAO,CAAAnQ,GAAA,YAS3E,CAACi/C,EAAY05C,EAAcC,EAAYQ,EAAsBG,EAAyBpgD,EAAO9H,IAEhG,MAAO,CACLunD,aACAe,cACAhB,eACAr4C,MAAY,OAALnH,QAAK,IAALA,OAAK,EAALA,EAAOmH,MACdhhC,MAAmB,QAAd04E,EAAO,OAAL7+C,QAAK,IAALA,OAAK,EAALA,EAAO75B,aAAK,IAAA04E,EAAAA,EAAIj5C,EAAAA,EAAWnJ,QAClCvzC,UAAgB,OAAL82C,QAAK,IAALA,OAAK,EAALA,EAAO92C,UAClBg9C,YAAkB,OAALlG,QAAK,IAALA,OAAK,EAALA,EAAOkG,YACpBrE,OAAa,OAAL7B,QAAK,IAALA,OAAK,EAALA,EAAO6B,OACfiD,YAAkB,OAAL9E,QAAK,IAALA,OAAK,EAALA,EAAO8E,YACpBy6C,mBACAT,wBACAI,aACA35C,cACA05C,qBACAE,sBACAiB,0BACAC,2BACAJ,uBACAC,wBACAQ,mBAAmBvpD,EAAAA,EAAAA,GAAsC,OAApBkoD,QAAoB,IAApBA,OAAoB,EAApBA,EAAsBzqD,UAA+B,OAApByqD,QAAoB,IAApBA,OAAoB,EAApBA,EAAsB9jD,SAAS5rC,UACrGgxF,oBAAoBxpD,EAAAA,EAAAA,GAAuC,OAArBmoD,QAAqB,IAArBA,OAAqB,EAArBA,EAAuB1qD,UAAgC,OAArB0qD,QAAqB,IAArBA,OAAqB,EAArBA,EAAuB/jD,SAAS5rC,UACxG4wF,kBAEJ,CAEO,SAASK,IACd,MAAM96E,GAAWC,EAAAA,EAAAA,OAEX,MAAEgD,EAAK,OAAEw1B,IAAWsiD,EAAAA,EAAAA,MAE1BhxF,EAAAA,EAAAA,YAAU,UACML,IAAVuZ,IAAuB9Y,EAAAA,EAAAA,GAAiB8Y,IAC1CjD,GACEquE,EAAAA,EAAAA,IAAe,CACbD,MAAO5mD,EAAAA,GAAWomD,MAClBC,WAAY5qE,UAKHvZ,IAAX+uC,IAAwBtuC,EAAAA,EAAAA,GAAiBsuC,IAC3Cz4B,GACEquE,EAAAA,EAAAA,IAAe,CACbD,MAAO5mD,EAAAA,GAAWsmD,OAClBD,WAAYp1C,IAGlB,GACC,CAACx1B,EAAOw1B,EAAQz4B,GACrB,CAEO,SAAS0zB,EACdtxC,GAEA,MAAM4d,GAAWC,EAAAA,EAAAA,MAEX03E,GAAUv3E,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMqvE,KAAK1B,kBAC/C5xE,EAAUha,EAAkBu1F,EAAQv1F,QAApBsH,EAEhB+pC,GAAuBnmC,EAAAA,EAAAA,cAC3BwK,IAAsC,IAArC,IAAE1V,EAAG,GAAErB,GAAwB+W,EAC9BkI,GAASyuE,EAAAA,EAAAA,IAAsB,CAAErsF,MAAKrB,OAAM,GAE9C,CAACif,IAGH,OAAOnX,EAAAA,EAAAA,UAAQ,IAAM,CAACuT,EAAQq3B,IAAuB,CAACr3B,EAAQq3B,GAChE,CAMO,SAASunD,EAAiB54F,GAC/B,OAAOmkD,EAAAA,EAAMC,WAAWkpC,KAAKzB,cAAc7rF,EAC7C,CAEO,SAAS64F,IACd,MAAMj7E,GAAWC,EAAAA,EAAAA,MAEjB,OAAO3S,EAAAA,EAAAA,cACL,CAAClL,EAAa0qC,KACZ9sB,GAAS0uE,EAAAA,EAAAA,IAAoB,CAAEtsF,MAAK6N,MAAO68B,IAAU,GAEvD,CAAC9sB,GAEL,CAEO,SAASk7E,EAA2B94F,GACzC,OAAOmkD,EAAAA,EAAMC,WAAWkpC,KAAKxB,wBAAwB9rF,EACvD,CAEO,SAAS+4F,IACd,MAAMn7E,GAAWC,EAAAA,EAAAA,MAEjB,OAAO3S,EAAAA,EAAAA,cACL,CAAClL,EAAaysC,EAA6BG,KACzChvB,GAAS2uE,EAAAA,EAAAA,IAA8B,CAAEvsF,MAAKysC,UAASG,YAAW,GAEpE,CAAChvB,GAEL,C,6GErTO,MAAMgvE,GAAcxH,EAAAA,EAAAA,IAAmD,6BAEjE0H,GAAkB1H,EAAAA,EAAAA,IAAqB,iCAEvC2H,GAAmB3H,EAAAA,EAAAA,IAAqB,kCAExC4H,GAAmB5H,EAAAA,EAAAA,IAAqB,kCAExCyH,GAAkBzH,EAAAA,EAAAA,IAAmB,iCAErC6H,GAAiB7H,EAAAA,EAAAA,IAAmB,+B,uECL1C,MAAM8J,GAAmB9J,EAAAA,EAAAA,IAAsC,+BAEzD+J,GAAiB/J,EAAAA,EAAAA,IAAmB,4B,gDCR1C,MAAM8I,GAAqB9I,E,SAAAA,IAA8C,iC,sHCEzE,MAAMiL,GAAsBjL,EAAAA,EAAAA,IAA2C,uCAEjEwH,GAAcxH,EAAAA,EAAAA,IAAmD,+BAEjE0H,GAAkB1H,EAAAA,EAAAA,IAAqB,mCAEvC2H,GAAmB3H,EAAAA,EAAAA,IAAqB,oCAExC4H,GAAmB5H,EAAAA,EAAAA,IAAqB,oCAExCyH,GAAkBzH,EAAAA,EAAAA,IAAmB,mCAErC6H,GAAiB7H,EAAAA,EAAAA,IAAmB,iC,uECb1C,MAAMuK,GACXvK,EAAAA,EAAAA,IAAiE,6BAEtDwK,GAAoBxK,EAAAA,EAAAA,IAAuB,0B,oJCOjD,SAASjzE,IACd,MAAMyL,GAAWC,EAAAA,EAAAA,MAEjB,OAAO3S,EAAAA,EAAAA,cACJg5C,IACC,MAAM80C,EAAc90C,EAAUnmD,KAAImB,IAA+B,IAA9B,SAAEM,EAAQ,WAAEW,GAAYjB,EAEzD,OAAIiB,IAAeqK,EAAAA,GAAIlL,SAMN,gCAAfa,GACe,gCAAfA,GACe,gCAAfA,EAPO,CAAEA,aAAYX,SAAU88B,EAAAA,GAAeM,OAY7B,gCAAfz8B,EACK,CAAEA,aAAYX,SAAU88B,EAAAA,GAAeK,OAGzC,CAAEx8B,aAAYX,WAAU,IAGjCoe,GAAS+xE,EAAAA,EAAAA,GAAqBqJ,KAC9BrmF,EAAAA,EAAAA,IAAeqmF,EAAY,GAE7B,CAACp7E,GAEL,CAYO,SAASnL,EAAiBtS,GAC/B,MACEkkD,YAAY,UAAEH,IACZC,EAAAA,EAAMC,WAEV,GAAIjkD,EACF,OAAO+jD,EAAU/jD,EAErB,CAEO,SAASw9E,IACd,OAAO3/D,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMomC,WAAWH,WACpD,C,4JCtDO,SAAS+0C,IAKd,MAAM,QAAE/mC,EAAO,QAAEjnB,IAAYknB,EAAAA,EAAAA,gBACvBv0C,GAAWC,EAAAA,EAAAA,MAEjB,OAAO3S,EAAAA,EAAAA,cACL,CAACguD,EAA+B9xC,EAAuByiD,KACrD,IAAK5+B,EAAS,OACd,IAAKinB,EAAS,OAEd,MAAM,KAAEkX,EAAI,MAAE8vB,GAAUhgC,EACxB,IAAKkQ,EACH,MAAM5qE,MAAM,8BAEdof,GAASu7E,EAAAA,EAAAA,IAAe,CAAE/vB,OAAMj3B,KAAMlH,EAAS7jB,OAAM8qC,UAASgnC,QAAOrvB,aAAY,GAEnF,CAAC5+B,EAASinB,EAASt0C,GAEvB,CAEO,SAASqrD,IACd,MAAM,QAAE/W,EAAO,QAAEjnB,IAAYknB,EAAAA,EAAAA,gBACvBv0C,GAAWC,EAAAA,EAAAA,MAEjB,OAAO3S,EAAAA,EAAAA,cACJk+D,IACMn+B,GACAinB,GAELt0C,GAASorD,EAAAA,EAAAA,IAAkB,CAAEI,OAAMlX,YAAW,GAEhD,CAACjnB,EAASinB,EAASt0C,GAEvB,CAqBA,SAASw7E,IAAgE,IAADC,EACtE,MAAM,QAAEnnC,IAAYC,EAAAA,EAAAA,gBAEdl0C,GAAQD,EAAAA,EAAAA,KAAgBC,GAAUA,EAAMusD,eAE9C,OAAOtY,GAAwB,QAAjBmnC,EAAGp7E,EAAMi0C,UAAQ,IAAAmnC,EAAAA,EAAS,CAAC,CAC3C,CAYO,SAAS5uB,EAAYb,GAC1B,OAAQA,EAAGD,UAAYC,EAAG0vB,SAC5B,CAsBA,SAASC,EAAoB3vB,GAC3B,OAAO,IAAIlxC,MAAOC,UAAYixC,EAAGE,UAAY,KAC/C,CAEA,SAAS0vB,EAAyBzuF,EAA0B+/B,GAC1D,MAAM2uD,EAAkBL,IACxB,OAAO3yF,EAAAA,EAAAA,UAAQ,KACb,GAA8B,kBAAd,OAALsE,QAAK,IAALA,OAAK,EAALA,EAAOzL,UAA2C,kBAAZwrC,EAGjD,IAAK,MAAM4uD,KAAUD,EAAiB,CACpC,MAAM7vB,EAAK6vB,EAAgBC,GAC3B,GAAK9vB,IAAMA,EAAGD,SAAWC,EAAGxiD,KAAKjH,OAASw5E,EAAAA,EAAgBC,WACtDhwB,EAAGxiD,KAAK0jB,UAAYA,GAAW8+B,EAAGxiD,KAAK87B,eAAiBn4C,EAAMzL,SAAWi6F,EAAoB3vB,IAC/F,OAAO5/D,EAAAA,GAAUmoC,KAAKy3B,EAAGxiD,KAAKsjB,OAElC,CACgB,GACf,CAAC+uD,EAAiB3uD,EAAc,OAAL//B,QAAK,IAALA,OAAK,EAALA,EAAOzL,SACvC,CAGO,SAASu6F,EAAsB9uF,EAA2B+/B,GAAmC,IAADgvD,EAAAC,EACjG,OAAsD,QAAtDD,EAA+C,QAA/CC,EAAOP,EAAyBzuF,EAAO+/B,UAAQ,IAAAivD,OAAA,EAAxCA,EAA0CC,GAAG,UAAE,IAAAF,GAAAA,CACxD,C,oFCpHO,MAEDG,GAAmBC,E,SAAAA,IAAY,CACnChyF,KAAM,eACNgiF,aAJkD,CAAC,EAKnDiQ,SAAU,CACRhB,cAAAA,CACE3uB,EAAYtrE,GAEX,IAADk7F,EAAAC,EAAA,IADEpQ,SAAS,QAAE/3B,EAAO,KAAE/f,EAAI,KAAEi3B,EAAI,KAAEhiD,EAAI,MAAE8xE,EAAK,SAAErvB,EAAQ,QAAEF,IAA+CzqE,EAExG,GAAyB,QAAzBk7F,EAAI5vB,EAAatY,UAAQ,IAAAkoC,GAArBA,EAAwBhxB,GAC1B,MAAM5qE,MAAM,0CAEd,MAAM87F,EAA2B,QAAxBD,EAAG7vB,EAAatY,UAAQ,IAAAmoC,EAAAA,EAAI,CAAC,EACtCC,EAAIlxB,GAAQ,CAAEA,OAAMhiD,OAAM+qB,OAAM23B,UAAWpxC,KAAKivC,MAAOuxB,QAAOrvB,WAAUF,WACxEa,EAAatY,GAAWooC,CAC1B,EACAC,oBAAAA,CAAqB/vB,EAAYj/D,GAA6B,IAAzB0+E,SAAS,QAAE/3B,IAAW3mD,EACpDi/D,EAAatY,KAClBsY,EAAatY,GAAW,CAAC,EAC3B,EACA8W,iBAAAA,CAAkBwB,EAAYt1D,GAAmC,IAA/B+0E,SAAS,QAAE/3B,EAAO,KAAEkX,IAAQl0D,EACxDs1D,EAAatY,GAASkX,WACjBoB,EAAatY,GAASkX,EAEjC,EACAsB,kBAAAA,CAAmBF,EAAY90D,GAAgD,IAAD8kF,EAAA,IAA3CvQ,SAAS,QAAE/3B,EAAO,KAAEkX,EAAI,YAAElW,IAAex9C,EAC1E,MAAMk0D,EAA0B,QAAxB4wB,EAAGhwB,EAAatY,UAAQ,IAAAsoC,OAAA,EAArBA,EAAwBpxB,GAC9BQ,IAGAA,EAAGI,uBAGNJ,EAAGI,uBAAyB78C,KAAKoX,IAAI2uB,EAAa0W,EAAGI,wBAFrDJ,EAAGI,uBAAyB9W,EAIhC,EACAyX,mBAAAA,CAAoBH,EAAY9xD,GAA4C,IAAD+hF,EAAA,IAAvCxQ,SAAS,KAAE7gB,EAAI,QAAElX,EAAO,QAAEyX,IAAWjxD,EACvE,MAAMkxD,EAA0B,QAAxB6wB,EAAGjwB,EAAatY,UAAQ,IAAAuoC,OAAA,EAArBA,EAAwBrxB,GAC9BQ,IAGLA,EAAGD,QAAUA,EACbC,EAAG8wB,cAAgBhiE,KAAKivC,MAC1B,EACAgzB,iBAAAA,CAAkBnwB,EAAY3yD,GAA+C,IAAD+iF,EAAA,IAA1C3Q,SAAS,KAAE7gB,EAAI,QAAElX,EAAO,WAAE2oC,IAAchjF,EACxE,MAAM+xD,EAA0B,QAAxBgxB,EAAGpwB,EAAatY,UAAQ,IAAA0oC,OAAA,EAArBA,EAAwBxxB,GAE1B,IAAD0xB,EAAJlxB,IAC0B,QAA5BkxB,EAAOtwB,EAAatY,UAAQ,IAAA4oC,UAArBA,EAAwB1xB,GAC/BoB,EAAatY,GAAS2oC,GAAc,IAC/BjxB,EACHR,KAAMyxB,EACNvB,WAAW,GAGjB,MAIS,eACXH,EAAc,qBACdoB,EAAoB,mBACpB7vB,EAAkB,oBAClBC,EAAmB,kBACnB3B,EAAiB,kBACjB2xB,GACEV,EAAiBc,QAErB,EAAed,EAAwB,O,gDC5EhC,IAAKN,EAAe,SAAfA,GAAe,OAAfA,EAAAA,EAAe,uBAAfA,EAAAA,EAAe,eAAfA,EAAAA,EAAe,yDAAfA,EAAAA,EAAe,2DAAfA,EAAAA,EAAe,iBAAfA,EAAAA,EAAe,eAAfA,EAAAA,EAAe,uBAAfA,EAAAA,EAAe,eAAfA,EAAAA,EAAe,mCAAfA,EAAAA,EAAe,iDAAfA,EAAAA,EAAe,kDAAfA,EAAAA,EAAe,gDAAfA,EAAAA,EAAe,gCAAfA,EAAAA,EAAe,8CAAfA,EAAAA,EAAe,sCAAfA,EAAAA,EAAe,kBAAfA,EAAAA,EAAe,sBAAfA,EAAAA,EAAe,cAAfA,EAAAA,EAAe,gBAAfA,EAAAA,EAAe,sBAAfA,EAAAA,EAAe,gBAAfA,EAAAA,EAAe,gBAAfA,EAAAA,EAAe,oBAAfA,EAAAA,EAAe,kBAAfA,EAAAA,EAAe,oBAAfA,EAAAA,EAAe,oBAAfA,EAAAA,EAAe,kBAAfA,CAAe,K,6GCXpB,MAAMzyF,GAAqBk+E,EAAAA,EAAAA,IAAuB,6BAE5Cj+E,GAAqBi+E,EAAAA,EAAAA,IAAuB,6BAE5C+F,GAAuB/F,EAAAA,EAAAA,IAA6B,+BAEpDgG,GAAoBhG,EAAAA,EAAAA,IAA8B,4BAElDuF,GAAwBvF,EAAAA,EAAAA,IAIlC,gCAEUwF,GAAsBxF,EAAAA,EAAAA,IAMhC,6B,2ICsBI,SAASh+E,IACd,MAAMH,GA1BC+W,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM8mD,OAAO99D,eA4BxCC,EAzBD,WACL,MAAM0W,GAAWC,EAAAA,EAAAA,MAEjB,OAAO3S,EAAAA,EAAAA,cACJqgC,IACC3tB,GAAS1W,EAAAA,EAAAA,IAAmBqkC,GAAQ,GAEtC,CAAC3tB,GAEL,CAgB6Bo9E,GACrB7zF,EAfD,WACL,MAAMyW,GAAWC,EAAAA,EAAAA,MAEjB,OAAO3S,EAAAA,EAAAA,cACJqgC,IACC3tB,GAASzW,EAAAA,EAAAA,IAAmBokC,GAAQ,GAEtC,CAAC3tB,GAEL,CAM6Bq9E,GAE3B,OAAOx0F,EAAAA,EAAAA,UACL,MAASQ,eAAcC,qBAAoBC,wBAC3C,CAACF,EAAcC,EAAoBC,GAEvC,CAEO,SAAS+zF,EAAyBh1F,GACvC,OAAO8X,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM8mD,OAAOslB,iBAAgB,GAAD3hF,OAAIxC,EAAS,YAC5E,CAaO,SAASi1F,IACd,MAAMv9E,GAAWC,EAAAA,EAAAA,MAEjB,OAAO3S,EAAAA,EAAAA,cACL,CAAChF,EAAmB5G,KAClBse,GAAS+sE,EAAAA,EAAAA,IAAsB,CAAEzkF,YAAW5G,UAAS6gB,KAAM,YAAa,GAE1E,CAACvC,GAEL,CAcO,SAASw9E,IACd,MAAMx9E,GAAWC,EAAAA,EAAAA,MAEjB,OAAO3S,EAAAA,EAAAA,cACL,CAAChF,EAAmB4kF,EAAqB5iE,EAAuCra,KAA+B,IAADwtF,EAC5G,MAAMpQ,EAAO/iE,EAAiC,QAA3BmzE,EAAGv8F,OAAOyhB,OAAO2H,GAAQ,UAAE,IAAAmzE,OAAA,EAAxBA,EAA0BpQ,UAAO3jF,EACjDg0F,EAAarQ,GAxFGsQ,EAwFgB,IAAItQ,GAAMuQ,UAvF7CjuE,MAAM4kB,KAAKopD,GAAYE,GACrB,IAAA/yF,QAAY,IAAP+yF,GAAa/zF,SAAS,KAAM8e,OAAO,KAC9CoH,KAAK,KAqFyD,GAxF5D,IAAqB2tE,EA0FtB39E,GACEgtE,EAAAA,EAAAA,IAAoB,CAClB1kF,YACA4kF,YAAajvD,OAAOivD,GACpBG,KAAMqQ,EACNr9E,MAAQiK,EAASppB,OAAOD,KAAKqpB,GAAQ,GAAK,GAC1Cra,MAAY,OAALA,QAAK,IAALA,EAAAA,EAAS,KAEnB,GAEH,CAAC+P,GAEL,CAEO,SAAS89E,EAAWx1F,GACzB,MAAM2kF,GAAS7sE,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM8mD,OAAOulB,gBAEtD,OAAO7jF,EAAAA,EAAAA,UAAQ,KACb,GAAIP,GAAa2kF,EACf,OAAOA,EAAO3kF,EAGA,GACf,CAACA,EAAW2kF,GACjB,CAMO,SAAS8Q,IACd,MAAMC,GAJC59E,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM8mD,OAAOh3B,OAKxCnwB,GAAWC,EAAAA,EAAAA,MAEXqsB,GAASh/B,EAAAA,EAAAA,cACZ6gD,IACCnuC,GAASutE,EAAAA,EAAAA,IAAqBp/B,GAAK,GAErC,CAACnuC,IAGH,OAAOnX,EAAAA,EAAAA,UAAQ,MAASsnC,KAAM6tD,EAAUzQ,qBAAsBjhD,KAAW,CAACA,EAAQ0xD,GACpF,CAMO,SAASC,IACd,MAAMtR,GAJCvsE,EAAAA,EAAAA,KAAgBC,GAAUA,EAAM8mD,OAAOwlB,cAKxC3sE,GAAWC,EAAAA,EAAAA,MAEXqsB,GAASh/B,EAAAA,EAAAA,cACZ6gD,IACCnuC,GAASwtE,EAAAA,EAAAA,IAAkBr/B,GAAK,GAElC,CAACnuC,IAGH,OAAOnX,EAAAA,EAAAA,UAAQ,MAAS8jF,cAAaa,kBAAmBlhD,KAAW,CAACA,EAAQqgD,GAC9E,C,kFChKO,MAAMiG,GAAWpL,EAAAA,EAAAA,IAA4C,iBAEvD0L,GAAgB1L,EAAAA,EAAAA,IAA+D,sBAE/EsL,GAAmBtL,EAAAA,EAAAA,IAA+D,wB,wDCLxF,IAAKnjD,EAAY,SAAZA,GAAY,OAAZA,EAAY,YAAZA,EAAY,QAAZA,CAAY,MAoCZuoD,EAAe,SAAfA,GAAe,OAAfA,EAAe,YAAfA,EAAe,UAAfA,EAAe,UAAfA,EAAe,UAAfA,CAAe,K,0HChCpB,IAMKtiD,EAAW,SAAXA,GAAW,OAAXA,EAAW,UAAXA,EAAW,0BAAXA,EAAW,YAAXA,EAAW,oBAAXA,EAAW,gBAAXA,EAAW,YAAXA,CAAW,K,wDCchB,IAAK4zD,EAAmB,SAAnBA,GAAmB,OAAnBA,EAAmB,kBAAnBA,EAAmB,UAAnBA,EAAmB,qBAAnBA,EAAmB,4BAAnBA,EAAmB,gBAAnBA,CAAmB,MAQnB5tD,EAAY,SAAZA,GAAY,OAAZA,EAAY,kBAAZA,EAAY,+BAAZA,EAAY,6BAAZA,CAAY,K,qHC5BxB,MAEM6tD,EAAQ,mBAAArzF,OAFW,UAE2B,qBAAAA,OADvB,qEAGvBszF,EAAc,mBACdC,EAAiBD,EAFR,kBAAAtzF,OAAuBqzF,EAAQ,cAIjCG,EAAqB,CAChCC,cAAeh2D,OAAOzN,KAAKivC,MAAQ,SACnCy0B,iBAAkBH,EAClBI,qBACE,QAAA3zF,OAAQwlB,OAAOouE,OAAOlzF,MAAQ,EAAI,MAAO,aAAAV,OAClCwlB,OAAOouE,OAAOn0F,OAAS,EAAI,MAAO,KAAG,uDAIzC,MAAMo0F,EAgBX,gBAAWt0B,GACT,OAAOvgD,KAAKxhB,SACd,CAEAqhB,WAAAA,CAAY42D,GAAgC,KAnBpCA,YAAM,OAONl8B,cAAQ,OAER/7C,eAAS,OAETowD,YAAM,OAEPn2C,KAAOokD,EAAAA,EAAc9yD,KAO1BiW,KAAKy2D,OAAS,CACZqe,UAAWre,EAAOqe,UAClBv8D,KAAMk+C,EAAOl+C,KACbw8D,YAAaR,EACbS,KAAK,EAET,CAEA,UAAMx4B,GACJx8C,KAAK4uC,OAAS5uC,KAAK4uC,OACf5uC,KAAK4uC,aACCqmC,EAAAA,GAAWh6F,OAAO,CACtB4oD,QAAS,IAAIqxC,EAAAA,GACbC,YAAa,CACXC,YAAa,OACbC,aAAa,EACbC,4BAA4B,KAMlB,IAADC,QAFSv1E,KAAK9K,gBAG7B8K,KAAKu6B,SAAWv6B,KAAK4uC,OAAO4mC,cAC5Bx1E,KAAKxhB,UAAyB,QAAhB+2F,EAAGv1E,KAAKu6B,gBAAQ,IAAAg7C,OAAA,EAAbA,EAAeh1B,eAAevgE,YAGjD,OAAO,CACT,CAEA,iBAAMkV,GAAiC,IAADugF,EACpC,cAA2B,QAAjBA,EAAMz1E,KAAK4uC,cAAM,IAAA6mC,OAAA,EAAXA,EAAaC,kBAC/B,CAEA,iBAAMC,CAAWn+F,GAGiD,IAHvC,WACzBiB,EAAU,iBACVm9F,GACgBp+F,EAChB,MAAMq+F,EAAQ,IAAIC,EAAAA,UAAU,IACvB91E,KAAKy2D,OACRl8B,SAAUv6B,KAAKu6B,WAWjB,OARIv6B,KAAKy2D,OAAOue,KAEda,EAAME,eAAe3zC,OAAOjpD,IAC1Bo8B,QAAQkuB,KAAK,gFACbluB,QAAQtpB,MAAM9S,EAAI,IAIfi/B,EAAAA,MAAMu9D,YAAYC,EAAkB,CACzCC,QACAp9F,cAEJ,CAEA,aAAMskE,GAAW,IAADi5B,QACR,IAAIt/F,SAAQ,CAACC,EAASorE,KAAY,IAADk0B,EAC1B,QAAXA,EAAAj2E,KAAK4uC,cAAM,IAAAqnC,GAAXA,EAAaxY,MAAM,CACjByY,UAAWA,IAAMv/F,GAAQ,GACzBopE,QAASgC,KACNyyB,GACH,IAEJ,MAAMj6C,EAAsB,QAAdy7C,EAAGh2E,KAAK4uC,cAAM,IAAAonC,OAAA,EAAXA,EAAaR,cACxBh3F,EAAoB,OAAR+7C,QAAQ,IAARA,OAAQ,EAARA,EAAUgmB,eAAevgE,WAI3C,OAFAggB,KAAKu6B,SAAWA,EAChBv6B,KAAKxhB,UAAYA,GACV,CACT,CAEA,gBAAMmgF,GAAc,IAADwX,QACA,QAAjBA,EAAMn2E,KAAK4uC,cAAM,IAAAunC,OAAA,EAAXA,EAAaphC,SACrB,CAEA,aAAM+pB,GACJ,OAAO,CACT,EAGK,MAMDsX,EAAe,IAAIC,IAAI,GAADr1F,OAAIszF,EAAW,KAAAtzF,OADtB,0BACsC,KAAAA,OAAIqzF,IAElDiC,EAAsBxrF,UAAA,IAAO,GAAE6H,EAAE,OAAEqwB,GAAwCn/B,EAAA,aAChF0yF,EAAAA,EAAAA,iBACJ,CAAE5jF,KAAIqwB,UACN,CACE+rB,SAAUqnC,EACVI,eAAgBC,EAAAA,uBAEnB,C,6NCxI8Bj+D,EAAAA,GAAkBk+D,EAAAA,GAAoBh+D,EAAAA,GAIhE5tB,eAAe6rF,IACpB,MAAMnhE,EAAc,IAAIgD,EAAAA,GAAkBk+D,EAAAA,GAAoBh+D,EAAAA,IACxDk+D,QAAyBvZ,EAAAA,EAAAA,MACzBwZ,EAAgB,IAAI,IAAIxxF,IAAImwB,EAAYx0B,OAAuB,OAAhB41F,QAAgB,IAAhBA,EAAAA,EAAoB,MACzE,OAAOC,EAAc9vF,OANe,IAMmB8vF,EAAc/3E,MAAM,EANvC,KAMoE+3E,CAC1G,C,qCCPO,MAAMC,EAgBX,gBAAWv2B,GACT,OAAOvgD,KAAKxhB,SACd,CAEAqhB,WAAAA,CAAY42D,GAAgC,KAnBpCA,YAAM,OAONl8B,cAAQ,OAER/7C,eAAS,OAETowD,YAAM,OAEPn2C,KAAOokD,EAAAA,EAAcnzD,GAO1BsW,KAAKy2D,OAAS,CACZqe,UAAWre,EAAOqe,UAClBv8D,KAAMk+C,EAAOl+C,KACbw8D,YAAa,2BACbC,KAAK,EAET,CAEA,UAAMx4B,GACJx8C,KAAK4uC,aAAeqmC,EAAAA,GAAWh6F,OAAO,CACpCk6F,YAAa,CACXG,4BAA4B,KAKd,IAADC,QAFSv1E,KAAK9K,gBAG7B8K,KAAKu6B,SAAWv6B,KAAK4uC,OAAO4mC,cAC5Bx1E,KAAKxhB,UAAyB,QAAhB+2F,EAAGv1E,KAAKu6B,gBAAQ,IAAAg7C,OAAA,EAAbA,EAAeh1B,eAAevgE,YAGjD,OAAO,CACT,CAEA,iBAAMkV,GAAiC,IAADugF,EACpC,cAA2B,QAAjBA,EAAMz1E,KAAK4uC,cAAM,IAAA6mC,OAAA,EAAXA,EAAaC,kBAC/B,CAEA,iBAAMC,CAAWn+F,GAGiD,IAHvC,WACzBiB,EAAU,iBACVm9F,GACgBp+F,EAChB,MAAMq+F,EAAQ,IAAIC,EAAAA,UAAU,IACvB91E,KAAKy2D,OACRl8B,SAAUv6B,KAAKu6B,WAWjB,OARIv6B,KAAKy2D,OAAOue,KAEda,EAAME,eAAe3zC,OAAOjpD,IAC1Bo8B,QAAQkuB,KAAK,gFACbluB,QAAQtpB,MAAM9S,EAAI,IAIfi/B,EAAAA,MAAMu9D,YAAYC,EAAkB,CACzCC,QACAp9F,cAEJ,CAEA,aAAMskE,GAAW,IAADi5B,QACR,IAAIt/F,SAAQ,CAACC,EAASorE,KAAY,IAADk0B,EAC1B,QAAXA,EAAAj2E,KAAK4uC,cAAM,IAAAqnC,GAAXA,EAAaxY,MAAM,CACjBiX,iBAAkB10E,KAAKy2D,OAAOse,YAC9BmB,UAAWA,IAAMv/F,GAAQ,GACzBopE,QAASgC,EACT0yB,cAAeh2D,OAAOs4D,UACtB,IAEJvwE,OAAO89B,aAAaG,QAAQ,mBAAmB,IAAIzzB,MAAOC,UAAY8lE,QAAqB/2F,YAC3F,MAAMu6C,EAAsB,QAAdy7C,EAAGh2E,KAAK4uC,cAAM,IAAAonC,OAAA,EAAXA,EAAaR,cACxBh3F,EAAoB,OAAR+7C,QAAQ,IAARA,OAAQ,EAARA,EAAUgmB,eAAevgE,WAG3C,OAFAggB,KAAKu6B,SAAWA,EAChBv6B,KAAKxhB,UAAYA,GACV,CACT,CAEA,gBAAMmgF,GAAc,IAADwX,QACA,QAAjBA,EAAMn2E,KAAK4uC,cAAM,IAAAunC,OAAA,EAAXA,EAAaphC,SACrB,CAEA,aAAM+pB,GACJ,MAAMiY,EAAevwE,OAAO89B,aAAaC,QAAQ,kBACjD,OAAKwyC,IACE,IAAI/lE,MAAOC,WAAakD,OAAO4iE,EACxC,EAMMl6B,EAAAA,EAAcnzD,G,0BCxGf,MAAMstF,EAcX,gBAAWz2B,GACT,OAAOvgD,KAAKxhB,SACd,CAEAqhB,WAAAA,CAAY42D,GAAgC,KAjBpCA,YAAM,OAONl8B,cAAQ,OAER/7C,eAAS,OAEVia,KAAOokD,EAAAA,EAAc5yD,MAO1B+V,KAAKy2D,OAAS,CACZqe,UAAWre,EAAOqe,UAClBv8D,KAAMk+C,EAAOl+C,KACbw8D,YAAa,8BACbC,KAAK,EAET,CAEA,UAAMx4B,GACJ,MAAMjiB,QAAiB08C,EAAAA,EAAcxe,KAAKz4D,KAAKy2D,OAAOse,aAOtD,OALIx6C,IACFv6B,KAAKu6B,SAAWA,EAChBv6B,KAAKxhB,UAAY+7C,EAASgmB,eAAe22B,WAGpC,CACT,CAEA,iBAAMvB,CAAWn+F,GAGiD,IAHvC,WACzBiB,EAAU,iBACVm9F,GACgBp+F,EAChB,MAAMq+F,EAAQ,IAAIC,EAAAA,UAAU,IACvB91E,KAAKy2D,OACRl8B,SAAUv6B,KAAKu6B,WAWjB,OAPIv6B,KAAKy2D,OAAOue,KACda,EAAME,eAAe3zC,OAAOjpD,IAC1Bo8B,QAAQkuB,KAAK,gFACbluB,QAAQtpB,MAAM9S,EAAI,IAIfi/B,EAAAA,MAAMu9D,YAAYC,EAAkB,CACzCC,QACAp9F,cAEJ,CAEA,iBAAMyc,GAEJ,cADuB+hF,EAAAA,EAAcxe,MAEvC,CAEA,aAAM1b,GAGJ,OAFA/8C,KAAKu6B,eAAiB08C,EAAAA,EAAcl6B,UACpC/8C,KAAKxhB,UAAYwhB,KAAKu6B,SAASgmB,eAAe22B,UACvC,CACT,CAEA,gBAAMvY,SACEsY,EAAAA,EAActY,YACtB,CAEA,aAAMG,GACJ,OAAO,CACT,EAMMr1E,EAAAA,GAAUQ,M,eCpFX,MAAMktF,EAYX,gBAAW52B,GACT,OAAOvgD,KAAKxhB,SACd,CAEAqhB,WAAAA,CAAY42D,GAAgC,KAfpCA,YAAM,OAONj4E,eAAS,OAEVia,KAAOokD,EAAAA,EAAc7yD,KAO1BgW,KAAKy2D,OAAS,CACZqe,UAAWre,EAAOqe,UAClBv8D,KAAMk+C,EAAOl+C,KACbw8D,YAAa,GACbC,KAAK,EAET,CAEA,UAAMx4B,GACJ,OAAO,CACT,CAEA,iBAAMm5B,CAAWn+F,GAGiD,IAHvC,WACzBiB,EAAU,iBACVm9F,GACgBp+F,EAChB,aAAagvB,OAAOm2C,GAAGG,KAAK64B,YAAqB,CAC/Cl9F,aACAm9F,oBAEJ,CAEA,iBAAM1gF,GACJ,MAAM6oE,GAAaE,EAAAA,EAAAA,MAEnB,QAA0B,mBAAfF,IAA6BA,QAIpCv3D,OAAOm2C,KAAMn2C,OAAOm2C,GAAGG,aACZt2C,OAAOm2C,GAAGG,KAAK5nD,cAIhC,CAEA,aAAM6nD,GAAW,IAADN,EAEd,QAAc,QAAVA,EAACj2C,OAAOm2C,UAAE,IAAAF,IAATA,EAAWK,cAIN98C,KAAK9K,qBAGPsR,OAAOm2C,GAAGG,KAAKs6B,eAAe,CAClCtC,UACE90E,KAAKy2D,OAAOqe,UAAU/tF,OAlEE,IAmEpBiZ,KAAKy2D,OAAOqe,UAAUh2E,MAAM,EAnER,KAoEpBkB,KAAKy2D,OAAOqe,YANpB90E,KAAKxhB,UAAYgoB,OAAOm2C,GAAGG,KAAKt0B,aAW3B,EACT,CAEA,gBAAMm2C,SACEn4D,OAAOm2C,GAAGG,KAAK6hB,YACvB,CAEA,aAAMG,GACJ,OAAO,CACT,E,cC/EK,MAAMuY,EAgBX,gBAAW92B,GACT,OAAOvgD,KAAKxhB,SACd,CAEAqhB,WAAAA,CAAY42D,GAAgC,KAnBpCA,YAAM,OAONl8B,cAAQ,OAER/7C,eAAS,OAETowD,YAAM,OAEPn2C,KAAOokD,EAAAA,EAAcjzD,QAO1BoW,KAAKy2D,OAAS,CACZqe,UAAWre,EAAOqe,UAClBv8D,KAAMk+C,EAAOl+C,KACbw8D,YAAa,wBACbC,KAAK,EAET,CAEA,UAAMx4B,GACJx8C,KAAK4uC,aAAeqmC,EAAAA,WAAWh6F,OAAO,CACpCk6F,YAAa,CACXG,4BAA4B,GAE9BgC,QAAS,YAIO,IAAD/B,QAFSv1E,KAAK9K,gBAG7B8K,KAAKu6B,SAAWv6B,KAAK4uC,OAAO4mC,cAC5Bx1E,KAAKxhB,UAAyB,QAAhB+2F,EAAGv1E,KAAKu6B,gBAAQ,IAAAg7C,OAAA,EAAbA,EAAeh1B,eAAevgE,YAGjD,OAAO,CACT,CAEA,iBAAMkV,GAAiC,IAADugF,EACpC,cAA2B,QAAjBA,EAAMz1E,KAAK4uC,cAAM,IAAA6mC,OAAA,EAAXA,EAAaC,kBAC/B,CAEA,iBAAMC,CAAWn+F,GAGiD,IAHvC,WACzBiB,EAAU,iBACVm9F,GACgBp+F,EAChB,MAAMq+F,EAAQ,IAAIC,EAAAA,UAAU,CAC1Bv9D,KAAMvY,KAAKy2D,OAAOl+C,KAClBgiB,SAAUv6B,KAAKu6B,WAWjB,OARIv6B,KAAKy2D,OAAOue,KAEda,EAAME,eAAe3zC,OAAOjpD,IAC1Bo8B,QAAQkuB,KAAK,gFACbluB,QAAQtpB,MAAM9S,EAAI,IAIfi/B,EAAAA,MAAMu9D,YAAYC,EAAkB,CACzCC,QACAp9F,cAEJ,CAEA,aAAMskE,GAAW,IAADi5B,QACR,IAAIt/F,SAAQ,CAACC,EAASorE,KAAY,IAADk0B,EAC1B,QAAXA,EAAAj2E,KAAK4uC,cAAM,IAAAqnC,GAAXA,EAAaxY,MAAM,CACjByY,UAAWA,IAAMv/F,GAAQ,GACzBopE,QAASgC,EACT0yB,cAAeh2D,OAAO84D,UACtB,IAGJ,MAAMh9C,EAAsB,QAAdy7C,EAAGh2E,KAAK4uC,cAAM,IAAAonC,OAAA,EAAXA,EAAaR,cACxBh3F,EAAoB,OAAR+7C,QAAQ,IAARA,OAAQ,EAARA,EAAUgmB,eAAevgE,WAM3C,OALAggB,KAAKu6B,SAAWA,EAChBv6B,KAAKxhB,UAAYA,EAEjBgoB,OAAO89B,aAAaG,QAAQ,+BAA+B,IAAIzzB,MAAOC,UAAYsmE,QAAoBv3F,aAE/F,CACT,CAEA,gBAAM2+E,GAAc,IAADwX,QACA,QAAjBA,EAAMn2E,KAAK4uC,cAAM,IAAAunC,OAAA,EAAXA,EAAaphC,SACrB,CAEA,aAAM+pB,GACJ,MAAMiY,EAAevwE,OAAO89B,aAAaC,QAAQ,8BACjD,OAAKwyC,IACE,IAAI/lE,MAAOC,WAAakD,OAAO4iE,EACxC,EAMMl6B,EAAAA,EAAcjzD,QC7Gf,MAAM4tF,EAYX,gBAAWj3B,GACT,OAAOvgD,KAAKxhB,SACd,CAEAqhB,WAAAA,CAAY42D,GAAgC,KAfpCA,YAAM,OAONj4E,eAAS,OAEVia,KAAOokD,EAAAA,EAAchzD,SAO1BmW,KAAKy2D,OAAS,CACZqe,UAAWre,EAAOqe,UAClBv8D,KAAMk+C,EAAOl+C,KACbw8D,YAAa,GACbC,KAAK,EAET,CAEA,UAAMx4B,GACJ,OAAO,CACT,CAEA,iBAAMm5B,CAAWn+F,GAGiD,IAHvC,WACzBiB,EAAU,iBACVm9F,GACgBp+F,EAChB,aAAagvB,OAAOm2C,GAAGC,eAAe+4B,YAAY,CAAEl9F,aAAYm9F,oBAClE,CAEA,iBAAM1gF,GACJ,MAAM6oE,GAAaE,EAAAA,EAAAA,MAEnB,QAA0B,mBAAfF,IAA6BA,OAIpCv3D,OAAOm2C,GAAGC,sBACCp2C,OAAOm2C,GAAGC,eAAe1nD,cAI1C,CAEA,aAAM6nD,GAWJ,aAVU/8C,KAAK9K,sBAIPsR,OAAOm2C,GAAGC,eAAe+hB,mBACzBn4D,OAAOm2C,GAAGC,eAAew6B,eAAe,CAAEtC,UAAW90E,KAAKy2D,OAAOqe,aAJvE90E,KAAKxhB,iBAAmBgoB,OAAOm2C,GAAGC,eAAe2D,gBAAgBvgE,YAS5D,CACT,CAEA,gBAAM2+E,SACEn4D,OAAOm2C,GAAGC,eAAe+hB,YACjC,CAEA,aAAMG,GACJ,OAAO,CACT,EAMMjiB,EAAAA,EAAchzD,S,0BC3EtB,MACM4tF,EAA2B,uBAG1B,MAAMC,EAgBX,gBAAWn3B,GACT,OAAOvgD,KAAKxhB,SACd,CAEAqhB,WAAAA,CAAY42D,GAAgC,KAnBpCA,YAAM,OAONl8B,cAAQ,OAER/7C,eAAS,OAETowD,YAAM,OAEPn2C,KAAOhP,EAAAA,GAAUK,SAOtBkW,KAAKy2D,OAAS,CACZqe,UAAWre,EAAOqe,UAClBv8D,KAAMk+C,EAAOl+C,KACby8D,KAAK,EACLD,YAAa,GAEjB,CAEA,UAAMv4B,GACJ,OAAO,CACT,CAEA,iBAAMtnD,GAAe,IAADugF,EAClB,QAAOz1E,KAAK4uC,cAA0B,QAAjB6mC,EAAMz1E,KAAK4uC,cAAM,IAAA6mC,OAAA,EAAXA,EAAakC,eAC1C,CAEA,aAAM56B,GACJ,IAAI/8C,KAAK4uC,eAAiB5uC,KAAK9K,cAcxB,CACL,MAAMlW,QAAe44F,EAAAA,GAAU38F,SAE/B,KAAM,OAAQ+D,GAAS,OAAO,EAE9B,MAAM4vD,EAAS5vD,EAAOk+C,GAIhB3C,QAAqCqU,EAAOipC,eAElD,OAAiB,OAAbt9C,IAKJ/zB,OAAO89B,aAAaG,QAAQgzC,IAA2B,IAAIzmE,MAAOC,UAAYsmE,QAAoBv3F,YAClGggB,KAAKu6B,SAAWA,EAChBv6B,KAAKxhB,UAAY+7C,EAASgmB,eAAevgE,WACzCggB,KAAK4uC,OAASA,GAEP,EACT,CApC+C,CAI7C,MAAMrU,QAAqCv6B,KAAK4uC,OAAOipC,eAEvD,GAAiB,OAAbt9C,EAEF,OAAO,EAGT/zB,OAAO89B,aAAaG,QAAQgzC,IAA2B,IAAIzmE,MAAOC,UAAYsmE,QAAoBv3F,YAClGggB,KAAKu6B,SAAWA,EAChBv6B,KAAKxhB,UAAoB,OAAR+7C,QAAQ,IAARA,OAAQ,EAARA,EAAUgmB,eAAevgE,UAC5C,CAwBA,OAAO,CACT,CAEA,gBAAM2+E,GAAc,IAADsX,QACA,QAAjBA,EAAMj2E,KAAK4uC,cAAM,IAAAqnC,OAAA,EAAXA,EAAa6B,gBACrB,CAEA,iBAAMnC,CAAWn+F,GAA+F,IAArF,WAAEiB,EAAU,iBAAEm9F,GAAmCp+F,EAC1E,MAAMugG,EAAY,IAAIjC,EAAAA,UAAU,CAAEv7C,SAAUv6B,KAAKu6B,SAAUhiB,KAAMvY,KAAKy2D,OAAOl+C,OAE7E,OAAOH,EAAAA,MAAMu9D,YAAqBC,EAAkB,CAClDC,MAAOkC,EACPt/F,cAEJ,CAEA,aAAMqmF,GACJ,MAAMkZ,EAAaxxE,OAAO89B,aAAaC,QAAQkzC,GAC/C,OAAKO,IACE,IAAIhnE,MAAOC,WAAakD,OAAO6jE,EACxC,ECpEK,MAAMz7B,EAAgB18C,WAAAA,GAAA,KACpB1V,UAA+B,KAAK,KAEpCkrD,cAA2B5rD,EAAAA,GAAUG,OAAQ,CAGpD,UAAa4yD,CAAKnH,GAChB,MAAMlrD,QAAkBoyD,EAAgBthE,OAAOo6D,GAC/Cr1C,KAAKq1C,cAAgBA,QACN,OAATlrD,QAAS,IAATA,OAAS,EAATA,EAAWqyD,QACjBx8C,KAAK7V,UAAYA,CACnB,CAEA,mBAAoBlP,CAAOkP,GACzB,MAAMssE,EAAS,CACbl+C,KAAI,KACJu8D,gBAAiB6B,KAGnB,OAAQxsF,GACN,KAAKV,EAAAA,GAAUC,GACb,OAAO,IAAIotF,EAA0BrgB,GACvC,KAAKhtE,EAAAA,GAAUQ,MACb,OAAO,IAAI+sF,EAAevgB,GAC5B,KAAKhtE,EAAAA,GAAUM,KACb,OAAO,IAAI8qF,EAAAA,GAAepe,GAC5B,KAAKhtE,EAAAA,GAAUO,KACb,OAAO,IAAImtF,EAAc1gB,GAC3B,KAAKhtE,EAAAA,GAAUG,QACb,OAAO,IAAIytF,EAAiB5gB,GAC9B,KAAKhtE,EAAAA,GAAUI,SACb,OAAO,IAAI2tF,EAAkB/gB,GAC/B,KAAKhtE,EAAAA,GAAUE,GACb,OAAO,IAAIsuF,EAAAA,EAAYxhB,GACzB,KAAKhtE,EAAAA,GAAUK,SACb,OAAO,IAAI4tF,EAAkBjhB,GAC/B,QACE,MAAM,IAAI3/E,MAAM,mBAADkK,OAAoByI,EAAAA,GAAS,uCAElD,CAEA,aAAaszD,GACX,IAAK/8C,KAAK7V,UAAW,OAAO,EAE5B,MAAM+tF,QAAgCl4E,KAAK7V,UAAU4yD,UAMrD,OAJAv2C,OAAOk4D,YAAc1+D,KAAK7V,WAE1B+zE,EAAAA,EAAAA,IAAW,CAAE5d,WAAYtgD,KAAKq1C,gBAEvB6iC,CACT,CAEA,iBAAahjF,GAAe,IAADijF,EAEzB,aADwC,QAApBA,EAAMn4E,KAAK7V,iBAAS,IAAAguF,OAAA,EAAdA,EAAgBjjF,cAE5C,CAEA,iBAAaygF,CACXl9F,EACAm9F,GAC8C,IAADwC,EAC7C,aAA2B,QAApBA,EAAMp4E,KAAK7V,iBAAS,IAAAiuF,OAAA,EAAdA,EAAgBzC,YAAY,CAAEl9F,aAAYm9F,qBACzD,EAGK9qF,eAAei0E,IACpB,OAAOv4D,OAAOk4D,YAAYxpE,aAC5B,CAEOpK,eAAeqzE,IACpB,OAAO33D,OAAOk4D,YAAYne,YAC5B,CAEO,MAAMp2D,EAAY,IAAIoyD,C,6FCtGtB,SAASuhB,IACd,QAASt3D,OAAO6xE,cAClB,CAEA,MAAMC,EAAS,IAAIC,EAAAA,EAEZ,MAAMN,EAgBX,gBAAW13B,GACT,OAAOvgD,KAAKxhB,SACd,CAEAqhB,WAAAA,CAAY42D,GAAgC,KAnBpCA,YAAM,OAONl8B,cAAQ,OAER/7C,eAAS,OAETowD,YAAM,OAEPn2C,KAAOhP,EAAAA,GAAUE,GAOtBqW,KAAKy2D,OAAS,CACZqe,UAAWre,EAAOqe,UAClBv8D,KAAMk+C,EAAOl+C,KACby8D,KAAK,EACLD,YAAa,GAEjB,CAEA,UAAMv4B,GACJ,GAAIshB,IAAe,CAAC,IAAD0a,EAGjB,SAFMF,EAAO97B,QAERx8C,KAAK9K,cAAe,CAAC,IAADujF,EACvB,MAAMC,QAAgBJ,EAAOv7B,QAAQ,CACnC47B,kBAAmB34E,KAAKy2D,OAAOqe,UAC/Bv8D,KAAMvY,KAAKy2D,OAAOl+C,KAClBqgE,aAAc,4BAMhB,OAHA54E,KAAKxhB,UAA2B,QAAlBi6F,EAAGH,EAAO/9C,gBAAQ,IAAAk+C,OAAA,EAAfA,EAAiBl4B,eAAevgE,WACjDggB,KAAKu6B,SAAW+9C,EAAO/9C,SAEhBm+C,CACT,CACA14E,KAAKxhB,UAA2B,QAAlBg6F,EAAGF,EAAO/9C,gBAAQ,IAAAi+C,OAAA,EAAfA,EAAiBj4B,eAAevgE,WACjDggB,KAAKu6B,SAAW+9C,EAAO/9C,QACzB,KAAO,CACLv6B,KAAK4uC,OAAS5uC,KAAK4uC,OACf5uC,KAAK4uC,aACCqmC,EAAAA,GAAWh6F,OAAO,CACtB49F,SAAUvyE,SAASwyE,KAAKjpF,YAAc,UAAajQ,EACnDm5F,kBAAmB,yDACnBrE,iBAAiB,kEACjBsE,kBAAkB,8DAClBzgE,KAAMvY,KAAKy2D,OAAOl+C,OAKN,IAADg9D,EAAjB,SAF0Bv1E,KAAK9K,cAG7B8K,KAAKu6B,SAAWv6B,KAAK4uC,OAAOrU,SAC5Bv6B,KAAKxhB,UAAyB,QAAhB+2F,EAAGv1E,KAAKu6B,gBAAQ,IAAAg7C,OAAA,EAAbA,EAAeh1B,eAAevgE,UAEnD,CAEA,OAAO,CACT,CAEA,iBAAMkV,GAAe,IAADugF,EAClB,OAAI3X,UACWwa,EAAOpjF,gBAEf8K,KAAK4uC,cAA0B,QAAjB6mC,EAAMz1E,KAAK4uC,cAAM,IAAA6mC,OAAA,EAAXA,EAAaC,kBAC1C,CAEA,aAAM34B,GACJ,UAAU/8C,KAAK9K,cAER,CAAC,IAAD+gF,EACL,GAAInY,IAAe,CACjB,MAAM4a,QAAgBJ,EAAOv7B,QAAQ,CAEnC47B,kBAAmB34E,KAAKy2D,OAAOqe,UAC/Bv8D,KAAMvY,KAAKy2D,OAAOl+C,KAClBqgE,aAAc,6BAGV,SAAEr+C,GAAa+9C,EAIrB,OAFAt4E,KAAKxhB,UAAoB,OAAR+7C,QAAQ,IAARA,OAAQ,EAARA,EAAUgmB,eAAevgE,WAEnC04F,CACT,CACA,MAAMC,EAAoB34E,KAAKy2D,OAAOqe,UAEhClmC,QAA0B,QAAjBqnC,EAAMj2E,KAAK4uC,cAAM,IAAAqnC,OAAA,EAAXA,EAAal5B,QAAQ,CACxC87B,WAAYryE,OAAOe,WAAa,KAChCwxE,kBAAmB,yDACnBrE,iBAAiB,kEACjBsE,kBAAkB,8DAClBL,kBACEA,EAAkB5xF,OA9GG,IA+GjB4xF,EAAkB75E,MAAM,EA/GP,KAgHjB65E,EACNC,aAAc,0BACdnE,cAAeh2D,OAAOw6D,YAGX,IAADC,EAAZ,GAAItqC,EACFpoC,OAAO89B,aAAaG,QAAQ,mBAAmB,IAAIzzB,MAAOC,UAAYgoE,QAAqBj5F,YAC3FggB,KAAKu6B,SAAWqU,EAAOrU,SACvBv6B,KAAKxhB,UAAyB,QAAhB06F,EAAGl5E,KAAKu6B,gBAAQ,IAAA2+C,OAAA,EAAbA,EAAe34B,eAAevgE,WAGjD,QAAS4uD,CACX,CAvC+B,IAADuqC,EAyC9B,OAxCEn5E,KAAKxhB,UAAyB,QAAhB26F,EAAGn5E,KAAKu6B,gBAAQ,IAAA4+C,OAAA,EAAbA,EAAe54B,eAAevgE,YAwC1C,CACT,CAEA,gBAAM2+E,GAGI,IAADqX,EAFHlY,UACIwa,EAAO3Z,mBAEI,QAAjBqX,EAAMh2E,KAAK4uC,cAAM,IAAAonC,OAAA,EAAXA,EAAarX,aAEvB,CAEA,iBAAMgX,CAAWn+F,GAA+F,IAAD2+F,EAAA,IAApF,WAAE19F,EAAU,iBAAEm9F,GAAmCp+F,EAC1E,OAAIsmF,UAEWwa,EAAO3C,YAAqBl9F,EAAYm9F,SAG/B,QAAjBO,EAAMn2E,KAAK4uC,cAAM,IAAAunC,OAAA,EAAXA,EAAaR,YAAqBC,EAAkBn9F,GACnE,CAEA,aAAMqmF,GACJ,GAAIhB,IAAe,OAAO,EAC1B,MAAMsb,EAAe5yE,OAAO89B,aAAaC,QAAQ,kBACjD,OAAK60C,IACE,IAAIpoE,MAAOC,WAAakD,OAAOilE,EACxC,E,sRCxJF36D,OAAO46D,UAAUC,OAAS,WACxB,OAAOt5E,KAAKhgB,UACd,EAGAsC,EAAAA,EAAUmgD,IAAI,CAAE82C,eAAgB,IAAM,IAEtCj3F,EAAAA,EAAUm0E,OAAO,CACf+iB,cAAel3F,EAAAA,EAAUm3F,aASpB,SAASj1F,EAAYtI,GAC1B,MAAoC,SAA7BA,EAAMuf,cAAcC,IAC7B,CAEO,SAASg+E,EAAkBn2D,GAChC,MACc,qEAAZA,GACY,qEAAZA,GACY,qEAAZA,GACY,qEAAZA,GACY,qEAAZA,CAEJ,CAEO,SAASo2D,EAAoBC,GAClC,OAAO,IAAIC,aAAcC,OAAOF,EAClC,CAEO,SAASG,EAAoBC,GAClC,OAAO,IAAIC,YAAY,SAASC,OAAOF,EACzC,CAQO,SAASG,EAAeP,GAC7B,MAAMQ,EAAY1wD,OAAOkwD,GAEzB,OAAIQ,EAAUrzF,OAAS,EACf,IAAN/F,OAAWo5F,GAGNR,CACT,CAEO,SAASS,EAAQj2C,GACtB,MAAM6b,GAAM,IAAIjvC,MAAOC,UAGjBqpE,EAFM,IAAItpE,KAAKozB,GAAMnzB,UAERgvC,EAEnB,GAAIq6B,GAAQ,EACV,MAAO,CACLC,KAAM,KACN39D,IAAK,KACL49D,IAAK,MAIT,MAAMA,EAAMlzE,SAASoiB,OAAQ4wD,EAAO,IAAQ,KACtC19D,EAAMtV,SAASoiB,OAAQ4wD,EAAI,IAAkB,KAGnD,MAAO,CACLC,KAAMJ,EAHK7yE,SAASoiB,OAAO4wD,EAAI,QAI/B19D,IAAKu9D,EAAev9D,GACpB49D,IAAKL,EAAeK,GAExB,CAEO,SAAS10D,EAAS3/B,GACvB,YAAcvG,IAAVuG,EAA4B,GACzB,IAAI7D,EAAAA,EAAU6D,GAAO2/B,UAC9B,CAEO,SAAS20D,EAAWr2C,GACzB,MAAMs2C,EAAO,IAAI1pE,KAAKozB,GAChBu2C,EAAUD,EAAKE,aACrB,OAAO,IAAI5pE,KAAK0pE,EAAKzpE,UAAsB,IAAV0pE,EACnC,C,8ICtFO,MAAeE,EAGpBh7E,WAAAA,CAAWroB,GAAwE,IAAvE,MAAEwD,GAAkExD,EAAA,KAFhEwD,WAAK,EAGnBglB,KAAKhlB,MAAQA,CACf,ECsBK,MAAM8/F,EAAiB,IA9BvB,cAAyBD,EAC9B,cAAavgD,CAAQ9iD,GAQjB,IARkB,WACpBiB,EAAU,OACVg+C,EAAM,SACN8D,GAKD/iD,EACC,OAAOqgD,EAAAA,EAAAA,gBAA6C73B,KAAKhlB,MAAMvC,EAAY8hD,IAAWD,SAAS7D,GACjG,CAEA,eAAavT,CAASr/B,GAA4E,IAA3E,OAAE4yC,EAAM,WAAEh+C,GAA8DoL,EAC7F,OAAOg0C,EAAAA,EAAAA,gBAAkC73B,KAAKhlB,MAAMvC,IAAayqC,UAAUuT,GAC7E,CAEA,aAAanT,CAAO91B,GAQhB,IARiB,OACnBipC,EAAM,WACNh+C,EAAU,SACV8hD,GAKD/sC,EACC,OAAOqqC,EAAAA,EAAAA,gBAAgC73B,KAAKhlB,MAAMvC,EAAY8hD,IAAWjX,QAAQmT,GACnF,GAG2C,CAC3Cz7C,MAAO+/F,EAAAA,KCkDF,MAAMC,EAAO,IAlFb,MAAUn7E,WAAAA,GAAA,KACRo7E,iBAAmB,IAAIC,IAA2B,KAElDC,SAAW,IAAID,GAAmC,CAElDE,cAAAA,CAAe56F,EAAmB66F,GACvC,GAAIr7E,KAAKm7E,SAAShhD,IAAI35C,GAAO,MAAM1J,MAAM,qCACzCkpB,KAAKm7E,SAAS14C,IAAIjiD,EAAM66F,EAC1B,CAEOC,QAAAA,CAAQ9jG,GAAuE,IAAtE,YAAEg+B,EAAW,KAAEh1B,GAAoDhJ,EACjFg+B,EAAY9vB,SAASjN,IACnBunB,KAAKi7E,iBAAiBx4C,IAAIhqD,EAAY+H,EAAK,GAE/C,CAEO+6F,UAAAA,CAAW9iG,GAChB,MAAM+iG,EAAcx7E,KAAKi7E,iBAAiB9gD,IAAI1hD,GAC9C,OAAO+iG,EAAcx7E,KAAKm7E,SAAShhD,IAAIqhD,QAAe57F,CACxD,CAEOm9C,gBAAAA,CAAiBy+C,GACtB,IAAKx7E,KAAKm7E,SAAShhD,IAAIqhD,GAAc,MAAM1kG,MAAM,2BAADkK,OAA4Bw6F,IAC5E,OAAOx7E,KAAKm7E,SAAShhD,IAAIqhD,EAC3B,CAEA,cAAalhD,CAAQz2C,GAUjB,IAVkB,YACpB23F,EAAW,OACX/kD,EAAM,SACN8D,EAAQ,WACR9hD,GAMDoL,EACC,MAAMw3F,EAAUr7E,KAAK+8B,iBAAiBy+C,GAEtC,OAAKH,QAEQA,EAAQ/gD,SAAS,CAAE7hD,aAAYg+C,SAAQ8D,aAF/B,CAAE/5B,OAAQ+Z,EAAAA,EAAa0P,MAAOzI,UAAM5hC,EAAWuS,QAAS,aAG/E,CAEA,eAAa+wB,CAAS11B,GAQlB,IARmB,YACrBguF,EAAW,OACX/kD,EAAM,WACNh+C,GAKD+U,EACC,MAAM6tF,EAAUr7E,KAAK+8B,iBAAiBy+C,GACtC,OAAKH,QACQA,EAAQn4D,UAAU,CAC7BzqC,aACAg+C,WAHmB,CAAEj2B,OAAQ+Z,EAAAA,EAAa0P,MAAOzI,UAAM5hC,EAAWuS,QAAS,aAK/E,CAEA,aAAamxB,CAAOt1B,GAUhB,IAViB,OACnByoC,EAAM,WACNh+C,EAAU,YACV+iG,EAAW,SACXjhD,GAMDvsC,EACC,MAAMqtF,EAAUr7E,KAAK+8B,iBAAiBy+C,GACtC,OAAKH,QACQA,EAAQ/3D,QAAQ,CAC3B7qC,aACA8hD,WACA9D,WAJmB,CAAEj2B,OAAQ+Z,EAAAA,EAAa0P,MAAOzI,UAAM5hC,EAAWuS,QAAS,aAM/E,GAQK,IAAKspF,EAAW,SAAXA,GAAW,OAAXA,EAAW,kBAAXA,CAAW,MAIvBT,EAAKI,eAAeK,EAAY7xF,QAASkxF,GC7ElC,MAAeY,EAGpB77E,WAAAA,CAAWroB,GAA6B,IAA5B,MAAEwD,GAAuBxD,EAAA,KAFrBwD,WAAK,EAGnBglB,KAAKhlB,MAAQA,CACf,ECJK,MAAM2gG,EAAsB,IAd5B,cAAsCD,EAC3C,SAAaE,CAAGpkG,GAAoE,IAAnE,OAAEi/C,EAAM,SAAE8D,GAAsD/iD,EAC/E,OAAOqgD,EAAAA,EAAAA,gBAAmC73B,KAAKhlB,MAAMu/C,IAAWqhD,IAAInlD,GACtE,CAEA,UAAaolD,CAAIh4F,GAAqE,IAApE,OAAE4yC,EAAM,SAAE8D,GAAuD12C,EACjF,OAAOg0C,EAAAA,EAAAA,gBAAmC73B,KAAKhlB,MAAMu/C,IAAWshD,KAAKplD,GACvE,CAEA,YAAaqlD,CAAMtuF,GAAuE,IAAtE,OAAEipC,EAAM,SAAE8D,GAAyD/sC,EACrF,OAAOqqC,EAAAA,EAAAA,gBAAmC73B,KAAKhlB,MAAMu/C,IAAWuhD,OAAOrlD,GACzE,GAG6D,CAC7Dz7C,MAAO+gG,EAAAA,KChBF,IAAKC,EAAgB,SAAhBA,GAAgB,OAAhBA,EAAgB,kBAAhBA,CAAgB,MAyErB,MAAMC,EAAY,IArElB,MAAuBp8E,WAAAA,GAAA,KACrBo7E,iBAAmB,IAAIC,IAAgC,KAEvDC,SAAW,IAAID,GAA8C,CAE7DE,cAAAA,CAAe56F,EAAwB66F,GAC5C,GAAIr7E,KAAKm7E,SAAShhD,IAAI35C,GAAO,MAAM1J,MAAM,qCACzCkpB,KAAKm7E,SAAS14C,IAAIjiD,EAAM66F,EAC1B,CAEOC,QAAAA,CAAQ9jG,GAA4E,IAA3E,YAAEg+B,EAAW,KAAEh1B,GAAyDhJ,EACtFg+B,EAAY9vB,SAASjN,IACnBunB,KAAKi7E,iBAAiBx4C,IAAIhqD,EAAY+H,EAAK,GAE/C,CAEO+6F,UAAAA,CAAW9iG,GAChB,MAAM+iG,EAAcx7E,KAAKi7E,iBAAiB9gD,IAAI1hD,GAC9C,OAAO+iG,EAAcx7E,KAAKm7E,SAAShhD,IAAIqhD,QAAe57F,CACxD,CAEOm9C,gBAAAA,CAAiBy+C,GACtB,IAAKx7E,KAAKm7E,SAAShhD,IAAIqhD,GAAc,MAAM1kG,MAAM,2BAADkK,OAA4Bw6F,IAC5E,OAAOx7E,KAAKm7E,SAAShhD,IAAIqhD,EAC3B,CAEA,UAAaK,CAAIh4F,GAQb,IARc,YAChB23F,EAAW,OACX/kD,EAAM,SACN8D,GAKD12C,EACC,MAAMw3F,EAAUr7E,KAAK+8B,iBAAiBy+C,GACtC,OAAKH,QACQA,EAAQQ,KAAK,CAAEplD,SAAQ8D,aADf,CAAE/5B,OAAQ+Z,EAAAA,EAAa0P,MAAOzI,UAAM5hC,EAAWuS,QAAS,GAE/E,CAEA,YAAa2pF,CAAMtuF,GAQf,IARgB,YAClBguF,EAAW,OACX/kD,EAAM,SACN8D,GAKD/sC,EACC,MAAM6tF,EAAUr7E,KAAK+8B,iBAAiBy+C,GACtC,OAAKH,QACQA,EAAQS,OAAO,CAAErlD,SAAQ8D,aADjB,CAAE/5B,OAAQ+Z,EAAAA,EAAa0P,MAAOzI,UAAM5hC,EAAWuS,QAAS,GAE/E,CAEA,SAAaypF,CAAG5tF,GAQZ,IARa,YACfwtF,EAAW,OACX/kD,EAAM,SACN8D,GAKDvsC,EACC,MAAMqtF,EAAUr7E,KAAK+8B,iBAAiBy+C,GACtC,OAAKH,QACQA,EAAQO,IAAI,CAAEnlD,SAAQ8D,aADd,CAAE/5B,OAAQ+Z,EAAAA,EAAa0P,MAAOzI,UAAM5hC,EAAWuS,QAAS,GAE/E,GCxEK,SAAS+pF,EAAW16D,GACzB,IAAIr7B,EAEJ,IAAK,IAAI6oC,EAAI,EAAGA,EAAI,EAAGA,IAErB7oC,EAASA,GAAS,EAAKq7B,EAAKwN,GAG9B,OAAO7oC,CACT,CAEO,SAASg2F,EAASC,GACvB,MAAMpC,EAAc,IAAIqC,YAAY,GAEpC,OADA,IAAIC,SAAStC,GAAauC,UAAU,EAAGH,GAChCv2E,MAAM4kB,KAAK,IAAI+xD,WAAWxC,GACnC,CAEO,SAASyC,EAAY5I,GAC1B,OAAOhuE,MAAM4kB,KAAKopD,GAAYE,GACrB,IAAA/yF,QAAY,IAAP+yF,GAAa/zF,SAAS,KAAM8e,OAAO,KAC9CoH,KAAK,GACV,CAEO,SAASw2E,EAAsBl+F,EAAmBgI,GAEvD,MAAMlK,EAAUqgG,OAAO,SAEjBC,EAAQ,IAAIJ,WAAW,IACxBlgG,KACA5D,EAAAA,EAAU+b,SAASjW,GAAWqjC,kBAC9Bs6D,EAAShoE,OAAO3tB,MAErB,OAAO9N,EAAAA,EAAUmkG,eAAeD,GAAO1F,QACzC,CAEO,SAAS4F,EAAcC,GAC5B,MAAMC,EAAI,IAAItkG,EAAAA,EAAU+b,SAASsoF,GAAKl7D,gBAItC,OAAI46D,EAHYO,EAAEp2F,OAAO,EAAG,MAGC61F,EAAYE,OAAO,UACvC,CACLn2F,MAAO,EACPivB,SAAUsnE,EACV15F,MAAOq5F,EAAsBK,EAAK,IAG/B,CACLv2F,MAAO01F,EAAWc,EAAEp2F,QAAQ,IAE5B6uB,SAAU/8B,EAAAA,EAAUmkG,eAAeG,GAAG9F,SACtC7zF,MAAO05F,EAEX,CDwBAd,EAAUb,eAAeY,EAAiBpyF,QAAS+xF,E,iFE7E5C,SAASsB,EAAc1mF,GAC5B,OAAQA,GACN,KAAK2mF,EAAAA,EAAaz9D,KAChB,OAAOhB,OAAO,GAChB,KAAKy+D,EAAAA,EAAaC,YAChB,OAAO1+D,OAAO,GAChB,KAAKy+D,EAAAA,EAAax9D,SAChB,OAAOjB,OAAO,GAChB,QACE,OAEN,CAEO,SAAS8B,EAA2B68D,GACzC,OAAQA,GACN,KAAK58D,EAAAA,EAAYuiD,IACf,OACF,KAAKviD,EAAAA,EAAY28D,YACf,OAAOF,EAAcC,EAAAA,EAAaC,aACpC,KAAK38D,EAAAA,EAAYf,KACf,OAAOw9D,EAAcC,EAAAA,EAAaz9D,MACpC,KAAKe,EAAAA,EAAYd,SACf,OAAOu9D,EAAcC,EAAAA,EAAax9D,UACpC,KAAKc,EAAAA,EAAYC,KAEjB,QACE,OAEN,C,yKCvBO,SAAS48D,EAAgBr6D,EAAgBjjC,GAC9C,OAAKijC,GAEDjjC,EAAWo7B,EAAAA,GACN,IAAI74B,EAAAA,EAAU0gC,GAAQ8mB,QAAQ3uB,EAAAA,IAHnB6H,CAOtB,CChBO,SAASiV,EAAU9/C,EAAgBC,GACxC,OAAOD,EAASC,EAAS,CAAED,OAAQC,EAAQA,OAAQD,GAAW,CAAEA,SAAQC,SAC1E,CCAO,SAASklG,EAAkB91F,EAAgChB,GAChE,IAAKgB,EAAU,OAEf,MAAM,OAAErP,EAAM,OAAEC,GAAWoP,EAASw5B,KAWpC,MATiB,CACfx5B,EAASw5B,KAAK/pC,GACduP,EAAMxG,WACN7H,EAAOP,QACPO,EAAOqmC,SAASx+B,WAChB5H,EAAOR,QACPQ,EAAOomC,SAASx+B,YAGFkmB,KAAK,IACvB,CAQO,SAASq3E,EAAkBjlG,GAChC,IAAKA,IAAQA,EAAI6H,SAAS,KAAM,MAAO,CAAC,EAExC,MAAMq9F,EAAMllG,EAAI+uB,MAAM,KAEtB,MAAO,CACL/U,OAAQkrF,EAAI,GACZC,cAAeD,EAAI,GACnBrlG,OAAQqlG,EAAI,GACZE,UAAWF,EAAI,GACfplG,OAAQolG,EAAI,GACZG,UAAWH,EAAI,GAEnB,CAEO,IAAKI,EAAa,SAAbA,GAAa,OAAbA,EAAa,wBAAbA,EAAa,kBAAbA,EAAa,gBAAbA,EAAa,gBAAbA,EAAa,gBAAbA,CAAa,MAQlB,MAAMC,EAAiBtnF,IAC5B,OAAQA,GACN,KAAKqnF,EAAcE,WACjB,MAAO,UACT,KAAKF,EAAcG,QACjB,MAAO,UACT,KAAKH,EAAcI,OACjB,MAAO,UACT,KAAKJ,EAAcK,OACjB,MAAO,UACT,KAAKL,EAAcj+D,OACjB,MAAO,UACT,QACE,MAAO,UACX,E,eC1DK,SAAS+X,EAAgCvxC,EAAgBwlC,GAC9D,GAAKxlC,GAAUwlC,EAGf,IACE,MAAMuyD,EAAmB,IAAI57F,EAAAA,EAAU6D,GACpC5D,aAAa,IAAMopC,EAAS5rC,UAC5B+lC,SAAS,CAAEq4D,eAAgB,KAE9B,GAAyB,MAArBD,EACF,OAAOpzD,EAAAA,EAAeC,cAAcY,EAAUuyD,EAElD,CAAE,MAAOjyF,GAEPspB,QAAQtpB,MAAM,kCAADjL,OAAmCmF,EAAK,KAAK8F,EAC5D,CAGF,CAEO,SAASmyF,EAAsB/xD,GACpC,MAAM,GAANrrC,OAAU,IAAIsB,EAAAA,EAAU+pC,GAAWgyD,IAAI,KAAOv0C,QAAQ,GAAE,IAC1D,CAEO,SAAS+mC,EAAiBuL,GAC/B,MAAMkC,EAAU50D,OAAO0yD,GAAK/0E,MAAM,KAAK,GACjCk3E,EAAU70D,OAAO0yD,GAAK/0E,MAAM,KAAK,GAEvC,QAAIk3E,GAAWA,EAAQx3F,OAASo0B,EAAAA,OAI5BmjE,GAAWA,EAAQv3F,OAASk0B,EAAAA,GAKlC,C,0ICPO,SAASujE,EACd70C,EACA80C,EACApyD,EACAlmC,GAEA,IAAKwjD,IAAc80C,IAAepyD,IAAclmC,EAC9C,OAGF,MAAMkpC,EAhCD,SAAuBsa,EAAmB80C,EAAoBt4F,GAAiB,IAADu4F,EACnF,IAAK/0C,IAAc80C,IAAet4F,EAChC,OAGF,IAAKA,EAAM4rD,MAAM,eACf,OAGF,MAAO4sC,EAAOC,GAAYz4F,EAAMkhB,MAAM,KAEhCtnB,EAA2B,QAAnB2+F,EAAW,OAARE,QAAQ,IAARA,OAAQ,EAARA,EAAU73F,cAAM,IAAA23F,EAAAA,EAAI,EAC/BG,EAAkBC,IAAAA,QAAkB,OAALH,QAAK,IAALA,EAAAA,EAAS,KAAe,OAARC,QAAQ,IAARA,EAAAA,EAAY,KAEjE,OAAO,IAAIpvD,EAAAA,EACTma,EACA80C,EACAK,IAAAA,SAAcA,IAAAA,OAAY,IAAM/+F,GAAW++F,IAAAA,OAAY,IAAMn1C,EAAU5pD,WACvE++F,IAAAA,SAAcD,EAAiBC,IAAAA,OAAY,IAAML,EAAW1+F,WAEhE,CAYgBg/F,CAAcp1C,EAAW80C,EAAYt4F,GAEnD,IAAKkpC,EACH,OAGF,IAAIthB,EAGJ,MAAMixE,GAAeC,EAAAA,EAAAA,GAAmB5vD,EAAMK,UAAWL,EAAMI,aAW/D,OARE1hB,EADE+wE,IAAAA,mBAAwBE,EAAcE,EAAAA,EAASC,gBAC1CD,EAAAA,EAASE,SACPN,IAAAA,gBAAqBE,EAAcE,EAAAA,EAASG,gBAC9CH,EAAAA,EAASI,UAGTC,EAAAA,EAAAA,GAAmBlwD,IAGrBmwD,EAAAA,EAAAA,GAAkBzxE,EAAM0xE,EAAAA,GAAcpzD,GAC/C,C,wGC7DO,SAAS5E,EAAcpkC,GAC5B,YAAczD,IAAVyD,IACGA,EAAMvL,SAASqI,SAAS,UAAYkD,EAAMvL,WAAa88B,EAAAA,EAAe9xB,IAC/E,CAEO,SAASknC,EAAwBlyC,GACtC,OAAOA,EAASqI,SAAS,UAAYrI,IAAa88B,EAAAA,EAAe9xB,GACnE,CAEO,SAAS48F,EAAmBr8F,EAAc2/B,GAC/C,OAAIyE,EAAcpkC,GACX,IAAIf,EAAAA,EAAU0gC,GAAQgI,MAAM3nC,EAAMm7B,UAAU0I,cAAc,IAGxDmG,EAAAA,EAAAA,GAAe,IAAI/qC,EAAAA,EAAU0gC,GAAQgI,MAAM3nC,EAAMm7B,WAF/C,IAIJwE,CACT,C,+BCfO,SAASuuB,EAAmBprD,GACjC,OAAOA,EAAMw5F,IAAI,KAAKtB,IAAI,IAC5B,C,6GCJO,IAAKj6B,EAAc,SAAdA,GAAc,OAAdA,EAAc,oBAAdA,EAAc,kCAAdA,EAAc,gCAAdA,EAAc,kBAAdA,EAAc,0BAAdA,CAAc,MAc1B,SAASrE,EAAQ9zD,GACfspB,QAAQtpB,MAAM,qBAADjL,OAAsBiL,GACrC,CAEA,MAAOy4D,EAAUO,IAAS26B,EAAAA,EAAAA,sBAA+BvM,GAAY,IAAIwM,EAAAA,SAAS,CAAExM,UAAStzB,cAEhFgE,EAAiC,CAC5C55D,UAAWu6D,EACXO,QACAxsD,KAAM2rD,EAAeG,S,mHCnBhB,SAASu7B,EAAU35F,GACxB,IACE,OAAOusC,EAAAA,EAAAA,YAAWvsC,EACpB,CAAE,MACA,OAAO,CACT,CACF,CAyBO,SAAS0pD,EACdj4D,EACA43D,EACAT,EACAxrB,GAEA,IAAKu8D,EAAUloG,IAAYA,IAAYmoG,EAAAA,EACrC,MAAMjpG,MAAM,gCAADkK,OAAiCpJ,EAAO,OAGrD,OAAO,IAAIooG,EAAAA,GAASpoG,EAAS43D,EAlB/B,SACET,EACAxrB,GAEA,OAAOA,GAAWwrB,EATpB,SAAmBA,EAA2BxrB,GAC5C,OAAOwrB,EAASkxC,UAAU18D,GAAS28D,kBACrC,CAO+BD,CAAUlxC,EAAUxrB,GAAWwrB,CAC9D,CAaoCoxC,CAAoBpxC,EAAUxrB,GAClE,CAMO,SAASk5D,EAAYz5D,GAAiD,IAAxBjjC,EAAQ0hB,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAG,GAC9D,MAAM,MAANzgB,OAAa,IAAIsB,EAAAA,EAAU0gC,GAAQzgC,aAAa,IAAMxC,GAAUC,SAAS,IAC3E,C,oiBC1DO,MAAMzI,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM4oG,EAAS3oG,EAAIE,OAAO,CAAEwO,MAAO1O,EAAII,KAAM2I,KAAM/I,EAAII,OACjDwoG,EAAQ5oG,EAAIE,OAAO,CAAE4U,KAAM9U,EAAII,KAAMyoG,UAAW7oG,EAAII,OACpD0oG,EAAgB9oG,EAAIE,OAAO,CAC/BK,IAAKP,EAAIQ,IACTuoG,QAAS/oG,EAAIiC,IAAI0mG,GACjBrgG,SAAUtI,EAAIQ,IACduI,KAAM/I,EAAII,KACV+pF,KAAMnqF,EAAIgpG,MACVC,WAAYjpG,EAAIiC,IAAI2mG,GACpB3hE,YAAajnC,EAAIQ,IACjB0oG,aAAclpG,EAAII,KAClBC,SAAUL,EAAII,KACdyI,OAAQ7I,EAAII,KACZY,WAAYhB,EAAII,OAEZ+oG,EAAanpG,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAI2C,KAAMjB,IAAK1B,EAAII,OAClDgpG,EAAYppG,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIQ,IAAKkB,IAAK1B,EAAII,OAChDipG,EAAWrpG,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIspG,IAAIR,GACZpnG,IAAK1B,EAAII,OAEL0B,EAAW9B,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIiC,IAAIjC,EAAII,MAAOsB,IAAK1B,EAAII,OACzDoB,EAAWxB,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIiC,IAAI6mG,GACZpnG,IAAK1B,EAAII,OAEL4B,EAAShC,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAII,KAAMsB,IAAK1B,EAAII,OACpD,OAAOJ,EAAIkC,QAAQ,CACjBkyC,IAAKp0C,EAAIoC,KAAK,CAAC0mG,GAAgB,CAACK,GAAa,IAC7CI,SAAUvpG,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC+oG,GAAa,IAC7CK,eAAgBxpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,IAC1CK,aAAczpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,CAAC,UACzCM,KAAM1pG,EAAIoC,KAAK,CAACpC,EAAII,KAAM0oG,GAAgB,CAACK,GAAa,IACxDzmD,IAAK1iD,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAACipG,GAAW,CAAC,UACvCM,aAAc3pG,EAAIoC,KAAK,GAAI,CAACN,GAAW,CAAC,UACxC8nG,QAAS5pG,EAAIoC,KAAK,GAAI,CAACZ,GAAW,CAAC,UACnC+hD,QAASvjD,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC4B,GAAS,CAAC,UACzCqpD,OAAQrrD,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC+oG,GAAa,IAC3CU,YAAa7pG,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC+oG,GAAa,IAChDW,WAAY9pG,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAII,MAAO,CAAC+oG,GAAa,KACzD,ECzCSrpG,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM+B,EAAW9B,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAII,KAAMsB,IAAK1B,EAAII,OAChD4B,EAAShC,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAI2C,KAAMjB,IAAK1B,EAAII,OAC9C2pG,EAAa/pG,EAAIiC,IAAIjC,EAAIqmD,MACzB2jD,EAAUhqG,EAAIE,OAAO,CACzBwrC,MAAO1rC,EAAIiB,UACXgyC,WAAYjzC,EAAIspG,IAAIS,KAEhBzjD,EAAYtmD,EAAIE,OAAO,CAC3BK,IAAKP,EAAIQ,IACT8H,SAAUtI,EAAIQ,IACdypG,gBAAiBjqG,EAAIspG,IAAIU,GACzBrgG,KAAM3J,EAAIspG,IAAItpG,EAAII,MAClB2I,KAAM/I,EAAII,KACVmb,UAAWvb,EAAIiB,UACfipG,gBAAiBlqG,EAAIQ,IACrB2pG,WAAYnqG,EAAIspG,IAAItpG,EAAIQ,KACxBuO,MAAO/O,EAAIQ,IACXH,SAAUL,EAAII,KACdgqG,aAAcpqG,EAAIQ,IAClBqI,OAAQ7I,EAAII,OAERiqG,EAAOrqG,EAAIE,OAAO,CACtB2F,QAAS7F,EAAIiC,IAAIqkD,GACjB7d,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEfgB,EAAWxB,EAAIkB,QAAQ,CAAEO,GAAI4oG,EAAM3oG,IAAK1B,EAAII,OAClD,OAAOJ,EAAIkC,QAAQ,CACjBqoG,SAAUvqG,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACa,GAAW,CAAC,UACjD0oG,eAAgBxqG,EAAIoC,KAAK,GAAI,CAACJ,GAAS,CAAC,UACxCyoG,eAAgBzqG,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAIQ,IAAKR,EAAIspG,IAAItpG,EAAI2C,OAAQ,CAACnB,GAAW,CAAC,UAC7EkpG,eAAgB1qG,EAAIoC,KAAK,CAACpC,EAAI2C,MAAO,CAACX,GAAS,IAC/C2oG,gBAAiB3qG,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIQ,KAAM,CAACwB,GAAS,IAC9D4oG,eAAgB5qG,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAII,MAAO,CAAC4B,GAAS,KAC9D,E,yBCpCG,MAAM6oG,EAAU,kB,olBCOvB,IAAIC,EAA+C,CAAC,EAW7C,IAAK94F,GAAZ,SAAYA,GACVA,EAAA,kBACAA,EAAA,YACAA,EAAA,cACAA,EAAA,QACAA,EAAA,YACAA,EAAA,oBACAA,EAAA,QACAA,EAAA,gCACAA,EAAA,mBACD,CAVD,CAAYA,IAAAA,EAAS,KAsCf,MAAO2uB,EAAbvY,WAAAA,GACU,KAAA1V,UAAuBV,EAAUG,QAEjC,KAAAisF,MAA0B,KAE1B,KAAAt9D,KAAe+pE,EAEf,KAAAE,eAAuC,GAIxC,KAAAC,KAAM,CAmKf,CAjKSxjB,YAAAA,CAAa90E,GAClB6V,KAAK7V,UAAYA,CACnB,CAEalP,MAAAA,CAAM2nD,G,2DAAI,WACrBnqD,EAAU,KACV8/B,EAAI,WACJhhC,EAAU,SACVgjD,EAAQ,MACRs7C,EAAK,UACL36F,GACiB1D,EAAA,mBACjB,IAAIP,EAAKwB,EAET,IADKxB,GAAMiE,IAAWjE,EAAKsrG,EAAkBrnG,KACxCjE,EAAI,MAAM,IAAIH,MAAM,kBAEzB,MAAM4rG,EAAY,OAAJnqE,QAAI,IAAJA,EAAAA,EAAQ5H,EAAK4H,KAIrBoqE,EAAeprG,EAAW,CAAEE,IAAGA,EAAAA,KAErC,IAAIuD,EAAiC,KAGjC4nG,EAAkC,KAEtC,GAAIroD,EACF,IACEv/C,QAAcwrB,OAAOk4D,YAAYiX,YAAe,CAC9Cl9F,WAAYxB,EACZ2+F,iBAAkBr+F,GAEtB,CAAE,MAAO0U,GACP22F,EAAmBl5D,OAAOz9B,EAC5B,MAEAjR,QC/FA,SAA+B4nD,G,gDAAI,WACvCnqD,EAAU,iBACVm9F,EAAgB,aAChBiN,EAAY,MACZhN,EAAK,aACLE,GAAe,GACMv+F,EAAA,mBAWrB,OATIu+F,UACS,OAALF,QAAK,IAALA,OAAK,EAALA,EAAOE,eAAe3zC,OAAOjpD,IACjCo8B,QAAQkuB,KACN,gFAEFluB,QAAQtpB,MAAM9S,EAAI,KAIfi/B,EAAAA,MAAMu9D,YAAeC,EAAgBx+F,OAAAyR,OAAA,CAC1CgtF,MAAOA,EACPp9F,cACgB,OAAZoqG,QAAY,IAAZA,EAAAA,EAAgB,CAAC,GAEzB,CAhBuB,EAgBtB,G,CDyEmBC,CAAmB,CAC/BrqG,WAAYxB,EACZ2+F,iBAAkBr+F,EAClBs+F,MAAOllE,EAAKoyE,eAAeL,GAC3B3M,aAAc2M,IAAUJ,IAI5B,MAAMU,EAAc,CAAC,EAgErB,OA9DAL,EAAaM,QAAQv9F,SAASqS,IAC5B,MAAMzf,EAAMyf,EAAI,GAEhBirF,EAAO1qG,GAAO,mBAAA8vB,EAAA3G,UAAA1a,OAAUshB,EAAI,IAAAxC,MAAAuC,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAAJD,EAAIC,GAAA7G,UAAA6G,GAAA,OAAIm5B,EAAA9wB,OAAA,sB,YAC9B,GAAIiyE,EACF,MAAO,CACLzpG,IAAK,GAAF6H,OAAK4hG,EAAgB,2HAS5B,IACE,IAAK5nG,EAAO,MAAO,CAAE7B,IAAK,YAE1B,GAAI6mB,KAAKkjF,aAAc,CACrB,MAAMC,QAAoBnjF,KAAKkjF,aAAa,CAC1CzqG,WAAc,OAAFxB,QAAE,IAAFA,EAAAA,EAAM,GAClBmsG,OAAQ9qG,EACRiiD,WACApwC,UAAW6V,KAAK7V,YAGlB,IAA4B,IAAxBg5F,EAAY3jF,QACd,MAAO,CAAErmB,IAAKgqG,EAAYhxF,QAE9B,CAEA,MAAMnT,EAAShE,EAAM1C,MAAQ+vB,GAC7B,aAAarpB,CACf,CAAE,MAAOiN,GACP,MAAMkuE,EAASzwC,OAAOz9B,GAEtB,IAAIkG,EAAU,GACd,GAAIgoE,EAAOh6E,SAAS,gBAAiB,CACnC,MAAMgqC,EAAyD,QAA9Ck5D,EAAgC,QAAhCzgD,EAAAu3B,EAAO9yD,MAAM,iBAAiB,UAAE,IAAAu7B,OAAA,EAAAA,EAAEv7B,MAAM,cAAM,IAAAg8E,EAAAA,EAAI,GACnElxF,EAAUg4B,EAAsB,QAAXm5D,EAAAn5D,EAAS,UAAE,IAAAm5D,OAAA,EAAAA,EAAEC,OAASppB,CAC7C,KAAO,CACL,MAAMhwC,EAAWgwC,EAAOh6E,SAAS,aAA6C,QAA9BqjG,EAAArpB,EAAO9yD,MAAM,eAAe,UAAE,IAAAm8E,OAAA,EAAAA,EAAEn8E,MAAM,KAAO,GAC7FlV,EAAUgoE,EAAOh6E,SAAS,cAAkBgqC,EAAWA,EAAS,GAAKgwC,CACvE,CAcA,OAZIn6D,KAAKyiF,MACPltE,QAAQktE,IAAI,gCACZltE,QAAQktE,IAAI,aAAcxrG,GAC1Bs+B,QAAQktE,IAAI,WAAYnqG,GACxBi9B,QAAQktE,IAAI,aAActwF,GAC1BojB,QAAQktE,IAAI,iCAGdziF,KAAKwiF,eAAe98F,SAAS07B,IAC3BA,EAAK,CAAE3oC,WAAc,OAAFxB,QAAE,IAAFA,EAAAA,EAAM,GAAImsG,OAAQ9qG,EAAK6Z,WAAU,IAG/C,CAAEhZ,IAAKgZ,EAChB,CACF,GAAC,KAGI6wF,CACT,CAnGmB,EAmGlB,G,CAEMD,cAAAA,CAAexqE,GACpB,OAAO,IAAIu9D,EAAAA,UAAU,CACnBv9D,KAAU,OAAJA,QAAI,IAAJA,EAAAA,EAAQvY,KAAKuY,MAEvB,CAEakrE,WAAAA,CAAYhrG,EAAoB8/B,EAAcgiB,G,yCAEzD,OAAiB,IAAbA,EACEv6B,KAAK7V,YAAcV,EAAUO,YACzBwc,OAAOm2C,GAAGG,KAAK2mC,YAAY,CAAE3O,UAAW,CAACr8F,GAAa8/B,SACrD/R,OAAOm2C,GAAGG,KAAK+4B,OAEpB71E,KAAK7V,YAAcV,EAAUI,SACxB,IAAIisF,EAAAA,UAAU,CACnBv9D,SAGG/R,OAAOk4D,YAAYqZ,UAGrB,IAAIjC,EAAAA,UAAU,CACnBv9D,QAEJ,G,CAEOmrE,QAAAA,CAAS7N,GACd71E,KAAK61E,MAAQA,CACf,CAEOv9D,OAAAA,CAAQC,GACbvY,KAAKuY,KAAOA,CACd,CAEO,0BAAOF,CAAoB7C,GAChC+sE,EAAoB/sE,CACtB,CAEOuqC,OAAAA,CAAQp9C,GACb3C,KAAKwiF,eAAex8F,KAAK2c,EAC3B,CAEOy9C,QAAAA,CAASz9C,GACd3C,KAAKkjF,aAAevgF,CACtB,CAEOghF,MAAAA,CAAOlB,GACZziF,KAAKyiF,IAAMA,CACb,EAGK,MAAMznG,EAAQ,IAAIo9B,EExOlB,IAAKj9B,GAAZ,SAAYA,GACVA,EAAA,oBACAA,EAAA,0BACAA,EAAA,0BACAA,EAAA,yBACAA,EAAA,kCACAA,EAAA,gCAEAA,EAAA,oCACAA,EAAA,sBACAA,EAAA,uBACAA,EAAA,oBACAA,EAAA,oBACAA,EAAA,UAEAA,EAAA,sBACAA,EAAA,gCAEAA,EAAA,cACAA,EAAA,YAEAA,EAAA,gCACAA,EAAA,YACAA,EAAA,0BACAA,EAAA,sBAEAA,EAAA,gDACAA,EAAA,iCACAA,EAAA,mCACAA,EAAA,2BAEAA,EAAA,sCACAA,EAAA,0CACAA,EAAA,oCACAA,EAAA,oCAEAA,EAAA,kCACAA,EAAA,4BAEAA,EAAA,kCACAA,EAAA,qCACAA,EAAA,sCAEAA,EAAA,gDACAA,EAAA,sBACAA,EAAA,oCACAA,EAAA,wBAEAA,EAAA,8CACAA,EAAA,0BACAA,EAAA,wCAEAA,EAAA,0BACAA,EAAA,sBACAA,EAAA,sBAEAA,EAAA,+BACD,CAzDD,CAAYA,IAAAA,EAAS,K,0SCSd,MAAM4/C,EAAmBR,GAAmBkH,OAAA,6BACjD,OAAAzmD,EAAMC,OAAyB,CAC7BC,UAAWC,EAAU87B,UACrBsjB,WACAhjD,WAAYqsG,G,IAGHC,EAAiBA,IAAWpiD,OAAA,6BACvC,OAAAzmD,EAAMC,OAA8B,CAClCxC,WAAY,8BACZlB,WAAYusG,G,IChBT,MCHMvsG,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACFC,EAAIE,OAAO,CAC5CosG,mBAAoBtsG,EAAIiC,IAAIjC,EAAIiB,WAChCsrG,wBAAyBvsG,EAAI2C,KAC7B6pG,eAAgBxsG,EAAIiC,IAAIjC,EAAIiB,aAH9B,MAKMwrG,EAAUzsG,EAAIE,OAAO,CACzBwsG,KAAM1sG,EAAIiC,IAAIjC,EAAIqmD,MAClBsmD,cAAe3sG,EAAI4sG,QAEfC,EAAiB7sG,EAAIE,OAAO,CAChC+pE,KAAMjqE,EAAIiC,IAAIjC,EAAIqmD,MAClBqmD,KAAM1sG,EAAIspG,IAAImD,KAEVK,EAAe9sG,EAAIE,OAAO,CAAEwa,QAAS1a,EAAII,OACzC4B,EAAShC,EAAIkB,QAAQ,CACzB7B,MAAOytG,EACPC,KAAM/sG,EAAIiC,IAAIjC,EAAIqmD,QAEd2mD,EAAkBhtG,EAAIE,OAAO,CAAEqH,OAAQvH,EAAIspG,IAAItnG,KAC/CirG,EAAqCjtG,EAAIE,OAAO,CACpDgtG,gCAAiCltG,EAAIwmD,MACrC5qB,MAAO57B,EAAIwmD,QAEP2mD,EAAWntG,EAAIE,OAAO,CAAEV,GAAIQ,EAAIspG,IAAItpG,EAAIiB,aACxCmsG,EAAgBptG,EAAIE,OAAO,CAAEmtG,UAAWrtG,EAAIiC,IAAIkrG,KAChDG,EAA2BttG,EAAIE,OAAO,CAC1CqtG,gBAAiBvtG,EAAIspG,IAAItpG,EAAIwmD,OAC7BgnD,kBAAmBxtG,EAAIspG,IAAItpG,EAAIwmD,OAC/BinD,kCAAmCztG,EAAIspG,IAAItpG,EAAIwmD,OAC/CknD,kBAAmB1tG,EAAIspG,IAAItpG,EAAIwmD,OAC/BmnD,gCAAiC3tG,EAAIspG,IAAItpG,EAAIwmD,SAEzConD,EAAoC5tG,EAAIE,OAAO,CACnD2tG,0BAA2B7tG,EAAIspG,IAAItpG,EAAII,QAEnC0tG,EAAsC9tG,EAAIE,OAAO,CACrD6tG,sBAAuB/tG,EAAIiC,IAAIqrG,GAC/BU,uCAAwChuG,EAAIspG,IAAItpG,EAAIwmD,OACpDynD,2CAA4CjuG,EAAIspG,IAAItpG,EAAIwmD,OACxD0nD,qCAAsCluG,EAAIspG,IACxCsE,KAGEO,EAAWnuG,EAAIE,OAAO,CAC1BkuG,2BAA4BpuG,EAAIspG,IAAItpG,EAAI2C,MACxC0rG,cAAeruG,EAAIwmD,MACnB8nD,eAAgBtuG,EAAIwmD,QAEhB+nD,EAAgBvuG,EAAIE,OAAO,CAC/BsuG,iBAAkBxuG,EAAII,KACtBquG,WAAYzuG,EAAIiC,IAAIksG,KAEhBO,EAA0B1uG,EAAIE,OAAO,CACzCyuG,aAAc3uG,EAAIiC,IAAIssG,KAElBK,EAAuB5uG,EAAIE,OAAO,CAAE2uG,UAAW7uG,EAAIwmD,QACnDsoD,EAAqB9uG,EAAIE,OAAO,CACpC6uG,WAAY/uG,EAAIspG,IAAItpG,EAAIiB,WACxB+tG,uBAAwBhvG,EAAIwmD,MAC5B5vB,KAAM52B,EAAIwmD,MACVyoD,UAAWjvG,EAAIwmD,MACf0oD,uBAAwBlvG,EAAIspG,IAAItpG,EAAIwmD,SAEhC2oD,EAAwBnvG,EAAIE,OAAO,CACvCkvG,kBAAmBpvG,EAAIiC,IAAI6sG,KAEvBO,EAAsBrvG,EAAIE,OAAO,CACrCovG,gBAAiBtvG,EAAIiC,IAAI6sG,KAErBS,EAAmBvvG,EAAIE,OAAO,CAClC2uG,UAAW7uG,EAAIwmD,MACfgpD,wBAAyBxvG,EAAIwmD,QAEzBipD,EAAiCzvG,EAAIE,OAAO,CAChDwvG,sBAAuB1vG,EAAIspG,IAAIsF,GAC/Be,uBAAwB3vG,EAAIspG,IAAI6F,GAChCS,qBAAsB5vG,EAAIspG,IAAI+F,GAC9BQ,kBAAmB7vG,EAAIspG,IAAIiG,KAEvBO,EAA2B9vG,EAAIkB,QAAQ,CAC3CuuG,+BAAgCA,IAE5BM,EAAY/vG,EAAIE,OAAO,CAAE8vG,UAAWhwG,EAAIiC,IAAIjC,EAAII,QAChD6vG,EAAiBjwG,EAAIE,OAAO,CAChCsiF,IAAKxiF,EAAIspG,IAAItpG,EAAII,MACjB8vG,2BAA4BlwG,EAAIspG,IAAItpG,EAAIwmD,OACxC2pD,oCAAqCnwG,EAAIspG,IAAItpG,EAAIwmD,OACjD4pD,gBAAiBpwG,EAAIspG,IAAItpG,EAAIwmD,OAC7B6pD,2BAA4BrwG,EAAIspG,IAAItpG,EAAI2C,MACxC2tG,wBAAyBtwG,EAAIspG,IAAItpG,EAAIwmD,OACrC+pD,sCAAuCvwG,EAAIspG,IACzC2D,GAEFuD,kCAAmCxwG,EAAIiC,IAAIjC,EAAII,MAC/CqwG,aAAczwG,EAAIspG,IAAItpG,EAAII,MAC1BswG,+BAAgC1wG,EAAIspG,IAAItpG,EAAIwmD,OAC5CmqD,YAAa3wG,EAAIspG,IAAItpG,EAAIwmD,OACzBoqD,yBAA0B5wG,EAAIspG,IAAItpG,EAAIwmD,OACtCqqD,kBAAmB7wG,EAAIspG,IAAItpG,EAAII,MAC/BuJ,KAAM3J,EAAIspG,IAAItpG,EAAII,MAClB2I,KAAM/I,EAAIspG,IAAItpG,EAAII,MAClB0wG,6BAA8B9wG,EAAIspG,IAAItpG,EAAIwmD,OAC1CuqD,2BAA4B/wG,EAAIspG,IAAItpG,EAAIwmD,OACxCwqD,8BAA+BhxG,EAAIspG,IAAItpG,EAAIwmD,OAC3CyqD,8CAA+CjxG,EAAIspG,IAAItpG,EAAIwmD,OAC3D/iC,YAAazjB,EAAIspG,IAAItpG,EAAII,MACzB8wG,qCAAsClxG,EAAIspG,IAAItpG,EAAIwmD,OAClD2qD,iBAAkBnxG,EAAIspG,IAAItpG,EAAIwmD,OAC9B4qD,iCAAkCpxG,EAAIspG,IAAItpG,EAAIwmD,OAC9C6qD,yCAA0CrxG,EAAIspG,IAAItpG,EAAIwmD,OACtD8qD,oBAAqBtxG,EAAIspG,IAAItpG,EAAIwmD,OACjC+qD,eAAgBvxG,EAAIspG,IAAI8D,GACxBoE,uCAAwCxxG,EAAIspG,IAC1CwE,GAEF2D,0BAA2BzxG,EAAIspG,IAAIoF,GACnCgD,yBAA0B1xG,EAAIspG,IAAItpG,EAAIwmD,OACtCmrD,2BAA4B3xG,EAAIspG,IAAIwG,GACpC8B,wCAAyC5xG,EAAIspG,IAAItpG,EAAIwmD,OACrDqrD,WAAY7xG,EAAIspG,IAAItpG,EAAII,MACxB0xG,WAAY9xG,EAAIspG,IAAItpG,EAAII,MACxB2xG,wBAAyB/xG,EAAIspG,IAAItpG,EAAIwmD,OACrCwrD,iCAAkChyG,EAAIspG,IAAItpG,EAAIwmD,OAC9CyrD,yBAA0BjyG,EAAIspG,IAAItpG,EAAIwmD,OACtC0rD,qBAAsBlyG,EAAIspG,IAAIyG,GAC9BoC,YAAanyG,EAAIspG,IAAItpG,EAAIwmD,OACzB4rD,iCAAkCpyG,EAAIspG,IAAItpG,EAAIwmD,SAE1C6rD,EAAsBryG,EAAIE,OAAO,CACrCoyG,iBAAkBtyG,EAAIspG,IAAI2G,KAEtBsC,EAA8BvyG,EAAIE,OAAO,CAC7CsyG,wBAAyBxyG,EAAIiC,IAAIkrG,GACjCsF,8BAA+BzyG,EAAIiC,IAAIkrG,GACvCuF,8BAA+B1yG,EAAIiC,IAAIkrG,KAEnCwF,EAAiB3yG,EAAIE,OAAO,CAChCie,KAAMne,EAAIspG,IAAItpG,EAAIiB,WAClBktF,KAAMnuF,EAAIspG,IAAItpG,EAAIiB,WAClB2xG,OAAQ5yG,EAAIspG,IAAItpG,EAAIiB,WACpB8N,MAAO/O,EAAIspG,IAAItpG,EAAIiB,WACnB4xG,WAAY7yG,EAAIspG,IAAItpG,EAAIiB,aAEpB6xG,EAAuB9yG,EAAIE,OAAO,CACtC6yG,+BAAgC/yG,EAAIspG,IAAIiJ,GACxCS,UAAWhzG,EAAIspG,IAAItpG,EAAIiB,WACvBuT,MAAOxU,EAAIspG,IAAIwD,GACfO,UAAWrtG,EAAIspG,IAAIqJ,KAEfM,EAA+BjzG,EAAIE,OAAO,CAC9CosG,mBAAoBtsG,EAAIiC,IAAIjC,EAAIiB,aAE5BiyG,EAAoClzG,EAAIE,OAAO,CACnDizG,YAAanzG,EAAIwmD,QAEb4sD,EAAcpzG,EAAIE,OAAO,CAC7BoO,iBAAkBtO,EAAIspG,IAAItpG,EAAIiB,WAC9BkwC,uBAAwBnxC,EAAIspG,IAAItpG,EAAIiB,WACpCoyG,kBAAmBrzG,EAAIspG,IAAItpG,EAAIiB,WAC/BqyG,iBAAkBtzG,EAAIspG,IAAItpG,EAAIiB,WAC9BoN,mBAAoBrO,EAAIspG,IAAItpG,EAAIiB,aAE5BsyG,EAAmCvzG,EAAIkB,QAAQ,CACnD7B,MAAOytG,EACPsG,YAAaA,IAETI,EAAqCxzG,EAAIE,OAAO,CACpDuzG,uCAAwCzzG,EAAIspG,IAC1CiK,KAGEG,EAAa1zG,EAAIE,OAAO,CAC5ByzG,kBAAmB3zG,EAAIiC,IAAIjC,EAAIqmD,MAC/ButD,eAAgB5zG,EAAIiC,IAAIjC,EAAIqmD,MAC5BwtD,eAAgB7zG,EAAIiC,IAAIjC,EAAIqmD,MAC5BytD,iBAAkB9zG,EAAIiC,IAAIjC,EAAIqmD,MAC9B0tD,qBAAsB/zG,EAAIiC,IAAIjC,EAAIqmD,MAClC2tD,gBAAiBh0G,EAAIiC,IAAIjC,EAAIqmD,QAEzB4tD,EAA2Bj0G,EAAIE,OAAO,CAC1CixC,uBAAwBnxC,EAAIspG,IAAItpG,EAAIiB,WACpCizG,gBAAiBl0G,EAAIspG,IAAIoK,KAErBS,EAA4Bn0G,EAAIE,OAAO,CAC3Ck0G,aAAcp0G,EAAIspG,IAAIoK,KAElBW,EAA0Br0G,EAAIE,OAAO,CACzCssG,eAAgBxsG,EAAIiC,IAAIjC,EAAIiB,aAExBqzG,EAAiBt0G,EAAIE,OAAO,CAAE+pE,KAAMjqE,EAAIiC,IAAIjC,EAAIqmD,QAChDkuD,EAAkBv0G,EAAIE,OAAO,CAAEwsG,KAAM1sG,EAAIspG,IAAImD,KAC7C+H,EAAax0G,EAAIE,OAAO,CAC5Bk0G,aAAcp0G,EAAIspG,IAAIoK,GACtBQ,gBAAiBl0G,EAAIspG,IAAIoK,KAErBe,EAAkCz0G,EAAIE,OAAO,CACjDw0G,aAAc10G,EAAIiC,IAAIuyG,GACtBG,2BAA4B30G,EAAIspG,IAAItpG,EAAIiB,aAEpC2zG,EAAmC50G,EAAIE,OAAO,CAClDsU,MAAOxU,EAAIspG,IAAIwD,KAEX+H,EAA4B70G,EAAIE,OAAO,CAC3C40G,UAAW90G,EAAIiC,IAAImxG,KAEf2B,EAA0B/0G,EAAIE,OAAO,CACzCwoC,MAAO1oC,EAAIgpG,MACXgM,YAAah1G,EAAIspG,IAAIoK,GACrBiB,2BAA4B30G,EAAIspG,IAAItpG,EAAIiB,aAEpCg0G,EAAmBj1G,EAAIE,OAAO,CAClCyzG,kBAAmB3zG,EAAII,KACvBwzG,eAAgB5zG,EAAII,KACpByzG,eAAgB7zG,EAAII,KACpB0zG,iBAAkB9zG,EAAII,KACtB2zG,qBAAsB/zG,EAAII,KAC1B4zG,gBAAiBh0G,EAAII,OAEjB80G,EAAkBl1G,EAAIE,OAAO,CACjCi1G,eAAgBn1G,EAAIspG,IAAI2L,GACxBprD,QAAS7pD,EAAIspG,IAAIoK,KAEb0B,EAA2Bp1G,EAAIE,OAAO,CAC1CwwF,MAAO1wF,EAAIiC,IAAIizG,KAEXG,EAAiCr1G,EAAIE,OAAO,CAChDo1G,iBAAkBt1G,EAAIiC,IAAIjC,EAAIiB,WAC9Bs0G,mBAAoBv1G,EAAIiC,IAAIjC,EAAIiB,aAE5Bu0G,EAAgCx1G,EAAIkB,QAAQ,CAChD7B,MAAOytG,EACP2I,kBAAmBxC,IAEfyC,EAAkC11G,EAAIE,OAAO,CACjDy1G,iCAAkC31G,EAAIspG,IAAIkM,KAEtCI,EAA6B51G,EAAIE,OAAO,CAC5C21G,sBAAuB71G,EAAIiC,IAAIjC,EAAIiB,WACnC60G,yBAA0B91G,EAAIiC,IAAIjC,EAAIiB,aAElC80G,EAA8B/1G,EAAIE,OAAO,CAC7CsU,MAAOxU,EAAIspG,IAAIwD,KAEjB,OAAO9sG,EAAIkC,QAAQ,CACjB8zG,SAAUh2G,EAAIoC,KAAK,CAACyqG,GAAiB,CAACG,GAAkB,IACxDiJ,eAAgBj2G,EAAIoC,KAAK,CAACiwG,GAAsB,CAACS,GAAuB,IACxEoD,uBAAwBl2G,EAAIoC,KAC1B,CAACpC,EAAIE,OAAO,CAAC,IACb,CAAC+yG,GACD,CAAC,UAEHkD,gCAAiCn2G,EAAIoC,KACnC,CAAC8wG,GACD,CAACM,GACD,CAAC,UAEH4C,8BAA+Bp2G,EAAIoC,KACjC,CAACpC,EAAIoB,MACL,CAACpB,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAMJ,EAAII,QACjC,CAAC,UAEHi2G,qBAAsBr2G,EAAIoC,KACxB,CAAC6xG,GACD,CAACE,GACD,CAAC,UAEHmC,mBAAoBt2G,EAAIoC,KACtB,CAACpC,EAAIE,OAAO,CAAC,IACb,CAACm0G,GACD,CAAC,UAEHkC,SAAUv2G,EAAIoC,KAAK,CAACkyG,GAAiB,CAACC,GAAkB,CAAC,UACzDiC,4BAA6Bx2G,EAAIoC,KAC/B,CAACqyG,GACD,CAACG,GACD,IAEF6B,oBAAqBz2G,EAAIoC,KACvB,CAACpC,EAAIE,OAAO,CAAC,IACb,CAAC20G,GACD,CAAC,UAEH6B,mBAAoB12G,EAAIoC,KACtB,CAAC2yG,GACD,CAACK,GACD,CAAC,UAEHuB,0BAA2B32G,EAAIoC,KAC7B,CAACizG,GACD,CAACK,GACD,IAEFkB,uBAAwB52G,EAAIoC,KAC1B,CAACwzG,GACD,CAACG,GACD,KAEF,E,0SCvSG,MAAMc,EAAWA,IAAW7sD,OAAA,6BACjC,OAAAzmD,EAAMC,OAAyB,CAC7BxC,WAAY,8BACZlB,WAAYg3G,G,ICNHh3G,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMktG,EAAqCjtG,EAAIE,OAAO,CACpDgtG,gCAAiCltG,EAAIwmD,MACrC5qB,MAAO57B,EAAIwmD,QAEP8mD,EAA2BttG,EAAIE,OAAO,CAC1CqtG,gBAAiBvtG,EAAIspG,IAAItpG,EAAIwmD,OAC7BgnD,kBAAmBxtG,EAAIspG,IAAItpG,EAAIwmD,OAC/BinD,kCAAmCztG,EAAIspG,IAAItpG,EAAIwmD,OAC/CknD,kBAAmB1tG,EAAIspG,IAAItpG,EAAIwmD,OAC/BmnD,gCAAiC3tG,EAAIspG,IAAItpG,EAAIwmD,SAEzConD,EAAoC5tG,EAAIE,OAAO,CACnD2tG,0BAA2B7tG,EAAIspG,IAAItpG,EAAII,QAEnC0tG,EAAsC9tG,EAAIE,OAAO,CACrD6tG,sBAAuB/tG,EAAIiC,IAAIqrG,GAC/BU,uCAAwChuG,EAAIspG,IAAItpG,EAAIwmD,OACpDynD,2CAA4CjuG,EAAIspG,IAAItpG,EAAIwmD,OACxD0nD,qCAAsCluG,EAAIspG,IACxCsE,KAGEO,EAAWnuG,EAAIE,OAAO,CAC1BkuG,2BAA4BpuG,EAAIspG,IAAItpG,EAAI2C,MACxC0rG,cAAeruG,EAAIwmD,MACnB8nD,eAAgBtuG,EAAIwmD,QAEhB+nD,EAAgBvuG,EAAIE,OAAO,CAC/BsuG,iBAAkBxuG,EAAII,KACtBquG,WAAYzuG,EAAIiC,IAAIksG,KAEhBO,EAA0B1uG,EAAIE,OAAO,CACzC62G,gBAAiB/2G,EAAIiC,IAAIssG,KAErBwB,EAAY/vG,EAAIE,OAAO,CAAE8vG,UAAWhwG,EAAIiC,IAAIjC,EAAII,QAChD42G,EAAOh3G,EAAIE,OAAO,CACtBkwG,gBAAiBpwG,EAAIspG,IAAItpG,EAAIwmD,OAC7BywD,qBAAsBj3G,EAAII,KAC1BiwG,2BAA4BrwG,EAAIspG,IAAItpG,EAAI2C,MACxC2tG,wBAAyBtwG,EAAIspG,IAAItpG,EAAIwmD,OACrC+pD,sCAAuCvwG,EAAIspG,IACzC2D,GAEFuD,kCAAmCxwG,EAAIiC,IAAIjC,EAAII,MAC/CuwG,YAAa3wG,EAAIspG,IAAItpG,EAAIwmD,OACzBoqD,yBAA0B5wG,EAAIspG,IAAItpG,EAAIwmD,OACtCqqD,kBAAmB7wG,EAAIspG,IAAItpG,EAAII,MAC/B0wG,6BAA8B9wG,EAAIspG,IAAItpG,EAAIwmD,OAC1CuqD,2BAA4B/wG,EAAIspG,IAAItpG,EAAIwmD,OACxC2qD,iBAAkBnxG,EAAIspG,IAAItpG,EAAIgpG,OAC9BkO,cAAel3G,EAAIspG,IAAItpG,EAAIwmD,OAC3B2wD,2BAA4Bn3G,EAAII,KAChCkxG,oBAAqBtxG,EAAIspG,IAAItpG,EAAIwmD,OACjC4wD,uBAAwBp3G,EAAII,KAC5Bi3G,uBAAwBr3G,EAAII,KAC5BoxG,uCAAwCxxG,EAAIspG,IAC1CwE,GAEF2D,0BAA2BzxG,EAAIspG,IAAIoF,GACnC4I,qBAAsBt3G,EAAIspG,IAAItpG,EAAI2C,MAClCovG,wBAAyB/xG,EAAIspG,IAAItpG,EAAIwmD,OACrCmuD,2BAA4B30G,EAAII,KAChC4xG,iCAAkChyG,EAAIspG,IAAItpG,EAAIwmD,OAC9C0rD,qBAAsBlyG,EAAIspG,IAAIyG,GAC9BoC,YAAanyG,EAAIspG,IAAItpG,EAAIwmD,OACzB4rD,iCAAkCpyG,EAAIspG,IAAItpG,EAAIwmD,SAE1C+wD,EAAwBv3G,EAAIE,OAAO,CACvCs3G,oBAAqBx3G,EAAIspG,IAAItpG,EAAIiB,aAE7BwkD,EAAKzlD,EAAIE,OAAO,CAAEu3G,aAAcz3G,EAAIspG,IAAItpG,EAAIwmD,SAC5Cd,EAAM1lD,EAAIE,OAAO,CACrBujB,YAAazjB,EAAIspG,IAAItpG,EAAII,MACzBs3G,WAAY13G,EAAIspG,IAAItpG,EAAI4sG,SAEpB5qG,EAAShC,EAAIkB,QAAQ,CAAEukD,GAAIA,EAAIC,IAAKA,IACpCiyD,EAAyB33G,EAAIE,OAAO,CAAEqH,OAAQvH,EAAIspG,IAAItnG,KACtD41G,EAAoB53G,EAAIE,OAAO,CACnCZ,KAAMU,EAAIspG,IAAItpG,EAAI4sG,OAClBnpF,YAAazjB,EAAII,OAEby3G,EAAe73G,EAAIE,OAAO,CAC9BwB,IAAK1B,EAAIspG,IAAIsO,GACbE,iBAAkB93G,EAAIspG,IAAItpG,EAAIiB,aAE1B82G,EAA6B/3G,EAAIE,OAAO,CAC5C83G,eAAgBh4G,EAAIiC,IAAI41G,KAEpBI,EAAcj4G,EAAIkB,QAAQ,CAC9BukD,GAAIsyD,EACJryD,IAAKkyD,IAEDM,EAA+Bl4G,EAAIE,OAAO,CAC9Ci4G,YAAan4G,EAAIspG,IAAI2O,KAEjBG,EAAcp4G,EAAIE,OAAO,CAC7Bm4G,QAASr4G,EAAIgpG,MACbsP,QAASt4G,EAAIgpG,MACbuP,QAASv4G,EAAIgpG,MACbjhF,QAAS/nB,EAAIgpG,MACbwP,gBAAiBx4G,EAAIgpG,QAEjByP,EAAkBz4G,EAAIE,OAAO,CACjCw4G,cAAe14G,EAAII,KACnBs3G,WAAY13G,EAAI4sG,QAEZ+L,EAAW34G,EAAIE,OAAO,CAC1B04G,iBAAkB54G,EAAIspG,IAAImP,KAEtBI,EAAgB74G,EAAIkB,QAAQ,CAChCukD,GAAIkzD,EACJjzD,IAAKkyD,IAEDkB,EAAyC94G,EAAIE,OAAO,CACxDi4G,YAAan4G,EAAIspG,IAAIuP,KAEjBE,EAAO/4G,EAAIE,OAAO,CACtB84G,mCAAoCh5G,EAAIspG,IAAItpG,EAAIwmD,OAChDyyD,2BAA4Bj5G,EAAIspG,IAAItpG,EAAIwmD,SAEpCnnD,EAAQW,EAAIE,OAAO,CAAEwa,QAAS1a,EAAIspG,IAAItpG,EAAII,QAC1C84G,EAAgBl5G,EAAIkB,QAAQ,CAAEukD,GAAIszD,EAAMrzD,IAAKrmD,IAC7C85G,EAAuCn5G,EAAIE,OAAO,CACtDi4G,YAAan4G,EAAIspG,IAAI4P,KAEjBE,EAAgBp5G,EAAIkB,QAAQ,CAChCukD,GAAIzlD,EAAIE,OAAO,CAAC,GAChBwlD,IAAKkyD,IAEDyB,EAAoBr5G,EAAIE,OAAO,CACnCi4G,YAAan4G,EAAIspG,IAAI8P,KAEjBE,EAAuBt5G,EAAIE,OAAO,CACtCq5G,iCAAkCv5G,EAAIspG,IAAI4O,GAC1CsB,iCAAkCx5G,EAAIspG,IAAI8O,GAC1CqB,2CAA4Cz5G,EAAIspG,IAC9CwP,GAEFJ,cAAe14G,EAAIspG,IAAItpG,EAAII,MAC3Bs5G,yCAA0C15G,EAAIspG,IAC5C6P,GAEFQ,qBAAsB35G,EAAIspG,IAAI+P,GAC9BO,iBAAkB55G,EAAIspG,IAAI8O,GAC1ByB,oBAAqB75G,EAAIspG,IAAI8O,GAC7B0B,iBAAkB95G,EAAIspG,IAAI8O,KAEtB2B,EAAoC/5G,EAAIE,OAAO,CACnD85G,4BAA6Bh6G,EAAIspG,IAAIgQ,GACrCW,iCAAkCj6G,EAAIspG,IAAItpG,EAAI2C,MAC9Cu3G,yBAA0Bl6G,EAAIspG,IAAItpG,EAAI2C,QAElCw3G,EAAuBn6G,EAAIE,OAAO,CACtCk6G,aAAcp6G,EAAIspG,IAAItpG,EAAIiB,aAEtBo5G,EAAqBr6G,EAAIE,OAAO,CACpCo6G,sBAAuBt6G,EAAIspG,IAAItpG,EAAIwmD,OACnC+zD,iCAAkCv6G,EAAIwmD,MACtCg0D,WAAYx6G,EAAIwmD,MAChBi0D,uBAAwBz6G,EAAIspG,IAAItpG,EAAIwmD,OACpCk0D,mCAAoC16G,EAAIwmD,QAEpCm0D,EAAa36G,EAAIE,OAAO,CAC5B06G,IAAK56G,EAAIspG,IAAI+Q,GACbjM,2BAA4BpuG,EAAIspG,IAAItpG,EAAI2C,QAEpCk4G,EAAwB76G,EAAIE,OAAO,CACvC46G,YAAa96G,EAAIspG,IAAIqR,KAEjBI,EAAyB/6G,EAAIE,OAAO,CAAE86G,aAAch7G,EAAIwmD,QACxDy0D,EAAqBj7G,EAAIkB,QAAQ,CACrCg6G,QAASl7G,EAAIoB,KACb+5G,SAAUn7G,EAAIoB,KACdg6G,QAASp7G,EAAIoB,OAETi6G,EAA+Br7G,EAAIE,OAAO,CAC9Co7G,mBAAoBt7G,EAAIQ,IACxB+6G,YAAav7G,EAAIiC,IAAIjC,EAAIiB,WACzBu6G,kBAAmBx7G,EAAIQ,IACvBi7G,mBAAoBz7G,EAAIQ,MAEpBk7G,EAAyB17G,EAAIE,OAAO,CACxC6oB,OAAQkyF,EACRU,YAAa37G,EAAIQ,IACjBmmD,OAAQ3mD,EAAIQ,IACZo7G,SAAUP,EACVQ,2BAA4B77G,EAAIQ,IAChCs7G,YAAa97G,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,SAE7B01D,EAA0B/7G,EAAIE,OAAO,CACzC87G,mBAAoBh8G,EAAIspG,IAAItpG,EAAIi8G,SAChCC,oBAAqBl8G,EAAIspG,IAAItpG,EAAIwmD,OACjC21D,qBAAsBn8G,EAAIspG,IAAItpG,EAAIwmD,OAClCwyD,mCAAoCh5G,EAAIspG,IAAItpG,EAAIwmD,OAChD41D,6BAA8Bp8G,EAAIspG,IAAItpG,EAAIwmD,OAC1C61D,yBAA0Br8G,EAAIspG,IAAItpG,EAAIwmD,OACtC81D,gBAAiBt8G,EAAIspG,IAAItpG,EAAIwmD,SAEzB+1D,EAAkBv8G,EAAIE,OAAO,CAAE6kE,KAAM/kE,EAAIspG,IAAI0N,KAC7CwF,EAAuBx8G,EAAIE,OAAO,CACtCu8G,6CAA8Cz8G,EAAIspG,IAAItpG,EAAIwmD,OAC1Dk2D,UAAW18G,EAAIspG,IAAItpG,EAAI4sG,OACvB+P,oDAAqD38G,EAAIspG,IAAItpG,EAAIwmD,SAE7Do2D,EAAe58G,EAAIE,OAAO,CAC9BwrC,MAAO1rC,EAAIspG,IAAItpG,EAAIiB,WACnBgyC,WAAYjzC,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,SAE5Bw2D,EAAS78G,EAAIE,OAAO,CACxB48G,cAAe98G,EAAIwmD,MACnBu2D,UAAW/8G,EAAIwmD,MACf1a,QAAS9rC,EAAIspG,IAAIsT,GACjBtO,eAAgBtuG,EAAIwmD,QAEhBw2D,EAAOh9G,EAAIE,OAAO,CAAE+8G,OAAQj9G,EAAIspG,IAAIuT,KACpCK,EAAQl9G,EAAIE,OAAO,CAAEw3G,WAAY13G,EAAIspG,IAAItpG,EAAI4sG,SAC7CprG,EAAWxB,EAAIkB,QAAQ,CAAEukD,GAAIu3D,EAAMt3D,IAAKw3D,IACxCC,EAAwBn9G,EAAIE,OAAO,CAAEqH,OAAQvH,EAAIspG,IAAI9nG,KACrD47G,EAASp9G,EAAIE,OAAO,CACxBowG,wBAAyBtwG,EAAIwmD,MAC7B+pD,sCAAuCvwG,EAAIspG,IACzC2D,GAEF0D,YAAa3wG,EAAIwmD,MACjBuqD,2BAA4B/wG,EAAIwmD,MAChC2qD,iBAAkBnxG,EAAIgpG,MACtBkO,cAAel3G,EAAIwmD,MACnB62D,mBAAoBr9G,EAAIspG,IAAItpG,EAAIwmD,OAChCurD,wBAAyB/xG,EAAIwmD,MAC7BwrD,iCAAkChyG,EAAIspG,IAAItpG,EAAIwmD,OAC9C2rD,YAAanyG,EAAIwmD,MACjB4rD,iCAAkCpyG,EAAIspG,IAAItpG,EAAIwmD,SAE1C82D,EAA4Bt9G,EAAIE,OAAO,CAAE8+C,OAAQh/C,EAAIspG,IAAI8T,KACzDG,EAAWv9G,EAAIE,OAAO,CAAEV,GAAIQ,EAAIiC,IAAIjC,EAAIqmD,QACxCm3D,GAAmBx9G,EAAIE,OAAO,CAClC8uG,uBAAwBhvG,EAAIwmD,MAC5B5vB,KAAM52B,EAAIwmD,MACVi3D,UAAWz9G,EAAIiC,IAAIs7G,KAEfG,GAAe19G,EAAIE,OAAO,CAC9BsuG,iBAAkBxuG,EAAII,KACtBiuG,cAAeruG,EAAIwmD,QAEfm3D,GAAmB39G,EAAIE,OAAO,CAAE09G,gBAAiB59G,EAAII,OACrDy9G,GAAW79G,EAAIkB,QAAQ,CAC3B48G,cAAeJ,GACfK,OAAQJ,KAEJK,GAAkBh+G,EAAIE,OAAO,CACjCsR,IAAKxR,EAAIspG,IAAI+Q,GACb4D,eAAgBj+G,EAAIspG,IAAItpG,EAAI4sG,OAC5BsR,kBAAmBl+G,EAAIspG,IAAIkU,IAC3BW,SAAUn+G,EAAIspG,IAAIuU,MAEdzjC,GAAOp6E,EAAIE,OAAO,CACtB85G,4BAA6Bh6G,EAAIspG,IAAIgQ,GACrC8E,eAAgBp+G,EAAIiC,IAAI+7G,IACxBK,eAAgBr+G,EAAIspG,IAAItpG,EAAIwmD,OAC5Bi2D,6CAA8Cz8G,EAAIspG,IAAItpG,EAAIwmD,OAC1D83D,0BAA2Bt+G,EAAIspG,IAAItpG,EAAI2C,MACvCo0G,gBAAiB/2G,EAAIiC,IAAIssG,GACzBxpC,KAAM/kE,EAAIspG,IAAI0N,GACduH,+BAAgCv+G,EAAIspG,IAAItpG,EAAI2C,MAC5Cq2G,mCAAoCh5G,EAAIspG,IAAItpG,EAAIwmD,OAChDg4D,wDAAyDx+G,EAAIspG,IAAItpG,EAAIwmD,OACrE41D,6BAA8Bp8G,EAAIspG,IAAItpG,EAAIwmD,OAC1Ck2D,UAAW18G,EAAI4sG,MACf6R,iCAAkCz+G,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OACtDs2D,oDAAqD38G,EAAIspG,IAAItpG,EAAIwmD,OACjEk4D,OAAQ1+G,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAMu6G,IACpC37D,OAAQh/C,EAAIspG,IAAI8T,GAChBuB,gCAAiC3+G,EAAIspG,IAAItpG,EAAIwmD,SAEzCo4D,GAAe5+G,EAAIE,OAAO,CAC9B87G,mBAAoBh8G,EAAI6+G,QACxB3C,oBAAqBl8G,EAAIwmD,MACzB21D,qBAAsBn8G,EAAIspG,IAAItpG,EAAIwmD,OAClCwyD,mCAAoCh5G,EAAIspG,IAAItpG,EAAIwmD,OAChD41D,6BAA8Bp8G,EAAIspG,IAAItpG,EAAIwmD,OAC1C61D,yBAA0Br8G,EAAIspG,IAAItpG,EAAIwmD,OACtC81D,gBAAiBt8G,EAAIspG,IAAItpG,EAAIwmD,SAEzBs4D,GAAmB9+G,EAAIE,OAAO,CAClCiuF,KAAMnuF,EAAIspG,IAAIlvB,IACd2kC,QAAS/+G,EAAIspG,IAAIsV,MAEbI,GAAuCh/G,EAAIE,OAAO,CACtDuoC,OAAQzoC,EAAIspG,IAAItpG,EAAIwmD,OACpB9d,MAAO1oC,EAAIspG,IAAItpG,EAAIgpG,SAEfiW,GAAgCj/G,EAAIE,OAAO,CAC/CuoC,OAAQzoC,EAAIspG,IAAItpG,EAAIgpG,OACpBtgE,MAAO1oC,EAAIspG,IAAItpG,EAAIgpG,SAEfkW,GAAcl/G,EAAIE,OAAO,CAC7Bi/G,cAAen/G,EAAIspG,IAAIqR,GACvByE,eAAgBp/G,EAAIspG,IAAItpG,EAAIiB,aAExBo+G,GAAiCr/G,EAAIE,OAAO,CAChDyuG,aAAc3uG,EAAIiC,IAAIi9G,MAElBI,GAA8Bt/G,EAAIE,OAAO,CAC7CuoC,OAAQzoC,EAAIspG,IAAItpG,EAAIwmD,OACpB9d,MAAO1oC,EAAIspG,IAAItpG,EAAIgpG,SAEfuW,GAA+Bv/G,EAAIE,OAAO,CAC9Cs/G,mBAAoBx/G,EAAIiC,IAAI+7G,MAExByB,GAAuBz/G,EAAIE,OAAO,CACtC+yC,WAAYjzC,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OAChCioD,eAAgBtuG,EAAIwmD,QAEhBk5D,GAAoB1/G,EAAIE,OAAO,CACnCy/G,4BAA6B3/G,EAAIwmD,MACjCo5D,4BAA6B5/G,EAAIwmD,QAE7Bq5D,GAAQ7/G,EAAIE,OAAO,CACvB4/G,oBAAqB9/G,EAAIspG,IAAIoW,IAC7BK,gBAAiB//G,EAAIspG,IAAIuT,GACzBnF,WAAY13G,EAAI4sG,QAEZ9qG,GAAW9B,EAAIkB,QAAQ,CAAEukD,GAAIu3D,EAAMt3D,IAAKm6D,KACxCG,GAAwBhgH,EAAIE,OAAO,CAAEqH,OAAQvH,EAAIspG,IAAIxnG,MACrDm+G,GAAcjgH,EAAIE,OAAO,CAC7B62G,gBAAiB/2G,EAAIiC,IAAIssG,GACzBvvD,OAAQh/C,EAAIspG,IAAI8T,GAChBuB,gCAAiC3+G,EAAIspG,IAAItpG,EAAIwmD,SAEzC05D,GAA4BlgH,EAAIE,OAAO,CAC3C2wG,kBAAmB7wG,EAAIspG,IAAItpG,EAAII,MAC/B+/G,MAAOngH,EAAII,OAEPggH,GAA6BpgH,EAAIE,OAAO,CAC5CmgH,+BAAgCrgH,EAAIwmD,MACpC85D,+BAAgCtgH,EAAIwmD,QAEtC,OAAOxmD,EAAIkC,QAAQ,CACjBq+G,iBAAkBvgH,EAAIoC,KACpB,CAACm1G,GACD,CAACI,GACD,IAEF6I,cAAexgH,EAAIoC,KAAK,CAACpC,EAAIE,OAAO,CAAC,IAAK,CAACo5G,GAAuB,IAClEmH,6BAA8BzgH,EAAIoC,KAChC,CAACpC,EAAIE,OAAO,CAAC,IACb,CAAC65G,GACD,CAAC,UAEH2G,gBAAiB1gH,EAAIoC,KACnB,CAAC+3G,GACD,CAACU,GACD,CAAC,UAEH8F,iBAAkB3gH,EAAIoC,KAAK,CAACpC,EAAIE,OAAO,CAAC,IAAK,CAAC66G,GAAyB,IACvE6F,oBAAqB5gH,EAAIoC,KACvB,CAACpC,EAAIE,OAAO,CAAC,IACb,CAACw7G,GACD,IAEFmF,kBAAmB7gH,EAAIoC,KACrB,CAACpC,EAAIE,OAAO,CAAC,IACb,CAAC67G,GACD,CAAC,UAEH+E,SAAU9gH,EAAIoC,KAAK,CAACpC,EAAIE,OAAO,CAAC,IAAK,CAACq8G,GAAkB,CAAC,UACzDwE,cAAe/gH,EAAIoC,KACjB,CAACpC,EAAIE,OAAO,CAAC,IACb,CAACs8G,GACD,CAAC,UAEHwE,gBAAiBhhH,EAAIoC,KACnB,CAACpC,EAAIE,OAAO,CAAC,IACb,CAACi9G,GACD,CAAC,UAEH8D,oBAAqBjhH,EAAIoC,KACvB,CAACpC,EAAIE,OAAO,CAAC,IACb,CAACo9G,GACD,CAAC,UAEH4D,UAAWlhH,EAAIoC,KAAK,CAACpC,EAAIE,OAAO,CAAC,IAAK,CAAC4+G,IAAmB,CAAC,UAC3DqC,iCAAkCnhH,EAAIoC,KACpC,CAAC48G,IACD,CAACtQ,GACD,CAAC,UAEH0S,yBAA0BphH,EAAIoC,KAC5B,CAAC68G,IACD,CAACI,IACD,CAAC,UAEHgC,wBAAyBrhH,EAAIoC,KAC3B,CAACk9G,IACD,CAACC,IACD,CAAC,UAEH+B,gBAAiBthH,EAAIoC,KACnB,CAACq9G,IACD,CAACO,IACD,IAEFuB,uBAAwBvhH,EAAIoC,KAAK,CAACpC,EAAIE,OAAO,CAAC,IAAK,CAAC88G,GAAO,IAC3DvwG,KAAMzM,EAAIoC,KAAK,CAAC69G,IAAc,CAACjgH,EAAIE,OAAO,CAAC,IAAK,IAChDshH,qBAAsBxhH,EAAIoC,KACxB,CAAC89G,IACD,CAACE,IACD,IAEFqB,yBAA0BzhH,EAAIoC,KAC5B,CAACpC,EAAIE,OAAO,CAAC,IACb,CAACg4G,GACD,KAEF,E,0SC5ZG,MAAMwJ,EAAWA,CAAO1gH,EAAoB8hD,IAAmBkH,OAAA,6BACpE,OAAAzmD,EAAMC,OAAyB,CAC7BxC,aACAlB,WAAY6hH,EACZ7+D,Y,ICPShjD,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM6hH,EAA+B5hH,EAAIE,OAAO,CAC9C2hH,sBAAuB7hH,EAAIspG,IAAItpG,EAAIiB,WACnC6gH,mBAAoB9hH,EAAIspG,IAAItpG,EAAIiB,WAChC8gH,sBAAuB/hH,EAAIspG,IAAItpG,EAAII,MACnC4hH,mBAAoBhiH,EAAIspG,IAAItpG,EAAII,QAE5B6hH,EAAejiH,EAAIkB,QAAQ,CAC/BghH,4BAA6BliH,EAAIE,OAAO,CAAC,GACzC0hH,6BAA8BA,IAE1BO,EAAwBniH,EAAIE,OAAO,CACvCV,GAAIQ,EAAIwmD,MACRz9C,KAAM/I,EAAII,KACVqjB,YAAazjB,EAAIspG,IAAItpG,EAAII,MACzBgiH,cAAepiH,EAAIspG,IAAI2Y,KAEnBI,EAA0BriH,EAAIE,OAAO,CACzCoiH,mCAAoCtiH,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIwmD,MAAOxmD,EAAIi8G,UACrEsG,kCAAmCviH,EAAIwmD,MACvCg8D,iCAAkCxiH,EAAIwmD,MACtCi8D,qCAAsCziH,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIwmD,MAAOxmD,EAAIwmD,QACvEk8D,qDAAsD1iH,EAAIwmD,MAC1Dm8D,wBAAyB3iH,EAAIwmD,MAC7Bo8D,iBAAkB5iH,EAAIwmD,MACtBq8D,+BAAgC7iH,EAAIwmD,MACpCs8D,6BAA8B9iH,EAAIwmD,MAClCu8D,sBAAuB/iH,EAAIwmD,MAC3Bw8D,mDAAoDhjH,EAAIwmD,MACxDy8D,iCAAkCjjH,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIwmD,MAAOxmD,EAAIwmD,QACnE08D,yBAA0BljH,EAAIwmD,MAC9B28D,+BAAgCnjH,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIwmD,MAAOxmD,EAAIi8G,UACjEmH,kBAAmBpjH,EAAIwmD,QAEnB68D,EAAqBrjH,EAAIE,OAAO,CACpCojH,qBAAsBtjH,EAAIspG,IAAItpG,EAAI4sG,OAClC2W,6BAA8BvjH,EAAIspG,IAAItpG,EAAIwmD,SAEtC+2D,EAAWv9G,EAAIE,OAAO,CAAEV,GAAIQ,EAAIiC,IAAIjC,EAAIqmD,QACxCm9D,EAAYxjH,EAAIE,OAAO,CAAEu9G,UAAWz9G,EAAIiC,IAAIs7G,KAC5CkG,EAAmBzjH,EAAIE,OAAO,CAClCu9G,UAAWz9G,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIwmD,MAAOg9D,MAEpCE,EAAuB1jH,EAAIE,OAAO,CACtCyjH,YAAa3jH,EAAIiC,IAAIjC,EAAI4sG,SAErBgX,EAA0B5jH,EAAIE,OAAO,CACzCwwG,+BAAgC1wG,EAAIspG,IAAItpG,EAAIwmD,OAC5C4qD,iCAAkCpxG,EAAIspG,IAAItpG,EAAIwmD,OAC9CorD,wCAAyC5xG,EAAIspG,IAAItpG,EAAIwmD,OACrDq9D,uBAAwB7jH,EAAIspG,IAAItpG,EAAIwmD,SAEhCs9D,EAA0B9jH,EAAIE,OAAO,CACzC6jH,kBAAmB/jH,EAAIspG,IAAIma,GAC3BvT,2BAA4BlwG,EAAIspG,IAAItpG,EAAIwmD,OACxC2pD,oCAAqCnwG,EAAIspG,IAAItpG,EAAIwmD,OACjDw9D,2BAA4BhkH,EAAIspG,IAAItpG,EAAIwmD,OACxCy9D,2BAA4BjkH,EAAIspG,IAAIoa,GACpC9S,yBAA0B5wG,EAAIspG,IAAItpG,EAAIwmD,OACtC09D,6BAA8BlkH,EAAIspG,IAAItpG,EAAIwmD,OAC1CwqD,8BAA+BhxG,EAAIspG,IAAItpG,EAAIwmD,OAC3CyqD,8CAA+CjxG,EAAIspG,IAAItpG,EAAIwmD,OAC3D29D,gBAAiBnkH,EAAIspG,IAAItpG,EAAIwmD,OAC7B49D,iCAAkCpkH,EAAIspG,IAAItpG,EAAIgpG,OAC9CqI,yCAA0CrxG,EAAIspG,IAAItpG,EAAIwmD,OACtD69D,sBAAuBrkH,EAAIspG,IAAItpG,EAAIwmD,OACnC8qD,oBAAqBtxG,EAAIspG,IAAItpG,EAAIwmD,OACjC89D,qCAAsCtkH,EAAIspG,IAAItpG,EAAIwmD,OAClDkrD,yBAA0B1xG,EAAIspG,IAAItpG,EAAIwmD,OACtC+9D,6BAA8BvkH,EAAIspG,IAAIoa,GACtCc,0BAA2BxkH,EAAIspG,IAAIsa,GACnCa,6BAA8BzkH,EAAIspG,IAAItpG,EAAI2C,MAC1C+hH,oCAAqC1kH,EAAIspG,IAAItpG,EAAIwmD,SAE7Cm+D,EAAU3kH,EAAIE,OAAO,CACzByzG,kBAAmB3zG,EAAIiC,IAAIjC,EAAIqmD,MAC/ButD,eAAgB5zG,EAAIiC,IAAIjC,EAAIqmD,MAC5BwtD,eAAgB7zG,EAAIiC,IAAIjC,EAAIqmD,MAC5BytD,iBAAkB9zG,EAAIiC,IAAIjC,EAAIqmD,MAC9B0tD,qBAAsB/zG,EAAIiC,IAAIjC,EAAIqmD,MAClC2tD,gBAAiBh0G,EAAIiC,IAAIjC,EAAIqmD,QAEzBu+D,EAAa5kH,EAAIE,OAAO,CAAEV,GAAIQ,EAAIwmD,QAClCq+D,EAAc7kH,EAAIE,OAAO,CAC7B4kH,+BAAgC9kH,EAAIspG,IAAItpG,EAAIwmD,OAC5Cu+D,yBAA0B/kH,EAAIwmD,MAC9Bw+D,sBAAuBhlH,EAAIspG,IAAItpG,EAAIwmD,OACnCy+D,2BAA4BjlH,EAAIwmD,MAChCv4B,MAAOjuB,EAAIwmD,MACX0+D,kBAAmBllH,EAAIiC,IAAI2iH,KAEvBO,EAAoBnlH,EAAIE,OAAO,CACnCklH,uBAAwBplH,EAAIwmD,MAC5B6+D,sBAAuBrlH,EAAIwmD,MAC3B2sD,YAAanzG,EAAIwmD,MACjB8+D,eAAgBtlH,EAAIspG,IAAIqb,KAEpBlM,EAAkBz4G,EAAIE,OAAO,CACjCw4G,cAAe14G,EAAII,KACnBs3G,WAAY13G,EAAI4sG,QAEZ2Y,EAASvlH,EAAIE,OAAO,CACxBslH,KAAMxlH,EAAI4sG,MACV6Y,uBAAwBzlH,EAAIwmD,MAC5Bk/D,aAAc1lH,EAAIwmD,QAEdm/D,EAAa3lH,EAAIE,OAAO,CAAE0lH,aAAc5lH,EAAIspG,IAAItpG,EAAIwmD,SACpDq/D,EAAQ7lH,EAAIE,OAAO,CACvB4lH,GAAI9lH,EAAIwmD,MACRu/D,IAAK/lH,EAAIwmD,MACTjO,MAAOv4C,EAAIwmD,MACX48D,kBAAmBpjH,EAAIwmD,QAEnBw/D,EAA6BhmH,EAAIE,OAAO,CAC5Co7G,mBAAoBt7G,EAAIspG,IAAItpG,EAAIwmD,OAChCp4C,aAAcpO,EAAIiC,IAAIjC,EAAIiB,WAC1BglH,sBAAuBjmH,EAAIspG,IAAItpG,EAAIwmD,OACnC0/D,eAAgBlmH,EAAIspG,IAAItpG,EAAI4sG,OAC5B4O,kBAAmBx7G,EAAIspG,IAAItpG,EAAIwmD,OAC/Bi1D,mBAAoBz7G,EAAIspG,IAAItpG,EAAIwmD,SAE5B2/D,EAAwBnmH,EAAIE,OAAO,CACvCkO,aAAcpO,EAAIiC,IAAIjC,EAAIiB,aAEtB8oG,EAAa/pG,EAAIE,OAAO,CAAE+yC,WAAYjzC,EAAIiC,IAAIjC,EAAIqmD,QAClD+/D,EAA2BpmH,EAAIE,OAAO,CAC1CmmH,cAAermH,EAAI4sG,MACnB0Z,aAActmH,EAAIspG,IAAItpG,EAAIiB,WAC1BslH,cAAevmH,EAAIspG,IAAIS,GACvBnzE,KAAM52B,EAAIspG,IAAItpG,EAAIwmD,OAClBg0D,WAAYx6G,EAAIwmD,QAEZggE,EAA+BxmH,EAAIE,OAAO,CAC9CumH,kBAAmBzmH,EAAIiC,IAAIjC,EAAIqmD,MAC/BpiC,KAAMjkB,EAAIspG,IAAItpG,EAAI4sG,OAClB8Z,YAAa1mH,EAAIspG,IAAItpG,EAAIiB,WACzB0lH,qBAAsB3mH,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,SAEtCugE,EAA0B5mH,EAAIE,OAAO,CACzCkO,aAAcpO,EAAIiC,IAAIjC,EAAIiB,WAC1B4lH,gBAAiB7mH,EAAIiC,IAAIjC,EAAIiB,aAEzB6lH,EAAgB9mH,EAAIE,OAAO,CAC/BomH,aAActmH,EAAIspG,IAAItpG,EAAIiB,WAC1BslH,cAAevmH,EAAIspG,IAAIS,GACvBnzE,KAAM52B,EAAIspG,IAAItpG,EAAIwmD,OAClBg0D,WAAYx6G,EAAIspG,IAAItpG,EAAIwmD,SAEpBugE,EAAoB/mH,EAAIE,OAAO,CACnCsiF,IAAKxiF,EAAIspG,IAAItpG,EAAII,MACjBuJ,KAAM3J,EAAIspG,IAAItpG,EAAII,MAClB2I,KAAM/I,EAAIspG,IAAItpG,EAAII,MAClBqjB,YAAazjB,EAAIspG,IAAItpG,EAAII,QAErB4mH,EAAsChnH,EAAIE,OAAO,CACrD+mH,YAAajnH,EAAIwmD,MACjBskC,QAAS9qF,EAAIiC,IAAIjC,EAAIqmD,QAEjB6gE,EAAyBlnH,EAAIE,OAAO,CACxCinH,aAAcnnH,EAAIspG,IAAItpG,EAAIwmD,SAEtB4gE,EAASpnH,EAAIE,OAAO,CAAEmnH,YAAarnH,EAAII,OACvCknH,EAAStnH,EAAIkB,QAAQ,CACzBqmH,8BAA+BzD,EAC/B0D,gCAAiCrF,EACjC6D,2BAA4BA,EAC5ByB,mCAAoCznH,EAAIwmD,MACxCkhE,wBAAyB1nH,EAAIE,OAAO,CAAC,GACrCimH,sBAAuBA,EACvBC,yBAA0BA,EAC1BI,6BAA8BA,EAC9BI,wBAAyBA,EACzBE,cAAeA,EACfa,YAAa3nH,EAAIE,OAAO,CAAC,GACzB6mH,kBAAmBA,EACnBC,oCAAqCA,EACrCE,uBAAwBA,EACxBE,OAAQA,IAEJQ,EAAW5nH,EAAIE,OAAO,CAC1BsiF,IAAKxiF,EAAII,KACTqP,MAAOzP,EAAII,KACXy1B,OAAQ71B,EAAIspG,IAAIge,GAChBO,QAAS7nH,EAAII,OAET0nH,EAAoB9nH,EAAIE,OAAO,CACnC6nH,mCAAoC/nH,EAAIwmD,QAEpCwhE,EAAehoH,EAAIE,OAAO,CAC9BV,GAAIQ,EAAIspG,IAAIsb,GACZqD,uBAAwBjoH,EAAIspG,IAAItpG,EAAII,MACpCy1B,OAAQ71B,EAAIwmD,MACZ0hE,eAAgBloH,EAAIspG,IAAImP,GACxB0P,QAASnoH,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAMmlH,IACrC6C,gCAAiCpoH,EAAIspG,IAAIqc,GACzC0C,mBAAoBroH,EAAIwmD,MACxB8hE,yBAA0BtoH,EAAIwmD,MAC9B+hE,mCAAoCvoH,EAAIspG,IAAItpG,EAAIwmD,OAChDgiE,oCAAqCxoH,EAAIwmD,MACzCwqD,8BAA+BhxG,EAAIwmD,MACnC29D,gBAAiBnkH,EAAIwmD,MACrBiiE,aAAczoH,EAAIspG,IAAIuc,GACtBxU,yCAA0CrxG,EAAIwmD,MAC9CkiE,0BAA2B1oH,EAAIwmD,MAC/BmiE,SAAU3oH,EAAIspG,IAAIse,GAClBgB,SAAU5oH,EAAIspG,IAAIiU,GAClBsL,qBAAsB7oH,EAAIspG,IAAIwe,GAC9BgB,oCAAqC9oH,EAAIspG,IAAIqc,GAC7CoD,wBAAyB/oH,EAAI2C,KAC7BqmH,2BAA4BhpH,EAAIwmD,QAE5ByiE,EAAQjpH,EAAIE,OAAO,CAAE02B,KAAM52B,EAAIwmD,MAAOg0D,WAAYx6G,EAAIwmD,QACtD0iE,EAASlpH,EAAIE,OAAO,CACxB+mH,YAAajnH,EAAIwmD,MACjBi3D,UAAWz9G,EAAIiC,IAAIs7G,KAEfvT,EAAUhqG,EAAIE,OAAO,CACzBwrC,MAAO1rC,EAAIspG,IAAItpG,EAAIiB,WACnBgyC,WAAYjzC,EAAIspG,IAAIS,KAEhBof,EAAmBnpH,EAAIE,OAAO,CAClCkpH,WAAYppH,EAAIspG,IAAIU,GACpBqf,uBAAwBrpH,EAAIgpG,QAExBsgB,EAA0BtpH,EAAIE,OAAO,CACzCqpH,0CAA2CvpH,EAAI2C,OAE3C6mH,EAAwBxpH,EAAIE,OAAO,CACvCupH,kCAAmCzpH,EAAIgpG,QAEnC0gB,EAAuB1pH,EAAIE,OAAO,CACtCypH,2BAA4B3pH,EAAIwmD,QAE5BojE,EAAY5pH,EAAIkB,QAAQ,CAC5BooH,wBAAyBA,EACzBO,eAAgB7pH,EAAIE,OAAO,CAAC,GAC5B4pH,gBAAiB9pH,EAAIE,OAAO,CAAC,GAC7BspH,sBAAuBA,EACvBE,qBAAsBA,IAElBK,EAAY/pH,EAAIE,OAAO,CAAE8pH,UAAWhqH,EAAIspG,IAAIsgB,KAC5CK,EAAejqH,EAAIE,OAAO,CAC9BslH,KAAMxlH,EAAI4sG,MACV+b,SAAU3oH,EAAIspG,IAAIsb,KAEdsF,EAA2BlqH,EAAIE,OAAO,CAC1CiqH,2BAA4BnqH,EAAIwmD,MAChC4iE,WAAYppH,EAAIspG,IAAIU,KAEhBogB,EAAoBpqH,EAAIE,OAAO,CACnC6uG,WAAY/uG,EAAIspG,IAAItpG,EAAIiB,WACxB21B,KAAM52B,EAAIwmD,QAEN6jE,EAAKrqH,EAAIkB,QAAQ,CACrBkpH,kBAAmBA,EACnB7M,SAAUv9G,EAAIE,OAAO,CAAC,KAElBoqH,EAAiBtqH,EAAIE,OAAO,CAAEqqH,GAAIvqH,EAAIspG,IAAI+gB,KAC1CG,EAA0BxqH,EAAIE,OAAO,CACzCuqH,sBAAuBzqH,EAAIspG,IAAIoa,GAC/BtJ,aAAcp6G,EAAIspG,IAAItpG,EAAIiB,aAEtBypH,EAAuB1qH,EAAIE,OAAO,CACtCyqH,mBAAoB3qH,EAAIspG,IAAIoa,GAC5BtJ,aAAcp6G,EAAIspG,IAAItpG,EAAIiB,aAEtB2pH,EAAgB5qH,EAAIE,OAAO,CAAE2qH,oBAAqB7qH,EAAIgpG,QACtD8hB,EAAS9qH,EAAIE,OAAO,CAAE6qH,IAAK/qH,EAAIwmD,QAC/BwkE,GAAWhrH,EAAIE,OAAO,CAC1BkpH,WAAYppH,EAAIspG,IAAIU,GACpBz+D,OAAQvrC,EAAIspG,IAAIwhB,KAEZG,GAAYjrH,EAAIkB,QAAQ,CAC5B+nH,MAAOA,EACPC,OAAQA,EACRC,iBAAkBA,EAClBY,UAAWA,EACXE,aAAcA,EACdiB,YAAalrH,EAAIE,OAAO,CAAC,GACzBirH,aAAcvD,EACdsC,yBAA0BA,EAC1BkB,qBAAsBd,EACtBE,wBAAyBA,EACzBE,qBAAsBA,EACtBE,cAAeA,EACfI,SAAUA,KAENK,GAAwBrrH,EAAIE,OAAO,CACvCorH,QAAStrH,EAAIspG,IAAI2hB,IACjBjhC,UAAWhqF,EAAIwmD,QAEX+kE,GAAmBvrH,EAAIE,OAAO,CAClC6G,UAAW/G,EAAIspG,IAAItpG,EAAIiB,WACvBuqH,gBAAiBxrH,EAAIiC,IAAIjC,EAAI4sG,SAEzB6e,GAAgBzrH,EAAIkB,QAAQ,CAChCwqH,qBAAsB1rH,EAAIwmD,MAC1BmlE,8BAA+B3rH,EAAIwmD,QAE/BolE,GAA6B5rH,EAAIE,OAAO,CAC5C2rH,kCAAmC7rH,EAAIwmD,MACvCg0D,WAAYx6G,EAAIwmD,MAChBslE,uBAAwB9rH,EAAIspG,IAAIU,GAChC+hB,wCAAyC/rH,EAAIspG,IAAItpG,EAAIwmD,SAEjDwlE,GAAShsH,EAAIE,OAAO,CACxBV,GAAIQ,EAAIspG,IAAIiU,GACZ0O,+BAAgCjsH,EAAIspG,IAAItpG,EAAIwmD,OAC5Cm9D,YAAa3jH,EAAIiC,IAAIspH,IACrBW,wBAAyBlsH,EAAIwmD,MAC7B2lE,wBAAyBnsH,EAAIwmD,MAC7B4lE,0BAA2BpsH,EAAIwmD,MAC/B6lE,qBAAsBrsH,EAAIspG,IAAItpG,EAAIwmD,OAClC8lE,oBAAqBtsH,EAAIspG,IAAItpG,EAAI2C,MACjC4pH,8BAA+BvsH,EAAIwmD,MACnCgmE,eAAgBxsH,EAAIspG,IAAImiB,IACxBgB,mCAAoCzsH,EAAIwmD,MACxC0oD,uBAAwBlvG,EAAIspG,IAAItpG,EAAIwmD,OACpCkmE,8BAA+B1sH,EAAIiC,IAAI2pH,IACvCnO,UAAWz9G,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIwmD,MAAOg9D,IACxCmJ,gBAAiB3sH,EAAIwmD,QAsBjBomE,IApBa5sH,EAAIE,OAAO,CAC5BoO,iBAAkBtO,EAAIspG,IAAItpG,EAAIiB,WAC9B4rH,+BAAgC7sH,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIwmD,MAAO27D,IAC7D2K,QAAS9sH,EAAIspG,IAAI+Y,GACjB0K,oBAAqB/sH,EAAIspG,IAAI+Z,GAC7Bp/F,KAAMjkB,EAAI4sG,MACVogB,WAAYhtH,EAAIspG,IAAIwa,GACpBmJ,gCAAiCjtH,EAAIspG,IAAItpG,EAAI2C,MAC7CuqH,iBAAkBltH,EAAIspG,IAAIqb,GAC1BwI,8BAA+BntH,EAAII,KACnCgtH,oBAAqBptH,EAAIspG,IAAIub,GAC7BwI,gBAAiBrtH,EAAIspG,IAAI6b,GACzB7R,iBAAkBtzG,EAAIspG,IAAItpG,EAAIiB,WAC9BoN,mBAAoBrO,EAAIspG,IAAItpG,EAAIiB,WAChCqsH,UAAWttH,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIwmD,MAAOwhE,IACxCuF,mBAAoBvtH,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAMirH,KAChDmC,aAAcxtH,EAAIspG,IAAIyd,GACtB0G,QAASztH,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAM4rH,KACrC0B,0BAA2B1tH,EAAIwmD,QAERxmD,EAAIE,OAAO,CAClC6uG,WAAY/uG,EAAIspG,IAAItpG,EAAIiB,WACxB+tG,uBAAwBhvG,EAAIspG,IAAItpG,EAAIwmD,OACpC6lE,qBAAsBrsH,EAAIspG,IAAItpG,EAAIwmD,OAClCyoD,UAAWjvG,EAAIspG,IAAItpG,EAAIwmD,OACvBi3D,UAAWz9G,EAAIiC,IAAIs7G,GACnBoQ,OAAQ3tH,EAAIspG,IAAItpG,EAAIiB,WACpB2sH,UAAW5tH,EAAIspG,IAAIiU,MAEfsQ,GAA0B7tH,EAAIE,OAAO,CACzC4tH,kBAAmB9tH,EAAIiC,IAAI2qH,MAEvBmB,GAAa/tH,EAAIE,OAAO,CAC5BV,GAAIQ,EAAIspG,IAAIiU,GACZx0F,OAAQ/oB,EAAI4sG,QAERohB,GAAqBhuH,EAAIE,OAAO,CACpC+tH,aAAcjuH,EAAIiC,IAAI8rH,MAElBG,GAAyBluH,EAAIkB,QAAQ,CACzCukD,GAAIuoE,GACJtoE,IAAK1lD,EAAI4sG,QAELuhB,GAA2BnuH,EAAIE,OAAO,CAC1CkuH,0BAA2BpuH,EAAIspG,IAAI4kB,MAE/BG,GAAgCruH,EAAIE,OAAO,CAC/C6sH,oBAAqB/sH,EAAIspG,IAAI+Z,KAEzBiL,GAAsBtuH,EAAIE,OAAO,CACrCsiF,IAAKxiF,EAAIspG,IAAItpG,EAAII,MACjBuJ,KAAM3J,EAAIspG,IAAItpG,EAAII,MAClB2I,KAAM/I,EAAIspG,IAAItpG,EAAII,MAClBqjB,YAAazjB,EAAIspG,IAAItpG,EAAII,QAErBmuH,GAAkBvuH,EAAIE,OAAO,CAAE+jB,KAAMjkB,EAAIspG,IAAItpG,EAAI4sG,SACjD4hB,GAAYxuH,EAAIE,OAAO,CAAE0tH,UAAW5tH,EAAIspG,IAAIiU,KAC5Cv7G,GAAShC,EAAIkB,QAAQ,CAAE7B,MAAOo5G,EAAiBuT,OAAQA,KACvDyC,GAAoBzuH,EAAIE,OAAO,CAAEqH,OAAQvH,EAAIspG,IAAItnG,MACjD0sH,GAAc1uH,EAAIE,OAAO,CAAEizG,YAAanzG,EAAIspG,IAAIsb,KAChDpjH,GAAWxB,EAAIkB,QAAQ,CAC3B7B,MAAOo5G,EACPmP,SAAUI,IAEN2G,GAAsB3uH,EAAIE,OAAO,CAAEqH,OAAQvH,EAAIspG,IAAI9nG,MACnDy5G,GAAqBj7G,EAAIkB,QAAQ,CACrCg6G,QAASl7G,EAAIoB,KACb+5G,SAAUn7G,EAAIoB,KACdg6G,QAASp7G,EAAIoB,OAETi6G,GAA+Br7G,EAAIE,OAAO,CAC9Co7G,mBAAoBt7G,EAAIQ,IACxB+6G,YAAav7G,EAAIiC,IAAIjC,EAAIiB,WACzBu6G,kBAAmBx7G,EAAIQ,IACvBi7G,mBAAoBz7G,EAAIQ,MAEpBk7G,GAAyB17G,EAAIE,OAAO,CACxC6oB,OAAQkyF,GACRU,YAAa37G,EAAIQ,IACjBmmD,OAAQ3mD,EAAIQ,IACZo7G,SAAUP,GACVQ,2BAA4B77G,EAAIQ,IAChCs7G,YAAa97G,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,SAE7BuoE,GAA+B5uH,EAAIE,OAAO,CAC9CgtH,iBAAkBltH,EAAIspG,IAAIqb,GAC1B0I,gBAAiBrtH,EAAIspG,IAAI6b,KAErB0J,GAAyC7uH,EAAIE,OAAO,CACxDitH,8BAA+BntH,EAAII,OAE/B0uH,GAAqC9uH,EAAIE,OAAO,CACpD6uH,aAAc/uH,EAAIiC,IAAIjC,EAAIwmD,OAC1BwoE,UAAWhvH,EAAIiC,IAAIkgH,KAEf8M,GAAcjvH,EAAIE,OAAO,CAC7BgvH,aAAclvH,EAAIspG,IAAItpG,EAAIiB,WAC1BynC,MAAO1oC,EAAIgpG,MACXmmB,cAAenvH,EAAIspG,IAAIiU,KAEnB6R,GAAsBpvH,EAAIE,OAAO,CAAEutH,QAASztH,EAAIiC,IAAI+pH,MACpDqD,GAAgBrvH,EAAIE,OAAO,CAC/BovH,sBAAuBtvH,EAAIiC,IAAIjC,EAAI4sG,OACnC2iB,gBAAiBvvH,EAAIspG,IAAIsb,GACzBl8E,MAAO1oC,EAAIgpG,MACXwmB,aAAcxvH,EAAIiC,IAAIjC,EAAIwmD,OAC1BipE,eAAgBzvH,EAAIiC,IAAIjC,EAAI4sG,SAExB8iB,GAAwB1vH,EAAIE,OAAO,CACvCotH,UAAWttH,EAAIiC,IAAI+lH,KAEf2H,GAAgB3vH,EAAIE,OAAO,CAC/B0vH,oBAAqB5vH,EAAIspG,IAAItpG,EAAIgpG,SAE7B6mB,GAAU7vH,EAAIkB,QAAQ,CAC1B+nH,MAAOA,EACPC,OAAQA,EACRC,iBAAkBA,EAClBmB,eAAgBA,EAChBP,UAAWA,EACXE,aAAcA,EACdkB,aAAcvD,EACd+H,cAAeA,GACfnF,wBAAyBA,EACzBE,qBAAsBA,EACtBE,cAAeA,EACfI,SAAUA,KAEN8E,GAAe9vH,EAAIE,OAAO,CAC9B+yC,WAAYjzC,EAAIiC,IAAIjC,EAAIqmD,MACxBilE,QAAStrH,EAAIspG,IAAIumB,MAEbE,GAAgB/vH,EAAIE,OAAO,CAAE8vH,kBAAmBhwH,EAAIspG,IAAIiU,KACxD0S,GAA2BjwH,EAAIE,OAAO,CAC1CgwH,qBAAsBlwH,EAAIwmD,MAC1B2pE,oBAAqBnwH,EAAIspG,IAAItpG,EAAIwmD,SAE7B4pE,GAAyBpwH,EAAIE,OAAO,CACxCmwH,oBAAqBrwH,EAAIspG,IAAIiU,KAEzB+S,GAAwBtwH,EAAIE,OAAO,CACvCqwH,aAAcvwH,EAAIwmD,MAClBgqE,oBAAqBxwH,EAAIwmD,QAErBiqE,GAAwBzwH,EAAIE,OAAO,CACvCwwH,oBAAqB1wH,EAAIwmD,MACzBmqE,cAAe3wH,EAAIwmD,QAEfoqE,GAAmB5wH,EAAIE,OAAO,CAAE2wH,sBAAuB7wH,EAAIwmD,QAC3DsqE,GAAY9wH,EAAIkB,QAAQ,CAC5B7B,MAAOo5G,EACPwQ,MAAO8G,GACP7G,OAAQlpH,EAAIE,OAAO,CAAC,GACpBipH,iBAAkB8G,GAClB3F,eAAgB8F,GAChBrG,UAAW/pH,EAAIE,OAAO,CAAC,GACvB+pH,aAAcjqH,EAAIE,OAAO,CAAC,GAC1BirH,aAAcuD,GACdqC,uBAAwB/wH,EAAIE,OAAO,CAAC,GACpCyvH,cAAeW,GACf1F,cAAe6F,GACfzF,SAAU4F,GACVI,oBAAqBhxH,EAAIE,OAAO,CAAC,KAE7B+wH,GAAuBjxH,EAAIE,OAAO,CAAEorH,QAAStrH,EAAIspG,IAAIwnB,MACrDI,GAAUlxH,EAAIE,OAAO,CAAE+jB,KAAMjkB,EAAI4sG,QACvC,OAAO5sG,EAAIkC,QAAQ,CACjBivH,mBAAoBnxH,EAAIoC,KAAK,CAACyrH,IAA0B,CAACM,IAA2B,IACpFiD,+BAAgCpxH,EAAIoC,KAAK,CAACpC,EAAIE,OAAO,CAAC,IAAK,CAACF,EAAIE,OAAO,CAAC,IAAK,IAC7EmxH,mBAAoBrxH,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UAC9CkxH,wBAAyBtxH,EAAIoC,KAAK,GAAI,CAACyiH,GAAc,CAAC,UACtD0M,wBAAyBvxH,EAAIoC,KAAK,CAACpC,EAAIE,OAAO,CAAC,IAAK,CAACmuH,IAAgC,IACrFmD,aAAcxxH,EAAIoC,KAAK,CAACpC,EAAIE,OAAO,CAAC,IAAK,CAACouH,IAAsB,CAAC,UACjEmD,SAAUzxH,EAAIoC,KAAK,CAACpC,EAAIE,OAAO,CAAC,IAAK,CAACquH,IAAkB,CAAC,UACzDmD,8BAA+B1xH,EAAIoC,KAAK,CAACpC,EAAIoB,MAAO,CAAC0iH,GAA0B,CAAC,UAChF6N,WAAY3xH,EAAIoC,KAAK,CAACosH,IAAY,CAACC,IAAoB,CAAC,UACxDmD,aAAc5xH,EAAIoC,KAAK,CAACssH,IAAc,CAACC,IAAsB,CAAC,UAC9DkD,yBAA0B7xH,EAAIoC,KAAK,CAACpC,EAAIoB,MAAO,CAACs6G,IAAyB,IACzEoW,wBAAyB9xH,EAAIoC,KAAK,CAACpC,EAAIE,OAAO,CAAC,IAAK,CAAC0uH,IAA+B,CAAC,UACrFmD,kCAAmC/xH,EAAIoC,KAAK,CAACpC,EAAIE,OAAO,CAAC,IAAK,CAAC2uH,IAAyC,CAAC,UACzGmD,8BAA+BhyH,EAAIoC,KAAK,GAAI,CAAC0sH,IAAqC,CAAC,UACnFmD,aAAcjyH,EAAIoC,KAAK,CAAC6sH,IAAc,CAACG,IAAsB,CAAC,UAC9D8C,eAAgBlyH,EAAIoC,KAAK,CAACitH,IAAgB,CAACK,IAAwB,CAAC,UACpEyC,cAAenyH,EAAIoC,KAAK,CAAC0tH,IAAe,CAACmB,IAAuB,IAChEmB,SAAUpyH,EAAIoC,KAAK,CAAC8uH,IAAU,CAAClxH,EAAIE,OAAO,CAAC,IAAK,KAChD,E,0SCxfG,MAAMmyH,EAAiBA,CAAOrxH,EAAoB8hD,IAAmBkH,OAAA,6BAC1E,OAAAzmD,EAAMC,OAA+B,CACnCxC,aACAlB,WAAYwyH,EACZxvE,Y,ICPShjD,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMy6F,EAAkBx6F,EAAIkB,QAAQ,CAClCqxH,kBAAmBvyH,EAAIoB,KACvBoxH,MAAOxyH,EAAIoB,KACX+sF,KAAMnuF,EAAIoB,KACVqxH,aAAczyH,EAAIoB,KAClBsxH,kBAAmB1yH,EAAIoB,OAEnBuxH,EAAc3yH,EAAIE,OAAO,CAC7Bgb,GAAIlb,EAAII,KACRy1B,OAAQ2kE,EACRh5C,SAAUxhD,EAAII,KACdqhD,SAAUzhD,EAAII,KACdwyH,eAAgB5yH,EAAIQ,IACpBwyC,KAAMhzC,EAAII,KACV6pE,KAAMjqE,EAAII,KACVk2B,KAAMt2B,EAAIe,IACV6sC,YAAa5tC,EAAIi8G,QACjB4W,UAAW7yH,EAAII,KACf0yH,mBAAoB9yH,EAAIi8G,QACxB8W,OAAQ/yH,EAAII,KACZ4yH,gBAAiBhzH,EAAIQ,IACrByyH,eAAgBjzH,EAAII,KACpB6lG,UAAWjmG,EAAIi8G,QACf/V,UAAWlmG,EAAIi8G,QACfjyB,UAAWhqF,EAAIe,IACfmyH,mBAAoBlzH,EAAIi8G,QACxBkX,eAAgBnzH,EAAIi8G,QACpBmX,eAAgBpzH,EAAII,KACpBizH,UAAWrzH,EAAIi8G,QACfqX,aAActzH,EAAIi8G,QAClBsX,aAAcvzH,EAAIi8G,QAClBuX,QAASxzH,EAAIQ,IACbizH,aAAczzH,EAAII,KAClBszH,eAAgB1zH,EAAIi8G,QACpBvuE,YAAa1tC,EAAIi8G,QACjB0X,aAAc3zH,EAAII,KAClBya,OAAQ7a,EAAII,OAERgpG,EAAYppG,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIQ,IAAKkB,IAAK1B,EAAII,OAChDwzH,EAAqB5zH,EAAIE,OAAO,CACpCV,GAAIQ,EAAIQ,IACRqzH,kBAAmB7zH,EAAIi8G,QACvB6X,YAAa9zH,EAAIi8G,QACjB8X,YAAa/zH,EAAIi8G,QACjBz6D,SAAUxhD,EAAII,KACdqhD,SAAUzhD,EAAII,KACd4zH,gBAAiBh0H,EAAIi8G,QACrBgY,eAAgBj0H,EAAIi8G,QACpBiY,UAAWl0H,EAAIi8G,QACf1yE,KAAMvpC,EAAII,KACVk2B,KAAMt2B,EAAIe,IACV8rC,UAAW7sC,EAAIQ,IACfotC,YAAa5tC,EAAIi8G,QACjBkY,QAASn0H,EAAIQ,IACb4zH,kBAAmBp0H,EAAIi8G,QACvBoY,UAAWr0H,EAAIi8G,QACfqY,QAASt0H,EAAIi8G,QACbsY,gBAAiBv0H,EAAIi8G,QACrBgX,eAAgBjzH,EAAII,KACpBo0H,QAASx0H,EAAIQ,IACb2yH,eAAgBnzH,EAAIi8G,QACpBmX,eAAgBpzH,EAAII,KACpBqzH,aAAczzH,EAAII,KAClBszH,eAAgB1zH,EAAIi8G,QACpBvuE,YAAa1tC,EAAIi8G,QACjB0X,aAAc3zH,EAAII,OAEdq0H,EAAsBz0H,EAAIE,OAAO,CACrCV,GAAIQ,EAAIQ,IACRszH,YAAa9zH,EAAIi8G,QACjB8X,YAAa/zH,EAAIi8G,QACjBgY,eAAgBj0H,EAAIi8G,QACpBlzG,KAAM/I,EAAII,KACVi0H,UAAWr0H,EAAIi8G,QACfqY,QAASt0H,EAAIi8G,QACbyY,eAAgB10H,EAAIi8G,QACpB97G,QAASH,EAAII,KACbo0H,QAASx0H,EAAIe,IACb4sC,SAAU3tC,EAAIi8G,QACd57G,SAAUL,EAAII,KACdyI,OAAQ7I,EAAII,OAERu0H,EAAU30H,EAAII,KACpB,OAAOJ,EAAIkC,QAAQ,CACjB0yH,SAAU50H,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,GAAI,IACxC4zH,cAAe70H,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAI2C,MAAO,GAAI,IAClDmyH,eAAgB90H,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAII,OAAQ,CAAC,UACnD20H,gBAAiB/0H,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAII,OAAQ,CAAC,UACpD40H,eAAgBh1H,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAII,OAAQ,CAAC,UACnD60H,YAAaj1H,EAAIoC,KAAK,CAACpC,EAAIiC,IAAI0wH,IAAe,GAAI,IAClDuC,MAAOl1H,EAAIoC,KAAK,GAAI,GAAI,IACxBonG,eAAgBxpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,IAC1CK,aAAczpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,CAAC,UACzC+rB,YAAan1H,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAI2xH,IAAsB,CAAC,UAC1DwB,aAAcp1H,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIwyH,IAAuB,CAAC,UAC5DY,eAAgBr1H,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,CAAC,UACxDq0H,iBAAkBt1H,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,CAAC,UAC3C+0H,gBAAiBv1H,EAAIoC,KAAK,GAAI,CAACpC,EAAIe,KAAM,CAAC,UAC1Cy0H,UAAWx1H,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,CAAC,UACnDw0H,iBAAkBz1H,EAAIoC,KACpB,GACA,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAMJ,EAAIQ,OACjC,CAAC,UAEHk1H,iBAAkB11H,EAAIoC,KACpB,CAACpC,EAAII,MACL,CAACJ,EAAIiC,IAAI2xH,IACT,CAAC,UAEH+B,eAAgB31H,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAII,OAAQ,CAAC,UACnDw1H,YAAa51H,EAAIoC,KAAK,GAAI,CAACpC,EAAI2C,MAAO,CAAC,UACvCkzH,cAAe71H,EAAIoC,KACjB,GACA,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAMJ,EAAI2C,KAAM3C,EAAII,QAC3C,CAAC,UAEH01H,kBAAmB91H,EAAIoC,KACrB,GACA,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAMJ,EAAIQ,OACjC,CAAC,UAEHu1H,sBAAuB/1H,EAAIoC,KAAK,GAAI,CAACpC,EAAIi8G,QAASj8G,EAAIQ,KAAM,CAAC,UAC7Dw1H,iBAAkBh2H,EAAIoC,KACpB,GACA,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAMJ,EAAIQ,OACjC,CAAC,UAEHy1H,OAAQj2H,EAAIoC,KAAK,CAACuwH,GAAc,GAAI,IACpCuD,YAAal2H,EAAIoC,KACf,GACA,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAMJ,EAAII,QACjC,CAAC,UAEH+1H,YAAan2H,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAACJ,EAAIspG,IAAItpG,EAAII,OAAQ,CAAC,UACxDg2H,kBAAmBp2H,EAAIoC,KAAK,CAACpC,EAAI2C,MAAO,CAAC3C,EAAI2C,MAAO,IACpD0zH,eAAgBr2H,EAAIoC,KAAK,CAACpC,EAAIiC,IAAIjC,EAAII,MAAOJ,EAAI2C,MAAO,GAAI,IAC5D2zH,mBAAoBt2H,EAAIoC,KAAK,CAACpC,EAAI2C,MAAO,CAAC3C,EAAI2C,MAAO,IACrD4zH,kBAAmBv2H,EAAIoC,KAAK,CAACpC,EAAI2C,MAAO,CAAC3C,EAAI2C,MAAO,IACpD6zH,aAAcx2H,EAAIoC,KAAK,GAAI,GAAI,IAC/Bq0H,aAAcz2H,EAAIoC,KAChB,GACA,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAMJ,EAAII,QACjC,CAAC,UAEHs2H,aAAc12H,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAACJ,EAAIspG,IAAItpG,EAAII,OAAQ,CAAC,UACzDu2H,YAAa32H,EAAIoC,KACf,GACA,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAMJ,EAAII,QACjC,CAAC,UAEHqiD,YAAaziD,EAAIoC,KAAK,CAACuyH,GAAU,CAAC30H,EAAIspG,IAAItpG,EAAII,OAAQ,CAAC,WACvD,ECpJSw2H,EAAaA,IACxBrzH,EAAMC,OAAkB,CACtBC,UAAWC,EAAUw8B,UACrBpgC,WAAY+2H,ICPH/2H,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMy6F,EAAkBx6F,EAAIkB,QAAQ,CAClCqxH,kBAAmBvyH,EAAIoB,KACvBoxH,MAAOxyH,EAAIoB,KACX+sF,KAAMnuF,EAAIoB,KACVqxH,aAAczyH,EAAIoB,KAClBsxH,kBAAmB1yH,EAAIoB,OAEnB01H,EAAiB92H,EAAIE,OAAO,CAChCgb,GAAIlb,EAAII,KACRw0C,UAAW50C,EAAIe,IACf80B,OAAQ2kE,EACRu8B,eAAgB/2H,EAAIe,IACpBygD,SAAUxhD,EAAII,KACdqhD,SAAUzhD,EAAII,KACd42H,kBAAmBh3H,EAAIQ,IACvBoyH,eAAgB5yH,EAAIQ,IACpBwyC,KAAMhzC,EAAII,KACVk2B,KAAMt2B,EAAIe,IACVk2H,QAASj3H,EAAIQ,IACbqyH,UAAW7yH,EAAII,KACf0yH,mBAAoB9yH,EAAIQ,IACxB02H,kBAAmBl3H,EAAIQ,IACvBwyH,gBAAiBhzH,EAAIQ,IACrByyH,eAAgBjzH,EAAII,KACpB6lG,UAAWjmG,EAAIQ,IACf0lG,UAAWlmG,EAAIQ,IACfwpF,UAAWhqF,EAAIe,IACfmyH,mBAAoBlzH,EAAIQ,IACxB4yH,eAAgBpzH,EAAII,KACpBw3C,MAAO53C,EAAIQ,IACXqa,OAAQ7a,EAAII,OAERgpG,EAAYppG,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIQ,IAAKkB,IAAK1B,EAAII,OAsBtD,OArBkBJ,EAAIkC,QAAQ,CAC5B0yH,SAAU50H,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,GAAI,IACxCk2H,gBAAiBn3H,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UAC3Cg3H,YAAap3H,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAII,OAAQ,CAAC,UAChDi3H,UAAWr3H,EAAIoC,KAAK,CAACpC,EAAIiC,IAAI60H,IAAkB,GAAI,IACnDttB,eAAgBxpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,IAC1CK,aAAczpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,CAAC,UACzCkuB,eAAgBt3H,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAII,OAAQ,IAClDm3H,cAAev3H,EAAIoC,KAAK,GAAI,CAACpC,EAAI2C,MAAO,CAAC,UACzC6yH,UAAWx1H,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,IAClDu2H,iBAAkBx3H,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAACJ,EAAIi8G,SAAU,CAAC,UACvDwb,aAAcz3H,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UACxCw1H,YAAa51H,EAAIoC,KAAK,GAAI,CAACpC,EAAI2C,MAAO,CAAC,UACvC+0H,cAAe13H,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,CAAC,UACxCq1H,cAAe71H,EAAIoC,KAAK,GAAI,CAACpC,EAAI2C,MAAO,CAAC,UACzCg1H,cAAe33H,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAII,OAAQ,IACjDmO,KAAMvO,EAAIoC,KAAK,CAAC00H,GAAiB,GAAI,IACrCc,cAAe53H,EAAIoC,KAAK,CAACpC,EAAI2C,MAAO,CAAC3C,EAAI2C,MAAO,CAAC,UACjDk1H,iBAAkB73H,EAAIoC,KAAK,CAACpC,EAAII,MAAO,GAAI,IAC3C03H,kBAAmB93H,EAAIoC,KAAK,CAACpC,EAAIQ,KAAM,CAACR,EAAI2C,MAAO,KAErC,ECvDL7C,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMy6F,EAAkBx6F,EAAIkB,QAAQ,CAClCqxH,kBAAmBvyH,EAAIoB,KACvBoxH,MAAOxyH,EAAIoB,KACX+sF,KAAMnuF,EAAIoB,KACVqxH,aAAczyH,EAAIoB,KAClBsxH,kBAAmB1yH,EAAIoB,OAEnBuxH,EAAc3yH,EAAIE,OAAO,CAC7Bgb,GAAIlb,EAAII,KACRy1B,OAAQ2kE,EACRh5C,SAAUxhD,EAAII,KACdqhD,SAAUzhD,EAAII,KACdwyH,eAAgB5yH,EAAIQ,IACpBwyC,KAAMhzC,EAAII,KACV6pE,KAAMjqE,EAAII,KACVk2B,KAAMt2B,EAAIe,IACV6sC,YAAa5tC,EAAIi8G,QACjB4W,UAAW7yH,EAAII,KACf0yH,mBAAoB9yH,EAAIi8G,QACxB8W,OAAQ/yH,EAAII,KACZ4yH,gBAAiBhzH,EAAIQ,IACrByyH,eAAgBjzH,EAAII,KACpB6lG,UAAWjmG,EAAIi8G,QACf/V,UAAWlmG,EAAIi8G,QACfjyB,UAAWhqF,EAAIe,IACfmyH,mBAAoBlzH,EAAIi8G,QACxBkX,eAAgBnzH,EAAIi8G,QACpBmX,eAAgBpzH,EAAII,KACpBizH,UAAWrzH,EAAIi8G,QACfqX,aAActzH,EAAIi8G,QAClBsX,aAAcvzH,EAAIi8G,QAClBuX,QAASxzH,EAAIQ,IACbizH,aAAczzH,EAAII,KAClBszH,eAAgB1zH,EAAIi8G,QACpBvuE,YAAa1tC,EAAIi8G,QACjB0X,aAAc3zH,EAAII,KAClBya,OAAQ7a,EAAII,OAERgpG,EAAYppG,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIQ,IAAKkB,IAAK1B,EAAII,OAChD23H,EAAa/3H,EAAIE,OAAO,CAC5B2F,QAAS7F,EAAIiC,IAAI0wH,GACjBlqF,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAErB,OAAOR,EAAIkC,QAAQ,CACjB81H,UAAWh4H,EAAIoC,KAAK,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,GAAI,IAClDg0H,YAAaj1H,EAAIoC,KAAK,CAACpC,EAAIiC,IAAI0wH,IAAe,GAAI,IAClDuC,MAAOl1H,EAAIoC,KAAK,GAAI,GAAI,IACxBonG,eAAgBxpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,IAC1CK,aAAczpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,CAAC,UACzC6uB,cAAej4H,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAIQ,IAAKR,EAAIiC,IAAIjC,EAAII,OAAQ,CAAC23H,GAAa,CAAC,UAC9EG,UAAWl4H,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAIQ,IAAKR,EAAII,MAAO,CAAC23H,GAAa,CAAC,UACjEI,WAAYn4H,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAIQ,IAAKR,EAAII,MAAO,CAAC23H,GAAa,CAAC,UAClEvC,UAAWx1H,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,IAClDm3H,WAAYp4H,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,CAAC,UACrCy1H,OAAQj2H,EAAIoC,KAAK,CAACuwH,GAAc,GAAI,KACpC,EC/CS0F,EAAav1E,GACxBv/C,EAAMC,OAAkB,CACtB1D,WAAYw4H,EACZ70H,UAAWC,EAAU60H,UACrBz1E,aAGSs0E,EAAcA,CAAC53H,EAAYsjD,IACtCv/C,EAAMC,OAAoB,CACxB1D,WAAY04H,EACZx3H,WAAYxB,EACZsjD,aCtBShjD,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMqpG,EAAYppG,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIQ,IAAKkB,IAAK1B,EAAII,OAChDq4H,EAAcz4H,EAAIE,OAAO,CAC7Bw4H,OAAQ14H,EAAIi8G,QACZ0c,aAAc34H,EAAIi8G,UAEd2c,EAAqB54H,EAAIE,OAAO,CACpCm0H,UAAWr0H,EAAIi8G,QACfqY,QAASt0H,EAAIi8G,QACbyc,OAAQ14H,EAAIi8G,QACZuY,QAASx0H,EAAIe,MAEf,OAAOf,EAAIkC,QAAQ,CACjB0yH,SAAU50H,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,GAAI,IACxCuoG,eAAgBxpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,IAC1CK,aAAczpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,CAAC,UACzCyvB,cAAe74H,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAMJ,EAAIi8G,WAAY,CAAC,UAC1E6c,eAAgB94H,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAMJ,EAAIi8G,WAAY,CAAC,UAC3Eqb,eAAgBt3H,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAII,OAAQ,IAClDo1H,UAAWx1H,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,IAClD83H,eAAgB/4H,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAACq4H,GAAc,CAAC,UACrDO,gBAAiBh5H,EAAIoC,KAAK,GAAI,CAACw2H,GAAqB,CAAC,UACrDnB,aAAcz3H,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UACxC64H,aAAcj5H,EAAIoC,KAAK,GAAI,CAACpC,EAAI2C,MAAO,CAAC,UACxCu2H,YAAal5H,EAAIoC,KAAK,GAAI,CAACpC,EAAIe,KAAM,CAAC,UACtCo4H,gBAAiBn5H,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAACq4H,GAAc,CAAC,UACtDW,gBAAiBp5H,EAAIoC,KAAK,GAAI,CAACpC,EAAI2C,MAAO,CAAC,UAC3C02H,0BAA2Br5H,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UACrDk5H,sBAAuBt5H,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAII,OAAQ,CAAC,UAC1Dm5H,WAAYv5H,EAAIoC,KAAK,GAAI,GAAI,IAC7Bo3H,QAASx5H,EAAIoC,KAAK,GAAI,GAAI,IAC1Bq3H,cAAez5H,EAAIoC,KAAK,GAAI,CAACpC,EAAI2C,MAAO,CAAC,UACzC+2H,uBAAwB15H,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UAClDu5H,mBAAoB35H,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAII,OAAQ,CAAC,WACvD,EClCSN,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM65H,EAAe55H,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIQ,IAAKkB,IAAK1B,EAAII,OACnDy5H,EAAkB75H,EAAIE,OAAO,CACjCV,GAAIQ,EAAIQ,IACRk4H,OAAQ14H,EAAIi8G,QACZjyB,UAAWhqF,EAAIe,MAEjB,OAAOf,EAAIkC,QAAQ,CACjB81H,UAAWh4H,EAAIoC,KAAK,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,GAAI,IAClDuoG,eAAgBxpG,EAAIoC,KAAK,GAAI,CAACw3H,GAAe,IAC7CnwB,aAAczpG,EAAIoC,KAAK,GAAI,CAACw3H,GAAe,CAAC,UAC5CpE,UAAWx1H,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,IAClD64H,gBAAiB95H,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAIQ,IAAKR,EAAIQ,KAAM,CAACR,EAAIiC,IAAI43H,IAAmB,CAAC,UACrFE,iBAAkB/5H,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAIQ,IAAKR,EAAIQ,KAAM,CAACR,EAAIiC,IAAI43H,IAAmB,CAAC,UACtF5D,OAAQj2H,EAAIoC,KACV,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAMy5H,IAAmB75H,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAMy5H,KAC5E,CAAC75H,EAAIQ,KACL,KAEF,ECNSw5H,EAAel3E,GAC1Bv/C,EAAMC,OAAoB,CACxB1D,WAAYm6H,EACZx2H,UAAWC,EAAUy8B,YACrB2iB,aASSo3E,EAAYA,CAAC16H,EAAYsjD,IACpCv/C,EAAMC,OAAkB,CACtB1D,WAAYq6H,EACZn5H,WAAYxB,EACZsjD,aC9BShjD,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMqpG,EAAYppG,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIQ,IAAKkB,IAAK1B,EAAII,OAChDwzH,EAAqB5zH,EAAIE,OAAO,CACpCV,GAAIQ,EAAIQ,IACRszH,YAAa9zH,EAAIi8G,QACjB8X,YAAa/zH,EAAIi8G,QACjBz6D,SAAUxhD,EAAII,KACdqhD,SAAUzhD,EAAII,KACd6zH,eAAgBj0H,EAAIi8G,QACpBiY,UAAWl0H,EAAIi8G,QACf1yE,KAAMvpC,EAAII,KACVk2B,KAAMt2B,EAAIe,IACV8rC,UAAW7sC,EAAIQ,IACfotC,YAAa5tC,EAAIi8G,QACjBkY,QAASn0H,EAAIQ,IACb6zH,UAAWr0H,EAAIi8G,QACfqY,QAASt0H,EAAIi8G,QACbgX,eAAgBjzH,EAAII,KACpBo0H,QAASx0H,EAAIQ,IACb2yH,eAAgBnzH,EAAIi8G,QACpBmX,eAAgBpzH,EAAII,KACpBqzH,aAAczzH,EAAII,KAClBszH,eAAgB1zH,EAAIi8G,QACpBvuE,YAAa1tC,EAAIi8G,QACjB0X,aAAc3zH,EAAII,OAEdg6H,EAAyBp6H,EAAIE,OAAO,CACxCV,GAAIQ,EAAIe,IACRszH,UAAWr0H,EAAIi8G,QACfjyB,UAAWhqF,EAAIe,IACfyzH,QAASx0H,EAAIe,MAETy5F,EAAkBx6F,EAAIkB,QAAQ,CAClCqxH,kBAAmBvyH,EAAIoB,KACvBoxH,MAAOxyH,EAAIoB,KACX+sF,KAAMnuF,EAAIoB,KACVqxH,aAAczyH,EAAIoB,KAClBsxH,kBAAmB1yH,EAAIoB,OAEnBuxH,EAAc3yH,EAAIE,OAAO,CAC7Bgb,GAAIlb,EAAII,KACRy1B,OAAQ2kE,EACRh5C,SAAUxhD,EAAII,KACdqhD,SAAUzhD,EAAII,KACdwyH,eAAgB5yH,EAAIQ,IACpBwyC,KAAMhzC,EAAII,KACV6pE,KAAMjqE,EAAII,KACVk2B,KAAMt2B,EAAIe,IACV6sC,YAAa5tC,EAAIi8G,QACjB4W,UAAW7yH,EAAII,KACf0yH,mBAAoB9yH,EAAIi8G,QACxB8W,OAAQ/yH,EAAII,KACZ4yH,gBAAiBhzH,EAAIQ,IACrByyH,eAAgBjzH,EAAII,KACpB6lG,UAAWjmG,EAAIi8G,QACf/V,UAAWlmG,EAAIi8G,QACfjyB,UAAWhqF,EAAIe,IACfmyH,mBAAoBlzH,EAAIi8G,QACxBkX,eAAgBnzH,EAAIi8G,QACpBmX,eAAgBpzH,EAAII,KACpBizH,UAAWrzH,EAAIi8G,QACfqX,aAActzH,EAAIi8G,QAClBsX,aAAcvzH,EAAIi8G,QAClBuX,QAASxzH,EAAIQ,IACbizH,aAAczzH,EAAII,KAClBszH,eAAgB1zH,EAAIi8G,QACpBvuE,YAAa1tC,EAAIi8G,QACjB0X,aAAc3zH,EAAII,KAClBya,OAAQ7a,EAAII,OAEd,OAAOJ,EAAIkC,QAAQ,CACjB81H,UAAWh4H,EAAIoC,KAAK,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,GAAI,IAClDuoG,eAAgBxpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,IAC1CK,aAAczpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,CAAC,UACzC+rB,YAAan1H,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAI2xH,IAAsB,CAAC,UAC1D4B,UAAWx1H,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,IAClD4B,QAAS7C,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAACwzH,GAAqB,CAAC,UACrDyG,iBAAkBr6H,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAIQ,IAAKR,EAAIQ,KAAM,CAACR,EAAIiC,IAAIm4H,IAA0B,CAAC,UAC7FE,oBAAqBt6H,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAIQ,IAAKR,EAAIQ,KAAM,CAACR,EAAIiC,IAAI0wH,IAAe,CAAC,UACrFsD,OAAQj2H,EAAIoC,KAAK,CAACuwH,GAAc,GAAI,KACpC,EC5ESwD,EAAcA,CAAC32H,EAAYsjD,IACtCv/C,EAAMC,OAAoB,CACxB1D,WAAYy6H,EACZv5H,WAAYxB,EACZsjD,aCRShjD,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMqpG,EAAYppG,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIQ,IAAKkB,IAAK1B,EAAII,OAChDq0H,EAAsBz0H,EAAIE,OAAO,CACrCV,GAAIQ,EAAIQ,IACRszH,YAAa9zH,EAAIi8G,QACjB8X,YAAa/zH,EAAIi8G,QACjBgY,eAAgBj0H,EAAIi8G,QACpBlzG,KAAM/I,EAAII,KACVi0H,UAAWr0H,EAAIi8G,QACfqY,QAASt0H,EAAIi8G,QACbyY,eAAgB10H,EAAIi8G,QACpB97G,QAASH,EAAII,KACbo0H,QAASx0H,EAAIe,IACb4sC,SAAU3tC,EAAIi8G,QACd57G,SAAUL,EAAII,KACdyI,OAAQ7I,EAAII,OAERo6H,EAAWx6H,EAAIE,OAAO,CAC1BK,IAAKP,EAAIe,IACTygD,SAAUxhD,EAAII,KACdqhD,SAAUzhD,EAAII,KACdmpC,KAAMvpC,EAAII,KACVwtC,YAAa5tC,EAAIi8G,QACjBgX,eAAgBjzH,EAAII,KACpB+yH,eAAgBnzH,EAAIi8G,QACpBmX,eAAgBpzH,EAAII,KACpBqzH,aAAczzH,EAAII,KAClBszH,eAAgB1zH,EAAIi8G,QACpBvuE,YAAa1tC,EAAIi8G,QACjB0X,aAAc3zH,EAAII,OAEdq6H,EAA0Bz6H,EAAIE,OAAO,CACzCV,GAAIQ,EAAIe,IACRszH,UAAWr0H,EAAIi8G,QACfjyB,UAAWhqF,EAAIe,IACfyzH,QAASx0H,EAAIe,MAET25H,EAAwB16H,EAAIE,OAAO,CACvCV,GAAIQ,EAAIe,IACR45H,IAAK36H,EAAIi8G,QACT2e,KAAM56H,EAAIi8G,QACVlmF,MAAO/1B,EAAIi8G,QACXxvG,KAAMzM,EAAIi8G,QACVjyB,UAAWhqF,EAAIe,MAEXy5F,EAAkBx6F,EAAIkB,QAAQ,CAClCqxH,kBAAmBvyH,EAAIoB,KACvBoxH,MAAOxyH,EAAIoB,KACX+sF,KAAMnuF,EAAIoB,KACVqxH,aAAczyH,EAAIoB,KAClBsxH,kBAAmB1yH,EAAIoB,OAEnBuxH,EAAc3yH,EAAIE,OAAO,CAC7Bgb,GAAIlb,EAAII,KACRy1B,OAAQ2kE,EACRh5C,SAAUxhD,EAAII,KACdqhD,SAAUzhD,EAAII,KACdwyH,eAAgB5yH,EAAIQ,IACpBwyC,KAAMhzC,EAAII,KACV6pE,KAAMjqE,EAAII,KACVk2B,KAAMt2B,EAAIe,IACV6sC,YAAa5tC,EAAIi8G,QACjB4W,UAAW7yH,EAAII,KACf0yH,mBAAoB9yH,EAAIi8G,QACxB8W,OAAQ/yH,EAAII,KACZ4yH,gBAAiBhzH,EAAIQ,IACrByyH,eAAgBjzH,EAAII,KACpB6lG,UAAWjmG,EAAIi8G,QACf/V,UAAWlmG,EAAIi8G,QACfjyB,UAAWhqF,EAAIe,IACfmyH,mBAAoBlzH,EAAIi8G,QACxBkX,eAAgBnzH,EAAIi8G,QACpBmX,eAAgBpzH,EAAII,KACpBizH,UAAWrzH,EAAIi8G,QACfqX,aAActzH,EAAIi8G,QAClBsX,aAAcvzH,EAAIi8G,QAClBuX,QAASxzH,EAAIQ,IACbizH,aAAczzH,EAAII,KAClBszH,eAAgB1zH,EAAIi8G,QACpBvuE,YAAa1tC,EAAIi8G,QACjB0X,aAAc3zH,EAAII,KAClBya,OAAQ7a,EAAII,OAEd,OAAOJ,EAAIkC,QAAQ,CACjB81H,UAAWh4H,EAAIoC,KAAK,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,GAAI,IAClDuoG,eAAgBxpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,IAC1CK,aAAczpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,CAAC,UACzCgsB,aAAcp1H,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIwyH,IAAuB,CAAC,UAC5De,UAAWx1H,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,IAClDy0H,iBAAkB11H,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAACJ,EAAIiC,IAAIu4H,IAAY,CAAC,UAC7DK,SAAU76H,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAACq0H,GAAsB,CAAC,UACvDqG,kBAAmB96H,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAIQ,IAAKR,EAAIQ,KAAM,CAACR,EAAIiC,IAAIw4H,IAA2B,CAAC,UAC/FM,mBAAoB/6H,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAIe,IAAKf,EAAIe,IAAKf,EAAIQ,KAAM,CAACR,EAAIiC,IAAIy4H,IAAyB,CAAC,UACvGM,qBAAsBh7H,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAIQ,IAAKR,EAAIQ,KAAM,CAACR,EAAIiC,IAAI0wH,IAAe,CAAC,UACtFsD,OAAQj2H,EAAIoC,KAAK,CAACpC,EAAII,KAAMuyH,GAAc,GAAI,KAC9C,EC3FS+D,EAAeA,CAACl3H,EAAYsjD,IACvCv/C,EAAMC,OAAqB,CACzB1D,WAAYm7H,EACZj6H,WAAYxB,EACZsjD,aCRShjD,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMy6F,EAAkBx6F,EAAIkB,QAAQ,CAClCqxH,kBAAmBvyH,EAAIoB,KACvBoxH,MAAOxyH,EAAIoB,KACX+sF,KAAMnuF,EAAIoB,KACVqxH,aAAczyH,EAAIoB,KAClBsxH,kBAAmB1yH,EAAIoB,OAEnBuxH,EAAc3yH,EAAIE,OAAO,CAC7Bgb,GAAIlb,EAAII,KACRy1B,OAAQ2kE,EACRh5C,SAAUxhD,EAAII,KACdqhD,SAAUzhD,EAAII,KACdwyH,eAAgB5yH,EAAIQ,IACpBwyC,KAAMhzC,EAAII,KACV6pE,KAAMjqE,EAAII,KACVk2B,KAAMt2B,EAAIe,IACV6sC,YAAa5tC,EAAIi8G,QACjB4W,UAAW7yH,EAAII,KACf0yH,mBAAoB9yH,EAAIi8G,QACxB8W,OAAQ/yH,EAAII,KACZ4yH,gBAAiBhzH,EAAIQ,IACrByyH,eAAgBjzH,EAAII,KACpB6lG,UAAWjmG,EAAIi8G,QACf/V,UAAWlmG,EAAIi8G,QACfjyB,UAAWhqF,EAAIe,IACfmyH,mBAAoBlzH,EAAIi8G,QACxBkX,eAAgBnzH,EAAIi8G,QACpBmX,eAAgBpzH,EAAII,KACpBizH,UAAWrzH,EAAIi8G,QACfqX,aAActzH,EAAIi8G,QAClBsX,aAAcvzH,EAAIi8G,QAClBuX,QAASxzH,EAAIQ,IACbizH,aAAczzH,EAAII,KAClBszH,eAAgB1zH,EAAIi8G,QACpBvuE,YAAa1tC,EAAIi8G,QACjB0X,aAAc3zH,EAAII,KAClBya,OAAQ7a,EAAII,OAERgpG,EAAYppG,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIQ,IAAKkB,IAAK1B,EAAII,OAChDu0H,EAAU30H,EAAII,KACd23H,EAAa/3H,EAAIE,OAAO,CAC5B2F,QAAS7F,EAAIiC,IAAI0wH,GACjBlqF,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAErB,OAAOR,EAAIkC,QAAQ,CACjB81H,UAAWh4H,EAAIoC,KAAK,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,GAAI,IAClDg0H,YAAaj1H,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAIiC,IAAI0wH,IAAe,GAAI,IAC5DuC,MAAOl1H,EAAIoC,KAAK,GAAI,GAAI,IACxBonG,eAAgBxpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,IAC1CK,aAAczpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,CAAC,UACzC1mD,IAAK1iD,EAAIoC,KAAK,CAACuyH,EAAS30H,EAAIQ,IAAKR,EAAIQ,IAAKR,EAAIiC,IAAIjC,EAAII,OAAQ,CAAC23H,GAAa,CAAC,UAC7EvC,UAAWx1H,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,IAClDg1H,OAAQj2H,EAAIoC,KAAK,CAACuwH,GAAc,GAAI,KACpC,ECpDSlwE,EAAcA,CAACjjD,EAAYsjD,IACtCv/C,EAAMC,OAAoB,CACxB1D,WAAYo7H,EACZl6H,WAAYxB,EACZsjD,aCRShjD,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM+V,EAAQ9V,EAAIm7H,MACZ13B,EAAMzjG,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAM0V,IACxCA,EAAMlC,KACJ5T,EAAIkB,QAAQ,CACVH,IAAKf,EAAIe,IACT0iG,IAAKA,EACLjjG,IAAKR,EAAIQ,IACTgmD,MAAOxmD,EAAIwmD,MACX40E,KAAMp7H,EAAIiC,IAAIjC,EAAIqmD,MAClBjmD,KAAMJ,EAAII,KACVguB,MAAOpuB,EAAIiC,IAAI6T,MAGnB,MAAMulH,EAAQvlH,EACRk0F,EAAUhqG,EAAIE,OAAO,CACzBwrC,MAAO1rC,EAAIiB,UACXgyC,WAAYjzC,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,SAE5BssE,EAAc3yH,EAAIE,OAAO,CAC7BmuF,KAAMruF,EAAIspG,IACRtpG,EAAIE,OAAO,CACT8yC,KAAMg3D,EACNpzE,KAAM52B,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OAC1Bi1E,gBAAiBt7H,EAAIspG,IAAItpG,EAAIwmD,OAC7Bjb,OAAQvrC,EAAIQ,OAGhB+6H,KAAMv7H,EAAII,KACVguF,KAAMpuF,EAAIspG,IACRtpG,EAAIE,OAAO,CACTgb,GAAI8uF,EACJpzE,KAAM52B,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OAC1Bi1E,gBAAiBt7H,EAAIspG,IAAItpG,EAAIwmD,OAC7Bjb,OAAQvrC,EAAIQ,OAGhBwpF,UAAWhqF,EAAIwmD,MACf3D,SAAU7iD,EAAIspG,IACZtpG,EAAIE,OAAO,CACTgb,GAAI8uF,EACJh3D,KAAMg3D,EACNpzE,KAAM52B,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OAC1Bi1E,gBAAiBt7H,EAAIspG,IAAItpG,EAAIwmD,OAC7Bjb,OAAQvrC,EAAIQ,SAIlB,OAAOR,EAAIkC,QAAQ,CACjBs5H,cAAex7H,EAAIoC,KAAK,CAACpC,EAAIiC,IAAIjC,EAAIiC,IAAIjC,EAAIqmD,QAAS,GAAI,IAC1Do1E,WAAYz7H,EAAIoC,KACd,CAACpC,EAAIE,OAAO,CAAE2oF,MAAO7oF,EAAIQ,IAAK8O,OAAQtP,EAAIQ,OAC1C,CAACR,EAAIE,OAAO,CAAEw7H,OAAQ17H,EAAIiC,IAAIo5H,MAC9B,CAAC,UAEHM,gBAAiB37H,EAAIoC,KAAK,CAACpC,EAAIwmD,OAAQ,CAACxmD,EAAIspG,IAAIqpB,IAAe,CAAC,UAChEiJ,iBAAkB57H,EAAIoC,KACpB,CAACpC,EAAIE,OAAO,CAAE2oF,MAAO7oF,EAAIQ,IAAK8O,OAAQtP,EAAIQ,OAC1C,CAACR,EAAIE,OAAO,CAAEmrE,aAAcrrE,EAAIiC,IAAI0wH,MACpC,CAAC,UAEHkJ,mBAAoB77H,EAAIoC,KAAK,GAAI,CAACpC,EAAIwmD,OAAQ,CAAC,WAC/C,EC9DS1mD,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMgqG,EAAa/pG,EAAIiC,IAAIjC,EAAIqmD,MACzB2jD,EAAUhqG,EAAIE,OAAO,CACzBwrC,MAAO1rC,EAAIiB,UACXgyC,WAAYjzC,EAAIspG,IAAIS,KAEhB9jC,EAASjmE,EAAIQ,IACbsV,EAAQ9V,EAAIkB,QAAQ,CACxBH,IAAKf,EAAIe,IACTP,IAAKR,EAAIQ,IACT46H,KAAMp7H,EAAIiC,IAAIjC,EAAIqmD,MAClBjmD,KAAMJ,EAAII,OAEN07H,EAAO97H,EAAIiC,IAAIjC,EAAIqmD,MACnB01E,EAAY/7H,EAAIwmD,MAChBw1E,EAAUh8H,EAAIQ,IACdy7H,EAAgBj8H,EAAIkB,QAAQ,CAChCg7H,aAAcl8H,EAAIE,OAAO,CACvBwa,QAAS1a,EAAII,KACb+7H,WAAYn8H,EAAIQ,MAElB47H,uBAAwBp8H,EAAIoB,KAC5Bi7H,QAASr8H,EAAIE,OAAO,CAAEgqG,gBAAiBjkC,IACvCq2D,UAAWt8H,EAAIE,OAAO,CAAEq8H,aAAcP,IACtCQ,OAAQx8H,EAAIE,OAAO,CAAEu8H,aAAcx2D,IACnCy2D,gBAAiB18H,EAAIE,OAAO,CAAEy8H,YAAaZ,IAC3Ca,OAAQ58H,EAAIoB,KACZG,kBAAmBvB,EAAIE,OAAO,CAAE0B,QAASqkE,MAErC42D,EAAiB78H,EAAIkB,QAAQ,CAAEukD,GAAIu2E,EAASt2E,IAAKu2E,IACjDa,EAAyB98H,EAAIE,OAAO,CACxC2oF,MAAO7oF,EAAIQ,IACX8O,OAAQtP,EAAIQ,MAERu8H,EAAO/8H,EAAIE,OAAO,CACtB8yC,KAAMg3D,EACNpzE,KAAM52B,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OAC1Bi1E,gBAAiBt7H,EAAIspG,IAAItpG,EAAIwmD,OAC7Bjb,OAAQvrC,EAAIQ,MAERw8H,EAAOh9H,EAAIE,OAAO,CACtBgb,GAAI8uF,EACJpzE,KAAM52B,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OAC1Bi1E,gBAAiBt7H,EAAIspG,IAAItpG,EAAIwmD,OAC7Bjb,OAAQvrC,EAAIQ,MAERy8H,EAAWj9H,EAAIE,OAAO,CAC1Bgb,GAAI8uF,EACJzpG,IAAKP,EAAIspG,IAAItpG,EAAIQ,KACjBwyC,KAAMg3D,EACNpzE,KAAM52B,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OAC1Bi1E,gBAAiBt7H,EAAIspG,IAAItpG,EAAIwmD,OAC7Bjb,OAAQvrC,EAAIQ,MAERmyH,EAAc3yH,EAAIE,OAAO,CAC7BmuF,KAAMruF,EAAIspG,IAAIyzB,GACdxB,KAAMv7H,EAAII,KACVguF,KAAMpuF,EAAIspG,IAAI0zB,GACdhzC,UAAWhqF,EAAIwmD,MACf3D,SAAU7iD,EAAIspG,IAAI2zB,KAEdC,EAA2Bl9H,EAAIE,OAAO,CAC1CgrB,SAAUlrB,EAAIoC,KAAK,CAAC06H,GAAyB,CAAC98H,EAAIE,OAAO,CAAEmrE,aAAcrrE,EAAIiC,IAAI0wH,MAAkB,CAAC,UACpG9pC,MAAO7oF,EAAIQ,IACX8O,OAAQtP,EAAIQ,MAER28H,EAA0Bn9H,EAAIE,OAAO,CACzCk9H,YAAap9H,EAAIQ,IACjB68H,WAAYr9H,EAAIQ,IAChB6qE,aAAcrrE,EAAIiC,IAAI0wH,GACtB2K,sBAAuBt9H,EAAIiC,IAAIi7H,KA6BjC,OA3Bel9H,EAAIkC,QAAQ,CACzB05H,iBAAkB57H,EAAIoC,KAAK,CAAC06H,GAAyB,CAACK,GAA0B,CAAC,UACjFI,iBAAkBv9H,EAAIoC,KAAK,CAAC4nG,GAAU,CAAC/jC,GAAS,CAAC,UACjDu3D,eAAgBx9H,EAAIoC,KAAK,GAAI,CAACpC,EAAIqmD,MAAO,CAAC,UAC1Co3E,UAAWz9H,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,CAAC,UACpCk9H,eAAgB19H,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAM0V,KAAU,CAAC,UACrE6nH,sBAAuB39H,EAAIoC,KAAK,GAAI,CAACpC,EAAIspG,IAAIU,IAAW,CAAC,UACzD4zB,WAAY59H,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UACtCmkD,0BAA2BvkD,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAIE,OAAO,CAAEsiF,IAAKxiF,EAAII,KAAM2I,KAAM/I,EAAII,SAAW,CAAC,UACnGy9H,aAAc79H,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UACxC09H,mBAAoB99H,EAAIoC,KAAK,GAAI,CAAC6jE,GAAS,CAAC,UAC5C83D,WAAY/9H,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UACtC49H,eAAgBh+H,EAAIoC,KAClB,CACEpC,EAAIE,OAAO,CACTgb,GAAI8uF,EACJzpG,IAAKP,EAAIspG,IAAIrjC,GACbrvC,KAAM52B,EAAIspG,IAAIwyB,GACdmC,gBAAiBj+H,EAAIspG,IAAIS,GACzBuxB,gBAAiBt7H,EAAIspG,IAAIyyB,GACzBxwF,OAAQ06B,KAGZ,CAAC42D,GACD,KAGS,ECnGF/8H,EAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM+V,EAAQ9V,EAAIm7H,MACZl5H,EAAMjC,EAAIm7H,MACV+C,EAAgBl+H,EAAIkB,QAAQ,CAChCH,IAAKf,EAAIe,IACTP,IAAKR,EAAIQ,IACT46H,KAAMp7H,EAAIiC,IAAIjC,EAAIqmD,MAClBjmD,KAAMJ,EAAII,OAEN4pG,EAAUhqG,EAAIE,OAAO,CACzBwrC,MAAO1rC,EAAIiB,UACXgyC,WAAYjzC,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,SAE5B83E,EAAqBn+H,EAAIkB,QAAQ,CACrCk9H,MAAOp0B,EACPq0B,MAAOr+H,EAAIoB,OAEPk9H,EAAet+H,EAAIE,OAAO,CAAEq+H,MAAOv+H,EAAI2C,OACvC67H,EAAcx+H,EAAIE,OAAO,CAC7BuwG,aAAczwG,EAAIspG,IAAItpG,EAAII,MAC1B+mH,aAAcnnH,EAAIspG,IAAItpG,EAAIQ,KAC1BqmC,SAAU7mC,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAM89H,KAC9CO,2BAA4Bz+H,EAAIspG,IAAItpG,EAAIwmD,OACxCk4E,gCAAiC1+H,EAAIspG,IAAItpG,EAAIwmD,OAC7Cm4E,qBAAsB3+H,EAAIspG,IAAI60B,GAC9BS,gBAAiB5+H,EAAIspG,IAAItpG,EAAI6+H,OAC7B/sB,WAAY9xG,EAAIspG,IAAItpG,EAAII,MACxB0+H,cAAe9+H,EAAIspG,IAAIg1B,KAEnBS,EAAiB/+H,EAAIE,OAAO,CAChC8+H,sBAAuBh/H,EAAIwmD,MAC3By4E,8BAA+Bj/H,EAAIspG,IAAItpG,EAAIwmD,OAC3C04E,kBAAmBl/H,EAAIwmD,MACvB24E,uBAAwBn/H,EAAIspG,IAAItpG,EAAIwmD,OACpC44E,4BAA6Bp/H,EAAIspG,IAAItpG,EAAIwmD,OACzC64E,2BAA4Br/H,EAAIspG,IAAItpG,EAAIwmD,OACxC84E,cAAet/H,EAAIiB,YAEfs+H,EAAWv/H,EAAIE,OAAO,CAC1BoI,SAAUtI,EAAIspG,IAAItpG,EAAIqmD,MACtBoqD,aAAczwG,EAAII,KAClB+mH,aAAcnnH,EAAIQ,IAClBqmC,SAAU7mC,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAM89H,IACtCj0B,gBAAiBD,EACjBw1B,iBAAkBx/H,EAAIiC,IAAIjC,EAAIgnD,MAAMgjD,EAAShqG,EAAIQ,MACjDi+H,2BAA4Bz+H,EAAIspG,IAAItpG,EAAIwmD,OACxCk4E,gCAAiC1+H,EAAIspG,IAAItpG,EAAIwmD,OAC7Ci5E,sBAAuBz/H,EAAIspG,IAAIU,GAC/B01B,gBAAiBX,EACjBH,gBAAiB5+H,EAAIspG,IAAItpG,EAAI6+H,OAC7B/sB,WAAY9xG,EAAII,KAChB0+H,cAAe9+H,EAAIspG,IAAIg1B,KAMnBqB,GAJiB3/H,EAAIkB,QAAQ,CACjC0+H,QAAS5/H,EAAIspG,IAAIk1B,GACjBxnB,KAAMuoB,IAEiBv/H,EAAIE,OAAO,CAClC2oF,MAAO7oF,EAAIQ,IACX8O,OAAQtP,EAAIQ,OAEdyB,EAAI2R,KACF5T,EAAIiC,IACFjC,EAAIkB,QAAQ,CACVH,IAAKf,EAAIe,IACT0iG,IAAKzjG,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAM0V,IACjCtV,IAAKR,EAAIQ,IACTgmD,MAAOxmD,EAAIwmD,MACX40E,KAAMp7H,EAAIiC,IAAIjC,EAAIqmD,MAClBjmD,KAAMJ,EAAII,KACVguB,MAAOnsB,MAIb6T,EAAMlC,KACJ5T,EAAIkB,QAAQ,CACVH,IAAKf,EAAIe,IACT0iG,IAAKzjG,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAM0V,IACjCtV,IAAKR,EAAIQ,IACTgmD,MAAOxmD,EAAIwmD,MACX40E,KAAMp7H,EAAIiC,IAAIjC,EAAIqmD,MAClBjmD,KAAMJ,EAAII,KACVguB,MAAOnsB,KAGX,MAAM49H,EAAa7/H,EAAIE,OAAO,CAAEw7H,OAAQ17H,EAAIiC,IAAI6T,KAC1CgqH,EAAgB9/H,EAAIE,OAAO,CAC/BgrB,SAAUlrB,EAAIoC,KAAK,CAACu9H,GAAmB,CAACE,GAAa,CAAC,UACtDh3C,MAAO7oF,EAAIQ,IACX8O,OAAQtP,EAAIQ,MAERu/H,EAAoB//H,EAAIE,OAAO,CACnC8/H,YAAahgI,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OACjC+2E,YAAap9H,EAAIQ,IACjBk7H,OAAQ17H,EAAIiC,IAAI6T,GAChBmqH,aAAcjgI,EAAIwmD,MAClB05E,gBAAiBlgI,EAAIiC,IAAI69H,KAErBK,EAAkBngI,EAAIE,OAAO,CACjC8/H,YAAahgI,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OACjC+5E,UAAWpgI,EAAIiC,IAAIjC,EAAIqmD,QAEnB02E,EAAO/8H,EAAIE,OAAO,CACtB8yC,KAAMg3D,EACNpzE,KAAM52B,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OAC1Bi1E,gBAAiBt7H,EAAIspG,IAAItpG,EAAIwmD,OAC7Bjb,OAAQvrC,EAAIQ,IACZmrC,QAAS3rC,EAAIspG,IAAIU,KAEbgzB,EAAOh9H,EAAIE,OAAO,CACtBgb,GAAI8uF,EACJpzE,KAAM52B,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OAC1Bi1E,gBAAiBt7H,EAAIspG,IAAItpG,EAAIwmD,OAC7Bjb,OAAQvrC,EAAIQ,MAER6/H,EAAUrgI,EAAIE,OAAO,CACzBK,IAAKP,EAAIspG,IAAItpG,EAAIQ,KACjBwyC,KAAMg3D,EACNpzE,KAAM52B,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OAC1Bi1E,gBAAiBt7H,EAAIspG,IAAItpG,EAAIwmD,OAC7Bjb,OAAQvrC,EAAIQ,IACZ8/H,mBAAoBtgI,EAAIspG,IAAItpG,EAAIQ,KAChC+/H,WAAYvgI,EAAIspG,IAAItpG,EAAIwmD,OACxB7a,QAASq+D,IAELizB,EAAWj9H,EAAIE,OAAO,CAC1Bgb,GAAI8uF,EACJzpG,IAAKP,EAAIspG,IAAItpG,EAAIQ,KACjBwyC,KAAMg3D,EACNpzE,KAAM52B,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OAC1Bi1E,gBAAiBt7H,EAAIspG,IAAItpG,EAAIwmD,OAC7Bjb,OAAQvrC,EAAIQ,IACZmrC,QAAS3rC,EAAIspG,IAAIU,KAEb2oB,EAAc3yH,EAAIE,OAAO,CAC7BmuF,KAAMruF,EAAIspG,IAAIyzB,GACdxB,KAAMv7H,EAAII,KACVguF,KAAMpuF,EAAIspG,IAAI0zB,GACdnxF,QAAS7rC,EAAIspG,IAAI+2B,GACjBr2C,UAAWhqF,EAAIwmD,MACf3D,SAAU7iD,EAAIspG,IAAI2zB,KAEduD,EAAmBxgI,EAAIE,OAAO,CAClCmrE,aAAcrrE,EAAIiC,IAAI0wH,KAElB8N,EAAkBzgI,EAAIE,OAAO,CACjCgrB,SAAUlrB,EAAIoC,KAAK,CAACu9H,GAAmB,CAACa,GAAmB,CAAC,UAC5D33C,MAAO7oF,EAAIQ,IACX8O,OAAQtP,EAAIQ,MAER28H,EAA0Bn9H,EAAIE,OAAO,CACzCk9H,YAAap9H,EAAIQ,IACjB68H,WAAYr9H,EAAIQ,IAChB6qE,aAAcrrE,EAAIiC,IAAI0wH,GACtB2K,sBAAuBt9H,EAAIiC,IAAIw+H,KAE3BC,EAAiB1gI,EAAIE,OAAO,CAAEsiF,IAAKxiF,EAAII,KAAM2I,KAAM/I,EAAII,OACvDugI,EAAc3gI,EAAIE,OAAO,CAC7Bgb,GAAI8uF,EACJzpG,IAAKP,EAAIspG,IAAItpG,EAAIQ,KACjBo2B,KAAM52B,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OAC1B43E,gBAAiBj+H,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OACrCi1E,gBAAiBt7H,EAAIspG,IAAItpG,EAAIwmD,OAC7Bjb,OAAQvrC,EAAIQ,MAERy7H,EAAgBj8H,EAAIkB,QAAQ,CAChCg7H,aAAcl8H,EAAIE,OAAO,CACvBwa,QAAS1a,EAAII,KACb+7H,WAAYn8H,EAAIQ,MAElB47H,uBAAwBp8H,EAAIoB,KAC5Bi7H,QAASr8H,EAAIE,OAAO,CAAEgqG,gBAAiBlqG,EAAIQ,MAC3C87H,UAAWt8H,EAAIE,OAAO,CAAEq8H,aAAcv8H,EAAIQ,MAC1Cg8H,OAAQx8H,EAAIE,OAAO,CAAEu8H,aAAcz8H,EAAIQ,MACvCk8H,gBAAiB18H,EAAIE,OAAO,CAAEy8H,YAAa38H,EAAIwmD,QAC/Co2E,OAAQ58H,EAAIoB,KACZG,kBAAmBvB,EAAIE,OAAO,CAAE0B,QAAS5B,EAAIQ,QAEzCwB,EAAShC,EAAIkB,QAAQ,CAAEukD,GAAIzlD,EAAIQ,IAAKklD,IAAKu2E,IACzC2E,EAAgB5gI,EAAIE,OAAO,CAC/B4rC,QAASk+D,EACTr+D,QAASq+D,IAEL62B,EAAY7gI,EAAIE,OAAO,CAC3BurC,UAAWzrC,EAAIQ,IACf+/H,WAAYvgI,EAAIspG,IAAItpG,EAAIwmD,SAEpBs6E,EAAc9gI,EAAIE,OAAO,CAC7BK,IAAKP,EAAIspG,IAAItpG,EAAIQ,KACjBo2B,KAAM52B,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OAC1B43E,gBAAiBj+H,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OACrCi1E,gBAAiBt7H,EAAIspG,IAAItpG,EAAIwmD,OAC7Bjb,OAAQvrC,EAAIQ,IACZ8/H,mBAAoBtgI,EAAIspG,IAAItpG,EAAIQ,KAChC+/H,WAAYvgI,EAAIspG,IAAItpG,EAAIwmD,OACxB7a,QAASq+D,IAEL+2B,EAAe/gI,EAAIkB,QAAQ,CAC/Bg7H,aAAcl8H,EAAIE,OAAO,CACvBwa,QAAS1a,EAAII,KACb+7H,WAAYn8H,EAAIQ,MAElB47H,uBAAwBp8H,EAAIoB,KAC5Bk7H,UAAWt8H,EAAIE,OAAO,CAAEq8H,aAAcv8H,EAAIQ,MAC1Cg8H,OAAQx8H,EAAIE,OAAO,CAAEu8H,aAAcz8H,EAAIQ,MACvCwgI,iBAAkBhhI,EAAIE,OAAO,CAAE+gI,kBAAmBjhI,EAAIQ,MACtDk8H,gBAAiB18H,EAAIE,OAAO,CAAEy8H,YAAa38H,EAAIwmD,QAC/Co2E,OAAQ58H,EAAIoB,KACZ8/H,QAASlhI,EAAIE,OAAO,CAAEy8H,YAAa38H,EAAIwmD,QACvCjlD,kBAAmBvB,EAAIE,OAAO,CAAE0B,QAAS5B,EAAIQ,QAEzCgB,EAAWxB,EAAIkB,QAAQ,CAAEukD,GAAIzlD,EAAIQ,IAAKklD,IAAKq7E,IAC3CI,EAAmBnhI,EAAIE,OAAO,CAClCgb,GAAI8uF,EACJzpG,IAAKP,EAAIspG,IAAItpG,EAAIQ,KACjB4gI,mBAAoBphI,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OACxCrT,KAAMg3D,EACNpzE,KAAM52B,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OAC1Bi1E,gBAAiBt7H,EAAIspG,IAAItpG,EAAIwmD,OAC7Bjb,OAAQvrC,EAAIQ,MAER6gI,EAAoBrhI,EAAIkB,QAAQ,CACpCg7H,aAAcl8H,EAAIE,OAAO,CACvBwa,QAAS1a,EAAII,KACb+7H,WAAYn8H,EAAIQ,MAElB47H,uBAAwBp8H,EAAIoB,KAC5BukD,sBAAuB3lD,EAAIE,OAAO,CAAEurC,UAAWzrC,EAAIQ,MACnD67H,QAASr8H,EAAIE,OAAO,CAAEgqG,gBAAiBlqG,EAAIQ,MAC3C87H,UAAWt8H,EAAIE,OAAO,CAAEq8H,aAAcv8H,EAAIQ,MAC1Cg8H,OAAQx8H,EAAIE,OAAO,CAAEu8H,aAAcz8H,EAAIQ,MACvCk8H,gBAAiB18H,EAAIE,OAAO,CAAEy8H,YAAa38H,EAAIwmD,QAC/Co2E,OAAQ58H,EAAIoB,KACZG,kBAAmBvB,EAAIE,OAAO,CAAE0B,QAAS5B,EAAIQ,QAEzCsB,EAAW9B,EAAIkB,QAAQ,CAAEukD,GAAIzlD,EAAIQ,IAAKklD,IAAK27E,IACjD,OAAOrhI,EAAIkC,QAAQ,CACjBu5H,WAAYz7H,EAAIoC,KAAK,CAACu9H,GAAmB,CAACI,GAAoB,CAAC,UAC/DuB,qBAAsBthI,EAAIoC,KAAK,GAAI,CAAC+9H,GAAkB,CAAC,UACvDvE,iBAAkB57H,EAAIoC,KAAK,CAACu9H,GAAmB,CAACxC,GAA0B,CAAC,UAC3EI,iBAAkBv9H,EAAIoC,KAAK,CAAC4nG,GAAU,CAAChqG,EAAIQ,KAAM,CAAC,UAClDg9H,eAAgBx9H,EAAIoC,KAAK,GAAI,CAACpC,EAAIqmD,MAAO,CAAC,UAC1Co3E,UAAWz9H,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,CAAC,UACpCk9H,eAAgB19H,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAM89H,KAAkB,CAAC,UAC7EP,sBAAuB39H,EAAIoC,KAAK,GAAI,CAACpC,EAAIspG,IAAIU,IAAW,CAAC,UACzD4zB,WAAY59H,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UACtCmkD,0BAA2BvkD,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIy+H,IAAkB,CAAC,UACpE7C,aAAc79H,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UACxC09H,mBAAoB99H,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,CAAC,UAC7Cw9H,eAAgBh+H,EAAIoC,KAAK,CAACu+H,GAAc,CAAC3+H,GAAS,IAClDu/H,gBAAiBvhI,EAAIoC,KAAK,CAACw+H,GAAgB,CAACC,GAAY,CAAC,UACzDW,cAAexhI,EAAIoC,KAAK,CAAC0+H,GAAc,CAACt/H,GAAW,IACnDigI,oBAAqBzhI,EAAIoC,KAAK,CAAC++H,GAAmB,CAACr/H,GAAW,KAC9D,EClPS4/H,EAAe1gI,GAC1BuC,EAAMC,OAAoB,CACxB1D,WAAY6hI,EACZ3gI,eAGSsjD,EAAQA,CAACtjD,EAAoB8hD,IACxCv/C,EAAMC,OAAsB,CAC1Bs/C,WACAhjD,WAAY8hI,EACZ5gI,eAGSu9H,EAAQA,CAACv9H,EAAoB8hD,IACxCv/C,EAAMC,OAAc,CAClBs/C,WACAhjD,WAAY+hI,EACZ7gI,eC5BJ,EAAejB,IAAY,IAAX,IAAEC,GAAKD,EACrB,MAAM+hI,EAAU9hI,EAAIkB,QAAQ,CAC1BykD,sBAAuB3lD,EAAIoB,KAC3BwkD,oBAAqB5lD,EAAIoB,KACzBykD,oBAAqB7lD,EAAIoB,KACzB0kD,aAAc9lD,EAAIoB,KAClB2kD,WAAY/lD,EAAIoB,KAChB4kD,QAAShmD,EAAIoB,KACb6kD,MAAOjmD,EAAIoB,KACX8kD,UAAWlmD,EAAIoB,KACf+kD,eAAgBnmD,EAAIoB,OAEhBokD,EAAYxlD,EAAIkB,QAAQ,CAAEukD,GAAIzlD,EAAIQ,IAAKklD,IAAKo8E,IAC5CC,EAAgB/hI,EAAIwmD,MACpBw7E,EAAYhiI,EAAIkB,QAAQ,CAC5B0kD,oBAAqB5lD,EAAIoB,KACzBmkF,qBAAsBvlF,EAAIoB,KAC1BokF,uBAAwBxlF,EAAIoB,OAExB6gI,EAAajiI,EAAIkB,QAAQ,CAAEukD,GAAIs8E,EAAer8E,IAAKs8E,IACnDE,EAAoBliI,EAAIkB,QAAQ,CACpCihI,OAAQniI,EAAIoB,KACZghI,UAAWpiI,EAAIoB,OAEXihI,EAAcriI,EAAIkB,QAAQ,CAC9Bm/H,QAASrgI,EAAIE,OAAO,CAAEgb,GAAIlb,EAAIiB,UAAW+xC,KAAMhzC,EAAIiB,YACnD87H,KAAM/8H,EAAIE,OAAO,CAAEgb,GAAIlb,EAAIiB,UAAW+xC,KAAMhzC,EAAIiB,YAChD+7H,KAAMh9H,EAAIE,OAAO,CAAEgb,GAAIlb,EAAIiB,YAC3BqhI,gBAAiBtiI,EAAIE,OAAO,CAC1B8yC,KAAMhzC,EAAIiB,UACV+8B,SAAUh+B,EAAIiB,YAEhBshI,eAAgBviI,EAAIE,OAAO,CACzB8yC,KAAMhzC,EAAIiB,UACVuhI,YAAaxiI,EAAII,KACjB49B,SAAUh+B,EAAIiB,YAEhBg8H,SAAUj9H,EAAIE,OAAO,CAAEgb,GAAIlb,EAAIiB,UAAW+xC,KAAMhzC,EAAIiB,YACpDwhI,aAAcziI,EAAIE,OAAO,CACvBgb,GAAIlb,EAAIiB,UACR+xC,KAAMhzC,EAAIiB,UACVyhI,OAAQ1iI,EAAIiB,cAGV0hI,EAAQ3iI,EAAIE,OAAO,CACvBK,IAAKP,EAAIwmD,MACTz9B,OAAQm5G,EACR3G,KAAM8G,EACN17E,OAAQ3mD,EAAIwmD,MACZwjC,UAAWhqF,EAAIwmD,QAEXo8E,EAAmB5iI,EAAIE,OAAO,CAClC6pC,KAAM/pC,EAAIiC,IAAI0gI,GACdE,YAAad,EACbe,iBAAkB9iI,EAAIspG,IAAItpG,EAAIiB,aAE1BmlD,EAAWpmD,EAAIE,OAAO,CAC1BK,IAAKP,EAAIQ,IACT8H,SAAUtI,EAAIqmD,KACd3a,MAAO1rC,EAAIiB,UACX0I,KAAM3J,EAAII,KACV2I,KAAM/I,EAAII,KACV6mC,YAAajnC,EAAIQ,IACjBqI,OAAQ7I,EAAII,OAERwpH,EAAY5pH,EAAIkB,QAAQ,CAC5B+mD,aAAcjoD,EAAIoB,KAClBitF,KAAMruF,EAAIoB,KACVgtF,KAAMpuF,EAAIoB,KACVyqC,QAAS7rC,EAAIoB,KACb2hI,eAAgB/iI,EAAIoB,KACpByhD,SAAU7iD,EAAIoB,KACd4hI,gBAAiBhjI,EAAIoB,OAEjB6hI,EAAOjjI,EAAIe,IACXmiI,EAAWljI,EAAIE,OAAO,CAC1BijI,GAAIvZ,EACJ1uG,GAAIlb,EAAIiB,UACRV,IAAKP,EAAIQ,IACTuoB,OAAQm5G,EACRlvF,KAAMhzC,EAAIiB,UACV+oF,UAAWi5C,EACXP,OAAQ1iI,EAAIspG,IAAItpG,EAAIiB,WACpB8N,MAAO/O,EAAIQ,IACX+qC,OAAQvrC,EAAIQ,MAER4iI,EAAYpjI,EAAIkB,QAAQ,CAAEskF,uBAAwBxlF,EAAIoB,OACtDiiI,EAAarjI,EAAIkB,QAAQ,CAAEukD,GAAIs8E,EAAer8E,IAAK09E,IACnDE,EAAQtjI,EAAIE,OAAO,CACvBK,IAAKP,EAAIQ,IACT+iI,gBAAiBvjI,EAAIwmD,MACrB5kD,QAAS5B,EAAIwmD,MACbg9E,YAAaxjI,EAAIwmD,MACjBi9E,qBAAsBzjI,EAAIwmD,MAC1Bk9E,wBAAyB1jI,EAAIwmD,MAC7BtD,OAAQljD,EAAIQ,IACZmjI,YAAa3jI,EAAIwmD,MACjBo9E,gBAAiB5jI,EAAIwmD,MACrBq9E,kBAAmB7jI,EAAIwmD,MACvBs9E,eAAgB9jI,EAAIwmD,QAEhBu9E,EAAa/jI,EAAIkB,QAAQ,CAC7BukD,GAAIzlD,EAAIE,OAAO,CAAE8jI,OAAQhkI,EAAIiC,IAAIjC,EAAIqmD,QACrCX,IAAK1lD,EAAII,OAEL6jI,EAAejkI,EAAIkB,QAAQ,CAC/BukD,GAAIzlD,EAAIE,OAAO,CAAEwmH,YAAa1mH,EAAIiB,YAClCykD,IAAK1lD,EAAII,OAEL8jI,EAAalkI,EAAIkB,QAAQ,CAAEukD,GAAIzlD,EAAIoB,KAAMskD,IAAK1lD,EAAII,OACxD,OAAOJ,EAAIkC,QAAQ,CACjBupC,UAAWzrC,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIiB,WAAY,CAACjB,EAAIQ,KAAM,CAAC,UAChEqrC,QAAS7rC,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIQ,KAAM,CAACglD,GAAY,IACzD5jD,QAAS5B,EAAIoC,KAAK,CAACpC,EAAIspG,IAAItpG,EAAIiB,YAAa,CAACjB,EAAIwmD,OAAQ,IACzDK,UAAW7mD,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACjB,EAAIQ,KAAM,CAAC,UACjD6tF,KAAMruF,EAAIoC,KAAK,CAACpC,EAAIE,OAAO,CAAEwmH,YAAa1mH,EAAIiB,UAAWsqC,OAAQvrC,EAAIwmD,SAAW,CAACy7E,GAAa,IAC9F35H,SAAUtI,EAAIoC,KAAK,GAAI,CAACpC,EAAIqmD,MAAO,CAAC,UACpC89E,OAAQnkI,EAAIoC,KAAK,CAACpC,EAAIE,OAAO,CAAEuoC,OAAQzoC,EAAIspG,IAAItpG,EAAIwmD,OAAQ9d,MAAO1oC,EAAI6+H,SAAW,CAAC+D,GAAmB,CAAC,UACtGt7E,YAAatnD,EAAIoC,KAAK,GAAI,CAACgkD,GAAW,CAAC,UACvCg+E,eAAgBpkI,EAAIoC,KAAK,CAACpC,EAAIQ,KAAM,CAAC0iI,GAAW,IAChDmB,gBAAiBrkI,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAIQ,KAAM,CAACR,EAAIiC,IAAIihI,IAAY,IACnEvH,gBAAiB37H,EAAIoC,KAAK,CAAC2/H,GAAgB,CAAC/hI,EAAIspG,IAAIq5B,IAAS,IAC7D2B,KAAMtkI,EAAIoC,KAAK,GAAI,GAAI,IACvBskD,YAAa1mD,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,CAAC,UACtCmJ,KAAM3J,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UAChCguF,KAAMpuF,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIQ,KAAM,CAAC6iI,GAAa,IACvDt6H,KAAM/I,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UAChCmkI,UAAWvkI,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UACrCokI,MAAOxkI,EAAIoC,KAAK,GAAI,CAACkhI,GAAQ,CAAC,UAC9Bz6H,OAAQ7I,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UAClC6mC,YAAajnC,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,CAAC,UACtCqiD,SAAU7iD,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIQ,KAAM,CAACglD,GAAY,IAC1Di/E,cAAezkI,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIQ,KAAM,CAACglD,GAAY,IAC/DyC,aAAcjoD,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIiB,UAAWjB,EAAIQ,KAAM,CAACglD,GAAY,IAC7Ek/E,eAAgB1kI,EAAIoC,KAAK,GAAI,CAACpC,EAAIE,OAAO,CAAEqrC,OAAQvrC,EAAIwmD,SAAW,CAAC,UACnEm+E,YAAa3kI,EAAIoC,KACf,CACEpC,EAAIE,OAAO,CACT0wB,KAAM5wB,EAAIiC,IAAIjC,EAAIqmD,MAClBM,OAAQ3mD,EAAIwmD,MACZg8E,YAAaxiI,EAAII,KACjB49B,SAAUh+B,EAAIiB,aAGlB,CAAC8iI,GACD,IAEFa,uBAAwB5kI,EAAIoC,KAC1B,CACEpC,EAAIE,OAAO,CACT6uG,WAAY/uG,EAAIspG,IAAItpG,EAAIiB,WACxB0lD,OAAQ3mD,EAAIwmD,SAGhB,CAACy9E,GACD,IAEFY,qBAAsB7kI,EAAIoC,KACxB,CACEpC,EAAIE,OAAO,CACT6uG,WAAY/uG,EAAIspG,IAAItpG,EAAIiB,WACxB0lD,OAAQ3mD,EAAIwmD,SAGhB,CAACy9E,GACD,IAEFa,YAAa9kI,EAAIoC,KAAK,CAACpC,EAAIE,OAAO,CAAE89B,SAAUh+B,EAAIiB,UAAWsqC,OAAQvrC,EAAIwmD,SAAW,CAAC09E,GAAa,KAErG,ECzKD,EAAenkI,IAAiB,IAAhB,IAAEC,GAAUD,EAC1B,MAAMylD,EAAYxlD,EAAIkB,QAAQ,CAC5BukD,GAAIzlD,EAAIQ,IACRklD,IAAK1lD,EAAIkB,QAAQ,CACfykD,sBAAuB3lD,EAAIoB,KAC3BwkD,oBAAqB5lD,EAAIoB,KACzBykD,oBAAqB7lD,EAAIoB,KACzB0kD,aAAc9lD,EAAIoB,KAClB2kD,WAAY/lD,EAAIoB,KAChB4kD,QAAShmD,EAAIoB,KACb6kD,MAAOjmD,EAAII,KACX8lD,UAAWlmD,EAAIoB,KACf+kD,eAAgBnmD,EAAIoB,SAGlBglD,EAAWpmD,EAAIE,OAAO,CAC1BK,IAAKP,EAAIQ,IACT8H,SAAUtI,EAAIqmD,KACd3a,MAAO1rC,EAAIiB,UACX0I,KAAM3J,EAAII,KACV2I,KAAM/I,EAAII,KACV6mC,YAAajnC,EAAIQ,IACjBqI,OAAQ7I,EAAII,OAER6iI,EAAOjjI,EAAIe,IACXulD,EAAYtmD,EAAIE,OAAO,CAC3BqmD,aAAcvmD,EAAIQ,IAClBimD,WAAYw8E,EACZp8F,SAAUuf,EACVM,YAAa1mD,EAAIQ,IACjBmmD,OAAQ3mD,EAAIQ,IACZomD,MAAO5mD,EAAIiB,YAEb,OAAOjB,EAAIkC,QAAQ,CACjBupC,UAAWzrC,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIiB,WAAY,CAACjB,EAAIQ,KAAM,CAAC,UAChEqrC,QAAS7rC,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIQ,KAAM,CAACglD,GAAY,IACzDqB,UAAW7mD,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACjB,EAAIQ,KAAM,CAAC,UACjD6tF,KAAMruF,EAAIoC,KAAK,CAACpC,EAAIQ,KAAM,CAACglD,GAAY,IACvCl9C,SAAUtI,EAAIoC,KAAK,GAAI,CAACpC,EAAIqmD,MAAO,CAAC,UACpCc,iBAAkBnnD,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,CAAC,UAC3CukI,WAAY/kI,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAIQ,KAAM,CAACR,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIiB,UAAWjB,EAAIQ,OAAQ,CAAC,UACxF8mD,YAAatnD,EAAIoC,KAAK,GAAI,CAACgkD,GAAW,CAAC,UACvCqB,YAAaznD,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,CAAC,UACtCkjD,aAAc1jD,EAAIoC,KAAK,GAAI,CAACkkD,GAAY,CAAC,UACzCoB,iBAAkB1nD,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACjB,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIiB,UAAWjB,EAAIQ,OAAQ,CAAC,UAC3FkmD,YAAa1mD,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,CAAC,UACtCmJ,KAAM3J,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UAChCguF,KAAMpuF,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIQ,KAAM,CAACglD,GAAY,IACtDz8C,KAAM/I,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UAChCwnD,OAAQ5nD,EAAIoC,KAAK,CAACpC,EAAIQ,KAAM,GAAI,CAAC,WACjCwkI,SAAUhlI,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,GAAI,CAAC,WACzC4mD,QAAS7nD,EAAIoC,KAAK,CAACpC,EAAII,MAAO,GAAI,CAAC,WACnC2nD,QAAS/nD,EAAIoC,KAAK,CAACpC,EAAII,MAAO,GAAI,CAAC,WACnC4nD,SAAUhoD,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,GAAI,CAAC,WACzC4H,OAAQ7I,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UAClC6mC,YAAajnC,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,CAAC,UACtCqiD,SAAU7iD,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIQ,KAAM,CAACglD,GAAY,IAC1DyC,aAAcjoD,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIiB,UAAWjB,EAAIQ,KAAM,CAACglD,GAAY,KAEhF,EC3DD,EAAezlD,IAAY,IAAX,IAAEC,GAAKD,EACrB,OAAOC,EAAIkC,QAAQ,CACjB2kD,UAAW7mD,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACjB,EAAIQ,KAAM,KAEnD,ECJD,EAAeT,IAAY,IAAX,IAAEC,GAAKD,EACrB,OAAOC,EAAIkC,QAAQ,CACjB+kC,YAAajnC,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,KAExC,ECSYykI,EAAOniF,GAClBv/C,EAAMC,OAAY,CAChBs/C,WACAhjD,WAAYolI,EACZlkI,WAAY,gCAGHmkI,GAAQA,CAACnkI,EAAoB8hD,IACxCv/C,EAAMC,OAAc,CAClBs/C,WACAhjD,WAAYslI,EACZpkI,eAGSqkI,GAAoBA,CAC/BrkI,EACA8hD,IAEAv/C,EAAMC,OAAqB,CACzBs/C,WACAhjD,WAAYwlI,EACZtkI,eAGSukI,GAAmBA,CAC9BvkI,EACA8hD,IAEAv/C,EAAMC,OAAoB,CACxBs/C,WACAhjD,WAAY0lI,EACZxkI,eC5CSlB,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM0lI,EAAUzlI,EAAIQ,IACdqoD,EAAoB7oD,EAAII,KACxBslI,EAAO1lI,EAAIkB,QAAQ,CACvB6F,UAAW/G,EAAIiB,UACfd,QAAS0oD,IAEL3e,EAAalqC,EAAIiC,IAAIjC,EAAIqmD,MACzBs/E,EAAmB3lI,EAAIE,OAAO,CAClCwrC,MAAOg6F,EACPzyF,WAAYjzC,EAAIspG,IAAIp/D,GACpByB,QAAS3rC,EAAIiB,YAET2kI,EAAa5lI,EAAIQ,IACjBqlI,EAAkB7lI,EAAII,KACtB0lI,EAAiB9lI,EAAIkB,QAAQ,CACjC0kD,oBAAqB5lD,EAAIoB,KACzB2kI,aAAcF,EACd//E,aAAc+C,EACd5C,MAAOjmD,EAAII,OAEP0B,EAAW9B,EAAIkB,QAAQ,CAAEO,GAAImkI,EAAYlkI,IAAKokI,IAC9CE,EAAiBhmI,EAAIE,OAAO,CAChC+yC,WAAYjzC,EAAIspG,IAAIp/D,GACpBuB,UAAWg6F,EACX95F,QAAS3rC,EAAIiB,YAETooG,EAAWrpG,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAI2C,KAAMjB,IAAKokI,IAC5CG,EAAiBjmI,EAAIE,OAAO,CAChC0L,MAAOi6H,EACP78E,KAAM08E,IAEFvkI,EAAcnB,EAAIkB,QAAQ,CAC9B0kD,oBAAqB5lD,EAAIoB,KACzB2kI,aAAcF,EACd//E,aAAc+C,EACd5C,MAAOjmD,EAAII,OAEP8lI,EAAkBlmI,EAAIkB,QAAQ,CAAEO,GAAIgkI,EAAS/jI,IAAKP,IAClDglI,EAAWnmI,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIQ,IAAKkB,IAAKokI,IAC3CM,EAAYpmI,EAAII,KAChBimI,EAAiBrmI,EAAIE,OAAO,CAChCuoC,OAAQzoC,EAAIspG,IAAItpG,EAAIQ,KACpBkoC,MAAO1oC,EAAIspG,IAAItpG,EAAIQ,OAEf8lI,EAAStmI,EAAIE,OAAO,CACxB0B,QAAS5B,EAAIQ,IACbsrC,QAAS+c,IAEL09E,EAASvmI,EAAIE,OAAO,CACxB2F,QAAS7F,EAAIiC,IAAIqkI,GACjB79F,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEfgmI,EAAWxmI,EAAIkB,QAAQ,CAAEO,GAAI8kI,EAAQ7kI,IAAKP,IAC1CslI,EAAWzmI,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAII,KAAMsB,IAAKokI,IAC5C1/E,EAAWpmD,EAAIkB,QAAQ,CAC3BwlI,SAAU1mI,EAAIE,OAAO,CACnBoI,SAAUtI,EAAIqmD,KACdsgF,aAAc99E,EACdhiB,SAAU7mC,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OAC9Bt9C,KAAM/I,EAAII,KACVyI,OAAQ7I,EAAII,OAEdwmI,YAAa5mI,EAAIE,OAAO,CAAE2mC,SAAU7mC,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,WAEpDwgF,EAAW7mI,EAAIkB,QAAQ,CAAEO,GAAI2kD,EAAU1kD,IAAKokI,IAC5CgB,EAAc9mI,EAAIE,OAAO,CAAEgb,GAAIwqH,EAAMn6F,OAAQk6F,IAC7CsB,EAAmB/mI,EAAIkB,QAAQ,CACnCO,GAAIgkI,EACJ/jI,IAAK1B,EAAIkB,QAAQ,CACfykD,sBAAuB3lD,EAAIoB,KAC3B4lI,aAAcn+E,EACdjD,oBAAqB5lD,EAAIoB,KACzB2kI,aAAcF,EACdoB,SAAUjnI,EAAIoB,KACd0kD,aAAc+C,EACd5C,MAAOjmD,EAAII,SAGT8mI,EAAuBlnI,EAAII,KAC3B+mI,EAAUnnI,EAAIkB,QAAQ,CAC1B6F,UAAW/G,EAAIiB,UACfd,QAAS0oD,IAELrnD,EAAWxB,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIQ,IAAKkB,IAAKP,IAC3CimI,EAAqBpnI,EAAIE,OAAO,CACpC+pE,KAAMjqE,EAAIspG,IAAItpG,EAAII,MAClB4oD,KAAMhpD,EAAIspG,IAAIo8B,GACdj9F,OAAQzoC,EAAIspG,IAAItpG,EAAIQ,KACpBkoC,MAAO1oC,EAAIspG,IAAItpG,EAAIQ,KACnBuO,MAAO/O,EAAIspG,IAAItpG,EAAIQ,OAEf6mI,EAAYrnI,EAAIkB,QAAQ,CAC5BmtF,KAAMruF,EAAIoB,KACVgtF,KAAMpuF,EAAIoB,KACVyqC,QAAS7rC,EAAIoB,KACbyhD,SAAU7iD,EAAIoB,OAEVuxH,EAAc3yH,EAAIE,OAAO,CAC7Bgb,GAAI2tC,EACJtoD,IAAKklI,EACL18G,OAAQ/oB,EAAII,KACZknI,UAAWD,EACXr0F,KAAM6V,EACNohB,KAAMjqE,EAAII,KACVw2B,KAAM52B,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OAC1B2jC,UAAWhqF,EAAIe,IACfgO,MAAO/O,EAAIQ,IACX+qC,OAAQk6F,IAEJp7B,EAAOrqG,EAAIE,OAAO,CACtB2F,QAAS7F,EAAIiC,IAAI0wH,GACjBlqF,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEfwB,EAAShC,EAAIkB,QAAQ,CAAEO,GAAI4oG,EAAM3oG,IAAKP,IACtC26H,EAAO97H,EAAIiC,IAAIjC,EAAIqmD,MACnBkhF,EAAkBvnI,EAAIE,OAAO,CACjCgb,GAAIwqH,EACJ95H,MAAOi6H,EACP2B,OAAQxnI,EAAI2C,KACZqwC,KAAM0yF,EACN9uG,KAAMklG,EACN7oF,WAAYjzC,EAAIspG,IAAIp/D,GACpB6vD,MAAO/5F,EAAIspG,IAAItpG,EAAIQ,KACnB+qC,OAAQk6F,IAwBV,OAtBczlI,EAAIkC,QAAQ,CACxBupC,UAAWzrC,EAAIoC,KAAK,CAACujI,GAAmB,CAAC7jI,GAAW,CAAC,UACrD+pC,QAAS7rC,EAAIoC,KAAK,CAAC4jI,GAAiB,CAAC38B,GAAW,IAChDznG,QAAS5B,EAAIoC,KAAK,CAAC6jI,GAAiB,CAACC,GAAkB,CAAC,UACxD18B,eAAgBxpG,EAAIoC,KAAK,GAAI,CAAC+jI,GAAW,IACzC18B,aAAczpG,EAAIoC,KAAK,GAAI,CAAC+jI,GAAW,CAAC,UACxCsB,WAAYznI,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAImkI,IAAa,CAAC,UAChDsB,OAAQ1nI,EAAIoC,KAAK,GAAI,CAACN,GAAW,CAAC,UAClC6lI,QAAS3nI,EAAIoC,KAAK,CAACikI,GAAiB,CAACG,GAAW,CAAC,UACjD78H,KAAM3J,EAAIoC,KAAK,GAAI,CAACqkI,GAAW,CAAC,UAChC5/F,SAAU7mC,EAAIoC,KAAK,GAAI,CAACykI,GAAW,CAAC,UACpCz4C,KAAMpuF,EAAIoC,KAAK,CAAC0kI,GAAc,CAACC,GAAmB,IAClDa,SAAU5nI,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMkgF,EAAsBtB,KAAe,CAAC,UAChFh+E,OAAQ5nD,EAAIoC,KAAK,CAACwjI,GAAa,CAACv8B,GAAW,IAC3C27B,SAAUhlI,EAAIoC,KAAK,CAAC+kI,GAAU,CAAC99B,GAAW,IAC1CxhD,QAAS7nD,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAACipG,GAAW,IAC1CnmD,OAAQljD,EAAIoC,KAAK,GAAI,CAACN,GAAW,CAAC,UAClC+lI,aAAc7nI,EAAIoC,KAAK,GAAI,CAACZ,GAAW,CAAC,UACxC6pE,aAAcrrE,EAAIoC,KAAK,CAACglI,GAAqB,CAACplI,GAAS,CAAC,UACxD6gD,SAAU7iD,EAAIoC,KAAK,CAACmlI,GAAkB,CAACR,GAAmB,IAC1D9+E,aAAcjoD,EAAIoC,KAAK,CAACmlI,GAAkB,CAACR,GAAmB,KAEpD,ECxJDjnI,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM0lI,EAAUzlI,EAAIQ,IACdqoD,EAAoB7oD,EAAII,KACxBslI,EAAO1lI,EAAIkB,QAAQ,CACvB6F,UAAW/G,EAAIiB,UACfd,QAAS0oD,IAEL3e,EAAalqC,EAAIiC,IAAIjC,EAAIqmD,MACzBs/E,EAAmB3lI,EAAIE,OAAO,CAClCwrC,MAAOg6F,EACPzyF,WAAYjzC,EAAIspG,IAAIp/D,GACpByB,QAAS3rC,EAAIiB,YAET2kI,EAAa5lI,EAAIQ,IACjBqlI,EAAkB7lI,EAAII,KACtB0lI,EAAiB9lI,EAAIkB,QAAQ,CACjC0kD,oBAAqB5lD,EAAIoB,KACzB2kI,aAAcF,EACd//E,aAAc+C,EACd5C,MAAOjmD,EAAII,OAEPymI,EAAW7mI,EAAIkB,QAAQ,CAAEO,GAAImkI,EAAYlkI,IAAKokI,IAC9CE,EAAiBhmI,EAAIE,OAAO,CAChC+yC,WAAYjzC,EAAIspG,IAAIp/D,GACpBuB,UAAWg6F,EACX95F,QAAS3rC,EAAIiB,YAETwlI,EAAWzmI,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAI2C,KAAMjB,IAAKokI,IAC5CG,EAAiBjmI,EAAIE,OAAO,CAChC0L,MAAOi6H,EACP78E,KAAM08E,IAEFvkI,EAAcnB,EAAIkB,QAAQ,CAC9B0kD,oBAAqB5lD,EAAIoB,KACzB2kI,aAAcF,EACd//E,aAAc+C,EACd5C,MAAOjmD,EAAII,OAEP8lI,EAAkBlmI,EAAIkB,QAAQ,CAAEO,GAAIgkI,EAAS/jI,IAAKP,IAClD2mI,EAAY9nI,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIQ,IAAKkB,IAAKokI,IAC5CM,EAAYpmI,EAAII,KAChBimI,EAAiBrmI,EAAIE,OAAO,CAChCuoC,OAAQzoC,EAAIspG,IAAItpG,EAAIQ,KACpBkoC,MAAO1oC,EAAIspG,IAAItpG,EAAIQ,OAEf8lI,EAAStmI,EAAIE,OAAO,CACxB0B,QAAS5B,EAAIQ,IACbsrC,QAAS+c,IAELk/E,EAAS/nI,EAAIE,OAAO,CACxB2F,QAAS7F,EAAIiC,IAAIqkI,GACjB79F,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEfwnI,EAAWhoI,EAAIkB,QAAQ,CAAEO,GAAIsmI,EAAQrmI,IAAKP,IAC1C8mI,EAAWjoI,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAII,KAAMsB,IAAKokI,IAC5C1/E,EAAWpmD,EAAIkB,QAAQ,CAC3BwlI,SAAU1mI,EAAIE,OAAO,CACnBoI,SAAUtI,EAAIqmD,KACdsgF,aAAc99E,EACdhiB,SAAU7mC,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OAC9Bt9C,KAAM/I,EAAII,KACVyI,OAAQ7I,EAAII,OAEdwmI,YAAa5mI,EAAIE,OAAO,CAAE2mC,SAAU7mC,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,WAEpD8/E,EAAWnmI,EAAIkB,QAAQ,CAAEO,GAAI2kD,EAAU1kD,IAAKokI,IAC5CoC,EAAcloI,EAAIwmD,MAClBsgF,EAAc9mI,EAAIE,OAAO,CAAEgb,GAAIwqH,EAAMyC,YAAaD,IAClD1B,EAAWxmI,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAI2C,KAAMjB,IAAKP,IAC5C+lI,EAAuBlnI,EAAII,KAC3B+mI,EAAUnnI,EAAIkB,QAAQ,CAC1B6F,UAAW/G,EAAIiB,UACfd,QAAS0oD,IAELwgD,EAAWrpG,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIQ,IAAKkB,IAAKP,IAC3CimI,EAAqBpnI,EAAIE,OAAO,CACpC+pE,KAAMjqE,EAAIspG,IAAItpG,EAAII,MAClB4oD,KAAMhpD,EAAIspG,IAAIo8B,GACdj9F,OAAQzoC,EAAIspG,IAAItpG,EAAIQ,KACpBkoC,MAAO1oC,EAAIspG,IAAItpG,EAAIQ,KACnBuO,MAAO/O,EAAIspG,IAAItpG,EAAIQ,OAEf6mI,EAAYrnI,EAAIkB,QAAQ,CAC5BmtF,KAAMruF,EAAIoB,KACVgtF,KAAMpuF,EAAIoB,KACVyqC,QAAS7rC,EAAIoB,KACbyhD,SAAU7iD,EAAIoB,OAEVuxH,EAAc3yH,EAAIE,OAAO,CAC7Bgb,GAAI2tC,EACJtoD,IAAKklI,EACL18G,OAAQ/oB,EAAII,KACZknI,UAAWD,EACXr0F,KAAM6V,EACNohB,KAAMjqE,EAAII,KACVw2B,KAAM52B,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OAC1B2jC,UAAWhqF,EAAIe,IACfgO,MAAO/O,EAAIQ,IACX+qC,OAAQk6F,IAEJc,EAASvmI,EAAIE,OAAO,CACxB2F,QAAS7F,EAAIiC,IAAI0wH,GACjBlqF,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEfsB,EAAW9B,EAAIkB,QAAQ,CAAEO,GAAI8kI,EAAQ7kI,IAAKP,IAC1C26H,EAAO97H,EAAIiC,IAAIjC,EAAIqmD,MACnBkhF,EAAkBvnI,EAAIE,OAAO,CACjCgb,GAAIwqH,EACJ95H,MAAOi6H,EACP2B,OAAQxnI,EAAI2C,KACZqwC,KAAM0yF,EACN9uG,KAAMklG,EACN7oF,WAAYjzC,EAAIspG,IAAIp/D,GACpB6vD,MAAO/5F,EAAIspG,IAAItpG,EAAIQ,KACnB+qC,OAAQk6F,IAEJsB,EAAmB/mI,EAAIkB,QAAQ,CACnCO,GAAIgkI,EACJ/jI,IAAK1B,EAAIkB,QAAQ,CACfykD,sBAAuB3lD,EAAIoB,KAC3B4lI,aAAcn+E,EACdjD,oBAAqB5lD,EAAIoB,KACzB2kI,aAAcF,EACdoB,SAAUjnI,EAAIoB,KACd0kD,aAAc+C,EACd5C,MAAOjmD,EAAII,SAGTgoI,EAAkBpoI,EAAIE,OAAO,CAAEgb,GAAIwqH,EAAMn6F,OAAQk6F,IACjD4C,EAAiBroI,EAAIwmD,MACrBhlD,EAAWxB,EAAIkB,QAAQ,CAAEO,GAAI4mI,EAAgB3mI,IAAKP,IAClDmnI,EAActoI,EAAIE,OAAO,CAC7B8oD,KAAMhpD,EAAIspG,IAAIo8B,GACdj9F,OAAQzoC,EAAIspG,IAAItpG,EAAIQ,KACpBkoC,MAAO1oC,EAAIspG,IAAItpG,EAAIQ,KACnBuO,MAAO/O,EAAIspG,IAAItpG,EAAIQ,OAEf+4B,EAAOv5B,EAAIwmD,MACX+hF,EAAWvoI,EAAIkB,QAAQ,CAAEmL,KAAMrM,EAAIoB,KAAMonI,OAAQxoI,EAAIoB,OACrDqnI,EAAazoI,EAAIE,OAAO,CAC5Bgb,GAAI2tC,EACJo6C,KAAM1pE,EACNyZ,KAAM6V,EACN6/E,SAAUH,EACVJ,YAAaD,EACbn5H,MAAO/O,EAAIQ,IACX+qC,OAAQk6F,IAEJp7B,EAAOrqG,EAAIE,OAAO,CACtB2F,QAAS7F,EAAIiC,IAAIwmI,GACjBhgG,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEfwB,EAAShC,EAAIkB,QAAQ,CAAEO,GAAI4oG,EAAM3oG,IAAKP,IAyB5C,OAxBkBnB,EAAIkC,QAAQ,CAC5BupC,UAAWzrC,EAAIoC,KAAK,CAACujI,GAAmB,CAACkB,GAAW,CAAC,UACrDh7F,QAAS7rC,EAAIoC,KAAK,CAAC4jI,GAAiB,CAACS,GAAW,IAChD7kI,QAAS5B,EAAIoC,KAAK,CAAC6jI,GAAiB,CAACC,GAAkB,CAAC,UACxD18B,eAAgBxpG,EAAIoC,KAAK,GAAI,CAAC0lI,GAAY,IAC1Cr+B,aAAczpG,EAAIoC,KAAK,GAAI,CAAC0lI,GAAY,CAAC,UACzCL,WAAYznI,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAImkI,IAAa,CAAC,UAChDsB,OAAQ1nI,EAAIoC,KAAK,GAAI,CAACykI,GAAW,CAAC,UAClCc,QAAS3nI,EAAIoC,KAAK,CAACikI,GAAiB,CAAC2B,GAAW,CAAC,UACjDr+H,KAAM3J,EAAIoC,KAAK,GAAI,CAAC6lI,GAAW,CAAC,UAChCphG,SAAU7mC,EAAIoC,KAAK,GAAI,CAAC+jI,GAAW,CAAC,UACpC/3C,KAAMpuF,EAAIoC,KAAK,CAAC0kI,GAAc,CAACN,GAAW,IAC1CoB,SAAU5nI,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMkgF,EAAsBtB,KAAe,CAAC,UAChFh+E,OAAQ5nD,EAAIoC,KAAK,CAACwjI,GAAa,CAACa,GAAW,IAC3CzB,SAAUhlI,EAAIoC,KAAK,CAAC+kI,GAAU,CAACV,GAAW,IAC1C5+E,QAAS7nD,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAACqmI,GAAW,IAC1CvjF,OAAQljD,EAAIoC,KAAK,GAAI,CAACykI,GAAW,CAAC,UAClCgB,aAAc7nI,EAAIoC,KAAK,GAAI,CAACinG,GAAW,CAAC,UACxCh+B,aAAcrrE,EAAIoC,KAAK,CAACglI,GAAqB,CAACtlI,GAAW,CAAC,UAC1D+gD,SAAU7iD,EAAIoC,KAAK,CAACmlI,GAAkB,CAACR,GAAmB,IAC1D9+E,aAAcjoD,EAAIoC,KAAK,CAACmlI,GAAkB,CAACR,GAAmB,IAC9Dx1F,SAAUvxC,EAAIoC,KAAK,CAACgmI,GAAkB,CAAC5mI,GAAW,IAClDmnI,UAAW3oI,EAAIoC,KAAK,CAACkmI,GAAc,CAACtmI,GAAS,KAE/B,EC7KL4mI,GAAMA,CAAC5nI,EAAoB8hD,IACtCv/C,EAAMC,OAAiB,CACrBs/C,WACA9hD,aACAlB,WAAY+oI,KAGHC,GAAWhmF,GACtBv/C,EAAMC,OAAgB,CACpBC,UAAWC,EAAU86B,KACrBskB,WACAhjD,WAAYipI,KCrBHjpI,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMiqG,EAAUhqG,EAAIE,OAAO,CACzBwrC,MAAO1rC,EAAIiB,UACXgyC,WAAYjzC,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,SAE5Bm4E,EAAcx+H,EAAIE,OAAO,CAC7Bu+H,2BAA4Bz+H,EAAIspG,IAAItpG,EAAIwmD,OACxCm3E,sBAAuB39H,EAAIspG,IAAIU,KAE3B/jC,EAASjmE,EAAIE,OAAO,CAAE6qH,IAAK/qH,EAAIwmD,QAC/BwiF,EAAWhpI,EAAIE,OAAO,CAAE+oI,KAAMjpI,EAAIwmD,MAAO0iF,MAAOlpI,EAAIgpG,QACpD+1B,EAAiB/+H,EAAIE,OAAO,CAChC8+H,sBAAuBh/H,EAAIwmD,MAC3By4E,8BAA+Bj/H,EAAIspG,IAAItpG,EAAIwmD,OAC3C04E,kBAAmBl/H,EAAIwmD,MACvB24E,uBAAwBn/H,EAAIspG,IAAItpG,EAAIwmD,OACpC44E,4BAA6Bp/H,EAAIspG,IAAItpG,EAAIwmD,OACzC64E,2BAA4Br/H,EAAIspG,IAAItpG,EAAIwmD,OACxC84E,cAAet/H,EAAIiB,YAEfs+H,EAAWv/H,EAAIE,OAAO,CAC1BipI,eAAgBnpI,EAAIiC,IAAIjC,EAAIiB,WAC5BwvG,aAAczwG,EAAIspG,IAAItpG,EAAII,MAC1B+mH,aAAcnnH,EAAIspG,IAAIrjC,GACtBgkC,gBAAiBjqG,EAAII,KACrBgpI,mBAAoBppI,EAAIspG,IAAI0/B,GAC5B7J,uBAAwBn/H,EAAIspG,IAAItpG,EAAIwmD,OACpCm3E,sBAAuB39H,EAAIspG,IAAIU,GAC/B01B,gBAAiB1/H,EAAIspG,IAAIy1B,GACzBsK,eAAgBrpI,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAM6lE,IAC5C6rC,WAAY9xG,EAAIspG,IAAItpG,EAAII,QAMpBkpI,GAJwBtpI,EAAIkB,QAAQ,CACxC0+H,QAAS5/H,EAAIspG,IAAIk1B,GACjBxnB,KAAMuoB,IAEyBv/H,EAAIE,OAAO,CAC1C4rC,QAAS9rC,EAAIiC,IAAIjC,EAAIqmD,SAEjBkjF,EAAqBvpI,EAAIE,OAAO,CAAE4rC,QAAS9rC,EAAII,OAC/CopI,EAAcxpI,EAAIE,OAAO,CAAEwmH,YAAa1mH,EAAIiB,YAC5CwoI,EAAWzpI,EAAIE,OAAO,CAAEwpI,SAAU1pI,EAAIiC,IAAIunI,KAC1CG,EAAW3pI,EAAIE,OAAO,CAAEoI,SAAUtI,EAAIgpG,QACtCk1B,EAAgBl+H,EAAIkB,QAAQ,CAChCH,IAAKf,EAAIe,IACTP,IAAKR,EAAIQ,IACT46H,KAAMp7H,EAAIiC,IAAIjC,EAAIqmD,MAClBjmD,KAAMJ,EAAII,OAENsgI,EAAiB1gI,EAAIE,OAAO,CAAEsiF,IAAKxiF,EAAII,KAAM2I,KAAM/I,EAAII,OACvDugI,EAAc3gI,EAAIE,OAAO,CAC7Bgb,GAAI8uF,EACJzpG,IAAKP,EAAIspG,IAAItpG,EAAIQ,KACjBo2B,KAAM52B,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OAC1B43E,gBAAiBj+H,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OACrCi1E,gBAAiBt7H,EAAIspG,IAAItpG,EAAIwmD,OAC7Bjb,OAAQvrC,EAAIQ,MAERy7H,EAAgBj8H,EAAIkB,QAAQ,CAChCg7H,aAAcl8H,EAAIE,OAAO,CACvBwa,QAAS1a,EAAII,KACb+7H,WAAYn8H,EAAIQ,MAElB47H,uBAAwBp8H,EAAIoB,KAC5Bi7H,QAASr8H,EAAIE,OAAO,CAAEgqG,gBAAiBlqG,EAAIQ,MAC3C87H,UAAWt8H,EAAIE,OAAO,CAAEq8H,aAAcv8H,EAAIQ,MAC1Cg8H,OAAQx8H,EAAIE,OAAO,CAAEu8H,aAAcz8H,EAAIQ,MACvCk8H,gBAAiB18H,EAAIE,OAAO,CAAEy8H,YAAa38H,EAAIwmD,QAC/Co2E,OAAQ58H,EAAIoB,KACZG,kBAAmBvB,EAAIE,OAAO,CAAE0B,QAAS5B,EAAIQ,QAEzCwB,EAAShC,EAAIkB,QAAQ,CAAEukD,GAAIzlD,EAAIQ,IAAKklD,IAAKu2E,IACzC2N,EAAO5pI,EAAIE,OAAO,CAAE6I,KAAM/I,EAAII,OAC9BypI,EAAgB7pI,EAAIE,OAAO,CAC/B2oF,MAAO7oF,EAAIwmD,MACXl3C,OAAQtP,EAAIwmD,QAERsjF,EAAY9pI,EAAIE,OAAO,CAAE6pI,gBAAiB/pI,EAAIwmD,QAC9CwjF,EAAkBhqI,EAAIkB,QAAQ,CAClCm/H,QAASrgI,EAAIE,OAAO,CAClBK,IAAK0lE,EACLjzB,KAAMhzC,EAAIiC,IAAIjC,EAAIqmD,MAClB4jF,cAAejqI,EAAIe,IACnB0qC,UAAWw6B,EACXs6D,WAAYvgI,EAAIspG,IAAIwgC,GACpBn+F,QAAS3rC,EAAIiC,IAAIjC,EAAIqmD,QAEvB02E,KAAM/8H,EAAIE,OAAO,CAAE8yC,KAAMhzC,EAAIiC,IAAIjC,EAAIqmD,MAAO9a,OAAQ06B,IACpD+2D,KAAMh9H,EAAIE,OAAO,CAAEgb,GAAIlb,EAAIiC,IAAIjC,EAAIqmD,MAAO9a,OAAQ06B,IAClDg3D,SAAUj9H,EAAIE,OAAO,CACnBgb,GAAIlb,EAAIiC,IAAIjC,EAAIqmD,MAChB9lD,IAAK0lE,EACLjzB,KAAMhzC,EAAIiC,IAAIjC,EAAIqmD,MAClB9a,OAAQ06B,IAEVw8D,aAAcziI,EAAIE,OAAO,CACvBgb,GAAIlb,EAAIiC,IAAIjC,EAAIqmD,MAChB9lD,IAAK0lE,EACLjzB,KAAMhzC,EAAIiC,IAAIjC,EAAIqmD,MAClB9a,OAAQ06B,EACRt6B,QAAS3rC,EAAIiC,IAAIjC,EAAIqmD,UAGnB6jF,EAAoBlqI,EAAIE,OAAO,CACnC02B,KAAM52B,EAAIwmD,MACV2jF,WAAYnqI,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OAChC2jE,UAAWhqH,EAAIspG,IAAI0gC,GACnB1O,gBAAiBwO,IAEbM,EAAcpqI,EAAIE,OAAO,CAC7BoqD,YAAa4/E,EACblgD,UAAW8/C,EACXO,YAAarqI,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,SAE7Bw5E,EAAa7/H,EAAIE,OAAO,CAAEw7H,OAAQ17H,EAAIiC,IAAImoI,KAC1CE,EAAiBtqI,EAAIkB,QAAQ,CACjCqpI,mBAAoBvqI,EAAIE,OAAO,CAC7BsqI,gBAAiBxqI,EAAIwmD,MACrBikF,kBAAmBzqI,EAAIwmD,QAEzBP,MAAOjmD,EAAIE,OAAO,CAChBw4G,cAAe14G,EAAII,KACnB+7H,WAAYn8H,EAAIwmD,UAGdkkF,EAAsB1qI,EAAIE,OAAO,CACrCgrB,SAAUlrB,EAAIoC,KAAK,CAACynI,GAAgB,CAAC7pI,EAAIkB,QAAQ,CAAEukD,GAAIo6E,EAAYn6E,IAAK4kF,KAAoB,CAAC,UAC7FzhD,MAAO7oF,EAAIwmD,MACXl3C,OAAQtP,EAAIwmD,QAERmkF,EAAsB3qI,EAAIE,OAAO,CACrC8/H,YAAahgI,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OACjCq1E,OAAQ17H,EAAIiC,IAAImoI,GAChBnK,aAAcjgI,EAAIwmD,MAClBokF,kBAAmB5qI,EAAIwmD,MACvB05E,gBAAiBlgI,EAAIiC,IAAIyoI,KAErBG,EAA6B7qI,EAAIE,OAAO,CAC5CgrB,SAAUlrB,EAAIoC,KACZ,CAACynI,GACD,CACE7pI,EAAIkB,QAAQ,CACVukD,GAAIzlD,EAAIiC,IAAIjC,EAAIiC,IAAIjC,EAAIqmD,OACxBX,IAAK4kF,KAGT,CAAC,UAEHzhD,MAAO7oF,EAAIwmD,MACXl3C,OAAQtP,EAAIwmD,QAERskF,EAA6B9qI,EAAIE,OAAO,CAC5C8/H,YAAahgI,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OACjCq1E,OAAQ17H,EAAIiC,IAAIjC,EAAIiC,IAAIjC,EAAIqmD,OAC5B45E,aAAcjgI,EAAIwmD,MAClBokF,kBAAmB5qI,EAAIwmD,MACvB05E,gBAAiBlgI,EAAIiC,IAAI4oI,KAErBE,EAAW/qI,EAAIE,OAAO,CAC1Bgb,GAAIlb,EAAII,KACRG,IAAK0lE,EACLrvC,KAAM52B,EAAIwmD,MACVy3E,gBAAiBj+H,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OACrCi1E,gBAAiBt7H,EAAIspG,IAAIwgC,GACzBv+F,OAAQ06B,IAEJ+kE,EAAShrI,EAAIE,OAAO,CAAE2I,OAAQ7I,EAAII,OAClC6qI,EAAejrI,EAAIE,OAAO,CAC9Bgb,GAAIlb,EAAIiC,IAAIjC,EAAIqmD,MAChB9lD,IAAK0lE,EACLrvC,KAAM52B,EAAIwmD,MACVy3E,gBAAiBj+H,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OACrCi1E,gBAAiBt7H,EAAIspG,IAAIwgC,GACzBv+F,OAAQ06B,IAEJilE,EAAkBlrI,EAAIkB,QAAQ,CAClCiqI,SAAUnrI,EAAIE,OAAO,CAAEkrI,qBAAsBprI,EAAIwmD,QACjDg2E,OAAQx8H,EAAIE,OAAO,CAAEu8H,aAAcx2D,IACnColE,YAAarrI,EAAIE,OAAO,CAAEq8H,aAAcv8H,EAAIwmD,QAC5C8kF,kBAAmBtrI,EAAIoB,KACvBG,kBAAmBvB,EAAIE,OAAO,CAAE0B,QAASqkE,MAErCzkE,EAAWxB,EAAIkB,QAAQ,CAAEukD,GAAIzlD,EAAIwmD,MAAOd,IAAKwlF,IAC7CK,EAAcvrI,EAAIE,OAAO,CAAEinH,aAAclhD,IAC/C,OAAOjmE,EAAIkC,QAAQ,CACjBspI,gBAAiBxrI,EAAIoC,KAAK,CAACknI,GAA2B,CAACrjE,GAAS,CAAC,UACjEwlE,oBAAqBzrI,EAAIoC,KAAK,CAACmnI,GAAqB,CAACtjE,GAAS,CAAC,UAC/DyjE,SAAU1pI,EAAIoC,KAAK,GAAI,CAACqnI,GAAW,CAAC,UACpCnhI,SAAUtI,EAAIoC,KAAK,GAAI,CAACunI,GAAW,CAAC,UACpCpM,iBAAkBv9H,EAAIoC,KAAK,CAAC4nG,GAAU,CAAChqG,EAAIQ,KAAM,CAAC,UAClDg9H,eAAgBx9H,EAAIoC,KAAK,GAAI,CAACpC,EAAIqmD,MAAO,CAAC,UAC1Co3E,UAAWz9H,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,CAAC,UACpCk9H,eAAgB19H,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAM89H,KAAkB,CAAC,UAC7EP,sBAAuB39H,EAAIoC,KAAK,GAAI,CAACpC,EAAIspG,IAAIU,IAAW,CAAC,UACzD4zB,WAAY59H,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UACtCmkD,0BAA2BvkD,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIy+H,IAAkB,CAAC,UACpE7C,aAAc79H,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UACxC09H,mBAAoB99H,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,CAAC,UAC7Cw9H,eAAgBh+H,EAAIoC,KAAK,CAACu+H,GAAc,CAAC3+H,GAAS,IAClD+G,KAAM/I,EAAIoC,KAAK,GAAI,CAACwnI,GAAO,CAAC,UAC5B8B,aAAc1rI,EAAIoC,KAAK,CAACynI,GAAgB,CAACc,GAAsB,CAAC,UAChEgB,qBAAsB3rI,EAAIoC,KAAK,CAACynI,GAAgB,CAACiB,GAA6B,CAAC,UAC/Ec,SAAU5rI,EAAIoC,KAAK,CAAC2oI,GAAW,CAAC/qI,EAAIwmD,OAAQ,IAC5C39C,OAAQ7I,EAAIoC,KAAK,GAAI,CAAC4oI,GAAS,CAAC,UAChCnoF,SAAU7iD,EAAIoC,KAAK,CAAC6oI,GAAe,CAACzpI,GAAW,IAC/C2lH,aAAcnnH,EAAIoC,KAAK,CAACpC,EAAIE,OAAO,CAAC,IAAK,CAACqrI,GAAc,CAAC,WACzD,E,aCxMG,MAAMM,GAAiB/oF,GAC5Bv/C,EAAMC,OAAe,CACnB1D,WAAYgsI,GACZ9qI,WAAYi+F,GAAAA,GACZn8C,WACAhiB,KAAM+pE,ICXG/qG,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMqpG,EAAYppG,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIQ,IAAKkB,IAAK1B,EAAII,OAChD+oG,EAAanpG,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAI2C,KAAMjB,IAAK1B,EAAII,OAClDyoD,EAAoB7oD,EAAII,KACxB2rI,EAAS/rI,EAAIE,OAAO,CAAE8rI,EAAGhsI,EAAII,KAAM6rI,EAAGjsI,EAAII,OAC1C8rI,EAAelsI,EAAIE,OAAO,CAC9BisI,IAAKnsI,EAAII,KACTgsI,QAASvjF,EACTwjF,QAASrsI,EAAIiC,IAAI8pI,GACjBO,UAAWtsI,EAAII,KACfsrC,MAAOmd,EACP9/C,KAAM/I,EAAII,KACVmsI,WAAYvsI,EAAIe,IAChBkmC,YAAajnC,EAAIQ,IACjB0oG,aAAclpG,EAAII,KAClBosI,WAAYxsI,EAAIQ,IAChBisI,UAAWzsI,EAAIQ,IACfksI,MAAO1sI,EAAII,OAEPusI,EAAmB3sI,EAAIkB,QAAQ,CACnCO,GAAIyqI,EACJxqI,IAAK1B,EAAII,OAELwsI,EAAkB5sI,EAAIE,OAAO,CACjCmsI,QAASrsI,EAAIiC,IAAI8pI,GACjBO,UAAWtsI,EAAII,KACf2I,KAAM/I,EAAII,KACV8oG,aAAclpG,EAAII,KAClBqsI,UAAWzsI,EAAIQ,IACfksI,MAAO1sI,EAAII,OAEPysI,EAAa7sI,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAII,KAAMsB,IAAK1B,EAAII,OAClD0sI,EAAiB9sI,EAAIkB,QAAQ,CACjCO,GAAIzB,EAAIgnD,MAAMhnD,EAAIQ,IAAKR,EAAIQ,IAAKR,EAAII,KAAMJ,EAAII,MAC9CsB,IAAK1B,EAAII,OAEL2sI,EAAe/sI,EAAIE,OAAO,CAC9B2F,QAAS7F,EAAIiC,IAAIiqI,GACjBzjG,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEfwsI,EAAmBhtI,EAAIkB,QAAQ,CACnCO,GAAIsrI,EACJrrI,IAAK1B,EAAII,OAEL6sI,EAAmBjtI,EAAIkB,QAAQ,CACnCO,GAAIzB,EAAIgnD,MAAMhnD,EAAIQ,IAAKR,EAAII,KAAMJ,EAAII,KAAMJ,EAAII,MAC/CsB,IAAK1B,EAAII,OAELiqG,EAAOrqG,EAAIE,OAAO,CACtB2F,QAAS7F,EAAIiC,IAAIiqI,GACjBzjG,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEf0sI,EAAmBltI,EAAIkB,QAAQ,CAAEO,GAAI4oG,EAAM3oG,IAAK1B,EAAII,OACpD+sI,EAAmBntI,EAAIkB,QAAQ,CACnCO,GAAIzB,EAAIiC,IAAIjC,EAAII,MAChBsB,IAAK1B,EAAII,OAEX,OAAOJ,EAAIkC,QAAQ,CACjBkyC,IAAKp0C,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAIQ,KAAM,CAAC4oG,GAAY,IAChDG,SAAUvpG,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC+oG,GAAa,IAC7CikC,aAAcptI,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAACusI,GAAmB,CAAC,UACxDnpI,OAAQxD,EAAIoC,KAAK,CAACwqI,GAAkB,CAACC,GAAa,IAClDrjC,eAAgBxpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,IAC1CK,aAAczpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,IACxC99C,OAAQtrD,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC+oG,GAAa,IAC3CkkC,wBAAyBrtI,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC+oG,GAAa,IAC5DmkC,QAASttI,EAAIoC,KAAK,GAAI,CAAC0qI,GAAiB,CAAC,UACzCS,aAAcvtI,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAIQ,KAAM,CAACwsI,GAAmB,CAAC,UAChEQ,mBAAoBxtI,EAAIoC,KAAK,GAAI,CAAC6qI,GAAmB,CAAC,UACtDQ,iBAAkBztI,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAIQ,KAAM,CAAC0sI,GAAmB,CAAC,UACpEQ,iBAAkB1tI,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAIQ,IAAKR,EAAIQ,KAAM,CAACwsI,GAAmB,CAAC,UAC9ErjC,aAAc3pG,EAAIoC,KAAK,GAAI,CAAC+qI,GAAmB,CAAC,UAChDQ,SAAU3tI,EAAIoC,KAAK,GAAI,CAAC+mG,GAAa,IACrC8sB,OAAQj2H,EAAIoC,KAAK,CAAC8pI,GAAe,CAAC9iC,GAAY,IAC9CS,YAAa7pG,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC+oG,GAAa,IAChDykC,kBAAmB5tI,EAAIoC,KACrB,CAACpC,EAAIQ,IAAKR,EAAIspG,IAAItpG,EAAII,MAAOJ,EAAIspG,IAAItpG,EAAII,MAAOJ,EAAIspG,IAAItpG,EAAII,MAAOJ,EAAIgpG,OACvE,CAACG,GACD,IAEF0kC,WAAY7tI,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAIQ,IAAKR,EAAII,KAAMJ,EAAII,MAAO,CAAC0sI,GAAiB,IAC/EjlF,QAAS7nD,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAII,MAAO,CAAC+oG,GAAa,KACtD,ECtFSrpG,GAAaC,IAAY,IAAX,IAAEC,GAAKD,EAChC,MAAM8lI,EAAkB7lI,EAAII,KACtByoD,EAAoB7oD,EAAII,KACxBslI,EAAO1lI,EAAIkB,QAAQ,CACvB,UAAclB,EAAIiB,UAClB,QAAY4nD,IAER88E,EAAmB3lI,EAAIE,OAAO,CAClC,MAAU2lI,EACV,MAAUH,EACV,QAAY1lI,EAAIiB,YAEZ2kI,EAAa5lI,EAAIQ,IACjBW,EAAcnB,EAAIkB,QAAQ,CAC9B,oBAAwBlB,EAAIoB,KAC5B,aAAiBykI,EACjB,aAAiBh9E,EACjB,MAAU7oD,EAAII,OAEVoB,EAAWxB,EAAIkB,QAAQ,CAAE,GAAO0kI,EAAY,IAAQzkI,IACpD+oC,EAAalqC,EAAIiC,IAAIjC,EAAIqmD,MACzBo/E,EAAUzlI,EAAIQ,IACdwlI,EAAiBhmI,EAAIE,OAAO,CAChC,MAAU2lI,EACV,WAAe7lI,EAAIspG,IAAIp/D,GACvB,UAAcu7F,EACd,QAAYzlI,EAAIiB,YAEZ6sI,EAAoB9tI,EAAIE,OAAO,CACnC,SAAaF,EAAI2C,KACjB,QAAY+iI,IAERv8B,EAAanpG,EAAIkB,QAAQ,CAAE,GAAOlB,EAAI2C,KAAM,IAAQ3C,EAAII,OACxD6lI,EAAiBjmI,EAAIE,OAAO,CAChC,MAAU2lI,EACV,KAASH,IAELI,EAAiB9lI,EAAIkB,QAAQ,CACjC,oBAAwBlB,EAAIoB,KAC5B,aAAiBykI,EACjB,aAAiBh9E,EACjB,MAAU7oD,EAAII,OAEV8lI,EAAkBlmI,EAAIkB,QAAQ,CAClC,GAAOukI,EACP,IAAQK,IAEJiI,EAAqB/tI,EAAII,KACzB8mI,EAAuBlnI,EAAII,KAC3BymI,EAAW7mI,EAAIkB,QAAQ,CAC3B,GAAOgmI,EACP,IAAQ/lI,IAEJ6sI,EAAuBhuI,EAAII,KAC3B6tI,EAAYjuI,EAAIE,OAAO,CAAE,EAAMF,EAAII,KAAM,EAAMJ,EAAII,OACnD8rI,EAAelsI,EAAIE,OAAO,CAC9B,IAAQF,EAAII,KACZ,QAAY4tI,EACZ,QAAYhuI,EAAIiC,IAAIgsI,GACpB,UAAcjuI,EAAII,KAClB,MAAU4tI,EACV,KAAShuI,EAAII,KACb,WAAeJ,EAAIe,IACnB,YAAgBf,EAAIQ,IACpB,aAAiBR,EAAII,KACrB,WAAeJ,EAAIQ,IACnB,UAAcR,EAAIQ,IAClB,MAAUR,EAAII,OAEV8tI,EAAmBluI,EAAIkB,QAAQ,CACnC,GAAOgrI,EACP,IAAQlsI,EAAII,OAER+tI,EAAanuI,EAAIgpG,MACjB6jC,EAAa7sI,EAAIkB,QAAQ,CAAE,GAAOlB,EAAII,KAAM,IAAQJ,EAAII,OACxDguI,EAAQpuI,EAAIE,OAAO,CACvB,QAAYF,EAAIiC,IAAIjC,EAAIqmD,MACxB,SAAarmD,EAAIQ,MAEb4oG,EAAYppG,EAAIkB,QAAQ,CAAE,GAAOlB,EAAIQ,IAAK,IAAQR,EAAII,OACtDgmI,EAAYpmI,EAAII,KAChB+mI,EAAUnnI,EAAIkB,QAAQ,CAC1B,UAAclB,EAAIiB,UAClB,QAAY4nD,IAERwlF,EAAgBruI,EAAIgpG,MACpB+iC,EAAS/rI,EAAIE,OAAO,CAAE,EAAMF,EAAII,KAAM,EAAMJ,EAAII,OAChDkuI,EAActuI,EAAIE,OAAO,CAC7B,IAAQF,EAAII,KACZ,QAAYiuI,EACZ,MAAUxlF,EACV,SAAa7oD,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OACjC,KAASrmD,EAAII,KACb,KAASJ,EAAII,KACb,OAAWyoD,EACX,SAAa7oD,EAAII,KACjB,SAAaJ,EAAII,KACjB,SAAaJ,EAAIe,IACjB,aAAiBf,EAAII,KACrB,WAAeJ,EAAIiC,IAAI8pI,GACvB,UAAc/rI,EAAIQ,IAClB,QAAYR,EAAII,KAChB,WAAeJ,EAAII,OAEfmmI,EAASvmI,EAAIE,OAAO,CACxB,QAAYF,EAAIiC,IAAIqsI,GACpB,OAAWtuI,EAAIQ,IACf,MAAUR,EAAIQ,IACd,cAAkBR,EAAIQ,MAElBmsI,EAAmB3sI,EAAIkB,QAAQ,CAAE,GAAOqlI,EAAQ,IAAQvmI,EAAII,OAC5DmuI,EAASvuI,EAAII,KACb07H,EAAO97H,EAAIiC,IAAIjC,EAAIqmD,MACnBghF,EAAYrnI,EAAIkB,QAAQ,CAC5B,KAASlB,EAAIoB,KACb,KAASpB,EAAIoB,KACb,QAAYpB,EAAIoB,KAChB,SAAapB,EAAIoB,OAEbotI,EAAiBxuI,EAAIE,OAAO,CAChC,GAAO2oD,EACP,OAAW0lF,EACX,QAAYF,EACZ,KAASxlF,EACT,KAAS7oD,EAAII,KACb,KAASJ,EAAIspG,IAAIwyB,GACjB,KAAS97H,EAAIe,IACb,UAAcf,EAAII,KAClB,OAAWinI,EACX,OAAWx+E,EACX,MAAU48E,EACV,OAAWA,IAEPp7B,EAAOrqG,EAAIE,OAAO,CACtB,QAAYF,EAAIiC,IAAIusI,GACpB,OAAWxuI,EAAIQ,IACf,MAAUR,EAAIQ,IACd,cAAkBR,EAAIQ,MAElBysI,EAAmBjtI,EAAIkB,QAAQ,CAAE,GAAOmpG,EAAM,IAAQrqG,EAAII,OAC1D8sI,EAAmBltI,EAAIkB,QAAQ,CACnC,GAAOlB,EAAIgnD,MAAMhnD,EAAIQ,IAAKR,EAAIQ,KAC9B,IAAQR,EAAII,OAERgmD,EAAWpmD,EAAIkB,QAAQ,CAC3B,SAAalB,EAAIE,OAAO,CACtB,SAAaF,EAAIqmD,KACjB,aAAiBwC,EACjB,SAAa7oD,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OACjC,KAASrmD,EAAII,KACb,OAAWJ,EAAII,OAEjB,YAAgBJ,EAAIE,OAAO,CAAE,SAAaF,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,WAE1DooF,EAAczuI,EAAIgnD,MAAMhnD,EAAII,KAAMJ,EAAII,MACtCsuI,EAAc1uI,EAAIE,OAAO,CAC7B,IAAQF,EAAII,KACZ,OAAWJ,EAAII,KACf,KAASJ,EAAIiC,IAAIjC,EAAIqmD,MACrB,QAAYrmD,EAAIiC,IAAIwsI,KAEhBE,EAA4B3uI,EAAIE,OAAO,CAC3C,IAAQF,EAAII,KACZ,MAAUJ,EAAIQ,IACd,iBAAqBR,EAAII,OAErBwuI,EAAoB5uI,EAAIkB,QAAQ,CACpC,SAAalB,EAAIE,OAAO,CACtB,MAAUyuI,EACV,SAAa3uI,EAAIoC,KAAK,GAAI,GAAI,QAG5BysI,EAAe7uI,EAAIE,OAAO,CAC9B,KAASF,EAAIiC,IAAIjC,EAAIqmD,MACrB,QAAYrmD,EAAIiC,IAAIwsI,GACpB,mBAAuBzuI,EAAIspG,IAAIslC,GAC/B,YAAgB5uI,EAAI6+H,QAEhBiQ,EAAyB9uI,EAAIE,OAAO,CACxC,IAAQF,EAAII,KACZ,MAAUJ,EAAIQ,IACd,iBAAqBR,EAAII,OAErB2uI,EAAgC/uI,EAAIE,OAAO,CAC/C,MAAUF,EAAIspG,IAAIqlC,GAClB,KAAS3uI,EAAIiC,IAAIjC,EAAIqmD,QAEjB2mF,EAAmBhtI,EAAIkB,QAAQ,CACnC,GAAOotI,EACP,IAAQtuI,EAAII,OAER0sI,EAAiB9sI,EAAIkB,QAAQ,CAAE,GAAO0kI,EAAY,IAAQ5lI,EAAII,OAC9DipG,EAAWrpG,EAAIkB,QAAQ,CAAE,GAAOlB,EAAII,KAAM,IAAQJ,EAAII,OACtD0B,EAAW9B,EAAIkB,QAAQ,CAAE,GAAOklD,EAAU,IAAQjlD,IAClD6tI,GAAiBhvI,EAAIE,OAAO,CAChC,MAAUwlI,EACV,SAAa1lI,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OACjC,KAASrmD,EAAII,KACb,KAASJ,EAAII,KACb,SAAaJ,EAAII,KACjB,SAAaJ,EAAII,KACjB,aAAiBJ,EAAII,KACrB,WAAeJ,EAAIiC,IAAI8pI,GACvB,UAAc/rI,EAAIQ,IAClB,QAAYR,EAAII,KAChB,MAAUJ,EAAII,KACd,WAAeJ,EAAII,OAEf+sI,GAAmBntI,EAAIkB,QAAQ,CAAE,GAAOitI,EAAY,IAAQnuI,EAAII,OAChE0mI,GAAc9mI,EAAIE,OAAO,CAC7B,GAAOwlI,EACP,SAAa1lI,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,SAE7B4oF,GAAkBjvI,EAAIE,OAAO,CACjC,MAAUwlI,EACV,SAAa1lI,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OACjC,KAASrmD,EAAII,KACb,KAASJ,EAAII,KACb,MAAUJ,EAAIQ,IACd,SAAaR,EAAII,KACjB,SAAaJ,EAAII,KACjB,aAAiBJ,EAAII,KACrB,WAAeJ,EAAIiC,IAAI8pI,GACvB,UAAc/rI,EAAIQ,IAClB,QAAYR,EAAII,KAChB,MAAUJ,EAAII,KACd,WAAeJ,EAAII,OAEf6iI,GAAOjjI,EAAIe,IACXmuI,GAAUlvI,EAAIE,OAAO,CACzB,OAAWF,EAAIspG,IAAI25B,IACnB,OAAWjjI,EAAIiB,UACf,MAAUjB,EAAIwmD,QAEVxkD,GAAShC,EAAIkB,QAAQ,CACzB,GAAOlB,EAAIiC,IACTjC,EAAIgnD,MAAMmnF,EAAYnuI,EAAIspG,IAAI4lC,IAAUlvI,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,SAE9D,IAAQllD,IAEJomI,GAAkBvnI,EAAIE,OAAO,CACjC,GAAOwlI,EACP,MAAUG,EACV,OAAW7lI,EAAI2C,KACf,KAAS+iI,EACT,KAAS5J,EACT,WAAe97H,EAAIspG,IAAIp/D,GACvB,MAAUlqC,EAAIspG,IAAItpG,EAAIQ,KACtB,OAAWilI,IAEPsB,GAAmB/mI,EAAIkB,QAAQ,CACnC,GAAOukI,EACP,IAAQzlI,EAAIkB,QAAQ,CAClB,sBAA0BlB,EAAIoB,KAC9B,aAAiBynD,EACjB,oBAAwB7oD,EAAIoB,KAC5B,aAAiBykI,EACjB,SAAa7lI,EAAIoB,KACjB,aAAiBynD,EACjB,MAAU7oD,EAAII,SA0GlB,OAvG2BJ,EAAIkC,QAAQ,CACrC,aAAiBlC,EAAIoC,KAAK,GAAI,GAAI,IAClC,UAAcpC,EAAIoC,KAAK,CAACujI,GAAmB,CAACnkI,GAAW,CAAC,UACxD,QAAYxB,EAAIoC,KAAK,CAAC4jI,GAAiB,GAAI,IAC3C,cAAkBhmI,EAAIoC,KAAK,CAAC0rI,GAAoB,CAAC3kC,GAAa,IAC9D,gBAAoBnpG,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,CAAC,UAC7C,QAAYR,EAAIoC,KAAK,CAAC6jI,GAAiB,CAACC,GAAkB,CAAC,UAC3D,OAAWlmI,EAAIoC,KAAK,CAAC2rI,GAAqB,CAAClH,GAAW,CAAC,UACvD,aAAiB7mI,EAAIoC,KAAK,GAAI,CAAC8rI,GAAmB,CAAC,UACnD,UAAcluI,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,CAAC,UACvC,WAAeR,EAAIoC,KAAK,GAAI,CAACpC,EAAI2C,MAAO,IACxC,aAAiB3C,EAAIoC,KACjB,CACEpC,EAAIE,OAAO,CACT,SAAaF,EAAIQ,IACjB,aAAiBR,EAAII,KACrB,UAAcJ,EAAIiC,IAAIjC,EAAIQ,QAG9B,GACA,IAEJ,OAAWR,EAAIoC,KAAK,CAAC8pI,EAAciC,EAAYnuI,EAAII,MAAO,CAACysI,GAAa,IACxE,aAAiB7sI,EAAIoC,KAAK,GAAI,CAACpC,EAAIE,OAAO,CAAE,SAAaF,EAAIQ,OAAS,IACtE,aAAiBR,EAAIoC,KACjB,CAACgsI,GACD,CAACpuI,EAAIE,OAAO,CAAE,SAAaF,EAAIQ,OAC/B,IAEJ,eAAmBR,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,IAC7C,aAAiBppG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,IAC3C,WAAeppG,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAImkI,IAAa,CAAC,UACnD,eAAmBpmI,EAAIoC,KAAK,GAAI,CAACyqI,GAAa,IAC9C,cAAkB7sI,EAAIoC,KAClB,CAAC+kI,EAASnnI,EAAIQ,IAAKR,EAAIQ,KACvB,CAACmsI,GACD,CAAC,UAEL,gBAAoB3sI,EAAIoC,KACpB,CAACpC,EAAIiC,IAAIjC,EAAII,MAAOJ,EAAIQ,IAAKR,EAAIQ,KACjC,CAACmsI,GACD,CAAC,UAEL,kBAAsB3sI,EAAIoC,KACtB,CAAC+kI,EAASnnI,EAAIQ,IAAKR,EAAIQ,KACvB,CAACysI,GACD,CAAC,UAEL,aAAiBjtI,EAAIoC,KACjB,CAACyjI,EAAiB7lI,EAAIQ,IAAKR,EAAIQ,KAC/B,CAACysI,GACD,CAAC,UAEL,cAAkBjtI,EAAIoC,KAClB,GACA,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMmnF,EAAYnuI,EAAIiC,IAAIilI,MACvC,CAAC,UAEL,UAAclnI,EAAIoC,KAAK,GAAI,CAACpC,EAAIiB,WAAY,CAAC,UAC7C,WAAejB,EAAIoC,KAAK,GAAI,CAAC8qI,GAAmB,CAAC,UACjD,YAAgBltI,EAAIoC,KAChB,GACA,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMmnF,EAAYjH,KAC/B,CAAC,UAEL,UAAclnI,EAAIoC,KACd,GACA,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMmnF,EAAY/nF,KAC/B,CAAC,UAEL,aAAiBpmD,EAAIoC,KAAK,CAACssI,GAAc,CAACG,GAAe,CAAC,UAC1D,gCAAoC7uI,EAAIoC,KACpC,CAAC0sI,GACD,CAACC,GACD,CAAC,UAEL,YAAgB/uI,EAAIoC,KAAK,CAAC+rI,GAAa,CAACnB,GAAmB,CAAC,UAC5D,gBAAoBhtI,EAAIoC,KACpB,CAAC8kI,EAAsBA,GACvB,CAAC/9B,GACD,CAAC,UAEL,kBAAsBnpG,EAAIoC,KACtB,CAAC+rI,EAAYjH,EAAsBA,GACnC,CAAC4F,GACD,CAAC,UAEL,YAAgB9sI,EAAIoC,KAAK,CAACpC,EAAIQ,KAAM,CAAC6oG,GAAW,IAChD,SAAarpG,EAAIoC,KAAK,CAAC2rI,GAAqB,CAACjsI,GAAW,CAAC,UACzD,KAAS9B,EAAIoC,KAAK,CAAC4sI,IAAiB,CAAC7B,IAAmB,IACxD,QAAYntI,EAAIoC,KAAK,CAAC0kI,IAAc,CAACqH,GAAa,IAClD,WAAenuI,EAAIoC,KAAK,CAAC6sI,IAAkB,CAAC9B,IAAmB,IAC/D,cAAkBntI,EAAIoC,KAAK,CAAC+kI,GAAU,CAAC2F,GAAiB,CAAC,UACzD,kBAAsB9sI,EAAIoC,KAAK,CAAC0rI,GAAoB,CAAC3kC,GAAa,IAClE,eAAmBnpG,EAAIoC,KAAK,CAAC4jI,GAAiB,CAAC78B,GAAa,IAC5D,cAAkBnpG,EAAIoC,KAAK,CAACpC,EAAIspG,IAAItpG,EAAII,OAAQ,CAAC+oG,GAAa,IAC9D,QAAYnpG,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC+oG,GAAa,IAC/C,UAAcnpG,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,GAAI,IAC5C,sBAA0BjB,EAAIoC,KAAK,CAACyjI,GAAkB,CAAC18B,GAAa,IACpE,OAAWnpG,EAAIoC,KAAK,CAAC2rI,GAAqB,CAACvsI,GAAW,CAAC,UACvD,WAAexB,EAAIoC,KAAK,CAAC8kI,GAAuB,CAACllI,IAAS,CAAC,UAC3D,SAAahC,EAAIoC,KAAK,CAACmlI,IAAkB,CAACR,IAAmB,KAEtC,EC7WdjnI,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMopG,EAAanpG,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAI2C,KAAMjB,IAAK1B,EAAII,OAClDiuI,EAAgBruI,EAAIgpG,MACpBmmC,EAAanvI,EAAIE,OAAO,CAC5BkvI,OAAQpvI,EAAII,KACZivI,WAAYhB,IAERjlC,EAAYppG,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIQ,IAAKkB,IAAK1B,EAAII,OAChD8tI,EAAmBluI,EAAIkB,QAAQ,CACnCO,GAAIzB,EAAIgnD,MAAMhnD,EAAII,KAAMJ,EAAII,MAC5BsB,IAAK1B,EAAII,OAEL6iI,EAAOjjI,EAAIe,IACX8nD,EAAoB7oD,EAAII,KACxBkvI,EAAYtvI,EAAIE,OAAO,CAC3BisI,IAAKnsI,EAAII,KACTgvI,OAAQpvI,EAAII,KACZivI,WAAYhB,EACZpkE,KAAMjqE,EAAII,KACV0U,KAAM9U,EAAII,KACV2I,KAAM/I,EAAII,KACVusD,KAAMs2E,EACNsM,OAAQ1mF,EACR2mF,SAAUxvI,EAAII,KACdqvI,SAAUzvI,EAAII,KACdsvI,OAAQ7mF,EACRqgD,aAAclpG,EAAII,KAClBqsI,UAAWzsI,EAAIQ,IACfmvI,WAAY3vI,EAAII,KAChBw3C,MAAO53C,EAAIQ,MAEP+lI,EAASvmI,EAAIE,OAAO,CACxB2F,QAAS7F,EAAIiC,IAAIqtI,GACjB7mG,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEfmsI,EAAmB3sI,EAAIkB,QAAQ,CAAEO,GAAI8kI,EAAQ7kI,IAAK1B,EAAII,OACtD8mI,EAAuBlnI,EAAII,KAC3B+tI,EAAanuI,EAAIgpG,MACjB4mC,EAAiB5vI,EAAIE,OAAO,CAChCisI,IAAKnsI,EAAII,KACTgvI,OAAQpvI,EAAII,KACZyvI,MAAO7vI,EAAIQ,IACX6uI,WAAYhB,EACZpkE,KAAMjqE,EAAII,KACV2I,KAAM/I,EAAII,KACVusD,KAAMs2E,EACNsM,OAAQ1mF,EACRinF,mBAAoB9vI,EAAII,KACxB2vI,mBAAoB/vI,EAAII,KACxB4vI,aAAchwI,EAAIQ,IAClBgvI,SAAUxvI,EAAII,KACdqvI,SAAUzvI,EAAII,KACd6vI,YAAajwI,EAAII,KACjBsvI,OAAQ7mF,EACRqnF,SAAUlwI,EAAII,KACd+vI,aAAcnwI,EAAIQ,IAClB2/G,MAAOt3D,EACPjR,MAAO53C,EAAIQ,MAEP6pG,EAAOrqG,EAAIE,OAAO,CACtB2F,QAAS7F,EAAIiC,IAAI2tI,GACjBnnG,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEfysI,EAAmBjtI,EAAIkB,QAAQ,CAAEO,GAAI4oG,EAAM3oG,IAAK1B,EAAII,OACpD8sI,EAAmBltI,EAAIkB,QAAQ,CACnCO,GAAIzB,EAAIiC,IAAIjC,EAAII,MAChBsB,IAAK1B,EAAII,OAEL4sI,EAAmBhtI,EAAIkB,QAAQ,CAAEO,GAAI6tI,EAAW5tI,IAAK1B,EAAII,OACzDgwI,EAAepwI,EAAIE,OAAO,CAC9BmwI,YAAarwI,EAAIQ,IACjB8vI,SAAUtwI,EAAIQ,IACd+vI,cAAevwI,EAAIQ,IACnBgwI,SAAUxwI,EAAIQ,IACdiwI,SAAUzwI,EAAIQ,IACdkwI,SAAU1wI,EAAIQ,MAEV2sI,EAAmBntI,EAAIkB,QAAQ,CACnCO,GAAI2uI,EACJ1uI,IAAK1B,EAAII,OAEL0sI,EAAiB9sI,EAAIkB,QAAQ,CACjCO,GAAIzB,EAAIgnD,MAAMhnD,EAAI2C,KAAM3C,EAAIQ,IAAKR,EAAIQ,IAAKR,EAAIQ,KAC9CkB,IAAK1B,EAAII,OAELuwI,EAAgB3wI,EAAIE,OAAO,CAC/BkvI,OAAQpvI,EAAII,KACZivI,WAAYhB,IAERuC,EAAc5wI,EAAIE,OAAO,CAC7BkvI,OAAQpvI,EAAII,KACZivI,WAAYhB,EACZz2F,MAAO53C,EAAIQ,MAEb,OAAOR,EAAIkC,QAAQ,CACjBqnG,SAAUvpG,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC+oG,GAAa,IAC7ChF,IAAKnkG,EAAIoC,KAAK,CAAC+sI,GAAa,CAAChmC,GAAa,IAC1Cn+E,OAAQhrB,EAAIoC,KAAK,CAACpC,EAAIgpG,MAAOhpG,EAAII,MAAO,CAAC+oG,GAAa,IACtD0nC,YAAa7wI,EAAIoC,KAAK,CAACpC,EAAIgpG,OAAQ,CAACG,GAAa,IACjD2nC,aAAc9wI,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC+oG,GAAa,IACjDK,eAAgBxpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,IAC1CK,aAAczpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,IACxC2nC,eAAgB/wI,EAAIoC,KAAK,GAAI,CAAC8rI,GAAmB,IACjD8C,sBAAuBhxI,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAIQ,IAAKR,EAAIQ,KAAM,CAACmsI,GAAmB,CAAC,UACnFsE,cAAejxI,EAAIoC,KACjB,CACEpC,EAAIspG,IAAItpG,EAAII,MACZJ,EAAIspG,IAAItpG,EAAII,MACZJ,EAAIspG,IAAI49B,GACRlnI,EAAIspG,IAAI6kC,GACRnuI,EAAIQ,IACJR,EAAIQ,IACJR,EAAII,KACJJ,EAAI2C,MAEN,CAACgqI,GACD,CAAC,UAEHuE,cAAelxI,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAIQ,KAAM,CAACmsI,GAAmB,CAAC,UACjEwE,mBAAoBnxI,EAAIoC,KACtB,CAAC+rI,EAAYnuI,EAAII,KAAMJ,EAAIQ,IAAKR,EAAIQ,IAAKR,EAAII,KAAMJ,EAAI2C,MACvD,CAACgqI,GACD,CAAC,UAEHyE,gBAAiBpxI,EAAIoC,KACnB,CAAC+rI,EAAYnuI,EAAII,KAAMJ,EAAIQ,IAAKR,EAAIQ,IAAKR,EAAII,KAAMJ,EAAI2C,MACvD,CAACsqI,GACD,CAAC,UAEHoE,WAAYrxI,EAAIoC,KACd,CAACpC,EAAIspG,IAAItpG,EAAII,MAAOJ,EAAIspG,IAAItpG,EAAII,MAAOJ,EAAIspG,IAAI6kC,GAAanuI,EAAIQ,IAAKR,EAAIQ,IAAKR,EAAII,KAAMJ,EAAI2C,MAC5F,CAACsqI,GACD,CAAC,UAEHqE,eAAgBtxI,EAAIoC,KAClB,CAAC8kI,EAAsBlnI,EAAIspG,IAAItpG,EAAII,MAAOJ,EAAIspG,IAAItpG,EAAII,MAAOJ,EAAIQ,IAAKR,EAAIQ,IAAKR,EAAII,KAAMJ,EAAI2C,MAC7F,CAACsqI,GACD,CAAC,UAEHhyF,WAAYj7C,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UACtCupG,aAAc3pG,EAAIoC,KAAK,GAAI,CAAC8qI,GAAmB,CAAC,UAChDqE,SAAUvxI,EAAIoC,KAAK,CAACpC,EAAII,KAAM+tI,GAAa,CAACnB,GAAmB,CAAC,UAChEwE,QAASxxI,EAAIoC,KAAK,GAAI,CAAC+qI,GAAmB,CAAC,UAC3CsE,cAAezxI,EAAIoC,KAAK,GAAI,CAAC0qI,GAAiB,CAAC,UAC/CjjC,YAAa7pG,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC+oG,GAAa,IAChDuoC,WAAY1xI,EAAIoC,KAAK,GAAI,CAAC+mG,GAAa,IACvC9E,OAAQrkG,EAAIoC,KAAK,CAACuuI,GAAgB,CAACxnC,GAAa,IAChD/E,KAAMpkG,EAAIoC,KAAK,CAACwuI,GAAc,CAACznC,GAAa,IAC5CwoC,cAAe3xI,EAAIoC,KAAK,CAACpC,EAAIspG,IAAItpG,EAAII,MAAOJ,EAAIspG,IAAItpG,EAAII,MAAOJ,EAAIspG,IAAItpG,EAAII,OAAQ,CAAC+oG,GAAa,IACjGh/E,SAAUnqB,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAII,KAAMJ,EAAII,MAAO,CAAC+oG,GAAa,IACjEyoC,cAAe5xI,EAAIoC,KAAK,CAACpC,EAAI2C,MAAO,CAACwmG,GAAa,IAClD0oC,OAAQ7xI,EAAIoC,KAAK,CAACpC,EAAII,KAAM+tI,GAAa,CAAChlC,GAAa,KACvD,EC5JSrpG,GAAaC,IAAY,IAAX,IAAEC,GAAKD,EAChC,MAAMopG,EAAanpG,EAAIkB,QAAQ,CAAE,GAAOlB,EAAI2C,KAAM,IAAQ3C,EAAII,OACxDgpG,EAAYppG,EAAIkB,QAAQ,CAAE,GAAOlB,EAAIQ,IAAK,IAAQR,EAAII,OACtD0xI,EAAgB9xI,EAAIE,OAAO,CAC/B,IAAQF,EAAII,KACZ,YAAgBJ,EAAIQ,IACpB,SAAaR,EAAIQ,IACjB,KAASR,EAAII,KACb,cAAkBJ,EAAIQ,IACtB,WAAeR,EAAIQ,IACnB,SAAaR,EAAIQ,IACjB,SAAaR,EAAIQ,IACjB,SAAaR,EAAIQ,IACjB,iBAAqBR,EAAIQ,MAErB6pG,EAAOrqG,EAAIE,OAAO,CACtB,QAAYF,EAAIiC,IAAI6vI,GACpB,OAAW9xI,EAAIQ,IACf,MAAUR,EAAIQ,IACd,cAAkBR,EAAIQ,MAElB0sI,EAAmBltI,EAAIkB,QAAQ,CAAE,GAAOmpG,EAAM,IAAQrqG,EAAII,OAC1D4sI,EAAmBhtI,EAAIkB,QAAQ,CACnC,GAAOlB,EAAIiC,IAAIjC,EAAII,MACnB,IAAQJ,EAAII,OAER+sI,EAAmBntI,EAAIkB,QAAQ,CACnC,GAAO4wI,EACP,IAAQ9xI,EAAII,OAERgwI,EAAepwI,EAAIE,OAAO,CAC9B,YAAgBF,EAAIQ,IACpB,SAAaR,EAAIQ,IACjB,cAAkBR,EAAIQ,IACtB,SAAaR,EAAIQ,IACjB,SAAaR,EAAIQ,IACjB,SAAaR,EAAIQ,MAEbssI,EAAiB9sI,EAAIkB,QAAQ,CAAE,GAAOkvI,EAAc,IAAQpwI,EAAII,OACtE,OAAOJ,EAAIkC,QAAQ,CACjB,SAAalC,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC+oG,GAAa,IAChD,eAAmBnpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,IAC7C,aAAiBppG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,IAC3C,iBAAqBppG,EAAIoC,KACrB,CAACpC,EAAIQ,IAAKR,EAAIQ,KACd,CAAC0sI,GACD,CAAC,UAEL,aAAiBltI,EAAIoC,KACjB,CAACpC,EAAII,KAAMJ,EAAIQ,IAAKR,EAAIQ,KACxB,CAAC0sI,GACD,CAAC,UAEL,aAAiBltI,EAAIoC,KAAK,GAAI,CAAC4qI,GAAmB,CAAC,UACnD,gBAAoBhtI,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC+sI,GAAmB,CAAC,UAC9D,YAAgBntI,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC+sI,GAAmB,CAAC,UAC1D,QAAYntI,EAAIoC,KAAK,GAAI,CAAC0qI,GAAiB,CAAC,UAC5C,KAAS9sI,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,IACnC,SAAappG,EAAIoC,KACb,CAACpC,EAAII,KAAMJ,EAAII,KAAMJ,EAAIQ,IAAKR,EAAI2C,MAClC,CAACwmG,GACD,IAEJ,YAAgBnpG,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC+oG,GAAa,IACnD,cAAkBnpG,EAAIoC,KAClB,CAACpC,EAAIspG,IAAItpG,EAAII,MAAOJ,EAAIspG,IAAItpG,EAAII,MAAOJ,EAAIspG,IAAItpG,EAAII,OACnD,CAAC+oG,GACD,IAEJ,UAAcnpG,EAAIoC,KACd,CAACpC,EAAIQ,IAAKR,EAAIQ,IAAKR,EAAII,KAAMJ,EAAII,MACjC,CAAC+oG,GACD,KAEJ,EC1ESrpG,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMgyI,EAAc/xI,EAAII,KAClB8mI,EAAuBlnI,EAAII,KAC3B+tI,EAAanuI,EAAIgpG,MACjBgpC,EAAgBhyI,EAAIiC,IAAIjC,EAAIqmD,MAC5Bw/E,EAAkB7lI,EAAII,KACtByoD,EAAoB7oD,EAAII,KACxBslI,EAAO1lI,EAAIkB,QAAQ,CACvB6F,UAAW/G,EAAIiB,UACfd,QAAS0oD,IAELo9E,EAAiBjmI,EAAIE,OAAO,CAChC0L,MAAOi6H,EACP78E,KAAM08E,IAEFD,EAAUzlI,EAAIQ,IACdslI,EAAiB9lI,EAAIkB,QAAQ,CACjC6kI,aAAcF,EACd5/E,MAAOjmD,EAAII,OAEP8lI,EAAkBlmI,EAAIkB,QAAQ,CAClCO,GAAIgkI,EACJ/jI,IAAKokI,IAEDiI,EAAqB/tI,EAAII,KACzBe,EAAcnB,EAAIkB,QAAQ,CAC9B6kI,aAAcF,EACd5/E,MAAOjmD,EAAII,OAEP+lI,EAAWnmI,EAAIkB,QAAQ,CAC3BO,GAAIylI,EACJxlI,IAAKP,IAED8hI,EAAOjjI,EAAIe,IACXmuI,EAAUlvI,EAAIE,OAAO,CACzB8mF,OAAQhnF,EAAIspG,IAAI25B,GAChByM,OAAQ1vI,EAAIiB,UACZ22C,MAAO53C,EAAIwmD,QAEPshF,EAAY9nI,EAAIkB,QAAQ,CAC5BO,GAAIzB,EAAIgnD,MAAMkgF,EAAsBlnI,EAAIspG,IAAI4lC,IAC5CxtI,IAAKP,IAED8wI,EAAUjyI,EAAIgpG,MACdkpC,EAAUlyI,EAAIgpG,MACdmpC,EAAYnyI,EAAIkB,QAAQ,CAC5B4f,MAAO9gB,EAAII,KACX49B,SAAUh+B,EAAIE,OAAO,CAAEV,GAAIyyI,EAASj0G,SAAUh+B,EAAII,OAClDgyI,OAAQpyI,EAAIiC,IAAIiwI,KAEZ9L,EAAYpmI,EAAII,KAChBiyI,EAAcryI,EAAIE,OAAO,CAC7B0L,MAAOmiI,EACP9P,gBAAiBj+H,EAAIspG,IAAI0oC,GACzBp6F,MAAO53C,EAAIspG,IAAItpG,EAAIwmD,SAEf6iD,EAAWrpG,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIoB,KAAMM,IAAKP,IAC5C+8H,EAAgBl+H,EAAIgnD,MACxBhnD,EAAII,KACJJ,EAAIkB,QAAQ,CACVoxI,IAAKtyI,EAAIQ,IACT+xI,KAAMvyI,EAAIiC,IAAIjC,EAAIqmD,MAClBmsF,KAAMxyI,EAAIqmD,KACV/uC,KAAMtX,EAAII,QAGRqyI,EAAoBzyI,EAAIkB,QAAQ,CACpCqxI,KAAMvyI,EAAIiC,IAAIjC,EAAIqmD,MAClBtc,KAAM/pC,EAAIiC,IAAIi8H,GACdl1C,KAAMhpF,EAAII,OAENgmD,EAAWpmD,EAAIkB,QAAQ,CAC3BwlI,SAAU1mI,EAAIE,OAAO,CACnBoI,SAAUtI,EAAIqmD,KACdxf,SAAU7mC,EAAIspG,IAAImpC,GAClB1pI,KAAM/I,EAAII,KACVyI,OAAQ7I,EAAII,OAEdwmI,YAAa5mI,EAAIE,OAAO,CACtBwyI,UAAW1yI,EAAII,KACfuyI,MAAO3yI,EAAII,KACXymC,SAAU7mC,EAAIspG,IAAImpC,GAClB1pI,KAAM/I,EAAII,SAGR4nI,EAAWhoI,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIgnD,MAAMkgF,EAAsBlnI,EAAIwmD,OACxC9kD,IAAKP,IAEDwxH,EAAc3yH,EAAIE,OAAO,CAC7B0L,MAAOuiI,EACPxhF,KAAMs2E,EACNyM,OAAQxI,EACR/mB,MAAO+mB,EACPtvF,MAAO53C,EAAIwmD,QAEPyhF,EAAWjoI,EAAIkB,QAAQ,CAAEO,GAAI2kD,EAAU1kD,IAAKP,IAC5CyxI,EAAc5yI,EAAIkB,QAAQ,CAC9BsxF,IAAK27C,EACL0E,KAAM7yI,EAAIiC,IAAIksI,GACd/pC,KAAMpkG,EAAIwmD,QAENssF,EAAU9yI,EAAIE,OAAO,CACzB6yI,QAAS9P,EACThwF,WAAY++F,EACZgB,MAAO9L,EACP37F,OAAQvrC,EAAIwmD,MACZysF,SAAUL,IAENM,EAAmBlzI,EAAIE,OAAO,CAClCizI,IAAKlQ,EACLt0B,aAAc3uG,EAAIiC,IAAIilI,GACtBn+H,KAAM/I,EAAII,KACVsoC,MAAO1oC,EAAIgnD,MAAMhnD,EAAIwmD,MAAOxmD,EAAIwmD,OAChC4sF,QAASpzI,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIwmD,MAAOxmD,EAAIwmD,QAC1CqiC,MAAOo6C,IAEHoQ,EAAgBrzI,EAAIkB,QAAQ,CAChCoyI,OAAQtzI,EAAIoB,KACZitF,KAAMruF,EAAIoB,KACVmyI,KAAMrM,IAEFsM,EAAOxzI,EAAIE,OAAO,CACtBizI,IAAKlQ,EACLwQ,OAAQzzI,EAAIiC,IAAIixI,GAChBrqD,MAAOo6C,EACPyQ,SAAU1zI,EAAIQ,IACdmzI,UAAWN,IAEP5M,EAAWzmI,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIgnD,MAAMkgF,EAAsBlnI,EAAIwmD,OACxC9kD,IAAK1B,EAAII,OAELwzI,EAAkB5zI,EAAIE,OAAO,CACjCV,GAAIQ,EAAIQ,IACR2yI,IAAKlQ,EACLl6H,KAAM/I,EAAII,KACVyB,UAAW7B,EAAI2C,KACfywI,QAASpzI,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIwmD,MAAOxmD,EAAIwmD,QAC1CqiC,MAAOo6C,IAEH4Q,EAAc7zI,EAAIE,OAAO,CAC7BizI,IAAKlQ,EACLwQ,OAAQzzI,EAAIiC,IAAI2xI,GAChB/qD,MAAOo6C,EACPyQ,SAAU1zI,EAAIQ,IACdmzI,UAAW3zI,EAAIQ,MAEXqmI,EAAW7mI,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIoB,KAAMM,IAAK1B,EAAII,OAChD0zI,EAAkB9zI,EAAIE,OAAO,CACjCysD,KAAMs2E,EACNyM,OAAQ1vI,EAAIiB,UACZmrC,OAAQpsC,EAAIiC,IAAIksI,GAChBhuB,MAAO+mB,EACPtvF,MAAO53C,EAAIwmD,QAEPs1E,EAAO97H,EAAIiC,IAAIjC,EAAIqmD,MACnBnc,EAAalqC,EAAIiC,IAAIjC,EAAIqmD,MACzBkhF,EAAkBvnI,EAAIE,OAAO,CACjCgb,GAAIwqH,EACJ95H,MAAOi6H,EACP2B,OAAQxnI,EAAI2C,KACZqwC,KAAM0yF,EACN9uG,KAAMklG,EACN7oF,WAAYjzC,EAAIspG,IAAIp/D,GACpBqB,OAAQk6F,IAEJsB,EAAmB/mI,EAAIkB,QAAQ,CACnCO,GAAIgkI,EACJ/jI,IAAK1B,EAAIkB,QAAQ,CACf8lI,aAAcn+E,EACdjD,oBAAqB5lD,EAAIoB,KACzB2kI,aAAcF,EACdoB,SAAUjnI,EAAIoB,KACd0kD,aAAc+C,EACd5C,MAAOjmD,EAAII,SAGTwlI,EAAa5lI,EAAIQ,IACjBsB,EAAW9B,EAAIkB,QAAQ,CAAEO,GAAImkI,EAAYlkI,IAAKP,IAC9C4yI,EAAiB/zI,EAAIkB,QAAQ,CACjCwlI,SAAU1mI,EAAIE,OAAO,CACnBoI,SAAUtI,EAAIqmD,KACdxf,SAAU7mC,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OAC9Bt9C,KAAM/I,EAAII,KACVyI,OAAQ7I,EAAII,OAEdwmI,YAAa5mI,EAAIE,OAAO,CAAE2mC,SAAU7mC,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,WAEpDooF,EAAczuI,EAAIgnD,MAAMhnD,EAAII,KAAMJ,EAAII,MACtCsuI,EAAc1uI,EAAIE,OAAO,CAC7BsiF,IAAKxiF,EAAII,KACTurG,OAAQ3rG,EAAII,KACZihG,KAAMrhG,EAAIiC,IAAIjC,EAAIqmD,MAClB2tF,QAASh0I,EAAIiC,IAAIwsI,KAEbwF,EAA6Bj0I,EAAIE,OAAO,CAC5CW,IAAKb,EAAII,KACT8zI,OAAQl0I,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OAC5Bt3C,MAAO/O,EAAIQ,IACX2zI,iBAAkBn0I,EAAII,OAElBg0I,EAAgCp0I,EAAIE,OAAO,CAC/C0L,MAAO5L,EAAIspG,IAAI2qC,GACf5yC,KAAMrhG,EAAIiC,IAAIjC,EAAIqmD,QAEdguF,EAAwBr0I,EAAIkB,QAAQ,CACxCozI,SAAUt0I,EAAIE,OAAO,CACnB0L,MAAOqoI,EACP/oH,SAAUlrB,EAAIoC,KACZ,CAAC6xI,GACD,CAACG,GACD,CAAC,cAIDvF,EAAe7uI,EAAIE,OAAO,CAC9BmhG,KAAMrhG,EAAIiC,IAAIjC,EAAIqmD,MAClB2tF,QAASh0I,EAAIiC,IAAIwsI,GACjBvkF,QAASlqD,EAAI2C,KACb4xI,mBAAoBv0I,EAAIspG,IAAI+qC,GAC5BG,YAAax0I,EAAI6+H,QAEb2H,GAAWxmI,EAAIkB,QAAQ,CAAEO,GAAIsyI,EAAgBryI,IAAKP,IAClDszI,GAAez0I,EAAIE,OAAO,CAC9Bw0I,UAAWzR,EACX5lC,UAAWr9F,EAAI2C,KACfgyI,YAAa30I,EAAIQ,IACjBo0I,KAAM50I,EAAIQ,IACVq0I,YAAa70I,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIwmD,MAAOxmD,EAAIwmD,QAC9CsuF,cAAe7R,EACf8R,UAAW/0I,EAAIwmD,MACfmtF,UAAW3zI,EAAIQ,IACfo3C,MAAO53C,EAAIwmD,QAEPhlD,GAAWxB,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIiC,IAAIksI,GACZzsI,IAAKP,IAEDa,GAAShC,EAAIkB,QAAQ,CACzBO,GAAIzB,EAAIiC,IACNjC,EAAIgnD,MAAMmnF,EAAYnuI,EAAIspG,IAAI4lC,GAAUlvI,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,SAE9D3kD,IAAKP,IAEP,OAAOnB,EAAIkC,QAAQ,CACjB8yI,aAAch1I,EAAIoC,KAAK,GAAI,GAAI,IAC/B6yI,SAAUj1I,EAAIoC,KACZ,CAAC2vI,EAAa/xI,EAAIgpG,MAAOhpG,EAAII,KAAMJ,EAAII,KAAMJ,EAAII,MACjD,GACA,IAEF80I,aAAcl1I,EAAIoC,KAAK,CAAC2vI,EAAa/xI,EAAIiC,IAAIjC,EAAIqmD,OAAQ,GAAI,IAC7D8uF,mBAAoBn1I,EAAIoC,KAAK,GAAI,GAAI,IACrCgzI,YAAap1I,EAAIoC,KACf,CAACpC,EAAII,KAAM8mI,EAAsBA,GACjC,CAAClnI,EAAII,MACL,IAEFi1I,oBAAqBr1I,EAAIoC,KAAK,GAAI,GAAI,IACtCkzI,eAAgBt1I,EAAIoC,KAClB,GACA,CACEpC,EAAIiC,IACFjC,EAAIgnD,MACFmnF,EACAnuI,EAAIE,OAAO,CACT+yC,WAAY++F,EACZtC,OAAQ1vI,EAAIiB,UACZk/G,MAAO+mB,EACPtvF,MAAO53C,EAAIwmD,WAKnB,CAAC,UAEH+uF,gBAAiBv1I,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,CAAC,UAC1CoB,QAAS5B,EAAIoC,KAAK,CAAC6jI,GAAiB,CAACC,GAAkB,CAAC,UACxDsP,OAAQx1I,EAAIoC,KAAK,CAAC2rI,GAAqB,CAAC5H,GAAW,CAAC,UACpDsP,QAASz1I,EAAIoC,KAAK,CAAC2rI,GAAqB,CAACjG,GAAY,CAAC,UACtD4N,qBAAsB11I,EAAIoC,KAAK,GAAI,GAAI,IACvCuzI,UAAW31I,EAAIoC,KAAK,GAAI,CAACpC,EAAIiB,WAAY,CAAC,UAC1C20I,aAAc51I,EAAIoC,KAChB,CAAC2vI,EAAa/xI,EAAII,KAAMJ,EAAII,KAAM+xI,EAAWnyI,EAAIQ,KACjD,GACA,IAEFq1I,gBAAiB71I,EAAIoC,KAAK,CAAC2vI,GAAc,CAAC/xI,EAAI2C,MAAO,CAAC,UACtDmzI,cAAe91I,EAAIoC,KAAK,CAACpC,EAAI2C,KAAM3C,EAAIQ,KAAM,CAACR,EAAI2C,MAAO,CAAC,UAC1DozI,gBAAiB/1I,EAAIoC,KACnB,CAAC2vI,EAAa/xI,EAAIiC,IAAIjC,EAAIqmD,MAAOrmD,EAAI2C,MACrC,CAAC3C,EAAI2C,MACL,IAEFqzI,YAAah2I,EAAIoC,KAAK,CAAC6jI,GAAiB,CAACC,GAAkB,CAAC,UAC5D+P,WAAYj2I,EAAIoC,KAAK,CAAC2rI,GAAqB,CAAC5H,GAAW,CAAC,UACxD+P,YAAal2I,EAAIoC,KAAK,GAAI,GAAI,IAC9B+zI,YAAan2I,EAAIoC,KACf,GACA,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMkgF,EAAsB8K,KACzC,CAAC,UAEHoE,eAAgBp2I,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAImkI,IAAa,CAAC,UACpDiQ,oBAAqBr2I,EAAIoC,KAAK,CAACiwI,GAAc,CAAChpC,GAAW,IACzDitC,wBAAyBt2I,EAAIoC,KAC3B,GACA,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMmnF,EAAYe,EAAS9oF,KACxC,CAAC,UAEHmwF,wBAAyBv2I,EAAIoC,KAC3B,CAAC2rI,EAAoB/tI,EAAIwmD,MAAO0gF,GAChC,CAACc,GACD,IAEFwO,sBAAuBx2I,EAAIoC,KAAK,CAAC8kI,GAAuB,CAAC79B,GAAW,IACpEotC,qBAAsBz2I,EAAIoC,KACxB,GACA,CAACpC,EAAIwmD,MAAOxmD,EAAIwmD,MAAOxmD,EAAIwmD,MAAOxmD,EAAIwmD,MAAOxmD,EAAIQ,IAAKR,EAAIQ,IAAKR,EAAIQ,KACnE,CAAC,UAEHk2I,4BAA6B12I,EAAIoC,KAC/B,GACA,CAACpC,EAAIiC,IAAI0wH,IACT,CAAC,UAEHgkB,aAAc32I,EAAIoC,KAAK,CAAC2rI,GAAqB,CAAC9F,GAAW,CAAC,UAC1D2O,SAAU52I,EAAIoC,KACZ,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMkgF,EAAsB9gF,KACzC,CAACpmD,EAAIiC,IAAIksI,IACT,IAEF0I,aAAc72I,EAAIoC,KAChB,GACA,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMkgF,EAAsB4L,KACzC,CAAC,UAEHgE,gBAAiB92I,EAAIoC,KAAK,GAAI,GAAI,IAClC20I,cAAe/2I,EAAIoC,KAAK,GAAI,CAACpC,EAAI2C,MAAO,IACxCq0I,gBAAiBh3I,EAAIoC,KAAK,GAAI,CAACpC,EAAIspG,IAAIkqC,IAAQ,CAAC,UAChDyD,YAAaj3I,EAAIoC,KAAK,GAAI,CAACpC,EAAI2C,MAAO,IACtCu0I,aAAcl3I,EAAIoC,KAChB,CAACpC,EAAIiC,IAAIixI,GAAmBG,EAAerzI,EAAIiC,IAAIilI,IACnD,CAAClnI,EAAI2C,MACL,IAEFw0I,cAAen3I,EAAIoC,KAAK,GAAI,CAACpC,EAAI2C,MAAO,IACxCy0I,iBAAkBp3I,EAAIoC,KACpB,CAACpC,EAAIQ,IAAKR,EAAIwmD,MAAOxmD,EAAIwmD,MAAO0gF,GAChC,CAACT,GACD,IAEF4Q,eAAgBr3I,EAAIoC,KAAK,GAAI,CAACpC,EAAI2C,MAAO,IACzC20I,iBAAkBt3I,EAAIoC,KACpB,CAAC8kI,GACD,CAAClnI,EAAIspG,IAAIuqC,IACT,CAAC,UAEH0D,eAAgBv3I,EAAIoC,KAAK,CAAC8kI,GAAuB,CAACL,GAAW,IAC7D2Q,qBAAsBx3I,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAI6xI,IAAmB,CAAC,UAChE2D,eAAgBz3I,EAAIoC,KAClB,CACEpC,EAAIspG,IAAItpG,EAAIiC,IAAIixI,IAChBlzI,EAAIspG,IAAI+pC,GACRrzI,EAAIspG,IAAItpG,EAAIiC,IAAIilI,KAElB,CAAClnI,EAAI2C,MACL,IAEF+0I,aAAc13I,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,GAAI,IAC5C02I,0BAA2B33I,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAII,MAAO,GAAI,IAC9Dw3I,uBAAwB53I,EAAIoC,KAAK,CAAC6gI,GAAO,GAAI,IAC7C4U,aAAc73I,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,GAAI,IAC5C62I,eAAgB93I,EAAIoC,KAAK,CAAC8kI,EAAsBlnI,EAAIwmD,OAAQ,GAAI,IAChEuxF,aAAc/3I,EAAIoC,KAAK,CAACmlI,GAAkB,CAACR,GAAmB,IAC9DiR,eAAgBh4I,EAAIoC,KAAK,CAAC2rI,GAAqB,CAACjsI,GAAW,CAAC,UAC5D2lI,WAAYznI,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAImkI,IAAa,CAAC,UAChD6R,YAAaj4I,EAAIoC,KACf,GACA,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMkgF,EAAsB8K,KACzC,CAAC,UAEH1qF,YAAatnD,EAAIoC,KACf,GACA,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMmnF,EAAY4F,KAC/B,CAAC,UAEHmE,UAAWl4I,EAAIoC,KAAK,GAAI,CAACpC,EAAIiB,WAAY,CAAC,UAC1Ck3I,YAAan4I,EAAIoC,KACf,GACA,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMmnF,EAAYjH,KAC/B,CAAC,UAEHkR,UAAWp4I,EAAIoC,KACb,GACA,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMmnF,EAAY4F,KAC/B,CAAC,UAEHsE,yBAA0Br4I,EAAIoC,KAAK,GAAI,GAAI,IAC3Ck2I,oBAAqBt4I,EAAIoC,KAAK,GAAI,GAAI,IACtCm2I,wBAAyBv4I,EAAIoC,KAAK,GAAI,GAAI,IAC1Co2I,mBAAoBx4I,EAAIoC,KAAK,GAAI,GAAI,IACrCq2I,oBAAqBz4I,EAAIoC,KAAK,GAAI,CAACpC,EAAI2C,MAAO,CAAC,UAC/C+1I,6BAA8B14I,EAAIoC,KAAK,GAAI,GAAI,IAC/Cu2I,kBAAmB34I,EAAIoC,KACrB,GACA,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAMJ,EAAIQ,OACjC,CAAC,UAEHo4I,gBAAiB54I,EAAIoC,KAAK,GAAI,GAAI,IAClCy2I,eAAgB74I,EAAIoC,KAAK,GAAI,GAAI,IACjC02I,aAAc94I,EAAIoC,KAAK,CAACssI,GAAc,CAACG,GAAe,CAAC,UACvDkK,gCAAiC/4I,EAAIoC,KACnC,CAAC6xI,GACD,CAACG,GACD,CAAC,UAEH4E,oBAAqBh5I,EAAIoC,KAAK,CAACssI,GAAc,CAACG,GAAe,IAC7DoK,mBAAoBj5I,EAAIoC,KAAK,GAAI,CAACpC,EAAI2C,MAAO,CAAC,UAC9C46C,KAAMv9C,EAAIoC,KAAK,CAACiwI,GAAc,CAAChpC,GAAW,IAC1C6vC,SAAUl5I,EAAIoC,KACZ,GACA,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMmnF,EAAYe,EAAS6E,KACxC,CAAC,UAEHoF,KAAMn5I,EAAIoC,KACR,CAAC2rI,EAAoB/tI,EAAIwmD,MAAO0gF,EAAsB8K,GACtD,CAAC7L,GACD,IAEFt/F,SAAU7mC,EAAIoC,KAAK,CAAC2rI,GAAqB,CAACvH,IAAW,CAAC,UACtD4S,QAASp5I,EAAIoC,KACX,CAACpC,EAAIwmD,MAAOxmD,EAAIwmD,MAAO0gF,EAAsB8K,GAC7C,CAACvL,GACD,IAEF4S,SAAUr5I,EAAIoC,KAAK,CAAC8kI,GAAuB,CAACL,GAAW,IACvDyS,iBAAkBt5I,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAI6xI,IAAmB,CAAC,UAC5DyF,cAAev5I,EAAIoC,KAAK,CAAC8kI,GAAuB,CAACuN,IAAe,CAAC,UACjE+E,UAAWx5I,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,GAAI,IACzCw4I,OAAQz5I,EAAIoC,KAAK,CAAC2rI,GAAqB,CAAC1kC,GAAW,IACnDqwC,YAAa15I,EAAIoC,KACf,GACA,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMmnF,EAAYjH,EAAsBlnI,EAAIwmD,SACzD,CAAC,UAEHg+E,MAAOxkI,EAAIoC,KACT,GACA,CAACpC,EAAIwmD,MAAOxmD,EAAIwmD,MAAOxmD,EAAIwmD,MAAOxmD,EAAIwmD,MAAOxmD,EAAIQ,IAAKR,EAAIQ,IAAKR,EAAIQ,KACnE,CAAC,UAEH0iD,OAAQljD,EAAIoC,KAAK,CAAC2rI,GAAqB,CAACjsI,GAAW,CAAC,UACpDsqC,OAAQpsC,EAAIoC,KAAK,CAAC8kI,GAAuB,CAAC1lI,IAAW,CAAC,UACtDm4I,WAAY35I,EAAIoC,KAAK,CAAC8kI,GAAuB,CAACllI,IAAS,CAAC,UACxDqpE,aAAcrrE,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAI0wH,IAAe,CAAC,UACpD9vE,SAAU7iD,EAAIoC,KAAK,CAACmlI,GAAkB,CAACR,GAAmB,KAC1D,ECnbSpoG,GAAyBmkB,GACpCv/C,EAAMC,OAAgC,CACpCC,UAAWC,EAAUi7B,sBACrBmkB,WACAhjD,WAAY85I,KAGHt2C,GAAcA,CAACtiG,EAAoB8hD,IAC9Cv/C,EAAMC,OAAoB,CACxBxC,aACA8hD,WACAr/C,UAAWC,EAAU4/F,YACrBxjG,WAAY+5I,KAGHv1C,GAAoBxhD,GACxBv/C,EAAMC,OAAwB,CACnCs/C,WACAr/C,UAAWC,EAAU4gG,iBACrBxkG,WAAYg6I,KAIHC,GAAgBj3F,GACpBv/C,EAAMC,OAAoB,CAC/Bs/C,WACAr/C,UAAWC,EAAUq2I,aACrBj6I,WAAYk6I,KAoBHC,GAAUA,CAACj5I,EAAoB8hD,IACnCv/C,EAAMC,OAAsB,CACjCs/C,WACAhjD,WAAYo6I,GACZl5I,eCxESlB,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMo6I,EAAan6I,EAAIkB,QAAQ,CAC7Bk5I,eAAgBp6I,EAAIoB,KACpBi5I,aAAcr6I,EAAIoB,OAEdk5I,EAAQt6I,EAAIE,OAAO,CAAEq6I,MAAOJ,EAAYtxI,OAAQ7I,EAAII,OACpDo6I,EAAoBx6I,EAAIkB,QAAQ,CACpCu5I,6BAA8Bz6I,EAAIoB,KAClCs5I,yBAA0B16I,EAAIoB,KAC9Bu5I,qBAAsB36I,EAAIoB,KAC1Bw5I,uBAAwB56I,EAAIoB,KAC5By5I,wBAAyB76I,EAAIoB,KAC7B05I,0BAA2B96I,EAAIoB,KAC/B25I,oBAAqB/6I,EAAIoB,KACzB45I,0BAA2Bh7I,EAAIoB,KAC/B65I,YAAaj7I,EAAIoB,KACjB85I,uBAAwBl7I,EAAIoB,KAC5B6kD,MAAOjmD,EAAIE,OAAO,CAAEZ,KAAMU,EAAIgpG,MAAOvlF,YAAazjB,EAAII,OACtD+6I,sBAAuBn7I,EAAIoB,KAC3Bg6I,gBAAiBp7I,EAAIoB,KACrBi6I,wBAAyBr7I,EAAIoB,KAC7Bk6I,uBAAwBt7I,EAAIoB,KAC5Bm6I,QAASv7I,EAAIoB,OAET/B,EAAQW,EAAIE,OAAO,CACvBwa,QAAS8/H,EACTxwD,UAAWhqF,EAAIe,MAEXy6I,EAAkBx7I,EAAIE,OAAO,CACjCoI,SAAUtI,EAAIgpG,MACdtgB,KAAM1oF,EAAIwmD,MACVhyC,MAAOxU,EAAIspG,IAAIjqG,GACf2qF,UAAWhqF,EAAIwmD,MACfi1F,aAAcz7I,EAAII,KAClBs7I,YAAa17I,EAAII,KACjBu7I,YAAa37I,EAAII,KACjBw7I,WAAY57I,EAAII,OAElB,OAAOJ,EAAIkC,QAAQ,CACjB25I,UAAW77I,EAAIoC,KAAK,CAACk4I,EAAOA,GAAQ,GAAI,IACxCwB,kBAAmB97I,EAAIoC,KAAK,GAAI,GAAI,IACpC25I,WAAY/7I,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMszF,EAAOA,KAAU,CAAC,UAC9D9xD,kBAAmBxoF,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAACo7I,GAAkB,CAAC,UAC5DQ,mBAAoBh8I,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIu5I,IAAmB,CAAC,WAC9D,ECzCSjzD,GAAeA,IAC1BhlF,EAAMC,OAAqB,CACzBxC,WAAY,8BACZlB,WAAYm8I,KCNHn8I,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMm8I,EAAWl8I,EAAIkB,QAAQ,CAC3Bi7I,KAAMn8I,EAAIoB,KACVg7I,UAAWp8I,EAAIoB,KACfi7I,OAAQr8I,EAAIoB,OAERk7I,EAAat8I,EAAIE,OAAO,CAC5Bq8I,uBAAwBv8I,EAAIspG,IAAItpG,EAAIQ,KACpCg8I,6BAA8Bx8I,EAAIspG,IAAItpG,EAAIiB,WAC1Cw7I,8BAA+Bz8I,EAAIspG,IAAItpG,EAAII,MAC3Cs8I,gCAAiC18I,EAAIspG,IAAItpG,EAAIQ,KAC7Cm8I,0BAA2B38I,EAAIspG,IAAItpG,EAAII,MACvCw8I,0BAA2B58I,EAAIspG,IAAItpG,EAAIQ,KACvCq8I,sBAAuB78I,EAAIspG,IAAI4yC,KAE3BY,EAAkB98I,EAAIkB,QAAQ,CAClC67I,QAAS/8I,EAAIoB,KACb47I,QAASh9I,EAAIoB,OAET67I,EAAUj9I,EAAIE,OAAO,CACzBg9I,iBAAkBJ,EAClBK,0BAA2Bn9I,EAAIQ,IAC/B48I,eAAgBp9I,EAAII,KACpBm8I,uBAAwBv8I,EAAIQ,IAC5B+a,UAAWvb,EAAIiB,UACf07I,0BAA2B38I,EAAIspG,IAAItpG,EAAII,MACvCw8I,0BAA2B58I,EAAIQ,IAC/Bq8I,sBAAuBX,IAMnBmB,GAJYr9I,EAAIkB,QAAQ,CAC5Bo7I,WAAYA,EACZW,QAASA,IAEaj9I,EAAIE,OAAO,CACjCo9I,kBAAmBt9I,EAAIiB,UACvBs8I,SAAUv9I,EAAIQ,IACdL,QAASH,EAAII,KACbo9I,qBAAsBx9I,EAAII,QAEtBq9I,EAA0Bz9I,EAAIE,OAAO,CACzCw9I,yBAA0B19I,EAAIQ,IAC9Bm9I,gBAAiB39I,EAAIQ,IACrBo9I,oBAAqB59I,EAAIQ,IACzBwpF,UAAWhqF,EAAIspG,IAAItpG,EAAIwmD,OACvBq3F,UAAW79I,EAAIQ,MAEXy6G,EAAqBj7G,EAAIkB,QAAQ,CACrCg6G,QAASl7G,EAAIoB,KACb+5G,SAAUn7G,EAAIoB,KACdg6G,QAASp7G,EAAIoB,OAET08I,EAA2B99I,EAAIE,OAAO,CAC1Co7G,mBAAoBt7G,EAAIQ,IACxB+6G,YAAav7G,EAAIiC,IAAIjC,EAAIiB,WACzBglH,sBAAuBjmH,EAAIQ,IAC3Bg7G,kBAAmBx7G,EAAIQ,IACvBi7G,mBAAoBz7G,EAAIQ,MAEpBu9I,EAAa/9I,EAAIE,OAAO,CAC5B89I,6BAA8Bh+I,EAAIQ,IAClCy9I,uBAAwBj+I,EAAIQ,IAC5B09I,gBAAiBl+I,EAAIQ,IACrB29I,4BAA6Bn+I,EAAIQ,MAE7B49I,EAAyBp+I,EAAIE,OAAO,CACxC6oB,OAAQkyF,EACRU,YAAa37G,EAAIQ,IACjBmmD,OAAQ3mD,EAAIQ,IACZo7G,SAAUkiC,EACVO,YAAaN,EACbliC,2BAA4B77G,EAAIQ,IAChCs7G,YAAa97G,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OACjCi4F,gBAAiBt+I,EAAIQ,MAEjB+9I,EAAcv+I,EAAIE,OAAO,CAC7Bs+I,iBAAkBx+I,EAAII,KACtBq+I,UAAWz+I,EAAIQ,MAEXk+I,EAAsB1+I,EAAIE,OAAO,CACrCy+I,YAAa3+I,EAAII,KACjBsO,MAAO1O,EAAIQ,IACXk9I,yBAA0B19I,EAAIQ,IAC9BupC,KAAM/pC,EAAIiC,IAAIjC,EAAIqmD,MAClBs3F,gBAAiB39I,EAAIQ,IACrB+8I,SAAUv9I,EAAIQ,IACdu5F,MAAO/5F,EAAIQ,IACXq9I,UAAW79I,EAAIQ,IACfo+I,YAAa5+I,EAAIiC,IACfjC,EAAIE,OAAO,CACT2+I,aAAc7+I,EAAIiC,IAAIjC,EAAIiC,IAAIjC,EAAIqmD,OAClClmD,QAASH,EAAII,UAIb0+I,EAAqB9+I,EAAIkB,QAAQ,CACrC69I,QAAS/+I,EAAIE,OAAO,CAClB8+I,wBAAyBh/I,EAAIQ,IAC7B+a,UAAWvb,EAAIiB,UACfg+I,0BAA2Bj/I,EAAIQ,MAEjC0+I,MAAOl/I,EAAIE,OAAO,CAAEi/I,kBAAmBn/I,EAAIQ,QAEvC4+I,EAAqBp/I,EAAIE,OAAO,CACpCm/I,oBAAqBr/I,EAAIQ,IACzBuoB,OAAQ/oB,EAAIkB,QAAQ,CAAEo+I,QAASt/I,EAAIoB,KAAMm+I,QAASv/I,EAAIoB,OACtDo9I,iBAAkBx+I,EAAII,KACtBo/I,WAAYx/I,EAAII,KAChBq/I,aAAcz/I,EAAIQ,IAClBk/I,SAAU1/I,EAAIQ,MAEVmiI,EAAQ3iI,EAAIE,OAAO,CACvB8pF,UAAWhqF,EAAIwmD,MACfskC,QAAS9qF,EAAIkB,QAAQ,CACnBy+I,aAAc3/I,EAAIE,OAAO,CAAEu/I,aAAcz/I,EAAIQ,MAC7Co/I,qBAAsB5/I,EAAIE,OAAO,CAC/B6G,UAAW/G,EAAIiB,UACfu9I,iBAAkBx+I,EAAII,KACtBsO,MAAO1O,EAAIQ,IACXi+I,UAAWz+I,EAAIQ,IACfi/I,aAAcz/I,EAAIQ,IAClB0jD,uBAAwBlkD,EAAII,KAC5By/I,aAAc7/I,EAAII,OAEpB0/I,kBAAmB9/I,EAAIE,OAAO,CAC5B6/I,gBAAiB//I,EAAII,KACrB4/I,cAAehgJ,EAAIQ,MAErBo/H,QAAS0c,EACTtlC,KAAMimC,EACNgD,kBAAmBjgJ,EAAIE,OAAO,CAC5Bo9I,kBAAmBt9I,EAAIiB,UACvBs8I,SAAUv9I,EAAIQ,IACdL,QAASH,EAAII,KACbo9I,qBAAsBx9I,EAAII,OAE5B8/I,mBAAoBlgJ,EAAIE,OAAO,CAAEigJ,aAAc5B,IAC/C6B,cAAepgJ,EAAIE,OAAO,CAAEu/I,aAAcz/I,EAAIQ,MAC9C6/I,gBAAiBrgJ,EAAIE,OAAO,CAC1B6G,UAAW/G,EAAIiB,UACfu9I,iBAAkBx+I,EAAII,KACtBsO,MAAO1O,EAAIQ,IACXi+I,UAAWz+I,EAAIQ,IACfi/I,aAAcz/I,EAAIQ,IAClBq/I,aAAc7/I,EAAII,OAEpBkgJ,oBAAqBtgJ,EAAIE,OAAO,CAC9B8/I,cAAehgJ,EAAIQ,IACnB8pD,YAAao0F,IAEf6B,yBAA0BvgJ,EAAIE,OAAO,CAAE6O,MAAO+vI,IAC9C0B,YAAaxgJ,EAAIE,OAAO,CACtBigJ,aAAc5B,EACdkC,iBAAkBzgJ,EAAIQ,MAExBkgJ,wBAAyB1gJ,EAAIE,OAAO,CAClCs+I,iBAAkBx+I,EAAIspG,IAAItpG,EAAII,MAC9B4/I,cAAehgJ,EAAIQ,IACnBmgJ,kBAAmB3gJ,EAAIQ,IACvBogJ,oBAAqB5gJ,EAAIQ,MAE3BqgJ,6BAA8B7gJ,EAAIE,OAAO,CACvCgb,GAAIlb,EAAIiB,UACR++I,cAAehgJ,EAAIQ,IACnBmgJ,kBAAmB3gJ,EAAIQ,IACvB+lH,cAAevmH,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,SAErCy6F,0BAA2B9gJ,EAAIE,OAAO,CACpC6gJ,cAAe/gJ,EAAIQ,IACnBg+I,iBAAkBx+I,EAAIspG,IAAItpG,EAAII,MAC9B4/I,cAAehgJ,EAAIQ,IACnBmgJ,kBAAmB3gJ,EAAIQ,IACvB+a,UAAWvb,EAAIiB,UACf2/I,oBAAqB5gJ,EAAIQ,MAE3BwgJ,cAAehhJ,EAAIE,OAAO,CACxBigJ,aAAc5B,EACdr6F,uBAAwBlkD,EAAII,KAC5BqgJ,iBAAkBzgJ,EAAIQ,IACtBg9I,qBAAsBx9I,EAAII,OAE5B6gJ,mBAAoBjhJ,EAAIE,OAAO,CAC7B8/I,cAAehgJ,EAAIQ,IACnB8pD,YAAao0F,IAEfwC,eAAgBlhJ,EAAIE,OAAO,CACzBigJ,aAAc5B,EACd/jH,OAAQx6B,EAAII,OAEd+gJ,mBAAoBnhJ,EAAIE,OAAO,CAAEu/I,aAAcz/I,EAAIQ,MACnD4gJ,+BAAgCphJ,EAAIE,OAAO,CACzC8+I,wBAAyBh/I,EAAIQ,IAC7Bm+I,YAAa3+I,EAAII,KACjBk9I,kBAAmBt9I,EAAIiB,UACvBogJ,kBAAmBrhJ,EAAIQ,IACvBwyC,KAAMhzC,EAAIiB,UACVqgJ,WAAYthJ,EAAIwmD,MAChBy3E,gBAAiBj+H,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OACrCnC,uBAAwBlkD,EAAII,KAC5B6+I,0BAA2Bj/I,EAAIQ,IAC/Bo9I,oBAAqB59I,EAAIQ,MAE3B+gJ,6BAA8BvhJ,EAAIE,OAAO,CACvCi/I,kBAAmBn/I,EAAIQ,IACvBm+I,YAAa3+I,EAAII,KACjBihJ,kBAAmBrhJ,EAAIQ,IACvBwyC,KAAMhzC,EAAIiB,UACVqgJ,WAAYthJ,EAAIspG,IAAItpG,EAAIwmD,OACxBy3E,gBAAiBj+H,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,SAEvCm7F,qBAAsBxhJ,EAAIE,OAAO,CAC/B8/I,cAAehgJ,EAAIQ,IACnBihJ,oBAAqBrC,QAIrBsC,EAAe1hJ,EAAIE,OAAO,CAC9BgkD,uBAAwBlkD,EAAII,KAC5BiO,mBAAoBrO,EAAIiB,UACxBu8I,qBAAsBx9I,EAAII,OAEtBuhJ,EAAiB3hJ,EAAIE,OAAO,CAChCw9I,yBAA0B19I,EAAIQ,IAC9Bm9I,gBAAiB39I,EAAIQ,IACrBwpF,UAAWhqF,EAAIwmD,QAEXo7F,EAAa5hJ,EAAIE,OAAO,CAC5B2hJ,YAAa7hJ,EAAIspG,IAAItpG,EAAIQ,KACzBshJ,4BAA6B9hJ,EAAIspG,IAAItpG,EAAII,MACzC2hJ,2BAA4B/hJ,EAAIspG,IAAItpG,EAAIQ,KACxCi8I,8BAA+Bz8I,EAAIspG,IAAItpG,EAAII,MAC3Cs8I,gCAAiC18I,EAAIspG,IAAItpG,EAAIQ,KAC7CwjD,yBAA0BhkD,EAAIspG,IAAItpG,EAAIiC,IAAIy/I,IAC1CM,sBAAuBhiJ,EAAIspG,IAAIq4C,GAC/BM,uBAAwBjiJ,EAAIspG,IAAItpG,EAAII,MACpC8hJ,8BAA+BliJ,EAAIspG,IAAItpG,EAAIQ,KAC3Co8I,0BAA2B58I,EAAIspG,IAAItpG,EAAIQ,KACvC2hJ,eAAgBniJ,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIE,OAAO,CAAE0B,QAAS5B,EAAIQ,IAAK0jD,uBAAwBlkD,EAAII,SAC3FgiJ,eAAgBpiJ,EAAIspG,IAAItpG,EAAII,MAC5By8I,sBAAuB78I,EAAIspG,IAAI4yC,KAE3BmG,EAAiBriJ,EAAIE,OAAO,CAAEs+I,iBAAkBx+I,EAAII,OACpDkiJ,EAAoBtiJ,EAAIkB,QAAQ,CACpCo+I,QAASt/I,EAAIE,OAAO,CAClBs+I,iBAAkBx+I,EAAII,KACtBmiJ,0BAA2BviJ,EAAIspG,IAAItpG,EAAIQ,OAEzCgiJ,WAAYxiJ,EAAIE,OAAO,CACrBs+I,iBAAkBx+I,EAAII,KACtBugJ,kBAAmB3gJ,EAAIQ,IACvBogJ,oBAAqB5gJ,EAAIQ,MAE3BiiJ,qBAAsBJ,IAElBK,EAAoB1iJ,EAAIkB,QAAQ,CACpCyhJ,SAAU3iJ,EAAIoB,KACdwhJ,YAAaN,EACbO,OAAQR,EACRS,UAAW9iJ,EAAIoB,KACfm6I,QAASv7I,EAAIoB,OAET2hJ,EAAmB/iJ,EAAIE,OAAO,CAClCo9I,kBAAmBt9I,EAAIiB,UACvB4xH,UAAW7yH,EAAII,KACfmrC,OAAQvrC,EAAIQ,MAERwiJ,EAAuBhjJ,EAAIE,OAAO,CACtC+iJ,oBAAqBjjJ,EAAIQ,IACzB0iJ,kBAAmBljJ,EAAIQ,MAEnB2iJ,EAAcnjJ,EAAIkB,QAAQ,CAC9Bk7H,uBAAwBp8H,EAAII,KAC5BulD,sBAAuB3lD,EAAIE,OAAO,CAChCuwG,aAAczwG,EAAII,KAClBmb,UAAWvb,EAAIiB,UACfwqC,UAAWzrC,EAAIQ,IACf4iJ,mBAAoBpjJ,EAAIQ,MAE1B6iJ,aAAcrjJ,EAAIE,OAAO,CACvBojJ,oBAAqBtjJ,EAAIQ,IACzBiwG,aAAczwG,EAAII,KAClBmb,UAAWvb,EAAIiB,UACfmiJ,mBAAoBpjJ,EAAIQ,MAE1Be,kBAAmBvB,EAAIE,OAAO,CAC5B0B,QAAS5B,EAAIQ,IACbiwG,aAAczwG,EAAII,KAClBmb,UAAWvb,EAAIiB,UACfmiJ,mBAAoBpjJ,EAAIQ,QAGtB+iJ,EAAqBvjJ,EAAIkB,QAAQ,CACrCsiJ,kBAAmBxjJ,EAAIE,OAAO,CAC5BujJ,iBAAkBzjJ,EAAIiC,IAAIy/I,KAE5BtlB,uBAAwBp8H,EAAII,KAC5BsjJ,mBAAoB1jJ,EAAIE,OAAO,CAC7BsU,MAAO2uI,EACPD,kBAAmBljJ,EAAIQ,MAEzBmjJ,iBAAkB3jJ,EAAIE,OAAO,CAAEsU,MAAO2uI,IACtCS,wBAAyB5jJ,EAAIE,OAAO,CAAEC,QAASH,EAAII,SAE/CyjJ,EAAgB7jJ,EAAIE,OAAO,CAC/B2yH,UAAW7yH,EAAII,KACfmrC,OAAQvrC,EAAIQ,MAERsjJ,EAAqB9jJ,EAAIE,OAAO,CAAEyrF,YAAa3rF,EAAIQ,MACnDujJ,EAAkB/jJ,EAAIkB,QAAQ,CAClCk7H,uBAAwBp8H,EAAII,KAC5BulD,sBAAuB3lD,EAAIE,OAAO,CAAEurC,UAAWzrC,EAAIQ,MACnD6iJ,aAAcrjJ,EAAIE,OAAO,CAAE8jJ,sBAAuBhkJ,EAAIQ,MACtDojJ,wBAAyB5jJ,EAAIE,OAAO,CAAEC,QAASH,EAAII,OACnDmB,kBAAmBvB,EAAIE,OAAO,CAAE0B,QAAS5B,EAAIQ,QAEzCwpG,EAAUhqG,EAAIE,OAAO,CACzBwrC,MAAO1rC,EAAIiB,UACXgyC,WAAYjzC,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,SAE5B49F,EAA4BjkJ,EAAIkB,QAAQ,CAC5CgjJ,YAAalkJ,EAAII,KACjB+jJ,gBAAiBn6C,EACjBo6C,eAAgBpkJ,EAAIwmD,QAEhB69F,EAAmBrkJ,EAAIkB,QAAQ,CACnC0hJ,YAAaN,EACbO,OAAQR,EACRS,UAAW9iJ,EAAIoB,KACfm6I,QAASv7I,EAAIoB,OAETkjJ,EAAmBtkJ,EAAIE,OAAO,CAClC6oB,OAAQs7H,EACR5zC,aAAczwG,EAAII,KAClBihJ,kBAAmBrhJ,EAAIQ,IACvBw/I,cAAehgJ,EAAIwmD,MACnBxT,KAAMhzC,EAAIiB,UACVg9H,gBAAiBj+H,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OACrCu3F,oBAAqB59I,EAAIspG,IAAItpG,EAAIQ,KACjC+jJ,kBAAmBvkJ,EAAII,OAEzB,OAAOJ,EAAIkC,QAAQ,CACjBsiJ,kBAAmBxkJ,EAAIoC,KAAK,CAACi7I,GAAkB,GAAI,IACnDoH,2BAA4BzkJ,EAAIoC,KAAK,GAAI,CAACq7I,GAA0B,CAAC,UACrE78B,oBAAqB5gH,EAAIoC,KAAK,GAAI,CAACg8I,GAAyB,IAC5DsG,WAAY1kJ,EAAIoC,KACd,CAACpC,EAAIE,OAAO,CAAE2oF,MAAO7oF,EAAIwmD,MAAOl3C,OAAQtP,EAAIwmD,SAC5C,CACExmD,EAAIE,OAAO,CACTykJ,kBAAmB3kJ,EAAIwmD,MACvB29E,OAAQnkI,EAAIiC,IAAI0gI,MAGpB,CAAC,UAEHiiB,gBAAiB5kJ,EAAIoC,KAAK,GAAI,CAACw/I,GAAa,CAAC,UAC7CiD,mBAAoB7kJ,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAACJ,EAAI2C,MAAO,CAAC,UACtDy/I,eAAgBpiJ,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,IACzC0kJ,oBAAqB9kJ,EAAIoC,KAAK,CAACpC,EAAIwmD,OAAQ,CAACk8F,GAAoB,IAChET,uBAAwBjiJ,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UAClD2kJ,eAAgB/kJ,EAAIoC,KAClB,CAAC2gJ,GACD,CACE/iJ,EAAIkB,QAAQ,CACVukD,GAAIu9F,EACJt9F,IAAK69F,KAGT,IAEFyB,aAAchlJ,EAAIoC,KAAK,CAACyhJ,GAAgB,CAAC7jJ,EAAIkB,QAAQ,CAAEukD,GAAIq+F,EAAoBp+F,IAAKq+F,KAAqB,IACzGkB,kBAAmBjlJ,EAAIoC,KAAK,CAAC6hJ,GAA4B,CAACjkJ,EAAIiC,IAAIqiJ,IAAoB,CAAC,WACvF,EC/WSY,GAAcA,CAAClkJ,EAAoB8hD,IAC9Cv/C,EAAMC,OAA2B,CAC/BxC,aACAlB,WAAYqlJ,GACZriG,aCPShjD,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMiC,EAAShC,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAI2C,KAAMjB,IAAK1B,EAAII,OAC9C0B,EAAW9B,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIiC,IAAIjC,EAAIiB,WAChBS,IAAK1B,EAAII,OAELglJ,EAAcplJ,EAAIE,OAAO,CAC7BmlJ,UAAWrlJ,EAAI2C,KACf2iJ,MAAOtlJ,EAAIspG,IAAItpG,EAAII,MACnBmlJ,cAAevlJ,EAAIspG,IAAItpG,EAAIiB,WAC3Bsa,UAAWvb,EAAIiB,YAEXopG,EAAOrqG,EAAIE,OAAO,CACtB2F,QAAS7F,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIiB,UAAWjB,EAAII,OAC9CqoC,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEfgB,EAAWxB,EAAIkB,QAAQ,CAAEO,GAAI4oG,EAAM3oG,IAAK1B,EAAII,OAClD,OAAOJ,EAAIkC,QAAQ,CACjBsjJ,kBAAmBxlJ,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAII,MAAO,CAAC4B,GAAS,IACjEyjJ,mBAAoBzlJ,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACe,GAAS,IACxDynG,aAAczpG,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,IACtCklJ,UAAW1lJ,EAAIoC,KAAK,GAAI,CAACN,GAAW,CAAC,UACrC6jJ,uBAAwB3lJ,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIiB,UAAWjB,EAAII,QAAS,CAAC,UACrFwlJ,kBAAmB5lJ,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACjB,EAAIspG,IAAItpG,EAAII,OAAQ,CAAC,UACnEylJ,0BAA2B7lJ,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACjB,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIiB,UAAWjB,EAAII,QAAS,CAAC,UACrG0lJ,2BAA4B9lJ,EAAIoC,KAAK,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,CAACjB,EAAIiC,IAAImjJ,IAAe,CAAC,UACxFW,wBAAyB/lJ,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAIQ,KAAM,CAACgB,GAAW,CAAC,UACnEwkJ,UAAWhmJ,EAAIoC,KAAK,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,GAAI,IAClDglJ,eAAgBjmJ,EAAIoC,KAAK,GAAI,CAACJ,GAAS,KACvC,EC1BSkkJ,GAAiBA,IAC5B3iJ,EAAMC,OAA8B,CAClCC,UAAWC,EAAUyiJ,eACrBrmJ,WAAYsmJ,KCRHtmJ,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM+B,EAAW9B,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIiC,IAAIjC,EAAIiB,WAChBS,IAAK1B,EAAII,OAELimJ,EAAermJ,EAAIE,OAAO,CAC9B0L,MAAO5L,EAAIiB,UACXW,QAAS5B,EAAIi8G,UAETqqC,EAAgBtmJ,EAAIE,OAAO,CAC/B8oD,KAAMhpD,EAAIiB,UACVmrC,OAAQpsC,EAAIiC,IAAIokJ,GAChBE,aAAcvmJ,EAAIi8G,UAEdz6G,EAAWxB,EAAIkB,QAAQ,CAAEO,GAAI6kJ,EAAe5kJ,IAAK1B,EAAII,OACrDomJ,EAAiBxmJ,EAAIE,OAAO,CAChC8oD,KAAMhpD,EAAII,KACVgsC,OAAQpsC,EAAIiC,IAAIokJ,KAEZh8C,EAAOrqG,EAAIE,OAAO,CACtB2F,QAAS7F,EAAIiC,IAAIukJ,GACjB/9G,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEfwB,EAAShC,EAAIkB,QAAQ,CAAEO,GAAI4oG,EAAM3oG,IAAK1B,EAAII,OAC1CqmJ,EAAazmJ,EAAIE,OAAO,CAC5B8oD,KAAMhpD,EAAIiB,UACVmrC,OAAQpsC,EAAIiC,IAAIokJ,KAEZK,EAAiB1mJ,EAAIE,OAAO,CAAEymJ,YAAa3mJ,EAAIiC,IAAIwkJ,KACzD,OAAOzmJ,EAAIkC,QAAQ,CACjBunG,aAAczpG,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,IACtCklJ,UAAW1lJ,EAAIoC,KAAK,GAAI,CAACN,GAAW,CAAC,UACrC8kJ,YAAa5mJ,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACjB,EAAIi8G,SAAU,IACtD4qC,cAAe7mJ,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACO,GAAW,CAAC,UACtDslJ,gBAAiB9mJ,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAIQ,KAAM,CAACwB,GAAS,CAAC,UACzDgkJ,UAAWhmJ,EAAIoC,KAAK,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,GAAI,IAClD8lJ,iBAAkB/mJ,EAAIoC,KAAK,CAACskJ,GAAiB,CAAC1mJ,EAAI2C,MAAO,KACzD,ECpCSqkJ,GAAkBA,IAC7BzjJ,EAAMC,OAAoB,CACxBxC,WAAY,8BACZlB,WAAYmnJ,KCNHnnJ,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMmnJ,EAAclnJ,EAAIE,OAAO,CAAEK,IAAKP,EAAIQ,IAAK+qC,OAAQvrC,EAAIQ,MACrDnB,EAAQW,EAAIkB,QAAQ,CACxBC,YAAanB,EAAIoB,KACjBC,cAAerB,EAAII,KACnBkB,iBAAkBtB,EAAII,KACtBmB,kBAAmBvB,EAAIoB,OAEnBY,EAAShC,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIQ,IAAKkB,IAAKrC,IACzCmC,EAAWxB,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAII,KAAMsB,IAAKrC,IAC5C8nJ,EAAennJ,EAAIE,OAAO,CAAEK,IAAKP,EAAIQ,IAAK+qC,OAAQvrC,EAAIQ,MAC5D,OAAOR,EAAIkC,QAAQ,CACjB2kD,UAAW7mD,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACjB,EAAIQ,KAAM,IAChDmyC,QAAS3yC,EAAIoC,KAAK,CAAC8kJ,GAAc,CAACllJ,GAAS,IAC3C4wC,YAAa5yC,EAAIoC,KAAK,CAAC8kJ,GAAc,CAACllJ,GAAS,IAC/ColJ,gBAAiBpnJ,EAAIoC,KACnB,CAACpC,EAAIiB,UAAWjB,EAAIiB,UAAWjB,EAAIQ,KACnC,CAACgB,GACD,IAEF6lJ,cAAernJ,EAAIoC,KAAK,GAAI,CAACpC,EAAIiB,WAAY,CAAC,UAC9CqmJ,YAAatnJ,EAAIoC,KAAK,GAAI,CAACpC,EAAIiB,WAAY,CAAC,UAC5C4lC,SAAU7mC,EAAIoC,KACZ,GACA,CACEpC,EAAIE,OAAO,CACTqnJ,cAAevnJ,EAAIQ,IACnB69E,SAAUr+E,EAAIiB,UACdumJ,WAAYxnJ,EAAIiB,aAGpB,IAEFwmJ,gBAAiBznJ,EAAIoC,KACnB,CAACpC,EAAIiB,UAAWjB,EAAIiB,UAAWjB,EAAIQ,KACnC,CAACgB,GACD,IAEF+vC,SAAUvxC,EAAIoC,KAAK,CAAC+kJ,GAAe,CAACnlJ,GAAS,KAC7C,ECvCSlC,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM8lI,EAAkB7lI,EAAII,KACtByoD,EAAoB7oD,EAAII,KACxBslI,EAAO1lI,EAAIkB,QAAQ,CACvB6F,UAAW/G,EAAIiB,UACfd,QAAS0oD,IAEL88E,EAAmB3lI,EAAIE,OAAO,CAClC0L,MAAOi6H,EACPn6F,MAAOg6F,EACP/5F,QAAS3rC,EAAIiB,YAETE,EAAcnB,EAAIkB,QAAQ,CAC9B0kD,oBAAqB5lD,EAAIoB,KACzB2kI,aAAcF,EACd//E,aAAc+C,EACd5C,MAAOjmD,EAAII,OAEPsnJ,EAAY1nJ,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIQ,IAAKkB,IAAKP,IAC5C+oC,EAAalqC,EAAIiC,IAAIjC,EAAIqmD,MACzBo/E,EAAUzlI,EAAIQ,IACdwlI,EAAiBhmI,EAAIE,OAAO,CAChC0L,MAAOi6H,EACP5yF,WAAYjzC,EAAIspG,IAAIp/D,GACpBuB,UAAWg6F,EACX95F,QAAS3rC,EAAIiB,YAET6sI,EAAoB9tI,EAAIE,OAAO,CACnCynJ,SAAU3nJ,EAAI2C,KACdgpC,QAAS+5F,IAELr8B,EAAWrpG,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAI2C,KAAMjB,IAAK1B,EAAII,OAChD6lI,EAAiBjmI,EAAIE,OAAO,CAChC0L,MAAOi6H,EACP78E,KAAM08E,IAEFQ,EAAkBlmI,EAAIkB,QAAQ,CAAEO,GAAIgkI,EAAS/jI,IAAKP,IAClDymJ,EAAY5nJ,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAII,KAAMsB,IAAKP,IAC7CitI,EAAQpuI,EAAIE,OAAO,CACvB2F,QAAS7F,EAAIiC,IAAIjC,EAAIqmD,MACrBwhG,SAAU7nJ,EAAIQ,MAEV4lI,EAAYpmI,EAAII,KAChB+tI,EAAanuI,EAAIgpG,MACjB+iC,EAAS/rI,EAAIE,OAAO,CAAE8rI,EAAGhsI,EAAII,KAAM6rI,EAAGjsI,EAAII,OAC1C0oG,EAAgB9oG,EAAIE,OAAO,CAC/B4nJ,IAAK9nJ,EAAII,KACTyJ,QAASskI,EACTziG,MAAOmd,EACPhiB,SAAU7mC,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OAC9BvxC,KAAM9U,EAAII,KACV2I,KAAM/I,EAAII,KACVmvI,OAAQ1mF,EACR2mF,SAAUxvI,EAAII,KACdqvI,SAAUzvI,EAAII,KACd2nJ,SAAU/nJ,EAAIe,IACdmoG,aAAclpG,EAAII,KAClB4nJ,WAAYhoJ,EAAIiC,IAAI8pI,GACpBU,UAAWzsI,EAAIQ,IACfynJ,QAASjoJ,EAAII,KACbuvI,WAAY3vI,EAAII,OAEZmmI,EAASvmI,EAAIE,OAAO,CACxB2F,QAAS7F,EAAIiC,IAAI6mG,GACjBrgE,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEf0nJ,EAAYloJ,EAAIkB,QAAQ,CAAEO,GAAI8kI,EAAQ7kI,IAAK1B,EAAII,OAC/CmuI,EAASvuI,EAAII,KACb07H,EAAO97H,EAAIiC,IAAIjC,EAAIqmD,MACnBghF,EAAYrnI,EAAIkB,QAAQ,CAC5BmtF,KAAMruF,EAAIoB,KACVgtF,KAAMpuF,EAAIoB,KACVyqC,QAAS7rC,EAAIoB,KACbyhD,SAAU7iD,EAAIoB,OAEVotI,EAAiBxuI,EAAIE,OAAO,CAChCgb,GAAI2tC,EACJs/F,OAAQ5Z,EACR1kI,QAASskI,EACTn7F,KAAM6V,EACNohB,KAAMjqE,EAAII,KACVw2B,KAAM52B,EAAIspG,IAAIwyB,GACdnvE,KAAM3sD,EAAIe,IACVqnJ,UAAWpoJ,EAAII,KACfioJ,OAAQhhB,EACR3E,OAAQ75E,EACRjR,MAAO6tF,EACPl6F,OAAQk6F,IAEJp7B,EAAOrqG,EAAIE,OAAO,CACtB2F,QAAS7F,EAAIiC,IAAIusI,GACjB/lG,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEf8nJ,EAAYtoJ,EAAIkB,QAAQ,CAAEO,GAAI4oG,EAAM3oG,IAAK1B,EAAII,OAC7C6tI,EAAYjuI,EAAIE,OAAO,CAAE8rI,EAAGhsI,EAAII,KAAM6rI,EAAGjsI,EAAII,OAC7C8rI,EAAelsI,EAAIE,OAAO,CAC9BisI,IAAKnsI,EAAII,KACTgsI,QAASvjF,EACTwjF,QAASrsI,EAAIiC,IAAIgsI,GACjB3B,UAAWtsI,EAAII,KACfsrC,MAAOmd,EACP9/C,KAAM/I,EAAII,KACVmsI,WAAYvsI,EAAIe,IAChBkmC,YAAajnC,EAAIQ,IACjB0oG,aAAclpG,EAAII,KAClBosI,WAAYxsI,EAAIQ,IAChBisI,UAAWzsI,EAAIQ,IACfksI,MAAO1sI,EAAII,OAEPmoJ,EAAYvoJ,EAAIkB,QAAQ,CAAEO,GAAIyqI,EAAcxqI,IAAK1B,EAAII,OACrDuB,EAAY3B,EAAIE,OAAO,CAAE0B,QAAS5B,EAAIQ,IAAKqB,UAAW7B,EAAIQ,MAC1DnB,EAAQW,EAAIkB,QAAQ,CACxBC,YAAanB,EAAIoB,KACjBC,cAAerB,EAAII,KACnBkB,iBAAkBtB,EAAII,KACtBmB,kBAAmBvB,EAAIoB,OAEnBonJ,EAAYxoJ,EAAIkB,QAAQ,CAAEO,GAAIE,EAAWD,IAAKrC,IAC9CopJ,EAAYzoJ,EAAIkB,QAAQ,CAC5BO,GAAIzB,EAAIgnD,MAAMhnD,EAAIQ,IAAKR,EAAIQ,KAC3BkB,IAAK1B,EAAII,OAEL0nI,EAAY9nI,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIiC,IAAIjC,EAAII,MAAOsB,IAAK1B,EAAII,OAC1DomI,EAAWxmI,EAAIkB,QAAQ,CAAEO,GAAI0sI,EAAYzsI,IAAK1B,EAAII,OAClDoB,EAAWxB,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAII,KAAMsB,IAAK1B,EAAII,OAChDquI,EAAczuI,EAAIgnD,MAAMhnD,EAAII,KAAMJ,EAAII,MACtCsuI,EAAc1uI,EAAIE,OAAO,CAC7BsiF,IAAKxiF,EAAII,KACTurG,OAAQ3rG,EAAII,KACZihG,KAAMrhG,EAAIiC,IAAIjC,EAAIqmD,MAClB2tF,QAASh0I,EAAIiC,IAAIwsI,KAEbK,EAAyB9uI,EAAIE,OAAO,CACxCW,IAAKb,EAAII,KACT2O,MAAO/O,EAAIQ,IACX2zI,iBAAkBn0I,EAAII,OAElBwuI,EAAoB5uI,EAAIkB,QAAQ,CACpCozI,SAAUt0I,EAAIE,OAAO,CACnB0L,MAAOkjI,EACP5jH,SAAUlrB,EAAIoC,KAAK,GAAI,GAAI,QAGzBysI,EAAe7uI,EAAIE,OAAO,CAC9BmhG,KAAMrhG,EAAIiC,IAAIjC,EAAIqmD,MAClB2tF,QAASh0I,EAAIiC,IAAIwsI,GACjB8F,mBAAoBv0I,EAAIspG,IAAIslC,GAC5B4F,YAAax0I,EAAI6+H,QAEbkQ,EAAgC/uI,EAAIE,OAAO,CAC/C0L,MAAO5L,EAAIspG,IAAIwlC,GACfztC,KAAMrhG,EAAIiC,IAAIjC,EAAIqmD,QAEd2hF,EAAWhoI,EAAIkB,QAAQ,CAAEO,GAAIqnG,EAAepnG,IAAK1B,EAAII,OACrD6nI,EAAWjoI,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIQ,IAAKkB,IAAK1B,EAAII,OAC/CgmD,EAAWpmD,EAAIkB,QAAQ,CAC3BwlI,SAAU1mI,EAAIE,OAAO,CACnBoI,SAAUtI,EAAIqmD,KACdsgF,aAAc99E,EACdhiB,SAAU7mC,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OAC9Bt9C,KAAM/I,EAAII,KACVyI,OAAQ7I,EAAII,OAEdwmI,YAAa5mI,EAAIE,OAAO,CAAE2mC,SAAU7mC,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,WAEpD8/E,EAAWnmI,EAAIkB,QAAQ,CAAEO,GAAI2kD,EAAU1kD,IAAKP,IAC5C2lI,EAAc9mI,EAAIE,OAAO,CAC7BwrC,MAAOg6F,EACP7+F,SAAU7mC,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OAC9BvxC,KAAM9U,EAAII,KACV2I,KAAM/I,EAAII,KACVovI,SAAUxvI,EAAII,KACdqvI,SAAUzvI,EAAII,KACd8oG,aAAclpG,EAAII,KAClB4nJ,WAAYhoJ,EAAIiC,IAAI8pI,GACpBU,UAAWzsI,EAAIQ,IACfynJ,QAASjoJ,EAAII,KACbssI,MAAO1sI,EAAII,KACXuvI,WAAY3vI,EAAII,OAEZqmI,EAAWzmI,EAAIkB,QAAQ,CAAEO,GAAIgkI,EAAS/jI,IAAK1B,EAAII,OAC/CH,EAAQD,EAAIE,OAAO,CAAEC,QAASH,EAAII,KAAMC,SAAUL,EAAII,OACtDsoJ,EAAsB1oJ,EAAIE,OAAO,CACrCK,IAAKP,EAAIQ,IACTusC,UAAW/sC,EAAIe,IACfogD,yBAA0BnhD,EAAIQ,IAC9B+oC,KAAMvpC,EAAII,KACVysC,UAAW7sC,EAAIQ,IACf0gD,yBAA0BlhD,EAAIQ,IAC9B8vC,WAAYtwC,EAAII,KAChBM,OAAQT,EACRU,OAAQV,EACR6sC,UAAW9sC,EAAIe,MAEX8lI,EAAW7mI,EAAIkB,QAAQ,CAC3BO,GAAIinJ,EACJhnJ,IAAK1B,EAAII,OAEL0B,GAAW9B,EAAIkB,QAAQ,CAAEO,GAAIgkI,EAAS/jI,IAAKP,IAC3C8hI,GAAOjjI,EAAIe,IACXmuI,GAAUlvI,EAAIE,OAAO,CACzB8mF,OAAQhnF,EAAIspG,IAAI25B,IAChByM,OAAQ1vI,EAAIiB,UACZ22C,MAAO53C,EAAIwmD,QAEPxkD,GAAShC,EAAIkB,QAAQ,CACzBO,GAAIzB,EAAIiC,IAAIjC,EAAIgnD,MAAMmnF,EAAYnuI,EAAIspG,IAAI4lC,IAAUlvI,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,SACxE3kD,IAAKP,IAEDomI,GAAkBvnI,EAAIE,OAAO,CACjCgb,GAAIwqH,EACJ95H,MAAOi6H,EACP2B,OAAQxnI,EAAI2C,KACZqwC,KAAM0yF,EACN9uG,KAAMklG,EACN7oF,WAAYjzC,EAAIspG,IAAIp/D,GACpB6vD,MAAO/5F,EAAIspG,IAAItpG,EAAIQ,KACnB+qC,OAAQk6F,IAEJsB,GAAmB/mI,EAAIkB,QAAQ,CACnCO,GAAIgkI,EACJ/jI,IAAK1B,EAAIkB,QAAQ,CACfykD,sBAAuB3lD,EAAIoB,KAC3B4lI,aAAcn+E,EACdjD,oBAAqB5lD,EAAIoB,KACzB2kI,aAAcF,EACdoB,SAAUjnI,EAAIoB,KACd0kD,aAAc+C,EACd5C,MAAOjmD,EAAII,SAkEf,OA/DgBJ,EAAIkC,QAAQ,CAC1BupC,UAAWzrC,EAAIoC,KAAK,CAACujI,GAAmB,CAAC+hB,GAAY,CAAC,UACtD77G,QAAS7rC,EAAIoC,KAAK,CAAC4jI,GAAiB,GAAI,IACxC2iB,cAAe3oJ,EAAIoC,KAAK,CAAC0rI,GAAoB,CAACzkC,GAAW,IACzDznG,QAAS5B,EAAIoC,KAAK,CAAC6jI,GAAiB,CAACC,GAAkB,CAAC,UACxDsP,OAAQx1I,EAAIoC,KAAK,CAACyjI,GAAkB,CAAC+hB,GAAY,CAAC,UAClDgB,cAAe5oJ,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAII,KAAMJ,EAAII,MAAO,CAACJ,EAAI2C,MAAO,IACpEkmJ,UAAW7oJ,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,CAAC,UACpCsoJ,WAAY9oJ,EAAIoC,KAAK,GAAI,CAACpC,EAAI2C,MAAO,IACrComJ,aAAc/oJ,EAAIoC,KAChB,CACEpC,EAAIE,OAAO,CACT2nJ,SAAU7nJ,EAAIQ,IACdwoJ,aAAchpJ,EAAII,KAClB6oJ,UAAWjpJ,EAAIiC,IAAIjC,EAAIQ,QAG3B,GACA,IAEF0oJ,aAAclpJ,EAAIoC,KAAK,GAAI,CAACpC,EAAIE,OAAO,CAAE2nJ,SAAU7nJ,EAAIQ,OAAS,IAChE2oJ,aAAcnpJ,EAAIoC,KAAK,CAACgsI,GAAQ,CAACpuI,EAAIE,OAAO,CAAEkpJ,SAAUppJ,EAAIQ,OAAS,IACrE6B,WAAYrC,EAAIoC,KAAK,CAACpC,EAAII,MAAO,GAAI,IACrCqnI,WAAYznI,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAImkI,IAAa,CAAC,UAChDijB,qBAAsBrpJ,EAAIoC,KAAK,CAACsjI,EAAM1lI,EAAIQ,IAAKR,EAAIQ,KAAM,CAAC0nJ,GAAY,CAAC,UACvEoB,cAAetpJ,EAAIoC,KAAK,CAACsjI,EAAM1lI,EAAIQ,IAAKR,EAAIQ,KAAM,CAAC0nJ,GAAY,CAAC,UAChEqB,oBAAqBvpJ,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAIQ,IAAKR,EAAIQ,KAAM,CAAC0nJ,GAAY,CAAC,UAC1EsB,gBAAiBxpJ,EAAIoC,KAAK,CAACpC,EAAIiC,IAAIjC,EAAII,MAAOJ,EAAIQ,IAAKR,EAAIQ,KAAM,CAAC0nJ,GAAY,CAAC,UAC/EuB,kBAAmBzpJ,EAAIoC,KAAK,CAACsjI,EAAM1lI,EAAIQ,IAAKR,EAAIQ,KAAM,CAAC8nJ,GAAY,CAAC,UACpEoB,aAAc1pJ,EAAIoC,KAAK,CAACyjI,EAAiB7lI,EAAIQ,IAAKR,EAAIQ,KAAM,CAAC8nJ,GAAY,CAAC,UAC1EqB,cAAe3pJ,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMmnF,EAAYnuI,EAAIiC,IAAI4mD,MAAuB,CAAC,UAC3F+gG,gBAAiB5pJ,EAAIoC,KAAK,GAAI,CAACmmJ,GAAY,CAAC,UAC5C3lJ,aAAc5C,EAAIoC,KAAK,GAAI,CAAComJ,GAAY,IACxCtQ,UAAWl4I,EAAIoC,KAAK,GAAI,CAACpC,EAAIiB,WAAY,CAAC,UAC1C4oJ,WAAY7pJ,EAAIoC,KAAK,GAAI,CAACqmJ,GAAY,CAAC,UACvCtQ,YAAan4I,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMmnF,EAAYnuI,EAAII,QAAS,CAAC,UACvE2C,gBAAiB/C,EAAIoC,KAAK,GAAI,CAAC0lI,GAAY,CAAC,UAC5CgiB,WAAY9pJ,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAII,MAAO,CAAComI,GAAW,CAAC,UACxD4R,UAAWp4I,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMmnF,EAAYrlC,KAAkB,CAAC,UAC1EihD,mBAAoB/pJ,EAAIoC,KAAK,GAAI,CAACZ,GAAW,CAAC,UAC9Cs3I,aAAc94I,EAAIoC,KAAK,CAACssI,GAAc,CAACG,GAAe,CAAC,UACvDkK,gCAAiC/4I,EAAIoC,KAAK,CAAC0sI,GAAyB,CAACC,GAAgC,CAAC,UACtGib,YAAahqJ,EAAIoC,KAAK,CAAC+rI,GAAa,CAACnG,GAAW,CAAC,UACjDiiB,oBAAqBjqJ,EAAIoC,KAAK,CAAC8pI,EAAciC,EAAYnuI,EAAII,MAAO,CAACoB,GAAW,IAChF0oJ,gBAAiBlqJ,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAII,MAAO,CAACipG,GAAW,CAAC,UAC7D8gD,kBAAmBnqJ,EAAIoC,KAAK,CAAC+rI,EAAYnuI,EAAII,KAAMJ,EAAII,MAAO,CAAC6nI,GAAW,CAAC,UAC3EmiB,YAAapqJ,EAAIoC,KAAK,CAACpC,EAAIQ,KAAM,CAACgB,GAAW,IAC7CqlC,SAAU7mC,EAAIoC,KAAK,CAACyjI,GAAkB,CAACM,GAAW,CAAC,UACnD/3C,KAAMpuF,EAAIoC,KAAK,CAAC0kI,GAAc,CAACN,GAAW,IAC1C6jB,cAAerqJ,EAAIoC,KAAK,CAACsjI,GAAO,CAACe,GAAW,CAAC,UAC7Cv6F,UAAWlsC,EAAIoC,KAAK,CAAC+rI,GAAa,CAACtH,GAAW,IAC9CyjB,kBAAmBtqJ,EAAIoC,KAAK,CAAC0rI,GAAoB,CAACzkC,GAAW,IAC7DkhD,eAAgBvqJ,EAAIoC,KAAK,CAAC4jI,GAAiB,CAAC38B,GAAW,IACvDrmG,WAAYhD,EAAIoC,KAAK,CAACpC,EAAII,MAAO,GAAI,IACrCynD,QAAS7nD,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAACipG,GAAW,IAC1CmwC,UAAWx5I,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,GAAI,IACzCupJ,mBAAoBxqJ,EAAIoC,KAAK,CAACpC,EAAIspG,IAAItpG,EAAII,OAAQ,CAACipG,GAAW,IAC9DohD,sBAAuBzqJ,EAAIoC,KAAK,CAACyjI,GAAkB,CAACx8B,GAAW,IAC/DnmD,OAAQljD,EAAIoC,KAAK,CAACyjI,GAAkB,CAAC/jI,IAAW,CAAC,UACjD4oJ,SAAU1qJ,EAAIoC,KAAK,CAACpC,EAAIQ,KAAM,CAACgB,GAAW,IAC1Cm4I,WAAY35I,EAAIoC,KAAK,CAACymD,GAAoB,CAAC7mD,IAAS,CAAC,UACrD6gD,SAAU7iD,EAAIoC,KAAK,CAACmlI,IAAkB,CAACR,IAAmB,KAE9C,EC1SHjnI,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM4qJ,EAAW3qJ,EAAIE,OAAO,CAC1BK,IAAKP,EAAIQ,IACTE,OAAQV,EAAIiB,UACZN,OAAQX,EAAIiB,YAER5B,EAAQW,EAAIkB,QAAQ,CACxBC,YAAanB,EAAIoB,KACjBC,cAAerB,EAAII,KACnBkB,iBAAkBtB,EAAII,KACtBmB,kBAAmBvB,EAAIoB,OAEnBI,EAAWxB,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIoB,KAAMM,IAAKrC,IAC5CY,EAAQD,EAAIE,OAAO,CAAEC,QAASH,EAAII,KAAMC,SAAUL,EAAII,OACtDE,EAAiBN,EAAIE,OAAO,CAChCK,IAAKP,EAAIQ,IACTC,aAAcT,EAAII,KAClBM,OAAQT,EACRU,OAAQV,IAEJW,EAAWZ,EAAIE,OAAO,CAC1BK,IAAKP,EAAIQ,IACTK,IAAKb,EAAII,KACTU,YAAad,EAAIe,IACjBL,OAAQT,EACRU,OAAQV,EACRe,WAAYhB,EAAIiB,YAEZ4lI,EAAW7mI,EAAIkB,QAAQ,CAAEO,GAAIb,EAAUc,IAAKrC,IAC5CsC,EAAY3B,EAAIE,OAAO,CAAE0B,QAAS5B,EAAIQ,IAAKqB,UAAW7B,EAAIQ,MAC1D2lI,EAAWnmI,EAAIkB,QAAQ,CAAEO,GAAIE,EAAWD,IAAKrC,IAC7CmnI,EAAWxmI,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIspG,IAAItpG,EAAIiB,WAChBS,IAAKrC,IAEDonI,EAAWzmI,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIiC,IAAI0oJ,GAAWjpJ,IAAKrC,IACrD0C,EAAc/B,EAAIE,OAAO,CAC7BK,IAAKP,EAAIQ,IACTE,OAAQT,EACRU,OAAQV,IAEJ6B,EAAW9B,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIiC,IAAIrB,GAAWc,IAAKrC,IACrDgqG,EAAWrpG,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIiB,UAAWjB,EAAIiC,IAAI0oJ,KAC7CjpJ,IAAKrC,IAED2C,EAAShC,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAII,KAAMsB,IAAKrC,IAChD,OAAOW,EAAIkC,QAAQ,CACjB0oJ,YAAa5qJ,EAAIoC,KAAK,CAACpC,EAAIiB,UAAW0pJ,GAAW,CAACnpJ,GAAW,IAC7DqpJ,mBAAoB7qJ,EAAIoC,KACtB,CAACpC,EAAIiB,UAAWjB,EAAIiC,IAAIjC,EAAIiB,YAC5B,GACA,IAEF6pJ,wBAAyB9qJ,EAAIoC,KAC3B,CAACpC,EAAIiC,IAAIjC,EAAIiB,WAAYjB,EAAIiC,IAAIjC,EAAIiB,YACrC,GACA,IAEF8pJ,2BAA4B/qJ,EAAIoC,KAC9B,CAACpC,EAAIiC,IAAIjC,EAAIiB,WAAYjB,EAAIiC,IAAIjC,EAAIiB,YACrC,GACA,IAEF+pJ,mBAAoBhrJ,EAAIoC,KACtB,CAACpC,EAAIiC,IAAIjC,EAAIiB,WAAYjB,EAAIiC,IAAIjC,EAAIiB,YACrC,GACA,IAEFgqJ,iBAAkBjrJ,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACjB,EAAII,MAAO,IACxD+B,WAAYnC,EAAIoC,KAAK,CAAC9B,GAAiB,CAACumI,GAAW,IACnDqkB,eAAgBlrJ,EAAIoC,KAAK,CAACpC,EAAIiB,UAAW0pJ,GAAW,CAACnpJ,GAAW,IAChEoB,aAAc5C,EAAIoC,KAAK,GAAI,CAAC+jI,GAAW,IACvCglB,iBAAkBnrJ,EAAIoC,KAAK,GAAI,CAACokI,GAAW,CAAC,UAC5C4kB,wBAAyBprJ,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACwlI,GAAW,CAAC,UAChE5jI,QAAS7C,EAAIoC,KAAK,CAACL,GAAc,CAAC8kI,GAAW,CAAC,UAC9C/jI,SAAU9C,EAAIoC,KAAK,GAAI,CAACN,GAAW,CAAC,UACpCupJ,sBAAuBrrJ,EAAIoC,KAAK,GAAI,CAACinG,GAAW,CAAC,UACjDtmG,gBAAiB/C,EAAIoC,KAAK,GAAI,CAACN,GAAW,CAAC,UAC3CwpJ,WAAYtrJ,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UACtC4C,WAAYhD,EAAIoC,KAAK,CAACL,GAAc,CAAC/B,EAAII,MAAO,IAChDmrJ,sBAAuBvrJ,EAAIoC,KACzB,CAACpC,EAAIiB,UAAWjB,EAAIiC,IAAIjC,EAAIiB,YAC5B,GACA,IAEFuqJ,2BAA4BxrJ,EAAIoC,KAC9B,CAACpC,EAAIiB,UAAWjB,EAAIQ,IAAKR,EAAI2C,MAC7B,CAACnB,GACD,IAEFiqJ,YAAazrJ,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACjB,EAAII,MAAO,IACnDsrJ,cAAe1rJ,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIiC,IAAIjC,EAAIiB,YAAa,GAAI,IACrE0qJ,yBAA0B3rJ,EAAIoC,KAC5B,CAACpC,EAAIiB,UAAWjB,EAAIiB,WACpB,CAACe,GACD,KAEF,EClGSlC,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM6rJ,EAAiB5rJ,EAAIE,OAAO,CAChC0hD,SAAU5hD,EAAIQ,IACdqhD,SAAU7hD,EAAIQ,MAEVqrJ,EAAS7rJ,EAAIE,OAAO,CACxB2F,QAAS7F,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIiB,UAAW2qJ,IAC1CnjH,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEfnB,EAAQW,EAAIkB,QAAQ,CACxBC,YAAanB,EAAIoB,KACjBC,cAAerB,EAAII,KACnBkB,iBAAkBtB,EAAII,KACtBmB,kBAAmBvB,EAAIoB,OAEnB0qJ,EAAY9rJ,EAAIkB,QAAQ,CAAEO,GAAIoqJ,EAAQnqJ,IAAKrC,IAC3CyC,EAAW9B,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAI2C,KAAMjB,IAAKrC,IAC5C0sJ,EAAY/rJ,EAAIkB,QAAQ,CAC5BO,GAAIzB,EAAIE,OAAO,CACb8rJ,YAAahsJ,EAAIiC,IACfjC,EAAIgnD,MACFhnD,EAAIQ,IACJR,EAAIE,OAAO,CAAE8gD,YAAahhD,EAAIQ,IAAKygD,YAAajhD,EAAIQ,QAGxDyrJ,iBAAkBjsJ,EAAIQ,IACtB0rJ,iBAAkBlsJ,EAAIQ,MAExBkB,IAAKrC,IAED8sJ,EAAYnsJ,EAAIE,OAAO,CAAEowC,WAAYtwC,EAAIQ,MACzC4rJ,EAAYpsJ,EAAIkB,QAAQ,CAC5BO,GAAIzB,EAAIE,OAAO,CAAEotC,QAASttC,EAAIQ,IAAKitC,QAASztC,EAAIQ,MAChDkB,IAAKrC,IAEDgtJ,EAAwBrsJ,EAAIE,OAAO,CACvC2sC,UAAW7sC,EAAII,KACfkwC,WAAYtwC,EAAIQ,MAEZ0mJ,EAAclnJ,EAAIE,OAAO,CAC7BK,IAAKP,EAAIQ,IACToL,MAAO5L,EAAII,KACXmrC,OAAQvrC,EAAIQ,MAERwB,EAAShC,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIQ,IAAKkB,IAAKrC,IACzCitJ,EAAqBtsJ,EAAIE,OAAO,CACpC6sC,UAAW/sC,EAAIe,IACfwrJ,KAAMvsJ,EAAIQ,IACVgsJ,KAAMxsJ,EAAIQ,IACV8sC,QAASttC,EAAIQ,IACbitC,QAASztC,EAAIQ,IACbisJ,cAAezsJ,EAAIiB,UACnByrJ,eAAgB1sJ,EAAII,KACpBusJ,eAAgB3sJ,EAAII,KACpB0sC,UAAW9sC,EAAIe,MAEX6rJ,EAAY5sJ,EAAIkB,QAAQ,CAC5BO,GAAIzB,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAMJ,EAAIiB,YACpCS,IAAKrC,IAEDsC,EAAY3B,EAAIE,OAAO,CAAE0B,QAAS5B,EAAIQ,IAAKqB,UAAW7B,EAAIQ,MAC1DqsJ,EAAY7sJ,EAAIkB,QAAQ,CAAEO,GAAIE,EAAWD,IAAKrC,IAC9CY,EAAQD,EAAIE,OAAO,CAAEC,QAASH,EAAII,KAAMC,SAAUL,EAAII,OACtD0sJ,EAAkB9sJ,EAAIE,OAAO,CACjC6sC,UAAW/sC,EAAIe,IACf+rC,UAAW9sC,EAAIe,MAEXgsJ,EAAe/sJ,EAAIE,OAAO,CAC9B8gD,YAAahhD,EAAIQ,IACjBygD,YAAajhD,EAAIQ,IACjB2gD,yBAA0BnhD,EAAIQ,IAC9BqsC,UAAW7sC,EAAIQ,IACf0gD,yBAA0BlhD,EAAIQ,MAE1BwsJ,EAAYhtJ,EAAIkB,QAAQ,CAAEO,GAAIsrJ,EAAcrrJ,IAAKrC,IACjD4tJ,EAAqBjtJ,EAAIE,OAAO,CACpCV,GAAIQ,EAAII,KACR4gD,YAAahhD,EAAIQ,IACjBygD,YAAajhD,EAAIQ,IACjB2gD,yBAA0BnhD,EAAIQ,IAC9BqsC,UAAW7sC,EAAIQ,IACf0gD,yBAA0BlhD,EAAIQ,MAE1B0sJ,EAASltJ,EAAIE,OAAO,CACxB2F,QAAS7F,EAAIiC,IAAIgrJ,GACjBxkH,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEf2sJ,EAAYntJ,EAAIkB,QAAQ,CAAEO,GAAIyrJ,EAAQxrJ,IAAKrC,IAC3C+tJ,EAAYptJ,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIiB,UAAWS,IAAKrC,IAClDm7F,EAAkBx6F,EAAIkB,QAAQ,CAClCqxH,kBAAmBvyH,EAAIoB,KACvBoxH,MAAOxyH,EAAIoB,KACX+sF,KAAMnuF,EAAIoB,KACVqxH,aAAczyH,EAAIoB,KAClBsxH,kBAAmB1yH,EAAIoB,OAEnB01H,EAAiB92H,EAAIE,OAAO,CAChCgb,GAAIlb,EAAII,KACRw0C,UAAW50C,EAAIe,IACf80B,OAAQ2kE,EACRu8B,eAAgB/2H,EAAIe,IACpBygD,SAAUxhD,EAAII,KACdqhD,SAAUzhD,EAAII,KACd42H,kBAAmBh3H,EAAIQ,IACvBoyH,eAAgB5yH,EAAIQ,IACpBwyC,KAAMhzC,EAAII,KACVk2B,KAAMt2B,EAAIe,IACVk2H,QAASj3H,EAAIQ,IACbqyH,UAAW7yH,EAAII,KACf0yH,mBAAoB9yH,EAAIQ,IACxB02H,kBAAmBl3H,EAAIQ,IACvBwyH,gBAAiBhzH,EAAIQ,IACrByyH,eAAgBjzH,EAAII,KACpBitJ,UAAWrtJ,EAAIe,IACfusJ,UAAWttJ,EAAIe,IACfklG,UAAWjmG,EAAIQ,IACf0lG,UAAWlmG,EAAIQ,IACfwpF,UAAWhqF,EAAIe,IACfmyH,mBAAoBlzH,EAAIQ,IACxB4yH,eAAgBpzH,EAAII,KACpBw3C,MAAO53C,EAAIQ,IACXqa,OAAQ7a,EAAII,OAERmtJ,EAAYvtJ,EAAIE,OAAO,CAAEysD,KAAM3sD,EAAIe,IAAK2Z,QAAS1a,EAAII,OACrDotJ,EAAYxtJ,EAAIkB,QAAQ,CAC5BO,GAAIzB,EAAIE,OAAO,CACbutJ,QAASztJ,EAAII,KACbstJ,QAAS1tJ,EAAIiC,IAAI60H,GACjB62B,OAAQ3tJ,EAAIiC,IAAIsrJ,GAChBK,WAAY5tJ,EAAIQ,MAElBkB,IAAKrC,IAEDwuJ,EAAoB7tJ,EAAIE,OAAO,CACnC4tJ,UAAW9tJ,EAAIe,IACfgtJ,cAAe/tJ,EAAIQ,IACnBwtJ,aAAchuJ,EAAIe,IAClBktJ,OAAQjuJ,EAAIQ,IACZ0tJ,OAAQluJ,EAAIQ,IACZ2tJ,eAAgBnuJ,EAAIQ,IACpB4tJ,cAAepuJ,EAAIQ,MAEf6tJ,EAASruJ,EAAIE,OAAO,CACxB2F,QAAS7F,EAAIiC,IAAI4rJ,GACjBplH,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEfknJ,EAAY1nJ,EAAIkB,QAAQ,CAAEO,GAAI4sJ,EAAQ3sJ,IAAKrC,IAC3CivJ,EAAiBtuJ,EAAIE,OAAO,CAChCV,GAAIQ,EAAII,KACRmuJ,YAAavuJ,EAAI2C,KACjB6rJ,sBAAuBxuJ,EAAIQ,IAC3BiuJ,+BAAgCzuJ,EAAIQ,IACpCwtJ,aAAchuJ,EAAIe,IAClB2tJ,eAAgB1uJ,EAAIQ,IACpB2tJ,eAAgBnuJ,EAAIQ,IACpBmuJ,sBAAuB3uJ,EAAIQ,IAC3BouJ,sBAAuB5uJ,EAAIe,MAEvBgnI,EAAS/nI,EAAIE,OAAO,CACxB2F,QAAS7F,EAAIiC,IAAIqsJ,GACjB7lH,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEfonJ,EAAY5nJ,EAAIkB,QAAQ,CAAEO,GAAIsmI,EAAQrmI,IAAKrC,IAC3C6oJ,EAAYloJ,EAAIkB,QAAQ,CAC5BO,GAAIzB,EAAIE,OAAO,CACb2uJ,mBAAoB7uJ,EAAIQ,IACxB6sC,aAAcrtC,EAAIQ,IAClBsuJ,gBAAiB9uJ,EAAII,KACrBotC,aAAcxtC,EAAIQ,IAClBuuJ,mBAAoB/uJ,EAAIQ,MAE1BkB,IAAKrC,IAEDyW,EAAQ9V,EAAIkB,QAAQ,CACxBH,IAAKf,EAAIe,IACTP,IAAKR,EAAIQ,IACT46H,KAAMp7H,EAAIiC,IAAIjC,EAAIqmD,MAClBjmD,KAAMJ,EAAII,OAEN4uJ,EAAchvJ,EAAIE,OAAO,CAC7Bgb,GAAIlb,EAAIiB,UACRV,IAAKP,EAAIQ,IACT+G,OAAQvH,EAAII,KACZwL,MAAO3L,EACP41B,OAAQ71B,EAAII,KACZ6uJ,iBAAkBjvJ,EAAIQ,IACtBkrC,MAAO1rC,EAAIiB,UACX+xC,KAAMhzC,EAAIiB,UACViuJ,eAAgBlvJ,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OACpC2jC,UAAWhqF,EAAIQ,IACfuO,MAAO/O,EAAIQ,IACX+qC,OAAQvrC,EAAIQ,IACZ2uJ,SAAUnvJ,EAAII,OAEVkoJ,EAAYtoJ,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIiC,IAAI+sJ,GAActtJ,IAAKrC,IACzDmC,EAAWxB,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAII,KAAMsB,IAAKrC,IAC5C+vJ,EAAmBpvJ,EAAIE,OAAO,CAClC6sC,UAAW/sC,EAAIe,IACfigD,YAAahhD,EAAIQ,IACjBygD,YAAajhD,EAAIQ,IACjB2gD,yBAA0BnhD,EAAIQ,IAC9BqsC,UAAW7sC,EAAIQ,IACf0gD,yBAA0BlhD,EAAIQ,IAC9BssC,UAAW9sC,EAAIe,MAEXwnJ,EAAYvoJ,EAAIkB,QAAQ,CAAEO,GAAI2tJ,EAAkB1tJ,IAAKrC,IACrDmpJ,EAAYxoJ,EAAIkB,QAAQ,CAC5BO,GAAIzB,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAMJ,EAAIiC,IAAIjC,EAAIQ,OAC5CkB,IAAKrC,IAEDopJ,EAAYzoJ,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIiC,IAAIjC,EAAIQ,KAAMkB,IAAKrC,IACrDgwJ,EAAkCrvJ,EAAIE,OAAO,CACjDV,GAAIQ,EAAIQ,IACRusC,UAAW/sC,EAAIe,IACfigD,YAAahhD,EAAIQ,IACjBygD,YAAajhD,EAAIQ,IACjB2gD,yBAA0BnhD,EAAIQ,IAC9BqsC,UAAW7sC,EAAIQ,IACf0gD,yBAA0BlhD,EAAIQ,IAC9B6sC,aAAcrtC,EAAIQ,IAClBgtC,aAAcxtC,EAAIQ,IAClBssC,UAAW9sC,EAAIe,MAEXwlI,EAASvmI,EAAIE,OAAO,CACxB2F,QAAS7F,EAAIiC,IAAIotJ,GACjB5mH,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEfsnI,EAAY9nI,EAAIkB,QAAQ,CAAEO,GAAI8kI,EAAQ7kI,IAAKrC,IAC3CiwJ,EAAyBtvJ,EAAIE,OAAO,CACxCV,GAAIQ,EAAIQ,IACRusC,UAAW/sC,EAAIe,IACfigD,YAAahhD,EAAIQ,IACjBygD,YAAajhD,EAAIQ,IACjB2gD,yBAA0BnhD,EAAIQ,IAC9BqsC,UAAW7sC,EAAIQ,IACf0gD,yBAA0BlhD,EAAIQ,IAC9BssC,UAAW9sC,EAAIe,MAEXspG,EAAOrqG,EAAIE,OAAO,CACtB2F,QAAS7F,EAAIiC,IAAIqtJ,GACjB7mH,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEfwnI,EAAWhoI,EAAIkB,QAAQ,CAAEO,GAAI4oG,EAAM3oG,IAAKrC,IACxC4oI,EAAWjoI,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIiC,IAAIqtJ,GACZ5tJ,IAAKrC,IAED8mI,EAAWnmI,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIE,OAAO,CAAE0hD,SAAU5hD,EAAIQ,IAAKqhD,SAAU7hD,EAAIQ,MAClDkB,IAAKrC,IAEDkwJ,EAAmBvvJ,EAAIE,OAAO,CAClC0L,MAAO3L,EACP0sD,KAAM3sD,EAAIe,IACVioD,KAAMhpD,EAAIiB,UACVsqC,OAAQvrC,EAAIQ,MAERgmI,EAAWxmI,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIQ,IAAK+uJ,IAC/B7tJ,IAAKrC,IAEDmwJ,GAAwBxvJ,EAAIE,OAAO,CACvCowC,WAAYtwC,EAAIQ,IAChBksJ,eAAgB1sJ,EAAII,KACpBusJ,eAAgB3sJ,EAAII,OAEhBqvJ,GAAezvJ,EAAIE,OAAO,CAC9BK,IAAKP,EAAIQ,IACTK,IAAKb,EAAII,KACTK,aAAcT,EAAIQ,IAClB81B,KAAMt2B,EAAIe,IACV8rC,UAAW7sC,EAAIQ,IACfE,OAAQT,EACRU,OAAQV,EACRyvJ,oBAAqB1vJ,EAAIQ,IACzBmvJ,eAAgB3vJ,EAAIQ,MAEhBimI,GAAWzmI,EAAIkB,QAAQ,CAAEO,GAAIguJ,GAAc/tJ,IAAKrC,IAChDuwJ,GAAW5vJ,EAAIE,OAAO,CAC1BK,IAAKP,EAAIQ,IACTusC,UAAW/sC,EAAIe,IACfL,OAAQV,EAAII,KACZO,OAAQX,EAAII,KACZssJ,eAAgB1sJ,EAAII,KACpBusJ,eAAgB3sJ,EAAII,KACpB0sC,UAAW9sC,EAAIe,MAEX8uJ,GAAW7vJ,EAAIE,OAAO,CAC1B05C,SAAU55C,EAAII,KACdw+C,WAAY5+C,EAAI2C,KAChB2+C,iBAAkBthD,EAAII,OAElBymI,GAAW7mI,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIE,OAAO,CAAE8gD,YAAahhD,EAAIQ,IAAKygD,YAAajhD,EAAIQ,MACxDkB,IAAKrC,IAEDgqG,GAAWrpG,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIe,IAAKW,IAAKrC,IAC3C8nJ,GAAennJ,EAAIE,OAAO,CAC9BK,IAAKP,EAAIQ,IACToL,MAAO5L,EAAII,KACXmrC,OAAQvrC,EAAIQ,MAEd,OAAOR,EAAIkC,QAAQ,CACjB4tJ,gBAAiB9vJ,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAIQ,KAAM,CAACsrJ,GAAY,CAAC,UAC5DiE,gBAAiB/vJ,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIQ,KAAM,CAACsB,GAAW,IAChEkuJ,mBAAoBhwJ,EAAIoC,KAAK,CAACpC,EAAIiC,IAAIjC,EAAIQ,MAAO,CAACurJ,GAAY,CAAC,UAC/DkE,yBAA0BjwJ,EAAIoC,KAC5B,CAACpC,EAAIiB,UAAWjB,EAAIQ,KACpB,CAACsB,GACD,CAAC,UAEH0wH,MAAOxyH,EAAIoC,KAAK,CAAC+pJ,GAAY,CAACC,GAAY,IAC1C75B,kBAAmBvyH,EAAIoC,KAAK,CAACiqJ,GAAwB,CAACD,GAAY,IAClEz5G,QAAS3yC,EAAIoC,KAAK,CAAC8kJ,GAAc,CAACllJ,GAAS,IAC3CkuJ,kBAAmBlwJ,EAAIoC,KAAK,CAACkqJ,GAAqB,CAACtqJ,GAAS,IAC5D4wC,YAAa5yC,EAAIoC,KAAK,CAAC8kJ,GAAc,CAACllJ,GAAS,IAC/CmuJ,qBAAsBnwJ,EAAIoC,KAAK,GAAI,CAACwqJ,GAAY,CAAC,UACjDlH,UAAW1lJ,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,CAAC,UACnDwB,qBAAsBzC,EAAIoC,KACxB,GACA,CACEpC,EAAIE,OAAO,CACTwC,UAAW1C,EAAIiC,IAAIjC,EAAIiB,WACvBY,UAAW7B,EAAI2C,QAGnB,CAAC,UAEHytJ,YAAapwJ,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAII,OAAQ,CAAC,UAChDwC,aAAc5C,EAAIoC,KAAK,GAAI,CAACyqJ,GAAY,IACxCwD,sBAAuBrwJ,EAAIoC,KAAK,CAACnC,GAAQ,CAAC+B,GAAS,IACnDsuJ,YAAatwJ,EAAIoC,KAAK,CAAC0qJ,GAAkB,CAACE,GAAY,CAAC,UACvDuD,aAAcvwJ,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAIQ,KAAM,CAAC2sJ,GAAY,CAAC,UACzDrkF,aAAc9oE,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAACgtJ,GAAY,CAAC,UACjDoD,mBAAoBxwJ,EAAIoC,KAAK,GAAI,CAACorJ,GAAY,CAAC,UAC/CiD,aAAczwJ,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAIQ,KAAM,CAACknJ,GAAY,CAAC,UACzDgJ,SAAU1wJ,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAIQ,KAAM,CAAConJ,GAAY,CAAC,UACrD+I,oBAAqB3wJ,EAAIoC,KAAK,GAAI,CAAC8lJ,GAAY,CAAC,UAChDj+G,gBAAiBjqC,EAAIoC,KACnB,GACA,CAACpC,EAAIE,OAAO,CAAEQ,OAAQV,EAAIQ,IAAKG,OAAQX,EAAIQ,OAC3C,IAEFowJ,aAAc5wJ,EAAIoC,KAChB,GACA,CACEpC,EAAIE,OAAO,CACTQ,OAAQV,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAM0V,IACpCnV,OAAQX,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAM0V,OAGxC,IAEF+6I,gBAAiB7wJ,EAAIoC,KAAK,GAAI,CAACkmJ,GAAY,CAAC,UAC5CwI,oBAAqB9wJ,EAAIoC,KAAK,CAACpC,EAAIQ,KAAM,CAACgB,GAAW,CAAC,UACtDuvJ,gBAAiB/wJ,EAAIoC,KAAK,CAACpC,EAAIQ,KAAM,CAAC+nJ,GAAY,CAAC,UACnD5nI,mBAAoB3gB,EAAIoC,KAAK,GAAI,CAAComJ,GAAY,CAAC,UAC/CloG,8BAA+BtgD,EAAIoC,KACjC,CAACpC,EAAIiB,WACL,CAACwnJ,GACD,CAAC,UAEHuI,+BAAgChxJ,EAAIoC,KAClC,CAACpC,EAAIQ,IAAKR,EAAIQ,KACd,CAACsnI,GACD,CAAC,UAEHmpB,iBAAkBjxJ,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAIQ,KAAM,CAACwnI,GAAW,CAAC,UAC5DkpB,4BAA6BlxJ,EAAIoC,KAC/B,CAACpC,EAAIiB,WACL,CAACgnI,GACD,CAAC,UAEHkpB,qBAAsBnxJ,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACklI,GAAW,CAAC,UAC7DmlB,WAAYtrJ,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UACtCgxJ,oBAAqBpxJ,EAAIoC,KAAK,GAAI,CAACokI,GAAW,CAAC,UAC/C9T,kBAAmB1yH,EAAIoC,KAAK,CAACotJ,IAAwB,CAACxtJ,GAAS,IAC/D+iE,KAAM/kE,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAIe,IAAKf,EAAIQ,KAAM,GAAI,IAChDqmC,SAAU7mC,EAAIoC,KAAK,GAAI,CAACqkI,IAAW,CAAC,UACpCr4C,KAAMpuF,EAAIoC,KAAK,CAACwtJ,IAAW,CAAC5tJ,GAAS,IACrCw3C,MAAOx5C,EAAIoC,KAAK,CAACytJ,IAAW,CAAC7tJ,GAAS,CAAC,UACvCqvJ,YAAarxJ,EAAIoC,KAAK,CAACytJ,IAAW,CAAC7tJ,GAAS,CAAC,UAC7CsvJ,cAAetxJ,EAAIoC,KAAK,CAACpC,EAAIQ,KAAM,CAACqmI,IAAW,CAAC,UAChD0qB,uBAAwBvxJ,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAI2C,MAAO,GAAI,IAC1D6uJ,uBAAwBxxJ,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAI2C,MAAO,GAAI,IAC1D8uJ,sBAAuBzxJ,EAAIoC,KACzB,CAACpC,EAAIQ,IAAKR,EAAIQ,IAAKR,EAAIQ,IAAKR,EAAIQ,KAChC,GACA,IAEFwlJ,UAAWhmJ,EAAIoC,KAAK,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,GAAI,IAClDgC,aAAcjD,EAAIoC,KAAK,CAACpC,EAAI2C,MAAO,GAAI,IACvCU,aAAcrD,EAAIoC,KAAK,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,GAAI,IACrDywJ,QAAS1xJ,EAAIoC,KAAK,GAAI,CAACinG,IAAW,CAAC,UACnClb,KAAMnuF,EAAIoC,KAAK,CAACytJ,IAAW,CAAC7tJ,GAAS,IACrC2vJ,iBAAkB3xJ,EAAIoC,KACpB,CAACpC,EAAIiB,UAAWjB,EAAIiB,UAAWjB,EAAIQ,KACnC,CAACsB,GACD,IAEF8vJ,qBAAsB5xJ,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACO,GAAW,IAC5D+vC,SAAUvxC,EAAIoC,KAAK,CAAC+kJ,IAAe,CAACnlJ,GAAS,IAC7C6vJ,2BAA4B7xJ,EAAIoC,KAAK,CAACnC,GAAQ,CAAC+B,GAAS,KACxD,EC/ZSlC,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMV,EAAQW,EAAIkB,QAAQ,CACxBC,YAAanB,EAAIoB,KACjBC,cAAerB,EAAII,KACnBkB,iBAAkBtB,EAAII,KACtBmB,kBAAmBvB,EAAIoB,OAEnBY,EAAShC,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAI2C,KAAMjB,IAAKrC,IAC1CgqG,EAAWrpG,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIiC,IAAIjC,EAAIiB,WAChBS,IAAKrC,IAEDsC,EAAY3B,EAAIE,OAAO,CAAE0B,QAAS5B,EAAIQ,IAAKqB,UAAW7B,EAAIQ,MAC1DsB,EAAW9B,EAAIkB,QAAQ,CAAEO,GAAIE,EAAWD,IAAKrC,IAC7CmC,EAAWxB,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIiC,IAAIjC,EAAII,MAAOsB,IAAKrC,IAa3D,OAZsBW,EAAIkC,QAAQ,CAChC4vJ,UAAW9xJ,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC4B,GAAS,IAC1CqzH,eAAgBr1H,EAAIoC,KAAK,GAAI,CAACinG,GAAW,CAAC,UAC1CzmG,aAAc5C,EAAIoC,KAAK,GAAI,CAACN,GAAW,IACvCgB,SAAU9C,EAAIoC,KAAK,GAAI,CAACZ,GAAW,CAAC,UACpCuwJ,aAAc/xJ,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAACoB,GAAW,CAAC,UAChDwwJ,gBAAiBhyJ,EAAIoC,KAAK,CAACpC,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAII,KAAMJ,EAAIiC,IAAIjC,EAAII,SAAU,GAAI,IACjF6xJ,aAAcjyJ,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC4B,GAAS,IAC7CkwJ,yBAA0BlyJ,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC4B,GAAS,IACzDoB,UAAWpD,EAAIoC,KAAK,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,GAAI,IAClDkxJ,cAAenyJ,EAAIoC,KAAK,GAAI,GAAI,KAEd,EC3BTtC,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM0oJ,EAAYzoJ,EAAIkB,QAAQ,CAC5BO,GAAIzB,EAAIiC,IAAIjC,EAAIiB,WAChBS,IAAK1B,EAAII,OAELgyJ,EAAepyJ,EAAIE,OAAO,CAC9BmyJ,SAAUryJ,EAAIi8G,QACdq2C,SAAUtyJ,EAAIi8G,QACd1yE,KAAMvpC,EAAIiB,UACVsxJ,UAAWvyJ,EAAIi8G,UAEX6rB,EAAY9nI,EAAIkB,QAAQ,CAAEO,GAAI2wJ,EAAc1wJ,IAAK1B,EAAII,OACrDoyJ,EAAoBxyJ,EAAIE,OAAO,CACnCkyE,IAAKpyE,EAAIi8G,QACTw2C,aAAczyJ,EAAIQ,IAClBkyJ,gBAAiB1yJ,EAAIQ,IACrBkO,MAAO1O,EAAIi8G,QACX02C,mBAAoB3yJ,EAAIQ,IACxBoyJ,KAAM5yJ,EAAIi8G,QACV1yE,KAAMvpC,EAAIiB,UACVqvC,WAAYtwC,EAAIQ,IAChB6sC,aAAcrtC,EAAIQ,IAClBqyJ,eAAgB7yJ,EAAIi8G,QACpB62C,MAAO9yJ,EAAIQ,IACXgtC,aAAcxtC,EAAIQ,IAClBuyJ,gBAAiB/yJ,EAAIQ,IACrBwyJ,mBAAoBhzJ,EAAIQ,IACxByyJ,eAAgBjzJ,EAAIi8G,UAEhB+rB,EAAWhoI,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIiC,IAAIuwJ,GACZ9wJ,IAAK1B,EAAII,OAEL8yJ,EAAalzJ,EAAIE,OAAO,CAC5BizJ,WAAYnzJ,EAAIi8G,QAChB1yE,KAAMvpC,EAAIiB,UACVmyJ,aAAcpzJ,EAAIi8G,QAClBo3C,aAAcrzJ,EAAIi8G,QAClBq3C,YAAatzJ,EAAIi8G,QACjBs3C,YAAavzJ,EAAIi8G,QACjBu3C,YAAaxzJ,EAAIi8G,UAEbgsB,EAAWjoI,EAAIkB,QAAQ,CAAEO,GAAIyxJ,EAAYxxJ,IAAK1B,EAAII,OAClDqzJ,EAAqBzzJ,EAAIE,OAAO,CACpCwzJ,qBAAsB1zJ,EAAIQ,IAC1BmzJ,cAAe3zJ,EAAIiC,IAAIjC,EAAII,MAC3BwzJ,aAAc5zJ,EAAIQ,IAClBqzJ,WAAY7zJ,EAAI2C,KAChBmxJ,gBAAiB9zJ,EAAII,KACrB2zJ,oBAAqB/zJ,EAAIQ,IACzBwzJ,MAAOh0J,EAAII,KACX6zJ,MAAOj0J,EAAII,KACX8zJ,MAAOl0J,EAAII,KACX+zJ,MAAOn0J,EAAII,KACXg0J,MAAOp0J,EAAII,KACXi0J,wBAAyBr0J,EAAIQ,IAC7B8zJ,WAAYt0J,EAAIQ,IAChB+zJ,qBAAsBv0J,EAAI2C,KAC1B6xJ,QAASx0J,EAAIQ,MAETi0J,EAAkBz0J,EAAIE,OAAO,CACjCyzJ,cAAe3zJ,EAAIiC,IAAIjC,EAAII,MAC3BwzJ,aAAc5zJ,EAAIQ,IAClBqzJ,WAAY7zJ,EAAI2C,KAChBmxJ,gBAAiB9zJ,EAAII,KACrB2zJ,oBAAqB/zJ,EAAIQ,IACzBk0J,YAAa10J,EAAIQ,IACjBwzJ,MAAOh0J,EAAII,KACX6zJ,MAAOj0J,EAAII,KACX8zJ,MAAOl0J,EAAII,KACX+zJ,MAAOn0J,EAAII,KACXu0J,uBAAwB30J,EAAIQ,IAC5B8zJ,WAAYt0J,EAAIQ,IAChBo0J,kBAAmB50J,EAAI2C,KACvB6xJ,QAASx0J,EAAIQ,MAETq0J,EAAa70J,EAAIE,OAAO,CAC5BwzJ,qBAAsB1zJ,EAAIQ,IAC1Bs0J,qBAAsB90J,EAAIQ,IAC1Bu0J,cAAe/0J,EAAIQ,IACnBqzJ,WAAY7zJ,EAAI2C,KAChB+xJ,YAAa10J,EAAIQ,IACjBw0J,iBAAkBh1J,EAAI2C,KACtBsyJ,qBAAsBj1J,EAAIQ,IAC1B00J,mBAAoBl1J,EAAIQ,IACxBm0J,uBAAwB30J,EAAIQ,IAC5B8zJ,WAAYt0J,EAAIQ,IAChB20J,wBAAyBn1J,EAAIQ,IAC7B+zJ,qBAAsBv0J,EAAI2C,KAC1ByyJ,wBAAyBp1J,EAAIQ,IAC7Bo0J,kBAAmB50J,EAAI2C,KACvB6xJ,QAASx0J,EAAIQ,MAET2lI,EAAWnmI,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIiC,IACNjC,EAAIE,OAAO,CACTkyE,IAAKpyE,EAAIi8G,QACTw2C,aAAczyJ,EAAIQ,IAClBsyJ,MAAO9yJ,EAAIQ,IACXqa,OAAQ7a,EAAII,QAGhBsB,IAAK1B,EAAII,OAELi1J,EAAuBr1J,EAAIE,OAAO,CACtCy6H,IAAK36H,EAAIi8G,QACTw2C,aAAczyJ,EAAIQ,IAClB80J,aAAct1J,EAAIi8G,QAClBs5C,aAAcv1J,EAAIi8G,QAClBiY,UAAWl0H,EAAIi8G,QACf2e,KAAM56H,EAAIi8G,QACVlmF,MAAO/1B,EAAIi8G,QACXxvG,KAAMzM,EAAIi8G,QACVruE,YAAa5tC,EAAIi8G,QACjBoY,UAAWr0H,EAAIi8G,QACfqY,QAASt0H,EAAIi8G,QACbyc,OAAQ14H,EAAIi8G,QACZu5C,mBAAoBx1J,EAAIi8G,QACxBuY,QAASx0H,EAAIe,IACb00J,eAAgBz1J,EAAII,KACpB0yJ,MAAO9yJ,EAAIQ,IACXk1J,eAAgB11J,EAAII,KACpBu1J,mBAAoB31J,EAAIi8G,QACxBvuE,YAAa1tC,EAAIi8G,QACjBphG,OAAQ7a,EAAII,OAER2nI,EAAS/nI,EAAIE,OAAO,CACxB2F,QAAS7F,EAAIiC,IAAIozJ,GACjB5sH,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEfgmI,EAAWxmI,EAAIkB,QAAQ,CAAEO,GAAIsmI,EAAQrmI,IAAK1B,EAAII,OAC9CqmI,EAAWzmI,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIiC,IACNjC,EAAIE,OAAO,CACTuyJ,aAAczyJ,EAAIQ,IAClBo3C,MAAO53C,EAAIi8G,QACX25C,OAAQ51J,EAAIQ,IACZsyJ,MAAO9yJ,EAAIQ,IACXqa,OAAQ7a,EAAIiB,aAGhBS,IAAK1B,EAAII,OAELymI,EAAW7mI,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIiC,IACNjC,EAAIE,OAAO,CACTkyE,IAAKpyE,EAAIi8G,QACTw2C,aAAczyJ,EAAIQ,IAClB8vC,WAAYtwC,EAAIQ,IAChBsyJ,MAAO9yJ,EAAIQ,IACXqa,OAAQ7a,EAAIiB,aAGhBS,IAAK1B,EAAII,OAELmmI,EAASvmI,EAAIE,OAAO,CACxB2F,QAAS7F,EAAIiC,IAAIuwJ,GACjB/pH,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEf6oG,EAAWrpG,EAAIkB,QAAQ,CAAEO,GAAI8kI,EAAQ7kI,IAAK1B,EAAII,OAC9C0B,EAAW9B,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIiC,IACNjC,EAAIE,OAAO,CACTuyJ,aAAczyJ,EAAIQ,IAClBoyJ,KAAM5yJ,EAAIi8G,QACV3rE,WAAYtwC,EAAIQ,IAChBsyJ,MAAO9yJ,EAAIQ,IACXqa,OAAQ7a,EAAIiB,aAGhBS,IAAK1B,EAAII,OAELoB,EAAWxB,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIiC,IACNjC,EAAIE,OAAO,CACTuyJ,aAAczyJ,EAAIQ,IAClBkO,MAAO1O,EAAIi8G,QACX3rE,WAAYtwC,EAAIQ,IAChBsyJ,MAAO9yJ,EAAIQ,IACXqa,OAAQ7a,EAAIiB,aAGhBS,IAAK1B,EAAII,OAELiqG,EAAOrqG,EAAIE,OAAO,CACtB2F,QAAS7F,EAAIiC,IAAIixJ,GACjBzqH,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEfwB,EAAShC,EAAIkB,QAAQ,CAAEO,GAAI4oG,EAAM3oG,IAAK1B,EAAII,OAChD,OAAOJ,EAAIkC,QAAQ,CACjBunG,aAAczpG,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,IACtCklJ,UAAW1lJ,EAAIoC,KAAK,GAAI,CAACqmJ,GAAY,CAAC,UACtCoN,gBAAiB71J,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAAC6mI,GAAY,CAAC,UACzDguB,kBAAmB91J,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIQ,KAAM,CAACwnI,GAAW,CAAC,UACnE+tB,cAAe/1J,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACgnI,GAAW,CAAC,UACtDuJ,QAASxxI,EAAIoC,KAAK,GAAI,CAACqxJ,GAAqB,CAAC,UAC7CuC,aAAch2J,EAAIoC,KAAK,GAAI,CAACqyJ,GAAkB,CAAC,UAC/CwB,UAAWj2J,EAAIoC,KAAK,GAAI,CAACyyJ,GAAa,CAAC,UACvCqB,aAAcl2J,EAAIoC,KAAK,GAAI,CAACpC,EAAI2C,MAAO,CAAC,UACxCwzJ,iBAAkBn2J,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACklI,GAAW,CAAC,UACzDiwB,uBAAwBp2J,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAIQ,KAAM,CAACgmI,GAAW,CAAC,UAClE6vB,mBAAoBr2J,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACwlI,GAAW,CAAC,UAC3D6vB,qBAAsBt2J,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIQ,KAAM,CAACqmI,GAAW,CAAC,UACtE0vB,2BAA4Bv2J,EAAIoC,KAAK,CAACpC,EAAIspG,IAAItpG,EAAII,MAAOJ,EAAIQ,IAAKR,EAAIQ,KAAM,CAAC6oG,GAAW,CAAC,UACzFmtD,sBAAuBx2J,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIQ,KAAM,CAACsB,GAAW,CAAC,UACvE20J,uBAAwBz2J,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIQ,KAAM,CAACgB,GAAW,CAAC,UACxEk1J,oBAAqB12J,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAIQ,KAAM,CAACwB,GAAS,CAAC,UAC7DgkJ,UAAWhmJ,EAAIoC,KAAK,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,GAAI,IAClD01J,aAAc32J,EAAIoC,KAAK,CAACpC,EAAI2C,MAAO,CAAC3C,EAAI2C,MAAO,IAC/Ci0J,qBAAsB52J,EAAIoC,KAAK,GAAI,GAAI,IACvCy0J,kBAAmB72J,EAAIoC,KAAK,GAAI,GAAI,IACpC00J,iBAAkB92J,EAAIoC,KAAK,GAAI,GAAI,KACnC,ECxMS20J,GAAWj0G,GACtBv/C,EAAMC,OAAgB,CACpBC,UAAWC,EAAUk7B,gBACrBkkB,WACAhjD,WAAYk3J,KAGHC,GAAen0G,GAC1Bv/C,EAAMC,OAAoB,CACxBC,UAAWC,EAAUC,YACrBm/C,WACAhjD,WAAYo3J,KAGH72G,GAAWA,CAACr/C,EAAoB8hD,IAC3Cv/C,EAAMC,OAAiB,CACrBs/C,WACA9hD,aACAlB,WAAYq3J,KASHC,GAAgBt0G,GAC3Bv/C,EAAMC,OAAsB,CAC1BC,UAAWC,EAAUkpC,SACrB9sC,WAAYu3J,GACZv0G,aAGSw0G,GAAiBA,IAC5B/zJ,EAAMC,OAA8B,CAClCC,UAAWC,EAAU6zJ,eACrBz3J,WAAY03J,K,2SChDT,MAAMC,GAAyB30G,GAAmBkH,QAAA,6BACvD,OAAAzmD,EAAMC,OAA+B,CACnCs/C,WACAhjD,WAAY43J,GACZj0J,UAAWC,EAAUk8B,iB,ICXZ9/B,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAME,EAAQD,EAAIE,OAAO,CAAEC,QAASH,EAAII,KAAMC,SAAUL,EAAII,OACtDu3J,EAAiB33J,EAAIE,OAAO,CAChCw0I,UAAW10I,EAAIQ,IACfo3J,eAAgB53J,EAAIQ,IACpB49E,YAAan+E,EACb43J,QAAS73J,EAAIQ,IACbs3J,aAAc93J,EAAIQ,IAClB+oC,KAAMvpC,EAAIiB,UACV82J,SAAU/3J,EAAIiB,UACd+2J,iBAAkBh4J,EAAI2C,KACtBs1J,kBAAmBj4J,EAAIQ,IACvB03J,kBAAmBl4J,EAAIQ,MAEnBqmI,EAAW7mI,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAII,KAAMsB,IAAK1B,EAAII,OAChDf,EAAQW,EAAIkB,QAAQ,CACxBC,YAAanB,EAAIoB,KACjBC,cAAerB,EAAII,KACnBkB,iBAAkBtB,EAAII,KACtBmB,kBAAmBvB,EAAIoB,OAEnBioG,EAAWrpG,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIiC,IAAIjC,EAAIiB,WAChBS,IAAKrC,IAEDsC,EAAY3B,EAAIE,OAAO,CAAE0B,QAAS5B,EAAIQ,IAAKqB,UAAW7B,EAAIQ,MAC1DsB,EAAW9B,EAAIkB,QAAQ,CAAEO,GAAIE,EAAWD,IAAKrC,IAC7CmC,EAAWxB,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIQ,IAAKkB,IAAKrC,IAC3C2C,EAAShC,EAAIkB,QAAQ,CACzBO,GAAIzB,EAAIE,OAAO,CACbi4J,aAAcn4J,EAAIiB,UAClBm3J,cAAep4J,EAAIspG,IAAItpG,EAAIiB,WAC3Bo3J,eAAgBr4J,EAAIiB,YAEtBS,IAAKrC,IAEP,OAAOW,EAAIkC,QAAQ,CACjBo2J,mBAAoBt4J,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIiC,IAAIjC,EAAIiB,YAAa,GAAI,IAC1EuC,OAAQxD,EAAIoC,KAAK,CAACu1J,GAAiB,CAAC9wB,GAAW,IAC/C6e,UAAW1lJ,EAAIoC,KAAK,GAAI,CAACinG,GAAW,CAAC,UACrCkvD,YAAav4J,EAAIoC,KAAK,GAAI,CAACinG,GAAW,CAAC,UACvCzmG,aAAc5C,EAAIoC,KAAK,GAAI,CAACN,GAAW,IACvC4lI,OAAQ1nI,EAAIoC,KAAK,GAAI,CAACZ,GAAW,CAAC,UAClCg3J,YAAax4J,EAAIoC,KAAK,GAAI,CAACJ,GAAS,CAAC,UACrCspJ,WAAYtrJ,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UACtCq4J,sBAAuBz4J,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIiC,IAAIjC,EAAIiB,YAAa,GAAI,IAC7E+kJ,UAAWhmJ,EAAIoC,KAAK,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,GAAI,IAClDy3J,cAAe14J,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIiC,IAAIjC,EAAIiB,YAAa,GAAI,IACrE2mD,OAAQ5nD,EAAIoC,KAAK,CAACpC,EAAIQ,KAAM,GAAI,KAChC,ECjDSV,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMV,EAAQW,EAAIkB,QAAQ,CACxBC,YAAanB,EAAIoB,KACjBC,cAAerB,EAAII,KACnBkB,iBAAkBtB,EAAII,KACtBmB,kBAAmBvB,EAAIoB,OAEnBY,EAAShC,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAII,KAAMsB,IAAKrC,IAC1C2tJ,EAAYhtJ,EAAIkB,QAAQ,CAC5BO,GAAIzB,EAAIE,OAAO,CACby4J,oBAAqB34J,EAAIi8G,QACzB28C,oBAAqB54J,EAAIi8G,QACzB48C,yBAA0B74J,EAAIi8G,QAC9B68C,UAAW94J,EAAIi8G,UAEjBv6G,IAAKrC,IAED8tJ,EAAYntJ,EAAIkB,QAAQ,CAC5BO,GAAIzB,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIQ,IAAKR,EAAIi8G,UACnCv6G,IAAKrC,IAED+tJ,EAAYptJ,EAAIkB,QAAQ,CAC5BO,GAAIzB,EAAIiC,IAAIjC,EAAIiB,WAChBS,IAAKrC,IAEDmuJ,EAAYxtJ,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIi8G,QAASv6G,IAAKrC,IAChDsC,EAAY3B,EAAIE,OAAO,CAAE0B,QAAS5B,EAAIQ,IAAKqB,UAAW7B,EAAIQ,MAC1DknJ,EAAY1nJ,EAAIkB,QAAQ,CAAEO,GAAIE,EAAWD,IAAKrC,IAC9C05J,EAAU/4J,EAAIE,OAAO,CACzB6sC,UAAW/sC,EAAIe,IACf+2J,aAAc93J,EAAIQ,IAClBkrC,MAAO1rC,EAAIiB,UACX4rC,UAAW7sC,EAAIQ,IACfw4J,SAAUh5J,EAAIQ,IACdy4J,mBAAoBj5J,EAAIQ,IACxB8vC,WAAYtwC,EAAIQ,IAChB6sC,aAAcrtC,EAAIe,IAClBm4J,OAAQl5J,EAAIiB,UACZusC,aAAcxtC,EAAIe,IAClB+rC,UAAW9sC,EAAIe,MAEX6mJ,EAAY5nJ,EAAIkB,QAAQ,CAAEO,GAAIs3J,EAASr3J,IAAKrC,IAC5C85J,EAAmBn5J,EAAIE,OAAO,CAClCk5J,YAAap5J,EAAIQ,IACjBkrC,MAAO1rC,EAAIiB,UACXqvC,WAAYtwC,EAAIQ,IAChBwpF,UAAWhqF,EAAIQ,IACf64J,aAAcr5J,EAAIQ,MAEdunI,EAAS/nI,EAAIE,OAAO,CACxB2F,QAAS7F,EAAIiC,IAAIk3J,GACjB1wH,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEf0nJ,EAAYloJ,EAAIkB,QAAQ,CAAEO,GAAIsmI,EAAQrmI,IAAK1B,EAAII,OAC/Ck5J,EAAat5J,EAAIkB,QAAQ,CAC7B8mC,KAAMhoC,EAAIoB,KACVskG,YAAa1lG,EAAIoB,KACjB8mC,OAAQloC,EAAIoB,KACZ6mC,SAAUjoC,EAAIoB,OAEVnB,EAAQD,EAAIE,OAAO,CAAEC,QAASH,EAAII,KAAMC,SAAUL,EAAII,OACtDm5J,EAAWv5J,EAAIE,OAAO,CAC1Bw0I,UAAW10I,EAAIQ,IACfuoB,OAAQuwI,EACRltB,QAASpsI,EAAIiB,UACbu4J,qBAAsBx5J,EAAIQ,IAC1Bi5J,eAAgBz5J,EAAIQ,IACpB49E,YAAan+E,EACb43J,QAAS73J,EAAIQ,IACbk5J,mBAAoB15J,EAAIQ,IACxB+oC,KAAMvpC,EAAIiB,UACV82J,SAAU/3J,EAAIiB,UACd04J,WAAY15J,EACZ25J,WAAY35J,EACZuzH,QAASxzH,EAAIQ,IACbq5J,uBAAwB75J,EAAIQ,IAC5Bs5J,YAAa95J,EAAIQ,IACjBu5J,mBAAoB/5J,EAAIQ,IACxBkgB,YAAa1gB,EAAIiC,IAAIjC,EAAIQ,OAErB8nJ,EAAYtoJ,EAAIkB,QAAQ,CAAEO,GAAI83J,EAAU73J,IAAKrC,IAC7C26J,EAAeh6J,EAAIE,OAAO,CAC9BK,IAAKP,EAAIQ,IACTk0I,UAAW10I,EAAIQ,IACfuoB,OAAQuwI,EACR1B,eAAgB53J,EAAIQ,IACpB4rI,QAASpsI,EAAIiB,UACbg5J,aAAcj6J,EAAIiB,UAClBk3J,aAAcn4J,EAAIiB,UAClBm9E,YAAan+E,EACb43J,QAAS73J,EAAIQ,IACb+oC,KAAMvpC,EAAIiB,UACV82J,SAAU/3J,EAAIiB,UACdm3J,cAAep4J,EAAIspG,IAAItpG,EAAIiB,WAC3B+2J,iBAAkBh4J,EAAI2C,KACtBs1J,kBAAmBj4J,EAAIQ,IACvB03J,kBAAmBl4J,EAAIQ,IACvBs5J,YAAa95J,EAAIQ,IACjB05J,eAAgBl6J,EAAIiB,UACpBo3J,eAAgBr4J,EAAIiB,YAEhBsnJ,EAAYvoJ,EAAIkB,QAAQ,CAAEO,GAAIu4J,EAAct4J,IAAKrC,IACjDmpJ,EAAYxoJ,EAAIkB,QAAQ,CAC5BO,GAAIzB,EAAIE,OAAO,CACb83J,iBAAkBh4J,EAAI2C,KACtBw3J,iBAAkBn6J,EAAIQ,IACtBy3J,kBAAmBj4J,EAAIQ,IACvB03J,kBAAmBl4J,EAAIQ,MAEzBkB,IAAKrC,IAEDopJ,EAAYzoJ,EAAIkB,QAAQ,CAC5BO,GAAIzB,EAAIE,OAAO,CACbk6J,iBAAkBp6J,EAAIQ,IACtB65J,eAAgBr6J,EAAIQ,IACpB85J,iBAAkBt6J,EAAIQ,MAExBkB,IAAKrC,IAEDyoI,EAAY9nI,EAAIkB,QAAQ,CAC5BO,GAAIzB,EAAIE,OAAO,CACbq6J,iBAAkBv6J,EAAII,KACtBo6J,iBAAkBx6J,EAAII,KACtBq6J,mBAAoBz6J,EAAIQ,IACxBk6J,mBAAoB16J,EAAIQ,IACxBm5J,WAAY35J,EAAIE,OAAO,CACrBC,QAASH,EAAII,KACbC,SAAUL,EAAII,OAEhBw5J,WAAY55J,EAAIE,OAAO,CACrBC,QAASH,EAAII,KACbC,SAAUL,EAAII,SAGlBsB,IAAKrC,IAED2oI,EAAWhoI,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIiC,IAAIjC,EAAIQ,KAAMkB,IAAKrC,IACpDmC,EAAWxB,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIQ,IAAKkB,IAAKrC,IAC3C4oI,EAAWjoI,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIE,OAAO,CACb03J,eAAgB53J,EAAIQ,IACpBg5J,qBAAsBx5J,EAAIQ,IAC1Bk5J,mBAAoB15J,EAAIQ,IACxBm6J,eAAgB36J,EAAIQ,IACpBo6J,eAAgB56J,EAAIQ,IACpBq6J,eAAgB76J,EAAIQ,IACpBs6J,gBAAiB96J,EAAIQ,IACrBq5J,uBAAwB75J,EAAIQ,IAC5Bu6J,kBAAmB/6J,EAAIQ,IACvBs5J,YAAa95J,EAAIQ,IACjBw6J,oBAAqBh7J,EAAIQ,MAE3BkB,IAAKrC,IAEDgoI,EAAYrnI,EAAIkB,QAAQ,CAC5BqwC,SAAUvxC,EAAIoB,KACd65J,WAAYj7J,EAAIoB,KAChB85J,QAASl7J,EAAIoB,KACb+5J,MAAOn7J,EAAIoB,KACXg6J,QAASp7J,EAAIoB,OAETi6J,EAAcr7J,EAAIE,OAAO,CAC7Bgb,GAAIlb,EAAIiB,UACRqmI,UAAWD,EACXr0F,KAAMhzC,EAAIiB,UACV4rC,UAAW7sC,EAAIQ,IACf8vC,WAAYtwC,EAAIQ,IAChBwpF,UAAWhqF,EAAIQ,IACf+qC,OAAQvrC,EAAIQ,MAER+lI,EAASvmI,EAAIE,OAAO,CACxB2F,QAAS7F,EAAIiC,IAAIo5J,GACjB5yH,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEf2lI,EAAWnmI,EAAIkB,QAAQ,CAAEO,GAAI8kI,EAAQ7kI,IAAK1B,EAAII,OAC9Ck7J,EAAct7J,EAAIE,OAAO,CAC7BC,QAASH,EAAII,KACbmrC,OAAQvrC,EAAIQ,IACZH,SAAUL,EAAII,OAEVm7J,EAAMv7J,EAAIE,OAAO,CACrBy5J,WAAY2B,EACZ1B,WAAY0B,IAER90B,EAAWxmI,EAAIkB,QAAQ,CAAEO,GAAI85J,EAAK75J,IAAKrC,IACvC2vJ,EAAchvJ,EAAIE,OAAO,CAC7Bgb,GAAIlb,EAAIiB,UACRV,IAAKP,EAAIQ,IACT+G,OAAQvH,EAAII,KACZwL,MAAO3L,EACP41B,OAAQ71B,EAAII,KACZ6uJ,iBAAkBjvJ,EAAIQ,IACtBkrC,MAAO1rC,EAAIiB,UACX+xC,KAAMhzC,EAAIiB,UACViuJ,eAAgBlvJ,EAAIspG,IAAItpG,EAAIiC,IAAIjC,EAAIqmD,OACpC2jC,UAAWhqF,EAAIQ,IACfuO,MAAO/O,EAAIQ,IACX+qC,OAAQvrC,EAAIQ,IACZ2uJ,SAAUnvJ,EAAII,OAEVqmI,EAAWzmI,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIiC,IAAI+sJ,GAActtJ,IAAKrC,IACxDwnI,EAAW7mI,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIiC,IAAI82J,GAAUr3J,IAAKrC,IACpDgrG,EAAOrqG,EAAIE,OAAO,CACtB2F,QAAS7F,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIiB,UAAWjB,EAAIQ,MAC9CioC,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEf6oG,EAAWrpG,EAAIkB,QAAQ,CAAEO,GAAI4oG,EAAM3oG,IAAKrC,IACxCyC,EAAW9B,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIE,OAAO,CACby5J,WAAY2B,EACZ1B,WAAY0B,IAEd55J,IAAKrC,IAEP,OAAOW,EAAIkC,QAAQ,CACjBs5J,cAAex7J,EAAIoC,KAAK,GAAI,GAAI,IAChC2zB,MAAO/1B,EAAIoC,KAAK,GAAI,CAACJ,GAAS,IAC9By5J,eAAgBz7J,EAAIoC,KAAK,GAAI,CAACJ,GAAS,IACvC05J,YAAa17J,EAAIoC,KAAK,GAAI,CAAC4qJ,GAAY,CAAC,UACxC2O,aAAc37J,EAAIoC,KAAK,GAAI,CAAC+qJ,GAAY,CAAC,UACzCzH,UAAW1lJ,EAAIoC,KAAK,GAAI,CAACgrJ,GAAY,CAAC,UACtCwO,UAAW57J,EAAIoC,KAAK,GAAI,CAACorJ,GAAY,CAAC,UACtC5qJ,aAAc5C,EAAIoC,KAAK,GAAI,CAACslJ,GAAY,IACxCmU,WAAY77J,EAAIoC,KAAK,CAACpC,EAAIQ,KAAM,CAAConJ,GAAY,CAAC,UAC9CkU,oBAAqB97J,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAIQ,IAAKR,EAAII,MAAO,CAAC8nJ,GAAY,CAAC,UAC1E6T,YAAa/7J,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAII,OAAQ,CAAC,UAChD47J,YAAah8J,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAACkoJ,GAAY,CAAC,UAChDkQ,YAAax4J,EAAIoC,KAAK,GAAI,CAACmmJ,GAAY,CAAC,UACxC0T,aAAcj8J,EAAIoC,KAAK,GAAI,CAAComJ,GAAY,CAAC,UACzC0T,iBAAkBl8J,EAAIoC,KAAK,GAAI,CAACqmJ,GAAY,CAAC,UAC7C0T,YAAan8J,EAAIoC,KAAK,GAAI,CAACpC,EAAIE,OAAO,CAAEO,aAAcT,EAAIQ,IAAK81B,KAAMt2B,EAAIe,OAAS,IAClFq7J,iBAAkBp8J,EAAIoC,KAAK,GAAI,CAAC0lI,GAAY,CAAC,UAC7Cu0B,eAAgBr8J,EAAIoC,KAAK,GAAI,CAAC4lI,GAAW,CAAC,UAC1Cs0B,cAAet8J,EAAIoC,KAAK,CAACpC,EAAIiC,IAAIjC,EAAIQ,MAAO,CAACgB,GAAW,CAAC,UACzD+6J,cAAev8J,EAAIoC,KAAK,GAAI,CAAC6lI,GAAW,CAAC,UACzCu0B,sBAAuBx8J,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,IAC/Ci8J,eAAgBz8J,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAIQ,IAAKR,EAAII,MAAO,CAAC+lI,GAAW,CAAC,UACpEu2B,OAAQ18J,EAAIoC,KAAK,GAAI,CAACokI,GAAW,CAAC,UAClCqqB,gBAAiB7wJ,EAAIoC,KAAK,GAAI,CAACqkI,GAAW,CAAC,UAC3Ck2B,gBAAiB38J,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAAC4lI,GAAW,CAAC,UACxD+1B,qBAAsB58J,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACO,GAAW,CAAC,UAC7Dq7J,sBAAuB78J,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAIQ,KAAM,CAAC6oG,GAAW,CAAC,UACjEyzD,WAAY98J,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACa,GAAW,CAAC,UACnDwpJ,WAAYtrJ,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UACtC2kE,KAAM/kE,EAAIoC,KAAK,GAAI,GAAI,IACvBmvJ,uBAAwBvxJ,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAI2C,MAAO,GAAI,IAC1Do6J,gBAAiB/8J,EAAIoC,KAAK,GAAI,CAACJ,GAAS,IACxCg7J,mBAAoBh9J,EAAIoC,KAAK,GAAI,CAACJ,GAAS,IAC3CgkJ,UAAWhmJ,EAAIoC,KAAK,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,GAAI,IAClDg8J,aAAcj9J,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAIQ,IAAKR,EAAIQ,IAAKR,EAAI2C,MAAO,GAAI,IAClEw4J,MAAOn7J,EAAIoC,KAAK,CAACpC,EAAIQ,KAAM,CAACwB,GAAS,IACrCk5J,QAASl7J,EAAIoC,KAAK,CAACpC,EAAIQ,KAAM,CAACwB,GAAS,IACvCuvC,SAAUvxC,EAAIoC,KAAK,GAAI,CAACZ,GAAW,IACnC07J,kBAAmBl9J,EAAIoC,KAAK,GAAI,CAACJ,GAAS,KAC1C,ECpQSlC,GAAaC,IAAY,IAAX,IAAEC,GAAKD,EAChC,MAAME,EAAQD,EAAIE,OAAO,CAAEC,QAASH,EAAII,KAAMC,SAAUL,EAAII,OACtD+8J,EAAmBn9J,EAAIE,OAAO,CAClCk+E,YAAan+E,EACbm9J,QAASp9J,EAAIiB,UACb04J,WAAY15J,EACZ25J,WAAY35J,EACZo9J,QAASr9J,EAAIiB,UACb64J,YAAa95J,EAAIQ,MAEbnB,EAAQW,EAAIkB,QAAQ,CACxBC,YAAanB,EAAIoB,KACjBC,cAAerB,EAAII,KACnBkB,iBAAkBtB,EAAII,KACtBmB,kBAAmBvB,EAAIoB,OAEnB6mI,EAAWjoI,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIiB,UAAWjB,EAAIiC,IAAIjC,EAAIiB,aACjDS,IAAKrC,IAED2oI,EAAWhoI,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIE,OAAO,CACb8nC,KAAMhoC,EAAIiC,IAAIjC,EAAIiB,WAClBykG,YAAa1lG,EAAIiC,IAAIjC,EAAIiB,WACzBinC,OAAQloC,EAAIiC,IAAIjC,EAAIiB,WACpBgnC,SAAUjoC,EAAIiC,IAAIjC,EAAIiB,aAExBS,IAAK1B,EAAII,OAELuB,EAAY3B,EAAIE,OAAO,CAAE0B,QAAS5B,EAAIQ,IAAKqB,UAAW7B,EAAIQ,MAC1D2lI,EAAWnmI,EAAIkB,QAAQ,CAAEO,GAAIE,EAAWD,IAAKrC,IAC7Ci+J,EAAiBt9J,EAAIE,OAAO,CAChCq9J,cAAev9J,EAAIE,OAAO,CACxBC,QAASH,EAAIiB,UACbsqC,OAAQvrC,EAAIQ,IACZH,SAAUL,EAAII,OAEhBo9J,cAAex9J,EAAIE,OAAO,CACxBC,QAASH,EAAIiB,UACbsqC,OAAQvrC,EAAIQ,IACZH,SAAUL,EAAII,OAEhBmpC,KAAMvpC,EAAIiB,UACV+3J,SAAUh5J,EAAIQ,IACds5J,YAAa95J,EAAIE,OAAO,CACtBC,QAASH,EAAIiB,UACbsqC,OAAQvrC,EAAIQ,IACZH,SAAUL,EAAII,SAGZomI,EAAWxmI,EAAIkB,QAAQ,CAAEO,GAAI67J,EAAgB57J,IAAKrC,IAClDi6J,EAAat5J,EAAIkB,QAAQ,CAC7B8mC,KAAMhoC,EAAIoB,KACVskG,YAAa1lG,EAAIoB,KACjB8mC,OAAQloC,EAAIoB,KACZ6mC,SAAUjoC,EAAIoB,OAEVqlI,EAAWzmI,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIiB,UAAWq8J,IACrC57J,IAAKrC,IAED2C,EAAShC,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIiC,IAAIjC,EAAIiB,WAAYS,IAAKrC,IACxDwnI,EAAW7mI,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIiC,IAAIjC,EAAIiB,WAChBS,IAAK1B,EAAII,OAELq9J,EAAkBz9J,EAAIE,OAAO,CACjC6oB,OAAQ/oB,EAAIspG,IAAItpG,EAAIiC,IAAIq3J,IACxBl7E,YAAap+E,EAAIspG,IAAItpG,EAAIiB,WACzBsoC,KAAMvpC,EAAIspG,IAAItpG,EAAIiB,WAClB+nD,KAAMhpD,EAAIspG,IAAItpG,EAAIiB,aAEdooG,EAAWrpG,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIiB,UAAWjB,EAAIiB,YACzCS,IAAKrC,IAEDyC,EAAW9B,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIiC,IAAIq7J,GACZ57J,IAAKrC,IAEDmC,EAAWxB,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIE,OAAO,CAAEw9J,WAAY19J,EAAIQ,IAAKm9J,gBAAiB39J,EAAIQ,MAC3DkB,IAAKrC,IAEDi8J,EAAct7J,EAAIE,OAAO,CAC7BC,QAASH,EAAII,KACbmrC,OAAQvrC,EAAIQ,IACZH,SAAUL,EAAII,OAEVm7J,EAAMv7J,EAAIE,OAAO,CACrBy5J,WAAY2B,EACZ1B,WAAY0B,IAEd,OAAOt7J,EAAIkC,QAAQ,CACjB07J,aAAc59J,EAAIoC,KAAK,CAAC+6J,GAAmB,GAAI,IAC/CU,gBAAiB79J,EAAIoC,KAAK,GAAI,CAAC6lI,GAAW,CAAC,UAC3CswB,YAAav4J,EAAIoC,KAAK,GAAI,CAAC4lI,GAAW,CAAC,UACvC81B,gBAAiB99J,EAAIoC,KAAK,GAAI,CAAC6lI,GAAW,CAAC,UAC3C81B,uBAAwB/9J,EAAIoC,KAAK,GAAI,CAAC6lI,GAAW,CAAC,UAClD+1B,gBAAiBh+J,EAAIoC,KAAK,GAAI,CAAC6lI,GAAW,CAAC,UAC3CrlI,aAAc5C,EAAIoC,KAAK,GAAI,CAAC+jI,GAAW,IACvC83B,uBAAwBj+J,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACulI,GAAW,CAAC,UAC/D03B,wBAAyBl+J,EAAIoC,KAAK,CAACpC,EAAIspG,IAAIgwD,IAAc,CAAC7yB,GAAW,CAAC,UACtE03B,aAAcn+J,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACe,GAAS,CAAC,UACnDo8J,SAAUp+J,EAAIoC,KAAK,CAACpC,EAAIspG,IAAIgwD,IAAc,CAACzyB,GAAW,CAAC,UACvDw3B,qBAAsBr+J,EAAIoC,KAAK,CAACq7J,GAAkB,CAACz7J,GAAS,CAAC,UAC7Ds8J,eAAgBt+J,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACe,GAAS,CAAC,UACrDu8J,sBAAuBv+J,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACe,GAAS,CAAC,UAC5Dw8J,oBAAqBx+J,EAAIoC,KAAK,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,CAACooG,GAAW,CAAC,UACrEo1D,mBAAoBz+J,EAAIoC,KAAK,GAAI,CAACJ,GAAS,CAAC,UAC5C08J,sBAAuB1+J,EAAIoC,KAAK,CAACk3J,GAAa,CAACx3J,GAAW,CAAC,UAC3D68J,eAAgB3+J,EAAIoC,KAAK,GAAI,CAACZ,GAAW,CAAC,UAC1Co9J,aAAc5+J,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACe,GAAS,CAAC,UACnDspJ,WAAYtrJ,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UACtCy+J,YAAa7+J,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIQ,KAAM,CAACR,EAAII,MAAO,IAC5D0+J,iBAAkB9+J,EAAIoC,KAAK,CAACk3J,GAAa,GAAI,IAC7CyF,cAAe/+J,EAAIoC,KAAK,CAACm5J,GAAM,GAAI,IACnCyD,eAAgBh/J,EAAIoC,KAAK,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,GAAI,KACvD,ECxGSg+J,GAAkBn8G,GAC7Bv/C,EAAMC,OAAuB,CAC3BC,UAAWC,EAAUq8B,eACrB+iB,WACAhjD,WAAYo/J,KAGH3uH,GAAOA,CAACvvC,EAAoB8hD,IACvCv/C,EAAMC,OAAa,CACjBC,UAAWC,EAAUq2E,KACrB/4E,aACA8hD,WACAhjD,WAAYq/J,KAWHC,GAAat8G,GACxBv/C,EAAMC,OAAkB,CACtBC,UAAWC,EAAU27J,UACrBv8G,WACAhjD,WAAYw/J,KCzCHx/J,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAME,EAAQD,EAAIE,OAAO,CAAEC,QAASH,EAAII,KAAMC,SAAUL,EAAII,OACtDm/J,EAAcv/J,EAAIE,OAAO,CAC7Bs/J,mBAAoBx/J,EAAII,KACxBs0I,UAAW10I,EAAIQ,IACfi/J,kBAAmBz/J,EAAII,KACvB+9E,aAAcl+E,EACdm+E,YAAan+E,EACby/J,cAAe1/J,EAAIQ,IACnBuI,KAAM/I,EAAII,KACVu/J,gBAAiB3/J,EAAIQ,IACrBq6J,eAAgB76J,EAAIQ,IACpBo/J,qBAAsB5/J,EAAIQ,IAC1Bq/J,aAAc7/J,EAAIQ,IAClBw6J,oBAAqBh7J,EAAIQ,MAErBioJ,EAAYzoJ,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIiB,UAAWS,IAAK1B,EAAII,OACtD0B,EAAW9B,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAI2C,KAAMjB,IAAK1B,EAAII,OAChD0/J,EAAsB9/J,EAAIE,OAAO,CACrC43J,aAAc93J,EAAIi8G,QAClB8jD,cAAe//J,EAAIi8G,QACnB+jD,iBAAkBhgK,EAAIi8G,QACtBgkD,sBAAuBjgK,EAAII,KAC3B8/J,uBAAwBlgK,EAAII,KAC5B+/J,kBAAmBngK,EAAIi8G,QACvBmkD,mBAAoBpgK,EAAIQ,IACxB6/J,kBAAmBrgK,EAAIQ,MAEnBsnI,EAAY9nI,EAAIkB,QAAQ,CAC5BO,GAAIzB,EAAIiC,IAAI69J,GACZp+J,IAAK1B,EAAII,OAELkgK,EAAkBtgK,EAAIE,OAAO,CACjCs/J,mBAAoBx/J,EAAII,KACxBs0I,UAAW10I,EAAIQ,IACfi/J,kBAAmBz/J,EAAII,KACvBgsI,QAASpsI,EAAIiB,UACbk9E,aAAcl+E,EACdm+E,YAAan+E,EACby/J,cAAe1/J,EAAIQ,IACnBuI,KAAM/I,EAAII,KACVmsI,WAAYvsI,EAAIQ,IAChBm/J,gBAAiB3/J,EAAIQ,IACrBq6J,eAAgB76J,EAAIQ,IACpBo/J,qBAAsB5/J,EAAIQ,IAC1Bq/J,aAAc7/J,EAAIQ,IAClBw6J,oBAAqBh7J,EAAIQ,IACzBQ,WAAYhB,EAAIiB,YAEZopG,EAAOrqG,EAAIE,OAAO,CACtB2F,QAAS7F,EAAIiC,IAAIq+J,GACjB73H,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEfwnI,EAAWhoI,EAAIkB,QAAQ,CAAEO,GAAI4oG,EAAM3oG,IAAK2oG,IACxChrG,EAAQW,EAAIkB,QAAQ,CACxBC,YAAanB,EAAIoB,KACjBC,cAAerB,EAAII,KACnBkB,iBAAkBtB,EAAII,KACtBmB,kBAAmBvB,EAAIoB,OAEnB6mI,EAAWjoI,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIiC,IAAIjC,EAAIiB,WAChBS,IAAKrC,IAEDsC,EAAY3B,EAAIE,OAAO,CAAE0B,QAAS5B,EAAIQ,IAAKqB,UAAW7B,EAAIQ,MAC1D2lI,EAAWnmI,EAAIkB,QAAQ,CAAEO,GAAIE,EAAWD,IAAKrC,IAC7CkhK,EAAiBvgK,EAAIE,OAAO,CAChCsgK,eAAgBxgK,EAAIi8G,QACpBwkD,gBAAiBzgK,EAAIi8G,QACrBykD,YAAa1gK,EAAIQ,IACjBmgK,yBAA0B3gK,EAAIi8G,QAC9B2kD,WAAY5gK,EAAIQ,MAEZgmI,EAAWxmI,EAAIkB,QAAQ,CAAEO,GAAI8+J,EAAgB7+J,IAAK1B,EAAII,OACtDqmI,EAAWzmI,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIE,OAAO,CACbk4J,cAAep4J,EAAIspG,IAAItpG,EAAIiB,WAC3B4/J,aAAc7gK,EAAIiB,UAClBo3J,eAAgBr4J,EAAIiB,YAEtBS,IAAKrC,IAEDwnI,EAAW7mI,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIgnD,MAAMhnD,EAAII,KAAMJ,EAAII,KAAMJ,EAAIQ,IAAKR,EAAIQ,IAAKR,EAAI2C,MACxDjB,IAAK1B,EAAII,OAELipG,EAAWrpG,EAAIkB,QAAQ,CAC3BO,GAAIq+J,EACJp+J,IAAK1B,EAAII,OAELoB,EAAWxB,EAAIkB,QAAQ,CAAEO,GAAI6+J,EAAiB5+J,IAAK1B,EAAII,OACvD4B,EAAShC,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIQ,IAAKkB,IAAK1B,EAAII,OACnD,OAAOJ,EAAIkC,QAAQ,CACjB4+J,0BAA2B9gK,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIiC,IAAIjC,EAAIiB,YAAa,GAAI,IACjF8/J,kBAAmB/gK,EAAIoC,KAAK,CAACm9J,GAAc,CAAC9W,GAAY,IACxDuY,kBAAmBhhK,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACa,GAAW,IACzDm/J,iBAAkBjhK,EAAIoC,KAAK,GAAI,CAAC0lI,GAAY,CAAC,UAC7Co5B,oBAAqBlhK,EAAIoC,KAAK,CAACpC,EAAIspG,IAAItpG,EAAIQ,KAAMR,EAAIQ,IAAKR,EAAIQ,KAAM,CAACwnI,GAAW,CAAC,UACjFm5B,sBAAuBnhK,EAAIoC,KACzB,CAACpC,EAAIspG,IAAItpG,EAAIQ,KAAMR,EAAIQ,IAAKR,EAAIQ,IAAKR,EAAIspG,IAAItpG,EAAII,MAAOJ,EAAIspG,IAAItpG,EAAII,OACpE,CAAC4nI,GACD,CAAC,UAEH0d,UAAW1lJ,EAAIoC,KAAK,GAAI,CAAC6lI,GAAW,CAAC,UACrCrlI,aAAc5C,EAAIoC,KAAK,GAAI,CAAC+jI,GAAW,IACvCi7B,cAAephK,EAAIoC,KAAK,GAAI,CAACokI,GAAW,CAAC,UACzCgyB,YAAax4J,EAAIoC,KAAK,GAAI,CAACqkI,GAAW,CAAC,UACvC46B,iBAAkBrhK,EAAIoC,KAAK,GAAI,CAACykI,GAAW,CAAC,UAC5Cy6B,gBAAiBthK,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACooG,GAAW,CAAC,UACxDk4D,eAAgBvhK,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACO,GAAW,CAAC,UACvD8pJ,WAAYtrJ,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UACtCohK,6BAA8BxhK,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIiC,IAAIjC,EAAIiB,YAAa,GAAI,IACpF+kJ,UAAWhmJ,EAAIoC,KAAK,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,GAAI,IAClDwgK,aAAczhK,EAAIoC,KAAK,CAACpC,EAAIQ,KAAM,CAACsB,GAAW,IAC9C4/J,qBAAsB1hK,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIiC,IAAIjC,EAAIiB,YAAa,GAAI,IAC5E0gK,mBAAoB3hK,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIQ,IAAKR,EAAIQ,KAAM,CAACgB,GAAW,IAC5EogK,yBAA0B5hK,EAAIoC,KAAK,CAACpC,EAAI2C,MAAO,CAACb,GAAW,IAC3D+/J,qBAAsB7hK,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACa,GAAW,IAC5DggK,gBAAiB9hK,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACO,GAAW,IACvDugK,UAAW/hK,EAAIoC,KAAK,GAAI,GAAI,IAC5B4/J,kBAAmBhiK,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACe,GAAS,KACvD,EC3HSlC,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMiC,EAAShC,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAII,KAAMsB,IAAK1B,EAAII,OAC9CinI,EAAYrnI,EAAIkB,QAAQ,CAC5BqwC,SAAUvxC,EAAIoB,KACd6gK,UAAWjiK,EAAIoB,KACfuxC,QAAS3yC,EAAIoB,KACb85J,QAASl7J,EAAIoB,KACb+5J,MAAOn7J,EAAIoB,KACXg6J,QAASp7J,EAAIoB,OAET8gK,EAAiBliK,EAAIkB,QAAQ,CACjCihK,WAAYniK,EAAIoB,KAChBg9E,YAAap+E,EAAIoB,OAEblB,EAASF,EAAIE,OAAO,CACxBgb,GAAIlb,EAAIiB,UACRu+J,mBAAoBx/J,EAAII,KACxBmH,OAAQvH,EAAII,KACZq/J,kBAAmBz/J,EAAII,KACvB+9E,aAAcn+E,EAAII,KAClBg+E,YAAap+E,EAAII,KACjBgiK,gBAAiBpiK,EAAII,KACrBknI,UAAWD,EACXr0F,KAAMhzC,EAAIiB,UACVohK,eAAgBH,EAChBI,OAAQtiK,EAAII,KACZmiK,eAAgBviK,EAAII,KACpB4pF,UAAWhqF,EAAIQ,IACfo/J,qBAAsB5/J,EAAIQ,IAC1B+qC,OAAQvrC,EAAIQ,IACZw6J,oBAAqBh7J,EAAIQ,MAErB+lI,EAASvmI,EAAIE,OAAO,CACxB2F,QAAS7F,EAAIiC,IAAI/B,GACjBuoC,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEfwnI,EAAWhoI,EAAIkB,QAAQ,CAAEO,GAAI8kI,EAAQ7kI,IAAK1B,EAAII,OAC9Cf,EAAQW,EAAIkB,QAAQ,CACxBC,YAAanB,EAAIoB,KACjBC,cAAerB,EAAII,KACnBkB,iBAAkBtB,EAAII,KACtBmB,kBAAmBvB,EAAIoB,OAEnB6mI,EAAWjoI,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIQ,IAAKN,IAC/BwB,IAAKrC,IAEDmjK,EAAiBxiK,EAAIE,OAAO,CAChCuiK,cAAeziK,EAAIQ,IACnBkiK,eAAgB1iK,EAAIQ,IACpBmiK,YAAa3iK,EAAIQ,IACjBoiK,mBAAoB5iK,EAAIQ,IACxBqiK,WAAY7iK,EAAIQ,IAChBsiK,cAAe9iK,EAAIQ,IACnBuiK,kBAAmB/iK,EAAIQ,MAEnB6pG,EAAOrqG,EAAIE,OAAO,CACtB2F,QAAS7F,EAAIiC,IAAIjC,EAAIgnD,MAAMhnD,EAAIiB,UAAWuhK,IAC1C/5H,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEf2lI,EAAWnmI,EAAIkB,QAAQ,CAAEO,GAAI4oG,EAAM3oG,IAAK1B,EAAII,OAC5ComI,EAAWxmI,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIiC,IAAIjC,EAAIiB,WAChBS,IAAKrC,IAEDsC,EAAY3B,EAAIE,OAAO,CAAE0B,QAAS5B,EAAIQ,IAAKqB,UAAW7B,EAAIQ,MAC1DimI,EAAWzmI,EAAIkB,QAAQ,CAAEO,GAAIE,EAAWD,IAAKrC,IAC7CY,EAAQD,EAAIE,OAAO,CAAEC,QAASH,EAAII,KAAMC,SAAUL,EAAII,OACtD4iK,EAAoBhjK,EAAIkB,QAAQ,CACpC+hK,QAASjjK,EAAIoB,KACb8hK,YAAaljK,EAAIoB,KACjB+hK,WAAYnjK,EAAIoB,OAEZgiK,EAAwBpjK,EAAIE,OAAO,CACvCs/J,mBAAoBx/J,EAAII,KACxBs0I,UAAW10I,EAAIQ,IACfkiK,eAAgB1iK,EAAIQ,IACpB6iK,aAAcrjK,EAAIQ,IAClBi/J,kBAAmBz/J,EAAII,KACvBgsI,QAASpsI,EAAIiB,UACbk9E,aAAcl+E,EACdm+E,YAAan+E,EACbqjK,cAAetjK,EAAIi8G,QACnByjD,cAAe1/J,EAAIQ,IACnB+iK,aAAcvjK,EAAIi8G,QAClBlzG,KAAM/I,EAAII,KACVojK,kBAAmBR,EACnBz2B,WAAYvsI,EAAIQ,IAChBm/J,gBAAiB3/J,EAAIQ,IACrBijK,UAAWzjK,EAAIQ,IACfqiK,WAAY7iK,EAAIQ,IAChBq6J,eAAgB76J,EAAIQ,IACpBkjK,YAAa1jK,EAAIQ,IACjBo/J,qBAAsB5/J,EAAIQ,IAC1Bq/J,aAAc7/J,EAAIQ,IAClBmjK,YAAa3jK,EAAIi8G,QACjB++C,oBAAqBh7J,EAAIQ,IACzB63J,eAAgBr4J,EAAIiB,YAEhBO,EAAWxB,EAAIkB,QAAQ,CAC3BO,GAAI2hK,EACJ1hK,IAAK1B,EAAII,OAELymI,EAAW7mI,EAAIkB,QAAQ,CAAEO,GAAI+gK,EAAgB9gK,IAAK1B,EAAII,OACtD0B,EAAW9B,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIQ,IAAKkB,IAAK1B,EAAII,OAC/CipG,EAAWrpG,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAI2C,KAAMjB,IAAK1B,EAAII,OAChDwjK,EAAoB5jK,EAAIE,OAAO,CACnCw0I,UAAW10I,EAAIQ,IACfk/J,cAAe1/J,EAAIQ,IACnBq/J,aAAc7/J,EAAIQ,MAEpB,OAAOR,EAAIkC,QAAQ,CACjBswH,MAAOxyH,EAAIoC,KAAK,GAAI,CAACJ,GAAS,IAC9B2wC,QAAS3yC,EAAIoC,KAAK,GAAI,CAACJ,GAAS,IAChC4wC,YAAa5yC,EAAIoC,KAAK,CAACpC,EAAIQ,KAAM,CAACwB,GAAS,IAC3C6hK,qBAAsB7jK,EAAIoC,KAAK,CAACpC,EAAIspG,IAAItpG,EAAIiB,WAAYjB,EAAIQ,IAAKR,EAAIQ,KAAM,CAACwnI,GAAW,CAAC,UACxF87B,sBAAuB9jK,EAAIoC,KAAK,CAACpC,EAAIspG,IAAItpG,EAAIiB,WAAYjB,EAAIQ,IAAKR,EAAIQ,KAAM,CAACwnI,GAAW,CAAC,UACzF+7B,mBAAoB/jK,EAAIoC,KAAK,GAAI,CAAC6lI,GAAW,CAAC,UAC9C+7B,aAAchkK,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAIQ,KAAM,CAAC2lI,GAAW,CAAC,UACxDuf,UAAW1lJ,EAAIoC,KAAK,GAAI,CAACokI,GAAW,CAAC,UACrC5jI,aAAc5C,EAAIoC,KAAK,GAAI,CAACqkI,GAAW,IACvCw9B,YAAajkK,EAAIoC,KAAK,GAAI,CAACZ,GAAW,CAAC,UACvC0iK,YAAalkK,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAAC4lI,GAAW,CAAC,UACpDykB,WAAYtrJ,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UACtCg7J,QAASp7J,EAAIoC,KAAK,GAAI,CAACN,GAAW,IAClCohK,YAAaljK,EAAIoC,KAAK,GAAI,CAACJ,GAAS,IACpCygK,cAAeziK,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACa,GAAW,CAAC,UACtDqiK,kBAAmBnkK,EAAIoC,KAAK,GAAI,CAACJ,GAAS,IAC1CoiK,gBAAiBpkK,EAAIoC,KAAK,GAAI,CAACJ,GAAS,IACxCqiK,qBAAsBrkK,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAI2C,MAAO,CAAC0mG,GAAW,IAChE28C,UAAWhmJ,EAAIoC,KAAK,CAACpC,EAAIiC,IAAIjC,EAAIiB,YAAa,GAAI,IAClDk6J,MAAOn7J,EAAIoC,KAAK,GAAI,CAACN,GAAW,IAChCwiK,KAAMtkK,EAAIoC,KAAK,GAAI,CAACZ,GAAW,IAC/BwgK,kBAAmBhiK,EAAIoC,KAAK,GAAI,CAACN,GAAW,CAAC,UAC7Co5J,QAASl7J,EAAIoC,KAAK,CAACpC,EAAIQ,KAAM,CAACsB,GAAW,IACzCyiK,kBAAmBvkK,EAAIoC,KAAK,CAACwhK,GAAoB,CAACpiK,GAAW,IAC7D+vC,SAAUvxC,EAAIoC,KAAK,CAACpC,EAAI2C,KAAM3C,EAAIQ,KAAM,CAACwB,GAAS,IAClDk7J,kBAAmBl9J,EAAIoC,KAAK,GAAI,CAACJ,GAAS,KAC1C,EC9ISlC,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMyB,EAAWxB,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIQ,IAAKkB,IAAK1B,EAAII,OAC/CuB,EAAY3B,EAAIE,OAAO,CAAE0B,QAAS5B,EAAIQ,IAAKqB,UAAW7B,EAAIQ,MAC1DnB,EAAQW,EAAIkB,QAAQ,CACxBC,YAAanB,EAAIoB,KACjBC,cAAerB,EAAII,KACnBkB,iBAAkBtB,EAAII,KACtBmB,kBAAmBvB,EAAIoB,OAEnBolI,EAAWxmI,EAAIkB,QAAQ,CAAEO,GAAIE,EAAWD,IAAKrC,IAC7CmlK,EAAUxkK,EAAIE,OAAO,CACzBkyE,IAAKpyE,EAAIi8G,QACTwoD,IAAKzkK,EAAIQ,IACTk/J,cAAe1/J,EAAIQ,IACnBmsD,KAAM3sD,EAAIQ,IACVgpC,YAAaxpC,EAAIiB,UACjByjK,qBAAsB1kK,EAAIi8G,QAC1B0oD,oBAAqB3kK,EAAIi8G,QACzB2jD,qBAAsB5/J,EAAIQ,IAC1B4/J,mBAAoBpgK,EAAIi8G,QACxB++C,oBAAqBh7J,EAAIQ,MAErBimI,EAAWzmI,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIiC,IAAIuiK,GAAU9iK,IAAK1B,EAAII,OACxDymI,EAAW7mI,EAAIkB,QAAQ,CAC3BO,GAAIzB,EAAIgnD,MAAMhnD,EAAIQ,IAAKR,EAAIQ,IAAKR,EAAIiB,WACpCS,IAAK1B,EAAII,OAELoiK,EAAiBxiK,EAAIE,OAAO,CAChCuiK,cAAeziK,EAAIQ,IACnBkiK,eAAgB1iK,EAAIQ,IACpBmiK,YAAa3iK,EAAIQ,IACjBoiK,mBAAoB5iK,EAAIQ,IACxBqiK,WAAY7iK,EAAIQ,IAChBsiK,cAAe9iK,EAAIQ,IACnBuiK,kBAAmB/iK,EAAIQ,MAEnBP,EAAQD,EAAIE,OAAO,CAAEC,QAASH,EAAII,KAAMC,SAAUL,EAAII,OACtDwkK,EAAW5kK,EAAIE,OAAO,CAC1B2kK,SAAUrC,EACVrkF,aAAcl+E,EACdm+E,YAAan+E,EACbyrC,MAAO1rC,EAAIiB,UACXuoC,YAAaxpC,EAAIiB,YAEbslI,EAASvmI,EAAIE,OAAO,CACxB2F,QAAS7F,EAAIiC,IAAI2iK,GACjBn8H,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEf6oG,EAAWrpG,EAAIkB,QAAQ,CAAEO,GAAI8kI,EAAQ7kI,IAAK6kI,IAC1C+5B,EAAkBtgK,EAAIE,OAAO,CACjCs/J,mBAAoBx/J,EAAII,KACxBs0I,UAAW10I,EAAIQ,IACfi/J,kBAAmBz/J,EAAII,KACvBgsI,QAASpsI,EAAIiB,UACbk9E,aAAcl+E,EACdm+E,YAAan+E,EACby/J,cAAe1/J,EAAIQ,IACnBuI,KAAM/I,EAAII,KACVmsI,WAAYvsI,EAAIQ,IAChBm/J,gBAAiB3/J,EAAIQ,IACrBq6J,eAAgB76J,EAAIQ,IACpBo/J,qBAAsB5/J,EAAIQ,IAC1Bq/J,aAAc7/J,EAAIQ,IAClBw6J,oBAAqBh7J,EAAIQ,IACzBQ,WAAYhB,EAAIiB,YAEZopG,EAAOrqG,EAAIE,OAAO,CACtB2F,QAAS7F,EAAIiC,IAAIq+J,GACjB73H,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEfsB,EAAW9B,EAAIkB,QAAQ,CAAEO,GAAI4oG,EAAM3oG,IAAK1B,EAAII,OAC5C0kK,EAAkB9kK,EAAIE,OAAO,CACjC6kK,SAAU/kK,EAAIiB,UACdyN,MAAO1O,EAAIi8G,QACXrkE,MAAO53C,EAAIi8G,QACX1wE,OAAQvrC,EAAIi8G,QACZphG,OAAQ7a,EAAIiB,YAERe,EAAShC,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAI2C,KAAMjB,IAAK1B,EAAII,OACpD,OAAOJ,EAAIkC,QAAQ,CACjB8iK,mBAAoBhlK,EAAIoC,KAAK,GAAI,CAACZ,GAAW,IAC7CoB,aAAc5C,EAAIoC,KAAK,GAAI,CAACokI,GAAW,IACvCogB,YAAa5mJ,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAACJ,EAAIi8G,SAAU,IACjDqvC,WAAYtrJ,EAAIoC,KAAK,GAAI,CAACpC,EAAII,MAAO,CAAC,UACtC6kK,SAAUjlK,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIQ,IAAKR,EAAIQ,KAAM,CAACimI,GAAW,CAAC,UACnEy+B,eAAgBllK,EAAIoC,KAAK,GAAI,CAACykI,GAAW,CAAC,UAC1Cs+B,UAAWnlK,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIQ,IAAKR,EAAIQ,IAAKR,EAAIspG,IAAItpG,EAAII,MAAOJ,EAAIspG,IAAItpG,EAAII,OAAQ,CAACipG,GAAW,CAAC,UAC1G+7D,iBAAkBplK,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAIQ,KAAM,CAACsB,GAAW,CAAC,UAC5DujK,sBAAuBrlK,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACjB,EAAIiC,IAAI6iK,IAAmB,CAAC,UAC9EQ,gBAAiBtlK,EAAIoC,KAAK,GAAI,CAACZ,GAAW,IAC1C+jK,WAAYvlK,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWuhK,GAAiB,CAACxgK,GAAS,KAChE,EClFSwjK,GAAyB1iH,GACpCv/C,EAAMC,OAA8B,CAClCC,UAAWC,EAAUs8B,uBACrB8iB,WACAhjD,WAAY2lK,KAGHj8H,GAAcA,CAACxoC,EAAoB8hD,IAC9Cv/C,EAAMC,OAAkB,CACtBxC,aACAyC,UAAWC,EAAUgiK,UACrB5iH,WACAhjD,WAAY6lK,KAGHC,GAAc9iH,GACzBv/C,EAAMC,OAAmB,CACvBC,UAAWC,EAAUu8B,WACrB6iB,WACAhjD,WAAY+lK,KChCH/lK,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMopG,EAAanpG,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAI2C,KAAMjB,IAAK1B,EAAII,OAClD0lK,EAAiB9lK,EAAIE,OAAO,CAChC6lK,kBAAmB/lK,EAAIiB,UACvBo9E,SAAUr+E,EAAII,KACdqjD,cAAezjD,EAAII,KACnB4lK,mBAAoBhmK,EAAIQ,IACxBylK,aAAcjmK,EAAII,KAClB8lK,cAAelmK,EAAIqmD,KACnB8/G,iBAAkBnmK,EAAIQ,IACtB4lK,YAAapmK,EAAII,KACjBimK,gBAAiBrmK,EAAIQ,IACrB8lK,iBAAkBtmK,EAAIQ,IACtB+lK,kBAAmBvmK,EAAIQ,IACvB4nJ,UAAWpoJ,EAAII,KACfomK,gBAAiBxmK,EAAII,KACrBqmK,eAAgBzmK,EAAII,OAEhBysI,EAAa7sI,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAII,KAAMsB,IAAK1B,EAAII,OAClDgpG,EAAYppG,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIQ,IAAKkB,IAAK1B,EAAII,OAChDiqG,EAAOrqG,EAAIE,OAAO,CACtB2F,QAAS7F,EAAIiC,IAAI6jK,GACjBr9H,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEfwsI,EAAmBhtI,EAAIkB,QAAQ,CAAEO,GAAI4oG,EAAM3oG,IAAK1B,EAAII,OACpD+mI,EAAUnnI,EAAIkB,QAAQ,CAC1B6F,UAAW/G,EAAIiB,UACfd,QAASH,EAAII,OAETsmK,EAAkB1mK,EAAIE,OAAO,CACjCymK,YAAa3mK,EAAIQ,IACjB69E,SAAUr+E,EAAII,KACdqjD,cAAezjD,EAAII,KACnBwmK,YAAa5mK,EAAIQ,IACjBylK,aAAcjmK,EAAII,KAClB8lK,cAAelmK,EAAIqmD,KACnBwgH,UAAW7mK,EAAIspG,IAAItpG,EAAIe,KACvB+lK,UAAW3/B,EACXi/B,YAAapmK,EAAII,KACjBgoJ,UAAWpoJ,EAAII,KACfqmK,eAAgBzmK,EAAII,OAEhBmmI,EAASvmI,EAAIE,OAAO,CACxB2F,QAAS7F,EAAIiC,IAAIykK,GACjBj+H,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEf0sI,EAAmBltI,EAAIkB,QAAQ,CAAEO,GAAI8kI,EAAQ7kI,IAAK1B,EAAII,OACtD+sI,EAAmBntI,EAAIkB,QAAQ,CACnCO,GAAIzB,EAAIiC,IAAIjC,EAAII,MAChBsB,IAAK1B,EAAII,OAEL0sI,EAAiB9sI,EAAIkB,QAAQ,CACjCO,GAAIqkK,EACJpkK,IAAK1B,EAAII,OAELslI,EAAO1lI,EAAIkB,QAAQ,CACvB6F,UAAW/G,EAAIiB,UACfd,QAASH,EAAII,OAET2mK,EAAa/mK,EAAIE,OAAO,CAAE8oD,KAAM08E,EAAMshC,MAAOhnK,EAAIQ,MACvD,OAAOR,EAAIkC,QAAQ,CACjBqnG,SAAUvpG,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC+oG,GAAa,IAC7CqpB,MAAOxyH,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC+oG,GAAa,IAC1C3lG,OAAQxD,EAAIoC,KAAK,CAAC0jK,GAAiB,CAACj5B,GAAa,IACjDrjC,eAAgBxpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,CAAC,UAC3CK,aAAczpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,CAAC,UACzC99C,OAAQtrD,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC+oG,GAAa,IAC3C89D,cAAejnK,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAIQ,KAAM,CAACwsI,GAAmB,CAAC,UACjEk6B,iBAAkBlnK,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIQ,IAAKR,EAAIQ,KAAM,CAACwsI,GAAmB,CAAC,UACnFm6B,iBAAkBnnK,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAIspG,IAAItpG,EAAIQ,KAAMR,EAAIQ,IAAKR,EAAIQ,KAAM,CAAC0sI,GAAmB,IAC/Fk6B,qBAAsBpnK,EAAIoC,KACxB,CAACpC,EAAIiB,UAAWjB,EAAIspG,IAAItpG,EAAII,MAAOJ,EAAIspG,IAAItpG,EAAIQ,KAAMR,EAAIQ,IAAKR,EAAIQ,KAClE,CAAC0sI,GACD,IAEFm6B,eAAgBrnK,EAAIoC,KAAK,CAACpC,EAAIiB,UAAWjB,EAAIQ,IAAKR,EAAIQ,KAAM,CAACwsI,GAAmB,CAAC,UACjFrjC,aAAc3pG,EAAIoC,KAAK,GAAI,CAAC+qI,GAAmB,CAAC,UAChDm6B,qBAAsBtnK,EAAIoC,KAAK,GAAI,CAACyqI,GAAa,CAAC,UAClD06B,SAAUvnK,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC0sI,GAAiB,CAAC,UAClD06B,mBAAoBxnK,EAAIoC,KAAK,GAAI,CAACyqI,GAAa,CAAC,UAChD46B,YAAaznK,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAIiC,IAAI8kK,IAAc,CAAC59D,GAAa,IACrElmB,MAAOjjF,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC+oG,GAAa,IAC1CU,YAAa7pG,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC+oG,GAAa,IAChDu+D,UAAW1nK,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAI2C,MAAO,CAACwmG,GAAa,IACxDw+D,mBAAoB3nK,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC+oG,GAAa,IACvD0oC,OAAQ7xI,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACkoG,GAAa,IAChDy+D,YAAa5nK,EAAIoC,KAAK,CAAC0jK,GAAiB,CAAC38D,GAAa,KACtD,EC3FSrpG,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMopG,EAAanpG,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAI2C,KAAMjB,IAAK1B,EAAII,OAClD0lK,EAAiB9lK,EAAIE,OAAO,CAChC6lK,kBAAmB/lK,EAAIiB,UACvBo9E,SAAUr+E,EAAII,KACdqjD,cAAezjD,EAAII,KACnB4lK,mBAAoBhmK,EAAIQ,IACxBylK,aAAcjmK,EAAII,KAClB8lK,cAAelmK,EAAIqmD,KACnB8/G,iBAAkBnmK,EAAIQ,IACtB4lK,YAAapmK,EAAII,KACjBimK,gBAAiBrmK,EAAIQ,IACrB8lK,iBAAkBtmK,EAAIQ,IACtB+lK,kBAAmBvmK,EAAIQ,IACvB4nJ,UAAWpoJ,EAAII,KACfomK,gBAAiBxmK,EAAII,KACrBqmK,eAAgBzmK,EAAII,OAEhB+mI,EAAUnnI,EAAIkB,QAAQ,CAC1B6F,UAAW/G,EAAIiB,UACfd,QAASH,EAAII,OAETsmK,EAAkB1mK,EAAIE,OAAO,CACjCymK,YAAa3mK,EAAIQ,IACjB69E,SAAUr+E,EAAII,KACdqjD,cAAezjD,EAAII,KACnBwmK,YAAa5mK,EAAIQ,IACjBylK,aAAcjmK,EAAII,KAClB8lK,cAAelmK,EAAIqmD,KACnBwgH,UAAW7mK,EAAIspG,IAAItpG,EAAIe,KACvB+lK,UAAW3/B,EACXi/B,YAAapmK,EAAII,KACjBgoJ,UAAWpoJ,EAAII,KACfqmK,eAAgBzmK,EAAII,OAEhB0sI,EAAiB9sI,EAAIkB,QAAQ,CACjCO,GAAIqkK,EACJpkK,IAAK1B,EAAII,OAELgpG,EAAYppG,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIQ,IAAKkB,IAAK1B,EAAII,OAChDiqG,EAAOrqG,EAAIE,OAAO,CACtB2F,QAAS7F,EAAIiC,IAAIykK,GACjBj+H,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEf0sI,EAAmBltI,EAAIkB,QAAQ,CAAEO,GAAI4oG,EAAM3oG,IAAK1B,EAAII,OACpDmmI,EAASvmI,EAAIE,OAAO,CACxB2F,QAAS7F,EAAIiC,IAAI6jK,GACjBr9H,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEfysI,EAAmBjtI,EAAIkB,QAAQ,CAAEO,GAAI8kI,EAAQ7kI,IAAK1B,EAAII,OACtDslI,EAAO1lI,EAAIkB,QAAQ,CACvB6F,UAAW/G,EAAIiB,UACfd,QAASH,EAAII,OAET4sI,EAAmBhtI,EAAIkB,QAAQ,CACnCO,GAAIzB,EAAIiC,IAAIjC,EAAII,MAChBsB,IAAK1B,EAAII,OAEL+sI,EAAmBntI,EAAIkB,QAAQ,CACnCO,GAAIzB,EAAIgnD,MAAM0+E,EAAM1lI,EAAII,MACxBsB,IAAK1B,EAAII,OAEX,OAAOJ,EAAIkC,QAAQ,CACjBqnG,SAAUvpG,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC+oG,GAAa,IAC7C0+D,SAAU7nK,EAAIoC,KAAK,CAAC0jK,GAAiB,CAAC38D,GAAa,IACnD2+D,gBAAiB9nK,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAIiC,IAAIykK,IAAmB,CAACv9D,GAAa,IAC9EqpB,MAAOxyH,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAIiB,WAAY,CAAC6rI,GAAiB,IAC7DtjC,eAAgBxpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,CAAC,UAC3CK,aAAczpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,CAAC,UACzC2+D,YAAa/nK,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC+oG,GAAa,IAChD6+D,oBAAqBhoK,EAAIoC,KAAK,CAACpC,EAAIspG,IAAItpG,EAAIQ,KAAMR,EAAIQ,IAAKR,EAAIQ,KAAM,CAAC0sI,GAAmB,CAAC,UACzF+5B,cAAejnK,EAAIoC,KAAK,CAACpC,EAAIspG,IAAItpG,EAAIQ,KAAMR,EAAIQ,IAAKR,EAAIQ,KAAM,CAACysI,GAAmB,CAAC,UACnFk6B,iBAAkBnnK,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAIspG,IAAItpG,EAAIQ,KAAMR,EAAIQ,IAAKR,EAAIQ,KAAM,CAAC0sI,GAAmB,CAAC,UAChGk6B,qBAAsBpnK,EAAIoC,KACxB,CAACsjI,EAAM1lI,EAAIspG,IAAItpG,EAAII,MAAOJ,EAAIspG,IAAItpG,EAAIQ,KAAMR,EAAIQ,IAAKR,EAAIQ,KACzD,CAAC0sI,GACD,CAAC,UAEHvjC,aAAc3pG,EAAIoC,KAAK,GAAI,CAAC4qI,GAAmB,CAAC,UAChDi7B,qBAAsBjoK,EAAIoC,KAAK,GAAI,CAAC+qI,GAAmB,CAAC,UACxDo6B,SAAUvnK,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC0sI,GAAiB,CAAC,UAClD7pD,MAAOjjF,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC+oG,GAAa,IAC1CU,YAAa7pG,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC+oG,GAAa,IAChDu+D,UAAW1nK,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAI2C,MAAO,CAACwmG,GAAa,IACxD++D,UAAWloK,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC0sI,GAAiB,KAClD,EC/ESq7B,GAAwBrlH,GACnCv/C,EAAMC,OAAwB,CAC5BC,UAAWC,EAAU0kK,gBACrBtlH,WACAhjD,WAAYuoK,KAGHC,GAAoBA,CAC/BtnK,EACA8hD,IAEAv/C,EAAMC,OAAqB,CACzBs/C,WACA9hD,aACAlB,WAAYyoK,KCxBHzoK,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAM2lI,EAAO1lI,EAAIkB,QAAQ,CACvB6F,UAAW/G,EAAIiB,UACfd,QAASH,EAAII,OAETooK,EAAcxoK,EAAIE,OAAO,CAC7Bm+E,SAAUr+E,EAAII,KACduJ,KAAM3J,EAAII,KACV2I,KAAM/I,EAAII,KACVqoK,WAAYzoK,EAAII,KAChBsoK,eAAgBhjC,EAChBijC,WAAY3oK,EAAII,OAEZ+oG,EAAanpG,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAI2C,KAAMjB,IAAK1B,EAAII,OAClDgpG,EAAYppG,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIQ,IAAKkB,IAAK1B,EAAII,OAChDiqG,EAAOrqG,EAAIE,OAAO,CACtB2F,QAAS7F,EAAIiC,IAAIumK,GACjB//H,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEfwsI,EAAmBhtI,EAAIkB,QAAQ,CAAEO,GAAI4oG,EAAM3oG,IAAK1B,EAAII,OACpD+sI,EAAmBntI,EAAIkB,QAAQ,CACnCO,GAAIzB,EAAIiC,IAAIjC,EAAII,MAChBsB,IAAK1B,EAAII,OAELysI,EAAa7sI,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAII,KAAMsB,IAAK1B,EAAII,OAClD0sI,EAAiB9sI,EAAIkB,QAAQ,CAAEO,GAAI+mK,EAAa9mK,IAAK1B,EAAII,OAC/D,OAAOJ,EAAIkC,QAAQ,CACjBkyC,IAAKp0C,EAAIoC,KAAK,CAAComK,GAAc,CAACr/D,GAAa,IAC3CI,SAAUvpG,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC+oG,GAAa,IAC7C3lG,OAAQxD,EAAIoC,KAAK,CAAComK,GAAc,CAACr/D,GAAa,IAC9CK,eAAgBxpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,IAC1CK,aAAczpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,IACxC99C,OAAQtrD,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC+oG,GAAa,IAC3Cy/D,gBAAiB5oK,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAIQ,KAAM,CAACwsI,GAAmB,CAAC,UACnErjC,aAAc3pG,EAAIoC,KAAK,GAAI,CAAC+qI,GAAmB,CAAC,UAChD07B,gBAAiB7oK,EAAIoC,KAAK,GAAI,CAACyqI,GAAa,CAAC,UAC7Ci8B,WAAY9oK,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC0sI,GAAiB,CAAC,UACpDjjC,YAAa7pG,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC+oG,GAAa,IAChD4/D,gBAAiB/oK,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC+oG,GAAa,KACpD,ECzCSrpG,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMopG,EAAanpG,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAI2C,KAAMjB,IAAK1B,EAAII,OAClD2rI,EAAS/rI,EAAIE,OAAO,CAAE8rI,EAAGhsI,EAAII,KAAM6rI,EAAGjsI,EAAIQ,MAC1CwoK,EAAqBhpK,EAAIE,OAAO,CACpCuP,MAAOzP,EAAII,KACXyF,QAAS7F,EAAII,KACby3J,QAAS73J,EAAIe,IACbkoK,WAAYjpK,EAAII,KAChB8oK,UAAWlpK,EAAIe,IACfooK,WAAYnpK,EAAIQ,IAChB2tB,QAASnuB,EAAIiC,IAAI8pI,KAEbc,EAAa7sI,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAII,KAAMsB,IAAK1B,EAAII,OAClDgpG,EAAYppG,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIQ,IAAKkB,IAAK1B,EAAII,OAChDslI,EAAO1lI,EAAIkB,QAAQ,CACvB6F,UAAW/G,EAAIiB,UACfd,QAASH,EAAII,OAETooK,EAAcxoK,EAAIE,OAAO,CAC7Bm+E,SAAUr+E,EAAII,KACduJ,KAAM3J,EAAII,KACV2I,KAAM/I,EAAII,KACVqoK,WAAYzoK,EAAII,KAChBsoK,eAAgBhjC,EAChBijC,WAAY3oK,EAAII,OAEZgpK,EAAeppK,EAAIE,OAAO,CAC9BV,GAAIQ,EAAII,KACRipK,kBAAmBrpK,EAAII,KACvBqP,MAAOzP,EAAII,KACXyF,QAAS7F,EAAII,KACby3J,QAAS73J,EAAIe,IACbwrI,WAAYvsI,EAAIe,IAChBkoK,WAAYjpK,EAAII,KAChB0e,MAAO9e,EAAIQ,IACX8oK,cAAe5jC,EACfwjC,UAAWlpK,EAAIe,IACfooK,WAAYnpK,EAAIQ,IAChB2tB,QAASnuB,EAAIiC,IAAI8pI,GACjBw9B,QAASf,IAELna,EAASruJ,EAAIE,OAAO,CACxB2F,QAAS7F,EAAIiC,IAAImnK,GACjB3gI,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEfmsI,EAAmB3sI,EAAIkB,QAAQ,CAAEO,GAAI4sJ,EAAQ3sJ,IAAK1B,EAAII,OACtDopK,EAAiBxpK,EAAIE,OAAO,CAChCupK,SAAUzpK,EAAIe,IACdZ,QAASulI,EACTgkC,UAAW1pK,EAAIQ,IACf2tB,QAASnuB,EAAIiC,IAAI8pI,KAEbhE,EAAS/nI,EAAIE,OAAO,CACxB2F,QAAS7F,EAAIiC,IAAIunK,GACjB/gI,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEfysI,EAAmBjtI,EAAIkB,QAAQ,CAAEO,GAAIsmI,EAAQrmI,IAAK1B,EAAII,OACtDupK,EAAqB3pK,EAAIE,OAAO,CACpC0pK,gBAAiB5pK,EAAIQ,IACrBL,QAASulI,EACTmkC,WAAY7pK,EAAIQ,MAEZ+lI,EAASvmI,EAAIE,OAAO,CACxB2F,QAAS7F,EAAIiC,IAAI0nK,GACjBlhI,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEf0sI,EAAmBltI,EAAIkB,QAAQ,CAAEO,GAAI8kI,EAAQ7kI,IAAK1B,EAAII,OACtDiqG,EAAOrqG,EAAIE,OAAO,CACtB2F,QAAS7F,EAAIiC,IAAIjC,EAAIiB,WACrBwnC,OAAQzoC,EAAIQ,IACZkoC,MAAO1oC,EAAIQ,IACX8pG,cAAetqG,EAAIQ,MAEfwsI,EAAmBhtI,EAAIkB,QAAQ,CAAEO,GAAI4oG,EAAM3oG,IAAK1B,EAAII,OACpD0pK,EAAiB9pK,EAAIE,OAAO,CAChCm+E,SAAUr+E,EAAII,KACduJ,KAAM3J,EAAII,KACV2I,KAAM/I,EAAII,KACVqoK,WAAYzoK,EAAII,KAChBsoK,eAAgBhjC,EAChBijC,WAAY3oK,EAAII,OAEZ+sI,EAAmBntI,EAAIkB,QAAQ,CACnCO,GAAIqoK,EACJpoK,IAAK1B,EAAII,OAEL0sI,EAAiB9sI,EAAIkB,QAAQ,CAAEO,GAAI2nK,EAAc1nK,IAAK1B,EAAII,OAuBhE,OAtB4BJ,EAAIkC,QAAQ,CACtCqnG,SAAUvpG,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACkoG,GAAa,IAClD3lG,OAAQxD,EAAIoC,KAAK,CAAC4mK,GAAqB,CAACn8B,GAAa,IACrDrjC,eAAgBxpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,IAC1CK,aAAczpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,IACxC2gE,YAAa/pK,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACkoG,GAAa,IACrD6gE,eAAgBhqK,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC+oG,GAAa,IACnD8gE,SAAUjqK,EAAIoC,KAAK,CAACpC,EAAIspG,IAAItpG,EAAII,MAAOJ,EAAIspG,IAAItpG,EAAIQ,KAAMR,EAAIQ,IAAKR,EAAIQ,KAAM,CAACmsI,GAAmB,CAAC,UACjGu9B,eAAgBlqK,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAIQ,IAAKR,EAAIQ,KAAM,CAACysI,GAAmB,CAAC,UAC5Ek9B,cAAenqK,EAAIoC,KAAK,CAACpC,EAAIspG,IAAItpG,EAAII,MAAOJ,EAAIspG,IAAItpG,EAAII,MAAOJ,EAAIQ,IAAKR,EAAIQ,KAAM,CAAC0sI,GAAmB,CAAC,UACvGvjC,aAAc3pG,EAAIoC,KAAK,CAACpC,EAAIQ,IAAKR,EAAIQ,KAAM,CAACwsI,GAAmB,CAAC,UAChE87B,WAAY9oK,EAAIoC,KAAK,GAAI,CAAC+qI,GAAmB,CAAC,UAC9Ci9B,YAAapqK,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAAC0sI,GAAiB,CAAC,UACrDu9B,kBAAmBrqK,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,CAAC,UAC5C8pK,eAAgBtqK,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACjB,EAAI2C,MAAO,CAAC,UACvDqlD,SAAUhoD,EAAIoC,KAAK,CAACpC,EAAIiB,WAAY,CAACkoG,GAAa,IAClDohE,WAAYvqK,EAAIoC,KAAK,CAAC0nK,EAAgB9pK,EAAII,MAAO,CAAC+oG,GAAa,IAC/Dh/E,SAAUnqB,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAIQ,KAAM,CAAC2oG,GAAa,IACtDqhE,aAAcxqK,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAIiC,IAAI0nK,IAAsB,CAACxgE,GAAa,IAC9EshE,eAAgBzqK,EAAIoC,KAAK,CAACgnK,GAAe,CAACjgE,GAAa,IACvDqc,KAAMxlH,EAAIoC,KAAK,CAACpC,EAAII,KAAMJ,EAAII,KAAMJ,EAAIQ,KAAM,CAAC2oG,GAAa,KAEpC,ECnHfrpG,GAAaC,IAAiB,IAAhB,IAAEC,GAAUD,EACrC,MAAMquI,EAAQpuI,EAAIE,OAAO,CACvB2F,QAAS7F,EAAIiC,IAAIjC,EAAIqmD,MACrBwhG,SAAU7nJ,EAAIQ,MAEV4oG,EAAYppG,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAIQ,IAAKkB,IAAK1B,EAAII,OAChDquI,EAAczuI,EAAIgnD,MAAMhnD,EAAII,KAAMJ,EAAII,MACtCsuI,EAAc1uI,EAAIE,OAAO,CAC7BsiF,IAAKxiF,EAAII,KACTurG,OAAQ3rG,EAAII,KACZihG,KAAMrhG,EAAIiC,IAAIjC,EAAIqmD,MAClB2tF,QAASh0I,EAAIiC,IAAIwsI,KAEbK,EAAyB9uI,EAAIE,OAAO,CACxCW,IAAKb,EAAII,KACT2O,MAAO/O,EAAIQ,IACX2zI,iBAAkBn0I,EAAII,OAElBwuI,EAAoB5uI,EAAIkB,QAAQ,CACpCozI,SAAUt0I,EAAIE,OAAO,CACnB0L,MAAOkjI,EACP5jH,SAAUlrB,EAAIoC,KAAK,GAAI,GAAI,QAGzBysI,EAAe7uI,EAAIE,OAAO,CAC9BmhG,KAAMrhG,EAAIiC,IAAIjC,EAAIqmD,MAClB2tF,QAASh0I,EAAIiC,IAAIwsI,GACjB8F,mBAAoBv0I,EAAIspG,IAAIslC,GAC5B4F,YAAax0I,EAAI6+H,QAEbkQ,EAAgC/uI,EAAIE,OAAO,CAC/C0L,MAAO5L,EAAIspG,IAAIwlC,GACfztC,KAAMrhG,EAAIiC,IAAIjC,EAAIqmD,QAEdwmF,EAAa7sI,EAAIkB,QAAQ,CAAEO,GAAIzB,EAAII,KAAMsB,IAAK1B,EAAII,OA2BxD,OA1BqBJ,EAAIkC,QAAQ,CAC/BqnG,SAAUvpG,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAACJ,EAAI2C,MAAO,IAC3CkmJ,UAAW7oJ,EAAIoC,KAAK,GAAI,CAACpC,EAAIQ,KAAM,CAAC,UACpCsoJ,WAAY9oJ,EAAIoC,KAAK,GAAI,CAACpC,EAAI2C,MAAO,IACrComJ,aAAc/oJ,EAAIoC,KAChB,CACEpC,EAAIE,OAAO,CACT2nJ,SAAU7nJ,EAAIQ,IACdwoJ,aAAchpJ,EAAII,KAClB6oJ,UAAWjpJ,EAAIiC,IAAIjC,EAAIQ,OAEzBR,EAAII,MAEN,GACA,IAEF8oJ,aAAclpJ,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAACJ,EAAIE,OAAO,CAAE2nJ,SAAU7nJ,EAAIQ,OAAS,IACxE2oJ,aAAcnpJ,EAAIoC,KAAK,CAACgsI,EAAOpuI,EAAII,MAAO,CAACJ,EAAIE,OAAO,CAAEkpJ,SAAUppJ,EAAIQ,OAAS,IAC/EgpG,eAAgBxpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,CAAC,UAC3CK,aAAczpG,EAAIoC,KAAK,GAAI,CAACgnG,GAAY,CAAC,UACzCO,aAAc3pG,EAAIoC,KAAK,GAAI,CAACpC,EAAIiC,IAAIjC,EAAII,OAAQ,CAAC,UACjD04I,aAAc94I,EAAIoC,KAAK,CAACssI,GAAc,CAACG,GAAe,CAAC,UACvDkK,gCAAiC/4I,EAAIoC,KAAK,CAAC0sI,GAAyB,CAACC,GAAgC,CAAC,UACtGqb,YAAapqJ,EAAIoC,KAAK,CAACpC,EAAIQ,KAAM,CAACqsI,GAAa,IAC/ChjC,YAAa7pG,EAAIoC,KAAK,CAACpC,EAAII,MAAO,CAACJ,EAAI2C,MAAO,KAE7B,EChDR+nK,GAAoB5nH,GAC/Bv/C,EAAMC,OAAuB,CAC3BC,UAAWC,EAAUinK,iBACrB7qK,WAAY8qK,GACZ9nH,aAGS+nH,GAAiBA,CAAC7pK,EAAoB8hD,IACjDv/C,EAAMC,OAAoB,CACxBxC,aACA8hD,WACAhjD,WAAYgrK,KAGHC,GAAaA,CAAC/pK,EAAoB8hD,IAC7Cv/C,EAAMC,OAAiB,CACrBxC,aACA8hD,WACAhjD,WAAYkrK,I,gEC/BT,MAAM/rE,EAAqB,8BAIrBgsE,EAAmB,8BAEnBC,EAAkB,6B,+BCNxB,IAAK7pI,E,2BAAZ,SAAYA,GACVA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,mBACAA,EAAAA,EAAA,4BACAA,EAAAA,EAAA,wBACAA,EAAAA,EAAA,uCACAA,EAAAA,EAAA,8CACAA,EAAAA,EAAA,mCACAA,EAAAA,EAAA,0CACAA,EAAAA,EAAA,4CACAA,EAAAA,EAAA,uBACAA,EAAAA,EAAA,uCACAA,EAAAA,EAAA,mBACAA,EAAAA,EAAA,uCACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,0BACAA,EAAAA,EAAA,cACAA,EAAAA,EAAA,6BACAA,EAAAA,EAAA,iCACAA,EAAAA,EAAA,kBACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,uCACAA,EAAAA,EAAA,0BACAA,EAAAA,EAAA,oBACD,CAxBD,CAAYA,IAAAA,EAAO,KA0BZ,MAAMoG,EAAmB,CAC9BpG,EAAQC,QACRD,EAAQwzB,SACRxzB,EAAQk1B,gBACRl1B,EAAQm1B,iBACRn1B,EAAQyzB,aACRzzB,EAAQo1B,gBACRp1B,EAAQq1B,iBACRr1B,EAAQ0zB,QACR1zB,EAAQ2zB,eACR3zB,EAAQqzB,OACRrzB,EAAQE,QACRF,EAAQg1B,eACRh1B,EAAQ+zB,KACR/zB,EAAQ8zB,IACR9zB,EAAQ4zB,UACR5zB,EAAQ6zB,KACR7zB,EAAQs1B,YACRt1B,EAAQu1B,KACRv1B,EAAQw1B,aACRx1B,EAAQy1B,UACRz1B,EAAQg0B,OAIH,IAAK81G,GAAZ,SAAYA,GAEVA,EAAA,YACAA,EAAA,cACAA,EAAA,YACAA,EAAA,cACAA,EAAA,gBACAA,EAAA,UACAA,EAAA,YACAA,EAAA,gBACD,CAVD,CAAYA,IAAAA,EAAkB,I,+BCnDvB,IAAKhuI,E,iBAAZ,SAAYA,GACVA,EAAA,UACAA,EAAA,cACAA,EAAA,UACAA,EAAA,wBACAA,EAAA,sBACAA,EAAA,cACAA,EAAA,aACD,CARD,CAAYA,IAAAA,EAAc,I,+BCAnB,IAAK2c,EAKAhW,E,yBALZ,SAAYgW,GACVA,EAAAA,EAAA,6BACAA,EAAAA,EAAA,8BACD,CAHD,CAAYA,IAAAA,EAAS,KAKrB,SAAYhW,GACVA,EAAA,cACAA,EAAA,aACD,CAHD,CAAYA,IAAAA,EAAK,I,4bCKX,SAAUsnI,IACd,OAAOrqH,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,aAPA,W,yCACJ,OAAO5J,EAAAA,EAAAA,gBAAgDw2E,EAAAA,EAAAA,OAAczB,eAAeprF,IACtF,G,CAKmBshI,EACf,KAAG,IAEP,CAEM,SAAgBC,I,yCACpB,OAAOlrH,EAAAA,EAAAA,gBAAiDw2E,EAAAA,EAAAA,OAAcxB,gBAAgBrrF,IACxF,G,CAcM,SAAUwhI,EAAsBhiI,GACpC,OAAOwX,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,GAAKzgB,EACL,aARA,SAAsCA,G,yCAC1C,OAAO6W,EAAAA,EAAAA,gBAAoCw2E,EAAAA,EAAAA,OAAcT,YAAY5sF,IAAOQ,IAC9E,G,CAMmByhI,CAAsBjiI,EACrC,KAAG,CAACA,IAER,CAEM,SAAgBkiI,EAAuB7/J,G,yCAC3C,OAAOw0C,EAAAA,EAAAA,gBAAoCw2E,EAAAA,EAAAA,OAAcF,aAAa9qH,IAAQm+B,IAChF,G,CAEM,SAAU2hI,EAAuB9/J,GACrC,OAAOm1C,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,GAAKp+C,EACL,aAAa6/J,EAAuB7/J,EACtC,KAAG,CAACA,IAER,CAEM,SAAgB42C,EAAsBz7C,G,yCAC1C,OAAOq5C,EAAAA,EAAAA,gBAAoCw2E,EAAAA,EAAAA,OAAcn0E,YAAY17C,IAAYgjC,IACnF,G,CAEM,SAAUuY,EAAsBv7C,GACpC,OAAOg6C,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,GAAKjjD,EACL,aAAay7C,EAAsBz7C,EACrC,KAAG,CAACA,IAER,C,maC3DM,SAAUg2E,IACd,MAAM,KAAEhzC,IAAS+pB,EAAAA,EAAAA,IACf,CAAC,oBACD,IAAW9J,EAAA,gCACT,aAAashH,EAAAA,EAAAA,KACf,KACA,CACEr3G,gBAAiB,MAIrB,OAAOlqB,CACT,CAEM,SAAUkC,IACd,MAAM,KAAElC,IAASoqB,EAAAA,EAAAA,GAAmD,CAAC,oBACrE,OAAO7sD,EAAAA,EAAAA,UAAQ,IAAMyiC,GAAMA,EAC7B,CAEM,SAAUkoB,EAAapoD,GAC3B,MAAM,KAAEkgC,IAASoqB,EAAAA,EAAAA,GAAmD,CAAC,oBAErE,OAAO7sD,EAAAA,EAAAA,UAAQ,KACb,MAAM2gB,EAAW,OAAJ8hB,QAAI,IAAJA,OAAI,EAAJA,EAAM57B,MAAM/O,GAAMA,EAAEe,UAAY0J,IAE7C,OAAIA,IAAY0B,EAAAA,GAAOpL,SAAW8nB,EAAatoB,OAAAyR,OAAAzR,OAAAyR,OAAA,GAAK6W,GAAI,CAAE0lB,SAAU,IAE7D1lB,CAAI,GACV,CAAC8hB,EAAMlgC,GACZ,C,gZC1BM,SAAU8hK,IACd,OAAO5qH,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,aAPA,W,yCACJ,OAAO5J,EAAAA,EAAAA,gBAAqDy2D,EAAAA,EAAAA,OAAYJ,oBAAoB,CAAC,IAAI1sE,IACnG,G,CAKmB6hI,EACf,KAAG,IAEP,CAEM,SAAgBC,EAAiBlvI,G,yCACrC,IAAIp1B,EAEJ,IACEA,QAAewhF,MAAM,gEAADx/E,OAAiEozB,EAAI,eAAcguB,OACrG,KAAe,GAEnB,CAAE,MAAOn2C,GACPspB,QAAQktE,IAAIx2F,EACd,CAEA,GAAKjN,IAAwB,IAAdA,EAAO9F,GAEtB,aAAc8F,EAAOyhF,MACvB,G,CAEA,MAAM8iF,EAAkC,EAElC,SAAgB/2E,I,yCACpB,IAAIg3E,EAAc,EACdC,GAAa,EAEbjiI,EAAwB,GAE5B,MAAMg/C,EAAeh6E,GAAiBi7C,EAAA,gCACpC+hH,GAAe,SAGP9sK,QAAQoqC,IACZjb,MAAM4kB,KAAK,CAAE1jC,OAAQw8J,IAAmC,CAACn8J,EAAG4nC,IAAMA,IAAG34C,KAAWqtK,GAAcjiH,EAAA,gCAC5F,MAAMrtB,EAAOsvI,EAAal9J,EAAQ+8J,EAC5BvkK,QAAeskK,EAAiBlvI,GAEtC,GAAKp1B,EAQL,OANAwiC,EAAOA,EAAKxgC,OAAOhC,GAEfA,EAAO+H,OAAS,KAClB08J,GAAa,GAGRzkK,CACT,QAEFkiC,OAGaz7B,QAAQ5O,IAAOA,IAAGkQ,QAAU,IACzC08J,GAAa,GAGVA,UACGjjF,EAAMgjF,GAEhB,IAIA,aAFMhjF,EAAMgjF,GAELhiI,EACJ6E,MAAK,CAACM,EAAGC,IACJD,EAAEngC,MAAQogC,EAAEpgC,OAAe,EAC3BmgC,EAAEngC,MAAQogC,EAAEpgC,MAAc,EACvB,IAERnQ,KAAKQ,GAAMO,OAAAyR,OAAAzR,OAAAyR,OAAC,CAAC,EAAIhS,GAAC,CAAE8sK,KAAIvsK,OAAAyR,OAAAzR,OAAAyR,OAAA,GAAOhS,EAAE8sK,MAAI,CAAEviK,KAAM,8CAAFJ,OAAgDnK,EAAE8sK,KAAKviK,WACvG,G,kkBClEM,SAAgBo3J,EAAkBnwI,G,yCACtC,OAAOwvB,EAAAA,EAAAA,gBAAkColH,EAAAA,EAAAA,KAAsB,IAAOzE,kBAAkBnwI,GAC1F,G,CAEM,SAAgB2Z,EAAgBzrB,EAA2B2pB,EAAgBC,G,yCAC/E,OAAO0X,EAAAA,EAAAA,gBAEGolH,EAAAA,EAAAA,OACNtE,qBAAoBiL,EAAAA,EAAAA,GAA0BrtJ,GAAQkoB,OAAOyB,GAASzB,OAAO0B,KAC/EqB,IACJ,G,CAEM,SAAUqiI,EAAgBttJ,EAA2B2pB,EAAgBC,GACzE,OAAOqY,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,IAAKnhB,EAAAA,EAAAA,GAAoBJ,EAAQC,GACjC,aAAa6B,EAAgBzrB,EAAO2pB,EAAQC,EAC9C,KAAG,CAACD,EAAQC,EAAO5pB,IAEvB,CAUM,SAAgB4qB,EAAayhB,G,gDAAC,MAAErsC,EAAK,OAAE2pB,EAAM,MAAEC,EAAK,cAAEF,EAAa,aAAED,GAAkCxoC,EAAA,mBAC3G,OAAOqgD,EAAAA,EAAAA,gBAEGolH,EAAAA,EAAAA,OACNrE,uBACAgL,EAAAA,EAAAA,GAA0BrtJ,GAC1BkoB,OAAOyB,GACPzB,OAAO0B,IACPyjI,EAAAA,EAAAA,GAA0B5jI,IAC1B4jI,EAAAA,EAAAA,GAA0B3jI,KAE5BuB,IACJ,CAZ6G,EAY5G,G,CAUK,SAAUsiI,EAAajgK,GAA0E,IAAzE,MAAE0S,EAAK,OAAE2pB,EAAM,MAAEC,EAAK,cAAEF,EAAa,aAAED,GAAkCn8B,EACrG,OAAO20C,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,IAAKnhB,EAAAA,EAAAA,GAAoBJ,EAAQC,GACjC,aAAagB,EAAc,CAAE5qB,QAAO2pB,SAAQC,QAAOF,gBAAeD,gBACpE,KAAG,CAACE,EAAQC,EAAO5pB,EAAO0pB,EAAeD,IAE7C,CAEM,SAAgB+jI,I,yCACpB,OAAOlsH,EAAAA,EAAAA,gBAAiDolH,EAAAA,EAAAA,OAAyBpE,iBAAiBr3H,IACpG,G,CAWM,SAAgBT,EAA6BtoC,G,yCACjD,OAAOo/C,EAAAA,EAAAA,gBACQolH,EAAAA,EAAAA,OAAyBjE,eAAetgK,EAAAA,EAAU+b,SAAShc,KACxE+oC,IACJ,G,CAYM,SAAgBiB,EAAoBhqC,G,yCACxC,OAAOo/C,EAAAA,EAAAA,gBAA2C5W,EAAAA,EAAAA,IAAYxoC,IAAaijK,eAAel6H,IAC5F,G,CAYM,SAAgBW,EAAwB1pC,EAAoB+F,G,yCAChE,OAAOq5C,EAAAA,EAAAA,gBAA+C5W,EAAAA,EAAAA,IAAYxoC,IAAakjK,YAAYn9J,IAAYgjC,IACzG,G,CAyCM,SAAUwiI,EAAqBvrK,EAAgC8oC,GACnE,OAAOiX,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,GAAKhpD,EACL,aARA,SAAqCA,G,yCACzC,OAAOo/C,EAAAA,EAAAA,gBAA4C5W,EAAAA,EAAAA,IAAYxoC,IAAa4B,gBAAgBmnC,IAC9F,G,CAMmByiI,CAAqBxrK,EACpC,KAAG,CAACA,IACJ8oC,EAEJ,CAOM,SAAgB2iI,EAAiBzrK,G,yCACrC,OAAOo/C,EAAAA,EAAAA,gBAAkC5W,EAAAA,EAAAA,IAAYxoC,GAAY,IAAOwxH,QAC1E,G,CAEM,SAAgBk6C,EAAmB1rK,G,yCACvC,OAAOo/C,EAAAA,EAAAA,gBAAkC5W,EAAAA,EAAAA,IAAYxoC,GAAY,IAAO2xC,UAC1E,G,CAEM,SAAgBg6H,EAAuB3rK,EAAoBuqC,G,yCAC/D,OAAO6U,EAAAA,EAAAA,gBAAkC5W,EAAAA,EAAAA,IAAYxoC,GAAY,IAAO4xC,YAAYrH,GACtF,G,CAEM,SAAgBqhI,EAAmB5rK,G,yCACvC,OAAOo/C,EAAAA,EAAAA,gBAAkC5W,EAAAA,EAAAA,IAAYxoC,GAAY,IAAOo6J,UAC1E,G,CAEM,SAAgByR,EAAkB7rK,G,yCACtC,OAAOo/C,EAAAA,EAAAA,gBAAkC5W,EAAAA,EAAAA,IAAYxoC,GAAY,IAAOm6J,QAC1E,G,CAUM,SAAgB2R,EAAoB9rK,EAAoB+rK,EAAuBxhI,G,yCACnF,OAAO6U,EAAAA,EAAAA,gBAAkC5W,EAAAA,EAAAA,IAAYxoC,GAAY,IAAOuwC,SAASw7H,EAAcxhI,GACjG,G,CAEM,SAAgByhI,EAAmBhsK,EAAoBuqC,G,yCAC3D,OAAO6U,EAAAA,EAAAA,gBAAkC5W,EAAAA,EAAAA,IAAYxoC,GAAY,IAAOk6J,QAAQ3vH,GAClF,G,CAyEM,SAAU0hI,EAAqBjsK,EAAgC8oC,GACnE,OAAOiX,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,GAAKhpD,EACL,aAVA,SAAqC+F,G,yCACzC,OAAOq5C,EAAAA,EAAAA,gBACQolH,EAAAA,EAAAA,OAAyBlE,gBAAgBrgK,EAAAA,EAAU+b,SAASjW,KACzEgjC,IACJ,G,CAMmBmjI,CAAqBlsK,EACpC,KAAG,CAACA,IACJ8oC,EAEJ,C,0bC9RM,SAAgBX,EACpBpiC,EACA0hC,EACAC,EACAH,EACAC,G,yCAEA,OAAO4X,EAAAA,EAAAA,gBAEGwlH,EAAAA,EAAAA,OACNT,UACAlkK,EAAAA,EAAU+b,SAASjW,GACnBigC,OAAOyB,GACPzB,OAAO0B,IACPyjI,EAAAA,EAAAA,GAA0B5jI,IAC1B4jI,EAAAA,EAAAA,GAA0B3jI,KAE5BuB,IACJ,G,CAiBM,SAAUojI,EACdpmK,EACAqmK,EACAC,GAEA,OAAOtsH,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,MAAIz2C,EAAAA,EAAAA,GAAW65J,KAAe75J,EAAAA,EAAAA,GAAWxM,KAAcwM,EAAAA,EAAAA,GAAW85J,IAClE,aAdA,SAAqCtmK,EAAmBqmK,EAAoBC,G,yCAChF,OAAOjtH,EAAAA,EAAAA,gBACQwlH,EAAAA,EAAAA,OAAcX,SAAShkK,EAAAA,EAAU+b,SAASjW,GAAYigC,OAAOomI,GAAapmI,OAAOqmI,KAC9FtjI,IACJ,G,CAUmBujI,CAAqBvmK,EAAWqmK,EAAYC,EAC3D,KAAG,CAACD,EAAYC,EAAUtmK,IAE9B,CAQM,SAAUwmK,EAAoBxmK,GAClC,OAAOg6C,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,KAAIz2C,EAAAA,EAAAA,GAAWxM,GAEf,aAXA,SAAoCA,G,yCACxC,OAAOq5C,EAAAA,EAAAA,gBACQwlH,EAAAA,EAAAA,OAAcP,sBAAsBpkK,EAAAA,EAAU+b,SAASjW,KACpEgjC,IACJ,G,CAOmByjI,CAAoBzmK,EACnC,KAAG,CAACA,IAER,C,qpBC3CM,SAAgB85C,EAAejwB,G,yCACnC,OAAOwvB,EAAAA,EAAAA,gBAAwC62G,EAAAA,EAAAA,KAAY,IAAO90J,WAAWyuB,GAC/E,G,CAEM,SAAgB6vB,EAAY7vB,G,yCAChC,OAAOwvB,EAAAA,EAAAA,gBAAwC62G,EAAAA,EAAAA,OAAep0J,QAAQ+tB,IAAOmZ,IAC/E,G,CAEM,SAAU0jI,EAAY78I,GAC1B,OAAOmwB,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,GAAKp5B,EACL,aAAa6vB,EAAY7vB,EAC3B,KAAG,CAACA,IAER,CAEM,SAAgBgtD,I,yCACpB,OAAOx9B,EAAAA,EAAAA,gBAA0C62G,EAAAA,EAAAA,OAAen0J,YAAYinC,IAC9E,G,CAEM,SAAUiM,IACd,OAAO+K,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,aAAa4zB,GACf,KAAG,IAEP,CAEM,SAAgB3oC,EAAoBj0C,G,yCACxC,OAAOo/C,EAAAA,EAAAA,gBAAwCC,EAAAA,EAAAA,IAASr/C,IAAa6lC,YAAYkD,IACnF,G,CAEM,SAAU2jI,EAAoB1sK,GAClC,OAAO+/C,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,GAAKhpD,EACL,aAAai0C,EAAoBj0C,EACnC,KAAG,CAACA,IAER,CAQM,SAAgB2sK,EAAuBC,G,yCAAC/yJ,GAAc,IAAAqe,EAAA,SAAEwP,EAAK1e,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAG,IAAG,mBAKvE,aAAasgB,EAAAA,EAAAA,KAJIpf,CAAOud,EAAgBC,IAAiBshB,EAAA9wB,OAAA,sBACvD,aARE,SAAiCl4B,EAAoBynC,EAAgBC,G,yCACzE,OAAO0X,EAAAA,EAAAA,gBACQC,EAAAA,EAAAA,IAASr/C,IAAayvJ,aAAazpH,OAAOyB,GAASzB,OAAO0B,KACvEqB,IACJ,G,CAIiB8jI,CAAiBhzJ,EAAQ4tB,EAAQC,EAChD,KAE+DA,EACjE,CANyE,EAMxE,G,CAEK,SAAUolI,EAAsB9sK,EAAgC0nC,GACpE,OAAOqY,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,GAAKhpD,EACL,aAAa2sK,EAAwB3sK,EAAY0nC,EACnD,KAAG,CAAC1nC,EAAY0nC,IAEpB,CAEM,SAAgBiK,EAAQ3xC,EAAoB4K,EAAe2/B,EAAgBhrC,G,yCAC/E,OAAO6/C,EAAAA,EAAAA,gBAAkCC,EAAAA,EAAAA,IAASr/C,GAAY,IAAO2xC,QAAQ,CAAE/mC,QAAO2/B,SAAQhrC,QAChG,G,CAEM,SAAgBqyC,EAAY5xC,EAAoB4K,EAAe2/B,EAAgBhrC,G,yCACnF,OAAO6/C,EAAAA,EAAAA,gBAAkCC,EAAAA,EAAAA,IAASr/C,GAAY,IAAO4xC,YAAY,CAAEhnC,QAAO2/B,SAAQhrC,QACpG,G,CAEM,SAAgB6tF,EAAKptF,EAAoB4vB,G,yCAC7C,OAAOwvB,EAAAA,EAAAA,gBAAkCC,EAAAA,EAAAA,IAASr/C,GAAY,IAAOotF,KAAKx9D,GAC5E,G,CAEM,SAAgB8hG,EAAkB73G,EAAgB+V,G,yCACtD,OAAOwvB,EAAAA,EAAAA,gBAAkCC,EAAAA,EAAAA,IAASxlC,GAAQ,IAAO63G,kBAAkB9hG,GACrF,G,CAEM,SAAgB2hG,EAAkB13G,EAAgB+V,G,yCACtD,OAAOwvB,EAAAA,EAAAA,gBACQC,EAAAA,EAAAA,IAASxlC,GAAQ,IAAO03G,kBAAkB3hG,GAE3D,G,CAEM,SAAgB2gB,EAAS12B,EAAgBjP,EAAerL,EAAagrC,G,yCACzE,OAAO6U,EAAAA,EAAAA,gBAAkCC,EAAAA,EAAAA,IAASxlC,GAAQ,IAAO02B,SAAS,CAAE3lC,QAAOrL,MAAKgrC,WAC1F,G,CAEM,SAAgBiO,EAAM3+B,EAAgB+V,G,yCAC1C,OAAOwvB,EAAAA,EAAAA,gBAAkCC,EAAAA,EAAAA,IAASxlC,IAAS2+B,MAAM5oB,IAAOmZ,IAC1E,G,CAEM,SAAgBokD,EAAKtzE,EAAgB+V,G,yCACzC,OAAOwvB,EAAAA,EAAAA,gBAAkCC,EAAAA,EAAAA,IAASxlC,GAAQ,IAAOszE,KAAKv9D,GACxE,G,CAEM,SAAgBm9I,EAAQlzJ,EAAgB+V,G,yCAC5C,OAAOwvB,EAAAA,EAAAA,gBAAgEC,EAAAA,EAAAA,IAASxlC,GAAQ,IAAO23G,MAAM5hG,GACvG,G,CAEM,SAAgBugI,EAAqBnwJ,EAAoBgoD,G,yCAC7D,OAAO5I,EAAAA,EAAAA,gBACQC,EAAAA,EAAAA,IAASr/C,IAAamwJ,qBAAqBnoG,IACxDjf,IACJ,G,CAEM,SAAU+uD,EACd93F,EACAgoD,EACAve,GAEA,OAAOsW,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,GAAKhpD,GAAegoD,EACpB,aAAamoG,EAAqBnwJ,EAAYgoD,EAChD,KAAG,CAAChoD,EAAYgoD,IAChBve,EAEJ,CAEM,SAAgB+F,EAAgBxvC,EAAoB6I,G,yCACxD,OAAOu2C,EAAAA,EAAAA,gBAA4CC,EAAAA,EAAAA,IAASr/C,IAAa+vJ,gBAAgBlnJ,IAAUkgC,IACrG,G,CAiBM,SAAUikI,EACdhtK,EACAsvC,EACA7F,GAEA,OAAOsW,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,GAAKhpD,IAAgBsvC,GAAcA,IAAetJ,OAAO,IACzD,aAdA,SAA+BhmC,EAAoBsvC,G,yCACvD,OAAO8P,EAAAA,EAAAA,gBACQC,EAAAA,EAAAA,IAASr/C,IAAaswJ,cAAchhH,IACjDvG,IACJ,G,CAUmBkkI,CAAejtK,EAAYsvC,EAC1C,KAAG,CAACtvC,EAAYsvC,IAChB7F,EAEJ,CAIM,SAAgByjI,EAAsBltK,EAAoBynC,EAAgBC,G,yCAC9E,OAAO0X,EAAAA,EAAAA,gBACQC,EAAAA,EAAAA,IAASr/C,IAAa8uJ,gBAAgB9oH,OAAOyB,GAASzB,OAAO0B,KAC1EqB,IACJ,G,CAWM,SAAgB4X,EAAsBisH,G,yCAAC/yJ,GAAc,IAAAszJ,EAAA,SAAEzlI,EAAK1e,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAG,IAAI,mBAKvE,aAAasgB,EAAAA,EAAAA,KAJIpf,CAAOud,EAAgBC,IAAiBshB,EAAAmkH,OAAA,sBACvD,aAAaD,EAAsBrzJ,EAAQ4tB,EAAQC,EACrD,KAEgEA,EAClE,CANyE,EAMxE,G,CAwCK,SAAgB0lI,EAAmBvkK,G,yCACvC,MAAMkgC,GAAOqW,EAAAA,EAAAA,gBAAkC22G,EAAAA,EAAAA,OAAWrM,SAAS1jH,OAAOn9B,KAAWkgC,KACrF,OAAOvtB,KAAKO,MAAU,OAAJgtB,QAAI,IAAJA,EAAAA,EAAQ,GAC5B,G,CAkIM,SAAgBskI,EAAeC,G,yCAACttK,GAAkB,IAAAutK,EAAA,SAAE7lI,EAAK1e,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAG,IAAI,mBAKpE,aAAawkJ,EAAAA,EAAAA,KAJItjJ,CAAOud,EAAgBC,IAAiBshB,EAAAukH,OAAA,sBACvD,aAPE,SAA6BvtK,EAAoBynC,EAAgBC,G,yCACrE,MAAMnhC,cAAsB84C,EAAAA,EAAAA,IAASr/C,IAAa0vJ,SAAS1pH,OAAOyB,GAASzB,OAAO0B,IAClF,OAAO0X,EAAAA,EAAAA,IAA+C74C,GAAQwiC,IAChE,G,CAIiB0kI,CAAaztK,EAAYynC,EAAQC,EAChD,KAEiEA,EACnE,CANsE,EAMrE,G,CAEK,SAAUgmI,EAAgB1tK,EAAgC0nC,GAC9D,OAAOqY,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,GAAKhpD,EACL,aAAaqtK,EAAgBrtK,EAAY0nC,EAC3C,KAAG,CAAC1nC,EAAY0nC,IAEpB,CAoCM,SAAgB9nB,EAAyB/F,EAAgBioC,G,yCAC7D,OAAO1C,EAAAA,EAAAA,gBAAqCg3G,EAAAA,EAAAA,IAAat0G,IAAWgvG,UAAUj3I,GAChF,G,CAMM,SAAU87E,EAAqB7qD,GACnC,OAAOiV,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,GAAKle,EACL,aARA,SAAsCA,G,yCAC1C,OAAOsU,EAAAA,EAAAA,gBAAoCg3G,EAAAA,EAAAA,OAAgBrF,aAAajmH,IAAU/B,IACpF,G,CAMmB4kI,CAAsB7iI,EACrC,KAAG,CAACA,IAER,CAEM,SAAgB8iI,EAAqB/zJ,EAAgB9T,G,yCACzD,OAAOq5C,EAAAA,EAAAA,gBACQC,EAAAA,EAAAA,IAASxlC,IAASq2I,4BAA4BjwJ,EAAAA,EAAU+b,SAASjW,KAC9EgjC,IACJ,G,CAEM,SAAU8kI,EACdh0J,EACA9T,EACA0jC,GAEA,OAAOsW,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,GAAKjjD,GAAc8T,EACnB,aAAa+zJ,EAAqB/zJ,EAAQ9T,EAC5C,KAAG,CAACA,EAAW8T,IACf4vB,EAEJ,CAEM,SAAgBslH,EAAgBl1I,EAAgB8wB,EAAiB58B,G,yCACrE,OAAOqxC,EAAAA,EAAAA,gBACQC,EAAAA,EAAAA,IAASxlC,GAAQ,IAAOk1I,gBAAgB9uJ,EAAAA,EAAU+b,SAAS2uB,GAAU3E,OAAOj4B,IAE7F,G,CAMM,SAAU+/J,EACdj0J,EACAmrF,EACAv7D,GAEA,OAAOsW,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,GAAKnvC,QAA4B1S,IAAlB69F,EACf,aAZA,SAAqCnrF,EAAgBmrF,G,yCACzD,OAAO5lD,EAAAA,EAAAA,gBAAkCC,EAAAA,EAAAA,IAASxlC,IAASi2I,oBAAoB9pH,OAAOg/D,KAAiBj8D,IACzG,G,CAUmBglI,CAAqBl0J,EAAQmrF,EAC5C,KAAG,CAACA,EAAenrF,IACnB4vB,EAEJ,C,yZCleM,SAAgBukI,EAAYjoK,G,yCAChC,OAAOq5C,EAAAA,EAAAA,gBAAsC62G,EAAAA,EAAAA,OAAe7L,wBAAwBnqJ,EAAAA,EAAU+b,SAASjW,KACpGgjC,IACL,G,CAEM,SAAU2G,EAAY3pC,EAA+B+iC,GACzD,OAAOiX,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,GAAKjjD,EACL,OAAOioK,EAAYjoK,EACrB,KAAG,CAACA,IACJ+iC,EAEJ,C,sbCdM,SAAUmlI,IACd,OAAOluH,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,OAAO5J,EAAAA,EAAAA,gBAISq3G,EAAAA,EAAAA,OAAmB5wH,YAAYkD,IACjD,KAAG,IAEP,CAEM,SAAgBmlI,EAAgBxuK,EAAmBC,EAAmBJ,G,yCAC1E,MAAMgH,cAAsBkwJ,EAAAA,EAAAA,KAAgB,IAAOhQ,gBAAgB/mJ,EAAQC,EAAQJ,GAEnF,OAAO6/C,EAAAA,EAAAA,IAAqB74C,EAC9B,G,CAEM,SAAgBknC,EAAmBlD,EAAgBhrC,G,yCACvD,MAAMgH,cAAsBkwJ,EAAAA,EAAAA,KAAgB,IAAOlmH,SAAS,CAAEhxC,MAAKgrC,WACnE,OAAO6U,EAAAA,EAAAA,IAAqB74C,EAC9B,G,CAEM,SAAgBgnC,EAAgB7tC,EAAgBC,EAAgBJ,G,yCACpE,MAAMgH,cACEkwJ,EAAAA,EAAAA,KAAgB,IACtBrQ,gBAAgBnmJ,EAAAA,EAAU+b,SAAStc,GAASO,EAAAA,EAAU+b,SAASrc,GAASJ,GAE1E,OAAO6/C,EAAAA,EAAAA,IAAqB74C,EAC9B,G,CAEM,SAAU4nK,EAAkBpoK,EAAkC+iC,GAClE,OAAOiX,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,GAAKjjD,EACL,OAAOq5C,EAAAA,EAAAA,gBAAkCq3G,EAAAA,EAAAA,OAAmB5wG,UAAU9/C,IAAYgjC,IACpF,KAAG,CAAChjC,IACJ+iC,EAEJ,C,kgBCvBM,SAAUslI,EAASprG,EAA6Bl6B,GACpD,OAAOiX,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,GAAKga,EACL,aAVA,SAAyBA,G,yCAC7B,OAAO5jB,EAAAA,EAAAA,gBACQ+nH,EAAAA,EAAAA,OAAwBZ,SAASvjG,IAC9Cj6B,IACJ,G,CAMmBw9H,CAASvjG,EACxB,KAAG,CAACA,IACJl6B,EAEJ,CAEM,SAAgBulI,EACpBrrG,EACAzhB,EACAO,G,yCAEA,OAAO1C,EAAAA,EAAAA,gBACQkoH,EAAAA,EAAAA,IAAkB/lH,EAAWO,IAAWolH,UAAUlkG,GAEnE,G,CAEM,SAAgBsrG,EACpB1+I,EACAkyB,G,yCAEA,OAAO1C,EAAAA,EAAAA,gBACQ+nH,EAAAA,EAAAA,IAAqBrlH,IAAWt/C,OAAOotB,GAExD,G,CAEM,SAAgB2+I,EAAmB/vK,EAAYsjD,G,yCACnD,OAAO1C,EAAAA,EAAAA,gBACQ+nH,EAAAA,EAAAA,IAAqBrlH,IAAWmgC,MAAMzjF,GAEvD,G,CAEM,SAAgBgwK,EACpBhwK,EACAsf,EACAgkC,G,yCAEA,OAAO1C,EAAAA,EAAAA,gBACQ+nH,EAAAA,EAAAA,IAAqBrlH,IAAW4kH,UAAUloK,EAAIsf,GAE/D,G,CAEM,SAAgB2wJ,EACpBjwK,EACAoxB,EACAkyB,G,yCAEA,OAAO1C,EAAAA,EAAAA,gBACQ+nH,EAAAA,EAAAA,IAAqBrlH,IAAW2kH,YAAYjoK,EAAIoxB,GAEjE,G,CAEM,SAAgBo1C,EAAev9B,EAAgBC,G,yCACnD,OAAO0X,EAAAA,EAAAA,gBAEG+nH,EAAAA,EAAAA,OACNlB,cAAcjgI,OAAOyB,GAASzB,OAAO0B,KACvCqB,IACJ,G,CAEM,SAAU2lI,EACdjnI,EACAC,EACAoB,GAEA,OAAOiX,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,IAAKnhB,EAAAA,EAAAA,GAAoBJ,EAAQC,GACjC,aAAas9B,EAAev9B,EAAQC,EACtC,KAAG,CAACD,EAAQC,IACZoB,EAEJ,CA6BM,SAAgB6lI,EACpB3mH,EACAvgB,EACAC,G,yCAEA,OAAO0X,EAAAA,EAAAA,gBAEG+nH,EAAAA,EAAAA,OACNd,eAAepmK,EAAAA,EAAU+b,SAASgsC,GAAOhiB,OAAOyB,GAASzB,OAAO0B,KAClEqB,IACJ,G,CAEM,SAAU6lI,EACd5mH,EACAvgB,EACAC,EACAoB,GAEA,OAAOiX,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,GAAKhB,IAASngB,EAAAA,EAAAA,GAAoBJ,EAAQC,GAC1C,aAAainI,EAAmB3mH,EAAOvgB,EAAQC,EACjD,KAAG,CAACsgB,EAAMvgB,EAAQC,IAElBoB,EAEJ,CAwDM,SAAU+lI,EACd7mH,EACAxpD,EACAsf,EACA2pB,EACAC,EACAoB,GAEA,OAAOiX,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,GAAKhB,IAASngB,EAAAA,EAAAA,GAAoBJ,EAAQC,GAE1C,aAhCA,SACJsgB,EACAxpD,EACAsf,EACA2pB,EACAC,G,yCAEA,OAAO0X,EAAAA,EAAAA,gBAEG+nH,EAAAA,EAAAA,OACNf,qBACAnmK,EAAAA,EAAU+b,SAASgsC,QACZ7gD,IAAP3I,EAAmB,IAAK2sK,EAAAA,EAAAA,GAA0B3sK,QACxC2I,IAAV2W,EAAsB,IAAKqtJ,EAAAA,EAAAA,GAA0BnlI,OAAOloB,IAC5DkoB,OAAOyB,GACPzB,OAAO0B,KAETqB,IACJ,G,CAcmB+lI,CACX9mH,EACAxpD,EACAsf,EACA2pB,EACAC,EAEJ,KAAG,CAACsgB,EAAMlqC,EAAO2pB,EAAQC,IACzBoB,EAEJ,C,6aC3NM,SAAUmgD,IACd,OAAOlpC,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,aAPA,W,yCACJ,OAAO5J,EAAAA,EAAAA,gBAA+CkD,EAAAA,EAAAA,OAAasmD,WAAW7/D,IAChF,G,CAKmBgmI,EACf,KAAG,IAEP,CAEM,SAAUC,EAAsBhvK,GACpC,OAAO+/C,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,IAAKhpD,EAAY,OACjB,MAAMinB,GAAOm4B,EAAAA,EAAAA,gBAA+CkD,EAAAA,EAAAA,OAAaZ,IAAI1hD,IAAa+oC,KAC1F,OAAO9hB,EAAOA,EAAK,QAAK9f,CAC1B,KAAG,CAACnH,IAER,CAEM,SAAgBspF,EAAmB7hD,EAAgBC,G,yCACvD,OAAO0X,EAAAA,EAAAA,gBACQgsD,EAAAA,EAAAA,OAAkB3B,eAAezjE,OAAOyB,GAASzB,OAAO0B,GAAQ,KAC7EqB,IACJ,G,CAEM,SAAUztB,IACd,MAAMqtB,EAAOA,CAAOlB,EAAgBC,IAAiBshB,EAAA,gCACnD,MAAMziD,GAAS64C,EAAAA,EAAAA,gBACAgsD,EAAAA,EAAAA,OAAkB3B,eAAezjE,OAAOyB,GAASzB,OAAO0B,GAAQ,KAC7EqB,KAEF,OAAa,OAANxiC,QAAM,IAANA,OAAM,EAANA,EAAQ1B,OACjB,IAEA,OAAOk7C,EAAAA,EAAAA,KACLh1C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,OAAOugC,EAAAA,EAAAA,IAAgD5gD,EAAM,IAAM,EACrE,KAAG,IAEP,C,+aCpCM,SAAgBM,EAAekhB,G,gDAAC,WAAEnqD,EAAU,QAAEb,EAAO,IAAEuoD,GAA0B3oD,EAAA,mBAgBrF,aAfqBgjD,EAAAA,GAAanhD,QAAQ,CACxCZ,aACAg+C,OAAQ,CACNgK,MAAMR,EAAAA,EAAAA,GAAYroD,GACd,CAAE4G,UAAW5G,IACbyI,EAAAA,EAAAA,GAAiBzI,GACjB,CACE4G,UAAW9F,EAAAA,EAAU+b,SAAS7c,IAEhC,CAAEA,WACNyL,MAAO,GACPqnC,WAAYyV,EAAM,IAAIA,QAAOvgD,MAInB4hC,IAChB,CAjBuF,EAiBtF,G,CASK,SAAUpiC,EAAeyE,GAA4D,IAA3D,WAAEpL,EAAU,QAAEb,EAAO,IAAEuoD,EAAG,QAAEje,GAA+Br+B,EAIzF,OAAO68C,EAAAA,EAAAA,KACLl9C,EAAAA,EAAAA,cAAY,IAAWi+C,EAAA,gCACrB,IAAK7pD,IAAYa,EAAY,OAC7B,MAAMY,QAAgBqoC,EAAgB,CAAEjpC,aAAY0nD,MAAKvoD,YACzD,YAAmBgI,IAAZvG,OAAwBuG,EAAY,IAAI0C,EAAAA,EAAUjJ,EAAQ2G,WACnE,KAAG,CAACpI,EAASa,EAAY0nD,IACzBje,EAEJ,C,4YC7CM,SAAUsW,EAAgBrsB,EAAaoV,GAC3C,MAAMviC,GAASqQ,EAAAA,EAAAA,aAAsBzP,IAC9BT,EAASyL,IAAcjG,EAAAA,EAAAA,WAAS,GAavC,OAXA1E,EAAAA,EAAAA,YAAU,KACJksB,IACFntB,EAAO2Q,aAAU/P,EACjBgL,GAAW,GACXuhB,IAAKv1B,MAAM4sD,IACTxkD,EAAO2Q,QAAU6zC,EACjB54C,GAAW,EAAM,IAErB,GACC,CAACuhB,EAAIoV,KAEDxiC,EAAAA,EAAAA,UACL,KAAM,CACJC,OAAQA,EAAO2Q,QACfxQ,aAEF,CAACH,EAAQG,GAEb,CAEM,SAAUuhD,EAAqBv0B,EAAa+V,GAChD,MAAO/iC,EAASyL,IAAcjG,EAAAA,EAAAA,WAAS,GAEjC+iK,GAAWr4J,EAAAA,EAAAA,QAAe,GAC1Bs4J,GAAat4J,EAAAA,EAAAA,QAAyC,CAAC,GAoB7D,OAlBApP,EAAAA,EAAAA,YAAU,KACR,GAAIksB,EAAI,CACNvhB,GAAW,GAEX88J,EAAS/3J,SAAW,EACpB,MAAMnJ,EAAQkhK,EAAS/3J,QAEvBwc,IAAKv1B,MAAMoI,IACT2oK,EAAWh4J,QAAOvY,OAAAyR,OAAAzR,OAAAyR,OAAA,GACb8+J,EAAWh4J,SAAO,CACrB,CAAC+5B,OAAOljC,IAASxH,IAGnB4L,GAAW,EAAM,GAErB,IACC,CAACuhB,EAAI+V,KAEDnjC,EAAAA,EAAAA,UAAQ,KACN,CACLC,OAAQ2oK,EAAWh4J,QAAQ+3J,EAAS/3J,SACpCxQ,aAED,CAACwoK,EAAWh4J,QAAS+3J,EAAS/3J,QAASxQ,GAC5C,CAoGM,SAAgB4iC,EACpBpf,EACAwd,G,+CAEA,MAAMqgD,EAAQA,CAAOtgD,EAAgBC,IAAiBshB,EAAA,gCACpD,aAAa9+B,EAASud,EAAQC,EAChC,IAEMynI,QAAgBpnF,EAAM,EAAG,GACzBuhB,EAAgB5tE,OAA6B,QAAtByuB,EAAO,OAAPglH,QAAO,IAAPA,OAAO,EAAPA,EAAS7lE,qBAAa,IAAAn/C,EAAAA,EAAI,GACjDilH,EACJ9lE,EAAgB5hE,IAAU,EAAI7Y,SAASoiB,OAAOq4D,EAAgB5hE,IAAU7Y,SAASoiB,OAAOq4D,EAAgB5hE,IAAU,EAE9G2hC,EAAsD,GAE5D,IAAK,IAAI9yB,EAAI,EAAGA,EAAI64H,EAAY,EAAG74H,IAAK,CACtC,MAAO9O,IAAU4nI,EAAAA,EAAAA,GAAe94H,EAAG7O,GACnC2hC,EAAQ97D,KAAKw6E,EAAMtgD,EAAQC,GAC7B,CAIA,aAFqBzpC,QAAQoqC,IAAIghC,IAG9Br8D,QAAQ+9C,KAAUA,IAClB13B,QAAO,CAAC+b,EAAMC,K,MACb,OAAOD,EAAK7mC,OAAoB,QAAb4hD,EAAI,OAAJ9a,QAAI,IAAJA,OAAI,EAAJA,EAAMxqC,eAAO,IAAAslD,EAAAA,EAAI,GAAG,GACtC,GACP,G,CAEM,SAAgBqjH,EACpBtjJ,EACAwd,G,iDAEA,MAAMqgD,EAAQA,CAAOtgD,EAAgBC,IAAiBshB,EAAA,gCACpD,aAAa9+B,EAASud,EAAQC,EAChC,IAEM4nI,QAAiBvnF,EAAM,EAAGrgD,GAC1B4hE,EAAgB5tE,OAA8B,QAAvByuB,EAAQ,OAARmlH,QAAQ,IAARA,OAAQ,EAARA,EAAUhmE,qBAAa,IAAAn/C,EAAAA,EAAI,GAClDilH,EACJ9lE,EAAgB5hE,IAAU,EAAI7Y,SAASoiB,OAAOq4D,EAAgB5hE,IAAU7Y,SAASoiB,OAAOq4D,EAAgB5hE,IAAU,EAE9G2hC,EAAsD,GAE5D,IAAK,IAAI9yB,EAAI,EAAGA,EAAI64H,EAAY,EAAG74H,IAAK,CACtC,MAAO9O,IAAU4nI,EAAAA,EAAAA,GAAe94H,EAAG7O,GACnC2hC,EAAQ97D,KAAKw6E,EAAMtgD,EAAQC,GAC7B,CAIA,aAFqBzpC,QAAQoqC,IAAIghC,IAG9Br8D,QAAQ+9C,KAAUA,IAClB13B,QACC,CAAC+b,EAAMC,K,MACL,OAAOD,EAAK7mC,OAAoB,QAAb4hD,EAAI,OAAJ9a,QAAI,IAAJA,OAAI,EAAJA,EAAMxqC,eAAO,IAAAslD,EAAAA,EAAI,GAAG,GAEzB,QAAhBygD,EAAA0kE,EAASzqK,eAAO,IAAA+lG,EAAAA,EAAK,GAE3B,G,gECzNM,SAAUh9F,EACdF,EACAhC,GACiB,IAAjB6jK,EAAWvmJ,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAG,IAEd,MAAOwmJ,EAAOC,IAAYvjK,EAAAA,EAAAA,WAAY,IAAMwB,IACtC4kB,GAAQ1b,EAAAA,EAAAA,UAER84J,GAAgB3kK,EAAAA,EAAAA,cACnB4kK,IACCF,EAASE,GACLr9I,EAAMpb,SACR4Y,aAAawC,EAAMpb,SAErBob,EAAMpb,QAAUqT,YAAW,KACzB7e,EAASikK,GACTr9I,EAAMpb,aAAU/P,CAAS,GACxBooK,EAAY,GAEjB,CAACA,EAAa7jK,IAWhB,OARAlE,EAAAA,EAAAA,YAAU,KACJ8qB,EAAMpb,UACR4Y,aAAawC,EAAMpb,SACnBob,EAAMpb,aAAU/P,GAElBsoK,EAAS/hK,EAAM,GACd,CAACA,IAEG,CAAC8hK,EAAOE,EACjB,C,qWC/BM,SAAUzlI,EACd/f,GAEe,IADf8kC,EAAAhmC,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,IAAAA,UAAA,GACAimC,EAAQjmC,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAG,IAEX,MAAO+f,EAAMC,IAAW98B,EAAAA,EAAAA,eAAwB/E,IACzCmuB,EAAMC,IAAWrpB,EAAAA,EAAAA,UAAiB,GA4BzC,OA1BA1E,EAAAA,EAAAA,YAAU,MACR,W,kCACE,GAAI0iB,EAAU,CACZ,MAAM3jB,QAAe2jB,IAEjB3jB,GACFyiC,EAAQziC,EAEZ,CACF,G,CAEAqpK,EAAY,GACX,CAACt6I,EAAMpL,EAAU8kC,KAEpBxnD,EAAAA,EAAAA,YAAU,KACR,MAAM8qB,EAAQ68B,aAAY,KACpBjlC,GACFqL,GAAStnB,GAAcA,EAAY,GACrC,GACCghD,GAEH,MAAO,KACLG,cAAc98B,EAAM,CACrB,GACA,CAAC28B,EAAU/kC,KAEP5jB,EAAAA,EAAAA,UAAQ,IAAMyiC,GAAM,CAACA,GAC9B,C,oWCKM,SAAgBwgD,EAAsBsmF,EAAAC,G,yCAC1C5lJ,EACAwd,GAAa,IAAAxP,EAAA,SACb63I,EAAW/mJ,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAG,GACdgnJ,EAAoBhnJ,UAAA1a,OAAA,EAAA0a,UAAA,QAAA7hB,EAAA,mBAEpB,IAAI4hC,EAAY,GACZgiI,EAAc,EACdC,GAAa,EAEjB,MAAMjjF,EAAeh6E,GAAiBi7C,EAAA9wB,OAAA,sBACpC6yI,GAAe,QAET9sK,QAAQoqC,IACZjb,MAAM4kB,KAAK,CAAE1jC,OAAQyhK,IAAe,CAACphK,EAAG4nC,IAAMA,IAAG34C,KAAWqtK,GAAcjiH,EAAA,gCACxE,MAAM6+B,GAAoB,OAAXmoF,QAAW,IAAXA,EAAAA,EAAe,GAAK/E,EAAavjI,EAAQ35B,EAAQ25B,EAAQqoI,EAElExpK,QA5BR,SAA8BshF,EAAengD,EAAexd,G,yCAEhE,aADqBA,EAAS29D,EAAOngD,EAEvC,G,CAyB6BuoI,CAAWpoF,EAAOngD,EAAOxd,GAEzC3jB,IAGHwiC,EAAOA,EAAKxgC,OAAOhC,GAEfA,EAAO+H,OAASo5B,IAClBsjI,GAAa,GAKnB,OAGGA,UACGjjF,EAAMgjF,GAEhB,IAIA,aAFMhjF,EAAMgjF,GAELhiI,CACT,CArCsB,EAqCrB,G,sFCnEK,SAAUyvD,IACd,MAAM,OAAEl+E,IAAWuH,EAAAA,EAAAA,MACnB,OAAOvb,EAAAA,EAAAA,UAAQ,IAdX,SAA4BgU,GAChC,IAAI6mF,EAAuB,OAAN7mF,QAAM,IAANA,EAAAA,EAAU,GAE/B,IAAKA,EAAQ,CAEX,MAAM,KAAE2uD,GAASl7C,OAAOnM,SACxBu/E,EAASl4B,EAAKinG,OAAOjnG,EAAKj7D,QAAQ,KACpC,CAEA,OAAOmzF,GAAUA,EAAO7yF,OAAS,GAAIyN,EAAAA,EAAAA,OAAMolF,EAAQ,CAAEgvE,aAAa,EAAOC,mBAAmB,IAAU,CAAC,CACzG,CAIuBC,CAAkB/1J,IAAS,CAACA,GACnD,C,0DCdO,IAAK2oB,GAAZ,SAAYA,GACVA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,eACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,gBACD,CALD,CAAYA,IAAAA,EAAS,KAUd,MAAM+jE,EAAmD,CAC9D,CAAC/jE,EAAUqtI,QAAS,EACpB,CAACrtI,EAAUC,KAAM,GACjB,CAACD,EAAUE,QAAS,GACpB,CAACF,EAAUG,MAAO,I,uECdR0V,EAKAy3H,E,qBALZ,SAAYz3H,GACVA,EAAAA,EAAA,6BACAA,EAAAA,EAAA,8BACD,CAHD,CAAYA,IAAAA,EAAS,KAKrB,SAAYy3H,GACVA,EAAAA,EAAA,2BACAA,EAAAA,EAAA,iCACAA,EAAAA,EAAA,sBACD,CAJD,CAAYA,IAAAA,EAAQ,KAMb,MAAM33G,EAAaytC,IAAAA,OAAY,qE,0ECChC,MAAOjtC,EA+BXhyC,WAAAA,CAAAroB,GAAuF,IAApE,QAAEI,EAAO,SAAEmI,EAAQ,OAAEO,EAAM,KAAEE,EAAI,KAAEY,EAAI,SAAEo9B,GAA2BhnC,EA9BvE,KAAAyxK,UAAkB,EAElB,KAAA/0H,SAAgB,GA6B9B9F,EAAAA,EAAAA,GAAUruC,GAAY,GAAKA,EAAW,KAAOo0B,OAAO+0I,UAAUnpK,GAAW,YAEzEigB,KAAKjgB,SAAWA,EAChBigB,KAAK1f,OAASA,EACd0f,KAAKxf,KAAW,OAAJA,QAAI,IAAJA,EAAAA,EAAQ,GACpBwf,KAAK5e,KAAW,OAAJA,QAAI,IAAJA,EAAAA,EAAQ,GACpB4e,KAAKwe,SAAWA,EAChBxe,KAAKpoB,SAAUuxK,EAAAA,EAAAA,GAA6BvxK,EAC9C,CAMOg0C,MAAAA,CAAOrzB,GACZ,OAAOA,EAAM27B,SAAWl0B,KAAKpoB,UAAY2gB,EAAM3gB,OACjD,CAQO20C,WAAAA,CAAYh0B,GAEjB,OADA61B,EAAAA,EAAAA,GAAUpuB,KAAKpoB,UAAY2gB,EAAM3gB,QAAS,aACnCooB,KAAKpoB,QAAQ6/E,cAAgBl/D,EAAM3gB,QAAQ6/E,aACpD,E,wICpEF,MAAM2xF,EAAMtjI,IAASujI,EAAAA,GAEf,MAAOv+H,UAAwCiI,EAAAA,EAU5C,oBAAOhI,CAA+BY,EAAatC,GACxD,OAAO,IAAIyB,EAAea,EAAUtC,EACtC,CAQO,2BAAO0I,CACZpG,EACA+D,EACAD,GAEA,OAAO,IAAI3E,EAAea,EAAU+D,EAAWD,EACjD,CAEA5vB,WAAAA,CAAsB8rB,EAAa+D,EAAsBD,GACvD3vB,MAAM4vB,EAAWD,IACjBrB,EAAAA,EAAAA,GAAU0wD,IAAAA,gBAAqB9+E,KAAK6wB,SAAUwgB,EAAAA,IAAa,UAC3DrxC,KAAK2rB,SAAWA,EAChB3rB,KAAK1G,aAAewlF,IAAAA,aAAkBA,IAAAA,OAAY,IAAKA,IAAAA,OAAYnzD,EAAS5rC,UAC9E,CAEO8rC,GAAAA,CAAItzB,IACT61B,EAAAA,EAAAA,GAAUpuB,KAAK2rB,SAASC,OAAOrzB,EAAMozB,UAAW,YAChD,MAAM29H,EAAQxpJ,MAAM+rB,IAAItzB,GACxB,OAAOuyB,EAAeiH,qBAAqB/xB,KAAK2rB,SAAU29H,EAAM55H,UAAW45H,EAAM75H,YACnF,CAEOyB,QAAAA,CAAS34B,IACd61B,EAAAA,EAAAA,GAAUpuB,KAAK2rB,SAASC,OAAOrzB,EAAMozB,UAAW,YAChD,MAAM49H,EAAazpJ,MAAMoxB,SAAS34B,GAClC,OAAOuyB,EAAeiH,qBAAqB/xB,KAAK2rB,SAAU49H,EAAW75H,UAAW65H,EAAW95H,YAC7F,CAEOF,QAAAA,CAASh3B,GACd,MAAMixJ,EAAa1pJ,MAAMyvB,SAASh3B,GAClC,OAAOuyB,EAAeiH,qBAAqB/xB,KAAK2rB,SAAU69H,EAAW95H,UAAW85H,EAAW/5H,YAC7F,CAEO0B,MAAAA,CAAO54B,GACZ,MAAMkxJ,EAAU3pJ,MAAMqxB,OAAO54B,GAC7B,OAAOuyB,EAAeiH,qBAAqB/xB,KAAK2rB,SAAU89H,EAAQ/5H,UAAW+5H,EAAQh6H,YACvF,CAEOi6H,aAAAA,GAA8F,IAAhFC,EAAiBloJ,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAG,EAAGmoJ,EAAenoJ,UAAA1a,OAAA,EAAA0a,UAAA,QAAA7hB,EAAEiqK,EAAApoJ,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAqBunJ,EAAAA,GAASvvE,WACzF,OAAO35E,MAAMqxB,OAAOnxB,KAAK1G,cAAcowJ,cAAcC,EAAmBC,EAAQC,EAClF,CAEO//G,OAAAA,GAGmC,IAFxCggH,EAAAroJ,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAwBzB,KAAK2rB,SAAS5rC,SACtC6pK,EAAenoJ,UAAA1a,OAAA,EAAA0a,UAAA,QAAA7hB,EACfiqK,EAAApoJ,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAqBunJ,EAAAA,GAASvvE,WAG9B,OADArrD,EAAAA,EAAAA,GAAU07H,GAAiB9pJ,KAAK2rB,SAAS5rC,SAAU,YAC5C+f,MAAMqxB,OAAOnxB,KAAK1G,cAAcwwC,QAAQggH,EAAeF,EAAQC,EACxE,CAEO7kI,OAAAA,GAA+C,IAAvC4kI,EAAAnoJ,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAiB,CAAE08E,eAAgB,IAEhD,OADAirE,EAAIW,GAAK/pJ,KAAK2rB,SAAS5rC,SAChB,IAAIqpK,EAAIppJ,KAAK6wB,SAAS7wC,YAAYq+F,IAAIr+E,KAAK1G,aAAatZ,YAAY8lC,SAAS8jI,EACtF,CAEA,WAAWt9H,GACT,OAAItsB,KAAK2rB,SAASuI,QAAgBl0B,KAC3B8qB,EAAeiH,qBAAqB/xB,KAAK2rB,SAASW,QAAStsB,KAAK0vB,UAAW1vB,KAAKyvB,YACzF,E,iJChFF,MAAMu6H,EAAUlkI,IAASmkI,KACnBb,EAAMtjI,IAASujI,EAAAA,GAEfa,EAAwB,CAC5B,CAAClB,EAAAA,GAASvvE,YAAauwE,EAAQvwE,WAC/B,CAACuvE,EAAAA,GAASmB,eAAgBH,EAAQG,cAClC,CAACnB,EAAAA,GAASoB,UAAWJ,EAAQI,UAG/B,IAAWC,GAAX,SAAWA,GAKTA,EAAAA,EAAA,yBAKAA,EAAAA,EAAA,6BAKAA,EAAAA,EAAA,iCAIAA,EAAAA,EAAA,oBACD,CApBD,CAAWA,IAAAA,EAAY,KAsBvB,MAAMC,EAAkB,CACtB,CAACtB,EAAAA,GAASvvE,YAAa4wE,EAAaE,UACpC,CAACvB,EAAAA,GAASmB,eAAgBE,EAAaG,YACvC,CAACxB,EAAAA,GAASoB,UAAWC,EAAaI,SAG9B,MAAO13H,EAIXlzB,WAAAA,CACE6vB,GACuC,IAAvCD,EAAAhuB,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAyBq9E,IAAAA,OAAY,GAErC9+E,KAAK0vB,UAAYovD,IAAAA,OAAYpvD,GAC7B1vB,KAAKyvB,YAAcqvD,IAAAA,OAAYrvD,EACjC,CAEQ,uBAAOi7H,CAAiBC,GAC9B,GACEA,aAAuB7rE,KACA,kBAAhB6rE,GACgB,kBAAhBA,EAEP,OAAO,IAAI53H,EAAS43H,GAEtB,GAAI,cAAeA,GAAe,gBAAiBA,EACjD,OAAOA,EACT,MAAM,IAAI7zK,MAAM,2BAClB,CAGA,YAAW+5C,GACT,OAAOiuD,IAAAA,OAAY9+E,KAAK0vB,UAAW1vB,KAAKyvB,YAC1C,CAGA,aAAWm7H,GACT,OAAO,IAAI73H,EACT+rD,IAAAA,UAAe9+E,KAAK0vB,UAAW1vB,KAAKyvB,aACpCzvB,KAAKyvB,YAET,CAEOwD,MAAAA,GACL,OAAO,IAAIF,EAAS/yB,KAAKyvB,YAAazvB,KAAK0vB,UAC7C,CAEO7D,GAAAA,CAAItzB,GACT,MAAMsyJ,EAAc93H,EAAS23H,iBAAiBnyJ,GAC9C,OAAIumF,IAAAA,MAAW9+E,KAAKyvB,YAAao7H,EAAYp7H,aACpC,IAAIsD,EACT+rD,IAAAA,IAAS9+E,KAAK0vB,UAAWm7H,EAAYn7H,WACrC1vB,KAAKyvB,aAGF,IAAIsD,EACT+rD,IAAAA,IACEA,IAAAA,SAAc9+E,KAAK0vB,UAAWm7H,EAAYp7H,aAC1CqvD,IAAAA,SAAc+rE,EAAYn7H,UAAW1vB,KAAKyvB,cAE5CqvD,IAAAA,SAAc9+E,KAAKyvB,YAAao7H,EAAYp7H,aAEhD,CAEOyB,QAAAA,CAAS34B,GACd,MAAMsyJ,EAAc93H,EAAS23H,iBAAiBnyJ,GAC9C,OAAIumF,IAAAA,MAAW9+E,KAAKyvB,YAAao7H,EAAYp7H,aACpC,IAAIsD,EACT+rD,IAAAA,SAAc9+E,KAAK0vB,UAAWm7H,EAAYn7H,WAC1C1vB,KAAKyvB,aAGF,IAAIsD,EACT+rD,IAAAA,SACEA,IAAAA,SAAc9+E,KAAK0vB,UAAWm7H,EAAYp7H,aAC1CqvD,IAAAA,SAAc+rE,EAAYn7H,UAAW1vB,KAAKyvB,cAE5CqvD,IAAAA,SAAc9+E,KAAKyvB,YAAao7H,EAAYp7H,aAEhD,CAEOU,QAAAA,CAAS53B,GACd,MAAMsyJ,EAAc93H,EAAS23H,iBAAiBnyJ,GAC9C,OAAOumF,IAAAA,SACLA,IAAAA,SAAc9+E,KAAK0vB,UAAWm7H,EAAYp7H,aAC1CqvD,IAAAA,SAAc+rE,EAAYn7H,UAAW1vB,KAAKyvB,aAE9C,CAEOK,OAAAA,CAAQv3B,GACb,MAAMsyJ,EAAc93H,EAAS23H,iBAAiBnyJ,GAC9C,OAAOumF,IAAAA,MACLA,IAAAA,SAAc9+E,KAAK0vB,UAAWm7H,EAAYp7H,aAC1CqvD,IAAAA,SAAc+rE,EAAYn7H,UAAW1vB,KAAKyvB,aAE9C,CAEOiH,WAAAA,CAAYn+B,GACjB,MAAMsyJ,EAAc93H,EAAS23H,iBAAiBnyJ,GAC9C,OAAOumF,IAAAA,YACLA,IAAAA,SAAc9+E,KAAK0vB,UAAWm7H,EAAYp7H,aAC1CqvD,IAAAA,SAAc+rE,EAAYn7H,UAAW1vB,KAAKyvB,aAE9C,CAEOF,QAAAA,CAASh3B,GACd,MAAMsyJ,EAAc93H,EAAS23H,iBAAiBnyJ,GAC9C,OAAO,IAAIw6B,EACT+rD,IAAAA,SAAc9+E,KAAK0vB,UAAWm7H,EAAYn7H,WAC1CovD,IAAAA,SAAc9+E,KAAKyvB,YAAao7H,EAAYp7H,aAEhD,CAEO0B,MAAAA,CAAO54B,GACZ,MAAMsyJ,EAAc93H,EAAS23H,iBAAiBnyJ,GAC9C,OAAO,IAAIw6B,EACT+rD,IAAAA,SAAc9+E,KAAK0vB,UAAWm7H,EAAYp7H,aAC1CqvD,IAAAA,SAAc9+E,KAAKyvB,YAAao7H,EAAYn7H,WAEhD,CAEOg6H,aAAAA,CACLC,GAE2C,IAD3CC,EAAAnoJ,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAiB,CAAE08E,eAAgB,IACnC0rE,EAAApoJ,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAqBunJ,EAAAA,GAASmB,eAE9B/7H,EAAAA,EAAAA,GACEja,OAAO+0I,UAAUS,GAAkB,GAAA3oK,OAChC2oK,EAAiB,yBAEtBv7H,EAAAA,EAAAA,GAAUu7H,EAAoB,EAAG,GAAF3oK,OAAK2oK,EAAiB,sBAErDK,EAAQvnH,IAAI,CACVqoH,UAAWnB,EAAoB,EAC/BE,SAAUK,EAAsBL,KAElC,MAAMh5H,EAAW,IAAIm5H,EAAQhqJ,KAAK0vB,UAAU1vC,YACzCq+F,IAAIr+E,KAAKyvB,YAAYzvC,YACrB+qK,oBAAoBpB,GACvB,OAAO94H,EAAS/K,SAAS+K,EAASi5H,gBAAiBF,EACrD,CAEO9/G,OAAAA,CACLggH,GAE2C,IAD3CF,EAAAnoJ,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAiB,CAAE08E,eAAgB,IACnC0rE,EAAApoJ,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAqBunJ,EAAAA,GAASmB,cAU9B,OARA/7H,EAAAA,EAAAA,GACEja,OAAO+0I,UAAUY,GAAc,GAAA9oK,OAC5B8oK,EAAa,yBAElB17H,EAAAA,EAAAA,GAAU07H,GAAiB,EAAG,GAAF9oK,OAAK8oK,EAAa,kBAE9CV,EAAIW,GAAKD,EACTV,EAAI4B,GAAKV,EAAgBT,GAClB,IAAIT,EAAIppJ,KAAK0vB,UAAU1vC,YAC3Bq+F,IAAIr+E,KAAKyvB,YAAYzvC,YACrB8lC,SAASgkI,EAAeF,EAC7B,CAKA,cAAWqB,GACT,OAAO,IAAIl4H,EAAS/yB,KAAK0vB,UAAW1vB,KAAKyvB,YAC3C,E,mFCzMF,MAAMy7H,EAAc,IAAIn4H,EAAAA,EAAS+rD,IAAAA,OAAY,MAM7C,SAASqsE,EAAUvsE,GACjB,OAAO,IAAIpiE,EAAQoiE,EAASlvD,UAAWkvD,EAASnvD,YAClD,CAEM,MAAOjT,UAAgBuW,EAAAA,EAA7BlzB,WAAAA,G,oBAIkB,KAAAurJ,WAAkB,CAyBpC,CAvBEv/H,GAAAA,CAAItzB,GACF,OAAO4yJ,EAAUrrJ,MAAM+rB,IAAItzB,GAC7B,CAEA24B,QAAAA,CAAS34B,GACP,OAAO4yJ,EAAUrrJ,MAAMoxB,SAAS34B,GAClC,CAEAg3B,QAAAA,CAASh3B,GACP,OAAO4yJ,EAAUrrJ,MAAMyvB,SAASh3B,GAClC,CAEA44B,MAAAA,CAAO54B,GACL,OAAO4yJ,EAAUrrJ,MAAMqxB,OAAO54B,GAChC,CAEOmxJ,aAAAA,GAAiF,IAAnEC,EAAAloJ,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAA4B,EAAGmoJ,EAAenoJ,UAAA1a,OAAA,EAAA0a,UAAA,QAAA7hB,EAAEiqK,EAAmBpoJ,UAAA1a,OAAA,EAAA0a,UAAA,QAAA7hB,EACtF,OAAOkgB,MAAMyvB,SAAS27H,GAAaxB,cAAcC,EAAmBC,EAAQC,EAC9E,CAEO//G,OAAAA,GAAuE,IAA/DggH,EAAAroJ,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAwB,EAAGmoJ,EAAenoJ,UAAA1a,OAAA,EAAA0a,UAAA,QAAA7hB,EAAEiqK,EAAmBpoJ,UAAA1a,OAAA,EAAA0a,UAAA,QAAA7hB,EAC5E,OAAOkgB,MAAMyvB,SAAS27H,GAAaphH,QAAQggH,EAAeF,EAAQC,EACpE,E,yGClCI,MAAOr6H,UAAyDuD,EAAAA,EAWpElzB,WAAAA,GAUE,IAAIwrJ,EAAyBC,EAA2B77H,EAA4BC,EAAqB,QAAAtnB,EAAA3G,UAAA1a,OATtGshB,EAOE,IAAAxC,MAAAuC,GAAAE,EAAA,EAAAA,EAAAF,EAAAE,IAPFD,EAOEC,GAAA7G,UAAA6G,GAIL,GAAoB,IAAhBD,EAAKthB,QACNskK,EAAcC,EAAe77H,EAAaC,GAAarnB,MACnD,CACL,MAAMrpB,EAASqpB,EAAK,GAAGkjJ,YAAYp6H,OAAO9oB,EAAK,GAAGmjJ,aACjDH,EAAcC,EAAe77H,EAAaC,GAAa,CACtDrnB,EAAK,GAAGmjJ,WAAW7/H,SACnBtjB,EAAK,GAAGkjJ,YAAY5/H,SACpB3sC,EAAOywC,YACPzwC,EAAO0wC,UAEX,CACA5vB,MAAM4vB,EAAWD,GAEjBzvB,KAAKqrJ,aAAeA,EACpBrrJ,KAAKsrJ,cAAgBA,EACrBtrJ,KAAKyrJ,OAAS,IAAI14H,EAAAA,EAChB+rD,IAAAA,aAAkBA,IAAAA,OAAY,IAAKA,IAAAA,OAAYusE,EAAatrK,WAC5D++F,IAAAA,aAAkBA,IAAAA,OAAY,IAAKA,IAAAA,OAAYwsE,EAAcvrK,WAEjE,CAKOkzC,MAAAA,GACL,OAAO,IAAIzD,EAAMxvB,KAAKsrJ,cAAetrJ,KAAKqrJ,aAAcrrJ,KAAK0vB,UAAW1vB,KAAKyvB,YAC/E,CAMOF,QAAAA,CAAoCh3B,IACzC61B,EAAAA,EAAAA,GAAUpuB,KAAKsrJ,cAAc1/H,OAAOrzB,EAAM8yJ,cAAe,SACzD,MAAMzsE,EAAW9+E,MAAMyvB,SAASh3B,GAChC,OAAO,IAAIi3B,EAAMxvB,KAAKqrJ,aAAc9yJ,EAAM+yJ,cAAe1sE,EAASnvD,YAAamvD,EAASlvD,UAC1F,CAMOuB,KAAAA,CAAM+Y,IACX5b,EAAAA,EAAAA,GAAU4b,EAAere,SAASC,OAAO5rB,KAAKqrJ,cAAe,SAC7D,MAAMrsK,EAAS8gB,MAAMyvB,SAASya,GAC9B,OAAOlf,EAAAA,EAAeiH,qBAAqB/xB,KAAKsrJ,cAAetsK,EAAO0wC,UAAW1wC,EAAOywC,YAC1F,CAMA,uBAAYi8H,GACV,OAAO5rJ,MAAMyvB,SAASvvB,KAAKyrJ,OAC7B,CAEO/B,aAAAA,GAAyE,IAA3DC,EAAiBloJ,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAG,EAAGmoJ,EAAenoJ,UAAA1a,OAAA,EAAA0a,UAAA,QAAA7hB,EAAEiqK,EAAmBpoJ,UAAA1a,OAAA,EAAA0a,UAAA,QAAA7hB,EAC9E,OAAOogB,KAAK0rJ,oBAAoBhC,cAAcC,EAAmBC,EAAQC,EAC3E,CAEO//G,OAAAA,GAA+D,IAAvDggH,EAAaroJ,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAG,EAAGmoJ,EAAenoJ,UAAA1a,OAAA,EAAA0a,UAAA,QAAA7hB,EAAEiqK,EAAmBpoJ,UAAA1a,OAAA,EAAA0a,UAAA,QAAA7hB,EACpE,OAAOogB,KAAK0rJ,oBAAoB5hH,QAAQggH,EAAeF,EAAQC,EACjE,E,0ECxFI,MAAgB8B,EAsCpB9rJ,WAAAA,CAAAroB,GAcC,IAdqB,SACpBuI,EAAQ,OACRO,EAAM,KACNE,EAAI,KACJY,EAAI,SACJo9B,EAAQ,SACR1mC,GAQDN,GACC42C,EAAAA,EAAAA,GAAUruC,GAAY,GAAKA,EAAW,KAAOo0B,OAAO+0I,UAAUnpK,GAAW,YAEzEigB,KAAKjgB,SAAWA,EAChBigB,KAAK1f,OAASA,EACd0f,KAAKxf,KAAW,OAAJA,QAAI,IAAJA,EAAAA,EAAQ,GACpBwf,KAAK5e,KAAW,OAAJA,QAAI,IAAJA,EAAAA,EAAQ,GACpB4e,KAAKwe,SAAmB,OAARA,QAAQ,IAARA,EAAAA,EAAY,EAC5Bxe,KAAKloB,SAAWA,CAClB,EC/CI,MAAOJ,UAAci0K,EAUzB9rJ,WAAAA,CAAAroB,GAAiG,IAA9E,QAAEI,EAAO,SAAEmI,EAAQ,OAAEO,EAAM,KAAEE,EAAI,KAAEY,EAAI,SAAEo9B,EAAQ,SAAE1mC,GAA2BN,EAC/FsoB,MAAM,CACJ/f,WACAO,SACAE,OACAY,OACAo9B,WACA1mC,aAhBY,KAAAmxK,UAAkB,EAElB,KAAA/0H,SAAgB,EAiB9Bl0B,KAAKpoB,SAAUg0K,EAAAA,EAAAA,GAAwBh0K,EACzC,CAMOg0C,MAAAA,CAAOrzB,GACZ,OAAOA,EAAM27B,SAAWl0B,KAAKpoB,UAAY2gB,EAAM3gB,OACjD,CAQO20C,WAAAA,CAAYh0B,GAEjB,OADA61B,EAAAA,EAAAA,GAAUpuB,KAAKpoB,UAAY2gB,EAAM3gB,QAAS,aACnCooB,KAAKpoB,QAAQ6/E,cAAgBl/D,EAAM3gB,QAAQ6/E,aACpD,CAKA,WAAWnrC,GACT,OAAOtsB,IACT,E,kFC3DI,SAAU4rJ,EAAwBh0K,GACtC,IAAIyI,EAAAA,EAAAA,GAAiBzI,GAAU,OAAOA,EACtC,MAAM,IAAId,MAAM,GAADkK,OAAIpJ,EAAO,4BAC5B,CAEM,SAAUuxK,EAA6BvxK,GAC3C,IACE,OAAO86C,EAAAA,EAAAA,YAAW96C,EACpB,CAAE,MAAOqU,GACP,MAAM,IAAInV,MAAM,GAADkK,OAAIpJ,EAAO,4BAC5B,CACF,C,+HCfM,MAAgBi0K,EAIpBhsJ,WAAAA,GAAuB,CAEhB,eAAOisJ,CAAShjK,EAASC,GAC9B,OAAI+1F,IAAAA,SAAc/1F,EAAG8pC,EAAAA,IACZisD,IAAAA,SAAch2F,EAAGg2F,IAAAA,SAAc/1F,EAAGgjK,EAAAA,KAElCjtE,IAAAA,IAASh2F,EAAGC,EAEvB,E,0BCTF,MAAMijK,EAAUltE,IAAAA,aAAkBA,IAAAA,OAAY,IAAKA,IAAAA,OAAY,IAEzD,MAAgBmtE,EAIpBpsJ,WAAAA,GAAuB,CAEhB,sBAAOqsJ,CACZC,EACAC,EACA9nI,EACA+nI,EACAC,GAEA,MAAMC,EAKD,CAAC,EAEAl2H,EAAayoD,IAAAA,mBAAwBqtE,EAAqBC,GAC1Dh7H,EAAU0tD,IAAAA,mBAAwButE,EAAiBx5H,EAAAA,IAEzD,GAAIzB,EAAS,CACX,MAAMo7H,EAAyB1tE,IAAAA,OAC7BA,IAAAA,SAAcutE,EAAiBvtE,IAAAA,SAAcktE,EAASltE,IAAAA,OAAYwtE,KAClEN,GAEFO,EAAal7H,SAAWgF,EACpBo2H,EAAAA,EAAcC,gBAAgBN,EAAoBD,EAAqB7nI,GAAW,GAClFmoI,EAAAA,EAAcE,gBAAgBR,EAAqBC,EAAoB9nI,GAAW,GAClFw6D,IAAAA,mBAAwB0tE,EAAwBD,EAAal7H,UAC/Dk7H,EAAaK,iBAAmBR,EAEhCG,EAAaK,iBAAmBH,EAAAA,EAAcI,0BAC5CV,EACA7nI,EACAkoI,EACAn2H,EAGN,MACEk2H,EAAa76H,UAAY2E,EACrBo2H,EAAAA,EAAcE,gBAAgBP,EAAoBD,EAAqB7nI,GAAW,GAClFmoI,EAAAA,EAAcC,gBAAgBP,EAAqBC,EAAoB9nI,GAAW,GAClFw6D,IAAAA,mBAAwBA,IAAAA,SAAcutE,EAAiBN,EAAAA,IAAeQ,EAAa76H,WACrF66H,EAAaK,iBAAmBR,EAEhCG,EAAaK,iBAAmBH,EAAAA,EAAcK,2BAC5CX,EACA7nI,EACAw6D,IAAAA,SAAcutE,EAAiBN,EAAAA,IAC/B11H,GAKN,MAAMxZ,EAAMiiE,IAAAA,MAAWstE,EAAoBG,EAAaK,kBAqCxD,OAnCIv2H,GACFk2H,EAAal7H,SACXxU,GAAOuU,EACHm7H,EAAal7H,SACbo7H,EAAAA,EAAcC,gBAAgBH,EAAaK,iBAAkBT,EAAqB7nI,GAAW,GACnGioI,EAAa76H,UACX7U,IAAQuU,EACJm7H,EAAa76H,UACb+6H,EAAAA,EAAcE,gBAAgBJ,EAAaK,iBAAkBT,EAAqB7nI,GAAW,KAEnGioI,EAAal7H,SACXxU,GAAOuU,EACHm7H,EAAal7H,SACbo7H,EAAAA,EAAcE,gBAAgBR,EAAqBI,EAAaK,iBAAkBtoI,GAAW,GACnGioI,EAAa76H,UACX7U,IAAQuU,EACJm7H,EAAa76H,UACb+6H,EAAAA,EAAcC,gBAAgBP,EAAqBI,EAAaK,iBAAkBtoI,GAAW,KAGhG8M,GAAW0tD,IAAAA,YAAiBytE,EAAa76H,UAAYotD,IAAAA,SAAcutE,EAAiBN,EAAAA,OACvFQ,EAAa76H,UAAYotD,IAAAA,SAAcutE,EAAiBN,EAAAA,KAGtD36H,GAAW0tD,IAAAA,SAAcytE,EAAaK,iBAAkBR,GAE1DG,EAAalgI,UAAYyyD,IAAAA,SAAcutE,EAAiBE,EAAal7H,UAErEk7H,EAAalgI,UAAY0gI,EAAAA,EAASC,iBAChCT,EAAal7H,SACbytD,IAAAA,OAAYwtE,GACZxtE,IAAAA,SAAcktE,EAASltE,IAAAA,OAAYwtE,KAIhC,CAACC,EAAaK,iBAAmBL,EAAal7H,SAAWk7H,EAAa76H,UAAY66H,EAAalgI,UACxG,E,qTC1EI,MAAO4gI,EAELC,OAAAA,CAAQC,G,yCACZ,MAAM,IAAIr2K,MAAMm2K,EAAmBG,cACrC,G,CAEMC,gCAAAA,CACJF,EACAG,EACAC,G,yCAEA,MAAM,IAAIz2K,MAAMm2K,EAAmBG,cACrC,G,ECnCF,SAASI,EAAe7mI,EAASC,GAC/B,OAAOD,EAAEngC,MAAQogC,EAAEpgC,KACrB,CDsBiBymK,EAAAG,cAAgB,kCCjB3B,MAAgBK,EAIpB5tJ,WAAAA,GAAuB,CAEhB,mBAAO6tJ,CAAa/gI,EAAep0C,IACxC61C,EAAAA,EAAAA,GAAU71C,EAAc,EAAG,yBAE3B61C,EAAAA,EAAAA,GACEzB,EAAM4F,OAAM/6C,IAAA,IAAC,MAAEgP,GAAOhP,EAAA,OAAKiuB,KAAKkoJ,IAAInnK,GAASjO,IAAgB,CAAC,IAC9D,iBAIF61C,EAAAA,EAAAA,GACE0wD,IAAAA,MACEnyD,EAAM7gB,QAAO,CAAC8hJ,EAAW/pK,KAAA,IAAE,aAAE4hJ,GAAc5hJ,EAAA,OAAKi7F,IAAAA,IAAS8uE,EAAanoB,EAAa,GAAE5yG,EAAAA,IACrFA,EAAAA,IAEF,aAGFzE,EAAAA,EAAAA,GC9BE,SAAsB4G,EAAgB7G,GAC1C,IAAK,IAAIa,EAAI,EAAGA,EAAIgG,EAAKjuC,OAAS,EAAGioC,IACnC,GAAIb,EAAW6G,EAAKhG,GAAIgG,EAAKhG,EAAI,IAAM,EACrC,OAAO,EAGX,OAAO,CACT,CDuBc6+H,CAASlhI,EAAO6gI,GAAiB,SAC7C,CAEO,sBAAOM,CAAgBnhI,EAAwB5e,GAEpD,OADAqgB,EAAAA,EAAAA,GAAUzB,EAAM5lC,OAAS,EAAG,UACrBgnB,EAAO4e,EAAM,GAAGnmC,KACzB,CAEO,yBAAOunK,CAAmBphI,EAAwB5e,GAEvD,OADAqgB,EAAAA,EAAAA,GAAUzB,EAAM5lC,OAAS,EAAG,UACrBgnB,GAAQ4e,EAAMA,EAAM5lC,OAAS,GAAGP,KACzC,CAEO,cAAO0mK,CAAQvgI,EAAwBnmC,GAC5C,MAAMunB,EAAO4e,EAAM3sB,KAAKguJ,aAAarhI,EAAOnmC,IAE5C,OADA4nC,EAAAA,EAAAA,GAAUrgB,EAAKvnB,QAAUA,EAAO,iBACzBunB,CACT,CAQQ,mBAAOigJ,CAAarhI,EAAwB5e,IAClDqgB,EAAAA,EAAAA,IAAWpuB,KAAK8tJ,gBAAgBnhI,EAAO5e,GAAO,kBAE9C,IAEIihB,EAFAi/H,EAAI,EACJ13G,EAAI5pB,EAAM5lC,OAAS,EAEvB,OAAa,CAGX,GAFAioC,EAAIvpB,KAAKyoJ,OAAOD,EAAI13G,GAAK,GAErB5pB,EAAMqC,GAAGxoC,OAASunB,IAASihB,IAAMrC,EAAM5lC,OAAS,GAAK4lC,EAAMqC,EAAI,GAAGxoC,MAAQunB,GAC5E,OAAOihB,EAGLrC,EAAMqC,GAAGxoC,MAAQunB,EACnBkgJ,EAAIj/H,EAAI,EAERunB,EAAIvnB,EAAI,CAEZ,CACF,CAEO,0BAAOm/H,CAAoBxhI,EAAwB5e,EAAcqgJ,GACtE,GAAIA,EAAK,CAEP,IADAhgI,EAAAA,EAAAA,IAAWq/H,EAASK,gBAAgBnhI,EAAO5e,GAAO,kBAC9C0/I,EAASM,mBAAmBphI,EAAO5e,GACrC,OAAO4e,EAAMA,EAAM5lC,OAAS,GAG9B,OAAO4lC,EADO3sB,KAAKguJ,aAAarhI,EAAO5e,GAEzC,CAEE,IADAqgB,EAAAA,EAAAA,IAAWpuB,KAAK+tJ,mBAAmBphI,EAAO5e,GAAO,uBAC7C/N,KAAK8tJ,gBAAgBnhI,EAAO5e,GAC9B,OAAO4e,EAAM,GAGf,OAAOA,EADO3sB,KAAKguJ,aAAarhI,EAAO5e,GAClB,EAEzB,CAEO,uCAAOs/I,CACZ1gI,EACA5e,EACAqgJ,EACA71K,GAEA,MAAM81K,EAAa5oJ,KAAKyoJ,MAAMngJ,EAAOx1B,GAErC,GAAI61K,EAAK,CACP,MACME,GADUD,GAAc,GACF,GAAK91K,EAEjC,GAAIk1K,EAASK,gBAAgBnhI,EAAO5e,GAClC,MAAO,CAACugJ,GAAS,GAGnB,MAAM9nK,EAAQinK,EAASU,oBAAoBxhI,EAAO5e,EAAMqgJ,GAAK5nK,MACvD2nK,EAAsB1oJ,KAAKoX,IAAIyxI,EAAS9nK,GAC9C,MAAO,CAAC2nK,EAAqBA,IAAwB3nK,EACvD,CAAO,CACL,MACM+nK,KADWF,EAAa,GAAM,GACP,GAAM,GAAK,GAAK91K,EAE7C,GAAIynB,KAAK+tJ,mBAAmBphI,EAAO5e,GACjC,MAAO,CAACwgJ,GAAS,GAGnB,MAAM/nK,EAAQwZ,KAAKmuJ,oBAAoBxhI,EAAO5e,EAAMqgJ,GAAK5nK,MACnD2nK,EAAsB1oJ,KAAKmX,IAAI2xI,EAAS/nK,GAC9C,MAAO,CAAC2nK,EAAqBA,IAAwB3nK,EACvD,CACF,EExHI,MAAOgoK,EAOX3uJ,WAAAA,CAAAroB,GAAwE,IAA5D,MAAEgP,EAAK,eAAEo/I,EAAc,aAAEH,GAAmCjuJ,GACtE42C,EAAAA,EAAAA,GAAU5nC,GAAS04F,EAAAA,EAASI,UAAY94F,GAAS04F,EAAAA,EAASE,SAAU,QACpEp/E,KAAKxZ,MAAQA,EACbwZ,KAAK4lI,eAAiB9mD,IAAAA,OAAY8mD,GAClC5lI,KAAKylI,aAAe3mD,IAAAA,OAAY2mD,EAClC,E,0SCfI,MAAOgpB,EAGX5uJ,WAAAA,CAAY8sB,EAAuCp0C,GACjD,MAAMm2K,EAAsB/hI,EAAMt2C,KAAKa,GACrCA,aAAas3K,EAAOt3K,EAAI,IAAIs3K,EAAKt3K,KAEnCu2K,EAASC,aAAagB,EAAan2K,GACnCynB,KAAK2sB,MAAQ+hI,CACf,CAEMxB,OAAAA,CACJn/I,G,yCAEA,OAAO0/I,EAASP,QAAQltJ,KAAK2sB,MAAO5e,EACtC,G,CAEMs/I,gCAAAA,CACJt/I,EACAqgJ,EACA71K,G,yCAEA,OAAOk1K,EAASJ,iCACdrtJ,KAAK2sB,MACL5e,EACAqgJ,EACA71K,EAEJ,G,4SCVF,MAAMo2K,EAAgC,IAAI1B,EAKpC,MAAO7/H,EAqBJ,iBAAOsF,CAAW/6B,EAAeE,EAAe7f,GACrD,OC3CE,SAA4BR,GAQjC,IARkC,OACjCmgB,EAAM,OACNE,EAAM,IACN7f,GAKDR,EACC,MAAOW,EAAQC,GAAUuf,EAAO40B,YAAY10B,GACxC,CAACF,EAAQE,GACT,CAACA,EAAQF,GAEb,MAAO,GAAP3W,OAAU7I,EAAOP,QAAO,KAAAoJ,OAAI5I,EAAOR,QAAO,KAAAoJ,OAAIhJ,EAChD,CD6BW42K,CAAmB,CACxB52K,MACA2f,SACAE,UAEJ,CAYAgI,WAAAA,CACE5oB,EACA0gB,EACAE,EACA7f,EACAgnG,EACA16D,EACAuqI,GACwF,IAAxFliI,EAAAlrB,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAA2DktJ,GAE3DvgI,EAAAA,EAAAA,GAAUja,OAAO+0I,UAAUlxK,IAAQA,EAAM,IAAW,QAcnDgoB,KAAK7nB,OAAQ6nB,KAAK5nB,QAAUuf,EAAO40B,YAAY10B,GAAU,CAACF,EAAQE,GAAU,CAACA,EAAQF,GACtFqI,KAAK/oB,GAAKA,EACV+oB,KAAKhoB,IAAMA,EACXgoB,KAAKg/E,aAAeF,IAAAA,OAAYE,GAChCh/E,KAAKskB,UAAYw6D,IAAAA,OAAYx6D,GAC7BtkB,KAAK6uJ,YAAcA,EACnB7uJ,KAAK8uJ,iBAAmBjpJ,MAAMC,QAAQ6mB,GAAS,IAAI8hI,EAAqB9hI,EAAO8yD,EAAAA,GAAcznG,IAAQ20C,CACvG,CAOOmC,aAAAA,CAAczrC,GACnB,OAAOA,EAAMuoC,OAAO5rB,KAAK7nB,SAAWkL,EAAMuoC,OAAO5rB,KAAK5nB,OACxD,CAKA,eAAW+sC,GAUT,OATKnlB,KAAK+uJ,eACR/uJ,KAAK+uJ,aAAe,IAAIv/H,EAAAA,EACtBxvB,KAAK7nB,OACL6nB,KAAK5nB,OACL42K,EAAAA,GACAlwE,IAAAA,SAAc9+E,KAAKg/E,aAAch/E,KAAKg/E,gBAInCh/E,KAAK+uJ,YACd,CAKA,eAAW1pI,GAUT,OATKrlB,KAAKivJ,eACRjvJ,KAAKivJ,aAAe,IAAIz/H,EAAAA,EACtBxvB,KAAK5nB,OACL4nB,KAAK7nB,OACL2mG,IAAAA,SAAc9+E,KAAKg/E,aAAch/E,KAAKg/E,cACtCgwE,EAAAA,KAIGhvJ,KAAKivJ,YACd,CAOOC,OAAAA,CAAQ7rK,GAEb,OADA+qC,EAAAA,EAAAA,GAAUpuB,KAAK8uB,cAAczrC,GAAQ,SAC9BA,EAAMuoC,OAAO5rB,KAAK7nB,QAAU6nB,KAAKmlB,YAAcnlB,KAAKqlB,WAC7D,CAQayM,eAAAA,CACXlC,EACAu/H,G,0CAEA/gI,EAAAA,EAAAA,GAAUpuB,KAAK8uB,cAAcc,EAAYjE,UAAW,SAEpD,MAAM0K,EAAazG,EAAYjE,SAASC,OAAO5rB,KAAK7nB,SAGlDi3K,iBAAkBv/H,EAAY,aAC9BmvD,EAAY,UACZ16D,EAAS,YACTuqI,SACQ7uJ,KAAK4lE,KAAKvvC,EAAYzG,EAAYiB,SAAUs+H,GAChDx5H,EAAcU,EAAar2B,KAAK5nB,OAAS4nB,KAAK7nB,OACpD,MAAO,CACL2yC,EAAAA,EAAeC,cAAc4K,EAAampD,IAAAA,SAAcjvD,EAAck8H,EAAAA,KACtE,IAAI3+H,EACFptB,KAAK/oB,GACL+oB,KAAK7nB,OACL6nB,KAAK5nB,OACL4nB,KAAKhoB,IACLgnG,EACA16D,EACAuqI,EACA7uJ,KAAK8uJ,kBAGX,G,CAQa98H,cAAAA,CACXnC,EACAs/H,G,0CAEA/gI,EAAAA,EAAAA,GAAUyB,EAAalE,SAASuI,SAAWl0B,KAAK8uB,cAAce,EAAalE,UAAW,SAEtF,MAAM0K,EAAaxG,EAAalE,SAASC,OAAO5rB,KAAK5nB,SAGnDg3K,iBAAkBx/H,EAAW,aAC7BovD,EAAY,UACZ16D,EAAS,YACTuqI,SACQ7uJ,KAAK4lE,KAAKvvC,EAAYyoD,IAAAA,SAAcjvD,EAAagB,SAAUk7H,EAAAA,IAAeoD,GAC9E7/E,EAAaj5C,EAAar2B,KAAK7nB,OAAS6nB,KAAK5nB,OACnD,MAAO,CACL0yC,EAAAA,EAAeC,cAAcukD,EAAY1/C,GACzC,IAAIxC,EACFptB,KAAK/oB,GACL+oB,KAAK7nB,OACL6nB,KAAK5nB,OACL4nB,KAAKhoB,IACLgnG,EACA16D,EACAuqI,EACA7uJ,KAAK8uJ,kBAGX,G,CAYclpF,IAAAA,CACZvvC,EACAg5H,EACAC,G,yCAOA,IAAIH,EAAoBG,EAEnBH,IACHA,EAAoB94H,EAChByoD,IAAAA,IAASI,EAAAA,EAASG,eAAgBrsD,EAAAA,IAClC8rD,IAAAA,SAAcI,EAAAA,EAASC,eAAgBnsD,EAAAA,KAEzCqD,IACFjI,EAAAA,EAAAA,GAAU0wD,IAAAA,YAAiBqwE,EAAmBjwE,EAAAA,EAASG,gBAAiB,cACxEjxD,EAAAA,EAAAA,GAAU0wD,IAAAA,SAAcqwE,EAAmBnvJ,KAAKg/E,cAAe,oBAE/D5wD,EAAAA,EAAAA,GAAU0wD,IAAAA,SAAcqwE,EAAmBjwE,EAAAA,EAASC,gBAAiB,cACrE/wD,EAAAA,EAAAA,GAAU0wD,IAAAA,YAAiBqwE,EAAmBnvJ,KAAKg/E,cAAe,kBAGpE,MAAMuwE,EAAazwE,IAAAA,mBAAwBuwE,EAAiBx8H,EAAAA,IAItDt8B,EAAQ,CACZi5J,yBAA0BH,EAC1BD,iBAAkBv8H,EAAAA,GAClB36C,aAAc8nB,KAAKg/E,aACnBjxE,KAAM/N,KAAK6uJ,YACXvqI,UAAWtkB,KAAKskB,WAIlB,KAAOw6D,IAAAA,SAAcvoF,EAAMi5J,yBAA0B38H,EAAAA,KAASt8B,EAAMre,eAAiBi3K,GAAmB,CACtG,MAAMniK,EAAkC,CAAC,EA6CzC,GA5CAA,EAAKyiK,kBAAoBl5J,EAAMre,cAK9B8U,EAAK0iK,SAAU1iK,EAAKg5I,mBAAqBhmI,KAAK8uJ,iBAAiBzB,iCAC9D92J,EAAMwX,KACNsoB,EACAr2B,KAAKznB,aAGHyU,EAAK0iK,SAAWxwE,EAAAA,EAASI,SAC3BtyF,EAAK0iK,SAAWxwE,EAAAA,EAASI,SAChBtyF,EAAK0iK,SAAWxwE,EAAAA,EAASE,WAClCpyF,EAAK0iK,SAAWxwE,EAAAA,EAASE,UAG3BpyF,EAAK2iK,iBAAmBzwE,EAAAA,EAAS0wE,mBAAmB5iK,EAAK0iK,WACxDn5J,EAAMre,aAAc8U,EAAKqkC,SAAUrkC,EAAK0kC,UAAW1kC,EAAKq/B,WAAa4/H,EAASC,gBAC7E31J,EAAMre,cAEJm+C,EACIyoD,IAAAA,SAAc9xF,EAAK2iK,iBAAkBR,GACrCrwE,IAAAA,YAAiB9xF,EAAK2iK,iBAAkBR,IAE1CA,EACAniK,EAAK2iK,iBACTp5J,EAAM+tB,UACN/tB,EAAMi5J,yBACNxvJ,KAAKhoB,KAGHu3K,GACFh5J,EAAMi5J,yBAA2B1wE,IAAAA,SAC/BvoF,EAAMi5J,yBACN1wE,IAAAA,IAAS9xF,EAAKqkC,SAAUrkC,EAAKq/B,YAE/B91B,EAAM64J,iBAAmBtwE,IAAAA,SAAcvoF,EAAM64J,iBAAkBpiK,EAAK0kC,aAEpEn7B,EAAMi5J,yBAA2B1wE,IAAAA,IAASvoF,EAAMi5J,yBAA0BxiK,EAAK0kC,WAC/En7B,EAAM64J,iBAAmBtwE,IAAAA,IAASvoF,EAAM64J,iBAAkBtwE,IAAAA,IAAS9xF,EAAKqkC,SAAUrkC,EAAKq/B,aAIrFyyD,IAAAA,MAAWvoF,EAAMre,aAAc8U,EAAK2iK,kBAAmB,CAEzD,GAAI3iK,EAAKg5I,YAAa,CACpB,IAAIP,EAAe3mD,IAAAA,cAAmB9+E,KAAK8uJ,iBAAiB5B,QAAQlgK,EAAK0iK,WAAWjqB,cAGhFpvG,IAAYovG,EAAe3mD,IAAAA,SAAc2mD,EAAcsmB,EAAAA,KAE3Dx1J,EAAM+tB,UAAYunI,EAAcC,SAASv1J,EAAM+tB,UAAWmhH,EAC5D,CAEAlvI,EAAMwX,KAAOsoB,EAAarpC,EAAK0iK,SAAW,EAAI1iK,EAAK0iK,QACrD,MAAWn5J,EAAMre,eAAiB8U,EAAKyiK,oBAErCl5J,EAAMwX,KAAOmxE,EAAAA,EAAS2wE,mBAAmBt5J,EAAMre,cAEnD,CAEA,MAAO,CACLk3K,iBAAkB74J,EAAM64J,iBACxBpwE,aAAczoF,EAAMre,aACpBosC,UAAW/tB,EAAM+tB,UACjBuqI,YAAat4J,EAAMwX,KAEvB,G,CAEA,eAAWx1B,GACT,OAAOknG,EAAAA,GAAcz/E,KAAKhoB,IAC5B,E,8HE7UF,SAAS83K,EACPC,EACAC,EACAjrI,GAEI+5D,IAAAA,YAAiBixE,EAAeC,MACjCD,EAAeC,GAAiB,CAACA,EAAeD,IAEnD,MAAME,EAAenxE,IAAAA,OACnBA,IAAAA,SAAcixE,EAAeC,GAC7BE,EAAAA,IAEF,OAAOpxE,IAAAA,OACLA,IAAAA,SAAcA,IAAAA,OAAY/5D,GAAUkrI,GACpCnxE,IAAAA,SAAckxE,EAAeD,GAEjC,CAUA,SAASI,EACPJ,EACAC,EACAjrI,GAEI+5D,IAAAA,YAAiBixE,EAAeC,MACjCD,EAAeC,GAAiB,CAACA,EAAeD,IAGnD,MAAMrgI,EAAYovD,IAAAA,SAChBA,IAAAA,SAAcA,IAAAA,OAAY/5D,GAAUgrI,GACpCC,GAEIvgI,EAAcqvD,IAAAA,SAClBoxE,EAAAA,GACApxE,IAAAA,SAAckxE,EAAeD,IAG/B,OAAOjxE,IAAAA,OAAYpvD,EAAWD,EAChC,CASA,SAAS2gI,EACPL,EACAC,EACA9qI,GAKA,OAHI45D,IAAAA,YAAiBixE,EAAeC,MACjCD,EAAeC,GAAiB,CAACA,EAAeD,IAE5CjxE,IAAAA,OACLA,IAAAA,SAAcA,IAAAA,OAAY55D,GAAUgrI,EAAAA,IACpCpxE,IAAAA,SAAckxE,EAAeD,GAEjC,CAaM,SAAUM,EACdlE,EACA4D,EACAC,EACAjrI,EACAG,EACAorI,GAEIxxE,IAAAA,YAAiBixE,EAAeC,MACjCD,EAAeC,GAAiB,CAACA,EAAeD,IAGnD,MAAMQ,EAAyBD,EAC3BH,EACAL,EAEJ,GAAIhxE,IAAAA,gBAAqBqtE,EAAqB4D,GAC5C,OAAOQ,EAAuBR,EAAeC,EAAejrI,GACvD,GAAI+5D,IAAAA,SAAcqtE,EAAqB6D,GAAgB,CAC5D,MAAMQ,EAAaD,EACjBpE,EACA6D,EACAjrI,GAEI0rI,EAAaL,EACjBL,EACA5D,EACAjnI,GAEF,OAAO45D,IAAAA,SAAc0xE,EAAYC,GAAcD,EAAaC,CAC9D,CACE,OAAOL,EAAuBL,EAAeC,EAAe9qI,EAEhE,C,2DC1GM,MAAOb,EAuBXxkB,WAAAA,CAAAroB,GAAqF,IAAlE,KAAEwpC,EAAI,UAAEsD,EAAS,UAAEC,EAAS,UAAEC,GAAoChtC,EAb7E,KAAAk5K,cAA8C,KAE9C,KAAAC,cAA8C,KAE9C,KAAAC,aAAkE,MAUxExiI,EAAAA,EAAAA,GAAU7J,EAAYC,EAAW,eACjC4J,EAAAA,EAAAA,GAAU7J,GAAa26D,EAAAA,EAASI,UAAY/6D,EAAYvD,EAAKzoC,cAAgB,EAAG,eAChF61C,EAAAA,EAAAA,GAAU5J,GAAa06D,EAAAA,EAASE,UAAY56D,EAAYxD,EAAKzoC,cAAgB,EAAG,cAEhFynB,KAAKghB,KAAOA,EACZhhB,KAAKukB,UAAYA,EACjBvkB,KAAKwkB,UAAYA,EACjBxkB,KAAKskB,UAAYw6D,IAAAA,OAAYx6D,EAC/B,CAKA,oBAAWusI,GACT,OAAOC,EAAAA,EAAAA,GAAY9wJ,KAAKghB,KAAK7oC,OAAQ6nB,KAAKghB,KAAK5oC,OAAQ4nB,KAAKukB,UAC9D,CAKA,oBAAWwsI,GACT,OAAOD,EAAAA,EAAAA,GAAY9wJ,KAAKghB,KAAK7oC,OAAQ6nB,KAAKghB,KAAK5oC,OAAQ4nB,KAAKwkB,UAC9D,CAKA,WAAWO,GA0BT,OAzB2B,OAAvB/kB,KAAK0wJ,gBACH1wJ,KAAKghB,KAAK6tI,YAAc7uJ,KAAKukB,UAC/BvkB,KAAK0wJ,cAAgB5lI,EAAAA,EAAeC,cAClC/qB,KAAKghB,KAAK7oC,OACVs0K,EAAAA,EAAcC,gBACZxtE,EAAAA,EAAS0wE,mBAAmB5vJ,KAAKukB,WACjC26D,EAAAA,EAAS0wE,mBAAmB5vJ,KAAKwkB,WACjCxkB,KAAKskB,WACL,IAGKtkB,KAAKghB,KAAK6tI,YAAc7uJ,KAAKwkB,UACtCxkB,KAAK0wJ,cAAgB5lI,EAAAA,EAAeC,cAClC/qB,KAAKghB,KAAK7oC,OACVs0K,EAAAA,EAAcC,gBACZ1sJ,KAAKghB,KAAKg+D,aACVE,EAAAA,EAAS0wE,mBAAmB5vJ,KAAKwkB,WACjCxkB,KAAKskB,WACL,IAIJtkB,KAAK0wJ,cAAgB5lI,EAAAA,EAAeC,cAAc/qB,KAAKghB,KAAK7oC,OAAQ06C,EAAAA,KAGjE7yB,KAAK0wJ,aACd,CAKA,WAAWxrI,GA0BT,OAzB2B,OAAvBllB,KAAK2wJ,gBACH3wJ,KAAKghB,KAAK6tI,YAAc7uJ,KAAKukB,UAC/BvkB,KAAK2wJ,cAAgB7lI,EAAAA,EAAeC,cAAc/qB,KAAKghB,KAAK5oC,OAAQy6C,EAAAA,IAC3D7yB,KAAKghB,KAAK6tI,YAAc7uJ,KAAKwkB,UACtCxkB,KAAK2wJ,cAAgB7lI,EAAAA,EAAeC,cAClC/qB,KAAKghB,KAAK5oC,OACVq0K,EAAAA,EAAcE,gBACZztE,EAAAA,EAAS0wE,mBAAmB5vJ,KAAKukB,WACjCvkB,KAAKghB,KAAKg+D,aACVh/E,KAAKskB,WACL,IAIJtkB,KAAK2wJ,cAAgB7lI,EAAAA,EAAeC,cAClC/qB,KAAKghB,KAAK5oC,OACVq0K,EAAAA,EAAcE,gBACZztE,EAAAA,EAAS0wE,mBAAmB5vJ,KAAKukB,WACjC26D,EAAAA,EAAS0wE,mBAAmB5vJ,KAAKwkB,WACjCxkB,KAAKskB,WACL,KAKDtkB,KAAK2wJ,aACd,CAOQK,mBAAAA,CAAoBp+H,GAI1B,MAAMq+H,EAAajxJ,KAAKghB,KAAKmE,YAAY8lI,WAAW17H,SAAS,IAAI/S,EAAAA,EAAQ,GAAG0U,SAAS0B,IAC/Es+H,EAAalxJ,KAAKghB,KAAKmE,YAAY8lI,WAAW17H,SAASqD,EAAkB/G,IAAI,IACnF,IAAIslI,GAAoBlyE,EAAAA,EAAAA,GAAmBgyE,EAAWvhI,UAAWuhI,EAAWxhI,aACxEqvD,IAAAA,gBAAqBqyE,EAAmBjyE,EAAAA,EAASG,kBACnD8xE,EAAoBryE,IAAAA,IAASI,EAAAA,EAASG,eAAgBP,IAAAA,OAAY,KAEpE,IAAIsyE,GAAoBnyE,EAAAA,EAAAA,GAAmBiyE,EAAWxhI,UAAWwhI,EAAWzhI,aAI5E,OAHIqvD,IAAAA,mBAAwBsyE,EAAmBlyE,EAAAA,EAASC,kBACtDiyE,EAAoBtyE,IAAAA,SAAcI,EAAAA,EAASC,eAAgBL,IAAAA,OAAY,KAElE,CACLqyE,oBACAC,oBAEJ,CAQOC,uBAAAA,CAAwBz+H,GAE7B,MAAM,kBAAEw+H,EAAiB,kBAAED,GAAsBnxJ,KAAKgxJ,oBAAoBp+H,GAGpE0+H,EAAY,IAAIlkI,EAAAA,EACpBptB,KAAKghB,KAAK/pC,GACV+oB,KAAKghB,KAAK7oC,OACV6nB,KAAKghB,KAAK5oC,OACV4nB,KAAKghB,KAAKhpC,IACVm5K,EACA,EACAjyE,EAAAA,EAAS2wE,mBAAmBsB,IAExBI,EAAY,IAAInkI,EAAAA,EACpBptB,KAAKghB,KAAK/pC,GACV+oB,KAAKghB,KAAK7oC,OACV6nB,KAAKghB,KAAK5oC,OACV4nB,KAAKghB,KAAKhpC,IACVo5K,EACA,EACAlyE,EAAAA,EAAS2wE,mBAAmBuB,IAIxBI,EAA4BntI,EAASotI,YAAWr6K,OAAAyR,OAAAzR,OAAAyR,OAAC,CACrDm4B,KAAMhhB,KAAKghB,KACXuD,UAAWvkB,KAAKukB,UAChBC,UAAWxkB,KAAKwkB,WACbxkB,KAAK0xJ,aAAW,CACnBpB,kBAAkB,MAKd,QAAEvrI,GAAY,IAAIV,EAAS,CAC/BrD,KAAMuwI,EACNjtI,UAAWktI,EAA0BltI,UACrCC,UAAWvkB,KAAKukB,UAChBC,UAAWxkB,KAAKwkB,YACfktI,aAEG,QAAExsI,GAAY,IAAIb,EAAS,CAC/BrD,KAAMswI,EACNhtI,UAAWktI,EAA0BltI,UACrCC,UAAWvkB,KAAKukB,UAChBC,UAAWxkB,KAAKwkB,YACfktI,YAEH,MAAO,CAAE3sI,UAASG,UACpB,CAQOysI,uBAAAA,CAAwB/+H,GAE7B,MAAM,kBAAEw+H,EAAiB,kBAAED,GAAsBnxJ,KAAKgxJ,oBAAoBp+H,GAGpE0+H,EAAY,IAAIlkI,EAAAA,EACpBptB,KAAKghB,KAAK/pC,GACV+oB,KAAKghB,KAAK7oC,OACV6nB,KAAKghB,KAAK5oC,OACV4nB,KAAKghB,KAAKhpC,IACVm5K,EACA,EACAjyE,EAAAA,EAAS2wE,mBAAmBsB,IAExBI,EAAY,IAAInkI,EAAAA,EACpBptB,KAAKghB,KAAK/pC,GACV+oB,KAAKghB,KAAK7oC,OACV6nB,KAAKghB,KAAK5oC,OACV4nB,KAAKghB,KAAKhpC,IACVo5K,EACA,EACAlyE,EAAAA,EAAS2wE,mBAAmBuB,IAKxBrsI,EAAU,IAAIV,EAAS,CAC3BrD,KAAMuwI,EACNjtI,UAAWtkB,KAAKskB,UAChBC,UAAWvkB,KAAKukB,UAChBC,UAAWxkB,KAAKwkB,YACfO,QAEGG,EAAU,IAAIb,EAAS,CAC3BrD,KAAMswI,EACNhtI,UAAWtkB,KAAKskB,UAChBC,UAAWvkB,KAAKukB,UAChBC,UAAWxkB,KAAKwkB,YACfU,QAEH,MAAO,CAAEH,QAASA,EAAQ8L,SAAU3L,QAASA,EAAQ2L,SACvD,CAMA,eAAW6gI,GACT,OAA0B,OAAtB1xJ,KAAK4wJ,aACH5wJ,KAAKghB,KAAK6tI,YAAc7uJ,KAAKukB,UACxB,CACLQ,QAAS0nI,EAAAA,EAAcC,gBACrBxtE,EAAAA,EAAS0wE,mBAAmB5vJ,KAAKukB,WACjC26D,EAAAA,EAAS0wE,mBAAmB5vJ,KAAKwkB,WACjCxkB,KAAKskB,WACL,GAEFY,QAAS2N,EAAAA,IAEP7yB,KAAKghB,KAAK6tI,YAAc7uJ,KAAKwkB,UAC1B,CACLO,QAAS0nI,EAAAA,EAAcC,gBACrB1sJ,KAAKghB,KAAKg+D,aACVE,EAAAA,EAAS0wE,mBAAmB5vJ,KAAKwkB,WACjCxkB,KAAKskB,WACL,GAEFY,QAASunI,EAAAA,EAAcE,gBACrBztE,EAAAA,EAAS0wE,mBAAmB5vJ,KAAKukB,WACjCvkB,KAAKghB,KAAKg+D,aACVh/E,KAAKskB,WACL,IAIG,CACLS,QAAS8N,EAAAA,GACT3N,QAASunI,EAAAA,EAAcE,gBACrBztE,EAAAA,EAAS0wE,mBAAmB5vJ,KAAKukB,WACjC26D,EAAAA,EAAS0wE,mBAAmB5vJ,KAAKwkB,WACjCxkB,KAAKskB,WACL,IAKDtkB,KAAK4wJ,YACd,CAcO,kBAAOa,CAAW5tK,GAcxB,IAdyB,KACxBm9B,EAAI,UACJuD,EAAS,UACTC,EAAS,QACTO,EAAO,QACPG,EAAO,iBACPorI,GAQDzsK,EACC,MAAMksK,EAAgB7wE,EAAAA,EAAS0wE,mBAAmBrrI,GAC5CyrI,EAAgB9wE,EAAAA,EAAS0wE,mBAAmBprI,GAClD,OAAO,IAAIH,EAAS,CAClBrD,OACAuD,YACAC,YACAF,UAAW+rI,EACTrvI,EAAKg+D,aACL+wE,EACAC,EACAjrI,EACAG,EACAorI,IAGN,CAYO,kBAAOsB,CAAWpkK,GAYxB,IAZyB,KACxBwzB,EAAI,UACJuD,EAAS,UACTC,EAAS,QACTO,EAAO,iBACPurI,GAOD9iK,EACC,OAAO62B,EAASotI,YAAY,CAC1BzwI,OACAuD,YACAC,YACAO,UACAG,QAASmsB,EAAAA,GACTi/G,oBAEJ,CAUO,kBAAOuB,CAAW7jK,GAUxB,IAVyB,KACxBgzB,EAAI,UACJuD,EAAS,UACTC,EAAS,QACTU,GAMDl3B,EAEC,OAAOq2B,EAASotI,YAAY,CAC1BzwI,OACAuD,YACAC,YACAO,QAASssB,EAAAA,GACTnsB,UACAorI,kBAAkB,GAEtB,E,6GC7ZK,MAAMvE,EAAejtE,IAAAA,QAAa,GAC5BjsD,EAAOisD,IAAAA,OAAY,GACnB9rD,EAAM8rD,IAAAA,OAAY,GAGlBoxE,EAAMpxE,IAAAA,aAAkBA,IAAAA,OAAY,GAAIA,IAAAA,OAAY,KACpDkwE,EAAOlwE,IAAAA,aAAkBoxE,EAAKpxE,IAAAA,OAAY,G,mFCNhD,MAAMgzE,EAAmBhzE,IAAAA,OAAY3qE,OAAO29I,kBAE7Cj/H,EAAOisD,IAAAA,OAAY,GACnB9rD,EAAM8rD,IAAAA,OAAY,GAClBizE,EAAMjzE,IAAAA,OAAY,GCGlB,SAAUG,EACd/5D,EACAH,GAEA,MAAM2K,EAAYovD,IAAAA,UAAeA,IAAAA,OAAY55D,GAAU45D,IAAAA,OAAY,MAC7DrvD,EAAcqvD,IAAAA,OAAY/5D,GAEhC,ODJI,SAAe5+B,GAInB,IAHAioC,EAAAA,EAAAA,GAAU0wD,IAAAA,mBAAwB34F,EAAO0sC,GAAO,YAG5CisD,IAAAA,SAAc34F,EAAO2rK,GACvB,OAAOhzE,IAAAA,OAAYr5E,KAAKyoJ,MAAMzoJ,KAAKusJ,KAAKlzE,IAAAA,SAAc34F,MAGxD,IAAI8rK,EACAnpK,EAGJ,IAFAmpK,EAAI9rK,EACJ2C,EAAIg2F,IAAAA,IAASA,IAAAA,OAAY34F,EAAO4rK,GAAM/+H,GAC/B8rD,IAAAA,SAAch2F,EAAGmpK,IACtBA,EAAInpK,EACJA,EAAIg2F,IAAAA,OAAYA,IAAAA,IAASA,IAAAA,OAAY34F,EAAO2C,GAAIA,GAAIipK,GAEtD,OAAOE,CACT,CCbSD,CADWlzE,IAAAA,OAAYpvD,EAAWD,GAE3C,C,mFCfM,MAAgBs9H,EAIpBltJ,WAAAA,GAAuB,CAEhB,uBAAOmtJ,CAAiBrmI,EAASC,EAAS6I,GAC/C,MAAMyiI,EAAUpzE,IAAAA,SAAcn4D,EAAGC,GACjC,IAAI5nC,EAAS8/F,IAAAA,OAAYozE,EAASziI,GAElC,OADIqvD,IAAAA,SAAcA,IAAAA,UAAeozE,EAASziI,GAAcoD,EAAAA,MAAO7zC,EAAS8/F,IAAAA,IAAS9/F,EAAQg0C,EAAAA,KAClFh0C,CACT,E,0ECNI,SAAUwgG,EAAkBzxE,EAAcx1B,IAC9C61C,EAAAA,EAAAA,GAAUja,OAAO+0I,UAAUn7I,IAASoG,OAAO+0I,UAAU3wK,GAAc,aACnE61C,EAAAA,EAAAA,GAAU71C,EAAc,EAAG,iBAC3B61C,EAAAA,EAAAA,GAAUrgB,GAAQmxE,EAAAA,EAASI,UAAYvxE,GAAQmxE,EAAAA,EAASE,SAAU,cAClE,MAAMj0B,EAAU1lD,KAAKC,MAAMqI,EAAOx1B,GAAeA,EACjD,OAAI4yE,EAAU+zB,EAAAA,EAASI,SAAiBn0B,EAAU5yE,EACzC4yE,EAAU+zB,EAAAA,EAASE,SAAiBj0B,EAAU5yE,EAC3C4yE,CACd,C,4HCHM,SAAU2lG,EACdnnH,EACA80C,EACA1wE,GAEA,MAAMixE,EAAeE,EAAAA,EAAS0wE,mBAAmB7hJ,GAE3CokJ,EAAYrzE,IAAAA,SAAcE,EAAcA,GAE9C,OAAOr1C,EAAUpd,YAAYkyD,GACzB,IAAIjvD,EAAAA,EAAMma,EAAW80C,EAAYuwE,EAAAA,GAAMmD,GACvC,IAAI3iI,EAAAA,EAAMma,EAAW80C,EAAY0zE,EAAWnD,EAAAA,GAClD,CAOM,SAAUzvE,EAAmBlwD,GACjC,MAAM+iI,EAAS/iI,EAAMg8H,aAAa9+H,YAAY8C,EAAMi8H,eAE9CtsE,EAAeozE,GACjBnzE,EAAAA,EAAAA,GAAmB5vD,EAAMK,UAAWL,EAAMI,cAC1CwvD,EAAAA,EAAAA,GAAmB5vD,EAAMI,YAAaJ,EAAMK,WAEhD,IAAI3hB,EAAOmxE,EAAAA,EAAS2wE,mBAAmB7wE,GACvC,MAAMqzE,EAAgBvB,EACpBzhI,EAAMg8H,aACNh8H,EAAMi8H,cACNv9I,EAAO,GAWT,OATIqkJ,EACG/iI,EAAMc,SAASkiI,IAClBtkJ,IAGGshB,EAAMqH,YAAY27H,IACrBtkJ,IAGGA,CACT,C,oHCjDA,MAAMukJ,EAAaxzE,IAAAA,SACjBA,IAAAA,aAAkBA,IAAAA,OAAY,GAAIA,IAAAA,OAAY,MAC9C9rD,EAAAA,IAGF,SAASu/H,EAAczpK,EAASC,GAC9B,MAAMmpK,EAAUpzE,IAAAA,SAAch2F,EAAGC,GACjC,OAAO+1F,IAAAA,WAAgBozE,EAAS7gH,EAAAA,GAClC,CAOM,MAAgBo7G,EAIpB5sJ,WAAAA,GAAuB,CAEhB,sBAAO6sJ,CACZqD,EACAC,EACA1rI,EACAkuI,GAEI1zE,IAAAA,YAAiBixE,EAAeC,MACjCD,EAAeC,GAAiB,CAACA,EAAeD,IAGnD,MAAM0C,EAAa3zE,IAAAA,UAAex6D,EAAWw6D,IAAAA,OAAY,KACnD4zE,EAAa5zE,IAAAA,SAAckxE,EAAeD,GAEhD,OAAOyC,EACHzF,EAAAA,EAASC,iBACPD,EAAAA,EAASC,iBAAiByF,EAAYC,EAAY1C,GAClDh9H,EAAAA,GACA+8H,GAEFjxE,IAAAA,OACEA,IAAAA,OAAYA,IAAAA,SAAc2zE,EAAYC,GAAa1C,GACnDD,EAER,CAEO,sBAAOpD,CACZoD,EACAC,EACA1rI,EACAkuI,GAMA,OAJI1zE,IAAAA,YAAiBixE,EAAeC,MACjCD,EAAeC,GAAiB,CAACA,EAAeD,IAG5CyC,EACHzF,EAAAA,EAASC,iBACP1oI,EACAw6D,IAAAA,SAAckxE,EAAeD,GAC7BG,EAAAA,IAEFpxE,IAAAA,OACEA,IAAAA,SAAcx6D,EAAWw6D,IAAAA,SAAckxE,EAAeD,IACtDG,EAAAA,GAER,CAEO,gCAAOrD,CACZ8F,EACAruI,EACA+M,EACAgF,GAWA,OATAjI,EAAAA,EAAAA,GACE0wD,IAAAA,YAAiB6zE,EAAU9/H,EAAAA,IAC3B,mCAEFzE,EAAAA,EAAAA,GACE0wD,IAAAA,YAAiBx6D,EAAWuO,EAAAA,IAC5B,kCAGKwD,EACHr2B,KAAK4yJ,sCACHD,EACAruI,EACA+M,GACA,GAEFrxB,KAAK6yJ,wCACHF,EACAruI,EACA+M,GACA,EAER,CAEO,iCAAOy7H,CACZ6F,EACAruI,EACAoN,EACA2E,GAKA,OAHAjI,EAAAA,EAAAA,GAAU0wD,IAAAA,YAAiB6zE,EAAU9/H,EAAAA,IAAO,+BAC5CzE,EAAAA,EAAAA,GAAU0wD,IAAAA,YAAiBx6D,EAAWuO,EAAAA,IAAO,8BAEtCwD,EACHr2B,KAAK6yJ,wCACHF,EACAruI,EACAoN,GACA,GAEF1xB,KAAK4yJ,sCACHD,EACAruI,EACAoN,GACA,EAER,CAEQ,4CAAOkhI,CACbD,EACAruI,EACAtB,EACA6I,GAEA,GAAIizD,IAAAA,MAAW97D,EAAQ6P,EAAAA,IAAO,OAAO8/H,EACrC,MAAMF,EAAa3zE,IAAAA,UAAex6D,EAAWw6D,IAAAA,OAAY,KAEzD,GAAIjzD,EAAK,CACP,IAAIqmI,EAAUK,EAAcvvI,EAAQ2vI,GACpC,GAAI7zE,IAAAA,MAAWA,IAAAA,OAAYozE,EAASlvI,GAAS2vI,GAAW,CACtD,MAAMljI,EA5Hd,SAAkB3mC,EAASC,GACzB,MAAM+pK,EAAMh0E,IAAAA,IAASh2F,EAAGC,GACxB,OAAO+1F,IAAAA,WAAgBg0E,EAAKzhH,EAAAA,GAC9B,CAyH4B0hH,CAASN,EAAYP,GACzC,GAAIpzE,IAAAA,mBAAwBrvD,EAAagjI,GACvC,OAAO1F,EAAAA,EAASC,iBAAiByF,EAAYE,EAAUljI,EAE3D,CAEA,OAAOs9H,EAAAA,EAASC,iBACdyF,EACAz/H,EAAAA,GACA8rD,IAAAA,IAASA,IAAAA,OAAY2zE,EAAYE,GAAW3vI,GAEhD,CAAO,CACL,IAAIkvI,EAAUK,EAAcvvI,EAAQ2vI,IAEpCvkI,EAAAA,EAAAA,GACE0wD,IAAAA,MAAWA,IAAAA,OAAYozE,EAASlvI,GAAS2vI,GACzC,0CAEFvkI,EAAAA,EAAAA,GACE0wD,IAAAA,YAAiB2zE,EAAYP,GAC7B,yCAEF,MAAMziI,EAAcqvD,IAAAA,SAAc2zE,EAAYP,GAC9C,OAAOnF,EAAAA,EAASC,iBAAiByF,EAAYE,EAAUljI,EACzD,CACF,CAEQ,8CAAOojI,CACbF,EACAruI,EACAtB,EACA6I,GAEA,GAAIA,EAAK,CACP,MAAMgF,EAAWiuD,IAAAA,gBAAqB97D,EAAQsvI,GAC1CxzE,IAAAA,OAAYA,IAAAA,UAAe97D,EAAQ87D,IAAAA,OAAY,KAAMx6D,GACrDw6D,IAAAA,OAAYA,IAAAA,SAAc97D,EAAQktI,EAAAA,IAAM5rI,GAE5C,OAAOw6D,IAAAA,IAAS6zE,EAAU9hI,EAC5B,CAAO,CACL,MAAMA,EAAWk8H,EAAAA,EAASC,iBAAiBhqI,EAAQktI,EAAAA,GAAK5rI,GAMxD,OAJA8J,EAAAA,EAAAA,GACE0wD,IAAAA,YAAiB6zE,EAAU9hI,GAC3B,2CAEKiuD,IAAAA,SAAc6zE,EAAU9hI,EACjC,CACF,E,yGCvLF,MAAMkhI,EAAMjzE,IAAAA,OAAY,GAClBk0E,EAAc,CAAC,IAAK,GAAI,GAAI,GAAI,EAAG,EAAG,EAAG,GAAG38K,KAC/C48K,GAAgC,CAC/BA,EACAn0E,IAAAA,aAAkBizE,EAAKjzE,IAAAA,OAAYm0E,OCHvC,SAASC,EAAS7uH,EAAW8uH,GAC3B,OAAOr0E,IAAAA,iBACLA,IAAAA,SAAcz6C,EAAKy6C,IAAAA,OAAYq0E,IAC/Br0E,IAAAA,OAAY,KAEhB,CAEA,MAAMs0E,EAAMt0E,IAAAA,aAAkBA,IAAAA,OAAY,GAAIA,IAAAA,OAAY,KAEpD,MAAgBI,EAIpBr/E,WAAAA,GAAuB,CA0BhB,yBAAO+vJ,CAAmB7hJ,IAC/BqgB,EAAAA,EAAAA,GACErgB,GAAQmxE,EAASI,UACfvxE,GAAQmxE,EAASE,UACjBjrE,OAAO+0I,UAAUn7I,GACnB,QAEF,MAAMslJ,EAAkBtlJ,EAAO,GAAY,EAARA,EAAYA,EAE/C,IAAIulJ,EACiB,IAAR,EAAVD,GACGv0E,IAAAA,OAAY,sCACZA,IAAAA,OAAY,uCA2ClB,OA1CuB,IAAR,EAAVu0E,KACHC,EAAQJ,EAASI,EAAO,uCACH,IAAR,EAAVD,KACHC,EAAQJ,EAASI,EAAO,uCACH,IAAR,EAAVD,KACHC,EAAQJ,EAASI,EAAO,uCACF,IAAT,GAAVD,KACHC,EAAQJ,EAASI,EAAO,uCACF,IAAT,GAAVD,KACHC,EAAQJ,EAASI,EAAO,uCACF,IAAT,GAAVD,KACHC,EAAQJ,EAASI,EAAO,uCACF,IAAT,IAAVD,KACHC,EAAQJ,EAASI,EAAO,uCACD,IAAV,IAAVD,KACHC,EAAQJ,EAASI,EAAO,uCACD,IAAV,IAAVD,KACHC,EAAQJ,EAASI,EAAO,uCACD,IAAV,KAAVD,KACHC,EAAQJ,EAASI,EAAO,uCACD,IAAV,KAAVD,KACHC,EAAQJ,EAASI,EAAO,uCACA,IAAX,KAAVD,KACHC,EAAQJ,EAASI,EAAO,uCACA,IAAX,KAAVD,KACHC,EAAQJ,EAASI,EAAO,uCACA,IAAX,MAAVD,KACHC,EAAQJ,EAASI,EAAO,uCACA,IAAX,MAAVD,KACHC,EAAQJ,EAASI,EAAO,uCACC,IAAZ,MAAVD,KACHC,EAAQJ,EAASI,EAAO,sCACC,IAAZ,OAAVD,KACHC,EAAQJ,EAASI,EAAO,qCACC,IAAZ,OAAVD,KACHC,EAAQJ,EAASI,EAAO,mCACC,IAAZ,OAAVD,KACHC,EAAQJ,EAASI,EAAO,8BAEtBvlJ,EAAO,IAAGulJ,EAAQx0E,IAAAA,OAAYztC,EAAAA,GAAYiiH,IAGvCx0E,IAAAA,YAAiBA,IAAAA,UAAew0E,EAAOF,GAAMvgI,EAAAA,IAChDisD,IAAAA,IAASA,IAAAA,OAAYw0E,EAAOF,GAAMpgI,EAAAA,IAClC8rD,IAAAA,OAAYw0E,EAAOF,EACzB,CAOO,yBAAOvD,CAAmB7wE,IAC/B5wD,EAAAA,EAAAA,GACE0wD,IAAAA,mBAAwBE,EAAcE,EAASG,iBAC7CP,IAAAA,SAAcE,EAAcE,EAASC,gBACvC,cAGF,MAAMo0E,EAAgBz0E,IAAAA,UAAeE,EAAcF,IAAAA,OAAY,KAEzD00E,ED1GJ,SAA6B1qK,IACjCslC,EAAAA,EAAAA,GAAU0wD,IAAAA,YAAiBh2F,EAAG+pC,EAAAA,IAAO,SACrCzE,EAAAA,EAAAA,GAAU0wD,IAAAA,gBAAqBh2F,EAAGuoD,EAAAA,IAAa,OAE/C,IAAImiH,EAAc,EAClB,IAAK,MAAOC,EAAO72I,KAAQo2I,EACrBl0E,IAAAA,mBAAwBh2F,EAAG8zB,KAC7B9zB,EAAIg2F,IAAAA,iBAAsBh2F,EAAGg2F,IAAAA,OAAY20E,IACzCD,GAAOC,GAGX,OAAOD,CACT,CC8FgBE,CAAmBH,GAE/B,IAAIh9G,EAEFA,EADEuoC,IAAAA,mBAAwBA,IAAAA,OAAY00E,GAAM10E,IAAAA,OAAY,MACpDA,IAAAA,iBAAsBy0E,EAAez0E,IAAAA,OAAY00E,EAAM,MAEvD10E,IAAAA,UAAey0E,EAAez0E,IAAAA,OAAY,IAAM00E,IAGtD,IAAIG,EAAc70E,IAAAA,UAChBA,IAAAA,SAAcA,IAAAA,OAAY00E,GAAM10E,IAAAA,OAAY,MAC5CA,IAAAA,OAAY,KAGd,IAAK,IAAI9vD,EAAI,EAAGA,EAAI,GAAIA,IAAK,CAC3BunB,EAAIuoC,IAAAA,iBAAsBA,IAAAA,SAAcvoC,EAAGA,GAAIuoC,IAAAA,OAAY,MAC3D,MAAM80E,EAAI90E,IAAAA,iBAAsBvoC,EAAGuoC,IAAAA,OAAY,MAC/C60E,EAAQ70E,IAAAA,UAAe60E,EAAO70E,IAAAA,UAAe80E,EAAG90E,IAAAA,OAAY,GAAK9vD,KACjEunB,EAAIuoC,IAAAA,iBAAsBvoC,EAAGq9G,EAC/B,CAEA,MAAMC,EAAgB/0E,IAAAA,SACpB60E,EACA70E,IAAAA,OAAY,6BAGRg1E,EAAUh1E,IAAAA,SACdA,IAAAA,iBACEA,IAAAA,SACE+0E,EACA/0E,IAAAA,OAAY,0CAEdA,IAAAA,OAAY,OAGVi1E,EAAWj1E,IAAAA,SACfA,IAAAA,iBACEA,IAAAA,IACE+0E,EACA/0E,IAAAA,OAAY,4CAEdA,IAAAA,OAAY,OAIhB,OAAOg1E,IAAYC,EACfD,EACAh1E,IAAAA,gBACEI,EAAS0wE,mBAAmBmE,GAC5B/0E,GAEF+0E,EACAD,CACN,EApJc50E,EAAAI,UAAoB,OAIpBJ,EAAAE,UAAoBF,EAASI,SAK7BJ,EAAAG,eAAuBP,IAAAA,OAAY,cAInCI,EAAAC,eAAuBL,IAAAA,OACnC,oD,gDC6EE,MAAgBk1E,EAGpBn0J,WAAAA,CAAAroB,GAA4G,IAAhG,MAAEwD,GAA8FxD,EAC1GwoB,KAAKhlB,MAAQA,CACf,E,8YC/FI,MAAOi5K,UAA0BD,EAAAA,EACxB50C,OAAAA,CAAOx8E,G,2DAAC,WAAEnqD,EAAU,OAAEg+C,GAAwBj/C,EAAA,mBACzD,MAAM08K,SAAqBvjJ,EAAK2uG,aAAa,CAAE7mI,gBAAe+oC,KAE9D,GAAI0yI,EAAa,CACf,MAIM90C,eAJyBzuG,EAAK31B,MAAMvC,IAAa+jI,WAAW/lF,EAAOvW,OAAQuW,EAAOtW,QAI/D9pC,KAAKs6J,IACrB,CACLt3J,QAASs3J,EAAO,GAChBptH,QAASotH,EAAO,GAAG3wJ,eAIvB,MAAO,CACLwgB,OAAQ+Z,EAAAA,EAAa0L,GACrB9zB,QAAS,GACTqvB,KAAM,CACJlkC,QAAS8hI,EACTr9B,cAAe5tE,OAAO+/I,GACtB/zI,MAAOhM,OAAOsiB,EAAOtW,OACrBD,OAAQ/L,OAAOsiB,EAAOvW,SAG5B,CAEA,MAAO,CACL1f,OAAQ+Z,EAAAA,EAAa0L,GACrBzE,KAAM,CACJlkC,QAAS,GACTykG,cAAe,EACf5hE,MAAO,GACPD,OAAQ,GAEV/tB,QAAS,GAEb,CArC2D,EAqC1D,G,CAEYmtH,YAAAA,CAAY18E,G,2DAAC,WAAEnqD,GAAiCoL,EAAA,mBAC3D,IAAI5E,EAAmC,KAEvC,IAEE,OADAA,cAA0B2mK,EAAK5qK,MAAMvC,IAAa0iD,gBAC3CtD,EAAAA,EAAAA,IAAqB54C,EAAU++C,aACxC,CAAE,MAAO/xC,GACPspB,QAAQtpB,MAAMA,EAChB,CAEA,OAAO4rC,EAAAA,EAAAA,SAAqBj4C,EAC9B,CAX6D,EAW5D,G,CAEY+6C,MAAAA,CAAMiI,G,2DAAC,WAAEnqD,GAA2B+U,EAAA,mBAC/C,IACE,OAAOqqC,EAAAA,EAAAA,gBAAkCs8H,EAAKn5K,MAAMvC,IAAaimC,cACnE,CAAE,MAAOzyB,GAEP,OADAspB,QAAQtpB,MAAMA,IACP4rC,EAAAA,EAAAA,gBAAkCmlF,EAAAA,EAAAA,IAAiBvkI,IAAaimC,cACzE,CACF,CAPiD,EAOhD,G,CAEYrlC,OAAAA,CAAOupD,G,2DAAC,WAAEnqD,EAAU,OAAEg+C,GAAwBzoC,EAAA,mBACzD,GAAIyoC,EAAOgK,KAAKjiD,UAAW,CAEzB,GAAIi4C,EAAO/L,WACT,OAAOmN,EAAAA,EAAAA,IAAqBpZ,OAAO,IAGrC,IAAIplC,EAAUolC,OAAO,GAErB,IACEplC,cAAwB+6K,EAAKp5K,MAAMvC,IAAa6lD,UAAU7H,EAAOgK,KAAKjiD,UACxE,CAAE,MAAOyN,GACPspB,QAAQtpB,MAAMA,GACd5S,cAAwByjI,EAAAA,EAAAA,IAAkBrkI,IAAa6lD,UAAU7H,EAAOgK,KAAKjiD,UAC/E,CAEA,OAAOq5C,EAAAA,EAAAA,IAAqBx+C,EAC9B,CAEA,OAAOw+C,EAAAA,EAAAA,IAAqBpZ,OAAO,GACrC,CApB2D,EAoB1D,G,CAEY6b,QAAAA,CAAQsI,G,2DAAC,WAAEnqD,EAAU,SAAE8hD,EAAQ,OAAE9D,GAAyBzlC,EAAA,mBACrE,IAAKylC,EAAO9jC,GAAGnU,UAAW,MAAM1H,MAAM,qBAEtC,MAAMkI,cAAsBq1K,EAAKr5K,MAAMvC,EAAY8hD,IAAWD,SAAS7D,EAAO9jC,GAAGnU,UAAWi4C,EAAOzT,QACnG,OAAO6U,EAAAA,EAAAA,IAAqB74C,EAC9B,CALuE,EAKtE,G,CAEYmgI,MAAAA,CAAMv8E,G,2DAAC,WAAEnqD,GAA2B0X,EAAA,mBAC/C,MAAMmuB,cAAwB0nI,EAAKhrK,MAAMvC,IAAasmD,cACtD,OAAOlH,EAAAA,EAAAA,IAAqBvZ,EAAStmC,IACvC,CAHiD,EAGhD,G,CAEYqnD,MAAAA,CAAMuD,G,2DAAC,WAAEnqD,EAAU,SAAE8hD,EAAQ,OAAE9D,GAAuBiwC,EAAA,mBACjE,OAAO7uC,EAAAA,EAAAA,gBAAmCy8H,EAAKt5K,MAAMvC,EAAY8hD,IAAW8E,OAAO5I,GACrF,CAFmE,EAElE,G,CAEYgmF,QAAAA,CAAQ75E,G,2DAAC,WAAEnqD,EAAU,SAAE8hD,EAAQ,OAAE9D,GAAyBowC,EAAA,mBACrE,IAAKpwC,EAAOj4C,UAAW,MAAM1H,MAAM,gBACnC,OAAO+gD,EAAAA,EAAAA,gBAAmC08H,EAAKv5K,MAAMvC,EAAY8hD,IAAWkiF,SAAShmF,EAAOj4C,WAC9F,CAHuE,EAGtE,G,CAEYskE,YAAAA,CAAYlgB,G,gDAAC,WAAEnqD,EAAU,OAAEg+C,GAA4BswC,EAAA,mBAClE,OAAOlvC,EAAAA,EAAAA,IAA4C,CACjDqF,GAAI,CACF5/C,QAAS,GACTykG,cAAetjE,OAAO,GACtByB,OAAQzB,OAAO,GACf0B,MAAO1B,OAAO,MAGpB,CAToE,EASnE,G,CAEY6E,OAAAA,CAAOsf,G,2DAAC,WAAEnqD,EAAU,OAAEg+C,EAAM,SAAE8D,GAA0B2sC,EAAA,mBAGnE,OAAOrvC,EAAAA,EAAAA,gBACQ28H,EAAKx5K,MAAMvC,EAAY8hD,IAAWjX,QAAQmT,EAAOrT,QAASqT,EAAOvT,UAAYzE,OAAO,KAErG,CANqE,EAMpE,G,CAEYyE,SAAAA,CAAS0f,G,2DAAC,WAAEnqD,EAAU,OAAEg+C,GAA0B2wC,EAAA,mBAC7D,IAAK3wC,EAAOtT,MAAM3kC,UAChB,MAAM1H,MAAM,gBAGd,OAAO+gD,EAAAA,EAAAA,gBAAkC48H,EAAKz5K,MAAMvC,IAAayqC,UAAUuT,EAAOtT,MAAM3kC,UAAWi4C,EAAOrT,SAC5G,CAN+D,EAM9D,G,CAEY9E,QAAAA,CAAQskB,G,2DAAC,WAAEnqD,GAA6B6uF,EAAA,mBACnD,MAAMhpD,cAAyBo2I,EAAK15K,MAAMvC,IAAasmD,cAEvD,MAAO,CACLv+B,OAAQ+Z,EAAAA,EAAa0L,GACrBzE,KAAM,CACJzhC,SAAUu+B,EAASv+B,SACnBu+B,SAAU,GACV99B,KAAM89B,EAAS99B,KACfF,OAAQg+B,EAASh+B,OACjBc,KAAMk9B,EAASl9B,KACfpJ,IAAKsmC,EAAStmC,KAEhBma,QAAS,GAEb,CAfqD,EAepD,G,CAEYmtC,OAAAA,CAAOsD,G,2DAAC,WAAEnqD,EAAU,OAAEg+C,EAAM,SAAE8D,GAA0Bo6H,EAAA,mBACnE,OAAO98H,EAAAA,EAAAA,gBAAmC+8H,EAAK55K,MAAMvC,EAAY8hD,IAAW+E,QAAQ7I,GACtF,CAFqE,EAEpE,G,CAEMo+H,wBAAAA,CAAwBC,GAA4C,IAA3C,OAAE9xI,GAAyC8xI,EACzE,OAAO9xI,CACT,CAEa+xI,iBAAAA,CAAiBnyH,G,gDAAC,WAC7BnqD,GAGDu8K,EAAA,mBACC,MAAO,CACLx0J,OAAQ+Z,EAAAA,EAAa0L,GACrBzE,UAAM5hC,EACNuS,QAAS,GAEb,CANC,EAMA,G,EAGI,MAAMgqC,EAAe,IAAI83H,EAAkB,CAChDj5K,MAAO4hI,EAAAA,I,0ECjMH,MAAOq4C,UAA8BhB,EAAAA,GAEpC,MAAMiB,EAAmB,IAAID,EAAsB,CACxDj6K,MAAO4hI,EAAAA,I,0ECHH,MAAOu4C,UAA6BlB,EAAAA,GAEnC,MAAMmB,EAAkB,IAAID,EAAqB,CACtDn6K,MAAO4hI,EAAAA,I,2bCkBH,MAAOy4C,UAAwBrB,EAAAA,EACtB50C,OAAAA,CAAOx8E,G,2DAAC,WAAEnqD,EAAU,OAAEg+C,GAAwBj/C,EAAA,mBACzD,OAAOqgD,EAAAA,EAAAA,gBAEGlnB,EAAK31B,MAAMvC,IACjB2mI,QAAQ,CACRl/F,OAAQ,CAACuW,EAAOvW,QAChBC,MAAO,CAACsW,EAAOtW,SAGrB,CAT2D,EAS1D,G,CAEYm/F,YAAAA,CAAY18E,G,2DAAC,WAAEnqD,GAAiCoL,EAAA,mBAC3D,OAAOg0C,EAAAA,EAAAA,gBAAkC+tH,EAAK5qK,MAAMvC,IAAa6mI,eACnE,CAF6D,EAE5D,G,CAEY3kF,MAAAA,CAAMiI,G,2DAAC,WAAEnqD,GAA2B+U,EAAA,mBAC/C,OAAOqqC,EAAAA,EAAAA,gBAAkCs8H,EAAKn5K,MAAMvC,IAAakiD,SACnE,CAFiD,EAEhD,G,CAEYthD,OAAAA,CAAOupD,G,2DAAC,WAAEnqD,EAAU,OAAEg+C,GAAwBzoC,EAAA,mBACzD,IAAKyoC,EAAOgK,KAAK7oD,UAAY6+C,EAAOgK,KAAKjiD,UAAW,MAAM1H,MAAM,gCAEhE,IAAIc,EAAU,GAEd,GAAI6+C,EAAOgK,KAAKjiD,UAAW,CACzB,MAAM2hD,EAAM1J,EAAO/L,WAAa/I,EAAAA,GAAWye,UAAUo8C,WAAW/xD,KAAKgM,EAAO/L,kBAAe9qC,EAC3FhI,GAAU4oD,EAAAA,EAAAA,GAAmB/J,EAAOgK,KAAKjiD,UAAUwB,YAAYqgD,EAAAA,EAAAA,GAAeF,GAAOA,OAAMvgD,EAC7F,MAAW62C,EAAOgK,KAAK7oD,UACrBA,EAAU6+C,EAAOgK,KAAK7oD,SAGxB,OAAOigD,EAAAA,EAAAA,gBAEGu8H,EAAKp5K,MAAMvC,IACjBY,QAAQ,CACRgK,MAAOozC,EAAOpzC,MACdo9C,KAAM,CAAE7oD,aAGd,CApB2D,EAoB1D,G,CAEY0iD,QAAAA,CAAQsI,G,2DAAC,WAAEnqD,EAAU,SAAE8hD,EAAQ,OAAE9D,GAAyBzlC,EAAA,mB,QACrE,IAAKylC,EAAO9jC,GAAG/a,UAAY6+C,EAAO9jC,GAAGnU,UAAW,MAAM1H,MAAM,8BAC5D,IAAK2/C,EAAOhM,KAAK7yC,UAAY6+C,EAAOhM,KAAKjsC,UAAW,MAAM1H,MAAM,gCAChE,IAAIw+K,EAAAA,EAAAA,GAAa7+H,EAAOpoB,MAAO,MAAMv3B,MAAM,+BAE3C,MAAM4zC,EAAa+L,EAAO/L,WAAa/I,EAAAA,GAAWye,UAAUo8C,WAAW/xD,KAAKgM,EAAO/L,kBAAe9qC,EAElG,OAAOi4C,EAAAA,EAAAA,gBAEGw8H,EAAKr5K,MAAMvC,EAAY8hD,IAC7BD,SAAS,CACTj3C,MAAmB,QAAZggG,EAAA5sD,EAAOpzC,aAAK,IAAAggG,EAAAA,EAAI,GACvB1wF,GAAI8jC,EAAO9jC,GAAGnU,UACVi4C,EAAO/L,WACL,CACE9yC,SAAS4oD,EAAAA,EAAAA,GACP/J,EAAO9jC,GAAGnU,UAAUwB,YACpBqgD,EAAAA,EAAAA,GAAe3V,GAAcA,OAAa9qC,IAG9C,CAAEhI,SAAS4oD,EAAAA,EAAAA,GAAmB/J,EAAO9jC,GAAGnU,UAAUwB,aACpD,CAAEpI,QAAS6+C,EAAO9jC,GAAG/a,SACzB6yC,KAAMgM,EAAOhM,KAAKjsC,UACd,CAAE5G,SAAS4oD,EAAAA,EAAAA,GAAmB/J,EAAOhM,KAAKjsC,UAAUwB,aACpD,CAAEpI,QAAS6+C,EAAOhM,KAAK7yC,SAC3By2B,KAAMooB,EAAOpoB,KAAOooB,EAAOpoB,KAAO,GAClCqc,YAAYk5H,EAAAA,EAAAA,QAA4BhkK,GACxC4xF,OAAOoyE,EAAAA,EAAAA,GAA0BntH,EAAO+6C,OACxCxuD,OAAQyT,EAAOzT,OACfi8F,OAAqB,QAAb37B,EAAA7sD,EAAOwoF,cAAM,IAAA37B,GAAAA,IAG3B,CAhCuE,EAgCtE,G,CAEYjkD,MAAAA,CAAMuD,G,2DAAC,WAAEnqD,EAAU,SAAE8hD,EAAQ,OAAE9D,GAAuBtmC,EAAA,mBACjE,OAAO0nC,EAAAA,EAAAA,gBAAmCmuH,EAAKhrK,MAAMvC,EAAY8hD,IAAW8E,OAAO5I,GACrF,CAFmE,EAElE,G,CAEYgmF,QAAAA,CAAQ75E,G,2DAAC,WAAEnqD,EAAU,SAAE8hD,EAAQ,OAAE9D,GAAyBiwC,EAAA,mBACrE,IAAKjwC,EAAO7+C,QAAS,MAAMd,MAAM,mBAEjC,OAAO+gD,EAAAA,EAAAA,gBAAmCy8H,EAAKt5K,MAAMvC,EAAY8hD,IAAWkiF,SAAS,CAAE7kI,QAAS6+C,EAAO7+C,UACzG,CAJuE,EAItE,G,CAEYkrE,YAAAA,CAAYlgB,G,2DAAC,WAAEnqD,EAAU,OAAEg+C,GAA4BowC,EAAA,mB,gBAClE,IAAI0uF,EAAS9+H,EAAO++H,MAEpB,IAAKD,EAAQ,QACchB,EAAKr1C,WAAW,CAAEzmI,gBAE5B0H,SAAS,cACtBo1K,EAAgD,QAAvClyE,QAAO5sD,EAAOg/H,aAAah9K,UAAY,IAAA4qG,OAAA,EAAAA,EAAErjG,WAEtD,CAEA,GAAIu1K,EAAQ,CACV,IAAK9+H,EAAOvW,QAA4B,IAAlBuW,EAAOvW,OAAc,MAAMppC,MAAM,iBAEvD,OAAe,QAAXwsG,EAAA7sD,EAAOgK,YAAI,IAAA6iD,OAAA,EAAAA,EAAE9kG,YACRq5C,EAAAA,EAAAA,UACCpB,EAAOi/H,uBAAuBH,EAAmB,QAAX/xE,EAAA/sD,EAAOgK,YAAI,IAAA+iD,OAAA,EAAAA,EAAEhlG,UAAyB,QAAdm3K,EAAAl/H,EAAOm/H,eAAO,IAAAD,GAAAA,EAAWl/H,EAAOvW,UAIjG2X,EAAAA,EAAAA,UACCpB,EAAOo/H,mBAAmBN,EAAsB,QAAdO,EAAAr/H,EAAOm/H,eAAO,IAAAE,GAAAA,EAAWr/H,EAAOvW,QAE5E,CAEA,OAAO2X,EAAAA,EAAAA,gBAEG08H,EAAKv5K,MAAMvC,IACjBqqE,aAAa,CACbpB,MAAMkiG,EAAAA,EAAAA,GAA0BntH,EAAOirB,MACvCjhB,MAAMmjH,EAAAA,EAAAA,IAAwC,QAAXmS,EAAAt/H,EAAOgK,YAAI,IAAAs1H,OAAA,EAAAA,EAAEn+K,SAAU,CAAEA,QAAS6+C,EAAOgK,KAAK7oD,cAAYgI,GAC7FsgC,QAAQ0jI,EAAAA,EAAAA,GAA0BntH,EAAOvW,OAASzB,OAAOgY,EAAOvW,QAAU,MAC1EC,OAAOyjI,EAAAA,EAAAA,GAA0BntH,EAAOtW,MAAQ1B,OAAOgY,EAAOtW,OAAS,MACvE35B,OAAOo9J,EAAAA,EAAAA,GAA0BntH,EAAOjwC,MAAQi4B,OAAOgY,EAAOjwC,OAAS,QAG7E,CApCoE,EAoCnE,G,CAEY88B,OAAAA,CAAOsf,G,2DAAC,WAAEnqD,EAAU,OAAEg+C,EAAM,SAAE8D,GAA0BwsC,EAAA,mBACnE,OAAOlvC,EAAAA,EAAAA,gBAEG28H,EAAKx5K,MAAMvC,EAAY8hD,IAC7BjX,QAAQ,CACRoH,WAAY+L,EAAO/L,WAAa,CAAC7kB,MAAM4kB,KAAKgM,EAAO/L,aAAe,GAClEtH,QAASqT,EAAOrT,QAChBF,UAAWzE,OAAOtK,OAAO+G,aAG/B,CAVqE,EAUpE,G,CAEYgI,SAAAA,CAAS0f,G,2DAAC,WAAEnqD,EAAU,OAAEg+C,GAA0BywC,EAAA,mBAC7D,IAAKzwC,EAAOtT,MAAMvrC,UAAY6+C,EAAOtT,MAAM3kC,UAAW,MAAM1H,MAAM,iCAElE,OAAO+gD,EAAAA,EAAAA,gBAEG48H,EAAKz5K,MAAMvC,IACjByqC,UAAU,CACVC,MAAOsT,EAAOtT,MAAMvrC,QAAU,CAAEA,QAAS6+C,EAAOtT,MAAMvrC,SAAY,CAAE4G,UAAWi4C,EAAOtT,MAAM3kC,WAC5FksC,WAAY+L,EAAO/L,WAAa,CAAC7kB,MAAM4kB,KAAKgM,EAAO/L,aAAe,GAClEtH,QAASqT,EAAOrT,UAGtB,CAZ+D,EAY9D,G,CAEY9E,QAAAA,CAAQskB,G,2DAAC,WAAEnqD,GAA6B2uF,EAAA,mB,MACnD,MAAM9oD,EAEkD,QAFvC+kE,GAAAxrD,EAAAA,EAAAA,gBAED68H,EAAK15K,MAAMvC,IAAa6lC,YAAYkD,YAAI,IAAA6hE,OAAA,EAAAA,EAAE86B,SACpD/8H,GAAOy2C,EAAAA,EAAAA,gBAAkC68H,EAAK15K,MAAMvC,IAAa2I,QAAQogC,KACzExpC,GAAM6/C,EAAAA,EAAAA,gBAAkC68H,EAAK15K,MAAMvC,IAAa0mI,UAAU39F,KAEhF,MAAO,CACLhhB,OAAQ+Z,EAAAA,EAAa0L,GACrBzE,KAAMpqC,OAAAyR,OAAAzR,OAAAyR,OAAA,GACDy1B,GAAQ,CACXl9B,OACApJ,QAEFma,QAAS,GAEb,CAhBqD,EAgBpD,G,CAEYmtC,OAAAA,CAAOsD,G,2DAAC,WAAEnqD,EAAU,OAAEg+C,EAAM,SAAE8D,GAA0B+sC,EAAA,mBACnE,OAAOzvC,EAAAA,EAAAA,gBAAmC+8H,EAAK55K,MAAMvC,EAAY8hD,IAAW+E,QAAQ7I,GACtF,CAFqE,EAEpE,G,CAEMo+H,wBAAAA,CAAwBF,GAA4C,IAA3C,OAAE3xI,GAAyC2xI,EACzE,OAAO3xI,CACT,CAEak8F,UAAAA,CAAUt8E,G,2DAAC,WAAEnqD,GAAoCq8K,EAAA,mBAC5D,mBAAoBkB,EAAKh7K,MAAMvC,IAAaymI,YAC9C,CAF8D,EAE7D,G,CAEY61C,iBAAAA,CAAiBnyH,G,gDAAC,WAC7BnqD,GAGDu8K,EAAA,mBACC,MAAO,CACLx0J,OAAQ+Z,EAAAA,EAAa0L,GACrBzE,UAAM5hC,EACNuS,QAAS,GAEb,CANC,EAMA,G,EAGI,MAAMmqC,EAAa,IAAI+4H,EAAgB,CAC5Cr6K,MAAOqlI,EAAAA,I,saC5MH,MAAO41C,UAAmBjC,EAAAA,EACjB50C,OAAAA,G,yCACX,MAAO,CACL5+G,OAAQ+Z,EAAAA,EAAa0L,GACrBzE,KAAM,CACJlkC,QAAS,GACTykG,cAAe,EACf5hE,MAAO,GACPD,OAAQ,GAEV/tB,QAAS,GAEb,G,CAEamtH,YAAAA,G,yCACX,OAAOznF,EAAAA,EAAAA,SAAqBj4C,EAC9B,G,CAEa+6C,MAAAA,G,yCACX,OAAO9C,EAAAA,EAAAA,gBAAkC73B,KAAKhlB,SAASu6H,qBACzD,G,CAEal8H,OAAAA,CAAOupD,G,2DAAC,OAAEnM,GAAwBj/C,EAAA,mBAC7C,OAAIi/C,EAAOgK,KAAK7oD,SACPigD,EAAAA,EAAAA,iBAGKlnB,EAAK31B,SACXioI,gBAAgB,CAChB1/F,QAAS1d,MAAM4kB,KAAK+xD,WAAW/xD,KAAKkyD,OAAOlyD,KAAKgM,EAAOgK,KAAK7oD,QAAS,YAEvE4qH,KAGF/rE,EAAOgK,KAAKjiD,WACPq5C,EAAAA,EAAAA,gBAEGlnB,EAAK31B,SACXg6H,iBAAiB,CACjB7xF,MAAOsT,EAAOgK,KAAKjiD,UACnBksC,YAAYk5H,EAAAA,EAAAA,GAAiCntH,EAAO/L,WAAa+L,EAAO/L,gBAAa9qC,OAKpFi4C,EAAAA,EAAAA,IAAqBpZ,OAAO,GACrC,CAxB+C,EAwB9C,G,CAEY6b,QAAAA,CAAQsI,G,2DAAC,WAAEnqD,EAAU,SAAE8hD,EAAQ,OAAE9D,GAAyB5yC,EAAA,mB,MACrE,IAAK4yC,EAAO9jC,GAAG/a,UAAY6+C,EAAO9jC,GAAGnU,UAAW,MAAM1H,MAAM,kBAE5D,GAAI2/C,EAAO9jC,GAAG/a,QAAS,CACrB,GAAI6+C,EAAOpoB,QAASinJ,EAAAA,EAAAA,GAAa7+H,EAAOpoB,MAAO,MAAMv3B,MAAM,8BAE3D,MAAMkI,cACE4mK,EAAK5qK,MAAMvC,EAAY8hD,IAC7BD,SAAS,CACT3nC,GAAIkT,MAAM4kB,KAAK+xD,WAAW/xD,KAAKkyD,OAAOlyD,KAAKgM,EAAO9jC,GAAG/a,QAAS,SAC9Dy2B,KAA6B,QAAvBg1E,EAAC5sD,EAAOpoB,YAAe,IAAAg1E,EAAAA,EAAI5kE,OAAO,GACxCuE,OAAQ,CAAEw/E,IAAK/rE,EAAOzT,QACtB+vF,iBAAiB6wC,EAAAA,EAAAA,GACfntH,EAAOy/H,eAAiB,CAAE10C,gBAAiB/qF,EAAOy/H,qBAAmBt2K,GAEvE81H,iBAAiBkuC,EAAAA,EAAAA,GAA4BntH,EAAO0/H,kBACpDn+K,IAAK,CAAEwqH,IAAK/jF,OAAO,QAGrB,OAAOoZ,EAAAA,EAAAA,IAAqB74C,EAC9B,CACA,GAAIy3C,EAAO9jC,GAAGnU,UAAW,CACvB,MAAMQ,cACE4mK,EAAK5qK,MAAMvC,EAAY8hD,IAC7Bk7E,eAAe,CACf9iH,GAAI,CACFwwB,MAAOsT,EAAO9jC,GAAGnU,UACjBksC,YAAYk5H,EAAAA,EAAAA,GAAiCntH,EAAO/L,WAAa+L,EAAO/L,gBAAa9qC,IAEvFyuB,KAA6B,kBAAhBooB,EAAOpoB,KAAoB,IAAKu1I,EAAAA,EAAAA,GAA4BntH,EAAOpoB,MAChF2U,OAAQyT,EAAOzT,OACf+vF,iBAAiB6wC,EAAAA,EAAAA,GAA0BntH,EAAOy/H,gBAClDxgD,iBAAiBkuC,EAAAA,EAAAA,GACfntH,EAAO0/H,iBAAmB1/H,EAAO0/H,sBAAmBv2K,GAEtD5H,KAAK4rK,EAAAA,EAAAA,GAA0B,QAGjC,OAAO/rH,EAAAA,EAAAA,IAAqB74C,EAC9B,CAEA,OAAO64C,EAAAA,EAAAA,SAAqBj4C,EAC9B,CA1CuE,EA0CtE,G,CAEYu/H,MAAAA,G,yCACX,OAAOtnF,EAAAA,EAAAA,sBAAyC73B,KAAKhlB,SAAS4jH,aAAa,CAAC,IAAIA,aAAa4D,IAC/F,G,CAEanjE,MAAAA,G,yCACX,OAAOxH,EAAAA,EAAAA,IAAsB,CAAE1+C,IAAK,aACtC,G,CAEasjI,QAAAA,G,yCACX,OAAO5kF,EAAAA,EAAAA,IAAsB,CAAE1+C,IAAK,eACtC,G,CAEa2pE,YAAAA,G,yCACX,OAAOjrB,EAAAA,EAAAA,IAA4C,CACjDv6C,QAAS,GACTykG,cAAetjE,OAAO,GACtByB,OAAQzB,OAAO,GACf0B,MAAO1B,OAAO,KAElB,G,CAEa6E,OAAAA,G,yCACX,OAAOuU,EAAAA,EAAAA,IAAsB,CAAE1+C,IAAK,cACtC,G,CAEa+pC,SAAAA,G,yCACX,OAAO2U,EAAAA,EAAAA,IAAqB,CAAE1+C,IAAK,gBACrC,G,CAEamlC,QAAAA,CAAQskB,G,2DAAC,WAAEnqD,GAA6B+U,EAAA,mBACnD,MAAMlN,eAAuB6zK,EAAKn5K,MAAMvC,IAAa6H,UAAUA,OACzDP,eAAyBo0K,EAAKn5K,SAAS+E,YAAYA,SAEnD/H,GAAM6/C,EAAAA,EAAAA,sBAAyCs8H,EAAKn5K,SAAS4jH,aAAa,CAAC,IAAIA,aAAa4D,KAAKhhF,KAEvG,MAAO,CACLhhB,OAAQ+Z,EAAAA,EAAa0L,GACrBzE,KAAM,CACJzhC,WACAu+B,SAAU,GACV99B,KARS,oBASTF,SACAtI,IAAQ,OAAHA,QAAG,IAAHA,EAAAA,EAAOymC,OAAO,KACnBr9B,KAAM,IAER+Q,QAAS,GAEb,CAlBqD,EAkBpD,G,CAEYmtC,OAAAA,G,yCACX,OAAOzH,EAAAA,EAAAA,IAAsB,CAAE1+C,IAAK,cACtC,G,CAEO07K,wBAAAA,CAAwB7mK,GAA4C,IAA3C,OAAEg1B,GAAyCh1B,EACzE,OAAOg1B,CACT,CAEa+xI,iBAAAA,CAAiBnyH,G,gDAAC,WAAEnqD,GAAoCuY,EAAA,mBACnE,aAAa8qC,EAAAA,EAAai5H,kBAAkB,CAAEt8K,cAChD,CAFqE,EAEpE,G,EAGI,MAAM4hD,EAAa,IAAI47H,EAAW,CAEvCj7K,MAAOA,CAAOvC,EAAqB8hD,IAA4BkH,OAAA,6BAAC,aAAM6hF,EAAAA,EAAAA,IAAc/oF,EAAS,K,+bCvJzF,MAAO67H,UAAqBpC,EAAAA,EACnB50C,OAAAA,G,yCACX,MAAO,CACL5+G,OAAQ+Z,EAAAA,EAAa0L,GACrBzE,KAAM,CACJlkC,QAAS,GACTykG,cAAe,EACf5hE,MAAO,GACPD,OAAQ,GAEV/tB,QAAS,GAEb,G,CAEamtH,YAAAA,G,yCACX,OAAOznF,EAAAA,EAAAA,SAAqBj4C,EAC9B,G,CAEa+6C,MAAAA,CAAMiI,G,2DAAC,WAAEnqD,GAA2BjB,EAAA,mBAC/C,OAAOqgD,EAAAA,EAAAA,gBAAkClnB,EAAK31B,MAAMvC,IAAa88H,qBACnE,CAFiD,EAEhD,G,CAEYl8H,OAAAA,CAAOupD,G,2DAAC,WAAEnqD,EAAU,OAAEg+C,GAAwB5yC,EAAA,mBACzD,OAAI4yC,EAAOgK,KAAKjiD,WACPq5C,EAAAA,EAAAA,gBAEG+tH,EAAK5qK,MAAMvC,IACjBu8H,iBAAiB,CACjB7xF,MAAOsT,EAAOgK,KAAKjiD,UACnBksC,YAAYk5H,EAAAA,EAAAA,GAAiCntH,EAAO/L,WAAa+L,EAAO/L,gBAAa9qC,OAKpFi4C,EAAAA,EAAAA,IAAqBpZ,OAAO,GACrC,CAb2D,EAa1D,G,CAEY6b,QAAAA,CAAQsI,G,2DAAC,WAAEnqD,EAAU,SAAE8hD,EAAQ,OAAE9D,GAAyBjpC,EAAA,mBACrE,IAAKipC,EAAO9jC,GAAGnU,UAAW,MAAM1H,MAAM,6BACtC,IAAIw+K,EAAAA,EAAAA,GAAa7+H,EAAOpoB,MAAO,MAAMv3B,MAAM,+BAE3C,MAAMkI,cACEm1K,EAAKn5K,MAAMvC,EAAY8hD,IAC7Bk7E,eAAe,CACf9iH,GAAI,CACFwwB,MAAOsT,EAAO9jC,GAAGnU,UACjBksC,YAAYk5H,EAAAA,EAAAA,GAAiCntH,EAAO/L,WAAa+L,EAAO/L,gBAAa9qC,IAEvFyuB,MAAMu1I,EAAAA,EAAAA,GAA4BntH,EAAOpoB,MACzC2U,OAAQyT,EAAOzT,OACf+vF,iBAAiB6wC,EAAAA,EAAAA,GAA0BntH,EAAOy/H,gBAClDxgD,iBAAiBkuC,EAAAA,EAAAA,GAAiCntH,EAAO0/H,iBAAmB1/H,EAAO0/H,sBAAmBv2K,GACtG5H,KAAK4rK,EAAAA,EAAAA,GAA0BntH,EAAOz+C,OAGxC,OAAO6/C,EAAAA,EAAAA,IAAqB74C,EAC9B,CAnBuE,EAmBtE,G,CAEYmgI,MAAAA,CAAMv8E,G,2DAAC,WAAEnqD,GAA2BuV,EAAA,mBAC/C,OAAO6pC,EAAAA,EAAAA,gBAAkCu8H,EAAKp5K,MAAMvC,IAAay8H,YACnE,CAFiD,EAEhD,G,CAEY71E,MAAAA,G,yCACX,OAAOxH,EAAAA,EAAAA,IAAsB,CAAE1+C,IAAK,aACtC,G,CAEasjI,QAAAA,G,yCACX,OAAO5kF,EAAAA,EAAAA,IAAsB,CAAE1+C,IAAK,eACtC,G,CAEa2pE,YAAAA,CAAYlgB,G,2DAAC,WAAEnqD,EAAU,OAAEg+C,GAA4BzlC,EAAA,mBAClE,QAAsBpR,IAAlB62C,EAAOvW,aAAyCtgC,IAAjB62C,EAAOtW,MAAqB,MAAMrpC,MAAM,sBAG3E,MAAMu/K,GAAcx+H,EAAAA,EAAAA,gBACLw8H,EAAKr5K,MAAMvC,IAAa46H,iBAAiB,CAAE/yC,MAAO7hD,OAAO,GAAI13B,OAAQ03B,OAAO,OACzF+C,KAEF,GAAI60I,EAAa,CACf,MAAM,WAAEvhD,GAAeuhD,EAGvB,IAAI5N,EAAct0I,OAAO2gG,GAAc,EAAIr+E,EAAOvW,OAASuW,EAAOtW,MAE9DsoI,EAAc,IAAGA,EAAc,GAEnC,MAAMb,GAAU/vH,EAAAA,EAAAA,gBAENw8H,EAAKr5K,MAAMvC,IACjB46H,iBAAiB,CACjB/yC,MAAO7hD,OAAOgqI,GACd1hK,OAAQ03B,OAAOgY,EAAOtW,UAExBqB,KAEF,GAAIomI,EAAS,CACX,MAAM,sBAAE7yC,EAAuBjyD,aAAcwzG,GAAgC1O,EAE7E,IAAI2O,EAA8C,GAE9CxhD,EAAsBhuH,OAAS,IACjCwvK,SACQ7/K,QAAQoqC,IACZi0F,EAAsB1+H,KAAW0hB,GAAO0pC,EAAA4yH,OAAA,sBACtC,mBAEUl7C,EAAAA,EAAAA,IAAYphH,EAAI4K,SAAS,GAAG3iB,aAClCqzH,iBAAiB,CACjB/yC,MAAOvoE,EAAIuoE,MACXv5E,OAAQgR,EAAIhR,UAEd+7D,YACJ,QAGD5hC,OACAmF,MAAK,CAACM,EAAGC,IACJD,EAAE86C,UAAY76C,EAAE66C,WAAmB,EACnC96C,EAAE86C,UAAY76C,EAAE66C,UAAkB,EAC/B,KAIb,MAAM3e,EAAeyzG,EAClBv1K,OAAOs1K,GACPjwI,MAAK,CAACM,EAAGC,IACJD,EAAE86C,UAAY76C,EAAE66C,WAAmB,EACnC96C,EAAE86C,UAAY76C,EAAE66C,UAAkB,EAC/B,IAERprF,KAAI,CAAC0hB,EAAKvR,IChJf,SAAgCu7C,EAA8Bv7C,G,4DAClE,MAAM6nB,GAA8B,QAAvBu0B,EAAAb,EAAYzH,SAAS,UAAE,IAAAsI,OAAA,EAAAA,EAAEv0B,KAAKtnB,QAChB,QAAvBs8F,EAAAthD,EAAYzH,SAAS,UAAE,IAAA+oD,OAAA,EAAAA,EAAEh1E,MACN,QAAnBi1E,EAAAvhD,EAAY+jC,KAAK,UAAE,IAAAwd,OAAA,EAAAA,EAAEj1E,KAAKtnB,QACP,QAAnBy8F,EAAAzhD,EAAY+jC,KAAK,UAAE,IAAA0d,OAAA,EAAAA,EAAEn1E,MACF,QAAnBsnJ,EAAA5zH,EAAY8jC,KAAK,UAAE,IAAA8vF,OAAA,EAAAA,EAAEtnJ,KAAKtnB,QACP,QAAnB+uK,EAAA/zH,EAAY8jC,KAAK,UAAE,IAAAiwF,OAAA,EAAAA,EAAEznJ,UACrBzuB,EAEE42K,EAAgD,QAAnCC,EAAuB,QAAvBV,EAAAh0H,EAAYzH,SAAS,UAAE,IAAAy7H,OAAA,EAAAA,EAAEtrI,KAAKtH,aAAK,IAAAszI,EAAAA,EAAuB,QAAnBC,EAAA30H,EAAY+jC,KAAK,UAAE,IAAA4wF,OAAA,EAAAA,EAAEjsI,KAAKtH,MAC9EwzI,EAAuD,QAA3CC,EAAuB,QAAvBC,EAAA90H,EAAYzH,SAAS,UAAE,IAAAu8H,OAAA,EAAAA,EAAEpsI,KAAKC,WAAW,UAAE,IAAAksI,EAAAA,EAAuB,QAAnBE,EAAA/0H,EAAY+jC,KAAK,UAAE,IAAAgxF,OAAA,EAAAA,EAAErsI,KAAKC,WAAW,GAChGqsI,EAA4C,QAAjCC,EAAuB,QAAvBC,EAAAl1H,EAAYzH,SAAS,UAAE,IAAA28H,OAAA,EAAAA,EAAEtkK,GAAGwwB,aAAK,IAAA6zI,EAAAA,EAAuB,QAAnBE,EAAAn1H,EAAY8jC,KAAK,UAAE,IAAAqxF,OAAA,EAAAA,EAAEvkK,GAAGwwB,MACxEg0I,EAAmD,QAAzCC,EAAuB,QAAvBC,EAAAt1H,EAAYzH,SAAS,UAAE,IAAA+8H,OAAA,EAAAA,EAAE1kK,GAAG+3B,WAAW,UAAE,IAAA0sI,EAAAA,EAAuB,QAAnBE,EAAAv1H,EAAY8jC,KAAK,UAAE,IAAAyxF,OAAA,EAAAA,EAAE3kK,GAAG+3B,WAAW,GAE1F6sI,EAAWZ,EAAYh1I,EAAAA,GAAWye,UAAUo8C,WAAW/xD,KAAKksI,SAAc/2K,EAC1E43K,EAAehB,EACjBl2H,EAAAA,GAAkB1e,cAAc,CAC9BpjC,UAAWg4K,EACXx2H,YAAYK,EAAAA,EAAAA,GAAek3H,GAAYA,OAAW33K,SAEpDA,EAEE63K,EAASN,EAAUx1I,EAAAA,GAAWye,UAAUo8C,WAAW/xD,KAAK0sI,SAAYv3K,EACpEihH,EAAak2D,EACfz2H,EAAAA,GAAkB1e,cAAc,CAC9BpjC,UAAWu4K,EACX/2H,YAAYK,EAAAA,EAAAA,GAAeo3H,GAAUA,OAAS73K,SAEhDA,EAEE83K,EAAkC,QAAvBC,EAAA51H,EAAYzH,SAAS,UAAE,IAAAq9H,OAAA,EAAAA,EAAE3/K,IAE1C,MAAO,CACLypF,UAAW1/B,EAAY0/B,UACvB/f,KAAM,GACN1pE,IAAK0/K,EAAWA,EAAS,QAAK93K,EAC9B42K,WAAkC,QAAtBoB,EAAU,OAAVpB,QAAU,IAAVA,OAAU,EAAVA,EAAYx2K,kBAAU,IAAA43K,EAAAA,EAAI,GACtCL,SAAUZ,EACVa,aAAmC,QAArBK,EAAY,OAAZL,QAAY,IAAZA,OAAY,EAAZA,EAAcj3H,eAAO,IAAAs3H,EAAAA,EAAI,GACvCd,SAA8B,QAApBe,EAAQ,OAARf,QAAQ,IAARA,OAAQ,EAARA,EAAU/2K,kBAAU,IAAA83K,EAAAA,EAAI,GAClCL,OAAQN,EACRt2D,WAA+B,QAAnBk3D,EAAU,OAAVl3D,QAAU,IAAVA,OAAU,EAAVA,EAAYtgE,eAAO,IAAAw3H,EAAAA,EAAI,GACnCh5C,WAAWi5C,EAAAA,EAAAA,GACTj2H,EAAYzH,SAAS,GACjB,CAAEo6E,SAAU,MACZ3yE,EAAY+jC,KAAK,GACjB,CAAE0uC,KAAM,MACRzyE,EAAY8jC,KAAK,GACjB,CAAE4uC,KAAM,MACR,CAAEqD,QAAS,OAEjB90F,OAAsE,QAA9Di1I,EAA+B,QAA/BC,EAAuB,QAAvBC,EAAAp2H,EAAYzH,SAAS,UAAE,IAAA69H,OAAA,EAAAA,EAAEn1I,cAAM,IAAAk1I,EAAAA,EAAuB,QAAnBE,EAAAr2H,EAAY+jC,KAAK,UAAE,IAAAsyF,OAAA,EAAAA,EAAEp1I,cAAM,IAAAi1I,EAAAA,EAAuB,QAAnBI,EAAAt2H,EAAY8jC,KAAK,UAAE,IAAAwyF,OAAA,EAAAA,EAAEr1I,OAC/Fx8B,QACA6nB,KAAMA,EAAO,IAAIA,EAAK,IAAM,GAC5B7N,OAAQ,GAEZ,CD0FY83J,CAAsBvgK,EAAK0mB,OAAOgqI,GAAehqI,OAAOj4B,MAG5D,OAAOqxC,EAAAA,EAAAA,IAA4C,CACjDv6C,QAASwlE,EAAagxB,UACtBiO,cAAe+yB,EACf50F,OAAQzB,OAAOgY,EAAOvW,QACtBC,MAAO1B,OAAOgY,EAAOtW,QAEzB,CACF,CAEA,OAAO0X,EAAAA,EAAAA,SAA4Cj4C,EACrD,CA3EoE,EA2EnE,G,CAEY0jC,OAAAA,G,yCACX,OAAOuU,EAAAA,EAAAA,IAAsB,CAAE1+C,IAAK,cACtC,G,CAEa+pC,SAAAA,G,yCACX,OAAO2U,EAAAA,EAAAA,IAAqB,CAAE1+C,IAAK,gBACrC,G,CAEamlC,QAAAA,CAAQskB,G,2DAAC,WAAEnqD,GAA6B0X,EAAA,mBACnD,MAAMmuB,GAAWuZ,EAAAA,EAAAA,gBACFmuH,EAAKhrK,MAAMvC,IAAa08H,kBACrC3zF,KAEF,IAAKlD,EACH,MAAO,CACL9d,OAAQ+Z,EAAAA,EAAa0P,MACrBzI,UAAM5hC,EACNuS,QAAS,IAIb,IAAI3R,EAAO,GACPF,EAAS,GACTP,EAAW0+B,OAAO,GAClBzmC,EAAMymC,OAAO,GACbr9B,EAAO,GAEX,IAAK,IAAI4tC,EAAI,EAAGA,EAAI1Q,EAASv3B,OAAQioC,IAAK,CACxC,MAAMj3B,EAAMumB,EAAS0Q,GACrB,GAAe,eAAXj3B,EAAI,GAAqB,CAE3BvX,EADYuX,EAAI,GACLlgB,IACb,MAAO,GAAe,iBAAXkgB,EAAI,GAAuB,CAEpCzX,EADYyX,EAAI,GACHlgB,IACf,MAAO,GAAe,mBAAXkgB,EAAI,GAAyB,CAEtChY,EADYgY,EAAI,GACD9f,GACjB,MAAO,GAAe,cAAX8f,EAAI,GAAoB,CAEjC/f,EADY+f,EAAI,GACN9f,GACZ,MAAO,GAAe,eAAX8f,EAAI,GAAqB,CAElC3W,EADY2W,EAAI,GACLlgB,IACb,CACF,CAEA,MAAO,CACL2oB,OAAQ+Z,EAAAA,EAAa0L,GACrBzE,KAAM,CACJzhC,SAAUo0B,OAAOp0B,GACjBS,OACAF,SACAtI,MACAoJ,QAEF+Q,QAAS,GAEb,CAlDqD,EAkDpD,G,CAEYmtC,OAAAA,G,yCACX,OAAOzH,EAAAA,EAAAA,IAAsB,CAAE1+C,IAAK,cACtC,G,CAEO07K,wBAAAA,CAAwBnuF,GAA4C,IAA3C,OAAE1jD,GAAyC0jD,EACzE,OAAO1jD,CACT,CAEa+xI,iBAAAA,CAAiBnyH,G,2DAAC,WAAEnqD,GAAoCouF,EAAA,mBACnE,MAAM7nF,eAAuBs1K,EAAKt5K,MAAMvC,IAAa28H,yBAAyB,GAC9E,OAAOv9E,EAAAA,EAAAA,IACL74C,EACI,CAAEmkC,MAAOnkC,EAAOmkC,MAAMnjC,WAAYmgD,IAAKnhD,EAAO0rC,WAAW,GAAK,IAAI1rC,EAAO0rC,WAAW,SAAM9qC,QAC1FA,EAER,CAPqE,EAOpE,G,EAGI,MAAMk8C,EAAe,IAAIs6H,EAAa,CAC3Cp7K,MAAO+gD,EAAAA,I,saElOH,MAAOw8H,UAAqBvE,EAAAA,EACnB50C,OAAAA,G,yCACX,MAAO,CACL5+G,OAAQ+Z,EAAAA,EAAa0L,GACrBzE,KAAM,CACJlkC,QAAS,GACTykG,cAAe,EACf5hE,MAAO,GACPD,OAAQ,GAEV/tB,QAAS,GAEb,G,CAEamtH,YAAAA,G,yCACX,OAAOznF,EAAAA,EAAAA,SAAqBj4C,EAC9B,G,CAEa+6C,MAAAA,CAAMiI,G,2DAAC,WAAEnqD,GAA2BjB,EAAA,mBAC/C,OAAOqgD,EAAAA,EAAAA,gBAAkClnB,EAAK31B,MAAMvC,IAAa88H,qBACnE,CAFiD,EAEhD,G,CAEYl8H,OAAAA,CAAOupD,G,gDAAC,WAAEnqD,EAAU,OAAEg+C,GAAwB5yC,EAAA,mBACzD,OAAI4yC,EAAOgK,KAAKjiD,gBACDs9C,EAAAA,EAAaziD,QAAQ,CAAEZ,aAAYg+C,YAG3CoB,EAAAA,EAAAA,IAAqBpZ,OAAO,GACrC,CAN2D,EAM1D,G,CAEY6b,QAAAA,CAAQsI,G,gDAAC,WAAEnqD,EAAU,SAAE8hD,EAAQ,OAAE9D,GAAyBjpC,EAAA,mBACrE,IAAKipC,EAAO9jC,GAAGnU,UAAW,MAAM1H,MAAM,6BACtC,IAAIw+K,EAAAA,EAAAA,GAAa7+H,EAAOpoB,MAAO,MAAMv3B,MAAM,+BAE3C,aAAaglD,EAAAA,EAAaxB,SAAS,CACjC7hD,aACA8hD,WACA9D,UAEJ,CATuE,EAStE,G,CAEY0oF,MAAAA,CAAMv8E,G,gDAAC,WAAEnqD,GAA2BuV,EAAA,mBAC/C,aAAa8tC,EAAAA,EAAaqjF,OAAO,CAAE1mI,cACrC,CAFiD,EAEhD,G,CAEY4mD,MAAAA,G,yCACX,OAAOxH,EAAAA,EAAAA,IAAsB,CAAE1+C,IAAK,aACtC,G,CAEasjI,QAAAA,G,yCACX,OAAO5kF,EAAAA,EAAAA,IAAsB,CAAE1+C,IAAK,eACtC,G,CAEa2pE,YAAAA,CAAYlgB,G,gDAAC,WAAEnqD,EAAU,OAAEg+C,GAA4BzlC,EAAA,mBAClE,aAAa8qC,EAAAA,EAAagnB,aAAa,CAAErqE,aAAYg+C,UACvD,CAFoE,EAEnE,G,CAEYnT,OAAAA,CAAOsf,G,2DAAC,WAAEnqD,EAAU,OAAEg+C,EAAM,SAAE8D,GAA0BpqC,EAAA,mBACnE,OAAO0nC,EAAAA,EAAAA,gBAEG+tH,EAAK5qK,MAAMvC,EAAY8hD,IAC7B0+E,cAAc,CACd71F,QAAS,CACPD,MAAOsT,EAAOrT,QACdsH,YAAYk5H,EAAAA,EAAAA,GAA4BntH,EAAOoG,WAAapG,EAAOoG,gBAAaj9C,IAElF5H,KAAK4rK,EAAAA,EAAAA,GAA0BntH,EAAOz+C,KACtC+6H,gBAAiB,GACjB/vF,OAAQyT,EAAOvT,UACf7U,KAAM,GACN0pG,oBAAoB6rC,EAAAA,EAAAA,GAA0BntH,EAAOshF,oBACrDC,YAAY4rC,EAAAA,EAAAA,GAA0BntH,EAAOuhF,YAC7CtC,iBAAiBkuC,EAAAA,EAAAA,GAA4BntH,EAAO/L,WAAa+L,EAAO/L,gBAAa9qC,KAG3F,CAlBqE,EAkBpE,G,CAEYsjC,SAAAA,CAAS0f,G,2DAAC,WAAEnqD,EAAU,OAAEg+C,GAA0BiwC,EAAA,mBAC7D,IAAKjwC,EAAOtT,MAAM3kC,UAAW,MAAM1H,MAAM,gBAEzC,MAAMkI,cACEm1K,EAAKn5K,MAAMvC,IACjBugI,gBAAgB,CAChB51F,QAAS,CACPD,MAAOsT,EAAOrT,QACdsH,YAAYk5H,EAAAA,EAAAA,GAAiCntH,EAAOoG,WAAapG,EAAOoG,gBAAaj9C,IAEvF2jC,QAAS,CACPJ,MAAOsT,EAAOtT,MAAM3kC,UACpBksC,YAAYk5H,EAAAA,EAAAA,GAAiCntH,EAAO/L,WAAa+L,EAAO/L,gBAAa9qC,MAIzF,OAAOi4C,EAAAA,EAAAA,IAAqB74C,EAAOkkC,UACrC,CAjB+D,EAiB9D,G,CAEY5E,QAAAA,CAAQskB,G,gDAAC,WAAEnqD,GAA6BouF,EAAA,mBACnD,aAAa/qC,EAAAA,EAAaxd,SAAS,CAAE7lC,cACvC,CAFqD,EAEpD,G,CAEY6mD,OAAAA,G,yCACX,OAAOzH,EAAAA,EAAAA,IAAsB,CAAE1+C,IAAK,cACtC,G,CAEO07K,wBAAAA,CAAwB9tF,GAA4C,IAA3C,OAAE/jD,GAAyC+jD,EACzE,OAAO/jD,CACT,CAEa+xI,iBAAAA,CAAiBnyH,G,gDAAC,WAAEnqD,GAAoCyuF,EAAA,mBACnE,aAAaprC,EAAAA,EAAai5H,kBAAkB,CAAEt8K,cAChD,CAFqE,EAEpE,G,EAGI,MAAM+/K,EAAe,IAAID,EAAa,CAC3Cv9K,MAAOg7H,EAAAA,I,4bC6DF,MAAMx7E,EAAe,IAnKtB,MAAN36B,WAAAA,GACS,KAAAo7E,iBAAmB,IAAIC,IAEvB,KAAAC,SAAW,IAAID,GA8JxB,CAnJSE,cAAAA,CACL56F,EACA66F,GASA,GAAIr7E,KAAKm7E,SAAShhD,IAAI35C,GAAO,MAAM1J,MAAM,qCACzCkpB,KAAKm7E,SAAS14C,IAAIjiD,EAAM66F,EAC1B,CAEOC,QAAAA,CAAS9+C,GACdA,EAAU92C,SAAQlO,IAA6B,IAA5B,SAAEM,EAAQ,WAAEW,GAAYjB,EACzCwoB,KAAKi7E,iBAAiBx4C,IAAIhqD,EAAYX,EAAS,GAEnD,CAEOmrD,MAAAA,GACL,OAAOjjC,KAAKi7E,gBACd,CAEOM,UAAAA,CAAW9iG,GAChB,IAAIX,EAAWkoB,KAAKi7E,iBAAiB9gD,IAAI1hD,GAKzC,OAJKX,IACHy9B,QAAQtpB,MAAM,gCAADjL,OAAiCvI,IAC9CX,EAAW88B,EAAAA,EAAeI,KAErBhV,KAAK+8B,iBAAiBjlD,EAC/B,CAEOilD,gBAAAA,CAAiBy+C,GACtB,IAAKA,IAAgBx7E,KAAKm7E,SAAShhD,IAAIqhD,GAAc,MAAM1kG,MAAM,2BAADkK,OAA4Bw6F,IAC5F,OAAOx7E,KAAKm7E,SAAShhD,IAAIqhD,EAC3B,CAEa8jC,YAAAA,CAAY18E,G,2DAAC,WAAEnqD,GAAiDoL,EAAA,mBAC3E,MAAMw3F,EAAU1qE,EAAK4qE,WAAW9iG,GAChC,aAAa4iG,EAASikC,aAAa,CAAE7mI,cACvC,CAH6E,EAG5E,G,CAEY2mI,OAAAA,CAAOx8E,G,2DAAC,OAAEnM,EAAM,WAAEh+C,GAA4C+U,EAAA,mBACzE,MAAM6tF,EAAUuqE,EAAKrqE,WAAW9iG,GAChC,aAAa4iG,EAAS+jC,QAAQ,CAC5B3mI,aACAg+C,UAEJ,CAN2E,EAM1E,G,CAEYkE,MAAAA,CAAMiI,G,2DAAC,WAAEnqD,GAA2CuV,EAAA,mBAC/D,MAAMqtF,EAAU84E,EAAK54E,WAAW9iG,GAChC,aAAa4iG,EAAS1gD,OAAO,CAC3BliD,cAEJ,CALiE,EAKhE,G,CAEYY,OAAAA,CAAOupD,G,2DAAC,WAAEnqD,EAAU,OAAEg+C,GAAwCzlC,EAAA,mBACzE,MAAMqqF,EAAU+4E,EAAK74E,WAAW9iG,GAEhC,aAAa4iG,EAAShiG,QAAQ,CAC5BZ,aACAg+C,UAEJ,CAP2E,EAO1E,G,CAEY6D,QAAAA,CAAQsI,G,2DAAC,WAAEnqD,EAAU,OAAEg+C,EAAM,SAAE8D,GAAmDpqC,EAAA,mBAC7F,MAAMkrF,EAAUg5E,EAAK94E,WAAW9iG,GAChC,aAAa4iG,EAAS/gD,SAAS,CAC7B7hD,aACAg+C,SACA8D,YAEJ,CAP+F,EAO9F,G,CAEY8E,MAAAA,CAAMuD,G,2DAAC,WAAEnqD,EAAU,SAAE8hD,EAAQ,OAAE9D,GAA+CiwC,EAAA,mBACzF,MAAM2U,EAAU2qE,EAAKzqE,WAAW9iG,GAChC,aAAa4iG,EAASh8C,OAAO,CAC3B5mD,aACA8hD,WACA9D,UAEJ,CAP2F,EAO1F,G,CAEYgmF,QAAAA,CAAQ75E,G,2DAAC,WAAEnqD,EAAU,SAAE8hD,EAAQ,OAAE9D,GAAiDowC,EAAA,mBAC7F,MAAMwU,EAAUi5E,EAAK/4E,WAAW9iG,GAChC,aAAa4iG,EAASohC,SAAS,CAC7BhkI,aACA8hD,WACA9D,UAEJ,CAP+F,EAO9F,G,CAEYqsB,YAAAA,CAAYlgB,G,2DAAC,WAAEnqD,EAAU,OAAEg+C,GAA4CswC,EAAA,mBAClF,MAAMsU,EAAUk5E,EAAKh5E,WAAW9iG,GAChC,aAAa4iG,EAASv4B,aAAa,CACjCrqE,aACAg+C,UAEJ,CANoF,EAMnF,G,CAEYnT,OAAAA,CAAOsf,G,2DAAC,WAAEnqD,EAAU,SAAE8hD,EAAQ,OAAE9D,GAAwCywC,EAAA,mBACnF,MAAMmU,EAAUm5E,EAAKj5E,WAAW9iG,GAChC,aAAa4iG,EAAS/3D,QAAQ,CAC5B7qC,aACAg+C,SACA8D,YAEJ,CAPqF,EAOpF,G,CAEYrX,SAAAA,CAAS0f,G,2DAAC,WAAEnqD,EAAU,OAAEg+C,GAA0C2wC,EAAA,mBAC7E,MAAMiU,EAAUo5E,EAAKl5E,WAAW9iG,GAChC,aAAa4iG,EAASn4D,UAAU,CAC9BzqC,aACAg+C,UAEJ,CAN+E,EAM9E,G,CAEYnY,QAAAA,CAAQskB,G,2DAAC,WAAEnqD,GAA6C6uF,EAAA,mBACnE,MAAM+T,EAAUq5E,EAAKn5E,WAAW9iG,GAChC,aAAa4iG,EAAS/8D,SAAS,CAC7B7lC,cAEJ,CALqE,EAKpE,G,CAEY6mD,OAAAA,CAAOsD,G,2DAAC,WAAEnqD,EAAU,SAAE8hD,EAAQ,OAAE9D,GAAgDk+H,EAAA,mBAC3F,MAAMt5E,EAAUu5E,EAAKr5E,WAAW9iG,GAChC,aAAa4iG,EAAS/7C,QAAQ,CAC5B7mD,aACAg+C,SACA8D,YAEJ,CAP6F,EAO5F,G,CAEMs6H,wBAAAA,CAAyB4D,GAE9B,OADgBz4J,KAAKu7E,WAAWk9E,EAAQhgL,YACxBo8K,yBAAyB4D,EAC3C,CAEa1D,iBAAAA,CAAiBnyH,G,2DAAC,WAAEnqD,GAAoCq8K,EAAA,mBACnE,MAAMz5E,EAAU26E,EAAKz6E,WAAW9iG,GAChC,aAAa4iG,EAAS05E,kBAAkB,CACtCt8K,cAEJ,CALqE,EAKpE,G,GAKUwS,EAAkBuxC,GAA6BhC,EAAa8gD,SAAS9+C,GAElFhC,EAAa4gD,eAAexmE,EAAAA,EAAeI,IAAKsnB,EAAAA,GAChD9B,EAAa4gD,eAAexmE,EAAAA,EAAeC,MAAOsnB,EAAAA,GAClD3B,EAAa4gD,eAAexmE,EAAAA,EAAeG,UAAWqgJ,EAAAA,GACtD56H,EAAa4gD,eAAexmE,EAAAA,EAAeE,WAAYogJ,EAAAA,GACvD16H,EAAa4gD,eAAexmE,EAAAA,EAAeK,MAAO6mB,EAAAA,GAClDtB,EAAa4gD,eAAexmE,EAAAA,EAAeM,MAAOsjJ,EAAAA,GAClDh+H,EAAa4gD,eAAexmE,EAAAA,EAAe9xB,IAAKu3C,EAAAA,E,+BCvHzC,IAAKzlB,E,iBAAZ,SAAYA,GACVA,EAAA,UACAA,EAAA,cACAA,EAAA,UACAA,EAAA,wBACAA,EAAA,sBACAA,EAAA,cACAA,EAAA,aACD,CARD,CAAYA,IAAAA,EAAc,I,sLCjFnB,MAAM2J,EAAoC,CAC/Cv8B,aAAc4yB,EAAAA,EAAeI,IAC7Bx0B,KAAM,cACNT,SAAU,EACVO,OAAQ,OACR7H,WAAYiqK,EAAAA,GACZhkI,YAAaD,OAAO,MACpBD,SAAUC,OAAO,GACjBr9B,KAAM,kBAAFJ,OAAoB0hK,EAAAA,GAAgB,UAG7B9kI,EAAc,IAAIlmC,EAAAA,EAAM,CACnCE,QAAS2mC,EAAuB9lC,WAChCsH,SAAUw+B,EAAuBx+B,SACjCO,OAAQi+B,EAAuBj+B,OAC/BE,KAAM+9B,EAAuB/9B,KAC7BY,KAAMm9B,EAAuBn9B,KAC7BtJ,SAAU88B,EAAAA,EAAeI,IACzBwJ,SAAUrK,OAAOoK,EAAuBC,YClB7Boe,EAA4B,CACvCt8C,OAAQ,MACRE,KAAM,oBACNT,SAAU,EACVtH,WAAYi+F,EAAAA,GACZl4D,SAAUC,OAAO,KACjBC,YAAaD,OAAO,MACpBz8B,aAAc4yB,EAAAA,EAAeM,MAC7B9zB,KAAM,kBAAFJ,OAAoB01F,EAAAA,GAAkB,SAG/B5zF,EAAM,IAAIpL,EAAAA,EAAM,CAC3BE,QAASglD,EAAenkD,WACxBsH,SAAU68C,EAAe78C,SACzBO,OAAQs8C,EAAet8C,OACvBE,KAAMo8C,EAAep8C,KACrBY,KAAMw7C,EAAex7C,KACrBtJ,SAAU88B,EAAAA,EAAeM,MACzBsJ,SAAUrK,OAAOyoB,EAAepe,YClBrBk6I,EAA4B,CACvCp4K,OAAQ,MACRE,KAAM,gBACNT,SAAU,EACVtH,WAAYkqK,EAAAA,GACZnkI,SAAUC,OAAO,KACjBC,YAAaD,OAAO,MACpBz8B,aAAc4yB,EAAAA,EAAeK,MAC7B7zB,KAAM,kBAAFJ,OAAoB2hK,EAAAA,GAAe,SAG5B5/J,EAAM,IAAIrL,EAAAA,EAAM,CAC3BE,QAAS8gL,EAAejgL,WACxBsH,SAAU24K,EAAe34K,SACzBO,OAAQo4K,EAAep4K,OACvBE,KAAMk4K,EAAel4K,KACrBY,KAAMs3K,EAAet3K,KACrBtJ,SAAU88B,EAAAA,EAAeK,MACzBuJ,SAAUrK,OAAOukJ,EAAel6I,YClBrBm6I,EAAiB,8BAEjBC,EAA8B,CACzC52K,aAAc4yB,EAAAA,EAAeK,MAC7Bz0B,KAAM,QACNT,SAAU,EACVO,OAAQ,QACR7H,WAAYkgL,EACZj6I,YAAaD,OAAO,MACpBD,SAAUC,OAAO,KACjBr9B,KAAM,kBAAFJ,OAAoB23K,EAAc,SCV3BE,GDaQ,IAAInhL,EAAAA,EAAM,CAC7BE,QAASghL,EAAiBngL,WAC1BsH,SAAU64K,EAAiB74K,SAC3BO,OAAQs4K,EAAiBt4K,OACzBE,KAAMo4K,EAAiBp4K,KACvBY,KAAMw3K,EAAiBx3K,KACvBtJ,SAAU88B,EAAAA,EAAeK,MACzBuJ,SAAUrK,OAAOykJ,EAAiBp6I,YCpBQ,CAC1Cx8B,aAAc4yB,EAAAA,EAAeM,MAC7B10B,KAAM,QACNT,SAAU,EACVO,OAAQ,QACR7H,WAAY,8BACZimC,YAAaD,OAAO,GACpBD,SAAUC,OAAO,IACjBr9B,KAAM,mDAGK6B,EAAQ,IAAIvL,EAAAA,EAAM,CAC7BE,QAASihL,EAAkBpgL,WAC3BsH,SAAU84K,EAAkB94K,SAC5BO,OAAQu4K,EAAkBv4K,OAC1BE,KAAMq4K,EAAkBr4K,KACxBY,KAAMy3K,EAAkBz3K,KACxBtJ,SAAU88B,EAAAA,EAAeK,MACzBuJ,SAAUrK,OAAO0kJ,EAAkBr6I,YClBxBs6I,EAA6B,CACxC92K,aAAc4yB,EAAAA,EAAeM,MAC7B10B,KAAM,SACNT,SAAU,EACVO,OAAQ,SACR7H,WAAY,8BACZimC,YAAaD,OAAO,GACpBD,SAAUC,OAAO,IACjBr9B,KAAM,kDAGK4B,EAAS,IAAItL,EAAAA,EAAM,CAC9BE,QAASkhL,EAAgBrgL,WACzBsH,SAAU+4K,EAAgB/4K,SAC1BO,OAAQw4K,EAAgBx4K,OACxBE,KAAMs4K,EAAgBt4K,KACtBY,KAAM03K,EAAgB13K,KACtBtJ,SAAU88B,EAAAA,EAAeM,MACzBsJ,SAAUrK,OAAO2kJ,EAAgBt6I,YAGtBu6I,EAAoC,CAC/C/2K,aAAc4yB,EAAAA,EAAeM,MAC7B10B,KAAM,wBACNT,SAAU,EACVO,OAAQ,gBACR7H,WAAY,8BACZimC,YAAaD,OAAO,GACpBD,SAAUC,OAAO,KACjBr9B,KAAM,kDAGKu8D,EAAgB,IAAIjmE,EAAAA,EAAM,CACrCE,QAASmhL,EAAuBtgL,WAChCsH,SAAUg5K,EAAuBh5K,SACjCO,OAAQy4K,EAAuBz4K,OAC/BE,KAAMu4K,EAAuBv4K,KAC7BY,KAAM23K,EAAuB33K,KAC7BtJ,SAAUihL,EAAuB/2K,aACjCw8B,SAAUrK,OAAO4kJ,EAAuBv6I,Y,eCzCtB,IAAIqzB,EAAAA,EAAW,CACjCj6D,QAAS,6CACT4I,KAAM,OACNF,OAAQ,OACRP,SAAU,EACVqB,KAAM,yDAGmB,IAAIywD,EAAAA,EAAW,CACxCj6D,QAAS,6CACT4I,KAAM,gBACNF,OAAQ,gBACRP,SAAU,EACVqB,KAAM,yDCbY,IAAIywD,EAAAA,EAAW,CACjCj6D,QAAS,6CACT4I,KAAM,OACNF,OAAQ,OACRP,SAAU,GACVqB,KAAM,yDDLD,MEEM43K,EAA4B,CACvCh3K,aAAc4yB,EAAAA,EAAeM,MAC7B10B,KAAM,qBACNT,SAAU,GACVO,OAAQ,QACR7H,WAAY,8BACZimC,YAAaD,OAAO,GACpBD,SAAUC,OAAO,MACjBr9B,KAAM,kDAGK8B,EAAQ,IAAIxL,EAAAA,EAAM,CAC7BE,QAASohL,EAAevgL,WACxBsH,SAAUi5K,EAAej5K,SACzBO,OAAQ04K,EAAe14K,OACvBE,KAAMw4K,EAAex4K,KACrBY,KAAM43K,EAAe53K,KACrBtJ,SAAU88B,EAAAA,EAAeM,MACzBsJ,SAAUrK,OAAO6kJ,EAAex6I,YAGrBy6I,EAAmC,CAC9Cj3K,aAAc4yB,EAAAA,EAAeM,MAC7B10B,KAAM,6BACNT,SAAU,GACVO,OAAQ,eACR7H,WAAY,8BACZimC,YAAaD,OAAO,GACpBD,SAAUC,OAAO,MACjBr9B,KAAM,kDAGKi5B,EAAe,IAAI3iC,EAAAA,EAAM,CACpCE,QAASqhL,EAAsBxgL,WAC/BsH,SAAUk5K,EAAsBl5K,SAChCO,OAAQ24K,EAAsB34K,OAC9BE,KAAMy4K,EAAsBz4K,KAC5BY,KAAM63K,EAAsB73K,KAC5BtJ,SAAUmhL,EAAsBj3K,aAChCw8B,SAAUrK,OAAO8kJ,EAAsBz6I,YCvC5B06I,EAA6B,CACxCl3K,aAAc4yB,EAAAA,EAAeM,MAC7B10B,KAAM,SACNT,SAAU,GACVO,OAAQ,SACR7H,WAAY,8BACZimC,YAAaD,OAAO,GACpBD,SAAUC,OAAO,MACjBr9B,KAAM,kDCTK+B,GDYS,IAAIzL,EAAAA,EAAM,CAC9BE,QAASshL,EAAgBzgL,WACzBsH,SAAUm5K,EAAgBn5K,SAC1BO,OAAQ44K,EAAgB54K,OACxBE,KAAM04K,EAAgB14K,KACtBY,KAAM83K,EAAgB93K,KACtBtJ,SAAU88B,EAAAA,EAAeM,MACzBsJ,SAAUrK,OAAO+kJ,EAAgB16I,YCnBhB,IAAI9mC,EAAAA,EAAM,CAC3BE,QAAS,8BACTmI,SAAU,EACVO,OAAQ,MACRE,KAAM,MACNY,KAAM,iDACNtJ,SAAU88B,EAAAA,EAAeM,MACzBsJ,SAAU,M,+BCVL,IAAKjE,E,iBAAZ,SAAYA,GACVA,EAAA,YACAA,EAAA,OACD,CAHD,CAAYA,IAAAA,EAAY,I,+BCcjB,IAAK2iE,E,iBAAZ,SAAYA,GACVA,EAAA,YACAA,EAAA,0BACAA,EAAA,mBACD,CAJD,CAAYA,IAAAA,EAAY,I,+BCdjB,IAAKtoE,E,iBAAZ,SAAYA,GACVA,EAAA,UACAA,EAAA,cACAA,EAAA,UACAA,EAAA,wBACAA,EAAA,sBACAA,EAAA,cACAA,EAAA,aACD,CARD,CAAYA,IAAAA,EAAc,I,0GCapB,SAAUukJ,EAAW3hL,GAA2E,IAA1E,UAAE4hL,EAAS,aAAEC,EAAY,SAAEC,EAAQ,SAAEz8K,EAAW,QAA0BrF,EACpG,MAAM+a,GAAUC,EAAAA,EAAAA,MAUhB,OACEhX,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CACFzB,GAAI,CACFc,QAAS,OACTwD,IAAK,QACLrE,QAAS,QACTsE,WAAY,UACbjF,SAAA,EAEDC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CACTC,GAAI,CACFQ,WACAD,MAAO,iBACPL,OAAQ,UACR,UAAW,CACTqgB,eAAgB,cAGpB5gB,QA1BcuH,KACD,SAAb+1K,EAIJ/mK,EAAQvM,KAAKszK,GAHX/mK,EAAQgnK,QAGY,EAqBE59K,SAEnBy9K,KAGHx9K,EAAAA,EAAAA,KAAC49K,EAAAA,EAAY,CAACn4K,KAAK,UAEnBzF,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACQ,MAAM,eAAeC,SAAUA,EAAQlB,SAChD09K,MAIT,C,0EC/BM,SAAU51K,EAAIjM,GAkBR,IAlBS,SACnB4U,EAAQ,IACRzL,EAAG,SACHhF,EAAQ,MACR+F,EAAK,MACLS,EAAK,QACL8N,EAAO,QACP3T,EAAO,OACPoH,EAAM,aACNlH,EAAY,OACZsF,EAAM,GACNzF,EAAE,UACFyL,EAAS,UACT/J,EAAS,KACT+F,EAAI,QACJ9H,EAAO,aACP4wB,EAAY,aACZC,GACUr1B,EACV,OACEoE,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CACFzB,GAAEjF,OAAAyR,OAAA,CACAiJ,cAAe1F,EAAW,SAAW,MACrCqtK,aAAc,OACdt8K,QAAS,OACTuE,MAAOA,IAAUoG,EAAY,OAAS,QACtClH,WAAiB,OAALuB,QAAK,IAALA,EAAAA,EAAS,SACrBF,eAAuB,OAAPgO,QAAO,IAAPA,EAAAA,EAAW,aAC3B6c,SAAUhpB,EACVxH,QAAgB,OAAPA,QAAO,IAAPA,EAAAA,EAAW,EACpBoH,SACAlH,eACAsF,OAAc,OAANA,QAAM,IAANA,EAAAA,EAAU,EAClBnB,OACGtE,GAEL0B,UAAWA,EACX/B,QAASA,EACT4wB,aAAcA,EACdC,aAAcA,EAAYlxB,SAEzBA,GAGP,C,4GC9DA,MAAM+9K,GAAmBrvG,EAAAA,EAAAA,IAASC,IAAAA,GAAAC,EAAAA,EAAAA,GAAA,4GAsD5B,SAAUovG,EAAUniL,GAA8B,IAA7B,SAAEmE,GAA2BnE,EACtD,MAAM0E,GAAQC,EAAAA,EAAAA,MAEd,OACEP,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CACFzB,GAAI,CACFc,QAAS,OACTwX,SAAU,MACVvS,SAAU,SACVw3K,cAAe,QACfC,WAAY,QACZn5K,oBAAqB,iBACrB,UAAW,CACTw7D,UAAW,GAAFl7D,OAAK04K,EAAgB,kBAC9BI,kBAAmB,OACnB79K,WAAY,uDAAF+E,OAEN9E,EAAM2E,QAAQ5E,WAAWqL,OAAM,uBAAAtG,OAC/B9E,EAAM2E,QAAQ5E,WAAW0H,OAAM,uBAAA3C,OAC/B9E,EAAM2E,QAAQ5E,WAAW6E,OAAM,qBAEnCi5K,eAAgB,OAChBv9K,aAAc,OACdiE,OAAQ,SACRu5K,WAAY,uBAEd,8BAA+B,CAC7BC,WAAY,SAEd,2BAA4B,CAC1BA,WAAY,QACZ58J,aAAc,SAEjB1hB,SAEAA,GAGP,C,gGChFM,SAAUo4B,EAAQv8B,GAA0F,IAAzF,OAAEkM,EAAM,MAAEswB,EAAK,QAAEh4B,EAAO,QAAEM,EAAO,SAAEX,EAAQ,GAAEU,EAAE,aAAEG,EAAY,UAAEuB,GAA0BvG,EAChH,MAAM0E,GAAQC,EAAAA,EAAAA,MAER+9K,GAAan7K,EAAAA,EAAAA,UAAQ,KACzB,MAAMo7K,EACO,WAAXz2K,EACIxH,EAAM2E,QAAQ5E,WAAW2L,OACd,WAAXlE,EACAxH,EAAM2E,QAAQ5E,WAAWqL,OACd,WAAX5D,EACAxH,EAAM2E,QAAQ5E,WAAW0H,OACd,WAAXD,EACAxH,EAAM2E,QAAQ5E,WAAW6E,YACzBlB,EAEN,OAAQo0B,GACN,KAAK,EACH,OAAA58B,OAAAyR,OAAA,CACE5M,WAAYC,EAAM2E,QAAQ5E,WAAW2L,QACjCuyK,EAAU,CAAEz2K,OAAQ,aAAF1C,OAAem5K,IAAc,CAAC,GAExD,KAAK,EACH,OAAA/iL,OAAAyR,OAAA,CACE5M,WAAYC,EAAM2E,QAAQ5E,WAAWqL,QACjC5D,EAAS,CAAEA,OAAQ,uCAA0C,CAAC,GAEtE,KAAK,EAeL,QACE,OAAAtM,OAAAyR,OAAA,CACE5M,WAAYC,EAAM2E,QAAQ5E,WAAW0H,QACjCw2K,EAAU,CAAEz2K,OAAQ,aAAF1C,OAAem5K,IAAc,CAAC,GAbxD,KAAK,EACH,OAAA/iL,OAAAyR,OAAA,CACE5M,WAAYC,EAAM2E,QAAQ5E,WAAW6E,QACjCq5K,EAAU,CAAEz2K,OAAQ,aAAF1C,OAAem5K,IAAc,CAAC,GAExD,KAAK,EACH,MAAO,CACLl+K,WAAY,UACZyH,OAAQ,uBAOd,GACC,CAACswB,EAAOtwB,IAEX,OACE9H,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CACFzB,GAAEjF,OAAAyR,OAAAzR,OAAAyR,OAAAzR,OAAAyR,OAAA,CACApM,gBAAiBy9K,EAAWj+K,YACxBi+K,EAAWx2K,OAAS,CAAEA,OAAQw2K,EAAWx2K,QAAW,CAAC,GAAE,CAC3DlH,aAA0B,OAAZA,QAAY,IAAZA,EAAAA,EAAgB,OAC9BF,QAAgB,OAAPA,QAAO,IAAPA,EAAAA,EAAW,OACpBoF,MAAO,OACPD,SAAU,SACV,2BAA4B,CAC1BnF,QAAgB,OAAPA,QAAO,IAAPA,EAAAA,EAAW,UAEnBD,GAELL,QAASA,EACT+B,UAAWA,EAASpC,SAEnBA,GAGP,C,gEC7DM,SAAUQ,IACd,OAAO8V,EAAAA,EAAAA,IACT,C,gGCzBc,SAAUuM,EAAWjjB,GACjC,OACEC,EAAAA,EAAAA,MAACC,EAAAA,EAAOrE,OAAAyR,OAAA,CAACnN,QAAQ,eAAkBH,EAAK,CAAAI,SAAA,EACtCC,EAAAA,EAAAA,KAAA,QACEE,EAAE,qdACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,6/BACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,seACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,0ZACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,2dACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,8dACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,mZACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,6OACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,+0BACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,4GACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,+2CACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,i1CACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,0qBACFuP,KAAK,aAEPzP,EAAAA,EAAAA,KAAA,QACEE,EAAE,8jBACFuP,KAAK,eAIb,CCxDM,SAAUhD,EAAM7Q,GAAqB,IAApB,IAAE4iL,GAAkB5iL,EACzC,OACEgE,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CACFzB,GAAI,CACFc,QAAS,OACT2U,cAAe,SACflR,WAAY,SACZtE,QAAS,UACVX,SAAA,EAEDC,EAAAA,EAAAA,KAAC4iB,EAAU,CAAC1N,MAAO,CAAEjU,SAAU,UAC9Bu9K,GACCx+K,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CACTC,GAAI,CAAE+F,SAAU,SAChBxF,MAAM,eACN4L,GAAG,OACHrG,MAAM,SAAQxG,SAEby+K,IAED,OAGV,C,4KCHM,SAAUC,EAAY7iL,GAgBR,IAhBS,MAC3B2O,EAAK,SACLhC,EAAQ,MACRyJ,EAAK,aACLU,EAAY,SACZgsK,GAAW,EAAK,cAChBjmK,EAAa,SACbC,EACAvB,OAAQO,EAAS,YACjBinK,EAAW,WACXhmK,EAAU,aACVH,EAAe,QAAO,QACtBhQ,EAAO,UACPmL,EAAS,YACTinD,EAAW,OACXx3C,GACkBxnB,EAClB,MAAM0E,GAAQC,EAAAA,EAAAA,OACP4W,EAAQc,IAAalP,EAAAA,EAAAA,eAA6B/E,GAQnDqR,EAAuBnD,IAC3B,GAAKwsK,EAKE,CACL,MAAME,EAAcr0K,EAAQ,IAAIA,GAAS,GAEzC,GAAS,OAALA,QAAK,IAALA,OAAK,EAALA,EAAOhG,SAAS2N,EAAK3H,OAAQ,CAC/B,MAAMK,EAAQg0K,EAAYjpJ,WAAWhwB,GAASA,IAASuM,EAAK3H,SAE7C,IAAXK,IACFg0K,EAAY5zK,OAAOJ,EAAO,GACtBrC,GAAUA,EAASq2K,GAE3B,KAAO,CACL,MAAMC,EAAc,IAAID,EAAa1sK,EAAK3H,OACtChC,GAAUA,EAASs2K,EACzB,CACF,MAlBE5mK,OAAUjU,GACV42D,IACIliD,GAAUA,OAAS1U,GACnBuE,GAAUA,EAAS2J,EAAK3H,MAe9B,EA0BF,OACEvK,EAAAA,EAAAA,KAAC85D,EAAAA,EAAM,CACLz+D,GAAG,kBACHiN,KAAMsM,QAAQwO,GACd9P,SAAU8P,EACVlO,MAAO,CACLpP,MAAgB,OAAT6N,QAAS,IAATA,EAAAA,EAAa,cACpBoF,SAAsB,OAAZP,QAAY,IAAZA,EAAAA,EAAgB,cAC1BnY,WAAYC,EAAMQ,OAAOse,WACzBtX,OAAQ,oBACRlH,aAAc,OACdiF,SAAU,SACV+P,OAAQ,KACT7V,UAEDC,EAAAA,EAAAA,KAAC8wB,EAAAA,EAAiB,CAACC,YAnEHjc,KAClBmD,OAAUjU,GACVwE,IACIkQ,GAAUA,OAAS1U,EAAU,EAgEYjE,UACzCH,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAAAnC,SAAA,CACD2X,GACC1X,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CACFzB,GAAI,CACFyF,OAAQ,QACRxF,QAAS,QACT,UAAW,CACTM,MAAOV,EAAM2E,QAAQkO,KAAKC,UAE7BrT,UAEDC,EAAAA,EAAAA,KAACsU,EAAAA,EAAS,CACR7T,GAAI,CACFG,aAAc,MACdF,QAAS,WACTO,SAAU,OACVZ,WAAYC,EAAM2E,QAAQ5E,WAAW2L,QAEvCG,YAAY,SACZ8E,QAAQ,WACR1I,SAAUN,IAAA,IAAG8I,QAAQ,MAAExG,IAAStC,EAAA,MAzClBsC,KAC1B0N,EAAU1N,GACNmO,GAAUA,EAASnO,EAAM,EAuCoBu0K,CAAmBv0K,EAAM,EAC9DA,MAAO4M,EACP/K,WAAY,CACVoI,kBAAkB,EAClBnI,gBACErM,EAAAA,EAAAA,KAACsM,EAAAA,EAAc,CAACV,SAAS,QAAO7L,UAC9BC,EAAAA,EAAAA,KAAC++K,EAAAA,EAAM,CAACt5K,KAAK,OAAOzE,MAAOV,EAAM2E,QAAQkO,KAAK6H,eAIpD9O,WAAS,MAGX,MAEJtM,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAACzB,GAAI,CAAEuY,UAAwB,OAAbP,QAAa,IAAbA,EAAAA,EAAiB,QAAS5S,SAAU,eAAe9F,SAAA,CACtEiS,EAAMvX,KAAI,CAACyX,EAAMtH,KAChB,MAAMo0K,EAAarmK,GAAcA,EAAWzG,GAE5C,OAAOysK,GACL3+K,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAEF9B,QAASA,IAAMiV,EAAoBnD,GACnCzR,GAAEjF,OAAAyR,OAAA,GAAQ+xK,EAAa,CAAEz9K,QAAS,QAAW,CAAC,GAAExB,SAE/CmS,EAAKV,OAJDU,EAAK3H,MAAQK,IAOpBhL,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAEFzB,GAAEjF,OAAAyR,OAAAzR,OAAAyR,OAAA,CACA1L,QAAS,OACTyD,WAAY,SACZH,OAAQ,OACRnE,QAAS,SACTC,OAAQ,WACJq+K,EAAa,CAAEz9K,QAAS,QAAW,CAAC,GAAE,CAC1C,UAAW,CACTlB,WAAY,UACZW,MAAO,kBAGXZ,QAASA,IAAMiV,EAAoBnD,GAAKnS,SAAA,CAEvC2+K,IACC1+K,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACzB,GAAI,CAAEyF,OAAQ,aAAanG,UAC9BC,EAAAA,EAAAA,KAAC6Q,EAAAA,EAAQ,CACPpQ,GAAI,CAAEC,QAAS,GACf6H,SAAUA,CAACxB,EAA4C+J,IA3GhDmuK,EAACnuK,EAAkBouK,KAC9C,GAAI32K,EAAU,CACZ,MAAMq2K,EAAcr0K,EAAQ,IAAIA,GAAS,GAEzC,GAAIuG,EAAS,CACX,MAAM+tK,EAAc,IAAID,EAAaM,GACrC32K,EAASs2K,EACX,KAAO,CACL,MAAMj0K,EAAQg0K,EAAYjpJ,WAAWhwB,GAASA,IAASu5K,KAExC,IAAXt0K,IACFg0K,EAAY5zK,OAAOJ,EAAO,GAC1BrC,EAASq2K,GAEb,CACF,GA6FsBK,CAAqBnuK,EAASoB,EAAK3H,OAErCuG,QAAc,OAALvG,QAAK,IAALA,OAAK,EAALA,EAAOhG,SAAS2N,EAAK3H,WAKnC2H,EAAKV,QA3BDU,EAAK3H,MAAQK,EA6BrB,IAGe,IAAjBoH,EAAM7G,OAAeuH,IAAgB1S,EAAAA,EAAAA,KAACyM,EAAAA,EAAM,IAAM,cAM/D,C,4IC1LA,MAAMrL,EAAYxF,IAA2D,IAA1D,UAAEmQ,EAAS,WAAE0G,EAAU,OAAEkF,EAAM,QAAEjX,GAAqB9E,EACvE,OAAOyF,EAAAA,EAAAA,IAAYf,IACV,CACLyS,SAAU,CACRxR,QAAS,OACTyD,WAAY,SACZ3E,WAAYsX,EAASrX,EAAM2E,QAAQ5E,WAAW6E,OAAS5E,EAAM2E,QAAQ5E,WAAW2L,OAChFpL,aAAc+W,EAAS,MAAQ,OAC/BjX,aAAqBsD,IAAZtD,EAAwBA,EAAUqL,EAAY,WAAH,GAAA3G,OAAmBqN,EAAa,MAAQ,OAAM,SAClG3M,MAAO,OACP,UAAW,CACT9E,MAAOV,EAAM2E,QAAQkO,KAAKC,SAE5B,oBAAqB,CACnB/S,WAAY,mBAIlB,EAwBE,SAAU8+K,EAAWl3K,GAkBd,IAlBe,MAC1BuJ,EAAK,MACLjH,EAAK,SACLhC,EAAQ,SACRkJ,EAAQ,SACRjL,EAAQ,WACRiM,EAAU,UACV1G,GAAY,EAAI,OAChB4L,EAAM,UACNE,GAAY,EAAI,eAChBD,GAAiB,EAAI,WACrBwnK,EAAU,QACV1+K,EAAO,KACPwR,EAAI,YACJ/F,EAAW,QACX/L,EAAO,KACPkI,EAAI,MACJgP,GACWrP,E,MACX,MAAMrG,EAAUR,EAAU,CAAE2K,YAAW0G,aAAYkF,SAAQjX,WAA3CU,GACVsS,GAAcD,EAAAA,EAAAA,QAA2B,OAExCyO,EAAWm9J,IAAgBt2K,EAAAA,EAAAA,WAAkB,GAgBpD,OACEnJ,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CACFT,IAAKiS,EACLvR,UAAS,GAAAiD,OAAKxD,EAAQmR,UAAQ3N,OAAGwS,EAAiB,GAAK,oBACvDnX,GAAEjF,OAAAyR,OAAAzR,OAAAyR,OAAAzR,OAAAyR,OAAA,GACIwF,EAAa,CAAE5N,OAAQ,QAAW,CAAC,GACnC2B,EAAW,CAAEA,SAAU,GAAFpB,OAAKoB,EAAQ,OAAS,CAAC,GAAE,CAClD7F,OAAQ,YAEVP,QAASA,EACT4wB,aAxBqBirC,MACL,IAAdpkD,GACJwnK,GAAa,EAAK,EAuBhBpuJ,aApBqBirC,KACvBmjH,GAAa,EAAM,EAmBat/K,SAAA,CAE7BgM,GAAayF,IACZ5R,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAAAnC,SAAA,CACD0R,IACCzR,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACC,GAAI,CAAEO,MAAO,WAAaC,SAAU,GAAIwP,UAAU,OAAM1Q,SAAA,OAKtEC,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACiQ,UAAU,OAAOxP,SAAU,GAAElB,SACtCyR,QAKP5R,EAAAA,EAAAA,MAACsC,EAAAA,EAAG,CAACzB,GAAI,CAAEc,QAAS,OAAQuE,MAAO,OAAQd,WAAY,SAAUqB,eAAgB,iBAAiBtG,SAAA,EAChGC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAAAnC,UACD0vC,EAAAA,EAAAA,GAAYllC,IAAU+M,GACrBtX,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACQ,MAAiB,OAAVo+K,QAAU,IAAVA,EAAAA,EAAc,eAAgB3uK,UAAU,MAAK1Q,SAC7DuX,EAAQA,EAAMpF,GAAyB,QAAjB80C,EAAI,OAAJ90C,QAAI,IAAJA,OAAI,EAAJA,EAAMotK,mBAAW,IAAAt4H,EAAAA,EAAQ,OAAJ90C,QAAI,IAAJA,OAAI,EAAJA,EAAMV,SAGpDxR,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CAACQ,MAAM,UAASjB,SAAEoM,OAIjCnM,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACzB,GAAI,CAAEc,QAAS,OAAQyD,WAAY,UAAUjF,SAC/CmiB,GAAe3X,GACdvK,EAAAA,EAAAA,KAACw3D,EAAAA,EAAS,CAAC/2D,GAAI,CAAEE,OAAQ,WAAaP,QA7CtB2G,IACxBA,EAAMC,kBACFuB,GAAUA,OAASvE,EAAU,KA6CzBhE,EAAAA,EAAAA,KAAC2U,EAAAA,EAAqB,CACpBlU,GAAI,CAAEggB,WAAY,YAAa8+J,OAAQj3K,EAAO,SAAW,OAAQ3H,OAAQ,oBAOvF,C,eC/GM,SAAU4X,EAAM3c,GAyBR,IAzBS,MACrB4V,EAAK,MACLjH,EAAK,SACLhC,EAAQ,SACRkJ,EAAQ,MACRO,EAAQ,GAAE,SACVxL,EAAQ,WACRiM,EAAU,SACVvB,EAAQ,UACRnF,GAAY,EAAI,aAChB2G,EAAY,SACZgsK,GAAW,EAAK,cAChBjmK,EAAa,SACbC,EACAvB,OAAQO,EAAS,YACjBinK,EAAW,WACXhmK,EAAU,OACVhB,EAAM,UACNE,GAAY,EAAI,eAChBD,GAAiB,EAAI,aACrBY,EAAe,QAAO,WACtB4mK,EAAU,YACVjzK,EAAW,aACX2L,EAAY,MACZR,GACY1b,EACZ,MAAO0X,EAAUC,IAAexK,EAAAA,EAAAA,UAAS,MACnCqmB,GAAa3b,EAAAA,EAAAA,QAA2B,OACvCE,EAAWC,IAAgB7K,EAAAA,EAAAA,eAA6B/E,IAE/DK,EAAAA,EAAAA,YAAU,K,MACR,MAAMyB,EAA2B,QAAnBkhD,EAAU,OAAV53B,QAAU,IAAVA,OAAU,EAAVA,EAAYrb,eAAO,IAAAizC,OAAA,EAAAA,EAAE/yC,YACnCL,EAAkB,OAAL9N,QAAK,IAALA,EAAAA,OAAS9B,EAAU,GAC/B,CAACorB,IAEJ,MAKMta,EAAcA,KAClBvB,EAAY,KAAK,EAGbisK,GAAer8K,EAAAA,EAAAA,UAAQ,IACpB6O,EAAMnI,QAAQqI,GAASA,EAAK3H,QAAUA,IAAO,IACnD,CAACyH,EAAOzH,IAEX,OACE3K,EAAAA,EAAAA,MAAAwL,EAAAA,SAAA,CAAArL,SAAA,EACEC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACT,IAAK2tB,EAAUrvB,UAClBC,EAAAA,EAAAA,KAACm/K,EAAW,CACVxnK,OAAQA,EACRC,eAAgBA,EAChBC,UAAWA,EACXtP,SAAUA,EACV2J,KAAMstK,EACNp/K,QAtBqB2G,IACvBmK,GACJqC,EAAYxM,EAAMoN,cAAc,EAqB1B7L,OAAQgL,EACR8rK,WAAYA,EACZ1+K,QAASoX,EACTrG,SAAUA,EACVD,MAAOA,EACPhL,SAAUA,EACViM,WAAYA,EACZ1G,UAAWA,EACXxB,MAAOA,EACP4B,YAAaA,EACbmL,MAAOA,OAIXtX,EAAAA,EAAAA,KAACy+K,EAAAA,EAAY,CACXzsK,MAAOA,EACP2B,UAAWA,EACXyP,OAAQ9P,EACR/I,MAAOA,EACPhC,SAAUA,EACVC,QAASsM,EACT8lD,YAAa9lD,EACbqC,OAAQO,EACRgB,SAAUA,EACVC,WAAYA,EACZjG,aAAcA,EACdgsK,SAAUA,EACVlmK,aAAcA,EACdC,cAAeA,EACfkmK,YAAaA,MAIrB,C,kHC9GM,SAAUc,EAAK7jL,GAQR,IARS,SACpBmE,EAAQ,KACR4Q,EAAI,oBACJ+uK,EAAsB,iBAAgB,MACtC1+K,EAAQ,GAAE,SACVC,EAAW,OAAM,MACjBsF,EAAK,KACL4M,GAAO,GACIvX,EACX,OACEoE,EAAAA,EAAAA,KAAA,KACEohB,KAAMzQ,EACNI,OAAO,SACPsQ,IAAI,aACJnM,MAAO,CACL8L,eAAgB7N,EAAO,YAAc,OACrClS,WACAy+K,oBAC0B,YAAxBA,EACI,qBACwB,cAAxBA,EACA,oBACwB,iBAAxBA,EACA,UACA,UACN1+K,QACAsO,UAAW/I,GACZxG,SAEAoT,GACCnT,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CACTQ,MAAY,OAALA,QAAK,IAALA,EAAAA,EAAS,iBAChBP,GAAI,CACFE,OAAQ,UACRsgB,WAAY,OACZhgB,YAEFwP,UAAU,OAAM1Q,SAEfA,IAGHA,GAIR,CAEA,SAASqb,IACP,OACEpb,EAAAA,EAAAA,KAAA,OAAK8F,MAAM,KAAKjB,OAAO,KAAK/E,QAAQ,YAAY2P,KAAK,OAAOC,MAAM,6BAA4B3P,UAC5FC,EAAAA,EAAAA,KAAA,QACEkb,SAAS,UACTC,SAAS,UACTjb,EAAE,mIACFuP,KAAK,aAIb,CAcM,SAAUiB,EAAUzI,GAUR,IAVS,SACzBlI,EAAQ,QACRK,EAAO,SACP8Q,EAAQ,KACRP,EAAI,GACJoG,EAAE,GACFtW,EAAE,MACFk/K,EAAK,MACL3+K,EAAQ,YAAW,eACnBggB,EAAiB,QACD/Y,EAChB,MAAM0O,GAAUC,EAAAA,EAAAA,MAgBhB,OACEhX,EAAAA,EAAAA,MAACY,EAAAA,EAAU,CACTQ,MAAOkQ,EAAW,UAAsB,YAAVlQ,EAAsB,UAAsB,UAAVA,EAAoB,UAAY,YAChGP,GAAEjF,OAAAyR,OAAA,CACAtM,OAAQ,UACRsgB,WAAY,OACZD,iBACA,UAAW,CACTA,eAAgB,aAElB,yBAA0B,CACxB2Q,WAAY,SAEXlxB,GAEL0B,UAAU,qBACVsO,UAAU,OACVrQ,QAASA,KACH8Q,IA/BJP,GACFsO,EAAAA,EAAAA,GAAiBtO,EAAM,+BAIrBoG,EACFJ,EAAQvM,KAAK2M,GAIX3W,GAASA,IAsBI,EACdL,SAAA,CAEAA,EAEA4/K,IACC3/K,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CAACuO,UAAU,OAAOhQ,GAAI,CAAEyF,OAAQ,aAAanG,UAC/CC,EAAAA,EAAAA,KAACob,EAAS,QAKpB,C,6FCrIM,SAAUwkK,EAAOhkL,GAOR,IAPS,KACtBikL,EAAI,WACJx/K,EAAU,SACVmG,EAAQ,SACRs5K,EAAW,OAAM,SACjB//K,EAAQ,UACRggL,EAAY,WACCnkL,EACb,OACEoE,EAAAA,EAAAA,KAACggL,EAAAA,EAAU,CACTC,YAAa,CACXx/K,GAAI,CACFc,QAAS,OACT8E,eAAgB,SAChB,wBAAyB,CACvBhG,aACAO,aAAc,MACdF,QAAS,YACT8F,SAAkB,OAARA,QAAQ,IAARA,EAAAA,EAAY,QACtB,sBAAuB,CACrBxF,MAAOX,MAKfiL,OACEtL,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CACTiQ,UAAU,MACVhQ,GAAI,CACFO,MAAO,UACPC,SAAU,OACV4K,WAAY,QACb9L,SAEA8/K,IAGLF,OAAK,EAAA5/K,SAEJA,IAAYC,EAAAA,EAAAA,KAACkgL,EAAAA,EAAU,CAACz6K,KAAMq6K,EAAU9+K,MAAO++K,EAAW7qK,MAAO,CAAEvU,OAAQ,cAGlF,C,0EC5CM,SAAUR,EAAWvE,GAAuE,IAAtE,SAAEmE,EAAQ,QAAEK,EAAO,WAAEC,EAAU,MAAEW,EAAK,WAAEiF,GAA8BrK,EAChG,OACEoE,EAAAA,EAAAA,KAACQ,EAAAA,EAAU,CACTC,GAAI,CACFC,QAAS,MACTC,OAAQ,UACRC,aAAc,MACdC,gBAA2B,OAAVR,QAAU,IAAVA,EAAAA,EAAc,UAC/BW,MAAY,OAALA,QAAK,IAALA,EAAAA,EAAS,UAChBC,SAAU,OACVgF,WAAsB,OAAVA,QAAU,IAAVA,EAAAA,EAAc,KAE5B7F,QAASA,EAAOL,SAEfA,GAGP,CCpBM,SAAUogL,EAASvkL,GAA+C,IAA9C,QAAEwE,EAAO,WAAEC,EAAU,MAAEW,GAAuBpF,EACtE,OACEoE,EAAAA,EAAAA,KAACG,EAAW,CAACC,QAASA,EAASC,WAAYA,EAAYW,MAAOA,EAAOiF,WAAY,IAAGlG,SAAA,OAIxF,C,sHCVA,MAAMqB,GAAYC,EAAAA,EAAAA,IAAW,KACpB,CACLuvE,OAAQ,CACNh7D,OAAQ,UAwBR,SAAUqlD,EAAWr/D,GASR,IATS,KAC1B0M,EAAI,UACJqL,EAAS,YACTod,EAAW,OACXjpB,EAAM,QACNpH,EAAO,OACP0iB,EAAM,UACN22C,EAAS,SACTh6D,GACiBnE,EACjB,MAAMgG,EAAUR,IACVd,GAAQC,EAAAA,EAAAA,MAEd,OACEP,EAAAA,EAAAA,KAAC85D,EAAAA,EAAM,CACLxxD,KAAMA,EACNgL,SAAU8P,EACV22C,UAAoB,OAATA,QAAS,IAATA,EAAAA,EAAa,cACxBE,cAAe,CACbC,UAAW,CACT,CACEt1D,KAAM,SACNolB,QAAS,CACPsa,OAAQ,CAAC,EAAG,OAKpBniC,UAAWP,EAAQgvE,OAAM7wE,UAEzBC,EAAAA,EAAAA,KAAC8wB,EAAAA,EAAiB,CAACC,YAAaA,EAAWhxB,UACzCC,EAAAA,EAAAA,KAACkC,EAAAA,EAAG,CACFzB,GAAEjF,OAAAyR,OAAA,CACA5M,WAAYC,EAAM2E,QAAQ5E,WAAW2L,OACrClE,OAAc,OAANA,QAAM,IAANA,EAAAA,EAAM,aAAA1C,OAAiB9E,EAAM2E,QAAQ5E,WAAW0H,QACxDrH,QAAgB,OAAPA,QAAO,IAAPA,EAAAA,EAAW,QACpBE,aAAc,QACV+S,EAAY,CAAE7N,MAAO,GAAFV,OAAKuO,EAAS,eAAiB,CAAC,GAAE5T,SAG1DA,OAKX,C,+BC7EM,SAAUioK,EAAqBz9J,GACnC,OAAOA,EAAQ,CAACA,GAAS,EAC3B,C,+CCFM,SAAU6xK,EAAav/J,GAC3B,MAAoB,kBAATA,EAA0BA,EAEjB,kBAATA,GACLA,EACKrhB,OAAOD,KAAKshB,GAAM,GAItBA,CACT,C,+ECRM,SAAU47C,EAAaz8D,GAC3B,GAAIA,EAAQmP,OAAS,GAAI,CACvB,MAAMw8B,GAAUid,EAAAA,EAAAA,GAAmB5oD,GACnC,MAAO,kDAAPoJ,OAAyDuiC,EAC3D,CAEA,MAAO,mDAAPviC,OAA0DpJ,EAC5D,C,qGCcM,SAAUokL,EAAiB71K,EAAmB81K,GAClD,OAAc,IAAV91K,GAAgBA,EAEb,GAAPnF,OAAU,IAAIsB,EAAAA,GAAUxC,EAAAA,EAAAA,GAAiBqG,EAAO,IAAI2jD,QAAQ,IAAIhkB,YAAU9kC,OACxEi7K,EAAS,GAAK,MAHkBA,EAAS,IAAH,KAK1C,CAkBM,SAAUliF,EAAoBC,GAClC,OAAO,IAAIC,YAAY,SAASC,OAAOF,EACzC,CAeM,SAAUkiF,EAAYz7H,GAC1B,OAhCI,SAA0BA,GAC9B,QAAIA,EAAK+X,eAAe,YAE1B,CA6BM2jH,CAAgB17H,GACXA,EAAKjiD,UAELiiD,EAAK7oD,OAEhB,CAEM,SAAU2rD,EAAYi6C,EAAUz2F,GACpC,MAAMq1K,EAAe5+E,EAAIz2F,OAEzB,GAAIA,GAAUq1K,EACZ,MAAO,CAAC5+E,GAGV,MAAM6+E,EAAe52J,KAAKyO,KAAKkoJ,EAAer1K,GAC9C,IAAI/H,EAAqB,GAEzB,IAAK,IAAIgwC,EAAI,EAAGA,EAAIqtI,EAAcrtI,IAChChwC,EAAOgH,KAAKw3F,EAAI1+E,MAAMkwB,EAAIjoC,EAAQioC,EAAIjoC,EAASA,IAGjD,OAAO/H,CACT,C,sECpFM,SAAUqhD,EACdF,GAEA,QAAIA,GAAOA,aAAerpD,MAE5B,CAEM,SAAUwlL,EAAan8H,GAC3B,SAAIA,GAAOA,aAAexe,EAAAA,GAE5B,C,+BCbM,SAAUrB,EAAoBJ,EAAgBC,GAClD,SAAUD,GAAqB,IAAXA,MAAmBC,CACzC,C,8CCFM,SAAUm1I,EACdjnJ,GAEA,MAAoB,kBAATA,CAEb,C,+CCJM,SAAUrjB,EAAcuxK,GAC5B,OAAoB,OAAbA,QAAkC38K,IAAb28K,CAC9B,CAGM,SAAUlxI,EAAekxI,GAC7B,OAAQvxK,EAAWuxK,EACrB,C,uDCNM,SAAUt8H,EAAYzhD,GAC1B,QAASA,GAAaA,EAAUg+K,YAClC,C,+ECFM,SAAUn8K,EAAiB7B,GAC/B,IACE,OAAOA,IAAc9F,EAAAA,EAAU+b,SAASjW,GAAW04F,QACrD,CAAE,MAAOrgG,GACP,OAAO,CACT,CACF,C,8BCRM,SAAUgkB,EAAiBo/D,EAAahjF,GAC5C,IAAI0vC,EAAIrgB,SAASm2J,cAAc,KAC/B91I,EAAE+1I,aAAa,OAAQziG,GACvBtzC,EAAE+1I,aAAa,SAAU,UACzB/1I,EAAE+1I,aAAa,KAAMzlL,GAChBqvB,SAAS8zD,eAAenjF,IAC3BqvB,SAASwyE,KAAK6jF,YAAYh2I,GAE5BA,EAAEi2I,OACJ,C,qJCFO,MAAMv6K,EAAqB,SAAC+5F,GAA6D,IAA3BygF,EAAMp7J,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAG,EAAGq7J,EAAWr7J,UAAA1a,OAAA,EAAA0a,UAAA,QAAA7hB,EAC1F,MAAMm9K,EAAO3gF,EACb,OAAa,IAAT2gF,GAAuB,MAATA,EAAqB,QAClCA,EAED,IAAIz6K,EAAAA,EAAUy6K,GAAMv1I,WAAW,MAC7B6D,EAAAA,EAAAA,GAAYyxI,IAAO,IAAIx6K,EAAAA,EAAUy6K,GAAMv1I,WAAWs1I,GAAY,KAAP97K,OAAY87K,GAChE,IAAP97K,QAAW0oK,EAAAA,EAAAA,GAAcqT,EAAMF,IAG7B,IAAIv6K,EAAAA,EAAUy6K,GAAMv1I,WAAW,GAC1B,IAAPxmC,QAAW0oK,EAAAA,EAAAA,GAAcqT,EAAMF,KAG1BG,EAAAA,EAAAA,GAAOD,GAAME,eAAe,CACjCC,SAAS,EACTC,SAAUhpJ,OAAO4oJ,GAAQ,IAAO,EAAIF,EACpCO,cAAe,CACbC,QAAS,IACTC,QAAS,OAhBK,GAmBpB,EAGaC,EAAyB/lL,IAQjC,IARkC,IACrC4kG,EAAG,OACHygF,EAAS,EAAC,GACVC,GAKDtlL,EACC,MAAMulL,EAAO3gF,EACb,OAAa,IAAT2gF,GAAuB,MAATA,EAAqB,QAClCA,GAED1xI,EAAAA,EAAAA,GAAYyxI,IAAO,IAAIx6K,EAAAA,EAAUy6K,GAAMv1I,WAAWs1I,GAC7C,KAAP97K,OAAY87K,GAGV,IAAIx6K,EAAAA,EAAUy6K,GAAMv1I,WAAW,GAC1B,IAAPxmC,QAAW0oK,EAAAA,EAAAA,GAAcqT,EAAMF,IAG1B,IAAP77K,OAAW,IAAIsB,EAAAA,EAAU,IAAIA,EAAAA,EAAUy6K,GAAMjzH,QAAQ,IAAIhkB,YAVvC,GAUiD,EAIxD03I,EAAe,SAACphF,GAAgD,IAAdygF,EAAMp7J,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAG,EACtE,OAAY,IAAR26E,GAAqB,MAARA,EAAoB,IAEhCA,EAED,IAAI95F,EAAAA,EAAU85F,GAAK50D,WAAW,MACzB,UAGL,IAAIllC,EAAAA,EAAU85F,GAAK50D,WAAW,OACzB3nC,EAAAA,EAAAA,GAAgCu8F,EAAK,IAGvC4gF,EAAAA,EAAAA,GAAO5gF,GAAKwtE,OAAO,CACxBsT,SAAS,EACTC,SAAUhpJ,OAAOioE,GAAO,IAAO,EAAIygF,EACnCO,cAAe,CACbC,QAAS,IACTC,QAAS,OAfI,GAkBnB,EAEM,SAAUG,EAAap5H,GAC3B,OAAO,IAAI/hD,EAAAA,EAAU+hD,EAAIxxC,QAAQ,IAAK,KAAK0uE,UAAU,KAAKzgC,UAC5D,CAEM,SAAU48H,EAAathF,EAAkCygF,GAC7D,MAA6B,GAAA77K,OAAtB67K,GAAqB,IAAXA,EACV,IAAIv6K,EAAAA,EAAU85F,GAAK75F,aAAa,KAAKunD,QAAQ+yH,GAC7C,IAAIv6K,EAAAA,EAAU85F,GAAK75F,aAAa,KAAKvC,WADe,IAE7D,C,+DCtFM,SAAUqtC,EAAe+uD,GAC7B,OAAY,IAARA,GAAaA,IAAQ39D,OAAO,GAAW,IACvC29D,EACK,IAAI95F,EAAAA,EAAyB,kBAAR85F,EAAmB1yD,OAAO0yD,GAAOA,GAAKt2D,SAAS,CACzEq4D,eAAgB,KAEb,EACT,C,+DCPM,SAAU2pE,EACdn0I,EACAE,IAEAua,EAAAA,EAAAA,GAAUza,EAAU,EAAG,oBACvBya,EAAAA,EAAAA,GAAUva,EAAW,EAAG,oBAExB,MAAM8pJ,GAAahqJ,EAAU,GAAKE,EAElC,MAAO,CAAC8pJ,EADQA,EAAY9pJ,EAE9B,C,+FCPM,SAAU2sB,EACdhiD,EACAwhD,GAEA,IAAKxhD,EAAW,OAAOA,EAEvB,GACEwhD,KACCs8H,EAAAA,EAAAA,GAAat8H,MACb3/C,EAAAA,EAAAA,GAAiB2/C,GAElB,MAAMlpD,MAAM,qBAGd,MAAMqpD,EAAMH,GACRs8H,EAAAA,EAAAA,GAAat8H,GACXA,GACA3/C,EAAAA,EAAAA,GAAiB2/C,GACjBre,EAAAA,GAAWC,cAAclpC,EAAAA,EAAU+b,SAASurC,SAC5CpgD,OACFA,EAEJ,OAAO0gD,EAAAA,GAAkB1e,cAAc,CACrCpjC,UAAW9F,EAAAA,EAAU+b,SAASjW,GAC9BwhD,WAAYG,IACXI,OACL,C,oFCxBM,SAAUq9H,EAAetlL,GAC7B,OAAOA,IAAQiiC,EAAAA,EAAa0P,OAAiB,QAAR3xC,CACvC,CAEM,SAAUulL,EAAcvlL,GAC5B,OAAOA,IAAQiiC,EAAAA,EAAa0L,IAAc,OAAR3tC,CACpC,CAEM,SAAUu/C,EAAgB74C,GAC9B,GAAe,OAAXA,QAA8BY,IAAXZ,EACrB,MAAO,CACLwhB,OAAQ+Z,EAAAA,EAAa0P,MACrB93B,QAAS,GACTqvB,UAAM5hC,GAIV,MAAMtH,EAAMlB,OAAOD,KAAK6H,GAExB,GACEA,GACA8+K,IAAS9+K,IACT1G,GACAA,EAAI,IA3BF,SAAsBA,GAC1B,OAAOslL,EAAetlL,IAAQulL,EAAcvlL,EAC9C,CA0BIylL,CAAYzlL,EAAI,IAChB,CACA,IAAI6Z,EAAU,GAEd,GAAIyrK,EAAetlL,EAAI,KAAOwlL,IAAS9+K,EAAO1G,EAAI,KAAM,CACtD,MAAMuwD,EAAazxD,OAAOD,KAAK6H,EAAO1G,EAAI,KAAK,GACzC6N,EAAQnH,EAAO1G,EAAI,IAAIuwD,GAI3B12C,EADiB,UAAf02C,EACQ1iD,EAEW,kBAAVA,EACC,GAAHnF,OAAM6nD,EAAU,MAAA7nD,OAAKiT,KAAKC,UAAU/N,GAAO0M,QAChD,MACA,KAGQ,GAAH7R,OAAM6nD,EAAU,MAAA7nD,OAAKmF,EAGlC,KAAqC,kBAAnBnH,EAAO1G,EAAI,MAC3B6Z,EAAUnT,EAAO1G,EAAI,KAGvB,MAAO,CACLkoB,OAAQo9J,EAAetlL,EAAI,IAAMiiC,EAAAA,EAAa0P,MAAQ1P,EAAAA,EAAa0L,GACnEzE,KAAMq8I,EAAcvlL,EAAI,IAAO0G,EAAO1G,EAAI,SAAYsH,EACtDuS,UAEJ,CAEA,MAAO,CACLqO,OAAQ+Z,EAAAA,EAAa0L,GACrBzE,KAAMxiC,EACNmT,QAAS,GAEb,C,+BCpEM,SAAU8hD,IAA4B,IAApB+pH,EAAGv8J,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAG,GAAI1a,EAAM0a,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAG,EACzC,OAAIu8J,EAAIj3K,QAAmB,EAATA,EAAmB,GAAP/F,OAAUg9K,EAAIl/J,MAAM,EAAG/X,GAAO,OACrD,GAAP/F,OAAUg9K,EAAIl/J,MAAM,EAAG/X,GAAO,OAAA/F,OAAMg9K,EAAIl/J,MAAMk/J,EAAIj3K,OAASA,GAC7D,CAEM,SAAUk3K,EAAcD,EAAa79I,GACzC,OAAK69I,EACD79I,EACK69I,EAAIj3K,OAASo5B,EAAQ,GAAHn/B,OAAMg9K,EAAIl/J,MAAM,EAAGqhB,GAAOojE,OAAM,OAAQy6E,EAE5D/pH,EAAQ+pH,GAJEA,CAKnB,C,oFCPKhV,E,yCAAL,SAAKA,GACHA,EAAAA,EAAA,2BACAA,EAAAA,EAAA,iCACAA,EAAAA,EAAA,sBACD,CAJD,CAAKA,IAAAA,EAAQ,KAMb,MAAMgB,EAAUlkI,IAASmkI,KAEnBC,EAAwB,CAC5B,CAAClB,EAASvvE,YAAauwE,EAAQvwE,WAC/B,CAACuvE,EAASmB,eAAgBH,EAAQG,cAClC,CAACnB,EAASoB,UAAWJ,EAAQI,UAGzB,SAAUV,EACdttE,GAGwC,IAFxCutE,EAAiBloJ,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAG,EACpBmoJ,EAAAnoJ,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAiB,CAAE08E,eAAgB,IACnC0rE,EAAApoJ,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAqBunJ,EAASvvE,WAE9BuwE,EAAQvnH,IAAI,CACVqoH,UAAWnB,EAAoB,EAC/BE,SAAUK,EAAsBL,KAGlC,MAAMh5H,EAAW,IAAIm5H,EAAQ5tE,GAAK2uE,oBAAoBpB,GACtD,OAAO94H,EAAS/K,SAAS+K,EAASi5H,gBAAiBF,EACrD,CAEM,SAAU/pK,EAAgCu8F,GAA2C,IAArButE,EAAiBloJ,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAAG,EACxFuoJ,EAAQvnH,IAAI,CACVqoH,UAAWnB,EAAoB,EAC/BE,SAAUK,EAAsBlB,EAASvvE,cAG3C,MAAM5oD,EAAW,IAAIm5H,EAAQ5tE,GAAK2uE,oBAAoBpB,GACtD,OAAO94H,EAAS/K,SAAS+K,EAASi5H,gBAAiB,CAAE3rE,eAAgB,KACvE,C,uECtCM,SAAU52D,EACdvE,GAC6B,IAA7BjjC,EAAA0hB,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAA4B,EAExBy8J,EAAUl7I,EACVm7I,EAAYp+K,EAEhB,OAAgB,IAAZm+K,GAAkBA,GACC,kBAAZA,IAAsBA,EAAU/pJ,OAAO+pJ,IAC1B,kBAAbn+K,IAAuBo+K,EAAYhqJ,OAAOgqJ,IACjDhqJ,OAAO+sB,MAAM/sB,OAAO6O,IAAiB,IAAI1gC,EAAAA,EAAU47K,GAChD,IAAI57K,EAAAA,EAAU47K,GAAS37K,aAAakjB,KAAAwtJ,IAAA,GAAM9+I,OAAOgqJ,MAJlB,IAAI77K,EAAAA,EAAU,EAKtD,CAEM,SAAUxC,EACdkjC,GAC6B,IAA7BjjC,EAAA0hB,UAAA1a,OAAA,QAAAnH,IAAA6hB,UAAA,GAAAA,UAAA,GAA4B,EAE5B,OAAe,IAAXuhB,GAAiBA,GACC,kBAAXA,IAAqBA,EAAS7O,OAAO6O,IACxB,kBAAbjjC,IAAuBA,EAAWo0B,OAAOp0B,IAChDo0B,OAAO+sB,MAAM/sB,OAAO6O,IAAiB,IAAI1gC,EAAAA,EAAUonC,OAAO1G,IACvD,IAAI1gC,EAAAA,EAAUonC,OAAO1G,IAASu+C,UAAU97D,KAAAwtJ,IAAA,GAAM9+I,OAAOp0B,MAJxB,IAAIuC,EAAAA,EAAU,EAKpD,C,6zRCzBI87K,EAA2B,CAAC,EAGhC,SAAS5nL,EAAoB6nL,GAE5B,IAAIC,EAAeF,EAAyBC,GAC5C,QAAqBz+K,IAAjB0+K,EACH,OAAOA,EAAahnL,QAGrB,IAAID,EAAS+mL,EAAyBC,GAAY,CACjDpnL,GAAIonL,EACJjmG,QAAQ,EACR9gF,QAAS,CAAC,GAUX,OANAinL,EAAoBF,GAAUj9I,KAAK/pC,EAAOC,QAASD,EAAQA,EAAOC,QAASd,GAG3Ea,EAAO+gF,QAAS,EAGT/gF,EAAOC,OACf,CAGAd,EAAoBgoL,EAAID,EC5BxB/nL,EAAoBioL,KAAO,CAAC,E,MCA5B,IAAIC,EAAW,GACfloL,EAAoBmoL,EAAI,CAAC3/K,EAAQ4/K,EAAUzyJ,EAAI0yJ,KAC9C,IAAGD,EAAH,CAMA,IAAIE,EAAeC,IACnB,IAAS/vI,EAAI,EAAGA,EAAI0vI,EAAS33K,OAAQioC,IAAK,CACrC4vI,EAAWF,EAAS1vI,GAAG,GACvB7iB,EAAKuyJ,EAAS1vI,GAAG,GACjB6vI,EAAWH,EAAS1vI,GAAG,GAE3B,IAJA,IAGIgwI,GAAY,EACPC,EAAI,EAAGA,EAAIL,EAAS73K,OAAQk4K,MACpB,EAAXJ,GAAsBC,GAAgBD,IAAaznL,OAAOD,KAAKX,EAAoBmoL,GAAGpsI,OAAOj6C,GAAS9B,EAAoBmoL,EAAErmL,GAAKsmL,EAASK,MAC9IL,EAASh4K,OAAOq4K,IAAK,IAErBD,GAAY,EACTH,EAAWC,IAAcA,EAAeD,IAG7C,GAAGG,EAAW,CACbN,EAAS93K,OAAOooC,IAAK,GACrB,IAAIunB,EAAIpqC,SACEvsB,IAAN22D,IAAiBv3D,EAASu3D,EAC/B,CACD,CACA,OAAOv3D,CArBP,CAJC6/K,EAAWA,GAAY,EACvB,IAAI,IAAI7vI,EAAI0vI,EAAS33K,OAAQioC,EAAI,GAAK0vI,EAAS1vI,EAAI,GAAG,GAAK6vI,EAAU7vI,IAAK0vI,EAAS1vI,GAAK0vI,EAAS1vI,EAAI,GACrG0vI,EAAS1vI,GAAK,CAAC4vI,EAAUzyJ,EAAI0yJ,EAuBjB,C,KC3BdroL,EAAoB+hE,EAAKlhE,IACxB,IAAI6nL,EAAS7nL,GAAUA,EAAO8nL,WAC7B,IAAO9nL,EAAiB,QACxB,IAAM,EAEP,OADAb,EAAoBsF,EAAEojL,EAAQ,CAAEv4I,EAAGu4I,IAC5BA,CAAM,E,MCNd,IACIE,EADAC,EAAWjoL,OAAOkoL,eAAkB9vJ,GAASp4B,OAAOkoL,eAAe9vJ,GAASA,GAASA,EAAa,UAQtGh5B,EAAoBU,EAAI,SAASiP,EAAOuV,GAEvC,GADU,EAAPA,IAAUvV,EAAQ6Z,KAAK7Z,IAChB,EAAPuV,EAAU,OAAOvV,EACpB,GAAoB,kBAAVA,GAAsBA,EAAO,CACtC,GAAW,EAAPuV,GAAavV,EAAMg5K,WAAY,OAAOh5K,EAC1C,GAAW,GAAPuV,GAAoC,oBAAfvV,EAAMvP,KAAqB,OAAOuP,CAC5D,CACA,IAAIo5K,EAAKnoL,OAAO6D,OAAO,MACvBzE,EAAoB+/D,EAAEgpH,GACtB,IAAIC,EAAM,CAAC,EACXJ,EAAiBA,GAAkB,CAAC,KAAMC,EAAS,CAAC,GAAIA,EAAS,IAAKA,EAASA,IAC/E,IAAI,IAAI1vK,EAAiB,EAAP+L,GAAYvV,EAAyB,iBAAXwJ,KAAyByvK,EAAe34K,QAAQkJ,GAAUA,EAAU0vK,EAAS1vK,GACxHvY,OAAOqoL,oBAAoB9vK,GAASjK,SAASpN,GAASknL,EAAIlnL,GAAO,IAAO6N,EAAM7N,KAI/E,OAFAknL,EAAa,QAAI,IAAM,EACvBhpL,EAAoBsF,EAAEyjL,EAAIC,GACnBD,CACR,C,KCxBA/oL,EAAoBsF,EAAI,CAACxE,EAASooL,KACjC,IAAI,IAAIpnL,KAAOonL,EACXlpL,EAAoBC,EAAEipL,EAAYpnL,KAAS9B,EAAoBC,EAAEa,EAASgB,IAC5ElB,OAAOuoL,eAAeroL,EAASgB,EAAK,CAAEsnL,YAAY,EAAMzlI,IAAKulI,EAAWpnL,IAE1E,ECND9B,EAAoBo9K,EAAI,CAAC,EAGzBp9K,EAAoBK,EAAKgpL,GACjBnpL,QAAQoqC,IAAI1pC,OAAOD,KAAKX,EAAoBo9K,GAAG9nJ,QAAO,CAACg0J,EAAUxnL,KACvE9B,EAAoBo9K,EAAEt7K,GAAKunL,EAASC,GAC7BA,IACL,KCNJtpL,EAAoBupL,EAAKF,GAEjB,aAAeA,EAAU,IAAM,CAAC,GAAK,WAAW,GAAK,WAAW,GAAK,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,IAAM,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,WAAW,KAAO,YAAYA,GAAW,YCFp5CrpL,EAAoBwpL,SAAYH,GAExB,cAAgBA,EAAU,IAAM,CAAC,IAAM,WAAW,KAAO,WAAW,KAAO,YAAYA,GAAW,aCH1GrpL,EAAoBypL,EAAI,WACvB,GAA0B,kBAAfC,WAAyB,OAAOA,WAC3C,IACC,OAAOlgK,MAAQ,IAAImgK,SAAS,cAAb,EAChB,CAAE,MAAOtpL,GACR,GAAsB,kBAAX2vB,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBhwB,EAAoB4pL,IAAO/oL,KAC1BA,EAASD,OAAO6D,OAAO5D,IACXsE,WAAUtE,EAAOsE,SAAW,IACxCvE,OAAOuoL,eAAetoL,EAAQ,UAAW,CACxCuoL,YAAY,EACZn9H,IAAK,KACJ,MAAM,IAAI3rD,MAAM,0FAA4FO,EAAOJ,GAAG,IAGjHI,GCTRb,EAAoBC,EAAI,CAAC+4B,EAAK6wJ,IAAUjpL,OAAOiiG,UAAU7gC,eAAep3B,KAAK5R,EAAK6wJ,G,MCAlF,IAAIC,EAAa,CAAC,EACdC,EAAoB,iBAExB/pL,EAAoBy3K,EAAI,CAACh0F,EAAKumG,EAAMloL,EAAKunL,KACxC,GAAGS,EAAWrmG,GAAQqmG,EAAWrmG,GAAKj0E,KAAKw6K,OAA3C,CACA,IAAIC,EAAQC,EACZ,QAAW9gL,IAARtH,EAEF,IADA,IAAIqoL,EAAUr6J,SAASs6J,qBAAqB,UACpC5xI,EAAI,EAAGA,EAAI2xI,EAAQ55K,OAAQioC,IAAK,CACvC,IAAI6xI,EAAIF,EAAQ3xI,GAChB,GAAG6xI,EAAEC,aAAa,QAAU7mG,GAAO4mG,EAAEC,aAAa,iBAAmBP,EAAoBjoL,EAAK,CAAEmoL,EAASI,EAAG,KAAO,CACpH,CAEGJ,IACHC,GAAa,GACbD,EAASn6J,SAASm2J,cAAc,WAEzBsE,QAAU,QACjBN,EAAOp/J,QAAU,IACb7qB,EAAoBwqL,IACvBP,EAAO/D,aAAa,QAASlmL,EAAoBwqL,IAElDP,EAAO/D,aAAa,eAAgB6D,EAAoBjoL,GAExDmoL,EAAOv3K,IAAM+wE,GAEdqmG,EAAWrmG,GAAO,CAACumG,GACnB,IAAIS,EAAmB,CAACp5I,EAAMllC,KAE7B89K,EAAOzmG,QAAUymG,EAAOS,OAAS,KACjC34J,aAAalH,GACb,IAAI8/J,EAAUb,EAAWrmG,GAIzB,UAHOqmG,EAAWrmG,GAClBwmG,EAAOW,YAAcX,EAAOW,WAAWC,YAAYZ,GACnDU,GAAWA,EAAQz7K,SAASymB,GAAQA,EAAGxpB,KACpCklC,EAAM,OAAOA,EAAKllC,EAAM,EAExB0e,EAAU2B,WAAWi+J,EAAiB3oH,KAAK,UAAM14D,EAAW,CAAE6Y,KAAM,UAAW9L,OAAQ8zK,IAAW,MACtGA,EAAOzmG,QAAUinG,EAAiB3oH,KAAK,KAAMmoH,EAAOzmG,SACpDymG,EAAOS,OAASD,EAAiB3oH,KAAK,KAAMmoH,EAAOS,QACnDR,GAAcp6J,SAASg7J,KAAK3E,YAAY8D,EApCkB,CAoCX,C,KCvChDjqL,EAAoB+/D,EAAKj/D,IACH,qBAAXmrI,QAA0BA,OAAO8+C,aAC1CnqL,OAAOuoL,eAAeroL,EAASmrI,OAAO8+C,YAAa,CAAEp7K,MAAO,WAE7D/O,OAAOuoL,eAAeroL,EAAS,aAAc,CAAE6O,OAAO,GAAO,ECL9D3P,EAAoBgrL,IAAOnqL,IAC1BA,EAAOoqL,MAAQ,GACVpqL,EAAOsE,WAAUtE,EAAOsE,SAAW,IACjCtE,GCHRb,EAAoBwmG,EAAI,ICAxB,MAEI,IAAI0kF,EAAelrL,EAAoBupL,EACnC4B,EAAgBnrL,EAAoBK,EACpC+qL,EAAW,CAAC,EACZC,EAAW,CAAC,EAIhBrrL,EAAoBupL,EAAI,SAAUF,GAEhC,OADa6B,EAAa7B,IAGvB+B,EAASppH,eAAeqnH,GAAW,IAAM+B,EAAS/B,GAAW,GAElE,EACArpL,EAAoBK,EAAI,SAAUgpL,GAEhC,OADa8B,EAAc9B,GACbz9H,OAAM,SAAUn2C,GAC5B,IAAI61K,EAAUD,EAASrpH,eAAeqnH,GAAWgC,EAAShC,GAAW,EACrE,GAAIiC,EAAU,EAAG,CACf,IAAIC,EAAUL,EAAa7B,GAQ3B,MAPA5zK,EAAMkG,QACJ,iBACA0tK,EACA,8BACAkC,EACA,IACF91K,EAAMwsK,QAAUsJ,EACV91K,CACR,CACA,OAAO,IAAIvV,SAAQ,SAAUC,GAC3B,IAAIqrL,EAAe,EAAIF,EAAU,EACjC9+J,YAAW,WACT,IACIi/J,EACK,cAAgBjxJ,KAAKivC,MAG9B2hH,EAAS/B,GAAWoC,EACpBJ,EAAShC,GAAWiC,EAAU,EAC9BnrL,EAAQH,EAAoBK,EAAEgpL,GAChC,GApCc,SAAUmC,GAC5B,OAAO,IAAMA,EAAe,GAAK,GACnC,CAkCSE,CAAcF,GACnB,GACF,GACF,CAEH,EA/CD,G,MCAA,GAAwB,qBAAb17J,SAAX,CACA,IAkDI67J,EAAkBtC,GACd,IAAInpL,SAAQ,CAACC,EAASorE,KAC5B,IAAI/kD,EAAOxmB,EAAoBwpL,SAASH,GACpCuC,EAAW5rL,EAAoBwmG,EAAIhgF,EACvC,GAlBmB,EAACA,EAAMolK,KAE3B,IADA,IAAIC,EAAmB/7J,SAASs6J,qBAAqB,QAC7C5xI,EAAI,EAAGA,EAAIqzI,EAAiBt7K,OAAQioC,IAAK,CAChD,IACIszI,GADAC,EAAMF,EAAiBrzI,IACR8xI,aAAa,cAAgByB,EAAIzB,aAAa,QACjE,GAAe,eAAZyB,EAAItlK,MAAyBqlK,IAAatlK,GAAQslK,IAAaF,GAAW,OAAOG,CACrF,CACA,IAAIC,EAAoBl8J,SAASs6J,qBAAqB,SACtD,IAAQ5xI,EAAI,EAAGA,EAAIwzI,EAAkBz7K,OAAQioC,IAAK,CACjD,IAAIuzI,EAEJ,IADID,GADAC,EAAMC,EAAkBxzI,IACT8xI,aAAa,gBAChB9jK,GAAQslK,IAAaF,EAAU,OAAOG,CACvD,GAMIE,CAAezlK,EAAMolK,GAAW,OAAOzrL,IAtDrB,EAACkpL,EAASuC,EAAUM,EAAQ/rL,EAASorE,KAC3D,IAAI4gH,EAAUr8J,SAASm2J,cAAc,QAErCkG,EAAQ1lK,IAAM,aACd0lK,EAAQlqK,KAAO,WACXjiB,EAAoBwqL,KACvB2B,EAAQnxF,MAAQh7F,EAAoBwqL,IAmBrC2B,EAAQ3oG,QAAU2oG,EAAQzB,OAjBJv+K,IAGrB,GADAggL,EAAQ3oG,QAAU2oG,EAAQzB,OAAS,KAChB,SAAfv+K,EAAM8V,KACT9hB,QACM,CACN,IAAIisL,EAAYjgL,GAASA,EAAM8V,KAC3BoqK,EAAWlgL,GAASA,EAAMgK,QAAUhK,EAAMgK,OAAOqQ,MAAQolK,EACzDjpL,EAAM,IAAIrC,MAAM,qBAAuB+oL,EAAU,cAAgB+C,EAAY,KAAOC,EAAW,KACnG1pL,EAAIqH,KAAO,iBACXrH,EAAIpC,KAAO,wBACXoC,EAAIsf,KAAOmqK,EACXzpL,EAAIs/K,QAAUoK,EACVF,EAAQvB,YAAYuB,EAAQvB,WAAWC,YAAYsB,GACvD5gH,EAAO5oE,EACR,GAGDwpL,EAAQ3lK,KAAOolK,EAGXM,EACHA,EAAOtB,WAAW0B,aAAaH,EAASD,EAAOK,aAE/Cz8J,SAASg7J,KAAK3E,YAAYgG,EAEb,EAqBbK,CAAiBnD,EAASuC,EAAU,KAAMzrL,EAASorE,EAAO,IAIxDkhH,EAAqB,CACxB,KAAM,GAGPzsL,EAAoBo9K,EAAEsP,QAAU,CAACrD,EAASC,KAEtCmD,EAAmBpD,GAAUC,EAAS95K,KAAKi9K,EAAmBpD,IACzB,IAAhCoD,EAAmBpD,IAFX,CAAC,IAAM,EAAE,KAAO,EAAE,KAAO,GAEcA,IACtDC,EAAS95K,KAAKi9K,EAAmBpD,GAAWsC,EAAetC,GAASjpL,MAAK,KACxEqsL,EAAmBpD,GAAW,CAAC,IAC5BhpL,IAEH,aADOosL,EAAmBpD,GACpBhpL,CAAC,IAET,CA1E0C,C,WCK3C,IAAIssL,EAAkB,CACrB,KAAM,GAGP3sL,EAAoBo9K,EAAEqL,EAAI,CAACY,EAASC,KAElC,IAAIsD,EAAqB5sL,EAAoBC,EAAE0sL,EAAiBtD,GAAWsD,EAAgBtD,QAAWjgL,EACtG,GAA0B,IAAvBwjL,EAGF,GAAGA,EACFtD,EAAS95K,KAAKo9K,EAAmB,QAC3B,CAGL,IAAIthH,EAAU,IAAIprE,SAAQ,CAACC,EAASorE,IAAYqhH,EAAqBD,EAAgBtD,GAAW,CAAClpL,EAASorE,KAC1G+9G,EAAS95K,KAAKo9K,EAAmB,GAAKthH,GAGtC,IAAImY,EAAMzjF,EAAoBwmG,EAAIxmG,EAAoBupL,EAAEF,GAEpD5zK,EAAQ,IAAInV,MAgBhBN,EAAoBy3K,EAAEh0F,GAfFt3E,IACnB,GAAGnM,EAAoBC,EAAE0sL,EAAiBtD,KAEf,KAD1BuD,EAAqBD,EAAgBtD,MACRsD,EAAgBtD,QAAWjgL,GACrDwjL,GAAoB,CACtB,IAAIR,EAAYjgL,IAAyB,SAAfA,EAAM8V,KAAkB,UAAY9V,EAAM8V,MAChEspK,EAAUp/K,GAASA,EAAMgK,QAAUhK,EAAMgK,OAAOzD,IACpD+C,EAAMkG,QAAU,iBAAmB0tK,EAAU,cAAgB+C,EAAY,KAAOb,EAAU,IAC1F91K,EAAMzL,KAAO,iBACbyL,EAAMwM,KAAOmqK,EACb32K,EAAMwsK,QAAUsJ,EAChBqB,EAAmB,GAAGn3K,EACvB,CACD,GAEwC,SAAW4zK,EAASA,EAE/D,CACD,EAWFrpL,EAAoBmoL,EAAEM,EAAKY,GAA0C,IAA7BsD,EAAgBtD,GAGxD,IAAIwD,EAAuB,CAACC,EAA4B9hJ,KACvD,IAKI68I,EAAUwB,EALVjB,EAAWp9I,EAAK,GAChB+hJ,EAAc/hJ,EAAK,GACnBgiJ,EAAUhiJ,EAAK,GAGIwN,EAAI,EAC3B,GAAG4vI,EAASn0J,MAAMxzB,GAAgC,IAAxBksL,EAAgBlsL,KAAa,CACtD,IAAIonL,KAAYkF,EACZ/sL,EAAoBC,EAAE8sL,EAAalF,KACrC7nL,EAAoBgoL,EAAEH,GAAYkF,EAAYlF,IAGhD,GAAGmF,EAAS,IAAIxkL,EAASwkL,EAAQhtL,EAClC,CAEA,IADG8sL,GAA4BA,EAA2B9hJ,GACrDwN,EAAI4vI,EAAS73K,OAAQioC,IACzB6wI,EAAUjB,EAAS5vI,GAChBx4C,EAAoBC,EAAE0sL,EAAiBtD,IAAYsD,EAAgBtD,IACrEsD,EAAgBtD,GAAS,KAE1BsD,EAAgBtD,GAAW,EAE5B,OAAOrpL,EAAoBmoL,EAAE3/K,EAAO,EAGjCykL,EAAqB5/G,KAAgC,0BAAIA,KAAgC,2BAAK,GAClG4/G,EAAmB/9K,QAAQ29K,EAAqB/qH,KAAK,KAAM,IAC3DmrH,EAAmBz9K,KAAOq9K,EAAqB/qH,KAAK,KAAMmrH,EAAmBz9K,KAAKsyD,KAAKmrH,G,KCpFvF,IAAIC,EAAsBltL,EAAoBmoL,OAAE/+K,EAAW,CAAC,KAAK,KAAK,KAAK,KAAK,OAAO,IAAOpJ,EAAoB,SAClHktL,EAAsBltL,EAAoBmoL,EAAE+E,E","sources":["locales|lazy|/^/.//.*/.js$/|referencedExports: [[\"messages\"]]|groupOptions: {}|namespace object","candid/swap/SwapFactory_update_call.did.ts","actor/swap.ts","assets/images/icons/dialog-close.tsx","components/Button/SmallButton.tsx","components/Button/MinButton.tsx","components/Copy/index.tsx","components/CurrencySelector/TokenItem.tsx","components/CurrencySelector/BaseToken.tsx","components/CurrencySelector/selector.tsx","components/Image/Avatar.tsx","../../../packages/ui/src/assets/icons/SNS.tsx","../../../packages/ui/src/components/TokenImage.tsx","components/Image/Token.tsx","components/Image/Image.tsx","components/Image/Connector.tsx","components/ImportToken/steps/Tip.tsx","components/ImportToken/steps/Confirm.tsx","components/ImportToken/index.tsx","components/Input/FilledTextField.tsx","components/Loading/List.tsx","components/Loading/Static.tsx","components/Loading/index.tsx","assets/images/Maintenance.svg","components/Maintenance.tsx","components/Mui.tsx","components/ReclaimTips.tsx","components/Select/SelectToken.tsx","components/Select/index.tsx","components/Steps/View.tsx","components/authentication/ButtonConnector.tsx","components/Loading/Dot.tsx","components/Loading/Fullscreen.tsx","components/Wrapper/index.tsx","components/ViewMore/index.tsx","components/swap/FindPositions.tsx","components/Input/NumberTextField.tsx","components/Input/NumberFilledTextField.tsx","components/TabPanel/index.tsx","components/CollapseWrapper.tsx","components/switch/index.tsx","components/Link.tsx","components/modal/index.tsx","components/modal/swap.tsx","assets/images/icons/no-data.tsx","components/no-data/index.tsx","components/notistack/SnackbarContext.ts","components/notistack/utils/index.ts","components/notistack/utils/defaultIconVariants.tsx","components/notistack/transitions/Transition/types.ts","components/notistack/transitions/Transition/Transition.tsx","components/notistack/transitions/useForkRef.ts","components/notistack/transitions/getTransitionProps.ts","components/notistack/transitions/utils.ts","components/notistack/transitions/createTransition.ts","components/notistack/transitions/document-window.ts","components/notistack/transitions/Slide/Slide.tsx","components/notistack/SnackbarProvider/merger.ts","components/notistack/transitions/getAutoHeightDuration.ts","components/notistack/utils/styles.ts","components/notistack/transitions/Collapse/Collapse.tsx","components/notistack/SnackbarItem/utils.ts","components/notistack/utils/createChainedFunction.ts","components/notistack/utils/useEventCallback.tsx","components/notistack/SnackbarItem/Snackbar.tsx","components/notistack/SnackbarContent/SnackbarContent.tsx","components/notistack/ui/MaterialDesignContent/MaterialDesignContent.tsx","components/notistack/SnackbarItem/SnackbarItem.tsx","components/notistack/SnackbarContainer/SnackbarContainer.tsx","components/notistack/SnackbarProvider/SnackbarProvider.tsx","components/notistack/useSnackbar.ts","components/pagination/index.tsx","components/token/TokenStandardLabel.tsx","constants/canister.ts","constants/ckBTC.ts","constants/ckERC20.ts","constants/ckETH.ts","constants/icp.ts","constants/types.ts","constants/index.ts","constants/locales.ts","constants/mint.ts","constants/nft.ts","constants/server.ts","constants/swap.ts","constants/tokens.ts","constants/wallet.ts","constants/web3.ts","hooks/staking-token/useStateColors.ts","hooks/staking-token/usePools.ts","hooks/staking-token/useUnusedTokens.ts","hooks/staking-token/index.ts","hooks/swap/useSwapApprove.ts","hooks/swap/usePositionValue.ts","hooks/swap/useMultiplePositions.ts","hooks/swap/useWithdrawPCMBalance.ts","hooks/swap/useSortedPositions.ts","hooks/swap/useTokenInsufficient.ts","hooks/swap/useSwapPositions.ts","hooks/swap/usePCMBalances.ts","hooks/swap/useSwapTokenFeeCost.ts","hooks/swap/useLiquidityLocksImage.ts","hooks/sns/useSnsTokenInfoByGovernance.ts","hooks/swap/useSwapWithdraw.ts","hooks/swap/index.ts","hooks/swap/useMaxAmountSpend.ts","hooks/swap/usePools.ts","hooks/swap/useReclaimCallback.ts","../../../packages/swap-sdk/src/core/utils/sortedInsert.ts","../../../packages/swap-sdk/src/entities/route.ts","../../../packages/swap-sdk/src/entities/trade.ts","hooks/swap/useSwapPools.ts","hooks/swap/useAllCurrencyCombinations.ts","hooks/swap/useAllRoutes.ts","hooks/swap/useTrade.ts","hooks/swap/useUserPositionIds.ts","hooks/swap/v3Calls.ts","hooks/token/calls.ts","hooks/token/useERC20Token.ts","hooks/token/useTokenStandard.ts","hooks/token/index.ts","hooks/token/useAllowance.ts","hooks/token/useApprove.ts","hooks/token/useSNSTokenRootId.ts","candid/ogy.did.ts","utils/token/adapter.ts","hooks/token/useTokenBalance.ts","../../../packages/utils/src/db/db.ts","../../../packages/hooks/src/usePromisesAwait.ts","hooks/token/useLocalTokens.ts","hooks/token/useTokenInfo.ts","../../../packages/utils/src/db/storage.ts","constants/db.ts","hooks/token/useTokenLogo.ts","store/call/hooks.ts","hooks/useCallsData.ts","hooks/useCurrency.ts","hooks/useGlobalContext.ts","hooks/useIntervalFetch.ts","hooks/useStepCall.ts","hooks/useTips.ts","hooks/useUSDPrice.ts","hooks/web3/useCurrentBlockTimestamp.ts","hooks/web3/useActiveChain.ts","hooks/web3/useETHBalance.ts","hooks/web3/useWeb3CallsData.ts","hooks/web3/useERC20Balance.ts","hooks/web3/useBlockNumber.ts","../../../packages/constants/src/web3-addresses.ts","hooks/web3/useEthersProvider.ts","hooks/web3/useContract.ts","hooks/web3/useERC20Allowance.ts","hooks/web3/useERC20Approve.ts","hooks/web3/useTokenFromNetwork.ts","serviceWorker.ts","components/GoogleAnalytics/index.tsx","constants/zIndex.ts","components/RiskStatement/Modal.tsx","components/RiskStatement/index.tsx","assets/images/Error.tsx","../../../packages/ui/src/components/GlobalTips.tsx","components/Background.tsx","components/Layout/V3Event.tsx","assets/images/logo-dark.svg","assets/images/logo-white.svg","components/Logo.tsx","components/LogoSection/index.tsx","components/Layout/Header/ProfileSection/Address.tsx","components/Layout/Header/ProfileSection/Account.tsx","components/Layout/Header/ProfileSection/Principal.tsx","components/Layout/Header/LogOutSection/Confirm.tsx","components/Layout/Header/LogOutSection/index.tsx","components/Layout/Header/ProfileSection/BalanceAndValue.tsx","components/Layout/Header/ProfileSection/index.tsx",".version.ts","components/Layout/Navbar/config.ts","components/Layout/Navbar/icons/SimpleMode.tsx","components/Layout/Navbar/icons/ProMode.tsx","components/Layout/Navbar/icons/Twitter.tsx","components/Layout/Navbar/icons/Telegram.tsx","components/Layout/Navbar/icons/DSCVR.tsx","components/Layout/Navbar/icons/Medium.tsx","components/Layout/Navbar/icons/Gitbook.tsx","components/Layout/Navbar/icons/Github.tsx","components/Layout/Navbar/icons/Discord.tsx","components/Layout/Navbar/icons/Website.tsx","../../../packages/ui/src/components/menu/MenuItem.tsx","components/Layout/Navbar/SubMenuPopper.tsx","components/Layout/Navbar/ExceedRoutesPopper.tsx","components/Layout/Navbar/ExceedRoutes.tsx","components/Layout/Navbar/Routes.tsx","components/Layout/Navbar/index.tsx","assets/images/logo1.svg","assets/images/arrow-down.svg","components/Layout/Navbar/mobile/Routes.tsx","components/Layout/Navbar/mobile/Navbar.tsx","components/Layout/Header/index.tsx","components/Layout/SnsTips.tsx","components/Layout/MainLayout.tsx","components/Layout/Layout.tsx","components/ErrorBoundary/index.tsx","components/authentication/connector.tsx","components/authentication/ConnectorModal.tsx","components/Loading/LinearLoader.tsx","hooks/token-claim/useAllClaimEvents.ts","hooks/useInitialTokenStandard.ts","components/Loading/GreenCircle.tsx","components/Steps/icons.tsx","components/Steps/Details.tsx","components/Steps/index.tsx","hooks/useActorError.ts","hooks/useActorSubmit.ts","components/Actor/index.tsx","hooks/transactions/retry.ts","hooks/transactions/updater.tsx","store/transactions/updater.tsx","constants/wagmi.ts","components/DisableIframe.tsx","utils/web3/connection/utils.ts","hooks/web3/useConnectors.ts","components/Web3Injector.tsx","hooks/web3/useEagerlyConnect.ts","components/Snackbar.tsx","components/NavigationScroll.tsx","theme/colors.ts","theme/compStyleOverride.ts","theme/palette.ts","theme/typography.ts","theme/index.ts","components/404/index.tsx","components/Loading/Loadable.tsx","routes/config.ts","routes/Auth.tsx","routes/index.tsx","App.tsx","hooks/useActiveLocale.ts","i18n.tsx","utils/env.ts","tracing.ts","index.tsx","locales/services.ts","store/allCanisters.ts","store/auth/actions.ts","store/auth/hooks.ts","store/call/actions.ts","store/customization/actions.ts","store/global/actions.ts","../../../packages/hooks/src/exchange_rate.ts","../../../packages/hooks/src/icp.ts","store/global/hooks.ts","store/hooks.ts","store/customization/states.ts","store/customization/reducer.ts","store/snackbar/states.ts","store/snackbar/reducer.ts","store/wallet/states.ts","store/wallet/reducer.ts","store/global/states.ts","store/global/reducer.ts","store/swap/state.ts","store/swap/reducer.ts","store/swap/liquidity/state.ts","store/swap/liquidity/reducer.ts","store/swap/cache/state.ts","store/swap/cache/reducer.ts","store/swap/burn/state.ts","store/swap/burn/reducer.ts","store/nft/states.ts","store/nft/reducer.ts","store/auth/states.ts","store/auth/reducer.ts","store/session/states.ts","store/session/reducer.ts","store/token/cache/states.ts","store/token/cache/reducer.ts","store/call/states.ts","store/call/reducer.ts","store/steps/state.ts","store/steps/reducer.ts","store/sns/states.ts","store/sns/reducer.ts","store/swapv2/liquidity/state.ts","store/swapv2/liquidity/reducer.ts","store/swapv2/cache/state.ts","store/swapv2/cache/reducer.ts","store/swapv2/burn/state.ts","store/swapv2/burn/reducer.ts","store/web3/states.ts","store/web3/reducer.ts","store/reducer.ts","store/index.ts","store/loadingReducer.ts","store/nft/actions.ts","store/session/actions.ts","store/snackbar/actions.ts","store/sns/actions.ts","store/sns/hooks.ts","store/steps/actions.ts","store/steps/hooks.ts","store/swap/actions.ts","store/swap/burn/actions.ts","store/swap/cache/actions.ts","store/swap/cache/hooks.ts","store/swap/hooks.ts","hooks/useDebounce.ts","store/swap/liquidity/actions.ts","store/swapv2/burn/actions.ts","store/swapv2/cache/actions.ts","store/swapv2/liquidity/actions.ts","store/token/cache/actions.ts","store/token/cache/hooks.ts","store/transactions/hooks.tsx","store/transactions/reducer.ts","store/transactions/types.ts","store/wallet/actions.ts","store/wallet/hooks.ts","store/web3/actions.ts","types/global.ts","types/staking-token.ts","types/swap.ts","utils/connector/NF_ID.ts","constants/connector.ts","utils/connector/internet-identity.ts","utils/connector/stoic.ts","utils/connector/plug.ts","utils/connector/icpswap.ts","utils/connector/infinity.ts","utils/connector/metamask.ts","utils/connector/index.ts","utils/connector/me.ts","utils/index.ts","utils/nft/BaseNFTAdapter.ts","utils/nft/ICPSwapNFTAdapter.ts","utils/nft/NFT.ts","utils/nft/trade/BaseNFTAdapter.ts","utils/nft/trade/ICPSwapNFTTradeAdapter.ts","utils/nft/trade/index.ts","utils/nft/index.ts","utils/stake/state.ts","utils/swap/maxAmountFormat.ts","utils/swap/sortToken.ts","utils/swap/liquidity.ts","utils/swap/index.ts","utils/swap/mint.ts","utils/token/index.ts","utils/web3/calculateGasMargin.ts","utils/web3/connection/index.ts","utils/web3/index.ts","../../../packages/candid/src/token-list/TokenList.did.ts","../../../packages/candid/src/token-list/AllTokenOfSwap.did.ts","../../../packages/constants/src/host.ts","../../../packages/actor/src/actor.ts","../../../packages/actor/src/BaseActor.ts","../../../packages/actor/src/ActorName.ts","../../../packages/actor/src/token-list/index.ts","../../../packages/actor/src/sns/root.ts","../../../packages/candid/src/sns/wasm.did.ts","../../../packages/actor/src/sns/wasm.ts","../../../packages/candid/src/sns/swap.did.ts","../../../packages/actor/src/sns/swap.ts","../../../packages/candid/src/sns/governance.did.ts","../../../packages/actor/src/sns/governance.ts","../../../packages/candid/src/info/node_index.did.ts","../../../packages/actor/src/info/node_index.ts","../../../packages/candid/src/info/BaseIndex.did.ts","../../../packages/candid/src/info/BaseStorage.did.ts","../../../packages/actor/src/info/base.ts","../../../packages/candid/src/info/GlobalIndex.did.ts","../../../packages/candid/src/info/GlobalTVL.did.ts","../../../packages/actor/src/info/global.ts","../../../packages/candid/src/info/PoolStorage.did.ts","../../../packages/actor/src/info/pool.ts","../../../packages/candid/src/info/TokenStorage.did.ts","../../../packages/actor/src/info/token.ts","../../../packages/candid/src/info/UserStorage.did.ts","../../../packages/actor/src/info/user.ts","../../../packages/candid/src/icrc/icrc.archive.did.ts","../../../packages/candid/src/icrc/icrc1.did.ts","../../../packages/candid/src/icrc/icrc2.did.ts","../../../packages/actor/src/token/icrc1.ts","../../../packages/candid/src/dip20/xtc.did.ts","../../../packages/candid/src/dip20/dip20.did.ts","../../../packages/candid/src/dip20/dip20_balance.did.ts","../../../packages/candid/src/dip20/dip20_supply.did.ts","../../../packages/actor/src/token/dip20.ts","../../../packages/candid/src/token/token.did.ts","../../../packages/candid/src/token/wicp.did.ts","../../../packages/actor/src/token/ext.ts","../../../packages/candid/src/icp/ledger.did.ts","../../../packages/actor/src/icp/ledger.ts","../../../packages/candid/src/nft/V3NFTCanisterController.did.ts","../../../packages/candid/src/nft/NFTCanister.did.ts","../../../packages/candid/src/nft/V3TradeCanister.did.ts","../../../packages/candid/src/nft/V3TradeStat.did.ts","../../../packages/candid/src/nft/EXT.did.ts","../../../packages/actor/src/nft/index.ts","../../../packages/candid/src/other/ExchangeRate.did.ts","../../../packages/actor/src/other/exchangeRate.ts","../../../packages/candid/src/chainKeyToken/erc20Minter.did.ts","../../../packages/actor/src/other/chainKeyToken.ts","../../../packages/candid/src/other/LiquidityLocks.did.ts","../../../packages/actor/src/other/liquidityLocks.ts","../../../packages/candid/src/other/Tool.did.ts","../../../packages/actor/src/other/helper.ts","../../../packages/candid/src/swap/PassCodeManager.did.ts","../../../packages/candid/src/swap/SwapNFT.did.ts","../../../packages/candid/src/swap/Factory.did.ts","../../../packages/candid/src/swap/SwapPool.did.ts","../../../packages/candid/src/swap/Position.did.ts","../../../packages/candid/src/swap/PositionCharts.did.ts","../../../packages/actor/src/swap/global.ts","../../../packages/actor/src/swap/index.ts","../../../packages/candid/src/staking-farm/FarmController.did.ts","../../../packages/candid/src/staking-farm/Farm.did.ts","../../../packages/candid/src/staking-farm/FarmIndex.did.ts","../../../packages/actor/src/staking/farm.ts","../../../packages/candid/src/staking-token/StakingPoolController.did.ts","../../../packages/candid/src/staking-token/TokenPool.did.ts","../../../packages/candid/src/staking-token/StakeIndex.did.ts","../../../packages/actor/src/staking/token.ts","../../../packages/candid/src/token-claim/ClaimController.did.ts","../../../packages/candid/src/token-claim/ClaimStorage.did.ts","../../../packages/actor/src/token-claim.ts","../../../packages/candid/src/voting/VoteController.did.ts","../../../packages/candid/src/voting/VoteProjectCanister.did.ts","../../../packages/candid/src/voting/FileCanister.did.ts","../../../packages/actor/src/voting.ts","../../../packages/constants/src/canisterIds.ts","../../../packages/constants/src/chains.ts","../../../packages/constants/src/standards.ts","../../../packages/constants/src/swap.ts","../../../packages/hooks/src/info/node.ts","../../../packages/hooks/src/info/useInfoToken.ts","../../../packages/hooks/src/sns/useListDeployedSNSs.ts","../../../packages/hooks/src/staking-token/calls.ts","../../../packages/hooks/src/staking-token/storage.ts","../../../packages/hooks/src/swap/calls.ts","../../../packages/hooks/src/swap/usePassCode.ts","../../../packages/hooks/src/swap/usePassCodeManager.ts","../../../packages/hooks/src/token-claim/index.ts","../../../packages/hooks/src/token-list/calls.ts","../../../packages/hooks/src/token/useTokenBalance.ts","../../../packages/hooks/src/useCallData.ts","../../../packages/hooks/src/useDebouncedChangeHandler.ts","../../../packages/hooks/src/useInterval.ts","../../../packages/hooks/src/useLimitedInfinityCall.ts","../../../packages/hooks/src/useParsedQueryString.ts","../../../packages/swap-sdk/src/constants.ts","../../../packages/swap-sdk/src/core/constants.ts","../../../packages/swap-sdk/src/core/entities/erc20Token.ts","../../../packages/swap-sdk/src/core/entities/fractions/currencyAmount.ts","../../../packages/swap-sdk/src/core/entities/fractions/fraction.ts","../../../packages/swap-sdk/src/core/entities/fractions/percent.ts","../../../packages/swap-sdk/src/core/entities/fractions/price.ts","../../../packages/swap-sdk/src/core/entities/baseCurrency.ts","../../../packages/swap-sdk/src/core/entities/token.ts","../../../packages/swap-sdk/src/core/utils/validateAndParseAddress.ts","../../../packages/swap-sdk/src/utils/liquidityMath.ts","../../../packages/swap-sdk/src/utils/swapMath.ts","../../../packages/swap-sdk/src/entities/tickDataProvider.ts","../../../packages/swap-sdk/src/utils/tickList.ts","../../../packages/swap-sdk/src/utils/isSorted.ts","../../../packages/swap-sdk/src/entities/tick.ts","../../../packages/swap-sdk/src/entities/tickListDataProvider.ts","../../../packages/swap-sdk/src/entities/pool.ts","../../../packages/swap-sdk/src/utils/computePoolAddress.ts","../../../packages/swap-sdk/src/utils/maxLiquidityForAmounts.ts","../../../packages/swap-sdk/src/entities/position.ts","../../../packages/swap-sdk/src/internalConstants.ts","../../../packages/swap-sdk/src/core/utils/sqrt.ts","../../../packages/swap-sdk/src/utils/encodeSqrtRatioX96.ts","../../../packages/swap-sdk/src/utils/fullMath.ts","../../../packages/swap-sdk/src/utils/nearestUsableTick.ts","../../../packages/swap-sdk/src/utils/priceTickConversions.ts","../../../packages/swap-sdk/src/utils/sqrtPriceMath.ts","../../../packages/swap-sdk/src/utils/mostSignificantBit.ts","../../../packages/swap-sdk/src/utils/tickMath.ts","../../../packages/token-adapter/src/BaseTokenAdapter.ts","../../../packages/token-adapter/src/DIP20Adapter.ts","../../../packages/token-adapter/src/DIP20WICPAdapter.ts","../../../packages/token-adapter/src/DIP20XTCAdapter.ts","../../../packages/token-adapter/src/EXTAdapter.ts","../../../packages/token-adapter/src/ICP.ts","../../../packages/token-adapter/src/ICRC1.ts","../../../packages/token-adapter/src/utils.ts","../../../packages/token-adapter/src/ICRC2.ts","../../../packages/token-adapter/src/index.ts","../../../packages/token-adapter/src/types.ts","../../../packages/tokens/src/wicp.ts","../../../packages/tokens/src/icp.ts","../../../packages/tokens/src/ics.ts","../../../packages/tokens/src/ghost.ts","../../../packages/tokens/src/ckBTC.ts","../../../packages/tokens/src/ckUSDC.ts","../../../packages/tokens/src/erc20/usdc.ts","../../../packages/tokens/src/erc20/link.ts","../../../packages/tokens/src/ckETH.ts","../../../packages/tokens/src/ckLink.ts","../../../packages/tokens/src/bob.ts","../../../packages/types/src/global.ts","../../../packages/types/src/staking-token.ts","../../../packages/types/src/token.ts","../../../packages/ui/src/components/Breadcrumbs.tsx","../../../packages/ui/src/components/Grid/Flex.tsx","../../../packages/ui/src/components/Loading/LoadingRow.tsx","../../../packages/ui/src/components/MainCard.tsx","../../../packages/ui/src/components/Mui.tsx","../../../packages/ui/src/assets/icons/NoData.tsx","../../../packages/ui/src/components/NoData.tsx","../../../packages/ui/src/components/Select/DropDownMenu.tsx","../../../packages/ui/src/components/Select/Panel.tsx","../../../packages/ui/src/components/Select/Select.tsx","../../../packages/ui/src/components/TextButton.tsx","../../../packages/ui/src/components/Tooltip.tsx","../../../packages/ui/src/components/button/SmallButton.tsx","../../../packages/ui/src/components/button/MaxButton.tsx","../../../packages/ui/src/components/menu/MenuWrapper.tsx","../../../packages/utils/src/availableArgsNull.ts","../../../packages/utils/src/enumToString.ts","../../../packages/utils/src/explorerLink.ts","../../../packages/utils/src/global.ts","../../../packages/utils/src/ic.ts","../../../packages/utils/src/isAvailablePageArgs.ts","../../../packages/utils/src/isBigIntMemo.ts","../../../packages/utils/src/isNullArgs.ts","../../../packages/utils/src/isPrincipal.ts","../../../packages/utils/src/isValidPrincipal.ts","../../../packages/utils/src/mockALink.ts","../../../packages/utils/src/number.ts","../../../packages/utils/src/numberToString.ts","../../../packages/utils/src/pageArgsFormat.ts","../../../packages/utils/src/principalToAccount.ts","../../../packages/utils/src/resultFormat.ts","../../../packages/utils/src/shorten.ts","../../../packages/utils/src/toSignificant.ts","../../../packages/utils/src/tokenAmount.ts","../webpack/bootstrap","../webpack/runtime/amd options","../webpack/runtime/chunk loaded","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/harmony module decorator","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/compat","../webpack/runtime/css loading","../webpack/runtime/jsonp chunk loading","../webpack/startup"],"sourcesContent":["var map = {\n\t\"./en-US.js\": [\n\t\t84270,\n\t\t1889\n\t],\n\t\"./ja-JP.js\": [\n\t\t64958,\n\t\t4958\n\t],\n\t\"./ko-KR.js\": [\n\t\t49704,\n\t\t9704\n\t],\n\t\"./vi-VN.js\": [\n\t\t78432,\n\t\t8432\n\t],\n\t\"./zh-CN.js\": [\n\t\t65348,\n\t\t5348\n\t],\n\t\"./zh-TW.js\": [\n\t\t52084,\n\t\t2084\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[1]).then(() => {\n\t\treturn __webpack_require__.t(id, 7 | 16);\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 5871;\nmodule.exports = webpackAsyncContext;","export const idlFactory = ({ IDL }: any) => {\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const CreatePoolArgs = IDL.Record({\n fee: IDL.Nat,\n sqrtPriceX96: IDL.Text,\n token0: Token,\n token1: Token,\n });\n const PoolData = IDL.Record({\n fee: IDL.Nat,\n key: IDL.Text,\n tickSpacing: IDL.Int,\n token0: Token,\n token1: Token,\n canisterId: IDL.Principal,\n });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result_1 = IDL.Variant({ ok: PoolData, err: Error });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Result_2 = IDL.Variant({ ok: CycleInfo, err: Error });\n const GetPoolArgs = IDL.Record({\n fee: IDL.Nat,\n token0: Token,\n token1: Token,\n });\n const Result = IDL.Variant({ ok: IDL.Vec(PoolData), err: Error });\n const SwapFactory = IDL.Service({\n createPool: IDL.Func([CreatePoolArgs], [Result_1], []),\n deletePool: IDL.Func([IDL.Text], [], []),\n getAccessControlState: IDL.Func(\n [],\n [\n IDL.Record({\n owners: IDL.Vec(IDL.Principal),\n clients: IDL.Vec(IDL.Principal),\n }),\n ],\n [],\n ),\n getAvailabilityState: IDL.Func(\n [],\n [\n IDL.Record({\n whiteList: IDL.Vec(IDL.Principal),\n available: IDL.Bool,\n }),\n ],\n [],\n ),\n getCycleInfo: IDL.Func([], [Result_2], []),\n getPool: IDL.Func([GetPoolArgs], [Result_1], []),\n getPools: IDL.Func([], [Result], [\"query\"]),\n getRemovedPools: IDL.Func([], [Result], [\"query\"]),\n removePool: IDL.Func([GetPoolArgs], [], []),\n setAvailable: IDL.Func([IDL.Bool], [], []),\n setClients: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n setOwnerToPool: IDL.Func([IDL.Text, IDL.Vec(IDL.Principal)], [], []),\n setOwners: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n setWhiteList: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n });\n return SwapFactory;\n};\n","import { actor, ActorName } from \"@icpswap/actor\";\n\nimport { _SERVICE as SwapFactory_update_call } from \"candid/swap/SwapFactory_update_call\";\nimport { idlFactory as SwapFactoryInterfaceFactory_update_call } from \"candid/swap/SwapFactory_update_call.did\";\n\nexport const swapFactory_update_call = () =>\n actor.create({\n actorName: ActorName.SwapFactory,\n idlFactory: SwapFactoryInterfaceFactory_update_call,\n });\n","import { SvgIcon, SvgIconProps } from \"@mui/material\";\n\nexport default function DialogCloseIcon(props: SvgIconProps) {\n return (\n \n \n \n \n );\n}\n","import { Typography, TypographyProps } from \"@mui/material\";\nimport { useTheme } from \"@mui/styles\";\nimport { Theme } from \"@mui/material/styles\";\nimport React from \"react\";\n\nexport interface SmallButtonProps {\n children: React.ReactNode;\n onClick: TypographyProps[\"onClick\"];\n background?: string;\n color?: string;\n}\n\nexport function SmallButton({ children, onClick, background }: SmallButtonProps) {\n const theme = useTheme() as Theme;\n\n return (\n \n {children}\n \n );\n}\n","import { TypographyProps } from \"@mui/material\";\nimport { Trans } from \"@lingui/macro\";\nimport { SmallButton } from \"./SmallButton\";\n\nexport interface MinButtonProps {\n onClick: TypographyProps[\"onClick\"];\n}\n\nexport function MinButton({ onClick }: MinButtonProps) {\n return (\n \n MIN\n \n );\n}\n","import copyToClipboard from \"copy-to-clipboard\";\nimport { ReactNode, forwardRef, useImperativeHandle, Ref } from \"react\";\nimport { Box } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { useTips, TIP_SUCCESS } from \"../../hooks/useTips\";\n\nconst useStyles = makeStyles({\n copy: {\n display: \"inline-block\",\n cursor: \"pointer\",\n },\n});\n\nexport interface CopyRef {\n copy: () => void;\n}\n\nexport default forwardRef(\n (\n { content, children, hide = false }: { content: string; children?: ReactNode; hide?: boolean },\n ref: Ref,\n ) => {\n const classes = useStyles();\n const [openTips] = useTips();\n\n const copy = () => {\n copyToClipboard(content);\n openTips(\"Copy Success\", TIP_SUCCESS);\n };\n\n useImperativeHandle(\n ref,\n () => ({\n copy,\n }),\n [copy],\n );\n\n return hide ? null : (\n \n {children}\n \n );\n },\n);\n","import React, { useMemo, useEffect } from \"react\";\nimport { useTheme, Typography, Box, Grid, useMediaQuery } from \"components/Mui\";\nimport { useTokenBalance } from \"hooks/token/useTokenBalance\";\nimport { useTokenInfo } from \"hooks/token/useTokenInfo\";\nimport { DotLoading, TokenImage } from \"components/index\";\nimport { TokenInfo } from \"types/token\";\nimport { useAccountPrincipal } from \"store/auth/hooks\";\nimport TokenStandardLabel from \"components/token/TokenStandardLabel\";\nimport { useUSDPriceById } from \"hooks/useUSDPrice\";\nimport {\n parseTokenAmount,\n formatDollarAmount,\n BigNumber,\n isValidPrincipal,\n toSignificantWithGroupSeparator,\n} from \"@icpswap/utils\";\nimport { PlusCircle } from \"react-feather\";\nimport { useTaggedTokenManager } from \"store/wallet/hooks\";\n\nexport interface TokenItemProps {\n canisterId: string;\n onClick?: (token: TokenInfo) => void;\n onUpdateTokenAdditional?: (tokenId: string, balance: string) => void;\n searchWord?: string;\n showBalance?: boolean;\n onTokenHide: (canisterId: string, hidden: boolean) => void;\n isActive?: boolean;\n isDisabled?: boolean;\n hidden?: boolean;\n}\n\nexport function TokenItem({\n canisterId,\n onClick,\n onUpdateTokenAdditional,\n searchWord,\n showBalance,\n onTokenHide,\n isActive,\n isDisabled,\n hidden,\n}: TokenItemProps) {\n const theme = useTheme();\n const principal = useAccountPrincipal();\n const matchDownSM = useMediaQuery(theme.breakpoints.down(\"sm\"));\n\n const getBalanceId = useMemo(() => {\n if (showBalance) return canisterId;\n return undefined;\n }, [showBalance, canisterId]);\n\n const { result: tokenInfo } = useTokenInfo(canisterId);\n const { result: balance, loading } = useTokenBalance(getBalanceId, principal);\n const interfacePrice = useUSDPriceById(getBalanceId);\n\n const { taggedTokens, updateTaggedTokens, deleteTaggedTokens } = useTaggedTokenManager();\n\n const tokenBalanceAmount = useMemo(() => {\n if (!tokenInfo || balance === undefined) return undefined;\n return toSignificantWithGroupSeparator(parseTokenAmount(balance, tokenInfo.decimals).toString(), 6);\n }, [tokenInfo, balance]);\n\n const handleItemClick = () => {\n if (!tokenInfo) return;\n if (onClick) onClick(tokenInfo);\n };\n\n useEffect(() => {\n if (canisterId && balance) {\n if (onUpdateTokenAdditional) onUpdateTokenAdditional(canisterId, balance.toString());\n }\n }, [canisterId, balance]);\n\n const isTagged = taggedTokens.includes(canisterId);\n\n const handleAddToCache = (event: React.MouseEvent) => {\n event.stopPropagation();\n\n if (isTagged) {\n deleteTaggedTokens([canisterId]);\n } else {\n updateTaggedTokens([canisterId]);\n }\n };\n\n const isHidden = useMemo(() => {\n if (hidden) return true;\n if (!searchWord) return false;\n if (!tokenInfo) return true;\n\n if (isValidPrincipal(searchWord)) {\n return tokenInfo?.canisterId.toString() !== searchWord;\n }\n\n return (\n !tokenInfo.symbol.toLocaleLowerCase().includes(searchWord.toLocaleLowerCase()) &&\n !tokenInfo.name.toLocaleLowerCase().includes(searchWord.toLocaleLowerCase())\n );\n }, [searchWord, tokenInfo, hidden]);\n\n useEffect(() => {\n if (onTokenHide && canisterId) {\n onTokenHide(canisterId, isHidden);\n }\n }, [isHidden, canisterId, onTokenHide]);\n\n return (\n \n \n \n \n\n \n \n \n \n {tokenInfo?.symbol}\n \n \n {tokenInfo?.name}\n \n \n \n \n \n \n\n \n \n \n\n \n \n {!showBalance ? null : loading ? (\n \n ) : (\n \n \n {tokenBalanceAmount ?? \"--\"}\n \n \n {interfacePrice !== undefined && balance !== undefined && tokenInfo !== undefined\n ? formatDollarAmount(\n new BigNumber(interfacePrice)\n .multipliedBy(parseTokenAmount(balance, tokenInfo.decimals))\n .toString(),\n 4,\n 0.001,\n )\n : \"--\"}\n \n \n )}\n\n {showBalance || isTagged ? null : (\n \n )}\n \n \n \n );\n}\n","import { Typography } from \"@mui/material\";\nimport { Flex, TokenImage } from \"components/index\";\nimport { useTheme } from \"components/Mui\";\nimport { ICP, ICS, ckBTC, ckETH, ckUSDC, BOB } from \"@icpswap/tokens\";\nimport { Token } from \"@icpswap/swap-sdk\";\nimport { TokenInfo } from \"types/token\";\nimport { useTokenInfo } from \"hooks/token\";\nimport { useCallback } from \"react\";\n\nconst BASE_TOKENS = [ICP, ICS, ckUSDC, ckBTC, ckETH, BOB];\n\nexport interface BaseTokenProps {\n token: Token;\n onTokenClick: (token: TokenInfo) => void;\n}\n\nexport function BaseToken({ token, onTokenClick }: BaseTokenProps) {\n const theme = useTheme();\n\n const { result: tokenInfo } = useTokenInfo(token.address);\n\n const handleClick = useCallback(() => {\n if (tokenInfo) {\n onTokenClick(tokenInfo);\n }\n }, [onTokenClick, tokenInfo]);\n\n return (\n \n \n \n {token.symbol}\n \n \n );\n}\n\nexport interface BaseTokensProps {\n onTokenClick: (token: TokenInfo) => void;\n}\n\nexport function BaseTokens({ onTokenClick }: BaseTokensProps) {\n return (\n \n {BASE_TOKENS.map((base_token) => (\n \n ))}\n \n );\n}\n","import { useState, useCallback, useMemo } from \"react\";\nimport SwapModal from \"components/modal/swap\";\nimport { InputAdornment, useTheme, Typography, Box, useMediaQuery, makeStyles } from \"components/Mui\";\nimport { useGlobalTokenList } from \"store/global/hooks\";\nimport { isDarkTheme } from \"utils/index\";\nimport { Trans, t } from \"@lingui/macro\";\nimport { FilledTextField, NoData } from \"components/index\";\nimport { TokenInfo } from \"types/token\";\nimport { isValidPrincipal } from \"@icpswap/utils\";\nimport { Search as SearchIcon } from \"react-feather\";\nimport { DEFAULT_DISPLAYED_TOKENS } from \"constants/wallet\";\nimport { useFetchSnsAllTokensInfo } from \"store/sns/hooks\";\nimport { TokenListMetadata } from \"types/token-list\";\nimport { useTaggedTokenManager } from \"store/wallet/hooks\";\nimport { ImportToken } from \"components/ImportToken/index\";\nimport { useDebouncedChangeHandler } from \"@icpswap/hooks\";\n\nimport { TokenItem } from \"./TokenItem\";\nimport { BaseTokens } from \"./BaseToken\";\n\nconst useStyles = makeStyles(() => {\n return {\n wrapper: {\n padding: \"0 24px\",\n \"@media(max-width: 640px)\": {\n padding: \"0 16px\",\n },\n },\n };\n});\n\nexport interface SelectorProps {\n open: boolean;\n onChange: (token: TokenInfo) => void;\n onClose: () => void;\n disabledCurrencyIds?: string[];\n activeCurrencyIds?: string[];\n}\n\nexport default function Selector({\n open,\n onChange,\n onClose,\n disabledCurrencyIds = [],\n activeCurrencyIds = [],\n}: SelectorProps) {\n const theme = useTheme();\n const isDark = isDarkTheme(theme);\n const classes = useStyles();\n\n const matchDownSM = useMediaQuery(theme.breakpoints.down(\"sm\"));\n const [searchKeyword, setSearchKeyword] = useState(\"\");\n const [importTokenCanceled, setImportTokenCanceled] = useState(false);\n const [hiddenCanisterIds, setHiddenCanisterIds] = useState([]);\n\n const { result: snsAllTokensInfo } = useFetchSnsAllTokensInfo();\n const globalTokenList = useGlobalTokenList();\n\n const { taggedTokens } = useTaggedTokenManager();\n\n const yourTokens: string[] = useMemo(() => {\n return [...new Set(DEFAULT_DISPLAYED_TOKENS.map((e) => e.address).concat(taggedTokens))];\n }, [DEFAULT_DISPLAYED_TOKENS, taggedTokens]);\n\n const { snsTokens, noneSnsTokens } = useMemo(() => {\n if (!snsAllTokensInfo) return {};\n\n const snsTokens: TokenListMetadata[] = [];\n const noneSnsTokens: TokenListMetadata[] = [];\n\n globalTokenList\n .filter((token) => {\n return !yourTokens.includes(token.canisterId);\n })\n .forEach((token) => {\n const snsTokenInfo = snsAllTokensInfo.find((e) => e.canister_ids.ledger_canister_id === token.canisterId);\n\n if (snsTokenInfo?.canister_ids.root_canister_id) {\n snsTokens.push(token);\n } else {\n noneSnsTokens.push(token);\n }\n });\n\n return { snsTokens: snsTokens.map((e) => e.canisterId), noneSnsTokens: noneSnsTokens.map((e) => e.canisterId) };\n }, [globalTokenList, yourTokens, snsAllTokensInfo]);\n\n const handleTokenClick = useCallback(\n (token: TokenInfo) => {\n if (disabledCurrencyIds.includes(token?.canisterId.toString())) return;\n if (onChange) onChange(token);\n },\n [disabledCurrencyIds],\n );\n\n const handleSearchToken = useCallback((value: string) => {\n setImportTokenCanceled(false);\n setSearchKeyword(value);\n }, []);\n\n const [, debouncedSearch] = useDebouncedChangeHandler(searchKeyword, handleSearchToken, 300);\n\n const showImportToken = useMemo(() => {\n if (!searchKeyword || !yourTokens || !noneSnsTokens || !snsTokens) return false;\n\n if (isValidPrincipal(searchKeyword)) {\n return !yourTokens.concat(noneSnsTokens).concat(snsTokens).includes(searchKeyword);\n }\n\n return false;\n }, [searchKeyword, yourTokens, noneSnsTokens, snsTokens]);\n\n const handleTokenHidden = (canisterId: string, hidden: boolean) => {\n const index = hiddenCanisterIds.indexOf(canisterId);\n\n if (index !== -1) {\n if (!hidden) {\n setHiddenCanisterIds((prevState) => {\n const newCanisterIds = [...prevState];\n newCanisterIds.splice(index, 1);\n return [...newCanisterIds];\n });\n }\n return;\n }\n\n if (hidden) {\n setHiddenCanisterIds((prevState) => {\n const newCanisterIds = [...prevState, canisterId];\n return [...newCanisterIds];\n });\n }\n };\n\n const allTokenCanisterIds = useMemo(() => {\n return [...new Set([...yourTokens, ...(snsTokens ?? []), ...(noneSnsTokens ?? [])])];\n }, [yourTokens, snsTokens, noneSnsTokens]);\n\n const noData = useMemo(() => {\n return hiddenCanisterIds.length === allTokenCanisterIds.length && showImportToken === false;\n }, [hiddenCanisterIds, allTokenCanisterIds, showImportToken]);\n\n return (\n <>\n \n \n \n \n Do your own research before investing. While we've collected known information about tokens on the list,\n it's essential to conduct your research.\n \n \n\n \n \n \n \n ),\n maxLength: 50,\n }}\n onChange={debouncedSearch}\n />\n \n\n \n\n \n\n \n {noData ? : null}\n\n {showImportToken && searchKeyword && isValidPrincipal(searchKeyword) && !importTokenCanceled ? (\n \n setImportTokenCanceled(true)} />\n \n ) : null}\n\n \n {searchKeyword ? null : (\n \n \n Your Tokens\n \n \n )}\n\n \n {(yourTokens ?? []).map((tokenId) => (\n \n ))}\n \n \n\n \n {searchKeyword || (snsTokens ?? []).concat(noneSnsTokens ?? []).length === 0 ? null : (\n \n Token List\n \n )}\n\n \n {searchKeyword || (snsTokens ?? []).length === 0 ? null : (\n \n SNS Tokens\n \n )}\n\n \n {(snsTokens ?? []).map((tokenId) => (\n \n ))}\n \n \n\n \n {searchKeyword || (noneSnsTokens ?? []).length === 0 ? null : (\n \n Other Tokens\n \n )}\n\n \n {(noneSnsTokens ?? []).map((tokenId) => (\n \n ))}\n \n \n \n \n \n \n \n );\n}\n","import { Avatar, AvatarProps } from \"@mui/material\";\n\nexport default function AvatarImage(props: AvatarProps) {\n return (\n \n  \n \n );\n}\n","import { SvgIcon, SvgIconProps } from \"@mui/material\";\n\nexport function SnsIcon(props: SvgIconProps) {\n return (\n \n \n \n );\n}\n","import { Avatar, Box, SxProps } from \"@mui/material\";\nimport { SnsIcon } from \"../assets/icons/SNS\";\n\nexport interface TokenImageProps {\n logo: string | undefined | null;\n size?: string;\n sns?: boolean;\n sx?: SxProps;\n}\n\nexport function TokenImage({ logo, size, sx, sns }: TokenImageProps) {\n return (\n \n \n  \n \n\n {sns ? (\n \n ) : null}\n \n );\n}\n","import { TokenImage as UITokenImage } from \"@icpswap/ui\";\nimport { useSNSTokenRootId } from \"hooks/token/useSNSTokenRootId\";\nimport { SxProps } from \"@mui/material\";\nimport { Null } from \"@icpswap/types\";\n\nexport interface TokenImageProps {\n logo: string | undefined;\n size?: string;\n tokenId?: string | Null;\n sx?: SxProps;\n}\n\nexport function TokenImage({ tokenId, logo, sx, size = \"28px\" }: TokenImageProps) {\n const root_canister_id = useSNSTokenRootId(tokenId);\n\n return ;\n}\n","import { Avatar, AvatarProps } from \"components/Mui\";\n\nexport function Image(props: AvatarProps) {\n return (\n \n  \n \n );\n}\n","import { Connector } from \"constants/wallet\";\nimport { useConnectorType } from \"store/auth/hooks\";\n\nimport { Image } from \"./Image\";\n\nconst ConnectorIcon: { [key: string]: string } = {\n [Connector.IC]: \"/images/connect/InternetIdentity.svg\",\n [Connector.ME]: \"/images/connect/AstroX.svg\",\n [Connector.ICPSwap]: \"/images/connect/icpswap.svg\",\n [Connector.INFINITY]: \"/images/connect/Infinity.svg\",\n [Connector.Metamask]: \"/images/connect/metamask.svg\",\n [Connector.NFID]: \"/images/connect/NFID.svg\",\n [Connector.PLUG]: \"/images/connect/Plug.svg\",\n [Connector.STOIC]: \"/images/connect/stoic.svg\",\n};\n\nexport interface AddressSectionProps {\n size?: string;\n}\n\nexport function ConnectorImage({ size = \"20px\" }: AddressSectionProps) {\n const connector = useConnectorType();\n\n return connector ? : null;\n}\n","import { useTheme, Typography, Box, makeStyles, Theme, CircularProgress } from \"components/Mui\";\nimport { Trans } from \"@lingui/macro\";\nimport { useCallback, useState } from \"react\";\nimport { getTokenStandard } from \"hooks/token/index\";\nimport { isNullArgs } from \"@icpswap/utils\";\nimport { useUpdateTokenStandard } from \"store/token/cache/hooks\";\nimport { registerTokens } from \"@icpswap/token-adapter\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n button: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n width: \"140px\",\n height: \"40px\",\n borderRadius: \"8px\",\n background: theme.palette.background.level1,\n cursor: \"pointer\",\n },\n };\n});\n\nexport interface ImportTokenTipProps {\n onOk: () => void;\n onNo: () => void;\n canisterId: string;\n}\n\nexport function ImportTokenTip({ canisterId, onOk }: ImportTokenTipProps) {\n const theme = useTheme();\n const classes = useStyles();\n const updateTokenStandard = useUpdateTokenStandard();\n\n const [noStandard, setNoStandard] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const handleImport = useCallback(async () => {\n if (loading) return;\n setLoading(true);\n const standard = await getTokenStandard({ canisterId });\n\n if (isNullArgs(standard)) {\n setNoStandard(true);\n } else {\n updateTokenStandard([{ canisterId, standard }]);\n registerTokens([{ canisterId, standard }]);\n onOk();\n }\n setLoading(false);\n }, [canisterId, updateTokenStandard, loading]);\n\n return (\n \n \n The token is not found in the list, do you want to import it?\n \n\n {noStandard ? (\n \n No standard found for this token\n \n ) : null}\n\n \n \n \n Yes\n \n {loading ? : null}\n \n \n \n );\n}\n","import { useState } from \"react\";\nimport { Button, Box, Typography, Checkbox, Avatar, useTheme } from \"components/Mui\";\nimport { Modal, TextButton } from \"components/index\";\nimport { Trans, t } from \"@lingui/macro\";\nimport TokenStandardLabel from \"components/token/TokenStandardLabel\";\nimport { TOKEN_STANDARD } from \"@icpswap/token-adapter\";\nimport { getTokenStandard } from \"store/token/cache/hooks\";\nimport { useSuccessTip } from \"hooks/useTips\";\nimport { INFO_URL } from \"constants/index\";\nimport { useTaggedTokenManager } from \"store/wallet/hooks\";\nimport { useToken } from \"hooks/index\";\nimport { Flex } from \"@icpswap/ui\";\n\nexport function WarningIcon() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport interface ImportTokenModalProps {\n open: boolean;\n canisterId: string;\n onClose: () => void;\n onImportSuccessfully?: () => void;\n}\n\nexport function ConfirmImport({ canisterId, open, onClose, onImportSuccessfully }: ImportTokenModalProps) {\n const theme = useTheme();\n const [riskWarning, setRiskWarning] = useState(false);\n\n const { updateTaggedTokens } = useTaggedTokenManager();\n const [openSuccessTip] = useSuccessTip();\n\n const [, token] = useToken(canisterId);\n\n const handleConfirm = () => {\n if (!token) return;\n\n openSuccessTip(t`Imported successfully`);\n updateTaggedTokens([canisterId]);\n if (onImportSuccessfully) onImportSuccessfully();\n onClose();\n };\n\n let error = \"\";\n if (!getTokenStandard(canisterId)) error = t`No token standard.`;\n\n return (\n \n \n \n \n  \n \n\n \n \n {token?.symbol}({token?.name})\n \n \n {canisterId}\n \n\n \n \n \n\n \n \n View On Info\n \n \n \n \n\n \n \n \n \n \n \n \n Anyone can create a token on Internet Computer with any name and LOGO, including creating fake versions\n of existing tokens and tokens that claim to represent projects that do not have a token.\n \n \n\n \n \n These risks are always present. If you purchase these fake tokens, it may result in a loss of assets.\n Please DYOR before investing!\n \n \n \n \n\n \n {\n setRiskWarning(checked);\n }}\n sx={{\n padding: \"0\",\n }}\n />\n\n setRiskWarning(!riskWarning)}>\n I have read the risk warning carefully and agree to take the risk myself\n \n \n \n\n \n \n \n \n );\n}\n","import { useState } from \"react\";\n\nimport { ImportTokenTip } from \"./steps/Tip\";\nimport { ConfirmImport } from \"./steps/Confirm\";\n\nexport interface ImportTokenProps {\n canisterId: string;\n onCancel: () => void;\n onImportSuccessfully?: () => void;\n}\n\nexport function ImportToken({ canisterId, onCancel, onImportSuccessfully }: ImportTokenProps) {\n const [step, setStep] = useState(0);\n\n return (\n <>\n {step === 0 ? setStep(1)} onNo={onCancel} /> : null}\n {step === 1 ? (\n setStep(0)}\n onImportSuccessfully={onImportSuccessfully}\n />\n ) : null}\n \n );\n}\n","import React, { useEffect, useState, useRef, forwardRef, useImperativeHandle } from \"react\";\nimport { TextField, Typography, Box, Menu, MenuItem, makeStyles, Theme } from \"components/Mui\";\nimport KeyboardArrowDownIcon from \"@mui/icons-material/KeyboardArrowDown\";\nimport { Flex, NoData } from \"@icpswap/ui\";\n\ninterface UseStylesProps {\n contained: boolean;\n fullHeight?: boolean;\n borderRadius: string;\n label: boolean;\n border?: string | boolean;\n multiline?: boolean;\n background?: string | \"level3\";\n inputPadding?: string;\n}\n\nconst useStyles = ({\n inputPadding,\n contained,\n background,\n fullHeight,\n multiline,\n borderRadius,\n label,\n border,\n}: UseStylesProps) => {\n return makeStyles((theme: Theme) => {\n return {\n inputBox: {\n display: label && contained ? \"block\" : \"flex\",\n alignItems: \"center\",\n border: contained\n ? border ?? theme.palette.border.normal\n : border === true\n ? theme.palette.border.normal\n : border === \"border0\"\n ? theme.palette.border.border0\n : \"none\",\n background: background\n ? background === \"level3\"\n ? theme.palette.background.level3\n : background\n : theme.palette.background.level4,\n borderRadius,\n padding: inputPadding ?? (contained ? `7px 12px` : \"3px 12px\"),\n gap: \"0 5px\",\n height: contained || multiline ? \"auto\" : fullHeight ? \"100%\" : \"48px\",\n ...(multiline ? { minHeight: \"48px\" } : {}),\n margin: label ? \"12px 0 0 0\" : \"0\",\n \"@media(max-width: 640px)\": {\n padding: inputPadding ?? contained ? `4px 6px` : \"0 6px\",\n },\n \"& input\": {\n color: theme.palette.text.primary,\n },\n \"&:hover\": {\n borderColor: \"#ffffff\",\n },\n },\n };\n });\n};\n\nexport type FilledTextFiledMenus = {\n label: string;\n value: any;\n};\n\nexport interface FilledTextFieldProps {\n label?: string | React.ReactNode;\n value?: any;\n select?: boolean;\n onChange?: (value: any) => void;\n onFocus?: () => void;\n required?: boolean;\n menus?: FilledTextFiledMenus[];\n maxWidth?: number;\n fullHeight?: boolean;\n disabled?: boolean;\n InputProps?: any;\n contained?: boolean;\n CustomNoData?: React.ReactNode;\n placeholder?: string;\n type?: string;\n menuDisabled?: (value: FilledTextFiledMenus) => boolean;\n helperText?: string;\n multiline?: boolean;\n borderRadius?: string;\n border?: string | boolean;\n labelSize?: string;\n fontSize?: string;\n placeholderSize?: string;\n background?: string;\n inputPadding?: string;\n [x: string]: any;\n}\n\nexport interface FilledTextFieldLabelProps {\n label?: React.ReactNode;\n required?: boolean;\n labelSize?: string;\n}\n\nexport function FilledTextFieldLabel({ label, required, labelSize = \"16px\" }: FilledTextFieldLabelProps) {\n return (\n \n {required && (\n \n *\n \n )}\n\n \n {label}\n \n \n );\n}\n\ninterface ValueProps {\n helperText?: string;\n select?: boolean;\n value?: any;\n menus?: FilledTextFiledMenus[];\n}\n\nfunction Value({ select, value, menus = [], helperText }: ValueProps) {\n return (\n <>\n \n {select ? menus.filter((menu) => menu.value === value)[0]?.label ?? value : value}\n \n {helperText ? (\n \n {helperText}\n \n ) : null}\n \n );\n}\n\nfunction FilledTextField(\n {\n label,\n value,\n select,\n onChange,\n required,\n menus = [],\n maxWidth,\n fullHeight,\n disabled,\n InputProps,\n borderRadius = \"8px\",\n contained = false,\n CustomNoData,\n menuDisabled,\n helperText,\n multiline,\n onFocus,\n border,\n background,\n labelSize,\n inputPadding,\n ...props\n }: FilledTextFieldProps,\n ref,\n) {\n const classes = useStyles({\n inputPadding,\n contained,\n background,\n fullHeight,\n borderRadius,\n border,\n label: !!label,\n multiline,\n })();\n const [anchorEl, setAnchorEl] = useState(null);\n const inputRef = useRef(null);\n const outerBoxRef = useRef(null);\n const [menuWidth, setMenuWidth] = useState(undefined);\n\n const handleOuterBoxClick = (event: any) => {\n if (disabled) return;\n if (select) {\n setAnchorEl(event.currentTarget);\n } else {\n inputRef?.current?.focus();\n }\n };\n\n const focus = () => {\n inputRef?.current?.focus();\n };\n\n useImperativeHandle(\n ref,\n () => ({\n focus,\n }),\n [focus],\n );\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n useEffect(() => {\n const width = outerBoxRef?.current?.clientWidth;\n setMenuWidth(width ?? undefined);\n }, []);\n\n const handleMenuItemClick = ({ value }: { value: any }) => {\n if (onChange) onChange(value);\n setAnchorEl(null);\n };\n\n return (\n \n {label ? : null}\n \n <>\n {contained && }\n \n {!select ? (\n onChange && onChange(value)}\n value={value}\n multiline={multiline}\n InputProps={{\n disableUnderline: true,\n ...(InputProps || {}),\n }}\n fullWidth\n disabled={disabled}\n helperText={helperText}\n onFocus={onFocus}\n autoComplete=\"off\"\n spellCheck={false}\n />\n ) : value ? (\n \n ) : (\n \n {props.placeholder}\n \n )}\n {select && }\n \n \n \n\n {Boolean(anchorEl) && (\n \n {menus.map((menu, index) => (\n {\n if (!!menuDisabled && menuDisabled(menu)) return;\n handleMenuItemClick(menu);\n }}\n >\n {menu.label}\n \n ))}\n {menus.length === 0 ? CustomNoData || : null}\n \n )}\n \n );\n}\n\nexport default forwardRef(FilledTextField);\n","import { Grid, Box, useTheme } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport LoadingImage from \"assets/images/loading.png\";\nimport { Theme } from \"@mui/material/styles\";\n\nconst useStyles = makeStyles(() => {\n return {\n loadingContainer: {\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n minHeight: \"140px\",\n paddingTop: \"56px\",\n overflow: \"hidden\",\n },\n mask: {\n position: \"absolute\",\n top: \"56px\",\n left: 0,\n width: \"100%\",\n height: \"100%\",\n opacity: 0.2,\n },\n };\n});\n\nexport interface ListLoadingProps {\n loading: boolean;\n mask?: boolean;\n maskBackground?: string;\n}\n\nexport default function ListLoading({ loading, mask = true, maskBackground }: ListLoadingProps) {\n const classes = useStyles();\n const theme = useTheme() as Theme;\n\n return loading ? (\n \n \n \"\"\n \n ) : null;\n}\n","import { Grid, Box } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport LoadingImage from \"assets/images/loading.png\";\nimport { Theme } from \"@mui/material/styles\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n loadingContainer: {\n position: \"relative\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n minHeight: \"300px\",\n overflow: \"hidden\",\n },\n mask: {\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n background: theme.palette.loading.background,\n opacity: 0.3,\n },\n };\n});\n\nexport interface ImageLoadingProps {\n loading: boolean;\n mask?: boolean;\n}\n\nexport default ({ loading, mask = false }: ImageLoadingProps) => {\n const classes = useStyles();\n\n return loading ? (\n \n \n \"\"\n \n ) : null;\n};\n","import { Grid, CircularProgress, Box } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { Theme } from \"@mui/material/styles\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n loadingContainer: {\n position: \"absolute\",\n top: 0,\n left: 0,\n width: \"100%\",\n height: \"100%\",\n overflow: \"hidden\",\n },\n mask: {\n position: \"absolute\",\n left: 0,\n width: \"100%\",\n height: \"100%\",\n background: theme.palette.loading.background,\n opacity: 0.7,\n },\n };\n});\n\nexport default ({\n loading,\n circularSize = 40,\n maskBorderRadius,\n}: {\n loading: boolean;\n circularSize?: number;\n maskBorderRadius?: string;\n}) => {\n const classes = useStyles();\n\n return loading ? (\n \n \n \n \n ) : null;\n};\n","var _ellipse, _rect, _rect2, _rect3, _g, _rect4, _rect5, _g2, _path, _rect6, _path2, _g3, _rect7, _path3, _path4, _path5, _path6, _circle, _path7, _path8, _path9, _path10, _circle2, _path11, _path12, _path13, _path14, _g4, _path15, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgMaintenance(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 370,\n height: 262,\n viewBox: \"0 0 370 262\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _ellipse || (_ellipse = /*#__PURE__*/React.createElement(\"ellipse\", {\n cx: 194.08,\n cy: 199.187,\n rx: 157.761,\n ry: 24.4018,\n fill: \"#0B0E3E\"\n })), _rect || (_rect = /*#__PURE__*/React.createElement(\"rect\", {\n x: 82.3706,\n y: 27,\n width: 16.2469,\n height: 165.516,\n rx: 2,\n fill: \"#FFD997\"\n })), _rect2 || (_rect2 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 58,\n y: 46.4883,\n width: 105.605,\n height: 37.8092,\n rx: 4,\n fill: \"#5C78E5\"\n })), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask0_34729_22996\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 58,\n y: 46,\n width: 106,\n height: 39\n }, _rect3 || (_rect3 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 58,\n y: 46.4883,\n width: 105.605,\n height: 37.8092,\n rx: 4,\n fill: \"#D9D9D9\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask0_34729_22996)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M104.936 41.2734H127.1L99.7207 90.8166H77.5566L104.936 41.2734Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M55.3923 41.2734H77.5563L50.1772 90.8166H28.0132L55.3923 41.2734Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M154.479 41.2734H176.643L149.264 90.8166H127.1L154.479 41.2734Z\",\n fill: \"white\"\n }))), _rect4 || (_rect4 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 58,\n y: 106.465,\n width: 105.605,\n height: 37.8092,\n rx: 4,\n fill: \"#5C78E5\"\n })), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask1_34729_22996\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 58,\n y: 106,\n width: 106,\n height: 39\n }, _rect5 || (_rect5 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 58,\n y: 106.465,\n width: 105.605,\n height: 37.8092,\n rx: 4,\n fill: \"#D9D9D9\"\n }))), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask1_34729_22996)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M104.936 101.25H127.1L99.7207 150.793H77.5566L104.936 101.25Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M55.3923 101.25H77.5563L50.1772 150.793H28.0132L55.3923 101.25Z\",\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M154.479 101.25H176.643L149.264 150.793H127.1L154.479 101.25Z\",\n fill: \"white\"\n }))), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M265.491 70.5446C268.117 63.6984 277.803 63.6984 280.429 70.5446L323.466 182.731H222.454L265.491 70.5446Z\",\n fill: \"#ED9F18\"\n })), _rect6 || (_rect6 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 209.969,\n y: 178.125,\n width: 125.982,\n height: 12.8117,\n rx: 3,\n fill: \"#ED9F18\"\n })), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask2_34729_22996\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 222,\n y: 65,\n width: 102,\n height: 118\n }, _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M265.491 70.5446C268.117 63.6984 277.803 63.6984 280.429 70.5446L323.466 182.731H222.454L265.491 70.5446Z\",\n fill: \"#5C78E5\"\n }))), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask2_34729_22996)\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n x: 215.581,\n y: 105.523,\n width: 106.776,\n height: 20.2852,\n fill: \"white\"\n }), /*#__PURE__*/React.createElement(\"rect\", {\n x: 214.676,\n y: 136.484,\n width: 106.776,\n height: 20.2852,\n fill: \"white\"\n }))), _rect7 || (_rect7 = /*#__PURE__*/React.createElement(\"rect\", {\n x: 22.6997,\n y: 51.0742,\n width: 341.626,\n height: 192.945,\n fill: \"url(#pattern0)\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M186.27 116.333C186.27 118.88 184.749 121.301 182.055 123.13C179.366 124.954 175.595 126.115 171.381 126.115C167.166 126.115 163.396 124.954 160.707 123.13C158.012 121.301 156.491 118.88 156.491 116.333C156.491 113.786 158.012 111.365 160.707 109.536C163.396 107.712 167.166 106.551 171.381 106.551C175.595 106.551 179.366 107.712 182.055 109.536C184.749 111.365 186.27 113.786 186.27 116.333Z\",\n fill: \"white\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M186.27 116.333C186.27 118.88 184.749 121.301 182.055 123.13C179.366 124.954 175.595 126.115 171.381 126.115C167.166 126.115 163.396 124.954 160.707 123.13C158.012 121.301 156.491 118.88 156.491 116.333C156.491 113.786 158.012 111.365 160.707 109.536C163.396 107.712 167.166 106.551 171.381 106.551C175.595 106.551 179.366 107.712 182.055 109.536C184.749 111.365 186.27 113.786 186.27 116.333Z\",\n fill: \"white\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M186.27 116.333C186.27 118.88 184.749 121.301 182.055 123.13C179.366 124.954 175.595 126.115 171.381 126.115C167.166 126.115 163.396 124.954 160.707 123.13C158.012 121.301 156.491 118.88 156.491 116.333C156.491 113.786 158.012 111.365 160.707 109.536C163.396 107.712 167.166 106.551 171.381 106.551C175.595 106.551 179.366 107.712 182.055 109.536C184.749 111.365 186.27 113.786 186.27 116.333Z\",\n fill: \"white\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M186.27 116.333C186.27 118.88 184.749 121.301 182.055 123.13C179.366 124.954 175.595 126.115 171.381 126.115C167.166 126.115 163.396 124.954 160.707 123.13C158.012 121.301 156.491 118.88 156.491 116.333C156.491 113.786 158.012 111.365 160.707 109.536C163.396 107.712 167.166 106.551 171.381 106.551C175.595 106.551 179.366 107.712 182.055 109.536C184.749 111.365 186.27 113.786 186.27 116.333Z\",\n stroke: \"#29006F\",\n strokeWidth: 2\n })), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 175.921,\n cy: 116.899,\n r: 4.53988,\n fill: \"black\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M235.074 116.333C235.074 118.88 233.553 121.301 230.859 123.13C228.17 124.954 224.399 126.115 220.184 126.115C215.97 126.115 212.199 124.954 209.51 123.13C206.816 121.301 205.295 118.88 205.295 116.333C205.295 113.786 206.816 111.365 209.51 109.536C212.199 107.712 215.97 106.551 220.184 106.551C224.399 106.551 228.17 107.712 230.859 109.536C233.553 111.365 235.074 113.786 235.074 116.333Z\",\n fill: \"white\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M235.074 116.333C235.074 118.88 233.553 121.301 230.859 123.13C228.17 124.954 224.399 126.115 220.184 126.115C215.97 126.115 212.199 124.954 209.51 123.13C206.816 121.301 205.295 118.88 205.295 116.333C205.295 113.786 206.816 111.365 209.51 109.536C212.199 107.712 215.97 106.551 220.184 106.551C224.399 106.551 228.17 107.712 230.859 109.536C233.553 111.365 235.074 113.786 235.074 116.333Z\",\n fill: \"white\"\n })), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M235.074 116.333C235.074 118.88 233.553 121.301 230.859 123.13C228.17 124.954 224.399 126.115 220.184 126.115C215.97 126.115 212.199 124.954 209.51 123.13C206.816 121.301 205.295 118.88 205.295 116.333C205.295 113.786 206.816 111.365 209.51 109.536C212.199 107.712 215.97 106.551 220.184 106.551C224.399 106.551 228.17 107.712 230.859 109.536C233.553 111.365 235.074 113.786 235.074 116.333Z\",\n fill: \"white\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M235.074 116.333C235.074 118.88 233.553 121.301 230.859 123.13C228.17 124.954 224.399 126.115 220.184 126.115C215.97 126.115 212.199 124.954 209.51 123.13C206.816 121.301 205.295 118.88 205.295 116.333C205.295 113.786 206.816 111.365 209.51 109.536C212.199 107.712 215.97 106.551 220.184 106.551C224.399 106.551 228.17 107.712 230.859 109.536C233.553 111.365 235.074 113.786 235.074 116.333Z\",\n stroke: \"#29006F\",\n strokeWidth: 2\n })), _circle2 || (_circle2 = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 224.724,\n cy: 116.899,\n r: 4.53988,\n fill: \"black\"\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M115 243.732C115 239.88 118.122 236.758 121.974 236.758H258.717C263.095 236.758 266.391 240.746 265.566 245.046C264.935 248.331 262.062 250.705 258.717 250.705H121.974C118.122 250.705 115 247.583 115 243.732Z\",\n fill: \"white\",\n stroke: \"#29006F\",\n strokeWidth: 2\n })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M164.534 153.533C165.225 150.306 168.077 148 171.378 148H283.857C288.313 148 291.635 152.109 290.702 156.467L275.36 228.062C274.273 233.134 269.791 236.758 264.604 236.758H146.7L164.534 153.533Z\",\n fill: \"white\",\n stroke: \"#29006F\",\n strokeWidth: 2\n })), _path13 || (_path13 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M290.699 156.468L291.677 156.678L290.699 156.468ZM275.34 228.065L274.363 227.855L275.34 228.065ZM163.473 218.162L163.263 219.14L165.219 219.56L165.428 218.582L163.473 218.162ZM178.36 153.532L179.338 153.742L178.36 153.532ZM183.989 235.758C183.437 235.758 182.989 236.205 182.989 236.758C182.989 237.31 183.437 237.758 183.989 237.758V235.758ZM185.204 149H283.854V147H185.204V149ZM289.721 156.258L274.363 227.855L276.318 228.275L291.677 156.678L289.721 156.258ZM165.428 218.582L179.338 153.742L177.382 153.322L163.473 218.162L165.428 218.582ZM264.585 235.758H183.989V237.758H264.585V235.758ZM274.363 227.855C273.374 232.465 269.3 235.758 264.585 235.758V237.758C270.243 237.758 275.132 233.806 276.318 228.275L274.363 227.855ZM283.854 149C287.675 149 290.522 152.523 289.721 156.258L291.677 156.678C292.745 151.697 288.948 147 283.854 147V149ZM185.204 147C181.432 147 178.173 149.634 177.382 153.322L179.338 153.742C179.931 150.976 182.375 149 185.204 149V147Z\",\n fill: \"#29006F\"\n })), /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask3_34729_22996\",\n style: {\n maskType: \"alpha\"\n },\n maskUnits: \"userSpaceOnUse\",\n x: 165,\n y: 149,\n width: 125,\n height: 88\n }, _path14 || (_path14 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"M282.587 149.266H186.173C182.873 149.266 180.021 151.571 179.329 154.797L165.719 218.244L184.87 236.266H263.694C268.88 236.266 273.362 232.644 274.45 227.573L289.431 157.734C290.366 153.376 287.044 149.266 282.587 149.266Z\",\n fill: \"#D9D9D9\"\n }))), _g4 || (_g4 = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask3_34729_22996)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M184.647 200.413C174.534 200.413 172.46 179.623 174.534 167.668L179.98 130.246L315.339 136.483L270.219 245.631C269.96 236.795 266.33 220.527 253.883 226.14C238.324 233.157 237.546 232.377 228.211 230.818C218.876 229.259 225.877 203.531 228.211 205.87C230.545 208.209 243.77 205.87 242.992 192.616C242.214 179.363 228.211 183.261 228.211 184.04C222.766 177.024 214.802 179.063 212.634 180.965C200.858 191.297 194.76 200.413 184.647 200.413Z\",\n fill: \"#F5EEFF\"\n }))), _path15 || (_path15 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M235.169 178.488C235.475 176.321 236.897 174.372 239.072 173.493C241.247 172.614 243.624 173.028 245.351 174.374C245.044 176.54 243.622 178.489 241.448 179.368C239.272 180.248 236.895 179.834 235.169 178.488Z\",\n fill: \"white\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"pattern\", {\n id: \"pattern0\",\n patternContentUnits: \"objectBoundingBox\",\n width: 1,\n height: 1\n }, /*#__PURE__*/React.createElement(\"use\", {\n xlinkHref: \"#image0_34729_22996\",\n transform: \"scale(0.000504032 0.000892434)\"\n })), /*#__PURE__*/React.createElement(\"image\", {\n id: \"image0_34729_22996\",\n width: 1984,\n height: 1121,\n xlinkHref: \"data:image/png;base64,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\"\n }))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgMaintenance);\nexport default __webpack_public_path__ + \"static/media/Maintenance.a6a1d18a659142ac130b45cddca3ba60.svg\";\nexport { ForwardRef as ReactComponent };","import { Grid, Box, Typography } from \"@mui/material\";\nimport MaintenanceSVG from \"assets/images/Maintenance.svg\";\nimport { Trans } from \"@lingui/macro\";\nimport { TextButton } from \"@icpswap/ui\";\n\nexport function Maintenance() {\n return (\n \n \n \n \n \n 🚧 Page Under Maintenance 🚧\n \n \"\"\n \n \n \n We are currently upgrading this page to enhance your experience.\n \n \n Thank you for your patience! Stay updated by following \n \n ICPSwap on Twitter.\n \n \n \n We appreciate your support and look forward to welcoming you back soon.\n \n \n \n \n \n \n \n );\n}\n","import createTheme from \"@mui/material/styles/createTheme\";\nimport { Theme } from \"@mui/material/styles\";\nimport useMuiTheme from \"@mui/styles/useTheme\";\n\nexport { default as Box, type BoxProps } from \"@mui/material/Box\";\nexport { default as Typography, type TypographyProps } from \"@mui/material/Typography\";\nexport { default as Grid, type GridProps } from \"@mui/material/Grid\";\nexport { default as SvgIcon, type SvgIconProps } from \"@mui/material/SvgIcon\";\nexport { default as Button, type ButtonProps } from \"@mui/material/Button\";\nexport { default as TextField, type TextFieldProps } from \"@mui/material/TextField\";\nexport { default as Fade, type FadeProps } from \"@mui/material/Fade\";\nexport { default as Collapse, type CollapseProps } from \"@mui/material/Collapse\";\nexport { default as Checkbox, type CheckboxProps } from \"@mui/material/Checkbox\";\nexport { default as MenuList, type MenuListProps } from \"@mui/material/MenuList\";\nexport { default as MenuItem } from \"@mui/material/MenuItem\";\nexport { default as Popper } from \"@mui/material/Popper\";\nexport { default as useMediaQuery } from \"@mui/material/useMediaQuery\";\nexport { default as CircularProgress } from \"@mui/material/CircularProgress\";\nexport { default as InputAdornment } from \"@mui/material/InputAdornment\";\nexport { default as Avatar, type AvatarProps } from \"@mui/material/Avatar\";\nexport { default as Link } from \"@mui/material/Link\";\nexport { default as makeStyles } from \"@mui/styles/makeStyles\";\nexport { default as Tooltip } from \"@mui/material/Tooltip\";\nexport { default as Chip } from \"@mui/material/Chip\";\nexport { default as ButtonBase } from \"@mui/material/ButtonBase\";\nexport { default as Drawer } from \"@mui/material/Drawer\";\nexport { default as Menu } from \"@mui/material/Menu\";\nexport { ClickAwayListener } from \"@mui/base/ClickAwayListener\";\nexport { keyframes } from \"@emotion/react\";\n\nexport function useTheme() {\n return useMuiTheme() as Theme;\n}\n\nexport type { Theme };\n\nexport { createTheme };\n","import { TextButton } from \"components/index\";\nimport { Typography } from \"@mui/material\";\nimport { useHistory } from \"react-router-dom\";\nimport { useCloseStep } from \"hooks/useStepCall\";\n\nexport interface ReclaimTipsProps {\n message: string | undefined;\n onReclaimClick?: () => void;\n tipKey: string | undefined;\n poolId?: string;\n tokenId?: string;\n}\n\nexport function ReclaimTips({ message, onReclaimClick, tipKey, poolId, tokenId }: ReclaimTipsProps) {\n const history = useHistory();\n\n const closeStep = useCloseStep();\n\n const handleClick = () => {\n const to = poolId\n ? `/swap/withdraw?type=pair&poolId=${poolId}`\n : tokenId\n ? `/swap/withdraw?type=token&tokenId=${tokenId}`\n : \"/swap/withdraw\";\n\n history.push(to);\n if (onReclaimClick) onReclaimClick();\n closeStep(tipKey);\n };\n\n const msg = message?.includes(\"please withdraw your unused token\") ? (\n <>\n {message.replace(\"please withdraw your unused token\", \"\")}.  Please{\" \"}\n check your balance in the Swap Pool to see if tokens have been\n transferred to the Swap Pool.\n \n ) : (\n <>\n {message}.  Please check your balance in the Swap Pool to see\n if tokens have been transferred to the Swap Pool.\n \n );\n\n return {msg};\n}\n","import { Box, Typography } from \"components/Mui\";\nimport { useEffect, useMemo, useState, ReactNode } from \"react\";\nimport { Select } from \"components/Select/ForToken\";\nimport { generateLogoUrl } from \"hooks/token/useTokenLogo\";\nimport { isValidPrincipal } from \"@icpswap/utils\";\nimport { TokenImage } from \"components/index\";\nimport { useAllTokensOfSwap } from \"@icpswap/hooks\";\nimport type { AllTokenOfSwapTokenInfo } from \"@icpswap/types\";\nimport { Principal } from \"@dfinity/principal\";\n\nimport type { MenuProps, StringifyAllTokenOfSwapTokenInfo } from \"./types\";\n\ninterface TokenMenuItemProps {\n tokenInfo: AllTokenOfSwapTokenInfo;\n symbol?: string;\n search?: string;\n color?: \"primary\" | \"secondary\";\n panel?: boolean;\n}\n\nfunction isTokenHide(tokenInfo: AllTokenOfSwapTokenInfo, search: string | undefined) {\n if (!!search && isValidPrincipal(search) && tokenInfo.ledger_id.toString() !== search) return true;\n if (\n !!search &&\n !!tokenInfo &&\n !tokenInfo.symbol.toLocaleLowerCase().includes(search.toLocaleLowerCase()) &&\n !tokenInfo.name.toLocaleLowerCase().includes(search.toLocaleLowerCase())\n )\n return true;\n return false;\n}\n\nfunction TokenMenuItem({ tokenInfo, symbol, search, color, panel }: TokenMenuItemProps) {\n const hide = useMemo(() => {\n return isTokenHide(tokenInfo, search);\n }, [search, tokenInfo]);\n\n return hide ? null : (\n \n \n \n {symbol ?? tokenInfo?.symbol ?? \"--\"}\n \n \n );\n}\n\nexport interface SelectTokenProps {\n border?: boolean;\n value?: string;\n onTokenChange?: (tokenId: string) => void;\n filter?: (tokenInfo: AllTokenOfSwapTokenInfo) => boolean;\n search?: boolean;\n filled?: boolean;\n fullHeight?: boolean;\n showBackground?: boolean;\n showClean?: boolean;\n panelPadding?: string;\n defaultPanel?: ReactNode;\n}\n\nexport function SelectToken({\n value: tokenId,\n onTokenChange,\n border,\n filter,\n search: hasSearch,\n filled,\n fullHeight,\n showBackground,\n showClean,\n panelPadding,\n defaultPanel,\n}: SelectTokenProps) {\n const [value, setValue] = useState(null);\n const [search, setSearch] = useState(undefined);\n\n const { result: allTokensOfSwap } = useAllTokensOfSwap();\n\n useEffect(() => {\n if (tokenId) {\n setValue(tokenId);\n }\n }, [tokenId]);\n\n const menus = useMemo(() => {\n if (!allTokensOfSwap) return undefined;\n\n return allTokensOfSwap.map((tokenInfo) => {\n return {\n value: tokenInfo.ledger_id.toString(),\n label: ,\n additional: JSON.stringify(tokenInfo),\n };\n });\n }, [allTokensOfSwap]);\n\n const handleValueChange = (value: string) => {\n setValue(value);\n if (onTokenChange) {\n onTokenChange(value);\n }\n };\n\n const handleFilterMenu = (menu: MenuProps) => {\n if (!menu.additional) return false;\n\n const tokenInfo = JSON.parse(menu.additional) as AllTokenOfSwapTokenInfo;\n\n return isTokenHide(tokenInfo, search) || (!!filter && filter(tokenInfo));\n };\n\n return (\n {\n if (!menu) return defaultPanel;\n if (!menu.additional) return null;\n\n const additional = JSON.parse(menu.additional) as StringifyAllTokenOfSwapTokenInfo;\n\n const tokenInfo = {\n ...additional,\n ledger_id: Principal.fromText(additional.ledger_id.__principal__),\n } as AllTokenOfSwapTokenInfo;\n\n return ;\n }}\n />\n );\n}\n","import React, { useEffect, useState, useRef } from \"react\";\nimport { Typography, Box, Menu, Grid, MenuItem } from \"@mui/material\";\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport KeyboardArrowDownIcon from \"@mui/icons-material/KeyboardArrowDown\";\nimport { isDarkTheme } from \"utils\";\nimport NoData from \"components/no-data\";\nimport { Theme } from \"@mui/material/styles\";\n\nconst useStyles = (contained: boolean, fullHeight?: boolean) => {\n return makeStyles((theme: Theme) => {\n return {\n inputBox: {\n background: theme.palette.background.level4,\n borderRadius: \"8px\",\n padding: contained ? `15px 16px` : `${fullHeight ? \"0px\" : \"12px\"} 16px`,\n \"& input\": {\n color: theme.palette.text.primary,\n },\n },\n };\n });\n};\n\nexport type Menus = {\n label: React.ReactNode;\n value: any;\n};\n\nexport interface SelectProps {\n label?: string | React.ReactNode;\n value?: any;\n width?: number;\n onChange?: (value: any) => void;\n required?: boolean;\n menus: Menus[];\n maxWidth?: number;\n fullHeight?: boolean;\n disabled?: boolean;\n contained?: boolean;\n CustomNoData?: React.ReactNode;\n placeholder?: string;\n type?: string;\n menuDisabled?: (value: Menus) => boolean;\n helperText?: string;\n [x: string]: any;\n}\n\nexport function Label({ label, required }: { label?: React.ReactNode; required?: boolean }) {\n return (\n \n {required && (\n \n *\n \n )}\n \n {label}\n \n \n );\n}\n\nexport function Value({ value, menus = [], helperText }: { helperText?: string; value?: any; menus: Menus[] }) {\n return (\n <>\n \n {menus.filter((menu) => menu.value === value)[0]?.label ?? value}\n \n {helperText ? (\n \n {helperText}\n \n ) : null}\n \n );\n}\n\nexport function Select({\n value,\n onChange,\n menus = [],\n maxWidth,\n fullHeight,\n disabled,\n contained = true,\n width,\n CustomNoData,\n menuDisabled,\n helperText,\n ...props\n}: SelectProps) {\n const classes = useStyles(contained, fullHeight)();\n const [anchorEl, setAnchorEl] = useState(null);\n const outerBoxRef = useRef(null);\n const [menuWidth, setMenuWidth] = useState(undefined);\n const theme = useTheme();\n\n const handleOuterBoxClick = (event: any) => {\n if (disabled) return;\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n useEffect(() => {\n const width = outerBoxRef?.current?.clientWidth;\n setMenuWidth(width ?? undefined);\n }, []);\n\n const handleMenuItemClick = ({ value }: { value: any }) => {\n if (onChange) onChange(value);\n setAnchorEl(null);\n };\n\n const isDark = isDarkTheme(theme);\n\n return (\n <>\n \n \n <>\n \n \n {value ? (\n \n ) : (\n \n {props.placeholder}\n \n )}\n \n\n \n \n \n \n \n\n {Boolean(anchorEl) && (\n \n {menus.map((menu, index) => (\n {\n if (!!menuDisabled && menuDisabled(menu)) return;\n handleMenuItemClick(menu);\n }}\n >\n {menu.label}\n \n ))}\n {menus.length === 0 ? CustomNoData || : null}\n \n )}\n \n );\n}\n","import { TextButton } from \"components/index\";\nimport { useStepManager } from \"store/steps/hooks\";\n\nexport default function StepViewButton({ step }: { step: string | undefined | number }) {\n const { open } = useStepManager();\n\n return open(step?.toString())}>View Details;\n}\n","import React, { ReactNode } from \"react\";\nimport Button, { ButtonProps } from \"@mui/material/Button\";\nimport { useWalletConnectorManager, useConnectorStateConnected } from \"store/auth/hooks\";\nimport { Override } from \"@icpswap/types\";\nimport { t } from \"@lingui/macro\";\nimport { CircularProgress } from \"@mui/material\";\n\nexport type ButtonConnectorProps = Override;\n\nexport default function ButtonConnector(props: ButtonConnectorProps) {\n const [, manager] = useWalletConnectorManager();\n const isConnected = useConnectorStateConnected();\n\n const handleConnect = (event: React.MouseEvent) => {\n if (!isConnected) {\n manager(true);\n } else if (props.onClick) props.onClick(event);\n };\n\n return (\n : null\n }\n >\n {isConnected ? props.children : t`Connect wallet`}\n \n );\n}\n","import { isDarkTheme } from \"utils\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Box, makeStyles } from \"components/Mui\";\n\nconst useStyles = ({ color, size }: { color?: string; size?: string }) => {\n return makeStyles((theme: Theme) => {\n const isDark = isDarkTheme(theme);\n const translateLength = 5;\n\n return {\n dot: {\n display: \"inline-block\",\n width: size ?? \"5px\",\n height: size ?? \"5px\",\n backgroundColor: color ?? (isDark ? \"rgba(255, 255, 255, 0.4)\" : \"rgba(17, 25, 54, 0.4)\"),\n borderRadius: \"50%\",\n animationDuration: \"800ms\",\n animationIterationCount: \"infinite\",\n },\n \"@keyframes dot1Keyframes\": {\n \"0%\": {\n transform: `translate(0, -${translateLength}px)`,\n },\n \"33%\": {\n transform: \"translate(0, 0)\",\n },\n },\n \"@keyframes dot2Keyframes\": {\n \"0%\": {\n transform: \"translate(0, 0)\",\n },\n \"33%\": {\n transform: `translate(0, -${translateLength}px)`,\n },\n \"66%\": {\n transform: \"translate(0, 0)\",\n },\n },\n \"@keyframes dot3Keyframes\": {\n \"0%\": {\n transform: \"translate(0, 0)\",\n },\n \"66%\": {\n transform: `translate(0, -${translateLength}px)`,\n },\n },\n dot1: {\n animationName: `$dot1Keyframes`,\n marginRight: \"4px\",\n },\n dot2: {\n animationName: `$dot2Keyframes`,\n marginRight: \"4px\",\n },\n dot3: {\n animationName: `$dot3Keyframes`,\n },\n };\n });\n};\n\nexport interface DotLoadingProps {\n loading: boolean;\n size?: string;\n color?: string;\n}\n\nexport function DotLoading({ loading, size, color }: DotLoadingProps) {\n const classes = useStyles({ color, size })();\n\n return loading ? (\n \n \n \n \n \n ) : null;\n}\n","import { useState, useEffect } from \"react\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport Backdrop from \"@mui/material/Backdrop\";\nimport { makeStyles } from \"@mui/styles\";\nimport { closeLoading } from \"store/loadingReducer\";\nimport LoadingImage from \"assets/images/loading.png\";\nimport { Theme } from \"@mui/material/styles\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n root: {\n position: \"fixed\",\n top: 0,\n left: 0,\n zIndex: 1301,\n width: \"100%\",\n \"& > * + *\": {\n marginTop: theme.spacing(2),\n },\n },\n backdrop: {\n zIndex: 10000,\n color: \"#fff\",\n },\n}));\n\nexport default function FullscreenLoading({\n maskClosable,\n onMaskClick,\n}: {\n maskClosable?: boolean;\n onMaskClick?: () => void;\n}) {\n const classes = useStyles();\n const dispatch = useAppDispatch();\n const [open, setOpen] = useState(false);\n const loadingInitial = useAppSelector((state) => state.loading);\n\n const onClick = () => {\n if (maskClosable) {\n dispatch(closeLoading());\n }\n\n if (onMaskClick) onMaskClick();\n };\n\n useEffect(() => {\n setOpen(loadingInitial.open);\n }, [loadingInitial.open]);\n\n return (\n \n \"\"\n \n );\n}\n","import { ReactNode } from \"react\";\nimport { Box, BoxProps } from \"components/Mui\";\nimport { Flex } from \"@icpswap/ui\";\n\nexport interface WrapperProps {\n children: ReactNode;\n sx?: BoxProps[\"sx\"];\n}\n\nexport function Wrapper({ children, sx }: WrapperProps) {\n return (\n \n \n {children}\n \n \n );\n}\n","import { Button, Typography, CircularProgress } from \"@mui/material\";\nimport { useTheme } from \"@mui/styles\";\nimport { Theme } from \"@mui/material/styles\";\nimport { Trans } from \"@lingui/macro\";\n\nexport default function ViewMore({ loading, onClick }: { loading: boolean; onClick: () => void }) {\n const theme = useTheme() as Theme;\n\n return (\n \n {loading ? : null}\n \n View More\n \n \n );\n}\n","import { useState, useMemo, useCallback } from \"react\";\nimport { Modal } from \"components/index\";\nimport { getPool } from \"hooks/swap/v3Calls\";\nimport { useTheme, Typography, Box, Avatar, CircularProgress, Button } from \"@mui/material\";\nimport { Trans, t } from \"@lingui/macro\";\nimport { Theme } from \"@mui/material/styles\";\nimport { TokenInfo } from \"types/token\";\nimport CurrencySelector from \"components/CurrencySelector/selector\";\nimport { getUserPositionIds } from \"hooks/swap/useUserPositionIds\";\nimport { useUpdateUserPositionPools } from \"store/hooks\";\nimport { updateUserPositionPoolId } from \"@icpswap/hooks\";\nimport { useTips, TIP_SUCCESS } from \"hooks/index\";\nimport { useAccountPrincipal } from \"store/auth/hooks\";\n\nfunction AddIcon() {\n return (\n \n \n \n );\n}\n\nfunction ArrowIcon() {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n}\n\ninterface SelectedTokenProps {\n selectedTokenIds?: string[];\n onTokenChange: (token: TokenInfo) => void;\n}\n\nfunction SelectedToken({ selectedTokenIds, onTokenChange }: SelectedTokenProps) {\n const theme = useTheme() as Theme;\n\n const [token, setToken] = useState(null);\n const [selectorOpen, setSelectorOpen] = useState(false);\n\n const handleTokenChange = (token: TokenInfo) => {\n onTokenChange(token);\n setToken(token);\n setSelectorOpen(false);\n };\n\n const handleSelectToken = () => {\n setSelectorOpen(true);\n };\n\n return (\n <>\n \n {token ? (\n \n \n  \n \n \n {token?.symbol}\n \n \n ) : (\n \n \n Select a token\n \n \n )}\n \n \n\n setSelectorOpen(false)}\n onChange={handleTokenChange}\n disabledCurrencyIds={selectedTokenIds}\n />\n \n );\n}\n\nexport interface FindPositionsModalProps {\n open: boolean;\n onClose: () => void;\n}\n\nexport default function FindPositionsModal({ open, onClose }: FindPositionsModalProps) {\n const theme = useTheme() as Theme;\n const [openTip] = useTips();\n\n const principal = useAccountPrincipal();\n\n const [error, setError] = useState(\"\");\n const [loading, setLoading] = useState(false);\n\n const [tokenA, setTokenA] = useState(null);\n const [tokenB, setTokenB] = useState(null);\n\n const handleTokenAChange = (tokenA: TokenInfo) => {\n setTokenA(tokenA);\n setError(\"\");\n };\n\n const handleTokenBChange = (tokenB: TokenInfo) => {\n setTokenB(tokenB);\n setError(\"\");\n };\n\n const handleClose = useCallback(() => {\n onClose();\n setTokenA(null);\n setTokenB(null);\n }, [onClose, setTokenA, setTokenB]);\n\n const selectedTokenIds = useMemo(() => {\n return [tokenA?.canisterId, tokenB?.canisterId].filter((ele) => !!ele) as string[];\n }, [tokenA, tokenB]);\n\n const updateStoreUserPositionPool = useUpdateUserPositionPools();\n\n const handleImport = async () => {\n if (!tokenA || !tokenB || loading || !principal) return;\n\n setLoading(true);\n\n const poolData = await getPool(tokenA.canisterId, tokenB.canisterId);\n\n if (!poolData) {\n setError(t`No available pools`);\n setLoading(false);\n return;\n }\n\n const poolId = poolData.canisterId.toString();\n const positionIds = await getUserPositionIds(poolId, principal.toString());\n\n if (!positionIds || positionIds.length === 0) {\n setError(t`No available position in this pool`);\n setLoading(false);\n return;\n }\n\n updateStoreUserPositionPool([poolId]);\n updateUserPositionPoolId(poolId, true);\n\n openTip(\"Imported successfully\", TIP_SUCCESS);\n\n setLoading(false);\n\n handleClose();\n };\n\n return (\n \n \n \n\n \n\n \n\n : null}\n >\n {error || Import}\n \n \n \n );\n}\n","import { Override } from \"@icpswap/types\";\nimport { forwardRef } from \"react\";\nimport { NumericFormat, NumericFormatProps } from \"react-number-format\";\nimport { TextField, TextFieldProps } from \"components/Mui\";\n\nexport type NumericProps = {\n decimalScale?: number;\n allowNegative?: boolean;\n maxLength?: number;\n thousandSeparator?: boolean;\n};\n\ntype InputProps = {\n onChange: (event: { target: { value: string } }) => void;\n name: string;\n value: any;\n};\n\nexport const TextFieldNumberComponent = forwardRef((props, ref) => {\n const { onChange, ...other } = props;\n\n return (\n {\n // Fix outside value change cause to maximum update\n if (values.value === props.value) return;\n\n onChange({\n target: {\n // Fix if user typed . first could case some NaN errors\n value: values.value === \".\" ? \"0.\" : values.value,\n },\n });\n }}\n />\n );\n});\n\nexport type NumberTextFieldProps = Override;\n\nexport default function NumberTextField(props: NumberTextFieldProps) {\n const { numericProps, ...textFiledProps } = props;\n\n return (\n \n );\n}\n","import { Override } from \"@icpswap/types\";\nimport FilledTextField, { FilledTextFieldProps } from \"components/Input/FilledTextField\";\nimport { TextFieldNumberComponent, NumericProps } from \"components/Input/NumberTextField\";\n\nexport type NumberFilledTextFieldProps = Override;\n\nexport function NumberFilledTextField(props: NumberFilledTextFieldProps) {\n const { numericProps, ...textFieldProps } = props;\n\n return (\n \n );\n}\n","import { useState, ReactNode } from \"react\";\nimport { Grid, Box, useTheme } from \"components/Mui\";\nimport { useHistory, useLocation } from \"react-router-dom\";\nimport { mockALinkAndOpen } from \"@icpswap/utils\";\nimport { Flex } from \"@icpswap/ui\";\n\nexport interface Tab {\n key: string | any;\n value: ReactNode;\n path?: string;\n link?: string;\n}\n\nexport interface TabPanelProps {\n active?: string;\n tabs: Tab[];\n onChange?: (tab: Tab) => void;\n fontNormal?: boolean;\n fontSize?: string;\n fullWidth?: boolean;\n activeWithSearch?: boolean;\n bg0?: string;\n bg1?: string;\n size?: \"small\" | \"large\" | \"medium\";\n}\n\nexport function TabPanel({\n tabs,\n onChange,\n active,\n fullWidth,\n fontNormal,\n activeWithSearch,\n fontSize = \"14px\",\n bg0,\n bg1,\n size,\n}: TabPanelProps) {\n const theme = useTheme();\n const history = useHistory();\n const location = useLocation();\n\n const [activeButtonKey, setActiveButtonKey] = useState(null);\n\n const loadPage = (tab: Tab) => {\n if (tab.link) {\n mockALinkAndOpen(tab.link, \"toggle_link\");\n return;\n }\n\n if (!tab.path) {\n setActiveButtonKey(tab.key);\n if (onChange) onChange(tab);\n return;\n }\n history.push(tab.path);\n };\n\n const isActive = (tab: Tab) => {\n if (tab.path) {\n if (tab.key === \"/swap\" || tab.key === \"/swap/v2\") {\n if (tab.key === location.pathname || `${tab.key}/` === location.pathname) return \"active\";\n return \"\";\n }\n\n if (activeWithSearch) {\n return location.search.includes(tab.key);\n }\n\n return location.pathname.includes(tab.key);\n }\n if (active) return active === tab.key;\n if (!activeButtonKey) return tabs[0].key === tab.key;\n return activeButtonKey === tab.key;\n };\n\n return (\n \n \n {tabs.map((tab) => (\n loadPage(tab)}\n sx={{\n fontSize,\n minWidth: size === \"small\" ? \"auto\" : \"90px\",\n padding: size === \"small\" ? \"0 12px\" : \"0 20px\",\n height: size === \"small\" ? \"32px\" : \"45px\",\n color: theme.themeOption.textSecondary,\n cursor: \"pointer\",\n borderRadius: size === \"small\" ? \"6px\" : \"12px\",\n fontWeight: 600,\n \"&.active\": {\n color: theme.themeOption.textPrimary,\n background: bg1 ?? theme.colors.darkLevel3,\n },\n \"&.fontNormal\": {\n fontWeight: 400,\n },\n \"@media (max-width: 640px)\": {\n minWidth: size === \"small\" ? \"auto\" : \"76px\",\n padding: size === \"small\" ? \"0 12px\" : \"0 15px\",\n fontSize: \"12px\",\n },\n }}\n >\n \n {tab.value}\n \n \n ))}\n \n \n );\n}\n","import React, { useState } from \"react\";\nimport { AlertCircle } from \"react-feather\";\n\nimport { Box, Collapse } from \"./Mui\";\n\nexport interface CollapseTextProps {\n description: React.ReactNode;\n label: React.ReactNode;\n}\n\nexport function CollapseText({ label, description }: CollapseTextProps) {\n const [open, setOpen] = useState(false);\n\n const handleToggle = () => {\n setOpen(!open);\n };\n\n return (\n \n \n {label}\n \n \n \n {description}\n \n \n );\n}\n","import { Switch, SwitchProps } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { Theme } from \"@mui/material/styles\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n const trackBorder =\n theme.customization.mode === \"dark\" ? `1px solid ${theme.colors.darkTextSecondary}` : \"1px solid #EDE7F6\";\n\n const trackActiveBorder =\n theme.customization.mode === \"dark\" ? `1px solid ${theme.colors.darkSecondaryMain}` : \"1px solid #EDE7F6\";\n\n return {\n root: {\n height: 20,\n padding: 0,\n margin: 0,\n },\n switchBase: {\n padding: 0,\n color: theme.palette.dark.light,\n top: \"50%\",\n left: \"3px\",\n marginTop: \"-7px\",\n \"&$checked\": {\n transform: \"translateX(15px)\",\n color: theme.palette.dark.light,\n \"& .MuiSwitch-thumb\": {\n background: theme.palette.mode === \"dark\" ? theme.colors.darkSecondaryMain : theme.colors.lightPrimaryMain,\n },\n \"& + $track\": {\n backgroundColor: theme.customization.mode === \"dark\" ? theme.colors.darkLevel3 : \"#FAFAFA\",\n opacity: 1,\n border: trackActiveBorder,\n },\n },\n \"&$focusVisible $thumb\": {\n color: \"#52d869\",\n border: \"6px solid #fff\",\n },\n },\n thumb: {\n width: 14,\n height: 14,\n boxShadow: \"none\",\n },\n track: {\n borderRadius: 20 / 2,\n border: trackBorder,\n background: theme.palette.mode === \"dark\" ? theme.colors.darkLevel3 : \"#fafafa\",\n opacity: 1,\n transition: theme.transitions.create([\"background-color\", \"border\"]),\n },\n checked: {},\n focusVisible: {},\n };\n});\n\nexport default function _Switch(props: SwitchProps) {\n const classes = useStyles();\n\n return (\n \n );\n}\n","import { makeStyles, useTheme } from \"components/Mui\";\nimport { Link as ReactLink } from \"react-router-dom\";\n\nconst useStyles = makeStyles(() => ({\n link: {\n textDecoration: \"none\",\n userSelect: \"none\",\n },\n}));\n\nexport interface LinkProps {\n to?: string;\n link?: string;\n color?: \"secondary\" | \"primary\";\n children: React.ReactNode;\n width?: string;\n height?: string;\n display?: \"flex\" | \"block\" | \"inline-block\" | \"inline\";\n}\n\nexport function Link({ to, link, color, children, width, height, display }: LinkProps) {\n const classes = useStyles();\n const theme = useTheme();\n\n return (\n <>\n {to ? (\n \n {children}\n \n ) : link ? (\n \n {children}\n \n ) : (\n children\n )}\n \n );\n}\n","import React, { ReactNode } from \"react\";\nimport { Box, Button, Dialog, DialogTitle, DialogContent, Typography, useMediaQuery } from \"@mui/material\";\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport DialogCloseIcon from \"assets/images/icons/dialog-close\";\nimport { Theme } from \"@mui/material/styles\";\nimport { t } from \"@lingui/macro\";\nimport { isElement } from \"react-is\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n titleContainer: {\n position: \"relative\",\n },\n title: {\n fontSize: \"20px\",\n fontWeight: 700,\n \"@media (max-width: 640px)\": {\n fontSize: \"1rem\",\n },\n \"&.warning\": {\n color: \"#D3625B\",\n },\n },\n detailItem: {\n marginBottom: \"24px\",\n },\n value: {\n textAlign: \"right\",\n wordBreak: \"break-all\",\n },\n closeButton: {\n position: \"absolute\",\n right: 0,\n top: \"50%\",\n transform: \"translate(0, -50%)\",\n cursor: \"pointer\",\n \"&:hover\": {\n color: theme.colors.primaryMain,\n },\n \"&.warning\": {\n color: \"#D3625B\",\n \"&:hover\": {\n color: \"#D3625B\",\n },\n },\n },\n closeButton1: {\n position: \"absolute\",\n right: \"5px\",\n top: \"5px\",\n cursor: \"pointer\",\n \"&:hover\": {\n color: theme.colors.primaryMain,\n },\n \"&.warning\": {\n color: \"#D3625B\",\n \"&:hover\": {\n color: \"#D3625B\",\n },\n },\n },\n}));\n\nexport interface ModalProps {\n title?: string | React.ReactNode;\n showClose?: boolean;\n children: React.ReactNode;\n open: boolean;\n confirmText?: ReactNode;\n cancelText?: ReactNode;\n onClose?: () => void;\n onConfirm?: () => void;\n onCancel?: () => void;\n showConfirm?: boolean;\n showCancel?: boolean;\n confirmDisabled?: boolean;\n fullWidth?: boolean;\n maxWidth?: string;\n dialogProps?: any;\n type?: string;\n background?: string;\n contentPadding?: string;\n [key: string]: any;\n}\n\nexport default function Modal({\n title,\n children,\n open,\n confirmText = t`Confirm`,\n cancelText = t`Cancel`,\n onClose,\n onConfirm,\n onCancel,\n showConfirm = false,\n showCancel = false,\n showClose = true,\n confirmDisabled,\n fullWidth = true,\n maxWidth = \"sm\",\n type,\n background,\n dialogProps,\n contentPadding,\n}: ModalProps) {\n const classes = useStyles();\n const theme = useTheme() as Theme;\n const matchDownMD = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n const down760 = useMediaQuery(\"(max-width:760px)\");\n\n return (\n \n {title ? (\n isElement(title) ? (\n title\n ) : (\n \n \n \n {title}\n \n {showClose ? (\n \n ) : null}\n \n \n )\n ) : null}\n \n {showClose && !title ? (\n \n ) : null}\n {children}\n\n {showConfirm || showCancel ? (\n \n {showCancel ? (\n \n \n \n ) : null}\n {showConfirm ? (\n \n \n \n ) : null}\n \n ) : null}\n \n \n );\n}\n","import React from \"react\";\nimport { useTheme } from \"components/Mui\";\nimport { isDarkTheme } from \"utils\";\n\nimport Modal from \"./index\";\n\nexport interface SwapModalProps {\n width?: string;\n open: boolean;\n children: React.ReactNode;\n [key: string]: any;\n}\n\nexport default ({ width = \"570px\", open, children, ...props }: SwapModalProps) => {\n const theme = useTheme();\n\n return (\n \n {children}\n \n );\n};\n","import { SvgIcon, useTheme, SvgIconProps } from \"@mui/material\";\nimport { Theme } from \"@mui/material/styles\";\n\nexport default function NoDataIcon(props: SvgIconProps) {\n const theme = useTheme() as Theme;\n\n return theme.customization.mode === \"dark\" ? (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n ) : (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { Grid } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport NoDataIcon from \"assets/images/icons/no-data\";\n\nconst useStyles = makeStyles(() => {\n return {\n noDataContainer: {\n height: \"140px\",\n },\n };\n});\n\nexport default function NoData() {\n const classes = useStyles();\n\n return (\n \n \n \n \n \n );\n}\n","import React from \"react\";\nimport { ProviderContext } from \"./types\";\n\nexport default React.createContext({} as ProviderContext);\n","import { InternalSnack } from \"../types\";\n\nexport const breakpoints = {\n downXs: \"@media (max-width:599.95px)\",\n upSm: \"@media (min-width:600px)\",\n};\n\nconst capitalise = (text: string): string => text.charAt(0).toUpperCase() + text.slice(1);\n\nexport const originKeyExtractor = (anchor: InternalSnack[\"anchorOrigin\"]): string =>\n `${capitalise(anchor.vertical)}${capitalise(anchor.horizontal)}`;\n\nexport const isDefined = (value: string | null | undefined | number): boolean => !!value || value === 0;\n","import React from \"react\";\nimport { CircularProgress } from \"@mui/material\";\n\nfunction SvgIcon(props: any) {\n return (\n \n );\n}\n\nfunction CheckIcon() {\n return (\n \n \n \n \n );\n}\n\nconst WarningIcon: React.FC = () => (\n \n \n \n);\n\nconst ErrorIcon: React.FC = () => (\n \n \n \n);\n\nconst InfoIcon: React.FC = () => (\n \n \n \n);\n\nconst defaultIconVariants: Record = {\n default: undefined,\n success: ,\n warning: ,\n error: ,\n info: ,\n loading: ,\n};\n\nexport default defaultIconVariants;\n","export enum TransitionStatus {\n UNMOUNTED = \"unmounted\",\n EXITED = \"exited\",\n ENTERING = \"entering\",\n ENTERED = \"entered\",\n EXITING = \"exiting\",\n}\n","// @ts-nocheck\n/* eslint-disable */\n\nimport React from \"react\";\nimport { TransitionStatus } from \"./types\";\n\nclass Transition extends React.Component {\n constructor(props: any) {\n super(props);\n\n const { appear } = props;\n\n let initialStatus;\n\n this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = TransitionStatus.EXITED;\n this.appearStatus = TransitionStatus.ENTERING;\n } else {\n initialStatus = TransitionStatus.ENTERED;\n }\n } else if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = TransitionStatus.UNMOUNTED;\n } else {\n initialStatus = TransitionStatus.EXITED;\n }\n\n this.state = { status: initialStatus };\n\n this.nextCallback = null;\n }\n\n static getDerivedStateFromProps({ in: nextIn }, prevState) {\n if (nextIn && prevState.status === TransitionStatus.UNMOUNTED) {\n return { status: TransitionStatus.EXITED };\n }\n return null;\n }\n\n componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n }\n\n componentDidUpdate(prevProps) {\n let nextStatus = null;\n if (prevProps !== this.props) {\n const { status } = this.state;\n\n if (this.props.in) {\n if (status !== TransitionStatus.ENTERING && status !== TransitionStatus.ENTERED) {\n nextStatus = TransitionStatus.ENTERING;\n }\n } else if (status === TransitionStatus.ENTERING || status === TransitionStatus.ENTERED) {\n nextStatus = TransitionStatus.EXITING;\n }\n }\n this.updateStatus(false, nextStatus);\n }\n\n componentWillUnmount() {\n this.cancelNextCallback();\n }\n\n getTimeouts() {\n const { timeout } = this.props;\n let enter = timeout;\n let exit = timeout;\n\n if (timeout != null && typeof timeout !== \"number\") {\n exit = timeout.exit;\n enter = timeout.enter;\n }\n return { exit, enter };\n }\n\n updateStatus(mounting = false, nextStatus) {\n if (nextStatus !== null) {\n this.cancelNextCallback();\n\n if (nextStatus === TransitionStatus.ENTERING) {\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === TransitionStatus.EXITED) {\n this.setState({ status: TransitionStatus.UNMOUNTED });\n }\n }\n\n get node() {\n const node = this.props.nodeRef.current;\n if (!node) {\n throw new Error(\"notistack - Custom snackbar is not refForwarding\");\n }\n return node;\n }\n\n performEnter(mounting) {\n const { enter, id } = this.props;\n const isAppearing = mounting;\n\n const timeouts = this.getTimeouts();\n\n if (!mounting && !enter) {\n this.safeSetState({ status: TransitionStatus.ENTERED }, () => {\n this.props.onEntered(this.node, isAppearing, id);\n });\n return;\n }\n\n this.props.onEnter(this.node, isAppearing, id);\n\n this.safeSetState({ status: TransitionStatus.ENTERING }, () => {\n this.props.onEntering(this.node, isAppearing, id);\n\n this.onTransitionEnd(timeouts.enter, () => {\n this.safeSetState({ status: TransitionStatus.ENTERED }, () => {\n this.props.onEntered(this.node, isAppearing, id);\n });\n });\n });\n }\n\n performExit() {\n const { exit, id } = this.props;\n const timeouts = this.getTimeouts();\n\n // no exit animation skip right to EXITED\n if (!exit) {\n this.safeSetState({ status: TransitionStatus.EXITED }, () => {\n this.props.onExited(this.node, id);\n });\n return;\n }\n\n this.props.onExit(this.node, id);\n\n this.safeSetState({ status: TransitionStatus.EXITING }, () => {\n this.props.onExiting(this.node, id);\n\n this.onTransitionEnd(timeouts.exit, () => {\n this.safeSetState({ status: TransitionStatus.EXITED }, () => {\n this.props.onExited(this.node, id);\n });\n });\n });\n }\n\n cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n }\n\n safeSetState(nextState, callback) {\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n }\n\n setNextCallback(callback) {\n let active = true;\n\n this.nextCallback = (event) => {\n if (active) {\n active = false;\n this.nextCallback = null;\n\n callback(event);\n }\n };\n\n this.nextCallback.cancel = () => {\n active = false;\n };\n\n return this.nextCallback;\n }\n\n onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n const doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n if (!this.node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n this.props.addEndListener(this.node, this.nextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n }\n\n render() {\n const { status } = this.state;\n\n if (status === TransitionStatus.UNMOUNTED) {\n return null;\n }\n\n const {\n children,\n // filter props for `Transition`\n id: _id,\n in: _in,\n mountOnEnter: _mountOnEnter,\n unmountOnExit: _unmountOnExit,\n appear: _appear,\n enter: _enter,\n exit: _exit,\n timeout: _timeout,\n addEndListener: _addEndListener,\n onEnter: _onEnter,\n onEntering: _onEntering,\n onEntered: _onEntered,\n onExit: _onExit,\n onExiting: _onExiting,\n onExited: _onExited,\n nodeRef: _nodeRef,\n ...childProps\n } = this.props;\n\n return children(status, childProps);\n }\n}\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n\n onExit: noop,\n onExiting: noop,\n onExited: noop,\n};\n\nexport default Transition;\n","/* eslint-disable no-param-reassign */\nimport * as React from \"react\";\n\n/**\n * passes {value} to {ref}\n *\n * Useful if you want to expose the ref of an inner component to the public API\n * while still using it inside the component.\n * @param ref A ref callback or ref object. If anything falsy, this is a no-op.\n */\nfunction setRef(\n ref: React.MutableRefObject | ((instance: T | null) => void) | null | undefined,\n value: T | null,\n): void {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref) {\n ref.current = value;\n }\n}\n\nexport default function useForkRef(\n refA: React.Ref | null | undefined,\n refB: React.Ref | null | undefined,\n): React.Ref | null {\n /**\n * This will create a new function if the ref props change and are defined.\n * This means react will call the old forkRef with `null` and the new forkRef\n * with the ref. Cleanup naturally emerges from this behavior.\n */\n return React.useMemo(() => {\n if (refA == null && refB == null) {\n return null;\n }\n return (refValue) => {\n setRef(refA, refValue);\n setRef(refB, refValue);\n };\n }, [refA, refB]);\n}\n","import { TransitionDuration } from \"../types\";\n\ninterface ComponentProps {\n style: React.CSSProperties | undefined;\n /**\n * number: 400\n * string: 'auto'\n * TransitionDuration: { enter: 200, exit: 400 }\n */\n timeout: number | string | TransitionDuration;\n mode: \"enter\" | \"exit\";\n}\n\ninterface TransitionPropsReturnType {\n duration: string | number;\n easing: string | undefined;\n delay: string | undefined;\n}\n\nexport default function getTransitionProps(props: ComponentProps): TransitionPropsReturnType {\n const { timeout, style = {}, mode } = props;\n return {\n duration: style.transitionDuration ?? (typeof timeout === \"object\" ? timeout[mode] || 0 : timeout),\n easing: style.transitionTimingFunction,\n delay: style.transitionDelay,\n };\n}\n","/* eslint-disable no-param-reassign */\nexport const defaultEasing = {\n // This is the most common easing curve.\n easeInOut: \"cubic-bezier(0.4, 0, 0.2, 1)\",\n // Objects enter the screen at full velocity from off-screen and\n // slowly decelerate to a resting point.\n easeOut: \"cubic-bezier(0.0, 0, 0.2, 1)\",\n // Objects leave the screen at full velocity. They do not decelerate when off-screen.\n easeIn: \"cubic-bezier(0.4, 0, 1, 1)\",\n // The sharp curve is used by objects that may return to the screen at any time.\n sharp: \"cubic-bezier(0.4, 0, 0.6, 1)\",\n};\n\n/**\n * CSS hack to force a repaint\n */\nexport const reflow = (node: Element): void => {\n // We have to do something with node.scrollTop.\n // Otherwise it removed from the compiled code by optimisers\n // eslint-disable-next-line no-self-assign\n node.scrollTop = node.scrollTop;\n};\n","import { defaultEasing } from \"./utils\";\n\ninterface CreateTransitionOptions {\n duration: string | number;\n easing?: string;\n delay?: string | number;\n}\n\nconst formatMs = (milliseconds: number) => `${Math.round(milliseconds)}ms`;\n\nexport default function createTransition(\n props: string | string[] = [\"all\"],\n options?: CreateTransitionOptions,\n): string {\n const { duration = 300, easing = defaultEasing.easeInOut, delay = 0 } = options || {};\n\n const properties = Array.isArray(props) ? props : [props];\n\n return properties\n .map((animatedProp) => {\n const formattedDuration = typeof duration === \"string\" ? duration : formatMs(duration);\n const formattedDelay = typeof delay === \"string\" ? delay : formatMs(delay);\n return `${animatedProp} ${formattedDuration} ${easing} ${formattedDelay}`;\n })\n .join(\",\");\n}\n","export function ownerDocument(node: Node | null | undefined): Document {\n return (node && node.ownerDocument) || document;\n}\n\nexport function ownerWindow(node: Node | null): Window {\n const doc = ownerDocument(node);\n return doc.defaultView || window;\n}\n","// @ts-nocheck\n/* eslint-disable no-param-reassign */\n\nimport * as React from \"react\";\nimport TransitionComponent, { TransitionStatus } from \"../Transition\";\nimport useForkRef from \"../useForkRef\";\nimport getTransitionProps from \"../getTransitionProps\";\nimport createTransition from \"../createTransition\";\nimport { defaultEasing, reflow } from \"../utils\";\nimport { ownerWindow } from \"../document-window\";\nimport { SlideTransitionDirection, TransitionHandlerProps, TransitionProps } from \"../../types\";\n\n/**\n * Corresponds to 10 frames at 60 Hz.\n * A few bytes payload overhead when lodash/debounce is ~3 kB and debounce ~300 B.\n */\nfunction debounce(func, wait = 166) {\n let timeout;\n function debounced(...args: any[]) {\n const later = () => {\n func.apply(this, args);\n };\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n }\n\n debounced.clear = () => {\n clearTimeout(timeout);\n };\n\n return debounced;\n}\n\n/**\n * Translate the node so it can't be seen on the screen.\n * Later, we're going to translate the node back to its original location with `none`.\n */\nfunction getTranslateValue(\n direction: SlideTransitionDirection,\n node: HTMLElement & { fakeTransform?: string },\n): string {\n const rect = node.getBoundingClientRect();\n const containerWindow = ownerWindow(node);\n let transform;\n\n if (node.fakeTransform) {\n transform = node.fakeTransform;\n } else {\n const computedStyle = containerWindow.getComputedStyle(node);\n transform = computedStyle.getPropertyValue(\"-webkit-transform\") || computedStyle.getPropertyValue(\"transform\");\n }\n\n let offsetX = 0;\n let offsetY = 0;\n\n if (transform && transform !== \"none\" && typeof transform === \"string\") {\n const transformValues = transform.split(\"(\")[1].split(\")\")[0].split(\",\");\n offsetX = parseInt(transformValues[4], 10);\n offsetY = parseInt(transformValues[5], 10);\n }\n\n switch (direction) {\n case \"left\":\n return `translateX(${containerWindow.innerWidth + offsetX - rect.left}px)`;\n case \"right\":\n return `translateX(-${rect.left + rect.width - offsetX}px)`;\n case \"up\":\n return `translateY(${containerWindow.innerHeight + offsetY - rect.top}px)`;\n default:\n // down\n return `translateY(-${rect.top + rect.height - offsetY}px)`;\n }\n}\n\nfunction setTranslateValue(direction: SlideTransitionDirection, node: HTMLElement | null): void {\n if (!node) return;\n const transform = getTranslateValue(direction, node);\n if (transform) {\n node.style.webkitTransform = transform;\n node.style.transform = transform;\n }\n}\n\nexport const Slide = React.forwardRef((props, ref) => {\n const {\n children,\n direction = \"down\",\n in: inProp,\n style,\n timeout = 0,\n onEnter,\n onEntered,\n onExit,\n onExited,\n ...other\n } = props;\n\n const nodeRef = React.useRef(null);\n const handleRefIntermediary = useForkRef(children.ref, nodeRef);\n const handleRef = useForkRef(handleRefIntermediary, ref);\n\n const handleEnter: TransitionHandlerProps[\"onEnter\"] = (node, isAppearing, snackId) => {\n setTranslateValue(direction, node);\n reflow(node);\n\n if (onEnter) {\n onEnter(node, isAppearing, snackId);\n }\n };\n\n const handleEntering = (node: HTMLElement) => {\n const easing = style?.transitionTimingFunction || defaultEasing.easeOut;\n const transitionProps = getTransitionProps({\n timeout,\n mode: \"enter\",\n style: { ...style, transitionTimingFunction: easing },\n });\n\n node.style.webkitTransition = createTransition(\"-webkit-transform\", transitionProps);\n node.style.transition = createTransition(\"transform\", transitionProps);\n\n node.style.webkitTransform = \"none\";\n node.style.transform = \"none\";\n };\n\n const handleExit: TransitionHandlerProps[\"onExit\"] = (node, snackId) => {\n const easing = style?.transitionTimingFunction || defaultEasing.sharp;\n const transitionProps = getTransitionProps({\n timeout,\n mode: \"exit\",\n style: { ...style, transitionTimingFunction: easing },\n });\n\n node.style.webkitTransition = createTransition(\"-webkit-transform\", transitionProps);\n node.style.transition = createTransition(\"transform\", transitionProps);\n\n setTranslateValue(direction, node);\n\n if (onExit) {\n onExit(node, snackId);\n }\n };\n\n const handleExited: TransitionHandlerProps[\"onExited\"] = (node, snackId) => {\n // No need for transitions when the component is hidden\n node.style.webkitTransition = \"\";\n node.style.transition = \"\";\n\n if (onExited) {\n onExited(node, snackId);\n }\n };\n\n const updatePosition = React.useCallback(() => {\n if (nodeRef.current) {\n setTranslateValue(direction, nodeRef.current);\n }\n }, [direction]);\n\n React.useEffect(() => {\n // Skip configuration where the position is screen size invariant.\n if (inProp || direction === \"down\" || direction === \"right\") {\n return undefined;\n }\n\n const handleResize = debounce(() => {\n if (nodeRef.current) {\n setTranslateValue(direction, nodeRef.current);\n }\n });\n\n const containerWindow = ownerWindow(nodeRef.current);\n containerWindow.addEventListener(\"resize\", handleResize);\n return () => {\n handleResize.clear();\n containerWindow.removeEventListener(\"resize\", handleResize);\n };\n }, [direction, inProp]);\n\n React.useEffect(() => {\n if (!inProp) {\n // We need to update the position of the drawer when the direction change and\n // when it's hidden.\n updatePosition();\n }\n }, [inProp, updatePosition]);\n\n return (\n \n {(state: TransitionStatus, childProps: Record) =>\n React.cloneElement(children, {\n ref: handleRef,\n style: {\n visibility: state === \"exited\" && !inProp ? \"hidden\" : undefined,\n ...style,\n ...children.props.style,\n },\n ...childProps,\n })\n }\n \n );\n});\n","import defaultIconVariants from \"../utils/defaultIconVariants\";\nimport { InternalSnack } from \"../types\";\nimport { Slide } from \"../transitions/Slide\";\n\nexport const defaults = {\n maxSnack: 3,\n persist: false,\n hideIconVariant: false,\n disableWindowBlurListener: false,\n variant: \"default\",\n autoHideDuration: 5000,\n iconVariant: defaultIconVariants,\n anchorOrigin: { vertical: \"top\", horizontal: \"right\" },\n TransitionComponent: Slide,\n transitionDuration: {\n enter: 225,\n exit: 195,\n },\n};\n\n/**\n * Derives the right autoHideDuration taking into account the following\n * prority order: 1: Options, 2: Props, 3: default fallback\n */\nconst getAutoHideDuration = (optionsDuration: any, propsDuration: any) => {\n const isNumberOrNull = (numberish: number | null) => typeof numberish === \"number\" || numberish === null;\n\n if (isNumberOrNull(optionsDuration)) return optionsDuration;\n if (isNumberOrNull(propsDuration)) return propsDuration;\n return defaults.autoHideDuration;\n};\n\n/**\n * Derives the right transitionDuration taking into account the following\n * prority order: 1: Options, 2: Props, 3: default fallback\n */\nconst getTransitionDuration = (optionsDuration: any, propsDuration: any) => {\n const is = (item: any, types: string[]) => types.some((t) => typeof item === t);\n\n if (is(optionsDuration, [\"string\", \"number\"])) {\n return optionsDuration;\n }\n\n if (is(optionsDuration, [\"object\"])) {\n return {\n ...defaults.transitionDuration,\n ...(is(propsDuration, [\"object\"]) && propsDuration),\n ...optionsDuration,\n };\n }\n\n if (is(propsDuration, [\"string\", \"number\"])) {\n return propsDuration;\n }\n\n if (is(propsDuration, [\"object\"])) {\n return {\n ...defaults.transitionDuration,\n ...propsDuration,\n };\n }\n\n return defaults.transitionDuration;\n};\n\nexport const merge =\n (options: any, props: any) =>\n (name: keyof InternalSnack, shouldObjectMerge = false): any => {\n if (shouldObjectMerge) {\n return {\n // @ts-ignore\n ...defaults[name],\n ...props[name],\n ...options[name],\n };\n }\n\n if (name === \"autoHideDuration\") {\n return getAutoHideDuration(options.autoHideDuration, props.autoHideDuration);\n }\n\n if (name === \"transitionDuration\") {\n return getTransitionDuration(options.transitionDuration, props.transitionDuration);\n }\n\n // @ts-ignore\n return options[name] || props[name] || defaults[name];\n };\n","/**\n * https://www.wolframalpha.com/input/?i=(4+%2B+15+*+(x+%2F+36+)+**+0.25+%2B+(x+%2F+36)+%2F+5)+*+10\n */\nexport default function getAutoHeightDuration(height: number): number {\n if (!height) {\n return 0;\n }\n\n const constant = height / 36;\n\n return Math.round((4 + 15 * constant ** 0.25 + constant / 5) * 10);\n}\n","export const ComponentClasses = {\n SnackbarContainer: \"notistack-SnackbarContainer\",\n Snackbar: \"notistack-Snackbar\",\n CollapseWrapper: \"notistack-CollapseWrapper\",\n MuiContent: \"notistack-MuiContent\",\n};\n","/* eslint-disable no-param-reassign */\n\n/**\n * Credit to MUI team @ https://mui.com\n */\nimport * as React from \"react\";\nimport clsx from \"clsx\";\nimport { makeStyles } from \"@mui/styles\";\nimport TransitionComponent, { TransitionStatus } from \"../Transition\";\nimport useForkRef from \"../useForkRef\";\nimport { TransitionHandlerProps, TransitionProps } from \"../../types\";\nimport getAutoHeightDuration from \"../getAutoHeightDuration\";\nimport getTransitionProps from \"../getTransitionProps\";\nimport createTransition from \"../createTransition\";\nimport { ComponentClasses } from \"../../utils/styles\";\n\nconst useStyles = makeStyles({\n root: {\n height: 0,\n },\n entered: {\n height: \"auto\",\n },\n});\n\nconst collapsedSize = \"0px\";\n\nconst Collapse = React.forwardRef((props, ref) => {\n const { children, style, timeout = 300, in: inProp, onEnter, onEntered, onExit, onExited, ...other } = props;\n\n const classes = useStyles();\n\n const timer = React.useRef>();\n const wrapperRef = React.useRef(null);\n const autoTransitionDuration = React.useRef();\n\n React.useEffect(\n () => () => {\n if (timer.current) {\n clearTimeout(timer.current);\n }\n },\n [],\n );\n\n const nodeRef = React.useRef(null);\n const handleRef = useForkRef(ref, nodeRef);\n\n const getWrapperSize = () => (wrapperRef.current ? wrapperRef.current.clientHeight : 0);\n\n const handleEnter: TransitionHandlerProps[\"onEnter\"] = (node, isAppearing, snackId) => {\n node.style.height = collapsedSize;\n if (onEnter) {\n onEnter(node, isAppearing, snackId);\n }\n };\n\n const handleEntering = (node: HTMLElement) => {\n const wrapperSize = getWrapperSize();\n\n const { duration: transitionDuration, easing } = getTransitionProps({\n style,\n timeout,\n mode: \"enter\",\n });\n\n if (timeout === \"auto\") {\n const duration2 = getAutoHeightDuration(wrapperSize);\n node.style.transitionDuration = `${duration2}ms`;\n autoTransitionDuration.current = duration2;\n } else {\n node.style.transitionDuration =\n typeof transitionDuration === \"string\" ? transitionDuration : `${transitionDuration}ms`;\n }\n\n node.style.height = `${wrapperSize}px`;\n node.style.transitionTimingFunction = easing || \"\";\n };\n\n const handleEntered: TransitionHandlerProps[\"onEntered\"] = (node, isAppearing, snackId) => {\n node.style.height = \"auto\";\n if (onEntered) {\n onEntered(node, isAppearing, snackId);\n }\n };\n\n const handleExit: TransitionHandlerProps[\"onExit\"] = (node, snackId) => {\n node.style.height = `${getWrapperSize()}px`;\n if (onExit) {\n onExit(node, snackId);\n }\n };\n\n const handleExiting = (node: HTMLElement) => {\n const wrapperSize = getWrapperSize();\n const { duration: transitionDuration, easing } = getTransitionProps({\n style,\n timeout,\n mode: \"exit\",\n });\n\n if (timeout === \"auto\") {\n const duration2 = getAutoHeightDuration(wrapperSize);\n node.style.transitionDuration = `${duration2}ms`;\n autoTransitionDuration.current = duration2;\n } else {\n node.style.transitionDuration =\n typeof transitionDuration === \"string\" ? transitionDuration : `${transitionDuration}ms`;\n }\n\n node.style.height = collapsedSize;\n node.style.transitionTimingFunction = easing || \"\";\n };\n\n const handleAddEndListener = (next: any) => {\n if (timeout === \"auto\") {\n timer.current = setTimeout(next, autoTransitionDuration.current || 0);\n }\n };\n\n return (\n // @ts-ignore\n \n {(state: TransitionStatus, childProps: Record) => (\n \n \n
{children}
\n \n \n )}\n \n );\n});\n\nexport default Collapse;\n","import {\n InternalSnack,\n SlideTransitionDirection,\n SnackbarOrigin,\n SnackbarClassKey,\n SnackbarProviderProps,\n ClassNameMap,\n ContainerClassKey,\n} from \"../types\";\nimport { originKeyExtractor } from \"../utils\";\n\nconst direction: Record = {\n right: \"left\",\n left: \"right\",\n bottom: \"up\",\n top: \"down\",\n};\n\nexport const getSlideDirection = (anchorOrigin: InternalSnack[\"anchorOrigin\"]): SlideTransitionDirection => {\n if (anchorOrigin.horizontal !== \"center\") {\n return direction[anchorOrigin.horizontal];\n }\n return direction[anchorOrigin.vertical];\n};\n\n/** Tranforms classes name */\nexport const toSnackbarAnchorOrigin = (anchorOrigin: SnackbarOrigin): SnackbarClassKey =>\n `anchorOrigin${originKeyExtractor(anchorOrigin)}` as SnackbarClassKey;\n\n/**\n * Omit SnackbarContainer class keys that are not needed for SnackbarItem\n */\nexport const keepSnackbarClassKeys = (\n classes: SnackbarProviderProps[\"classes\"] = {},\n): Partial> => {\n const containerClasses: Record = {\n containerRoot: true,\n containerAnchorOriginTopCenter: true,\n containerAnchorOriginBottomCenter: true,\n containerAnchorOriginTopRight: true,\n containerAnchorOriginBottomRight: true,\n containerAnchorOriginTopLeft: true,\n containerAnchorOriginBottomLeft: true,\n };\n return (Object.keys(classes) as ContainerClassKey[])\n .filter((key) => !containerClasses[key])\n .reduce((obj, key) => ({ ...obj, [key]: classes[key] }), {});\n};\n","/* eslint-disable @typescript-eslint/no-empty-function */\n// @ts-nocheck\nexport default function createChainedFunction(funcs) {\n return funcs.reduce(\n (acc, func) => {\n if (func == null) return acc;\n\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof func !== \"function\") {\n // eslint-disable-next-line no-console\n console.error(\"Invalid Argument Type. must only provide functions, undefined, or null.\");\n }\n }\n\n return function chainedFunction(...args) {\n const argums = [...args];\n acc.apply(this, argums);\n func.apply(this, argums);\n };\n },\n () => {},\n );\n}\n","/**\n * @link https://github.com/mui-org/material-ui/blob/master/packages/material-ui/src/utils/useEventCallback.js\n */\n\n// @ts-nocheck\n\nimport * as React from \"react\";\n\nconst useEnhancedEffect = typeof window !== \"undefined\" ? React.useLayoutEffect : React.useEffect;\n\nexport default function useEventCallback(fn) {\n const ref = React.useRef(fn);\n\n useEnhancedEffect(() => {\n ref.current = fn;\n });\n\n return React.useCallback((...args) => (0, ref.current)(...args), []);\n}\n","/**\n * Credit to MUI team @ https://mui.com\n */\nimport * as React from \"react\";\nimport clsx from \"clsx\";\nimport { ClickAwayListener } from \"@mui/base\";\nimport useEventCallback from \"../utils/useEventCallback\";\nimport { CloseReason, SharedProps, SnackbarKey } from \"../types\";\nimport { ComponentClasses } from \"../utils/styles\";\n\ninterface SnackbarProps extends Required> {\n open: boolean;\n id: SnackbarKey;\n className: string;\n children: JSX.Element;\n autoHideDuration: number | null | undefined;\n SnackbarProps: SharedProps[\"SnackbarProps\"];\n}\n\nconst Snackbar = React.forwardRef((props, ref) => {\n const {\n children,\n className,\n autoHideDuration,\n disableWindowBlurListener = false,\n onClose,\n id,\n open,\n SnackbarProps = {},\n } = props;\n\n const timerAutoHide = React.useRef>();\n\n const handleClose = useEventCallback((...args: [React.SyntheticEvent, CloseReason, SnackbarKey]) => {\n if (onClose) {\n onClose(...args);\n }\n });\n\n const setAutoHideTimer = useEventCallback((autoHideDurationParam: number | null) => {\n if (!onClose || autoHideDurationParam == null) {\n return;\n }\n\n if (timerAutoHide.current) {\n clearTimeout(timerAutoHide.current);\n }\n timerAutoHide.current = setTimeout(() => {\n handleClose(null, \"timeout\", id);\n }, autoHideDurationParam);\n });\n\n React.useEffect(() => {\n if (open) {\n setAutoHideTimer(autoHideDuration);\n }\n\n return () => {\n if (timerAutoHide.current) {\n clearTimeout(timerAutoHide.current);\n }\n };\n }, [open, autoHideDuration, setAutoHideTimer]);\n\n /**\n * Pause the timer when the user is interacting with the Snackbar\n * or when the user hide the window.\n */\n const handlePause = () => {\n if (timerAutoHide.current) {\n clearTimeout(timerAutoHide.current);\n }\n };\n\n /**\n * Restart the timer when the user is no longer interacting with the Snackbar\n * or when the window is shown back.\n */\n const handleResume = React.useCallback(() => {\n if (autoHideDuration != null) {\n setAutoHideTimer(autoHideDuration * 0.5);\n }\n }, [autoHideDuration, setAutoHideTimer]);\n\n const handleMouseEnter: React.MouseEventHandler = (event) => {\n if (SnackbarProps.onMouseEnter) {\n SnackbarProps.onMouseEnter(event);\n }\n handlePause();\n };\n\n const handleMouseLeave: React.MouseEventHandler = (event) => {\n if (SnackbarProps.onMouseLeave) {\n SnackbarProps.onMouseLeave(event);\n }\n handleResume();\n };\n\n const handleClickAway = (event: MouseEvent | TouchEvent) => {\n if (onClose) {\n // @ts-ignore\n onClose(event, \"clickaway\", id);\n }\n };\n\n React.useEffect(() => {\n if (!disableWindowBlurListener && open) {\n window.addEventListener(\"focus\", handleResume);\n window.addEventListener(\"blur\", handlePause);\n\n return () => {\n window.removeEventListener(\"focus\", handleResume);\n window.removeEventListener(\"blur\", handlePause);\n };\n }\n\n return undefined;\n }, [disableWindowBlurListener, handleResume, open]);\n\n return (\n \n {/* @ts-ignore */}\n \n {children}\n \n \n );\n});\n\nexport default Snackbar;\n","import { forwardRef } from \"react\";\nimport clsx from \"clsx\";\nimport { makeStyles } from \"@mui/styles\";\nimport { SnackbarContentProps } from \"../types\";\nimport { breakpoints } from \"../utils\";\n\nconst useStyles = makeStyles({\n root: {\n display: \"flex\",\n flexWrap: \"wrap\",\n flexGrow: 1,\n [breakpoints.upSm]: {\n flexGrow: \"initial\",\n minWidth: \"288px\",\n },\n },\n});\n\nconst SnackbarContent = forwardRef(({ className, ...props }, ref) => {\n const classes = useStyles();\n return
;\n});\n\nexport default SnackbarContent;\n","import { memo, forwardRef, useEffect, useState } from \"react\";\nimport { Box } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport clsx from \"clsx\";\nimport DialogCloseIcon from \"assets/images/icons/dialog-close\";\nimport { Theme } from \"@mui/material/styles\";\nimport SnackbarContent from \"../../SnackbarContent\";\nimport { CustomContentProps } from \"../../types\";\nimport { ComponentClasses } from \"../../utils/styles\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n root: {\n backgroundColor: theme.palette.background.level3, // dark grey\n fontSize: \"0.875rem\",\n lineHeight: 1.43,\n letterSpacing: \"0.01071em\",\n color: \"#fff\",\n alignItems: \"center\",\n padding: \"24px 26px\",\n borderRadius: \"8px\",\n boxShadow:\n \"0px 3px 28px 1px rgba(0, 0, 0, 0.14), 0px 0px 6px 0px rgba(0, 0, 0, 0.12), 0px 0px 16px 9px rgba(0, 0, 0, 0.08)\",\n position: \"relative\",\n paddingRight: \"70px\",\n overflow: \"hidden\",\n display: \"block\",\n \"&.loading\": {\n paddingRight: \"26px\",\n },\n },\n iconWrapper: {\n width: \"42px\",\n },\n message: {\n display: \"flex\",\n alignItems: \"flex-start\",\n },\n messageContent: {\n maxWidth: \"214px\",\n margin: \"0\",\n wordBreak: \"break-word\",\n fontWeight: 500,\n },\n extraContent: {\n paddingLeft: \"42px\",\n marginTop: \"6px\",\n },\n action: {\n display: \"flex\",\n alignItems: \"center\",\n marginLeft: \"auto\",\n paddingLeft: \"16px\",\n marginRight: \"-8px\",\n },\n close: {\n position: \"absolute\",\n right: \"18px\",\n top: \"18px\",\n cursor: \"pointer\",\n color: \"#8492C4\",\n },\n line: {\n position: \"absolute\",\n width: \"100%\",\n height: \"2px\",\n bottom: 0,\n left: 0,\n borderRadius: \"0 0 8px 8px\",\n \"&.tick\": {\n width: \"0px\",\n borderRadius: \"0 0 0 8px\",\n },\n \"&.success\": {\n backgroundColor: theme.colors.successDark,\n },\n \"&.error\": {\n backgroundColor: theme.colors.danger,\n },\n },\n };\n});\n\nconst MaterialDesignContent = forwardRef((props, forwardedRef) => {\n const { id, message, action: componentOrFunctionAction, iconVariant, variant, hideIconVariant, style } = props;\n\n const [tick, setTick] = useState(false);\n\n const classes = useStyles();\n\n const icon = iconVariant[variant];\n\n let action = componentOrFunctionAction;\n if (typeof action === \"function\") {\n action = action(id);\n }\n\n const isLoading = variant === \"loading\";\n\n useEffect(() => {\n setTick(true);\n }, [setTick]);\n\n return (\n \n
\n {!hideIconVariant ?
{icon}
: null}\n
{message}
\n {/* @ts-ignore */}\n {!isLoading ? : \"\"}\n
\n\n {props.extraContent ?
{props.extraContent}
: null}\n\n {action &&
{action}
}\n\n {!isLoading ? (\n \n ) : null}\n \n );\n});\n\nexport default memo(MaterialDesignContent);\n","import React, { useState, useEffect, useRef, useCallback, useMemo } from \"react\";\nimport clsx from \"clsx\";\nimport { makeStyles } from \"@mui/styles\";\nimport Collapse from \"../transitions/Collapse\";\nimport { getSlideDirection, toSnackbarAnchorOrigin, keepSnackbarClassKeys } from \"./utils\";\nimport {\n TransitionHandlerProps,\n SnackbarProviderProps,\n CustomContentProps,\n InternalSnack,\n SharedProps,\n} from \"../types\";\nimport createChainedFunction from \"../utils/createChainedFunction\";\nimport Snackbar from \"./Snackbar\";\nimport MaterialDesignContent from \"../ui/MaterialDesignContent\";\n\nconst useStyles = makeStyles({\n wrappedRoot: {\n position: \"relative\",\n transform: \"translateX(0)\",\n top: 0,\n right: 0,\n bottom: 0,\n left: 0,\n minWidth: \"288px\",\n margin: \"6px 0\",\n },\n});\n\ninterface SnackbarItemProps extends Required> {\n snack: InternalSnack;\n classes: SnackbarProviderProps[\"classes\"];\n onEnter: SnackbarProviderProps[\"onEnter\"];\n onExit: SnackbarProviderProps[\"onExit\"];\n Component?: React.ComponentType;\n}\n\nexport default function SnackbarItem(props: SnackbarItemProps) {\n const styles = useStyles();\n\n const timeout = useRef>();\n const [collapsed, setCollapsed] = useState(true);\n\n const handleClose: NonNullable = createChainedFunction([props.snack.onClose, props.onClose]);\n\n const handleEntered: TransitionHandlerProps[\"onEntered\"] = () => {\n if (props.snack.requestClose) {\n handleClose(null, \"instructed\", props.snack.id);\n }\n };\n\n const handleExitedScreen = useCallback((): void => {\n timeout.current = setTimeout(() => {\n setCollapsed((col) => !col);\n }, 125);\n }, []);\n\n useEffect(\n () => (): void => {\n if (timeout.current) {\n clearTimeout(timeout.current);\n }\n },\n [],\n );\n\n const { snack, classes: allClasses, Component = MaterialDesignContent } = props;\n\n const classes = useMemo(() => keepSnackbarClassKeys(allClasses), [allClasses]);\n\n const {\n open,\n SnackbarProps,\n TransitionComponent,\n TransitionProps,\n transitionDuration,\n disableWindowBlurListener,\n content: componentOrFunctionContent,\n ...otherSnack\n } = snack;\n\n const transitionProps = {\n direction: getSlideDirection(otherSnack.anchorOrigin),\n timeout: transitionDuration,\n ...TransitionProps,\n };\n\n let content = componentOrFunctionContent;\n if (typeof content === \"function\") {\n content = content(otherSnack.id, otherSnack.message);\n }\n\n const callbacks: { [key in keyof TransitionHandlerProps]?: any } = (\n [\"onEnter\", \"onEntered\", \"onExit\", \"onExited\"] as (keyof TransitionHandlerProps)[]\n ).reduce(\n (acc, cbName) => ({\n ...acc,\n [cbName]: createChainedFunction([props.snack[cbName], props[cbName]]),\n }),\n {},\n );\n\n return (\n \n \n \n {/* @ts-ignore */}\n {content || handleClose(null, \"instructed\", props.snack.id)} />}\n \n \n \n );\n}\n","import React, { memo } from \"react\";\nimport clsx from \"clsx\";\nimport { makeStyles } from \"@mui/styles\";\nimport createTransition from \"../transitions/createTransition\";\nimport { ComponentClasses } from \"../utils/styles\";\nimport { breakpoints, originKeyExtractor } from \"../utils\";\nimport { ContainerClassKey, SnackbarProviderProps } from \"../types\";\n\nconst indents = {\n view: { default: 20, dense: 4 },\n snackbar: { default: 6, dense: 2 },\n};\n\nconst collapseWrapper = `.${ComponentClasses.CollapseWrapper}`;\n\nconst xsWidthMargin = 16;\n\nconst useStyles = makeStyles({\n root: {\n boxSizing: \"border-box\",\n display: \"flex\",\n maxHeight: \"100%\",\n position: \"fixed\",\n zIndex: 1400,\n height: \"auto\",\n width: \"auto\",\n transition: createTransition([\"top\", \"right\", \"bottom\", \"left\", \"max-width\"], { duration: 300, easing: \"ease\" }),\n // container itself is invisible and should not block clicks, clicks should be passed to its children\n // a pointerEvents: all is applied in the collapse component\n pointerEvents: \"none\",\n [collapseWrapper]: {\n padding: `${indents.snackbar.default}px 0px`,\n transition: \"padding 300ms ease 0ms\",\n },\n maxWidth: `calc(100% - ${indents.view.default * 2}px)`,\n [breakpoints.downXs]: {\n width: \"100%\",\n maxWidth: `calc(100% - ${xsWidthMargin * 2}px)`,\n },\n },\n rootDense: {\n [collapseWrapper]: {\n padding: `${indents.snackbar.dense}px 0px`,\n },\n },\n top: {\n top: \"60px\",\n flexDirection: \"column\",\n },\n bottom: {\n bottom: `${indents.view.default - indents.snackbar.default}px`,\n flexDirection: \"column-reverse\",\n },\n left: {\n left: `${indents.view.default}px`,\n [breakpoints.upSm]: {\n alignItems: \"flex-start\",\n },\n [breakpoints.downXs]: {\n left: `${xsWidthMargin}px`,\n },\n },\n right: {\n right: `${indents.view.default}px`,\n [breakpoints.upSm]: {\n alignItems: \"flex-end\",\n },\n [breakpoints.downXs]: {\n right: `${xsWidthMargin}px`,\n },\n },\n center: {\n left: \"50%\",\n transform: \"translateX(-50%)\",\n [breakpoints.upSm]: {\n alignItems: \"center\",\n },\n },\n});\n\ninterface SnackbarContainerProps {\n children: React.ReactNode;\n dense: SnackbarProviderProps[\"dense\"];\n anchorOrigin: NonNullable;\n classes: SnackbarProviderProps[\"classes\"];\n}\n\nconst SnackbarContainer: React.FC = (props) => {\n const { classes = {}, anchorOrigin, dense, children } = props;\n const styles = useStyles();\n\n const combinedClassname = clsx(\n ComponentClasses.SnackbarContainer,\n styles[anchorOrigin.vertical],\n styles[anchorOrigin.horizontal],\n { [styles.rootDense]: dense },\n styles.root, // root should come after others to override maxWidth\n classes.containerRoot,\n classes[`containerAnchorOrigin${originKeyExtractor(anchorOrigin)}` as ContainerClassKey],\n );\n\n return
{children}
;\n};\n\nexport default memo(SnackbarContainer);\n","import React, { Component } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport clsx from \"clsx\";\nimport SnackbarContext from \"../SnackbarContext\";\nimport { originKeyExtractor, isDefined } from \"../utils\";\nimport { defaults, merge } from \"./merger\";\nimport SnackbarItem from \"../SnackbarItem\";\nimport SnackbarContainer from \"../SnackbarContainer\";\nimport warning from \"../utils/warning\";\nimport {\n SnackbarProviderProps,\n SnackbarKey,\n ProviderContext,\n TransitionHandlerProps,\n InternalSnack,\n OptionsObject,\n SharedProps,\n} from \"../types\";\nimport createChainedFunction from \"../utils/createChainedFunction\";\n\ntype Reducer = (state: State) => State;\ntype SnacksByPosition = { [key: string]: InternalSnack[] };\n\ninterface State {\n snacks: InternalSnack[];\n queue: InternalSnack[];\n contextValue: ProviderContext;\n}\n\nclass SnackbarProvider extends Component {\n constructor(props: SnackbarProviderProps) {\n super(props);\n this.state = {\n snacks: [],\n queue: [], // eslint-disable-line react/no-unused-state\n contextValue: {\n enqueueSnackbar: this.enqueueSnackbar,\n closeSnackbar: this.closeSnackbar,\n },\n };\n }\n\n get maxSnack(): number {\n return this.props.maxSnack || defaults.maxSnack;\n }\n\n /**\n * Adds a new snackbar to the queue to be presented.\n * Returns generated or user defined key referencing the new snackbar or null\n */\n enqueueSnackbar = (message: string | React.ReactNode, optsOrUndefined: OptionsObject = {}): SnackbarKey => {\n const opts = optsOrUndefined;\n\n const { key, preventDuplicate, ...options } = opts;\n\n const hasSpecifiedKey = isDefined(key);\n const id = hasSpecifiedKey ? (key as SnackbarKey) : new Date().getTime() + Math.random();\n\n const merger = merge(options, this.props);\n const snack: InternalSnack = {\n id,\n ...options,\n message,\n open: true,\n entered: false,\n requestClose: false,\n persist: merger(\"persist\"),\n action: merger(\"action\"),\n content: merger(\"content\"),\n variant: merger(\"variant\"),\n anchorOrigin: merger(\"anchorOrigin\"),\n disableWindowBlurListener: merger(\"disableWindowBlurListener\"),\n autoHideDuration: merger(\"autoHideDuration\"),\n hideIconVariant: merger(\"hideIconVariant\"),\n TransitionComponent: merger(\"TransitionComponent\"),\n transitionDuration: merger(\"transitionDuration\"),\n TransitionProps: merger(\"TransitionProps\", true),\n iconVariant: merger(\"iconVariant\", true),\n style: merger(\"style\", true),\n SnackbarProps: merger(\"SnackbarProps\", true),\n className: clsx(this.props.className, options.className),\n };\n\n if (snack.persist) {\n snack.autoHideDuration = undefined;\n }\n\n this.setState((state) => {\n if ((preventDuplicate === undefined && this.props.preventDuplicate) || preventDuplicate) {\n const compareFunction = (item: InternalSnack): boolean =>\n hasSpecifiedKey ? item.id === id : item.message === message;\n\n const inQueue = state.queue.findIndex(compareFunction) > -1;\n const inView = state.snacks.findIndex(compareFunction) > -1;\n if (inQueue || inView) {\n return state;\n }\n }\n\n return this.handleDisplaySnack({\n ...state,\n queue: [...state.queue, snack],\n });\n });\n\n return id;\n };\n\n /**\n * Reducer: Display snack if there's space for it. Otherwise, immediately\n * begin dismissing the oldest message to start showing the new one.\n */\n handleDisplaySnack: Reducer = (state) => {\n const { snacks } = state;\n if (snacks.length >= this.maxSnack) {\n return this.handleDismissOldest(state);\n }\n return this.processQueue(state);\n };\n\n /**\n * Reducer: Display items (notifications) in the queue if there's space for them.\n */\n processQueue: Reducer = (state) => {\n const { queue, snacks } = state;\n if (queue.length > 0) {\n return {\n ...state,\n snacks: [...snacks, queue[0]],\n queue: queue.slice(1, queue.length),\n };\n }\n return state;\n };\n\n /**\n * Reducer: Hide oldest snackbar on the screen because there exists a new one which we have to display.\n * (ignoring the one with 'persist' flag. i.e. explicitly told by user not to get dismissed).\n *\n * Note 1: If there is already a message leaving the screen, no new messages are dismissed.\n * Note 2: If the oldest message has not yet entered the screen, only a request to close the\n * snackbar is made. Once it entered the screen, it will be immediately dismissed.\n */\n handleDismissOldest: Reducer = (state) => {\n if (state.snacks.some((item) => !item.open || item.requestClose)) {\n return state;\n }\n\n let popped = false;\n let ignore = false;\n\n const persistentCount = state.snacks.reduce((acc, current) => acc + (current.open && current.persist ? 1 : 0), 0);\n\n if (persistentCount === this.maxSnack) {\n warning(\"NO_PERSIST_ALL\");\n ignore = true;\n }\n\n const snacks = state.snacks.map((item) => {\n if (!popped && (!item.persist || ignore)) {\n popped = true;\n\n if (!item.entered) {\n return {\n ...item,\n requestClose: true,\n };\n }\n\n if (item.onClose) {\n item.onClose(null, \"maxsnack\", item.id);\n }\n\n if (this.props.onClose) {\n this.props.onClose(null, \"maxsnack\", item.id);\n }\n\n return {\n ...item,\n open: false,\n };\n }\n\n return { ...item };\n });\n\n return { ...state, snacks };\n };\n\n /**\n * Set the entered state of the snackbar with the given key.\n */\n handleEnteredSnack: TransitionHandlerProps[\"onEntered\"] = (node, isAppearing, key) => {\n if (!isDefined(key)) {\n throw new Error(\"handleEnteredSnack Cannot be called with undefined key\");\n }\n\n this.setState(({ snacks }) => ({\n snacks: snacks.map((item) => (item.id === key ? { ...item, entered: true } : { ...item })),\n }));\n };\n\n /**\n * Hide a snackbar after its timeout.\n */\n handleCloseSnack: NonNullable = (event, reason, key) => {\n // should not use createChainedFunction for onClose.\n // because this.closeSnackbar called this function\n if (this.props.onClose) {\n this.props.onClose(event, reason, key);\n }\n\n if (reason === \"clickaway\") {\n return;\n }\n\n const shouldCloseAll = key === undefined;\n\n this.setState(({ snacks, queue }) => ({\n snacks: snacks.map((item) => {\n if (!shouldCloseAll && item.id !== key) {\n return { ...item };\n }\n\n return item.entered ? { ...item, open: false } : { ...item, requestClose: true };\n }),\n queue: queue.filter((item) => item.id !== key), // eslint-disable-line react/no-unused-state\n }));\n };\n\n /**\n * Close snackbar with the given key\n */\n closeSnackbar: ProviderContext[\"closeSnackbar\"] = (key) => {\n // call individual snackbar onClose callback passed through options parameter\n const toBeClosed = this.state.snacks.find((item) => item.id === key);\n if (isDefined(key) && toBeClosed && toBeClosed.onClose) {\n toBeClosed.onClose(null, \"instructed\", key);\n }\n\n this.handleCloseSnack(null, \"instructed\", key);\n };\n\n /**\n * When we set open attribute of a snackbar to false (i.e. after we hide a snackbar),\n * it leaves the screen and immediately after leaving animation is done, this method\n * gets called. We remove the hidden snackbar from state and then display notifications\n * waiting in the queue (if any). If after this process the queue is not empty, the\n * oldest message is dismissed.\n */\n handleExitedSnack: TransitionHandlerProps[\"onExited\"] = (node, key) => {\n if (!isDefined(key)) {\n throw new Error(\"handleExitedSnack Cannot be called with undefined key\");\n }\n\n this.setState((state) => {\n const newState = this.processQueue({\n ...state,\n snacks: state.snacks.filter((item) => item.id !== key),\n });\n\n if (newState.queue.length === 0) {\n return newState;\n }\n\n return this.handleDismissOldest(newState);\n });\n };\n\n render(): JSX.Element {\n const { contextValue } = this.state;\n const { domRoot, children, dense = false, Components = {}, classes } = this.props;\n\n const categ = this.state.snacks.reduce((acc, current) => {\n const category = originKeyExtractor(current.anchorOrigin);\n const existingOfCategory = acc[category] || [];\n return {\n ...acc,\n [category]: [...existingOfCategory, current],\n };\n }, {});\n\n const snackbars = Object.keys(categ).map((origin) => {\n const snacks = categ[origin];\n const [nomineeSnack] = snacks;\n\n return (\n \n {snacks.map((snack) => (\n \n ))}\n \n );\n });\n\n return (\n \n {children}\n {domRoot ? createPortal(snackbars, domRoot) : snackbars}\n \n );\n }\n}\n\nexport default SnackbarProvider;\n","import { useContext } from \"react\";\nimport SnackbarContext from \"./SnackbarContext\";\nimport { ProviderContext } from \"./types\";\n\nexport default (): ProviderContext => useContext(SnackbarContext);\n","import React from \"react\";\nimport { Grid, Menu, MenuItem, Pagination as PaginationComponent } from \"@mui/material\";\nimport { MainCard } from \"components/index\";\nimport ExpandMoreRoundedIcon from \"@mui/icons-material/ExpandMoreRounded\";\n\nconst PageSizeList = [10, 50, 100];\n\nexport type PaginationType = {\n pageNum: number;\n pageSize: number;\n};\n\nexport interface PaginationProps {\n count: number;\n onPageChange?: (pagination: PaginationType) => void;\n onPageSizeChange?: (pagination: PaginationType) => void;\n defaultPageSize?: number;\n flexEnd?: boolean;\n showPageSize?: boolean;\n}\n\nexport default ({\n count,\n onPageChange,\n onPageSizeChange,\n defaultPageSize = 10,\n flexEnd,\n showPageSize = false,\n}: PaginationProps) => {\n const [pageNum, setPageNum] = React.useState(1);\n const [pageSize, setPageSize] = React.useState(defaultPageSize);\n const [anchorEl, setAnchorEl] = React.useState(null);\n\n const handleClick = (event: any) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const paginationChange = (e: any, pageNum: number): void => {\n setPageNum(pageNum);\n if (onPageChange) {\n onPageChange({\n pageNum,\n pageSize,\n });\n }\n };\n\n const pageSizeChange = (pageSize: number) => {\n handleClose();\n setPageSize(pageSize);\n setPageNum(1);\n if (onPageSizeChange) {\n onPageSizeChange({\n pageNum: 1,\n pageSize,\n });\n }\n };\n\n return (\n \n \n \n \n \n \n \n \n \n {showPageSize && (\n \n \n \n {pageSize} Rows \n \n \n \n {PageSizeList.map((pageSize) => (\n pageSizeChange(pageSize)}>\n {pageSize} Rows\n \n ))}\n \n \n )}\n \n \n );\n};\n","import { Box, Typography } from \"@mui/material\";\nimport { TOKEN_STANDARD } from \"constants/tokens\";\n\nexport const StandardText = {\n [TOKEN_STANDARD.DIP20]: \"DIP20\",\n [TOKEN_STANDARD.DIP20_WICP]: \"DIP20\",\n [TOKEN_STANDARD.DIP20_XTC]: \"DIP20\",\n [TOKEN_STANDARD.EXT]: \"EXT\",\n [TOKEN_STANDARD.ICP]: \"--\",\n [TOKEN_STANDARD.ICRC1]: \"ICRC-1\",\n [TOKEN_STANDARD.ICRC2]: \"ICRC-2\",\n};\n\nexport const StandardLabelBg = {\n [TOKEN_STANDARD.DIP20]: \"#606AA5\",\n [TOKEN_STANDARD.DIP20_WICP]: \"#606AA5\",\n [TOKEN_STANDARD.DIP20_XTC]: \"#606AA5\",\n [TOKEN_STANDARD.EXT]: \"#4E9A8C\",\n [TOKEN_STANDARD.ICP]: \"transparent\",\n [TOKEN_STANDARD.ICRC1]: \"#2D54BA\",\n [TOKEN_STANDARD.ICRC2]: \"#2D98BA\",\n};\n\nexport interface TokenStandardLabelProps {\n standard: TOKEN_STANDARD | undefined | null;\n borderRadius?: string;\n height?: string;\n fontSize?: string;\n width?: string;\n}\n\nexport default function TokenStandardLabel({\n standard,\n height,\n fontSize = \"12px\",\n borderRadius = \"4px\",\n width,\n}: TokenStandardLabelProps) {\n return (\n \n \n \n {standard ? StandardText[standard] : \"--\"}\n \n \n \n );\n}\n","/* eslint-disable global-require */\n/* eslint-disable @typescript-eslint/no-var-requires */\nimport { actor, Actor } from \"@icpswap/actor\";\nimport { network, NETWORK, host } from \"./server\";\n\nlet CanisterIdsJson: { [key: string]: { [key1: string]: string } } = {};\n\ntry {\n const canister_ids = require(\"../canister_ids.json\");\n const temp_canister_ids = require(\"../temp_canister_ids.json\");\n\n CanisterIdsJson = {\n ...canister_ids,\n ...temp_canister_ids,\n };\n} catch (error) {\n console.error(error);\n}\n\nconst canisterIds: { [key: string]: string } = {};\nObject.keys(CanisterIdsJson).forEach((canister) => {\n canisterIds[canister] = CanisterIdsJson[canister][network];\n});\n\nexport const getCanisterId = (canisterName: string): string => {\n return canisterIds[canisterName];\n};\n\nexport const CANISTER_NAMES = {\n TOKEN_CANISTER_CONTROLLER: \"TokenCanisterController\",\n TOKEN_SERVICE: \"token\",\n SWAP_POSITION_MANAGER: \"SwapPositionManager\",\n WICP: network === NETWORK.IC ? \"wicp\" : \"WICP_T\",\n FILE: \"FileAssets\",\n NFTCanisterController: \"V3NFTCanisterController\",\n SwapNFTCanister: \"V3SwapNFTCanister\",\n V3NFTCanister: \"NFTDynamicCanister\",\n V3TradeStat: \"V3TradeStat\",\n NFTTrade: \"V3TradeCanister\",\n FileCanister: \"FileCanister\",\n V1StakingController: \"SwapStakerController\",\n SingleSmartChef: \"SingleSmartChef\",\n SwapStaker: \"SwapStaker\",\n VOTE: \"Vote\",\n FileActor: \"File\",\n SwapRecord: \"BaseDataStructure\",\n SwapGraphPool: \"Pools\",\n TokenList: \"TokenList\",\n\n V3SwapFactory: \"SwapFactory\",\n V3SwapPool: \"SwapPool\",\n V3SwapNFT: \"SwapNFT\",\n PassCodeManager: \"PassCodeManager\",\n\n ClaimStorage: \"ClaimStorage\",\n\n VotingFileCanister: \"VotingFileCanister\",\n FarmController: \"FarmController\",\n StakingTokenController: \"StakingTokenController\",\n StakeIndex: \"StakeIndex\",\n\n NodeIndex: \"node_index\",\n GlobalIndex: \"global_index\",\n};\n\nexport const fileCanisterId = getCanisterId(CANISTER_NAMES.FILE);\nexport const WICPCanisterId = getCanisterId(CANISTER_NAMES.WICP);\nexport const swapPositionManagerCanisterId = getCanisterId(CANISTER_NAMES.SWAP_POSITION_MANAGER);\nexport const SwapNFTCanisterId = getCanisterId(CANISTER_NAMES.SwapNFTCanister);\nexport const NFTCanisterController = getCanisterId(CANISTER_NAMES.NFTCanisterController);\nexport const FileCanisterId = getCanisterId(CANISTER_NAMES.FileActor);\nexport const ClaimStorageId = getCanisterId(CANISTER_NAMES.ClaimStorage);\nexport const NFTTradeTokenCanisterId = WICPCanisterId;\nexport const V3SwapNFTCanisterId = getCanisterId(CANISTER_NAMES.V3SwapNFT);\nexport const VotingFileCanisterId = getCanisterId(CANISTER_NAMES.VotingFileCanister);\nexport const FarmControllerId = getCanisterId(CANISTER_NAMES.FarmController);\nexport const NodeIndexId = getCanisterId(CANISTER_NAMES.NodeIndex);\nexport const GlobalId = getCanisterId(CANISTER_NAMES.GlobalIndex);\nexport const PassCodeManagerId = getCanisterId(CANISTER_NAMES.PassCodeManager);\n\nActor.setActorCanisterIds(canisterIds);\nactor.setHost(host);\n\nexport const ALL_CANISTER_IDS = [...Object.values(canisterIds)];\n\nexport { canisterIds };\n","export const ckBTC_ID = \"mxzaz-hqaaa-aaaar-qaada-cai\";\n\nexport const ckBTC_MINTER_ID = \"mqygn-kiaaa-aaaar-qaadq-cai\";\n\nexport const ckBTC_DASHBOARD = \"https://dashboard.internetcomputer.org/bitcoin\";\n\nexport const DISSOLVE_FEE = \"0.0000001\";\n","import { ChainId } from \"@icpswap/constants\";\nimport { EXPLORER_MAPS, chain, EXPLORER_BLOCK_LINKS, EXPLORER_TX_LINKS, getMinterDashboard } from \"constants/web3\";\n\nconst MINTER_ID = {\n [ChainId.MAINNET]: \"sv3dd-oaaaa-aaaar-qacoa-cai\",\n [ChainId.SEPOLIA]: \"jzenf-aiaaa-aaaar-qaa7q-cai\",\n};\n\nexport const MINTER_CANISTER_ID = MINTER_ID[chain];\n\nexport const ERC20_MINTER_DASHBOARD = getMinterDashboard(MINTER_ID[chain]);\n\nexport const ckERC20LedgerDashboardLink = (ledger_id: string) =>\n `https://dashboard.internetcomputer.org/canister/${ledger_id}`;\n\nexport const EXPLORER_TX_LINK = EXPLORER_TX_LINKS[chain];\n\nexport const EXPLORER_BLOCK_LINK = EXPLORER_BLOCK_LINKS[chain];\n\nexport const EXPLORER_ADDRESS_LINK = EXPLORER_MAPS[chain];\n\nexport enum WithdrawalState {\n TxFinalized = \"TxFinalized\",\n TxSent = \"TxSent\",\n TxCreated = \"TxCreated\",\n Pending = \"Pending\",\n}\n","import { ChainId } from \"@icpswap/constants\";\nimport { chain, EXPLORER_TX_LINKS, EXPLORER_BLOCK_LINKS, EXPLORER_MAPS } from \"constants/web3\";\nimport { ckETH as ckETHToken, ckSepoliaETH } from \"@icpswap/tokens\";\n\nconst API_LINKS = {\n [ChainId.MAINNET]: \"https://api.etherscan.io/api\",\n [ChainId.SEPOLIA]: \"https://api-sepolia.etherscan.io/api\",\n};\n\nconst LEDGER_ID = {\n [ChainId.MAINNET]: \"ss2fx-dyaaa-aaaar-qacoq-cai\",\n [ChainId.SEPOLIA]: \"apia6-jaaaa-aaaar-qabma-cai\",\n};\n\nconst MINTER_ID = {\n [ChainId.MAINNET]: \"sv3dd-oaaaa-aaaar-qacoa-cai\",\n [ChainId.SEPOLIA]: \"jzenf-aiaaa-aaaar-qaa7q-cai\",\n};\n\nconst DASHBOARD = {\n [ChainId.MAINNET]: `https://dashboard.internetcomputer.org/ethereum`,\n [ChainId.SEPOLIA]: `https://${MINTER_ID[ChainId.SEPOLIA]}.raw.icp0.io/dashboard`,\n};\n\nconst CANISTER = {\n [ChainId.MAINNET]: `https://dashboard.internetcomputer.org/canister/${LEDGER_ID[chain]}`,\n [ChainId.SEPOLIA]: `https://dashboard.internetcomputer.org/canister/${LEDGER_ID[chain]}`,\n};\n\nconst ETH_MINT_CONTRACTS = {\n [ChainId.MAINNET]: `0x7574eb42ca208a4f6960eccafdf186d627dcc175`,\n [ChainId.SEPOLIA]: `0xb44B5e756A894775FC32EDdf3314Bb1B1944dC34`,\n};\n\nexport const ckETH_LEDGER_ID = LEDGER_ID[chain];\n\nexport const ckETH_MINTER_ID = MINTER_ID[chain];\n\nexport const ckETH_DASHBOARD = DASHBOARD[chain];\n\nexport const ckETH_CANISTER = CANISTER[chain];\n\nexport const ckETH_MINTER_CONTRACT = ETH_MINT_CONTRACTS[chain];\n\nexport const API_LINK = API_LINKS[chain];\n\nexport const EXPLORER_TX_LINK = EXPLORER_TX_LINKS[chain];\n\nexport const EXPLORER_BLOCK_LINK = EXPLORER_BLOCK_LINKS[chain];\n\nexport const EXPLORER_ADDRESS_LINK = EXPLORER_MAPS[chain];\n\nexport const EXPLORER_CONTRACT_LINK = `${EXPLORER_MAPS[chain]}/${ckETH_MINTER_CONTRACT}`;\n\nexport const DISSOLVE_FEE = \"0.0000001\";\n\nexport const MIN_WITHDRAW_AMOUNT = 30000000000000000;\n\nexport const ckETH = chain === ChainId.MAINNET ? ckETHToken : ckSepoliaETH;\n","export const ICP_TRANSFER_TYPE_FORMAT: { [key: string]: string } = {\n TRANSACTION: \"transfer\",\n};\n\nexport const CYCLES_MINTING_CANISTER_ID = \"rkp4c-7iaaa-aaaaa-aaaca-cai\";\n\nexport { LEDGER_CANISTER_ID } from \"@icpswap/constants\";\n","export enum ResultStatus {\n ERROR = \"err\",\n OK = \"ok\",\n}\n\nexport type StatusResult = {\n readonly status: ResultStatus;\n readonly data: T | string;\n};\n\nexport type StatusResult1 = {\n readonly status: ResultStatus;\n readonly data?: T;\n readonly message: string;\n};\n\nexport type CallResult = {\n readonly result: ApiResult;\n readonly loading: boolean;\n};\n\nexport type ApiResult = null | undefined | T;\n\nexport type PaginationResult = {\n totalElements: number;\n offset: number;\n limit: number;\n content: T[];\n};\n\nexport type DynamicObject = {\n [key: string]: any;\n};\n","import { isNullArgs } from \"@icpswap/utils\";\nimport { network, NETWORK } from \"./server\";\n\nexport const ASSETS_DECIMALS = 2;\nexport const ICP_BALANCE_DECIMALS = 4;\nexport const ICS_BALANCE_DECIMALS = 2;\nexport const MAX_TOKEN_MINT_NAME_LENGTH = 30;\nexport const MAX_TOKEN_MINT_SYMBOL_LENGTH = 15;\n\nexport const NONE_PRICE_SYMBOL = \"--\";\nexport const DEFAULT_PERCENT_SYMBOL = \"0.00%\";\nexport const TOKEN_AMOUNT_DISPLAY_DECIMALS = 8;\nexport const NONE_TOKEN_SYMBOL = \"--\";\nexport const EMPTY_CONTENT_SYMBOL = \"--\";\n\nexport const REACT_GA_TRACKING_ID = \"UA-200662567-2\";\n\nexport const MINT_TOKEN_CYCLES = 1860000000000;\n\nexport const MINT_NFT_PAY_MOUNT = 10;\nexport const NFT_UPLOAD_FILES = [\n \"image\",\n \"video\",\n \"audio\",\n \"txt\",\n \"js\",\n \"ts\",\n \"pdf\",\n \"json\",\n \"ppt\",\n \"pptx\",\n \"xls\",\n \"xlsx\",\n \"docx\",\n \"doc\",\n];\n\nexport const CurrencyAmountFormatDecimals = (decimals: number | bigint | undefined) => {\n if (isNullArgs(decimals)) return TOKEN_AMOUNT_DISPLAY_DECIMALS;\n if (Number(decimals) > TOKEN_AMOUNT_DISPLAY_DECIMALS) return TOKEN_AMOUNT_DISPLAY_DECIMALS;\n return Number(decimals);\n};\n\nexport const INFO_URL_MAP = {\n [NETWORK.IC]: \"https://info.icpswap.com\",\n};\n\nexport const INFO_URL = INFO_URL_MAP[network];\n\nexport const APP_URL = \"https://app.icpswap.com\";\n\nexport const DAYJS_FORMAT = \"YYYY-MM-DD HH:mm:ss\";\n\nexport const V2SwapLink = \"https://app.icpswap.com\";\n\nexport const V3SwapLink = \"https://app.icpswap.com\";\n\nexport const AnonymousPrincipal = \"2vxsx-fae\";\n\nexport const MaxInt64 = (2 ** 64 - 1).toString();\nexport const APPROVE_MAX_NUMBER = Number.MAX_VALUE;\n\nexport const SAFE_INTEGER_LENGTH = 12;\nexport const SAFE_DECIMALS_LENGTH = 8;\nexport const MAX_SWAP_INPUT_LENGTH = 25;\n\nexport * from \"./canister\";\nexport * from \"./server\";\nexport * from \"./tokens\";\nexport * from \"./swap\";\nexport * from \"./nft\";\nexport * from \"./types\";\nexport * from \"./icp\";\nexport * from \"./wallet\";\nexport * from \"./ckERC20\";\n","export const SUPPORTED_LOCALES = [\n // order as they appear in the language dropdown\n \"en-US\",\n \"zh-CN\",\n \"zh-TW\",\n \"vi-VN\",\n \"ja-JP\",\n \"ko-KR\",\n \"it-IT\",\n \"es-ES\",\n] as const;\n\nexport type SupportedLocale = (typeof SUPPORTED_LOCALES)[number];\n\nexport const DEFAULT_LOCALE: SupportedLocale = \"en-US\";\n\nexport const LOCALE_LABEL: { [locale in SupportedLocale]: string } = {\n \"en-US\": \"English\",\n \"ja-JP\": \"日本語\",\n \"ko-KR\": \"한국어\",\n \"vi-VN\": \"Tiếng Việt\",\n \"zh-CN\": \"简体中文\",\n \"zh-TW\": \"繁体中文\",\n \"it-IT\": \"Italiano\",\n \"es-ES\": \"Español\",\n // 'af-ZA': 'Afrikaans',\n // 'ar-SA': 'العربية',\n // 'ca-ES': 'Català',\n // 'cs-CZ': 'čeština',\n // 'da-DK': 'dansk',\n // 'de-DE': 'Deutsch',\n // 'el-GR': 'ελληνικά',\n // 'en-US': 'English',\n\n // 'fi-FI': 'Suomalainen',\n // 'fr-FR': 'français',\n // 'he-IL': 'עִברִית',\n // 'hu-HU': 'Magyar',\n // 'id-ID': 'bahasa Indonesia',\n // 'ko-KR': '한국어',\n // 'nl-NL': 'Nederlands',\n // 'no-NO': 'norsk',\n // 'pl-PL': 'Polskie',\n // 'pt-BR': 'português',\n // 'pt-PT': 'português',\n // 'ro-RO': 'Română',\n // 'ru-RU': 'русский',\n // 'sr-SP': 'Српски',\n // 'sv-SE': 'svenska',\n // 'tr-TR': 'Türkçe',\n // 'uk-UA': 'Український',\n};\n\nexport const getLocalLabel = (local: SupportedLocale) => {\n return LOCALE_LABEL[local];\n};\n","import { Percent, BigintIsh } from \"@icpswap/swap-sdk\";\n\nexport enum Bound {\n LOWER = \"LOWER\",\n UPPER = \"UPPER\",\n}\n\nexport enum FIELD {\n CURRENCY_A = \"CURRENCY_A\",\n CURRENCY_B = \"CURRENCY_B\",\n}\n\nexport const DEFAULT_FEE = 3000;\n\nexport enum FeeAmount {\n LOW = 500,\n MEDIUM = 3000,\n HIGH = 10000,\n}\n\nexport const TICK_SPACING = {\n [FeeAmount.LOW]: 10,\n [FeeAmount.MEDIUM]: 60,\n [FeeAmount.HIGH]: 200,\n};\n\nexport enum BURN_FIELD {\n LIQUIDITY_PERCENT = \"LIQUIDITY_PERCENT\",\n LIQUIDITY = \"LIQUIDITY\",\n CURRENCY_A = \"CURRENCY_A\",\n CURRENCY_B = \"CURRENCY_B\",\n}\n\nexport const DEFAULT_SWAP_SLIPPAGE = 500;\n\nexport const DEFAULT_MINT_SLIPPAGE = 500;\n\nexport const DEFAULT_BURN_SLIPPAGE = 5000;\n\nexport const SLIPPAGE_TOLERANCE: { id: string; value: number }[] = [\n { id: \"swap\", value: 100 },\n { id: \"burn\", value: 500 },\n { id: \"mint\", value: 5000 },\n];\n\nexport const MAX_SLIPPAGE_TOLERANCE = 50000;\n\nexport const WARNING_SLIPPAGE_TOLERANCE = 20000;\n\nexport const getDefaultSlippageTolerance = (type: string) =>\n SLIPPAGE_TOLERANCE.filter((item) => item.id === type)[0]?.value || 500;\n\nexport const slippageToPercent = (slippage: BigintIsh) => new Percent(slippage, 1000 * 100);\n\nexport const MAX_TRANSACTIONS_DEADLINE = 180;\nexport const DEFAULT_TRANSACTIONS_DEADLINE = 30;\n\nexport const DEFAULT_MULTIPLE_APPROVE = 5;\n\nexport const ZOOM_LEVEL_INITIAL_MIN_MAX = {\n [FeeAmount.LOW]: {\n min: 0.999,\n max: 1.001,\n },\n [FeeAmount.MEDIUM]: {\n min: 0.5,\n max: 2,\n },\n [FeeAmount.HIGH]: {\n min: 0.5,\n max: 2,\n },\n};\n\nexport const ADD_LIQUIDITY_REFRESH_KEY = \"AddLiquidity\";\nexport const INCREASE_LIQUIDITY_REFRESH_KEY = \"IncreaseLiquidity\";\n","import { V3SwapNFTCanisterId } from \"constants/canister\";\nimport V2Ids from \"constants/swap-v2-ids.json\";\n\nexport const OFFICIAL_CANISTER_IDS = [\n \"e7xmv-vyaaa-aaaag-qahha-cai\",\n \"ewuhj-dqaaa-aaaag-qahgq-cai\",\n \"brx5n-xqaaa-aaaan-qanqa-cai\",\n V2Ids.V3SwapNFTCanister.ic,\n V3SwapNFTCanisterId,\n];\n\n// for controller get canister's image\nexport const OLD_CANISTER_IDS = [\n \"ewuhj-dqaaa-aaaag-qahgq-cai\",\n \"e7xmv-vyaaa-aaaag-qahha-cai\",\n \"ey3ct-4aaaa-aaaak-aaueq-cai\",\n \"wpojy-qiaaa-aaaak-acfva-cai\",\n \"brx5n-xqaaa-aaaan-qanqa-cai\",\n V2Ids.V3SwapNFTCanister.ic,\n V3SwapNFTCanisterId,\n];\n\nexport type SOCIAL_LINK_TYPE = {\n label: string;\n id: string;\n value: string;\n};\n\nexport const SOCIAL_LINKS: SOCIAL_LINK_TYPE[] = [\n {\n label: \"Website\",\n id: \"Website\",\n value: \"Website\",\n },\n {\n label: \"Github\",\n id: \"Github\",\n value: \"Github\",\n },\n {\n label: \"Discord\",\n id: \"Discord\",\n value: \"Discord\",\n },\n {\n label: \"Twitter\",\n id: \"Twitter\",\n value: \"Twitter\",\n },\n {\n label: \"Telegram\",\n id: \"Telegram\",\n value: \"Telegram\",\n },\n {\n label: \"Instagram\",\n id: \"Instagram\",\n value: \"Instagram\",\n },\n {\n label: \"Medium\",\n id: \"Medium\",\n value: \"Medium\",\n },\n {\n label: \"DSCVR\",\n id: \"Dscvr\",\n value: \"Dscvr\",\n },\n {\n label: \"Distrikt\",\n id: \"Distrikt\",\n value: \"Distrikt\",\n },\n\n {\n label: \"Other\",\n id: \"Other\",\n value: \"Other\",\n },\n];\n\nexport const NFTTradeFee = 0.01;\n\nexport const MAX_NFT_MINT_SUPPLY = 10000;\n\nexport enum NFT_STANDARDS {\n ICPSwap = \"ICPSwap\",\n}\n","export enum NETWORK {\n IC = \"ic\",\n LOCAL = \"local\",\n}\n\nexport const hostMap = {\n [NETWORK.LOCAL]: `http://localhost:8000`,\n [NETWORK.IC]: \"https://icp0.io\",\n};\n\nexport const network = process.env.REACT_APP_IC_NETWORK as NETWORK;\n\nexport const isIC: boolean = network === NETWORK.IC;\nexport const isLocal: boolean = network === NETWORK.LOCAL;\n\nexport const host = hostMap[network];\n\nexport const ICHost = hostMap[NETWORK.IC];\n\nexport const localhost = hostMap[NETWORK.LOCAL];\n","import { ICP, WRAPPED_ICP, ICS } from \"@icpswap/tokens\";\n\nimport { isIC } from \"./server\";\n\nexport enum SWAP_FIELD {\n INPUT = \"INPUT\",\n OUTPUT = \"OUTPUT\",\n}\n\nexport const DEFAULT_SWAP_INPUT_ID = isIC ? ICP.address : WRAPPED_ICP.address;\nexport const DEFAULT_SWAP_OUTPUT_ID = isIC ? ICS.address : ICS.address;\n\nexport const SWAP_REFRESH_KEY = \"swap\";\n\nexport const LIQUIDITY_OWNER_REFRESH_KEY = \"LIQUIDITY_OWNER_REFRESH_KEY\";\n\nexport const SWAP_CHART_CURRENT_PRICE_COLOR = \"#ffffff\";\nexport const SWAP_CHART_RANGE_PRICE_COLOR = \"#8672FF\";\n\nexport const SWAP_CHART_RANGE_LEFT_COLOR = \"#788686\";\nexport const SWAP_CHART_RANGE_RIGHT_COLOR = \"#bb8d00\";\nexport const SWAP_CHART_RANGE_AREA_COLOR = \"#0068FC\";\n\nexport * from \"./mint\";\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { WICPCanisterId } from \"constants/canister\";\nimport { TokenInfo, TokenMetadata } from \"types/token\";\nimport { Principal } from \"@dfinity/principal\";\nimport { TOKEN_STANDARD } from \"@icpswap/token-adapter\";\n\nexport { TOKEN_STANDARD };\n\nexport const XTCCanisterId = \"aanaa-xaaaa-aaaah-aaeiq-cai\";\n\nexport const WRAPPED_ICP_METADATA: TokenMetadata = {\n standardType: TOKEN_STANDARD.EXT,\n metadata: [],\n name: \"Wrapped ICP\",\n decimals: 8,\n symbol: \"WICP\",\n canisterId: Principal.fromText(WICPCanisterId ?? \"aaaaa-aa\"),\n};\n\nexport const WRAPPED_ICP_TOKEN_INFO: TokenInfo = {\n ...WRAPPED_ICP_METADATA,\n logo: `/images/tokens/${WRAPPED_ICP_METADATA.canisterId.toString()}.jpeg`,\n transFee: BigInt(0),\n canisterId: WRAPPED_ICP_METADATA.canisterId.toString(),\n totalSupply: BigInt(0),\n};\n\nexport const WRAPPED_ICP = new Token({\n address: WRAPPED_ICP_TOKEN_INFO.canisterId,\n decimals: WRAPPED_ICP_TOKEN_INFO.decimals,\n symbol: WRAPPED_ICP_TOKEN_INFO.symbol,\n name: WRAPPED_ICP_TOKEN_INFO.name,\n logo: WRAPPED_ICP_TOKEN_INFO.logo,\n standard: TOKEN_STANDARD.EXT,\n transFee: Number(WRAPPED_ICP_TOKEN_INFO.transFee),\n});\n\nexport const XTC = new Token({\n address: XTCCanisterId,\n decimals: 12,\n symbol: \"XTC\",\n name: \"Cycles\",\n logo: \"\",\n standard: TOKEN_STANDARD.DIP20_XTC,\n transFee: 0,\n});\n\nexport const SNS1 = new Token({\n address: \"zfcdd-tqaaa-aaaaq-aaaga-cai\",\n decimals: 8,\n symbol: \"SNS1\",\n name: \"SNS1\",\n logo: \"\",\n standard: TOKEN_STANDARD.ICRC1,\n transFee: 0,\n});\n\nexport const CHAT = new Token({\n address: \"2ouva-viaaa-aaaaq-aaamq-cai\",\n decimals: 8,\n symbol: \"CHAT\",\n name: \"CHAT\",\n logo: \"\",\n standard: TOKEN_STANDARD.ICRC1,\n transFee: 0,\n});\n\nexport const CAT = new Token({\n address: \"uf2wh-taaaa-aaaaq-aabna-cai\",\n decimals: 8,\n symbol: \"CAT\",\n name: \"CatalyzeDAO\",\n logo: \"\",\n standard: TOKEN_STANDARD.ICRC1,\n transFee: 0,\n});\n\nexport const MOD = new Token({\n address: \"xsi2v-cyaaa-aaaaq-aabfq-cai\",\n decimals: 8,\n symbol: \"MOD\",\n name: \"Modclub\",\n logo: \"\",\n standard: TOKEN_STANDARD.ICRC1,\n transFee: 10000,\n});\n\nexport const BoomDAO = new Token({\n address: \"vtrom-gqaaa-aaaaq-aabia-cai\",\n decimals: 8,\n symbol: \"BOOM\",\n name: \"BoomDAO\",\n logo: \"\",\n standard: TOKEN_STANDARD.ICRC1,\n transFee: 100000,\n});\n\nexport const ICX = new Token({\n address: \"rffwt-piaaa-aaaaq-aabqq-cai\",\n decimals: 8,\n symbol: \"ICX\",\n name: \"IC-X\",\n logo: \"\",\n standard: TOKEN_STANDARD.ICRC1,\n transFee: 100000,\n});\n\nexport const NUA = new Token({\n address: \"rxdbk-dyaaa-aaaaq-aabtq-cai\",\n decimals: 8,\n symbol: \"NUA\",\n name: \"Nuance\",\n logo: \"\",\n standard: TOKEN_STANDARD.ICRC1,\n transFee: 100000,\n});\n\nexport const SONIC = new Token({\n address: \"qbizb-wiaaa-aaaaq-aabwq-cai\",\n decimals: 8,\n symbol: \"SONIC\",\n name: \"Sonic\",\n logo: \"\",\n standard: TOKEN_STANDARD.ICRC1,\n transFee: 100000,\n});\n","import { ICP, WRAPPED_ICP, ICS, ckUSDC, ckBTC, ckETH } from \"@icpswap/tokens\";\n\nexport { Connector } from \"@icpswap/actor\";\n\nexport const DISPLAY_IN_WALLET_FOREVER = [\n ICP.address,\n WRAPPED_ICP.address,\n ICS.address,\n ckUSDC.address,\n ckBTC.address,\n ckETH.address,\n];\n\nexport const NO_HIDDEN_TOKENS = [ICP.address, WRAPPED_ICP.address];\n\nexport const DEFAULT_DISPLAYED_TOKENS = [ICP, ICS, ckUSDC, ckBTC, ckETH];\n","import { ChainId } from \"@icpswap/constants\";\n\nexport const chain: ChainId = ChainId.MAINNET;\n\nexport const ETH_MINT_CHAIN = 1;\n\nexport const DEFAULT_CHAIN_ID = 1;\n\nexport const SUPPORTED_CHAINS = [ChainId.MAINNET, ChainId.SEPOLIA];\n\nexport const chainIdToNetwork: { [network: number]: string } = {\n 1: \"Ethereum mainnet\",\n 3: \"ropsten\",\n 4: \"rinkeby\",\n 42: \"kovan\",\n 97: \"chapel\", // BSC Testnet\n 137: \"polygon\", // Polygon Mainnet\n 80001: \"mumbai\", // Polygon Testnet\n 43114: \"avalanche\", // Avalanche Mainnet\n 43113: \"fuji\", // Avalanche Testnet\n 11155111: \"sepolia\", // testnet\n};\n\nexport const EXPLORER_MAPS = {\n [ChainId.MAINNET]: `https://etherscan.io/address`,\n [ChainId.SEPOLIA]: `https://sepolia.etherscan.io/address`,\n};\n\nexport const getExplorerAddress = (address: string) => {\n return `${EXPLORER_MAPS[chain]}/${address}`;\n};\n\nexport const getMinterDashboard = (minterId: string) => {\n return `https://${minterId}.raw.icp0.io/dashboard`;\n};\n\nexport const getIcDashboard = (tokenId: string) => {\n return `https://dashboard.internetcomputer.org/ethereum/${tokenId}`;\n};\n\nexport const EXPLORER_TX_LINKS = {\n [ChainId.MAINNET]: `https://etherscan.io/tx`,\n [ChainId.SEPOLIA]: `https://sepolia.etherscan.io/tx`,\n};\n\nexport const EXPLORER_BLOCK_LINKS = {\n [ChainId.MAINNET]: `https://etherscan.io/block`,\n [ChainId.SEPOLIA]: `https://sepolia.etherscan.io/block`,\n};\n","import type { FarmState } from \"@icpswap/types\";\n\nexport const COLORS = {\n NOT_START: \"#5669DC\",\n LIVE: \"#54C081\",\n FINISHED: \"#8492C4\",\n CLOSED: \"#8492C4\",\n DEFAULT: \"#8492C4\",\n};\n\nexport function useStateColors(state: FarmState | undefined): string {\n return COLORS[state ?? \"DEFAULT\"];\n}\n","import { useEffect, useMemo, useState } from \"react\";\nimport { FilterState } from \"types/staking-token\";\nimport { getStakePools, getUserStakePools, getStakingPoolFromController } from \"@icpswap/hooks\";\nimport { StakingPoolControllerPoolInfo } from \"@icpswap/types\";\nimport { useAccountPrincipal } from \"store/auth/hooks\";\nimport { isAvailablePageArgs } from \"@icpswap/utils\";\nimport { getStateValueByFilterState } from \"utils/stake/index\";\n\nexport interface UsePoolsArgs {\n filterState: FilterState;\n offset: number;\n limit: number;\n stakeTokenId: string | undefined | null;\n rewardTokenId: string | undefined | null;\n}\n\nexport function usePools({ filterState, stakeTokenId, rewardTokenId, offset, limit }: UsePoolsArgs) {\n const principal = useAccountPrincipal();\n const [loading, setLoading] = useState(false);\n const [pools, setPools] = useState>(null);\n\n useEffect(() => {\n async function call() {\n if (!isAvailablePageArgs(offset, limit)) return;\n\n const state = getStateValueByFilterState(filterState);\n setPools(null);\n\n if (filterState === FilterState.YOUR) {\n if (!principal) return;\n\n setLoading(true);\n\n const poolsResult = await getUserStakePools(principal.toString(), offset, limit, stakeTokenId, rewardTokenId);\n const pools = poolsResult?.content ?? [];\n\n const infos = (\n await Promise.all(\n pools.map(async (pool) => {\n return await getStakingPoolFromController(pool.stakingPool.toString());\n }),\n )\n ).flat();\n\n setPools(infos);\n } else {\n setLoading(true);\n const result = await getStakePools({ state, offset, limit, stakeTokenId, rewardTokenId });\n const pools = result?.content;\n setPools(pools);\n }\n\n setLoading(false);\n }\n\n call();\n }, [filterState, principal, offset, limit, stakeTokenId, rewardTokenId]);\n\n return useMemo(() => ({ loading, result: pools }), [loading, pools]);\n}\n","import { useMemo, useState, useEffect } from \"react\";\nimport { useAccountPrincipal } from \"store/auth/hooks\";\nimport { Principal } from \"@dfinity/principal\";\nimport { getTokenBalance } from \"hooks/token/useTokenBalance\";\nimport { SubAccount } from \"@dfinity/ledger-icp\";\n\nexport function useUserUnusedTokenByPool(\n poolId: string | undefined,\n stakingTokenId: string | undefined,\n reload?: boolean | number,\n) {\n const [loading, setLoading] = useState(true);\n const [data, setData] = useState<{ balance: bigint | undefined; poolId: string; stakingTokenId: string } | null>(\n null,\n );\n const principal = useAccountPrincipal();\n\n useEffect(() => {\n const call = async () => {\n if (poolId && principal && stakingTokenId) {\n const result = await getTokenBalance(\n stakingTokenId,\n Principal.fromText(poolId),\n SubAccount.fromPrincipal(principal).toUint8Array(),\n );\n\n setData({\n balance: result.data,\n poolId,\n stakingTokenId,\n });\n setLoading(false);\n }\n };\n\n call();\n }, [poolId, principal, reload, stakingTokenId]);\n\n return useMemo(() => {\n return {\n loading,\n result: data,\n };\n }, [loading, data]);\n}\n","import { useCallback, useMemo, useState, useEffect } from \"react\";\nimport {\n getStakingPools,\n usePaginationAllData,\n getStakingTokenUserInfo,\n getStakingTokenPool,\n getPaginationAllData,\n useInterval,\n} from \"@icpswap/hooks\";\nimport { ResultStatus, type StakingPoolUserInfo, StakingPoolInfo } from \"@icpswap/types\";\nimport { useAccountPrincipal } from \"store/auth/hooks\";\nimport { UnusedBalance } from \"types/staking-token\";\nimport { Principal } from \"@dfinity/principal\";\nimport { getTokenBalance } from \"hooks/token/useTokenBalance\";\nimport { TOKEN_STANDARD } from \"@icpswap/token-adapter\";\nimport { SubAccount } from \"@dfinity/ledger-icp\";\nimport { useIntervalFetch } from \"hooks/useIntervalFetch\";\n\nexport async function getAllTokenPools() {\n const call = async (offset: number, limit: number) => {\n return await getStakingPools(undefined, offset, limit);\n };\n\n return getPaginationAllData(call, 500);\n}\n\nexport function useStakingTokenAllPools() {\n const call = useCallback(async (offset: number, limit: number) => {\n return await getStakingPools(undefined, offset, limit);\n }, []);\n\n return usePaginationAllData(call, 500);\n}\n\nexport function useUserUnusedTokens(reload?: boolean | number) {\n const [loading, setLoading] = useState(true);\n const [balances, setBalances] = useState([]);\n const principal = useAccountPrincipal();\n\n const { result, loading: poolsLoading } = useStakingTokenAllPools();\n\n // filter standard dip20, because dip20 use transferFrom, no unused tokens\n const pools = useMemo(() => {\n return result.filter((ele) => ele.stakingToken.standard !== TOKEN_STANDARD.DIP20);\n }, [result]);\n\n useEffect(() => {\n const call = async () => {\n if (pools && principal) {\n if (pools.length === 0) {\n setLoading(false);\n } else {\n const calls = pools.map(async (ele) => {\n return await getTokenBalance(\n ele.stakingToken.address,\n Principal.fromText(ele.canisterId.toString()),\n SubAccount.fromPrincipal(principal).toUint8Array(),\n );\n });\n\n const _result = await Promise.all(calls);\n\n const data = _result\n .map((ele, index) => {\n if (ele.status === ResultStatus.OK && ele.data) {\n const pool = pools[index];\n\n return {\n balance: ele.data,\n poolId: pool.canisterId.toString(),\n rewardTokenId: pool.rewardToken.address,\n ...pool,\n } as UnusedBalance;\n }\n return null;\n })\n .filter((ele) => !!ele) as UnusedBalance[];\n\n setBalances(data);\n\n setLoading(false);\n }\n }\n };\n\n call();\n }, [pools, principal, reload]);\n\n return useMemo(() => {\n return {\n loading: poolsLoading || loading,\n result: balances,\n };\n }, [loading, poolsLoading, balances]);\n}\n\nexport function useIntervalUserPoolInfo(\n poolId: string | undefined,\n principal: Principal | undefined,\n refresh?: number | boolean,\n) {\n const callback = useCallback(async () => {\n if (!poolId || !principal) return;\n return await getStakingTokenUserInfo(poolId, principal);\n }, [poolId, principal]);\n\n return useIntervalFetch(callback, refresh);\n}\n\nexport function useIntervalStakingPoolInfo(poolId: string | undefined): [StakingPoolInfo | undefined, () => void] {\n const [forceUpdate, setForceUpdate] = useState(0);\n\n const update = useCallback(() => {\n setForceUpdate((prevState) => prevState + 1);\n }, []);\n\n const callback = useCallback(async () => {\n if (!poolId) return;\n return await getStakingTokenPool(poolId);\n }, [poolId]);\n\n const poolInfo = useInterval(callback, forceUpdate);\n\n return [poolInfo, update];\n}\n\nexport * from \"./useStateColors\";\nexport * from \"./usePools\";\nexport * from \"./useUnusedTokens\";\n","import { useCallback } from \"react\";\nimport { Token } from \"@icpswap/swap-sdk\";\nimport { useErrorTip, TIP_OPTIONS } from \"hooks/useTips\";\nimport { approve } from \"hooks/token/useApprove\";\nimport { useAccountPrincipal } from \"store/auth/hooks\";\nimport { useMultipleApproveManager } from \"store/swap/cache/hooks\";\nimport { allowance } from \"hooks/token/useAllowance\";\nimport { TOKEN_STANDARD } from \"@icpswap/token-adapter\";\n\nexport interface UseSwapApproveArgs {\n token: Token;\n amount: string;\n poolId: string;\n options?: TIP_OPTIONS;\n standard?: TOKEN_STANDARD;\n}\n\nexport function useSwapApprove() {\n const principal = useAccountPrincipal();\n const [openErrorTip] = useErrorTip();\n const { multipleApprove } = useMultipleApproveManager();\n\n return useCallback(\n async ({ token, amount, poolId, options, standard }: UseSwapApproveArgs) => {\n if (!principal) return false;\n\n const allowedBalance = await allowance({\n canisterId: token.address,\n owner: principal.toString(),\n spender: poolId,\n });\n\n const multipleApproveAmount = (BigInt(amount) * BigInt(multipleApprove)).toString();\n\n if (!allowedBalance || allowedBalance === BigInt(0) || BigInt(amount) > allowedBalance) {\n const { status, message } = await approve({\n canisterId: token.address,\n spender: poolId,\n value: multipleApproveAmount,\n account: principal,\n standard,\n });\n\n if (status === \"err\") {\n openErrorTip(`Failed to approve ${token.symbol}: ${message}`, options);\n return false;\n }\n\n return true;\n }\n\n return true;\n },\n [approve, principal, multipleApprove],\n );\n}\n","import { useMemo } from \"react\";\nimport type { PoolMetadata } from \"@icpswap/types\";\nimport { BigNumber } from \"@icpswap/utils\";\nimport { useInfoAllTokens } from \"@icpswap/hooks\";\nimport { useMultiplePositions, type PositionInfo } from \"hooks/swap/useMultiplePositions\";\n\nexport interface UseUserPositionsValuesArgs {\n positionInfos: PositionInfo[] | undefined;\n metadata: PoolMetadata | undefined;\n}\n\nexport function usePositionsValuesByInfos(args: UseUserPositionsValuesArgs[]) {\n const allTokenInfos = useInfoAllTokens();\n\n const positions = useMultiplePositions(args);\n\n return useMemo(() => {\n if (!allTokenInfos || !positions) return undefined;\n if (allTokenInfos.length === 0 || positions.length === 0) return undefined;\n\n let totalValue: BigNumber | undefined;\n\n positions.flat().forEach((position) => {\n if (position) {\n const token0Amount = position.amount0.toExact();\n const token1Amount = position.amount1.toExact();\n\n const token0Price = allTokenInfos.find((info) => info.address === position.pool.token0.address)?.priceUSD;\n const token1Price = allTokenInfos.find((info) => info.address === position.pool.token1.address)?.priceUSD;\n\n if (token0Price !== undefined && token1Price !== undefined) {\n totalValue = (totalValue ?? new BigNumber(0))\n .plus(new BigNumber(token0Amount).multipliedBy(token0Price))\n .plus(new BigNumber(token1Amount).multipliedBy(token1Price));\n }\n }\n });\n\n return totalValue?.toString();\n }, [JSON.stringify(positions), allTokenInfos]);\n}\n\nexport interface UseUserPositionsValueArgs {\n positionInfos: PositionInfo[] | undefined;\n metadata: PoolMetadata | undefined;\n}\n\nexport function usePositionsValueByInfos({ metadata, positionInfos }: UseUserPositionsValueArgs) {\n return usePositionsValuesByInfos([{ metadata, positionInfos }]);\n}\n","import { useMemo } from \"react\";\nimport { Position } from \"@icpswap/swap-sdk\";\nimport { usePools, type PoolKey } from \"hooks/swap/usePools\";\nimport { useTokens } from \"hooks/useCurrency\";\nimport type { PoolMetadata } from \"@icpswap/types\";\n\nexport interface PositionInfo {\n liquidity: bigint;\n tickLower: bigint;\n tickUpper: bigint;\n}\n\nexport interface UseMultiplePositionProps {\n positionInfos: PositionInfo[] | undefined;\n metadata: PoolMetadata | undefined;\n}\n\nexport function useMultiplePositions(args: UseMultiplePositionProps[]) {\n const { tokenIds } = useMemo(() => {\n const tokenIds: string[] = [];\n\n args.forEach(({ metadata }) => {\n if (metadata) {\n if (!tokenIds.includes(metadata.token0.address)) {\n tokenIds.push(metadata.token0.address);\n }\n\n if (!tokenIds.includes(metadata.token1.address)) {\n tokenIds.push(metadata.token1.address);\n }\n }\n });\n\n return { tokenIds };\n }, [JSON.stringify(args)]);\n\n const tokens = useTokens(tokenIds);\n\n const poolKeys = useMemo(() => {\n return args.map(({ metadata }) => {\n if (!metadata) return [undefined, undefined, undefined] as PoolKey;\n\n const tokenA = tokens.find((e) => {\n return e[1]?.address === metadata.token0.address;\n });\n\n const tokenB = tokens.find((e) => {\n return e[1]?.address === metadata.token1.address;\n });\n\n return [tokenA ? tokenA[1] : undefined, tokenB ? tokenB[1] : undefined, Number(metadata.fee)] as PoolKey;\n });\n }, [JSON.stringify(args), tokens]);\n\n const pools = usePools(poolKeys);\n\n return useMemo(() => {\n const positions = args.map((arg, index) => {\n const infos = arg.positionInfos;\n const pool = pools[index]?.[1];\n\n if (!infos) return undefined;\n\n return infos.map((info) => {\n if (!pool) return undefined;\n\n return new Position({\n pool,\n liquidity: info.liquidity.toString(),\n tickLower: Number(info.tickLower),\n tickUpper: Number(info.tickUpper),\n });\n });\n });\n\n return positions;\n }, [JSON.stringify(args), pools]);\n}\n","import { useCallback, useMemo, useState } from \"react\";\nimport { parseTokenAmount } from \"@icpswap/utils\";\nimport { TokenInfo } from \"types/token\";\nimport { useTips, MessageTypes } from \"hooks/useTips\";\nimport { destroyPassCode, withdrawPCMBalance } from \"@icpswap/hooks\";\nimport { type PassCode, type PCMMetadata, ResultStatus } from \"@icpswap/types\";\nimport { type Token } from \"@icpswap/swap-sdk\";\n\nexport interface WithdrawPCMBalanceArgs {\n token: TokenInfo | Token;\n name: string | undefined;\n type: \"code\" | \"unUsed\";\n metadata: PCMMetadata | undefined | null;\n code?: PassCode | undefined;\n amount: bigint | number | string;\n}\n\nexport function useWithdrawPCMBalanceCallback() {\n const [openTip, closeTip] = useTips();\n const [loading, setLoading] = useState(false);\n\n const callback = useCallback(async (args: WithdrawPCMBalanceArgs[]) => {\n return await Promise.all(\n args.map(async ({ token, name, type, code, amount: __amount }) => {\n const amount = BigInt(__amount);\n const tokenTransFee = BigInt(token.transFee);\n const unavailableClaim =\n amount === BigInt(0) || (type === \"code\" ? amount < tokenTransFee * BigInt(2) : amount < tokenTransFee);\n\n if (unavailableClaim) return;\n\n setLoading(true);\n\n const loadingKey = openTip(\n `Withdraw your ${parseTokenAmount(amount, token.decimals).toFormat()} ${token.symbol}`,\n MessageTypes.loading,\n );\n\n if (type === \"code\" && !!code) {\n const result = await destroyPassCode(code.token0.toString(), code.token1.toString(), code.fee);\n\n if (result.status === ResultStatus.OK) {\n const result = await withdrawPCMBalance(amount, tokenTransFee);\n if (result.status === ResultStatus.OK) {\n openTip(`Withdrew ${name} successfully`, MessageTypes.success);\n } else {\n openTip(`Failed to Withdraw ${name}: ${result.message}`, MessageTypes.error);\n }\n } else {\n openTip(`Failed to Withdraw: ${result.message ?? \"\"}`, MessageTypes.error);\n }\n } else {\n const result = await withdrawPCMBalance(amount, tokenTransFee);\n\n if (result.status === ResultStatus.OK) {\n openTip(`Withdrew ${name} successfully`, MessageTypes.success);\n } else {\n openTip(result.message ? result.message : `Failed to Withdraw ${name}`, MessageTypes.error);\n }\n }\n\n closeTip(loadingKey);\n setLoading(false);\n }),\n );\n }, []);\n\n return useMemo(() => ({ loading, callback }), [loading, callback]);\n}\n","import { useMemo } from \"react\";\nimport { BigNumber } from \"@icpswap/utils\";\nimport { PositionSort, UserPosition, UserPositionForFarm } from \"types/swap\";\n\nexport interface UseSortedPositionsProps {\n sort: PositionSort;\n positions: (UserPosition | UserPositionForFarm)[] | undefined;\n feesValue: { [id: string]: BigNumber | undefined } | undefined;\n positionValue: { [id: string]: BigNumber | undefined } | undefined;\n}\n\nexport function useSortedPositions({ positions, sort, feesValue, positionValue }: UseSortedPositionsProps): T[] {\n return useMemo(() => {\n if (!positions) return [];\n\n if (sort === PositionSort.Default) return [...positions];\n\n if (sort === PositionSort.FeesValue) {\n if (!feesValue) return positions;\n\n if (Object.keys(feesValue).length < positions.length) return positions;\n\n return [...positions].sort((a, b) => {\n const allKeys = Object.keys(feesValue);\n\n const keyA = allKeys.find((key) => key.includes(a.id) && key.includes(a.index.toString()));\n const keyB = allKeys.find((key) => key.includes(b.id) && key.includes(b.index.toString()));\n\n if (keyA && keyB) {\n const valueA = feesValue[keyA];\n const valueB = feesValue[keyB];\n\n if (valueA && valueB) {\n return valueA.isGreaterThan(valueB) ? -1 : 1;\n }\n }\n\n return 0;\n });\n }\n\n if (sort === PositionSort.PositionValue) {\n if (!positionValue) return positions;\n if (Object.keys(positionValue).length < positions.length) return positions;\n\n return [...positions].sort((a, b) => {\n const allKeys = Object.keys(positionValue);\n\n const keyA = allKeys.find((key) => key.includes(a.id) && key.includes(a.index.toString()));\n const keyB = allKeys.find((key) => key.includes(b.id) && key.includes(b.index.toString()));\n\n if (keyA && keyB) {\n const valueA = positionValue[keyA];\n const valueB = positionValue[keyB];\n\n if (valueA && valueB) {\n return valueA.isGreaterThan(valueB) ? -1 : 1;\n }\n }\n\n return 0;\n });\n }\n\n return [];\n }, [feesValue, positionValue, sort, positions]) as T[];\n}\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { BigNumber, isNullArgs } from \"@icpswap/utils\";\nimport { Null } from \"@icpswap/types\";\nimport { isUseTransfer } from \"utils/token\";\n\nexport interface GetTokenInsufficientProps {\n token: Token | undefined;\n subAccountBalance: BigNumber | undefined;\n unusedBalance: bigint | undefined;\n balance: BigNumber | undefined;\n formatTokenAmount: string | undefined;\n allowance?: bigint | Null;\n}\n\nexport function getTokenInsufficient({\n token,\n subAccountBalance,\n unusedBalance,\n balance,\n formatTokenAmount,\n allowance,\n}: GetTokenInsufficientProps) {\n if (\n isNullArgs(token) ||\n isNullArgs(subAccountBalance) ||\n isNullArgs(unusedBalance) ||\n isNullArgs(balance) ||\n isNullArgs(formatTokenAmount)\n )\n return undefined;\n\n // console.log(\"xxxx unusedBalance:\", unusedBalance.toString());\n // console.log(\"xxxx subAccountBalance:\", subAccountBalance.toString());\n // console.log(\"xxxx formatTokenAmount: \", formatTokenAmount);\n // console.log(\"xxxx balance:\", balance.toString());\n // console.log(\"allowance:\", allowance);\n\n if (!new BigNumber(unusedBalance.toString()).isLessThan(formatTokenAmount)) return \"NO_TRANSFER_APPROVE\";\n\n if (\n !new BigNumber(unusedBalance.toString())\n .plus(subAccountBalance)\n .isLessThan(new BigNumber(formatTokenAmount).plus(token.transFee))\n )\n return \"NEED_DEPOSIT\";\n\n if (\n !new BigNumber(unusedBalance.toString())\n .plus(subAccountBalance)\n .plus(balance)\n .isLessThan(\n new BigNumber(formatTokenAmount).plus(\n isUseTransfer(token) || !allowance\n ? token.transFee * 2\n : // formatTokenAmount is the total amount, includes the unused balance\n // The approve amount is the user balance\n !new BigNumber(allowance?.toString()).isLessThan(balance)\n ? token.transFee\n : token.transFee * 2,\n ),\n )\n )\n return \"NEED_TRANSFER_APPROVE\";\n\n return \"INSUFFICIENT\";\n}\n","import { getSwapPosition } from \"@icpswap/hooks\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { UserPosition, UserPositionForFarm } from \"types/swap\";\nimport { useAccountPrincipal } from \"store/auth/hooks\";\nimport { isNullArgs } from \"@icpswap/utils\";\nimport { type FarmInfoWithId } from \"@icpswap/types\";\n\ntype UserPositions = {\n positions: bigint[];\n poolId: string;\n};\n\nexport function useSwapPositions(data: UserPositions[] | undefined, refresh?: number) {\n const [loading, setLoading] = useState(false);\n const [positions, setPositions] = useState(undefined);\n\n const principal = useAccountPrincipal();\n\n useEffect(() => {\n async function call() {\n if (isNullArgs(data) || isNullArgs(principal)) return;\n if (data.length === 0) {\n setPositions([]);\n return;\n }\n\n setLoading(true);\n\n const positions = await Promise.all(\n data\n .reduce(\n (prev, curr) => {\n return prev.concat(curr.positions.map((index) => [curr.poolId, index]));\n },\n [] as [string, bigint][],\n )\n .map(async ([canisterId, index]) => {\n const position = await getSwapPosition(canisterId, index);\n return { ...position, id: canisterId, index: Number(index) };\n }),\n );\n\n setPositions(positions.filter((position) => !!position) as UserPosition[]);\n setLoading(false);\n }\n\n call();\n }, [data, principal, refresh]);\n\n return useMemo(() => ({ loading, result: positions }), [positions, loading]);\n}\n\nexport function useSwapPositionsMultipleFarm(farms: FarmInfoWithId[] | undefined | null, refresh?: number) {\n const principal = useAccountPrincipal();\n const [loading, setLoading] = useState(false);\n const [positions, setPositions] = useState(undefined);\n\n useEffect(() => {\n async function call() {\n if (isNullArgs(farms) || isNullArgs(principal)) return;\n if (farms.length === 0) {\n setPositions([]);\n return;\n }\n\n setLoading(true);\n\n const positions = await Promise.all(\n farms\n .reduce(\n (prev, curr) => {\n return prev.concat(curr.positionIds.map((positionId) => [curr.pool.toString(), positionId, curr]));\n },\n [] as [string, bigint, FarmInfoWithId][],\n )\n .map(async ([poolId, positionId, farm]) => {\n const position = await getSwapPosition(poolId.toString(), positionId);\n return { ...position, id: poolId.toString(), index: Number(positionId), farm } as UserPositionForFarm;\n }),\n );\n\n setPositions(positions.filter((position) => !!position));\n setLoading(false);\n }\n\n call();\n }, [farms, principal, refresh]);\n\n return useMemo(() => ({ loading, result: positions }), [positions, loading]);\n}\n\nexport function useSwapPositionsByFarm(farm: FarmInfoWithId | undefined, refresh?: number) {\n return useSwapPositionsMultipleFarm(farm ? [farm] : undefined, refresh);\n}\n","import { useAccountPrincipal } from \"store/auth/hooks\";\nimport { usePassCode } from \"@icpswap/hooks\";\n\nexport function useUserPassCodes(reload?: number | boolean) {\n const principal = useAccountPrincipal();\n return usePassCode(principal?.toString(), reload);\n}\n","import { useMemo } from \"react\";\nimport { Token } from \"@icpswap/swap-sdk\";\nimport { getTokenInsufficient } from \"hooks/swap/index\";\nimport { BigNumber, isNullArgs } from \"@icpswap/utils\";\n\nexport interface useSwapTokenFeeCostProps {\n tokenBalance: BigNumber | undefined;\n subAccountBalance: BigNumber | undefined;\n unusedBalance: bigint | undefined;\n token: Token | undefined;\n amount: string | undefined;\n}\n\nexport function useSwapTokenFeeCost({\n token,\n tokenBalance,\n subAccountBalance,\n unusedBalance,\n amount,\n}: useSwapTokenFeeCostProps) {\n return useMemo(() => {\n if (\n isNullArgs(token) ||\n isNullArgs(tokenBalance) ||\n isNullArgs(subAccountBalance) ||\n isNullArgs(unusedBalance) ||\n isNullArgs(amount)\n )\n return undefined;\n\n const tokenInsufficient = getTokenInsufficient({\n token,\n subAccountBalance,\n balance: tokenBalance,\n formatTokenAmount: amount,\n unusedBalance,\n });\n\n if (tokenInsufficient === \"NO_TRANSFER_APPROVE\") return \"0\";\n if (tokenInsufficient === \"NEED_DEPOSIT\") return token.transFee.toString();\n if (tokenInsufficient === \"NEED_TRANSFER_APPROVE\") return (token.transFee * 2).toString();\n\n return \"0\";\n }, [token, tokenBalance, subAccountBalance, unusedBalance]);\n}\n","import { useMemo } from \"react\";\nimport { useToken } from \"hooks/useCurrency\";\nimport { useSnsTokenInfoByGovernance } from \"hooks/sns/useSnsTokenInfoByGovernance\";\n\nexport function useLiquidityLocksImage(name: string | undefined, principalId: string | undefined) {\n const governanceId = useMemo(() => {\n if (!name || !principalId) return undefined;\n if (name.includes(\"Governance\")) return principalId;\n return undefined;\n }, [name, principalId]);\n\n const snsTokenInfo = useSnsTokenInfoByGovernance(governanceId);\n\n const tokenId = useMemo(() => {\n if (!name || !principalId) return undefined;\n if (name.includes(\"Governance\")) {\n return snsTokenInfo?.canister_ids.ledger_canister_id;\n }\n\n return undefined;\n }, [name, principalId, snsTokenInfo]);\n\n const [, token] = useToken(tokenId);\n\n return useMemo(() => {\n if (!tokenId) {\n switch (name) {\n case \"Sneedlocked\":\n return \"/images/liquidity_locks_sneed.png\";\n case \"Black Hole\":\n return \"/images/liquidity_locks_blackhole.png\";\n case \"Free liquidity\":\n return \"/images/liquidity_locks_free.png\";\n default:\n return undefined;\n }\n }\n\n return token?.logo;\n }, [token, tokenId, name, principalId]);\n}\n","import { useMemo } from \"react\";\nimport { useStateSnsAllTokensInfo } from \"store/sns/hooks\";\n\nexport function useSnsTokenInfoByGovernance(governanceId: string | undefined) {\n const allSnsTokensInfo = useStateSnsAllTokensInfo();\n\n return useMemo(() => {\n return allSnsTokensInfo.find((e) => e.canister_ids.governance_canister_id === governanceId);\n }, [governanceId, allSnsTokensInfo]);\n}\n","import { useCallback } from \"react\";\nimport { Token } from \"@icpswap/swap-sdk\";\nimport { withdraw } from \"@icpswap/hooks\";\nimport { useErrorTip } from \"hooks/useTips\";\nimport { OpenExternalTip } from \"types/index\";\nimport { t } from \"@lingui/macro\";\n\nexport function useSwapWithdraw() {\n const [openErrorTip] = useErrorTip();\n\n return useCallback(async (token: Token, poolId: string, amount: string, openExternalTip?: OpenExternalTip) => {\n const { status, message } = await withdraw(poolId, token.address, BigInt(token.transFee), BigInt(amount));\n\n if (status === \"err\") {\n if (openExternalTip) {\n openExternalTip({ message });\n } else {\n openErrorTip(\n t`Failed to withdraw ${token.symbol}: ${message}. Please click 'Reclaim Your Tokens' to reclaim your tokens.`,\n );\n }\n\n return false;\n }\n\n return true;\n }, []);\n}\n\nexport interface UseSwapWithdrawByTokenIdProps {\n tokenId: string;\n tokenFee: number | string | bigint;\n poolId: string;\n amount: string | bigint | number;\n openExternalTip?: OpenExternalTip;\n}\n\nexport function useSwapWithdrawByTokenId() {\n const [openErrorTip] = useErrorTip();\n\n return useCallback(async ({ tokenFee, tokenId, poolId, amount, openExternalTip }: UseSwapWithdrawByTokenIdProps) => {\n const { status, message } = await withdraw(poolId, tokenId, BigInt(tokenFee), BigInt(amount));\n\n if (status === \"err\") {\n if (openExternalTip) {\n openExternalTip({ message });\n } else {\n openErrorTip(t`Failed to withdraw: ${message}. Please click 'Reclaim Your Tokens' to reclaim your tokens.`);\n }\n\n return false;\n }\n\n return true;\n }, []);\n}\n","import { useMemo, useCallback, useEffect, useState } from \"react\";\nimport { NumberType, ResultStatus } from \"@icpswap/types\";\nimport { parseTokenAmount, formatTokenAmount } from \"@icpswap/utils\";\nimport { Token, FeeAmount } from \"@icpswap/swap-sdk\";\nimport { getPoolCanisterId } from \"hooks/swap/v3Calls\";\nimport { getSwapPosition, depositFrom, deposit } from \"@icpswap/hooks\";\nimport { usePoolCanisterIdManager } from \"store/swap/hooks\";\nimport BigNumber from \"bignumber.js\";\nimport { PositionDetail } from \"types/swap\";\nimport type { SwapNFTTokenMetadata, TOKEN_STANDARD } from \"@icpswap/types\";\nimport { useErrorTip, TIP_OPTIONS } from \"hooks/useTips\";\nimport { t } from \"@lingui/macro\";\nimport { useAccountPrincipal } from \"store/auth/hooks\";\nimport { isUseTransfer, isUseTransferByStandard } from \"utils/token/index\";\nimport { tokenTransfer } from \"hooks/token/calls\";\nimport { OpenExternalTip } from \"types/index\";\nimport { SubAccount } from \"@dfinity/ledger-icp\";\n\n// Now the amount that user input is the final amount swap/add/increase\n// Amount is the value that the subaccount balance when use transfer, 1 token fees should be added on the amount\n// And if use approve, amount is the value that the pool unused balance\nexport function getTokenActualTransferAmount(amount: NumberType, token: Token): string {\n const typedValue = formatTokenAmount(amount, token.decimals);\n const fee = token.transFee;\n\n // And 1 token fees will be subtracted by token canister,\n // so user balance should be equal to or greater than typeValue + token.fee * 2 if use transfer\n // typeValue + token.fee if use approve\n return isUseTransfer(token)\n ? parseTokenAmount(typedValue.plus(fee), token.decimals).toString()\n : parseTokenAmount(typedValue, token.decimals).toString();\n}\n\nexport function getTokenActualTransferRawAmount(rawAmount: NumberType, token: Token): string {\n const fee = token.transFee;\n\n // And 1 token fees will be subtracted by token canister,\n // so user balance should be equal to or greater than typeValue + token.fee * 2 if use transfer\n // typeValue + token.fee if use approve\n return isUseTransfer(token) ? new BigNumber(rawAmount.toString()).plus(fee).toString() : rawAmount.toString();\n}\n\nexport function getTokenActualDepositAmount(amount: NumberType, token: Token): string {\n const typedValue = formatTokenAmount(amount, token.decimals);\n const fee = token.transFee;\n\n return isUseTransfer(token)\n ? parseTokenAmount(typedValue.plus(fee), token.decimals).toString()\n : parseTokenAmount(typedValue, token.decimals).toString();\n}\n\nexport function getTokenActualDepositRawAmount(rawAmount: NumberType, token: Token): string {\n const fee = token.transFee;\n\n return isUseTransfer(token)\n ? new BigNumber(rawAmount.toString()).plus(fee).toString()\n : new BigNumber(rawAmount.toString()).toString();\n}\n\nexport function usePoolCanisterId(\n token0CanisterId: string | undefined | null,\n token1CanisterId: string | undefined | null,\n fee: FeeAmount | undefined | null,\n) {\n const key = useMemo(() => {\n return token0CanisterId && token1CanisterId && fee\n ? `${token0CanisterId}_${token1CanisterId}_${String(fee)}`\n : undefined;\n }, [token0CanisterId, token1CanisterId, fee]);\n\n const [id, updatePoolCanisterId] = usePoolCanisterIdManager(key);\n\n useEffect(() => {\n const call = async () => {\n if (token0CanisterId && token1CanisterId && fee && key && !id) {\n const _id = await getPoolCanisterId(token0CanisterId, token1CanisterId, fee);\n if (_id) {\n updatePoolCanisterId({ key, id: _id });\n }\n }\n };\n\n call();\n }, [id, token0CanisterId, token1CanisterId, fee, key]);\n\n return useMemo(() => id, [id]);\n}\n\nexport async function getPositionFromNFT(metadata: SwapNFTTokenMetadata) {\n const { attributes } = metadata;\n\n const positionDetail: { [key: string]: string } = {\n pool: \"\",\n token0: \"\",\n token1: \"\",\n fee: \"\",\n tickLower: \"\",\n tickUpper: \"\",\n positionId: \"\",\n };\n\n attributes.forEach((ele) => {\n positionDetail[ele.k] = ele.v;\n });\n\n if (!positionDetail.pool) return undefined;\n\n const position = await getSwapPosition(positionDetail.pool, BigInt(positionDetail.positionId));\n\n return {\n ...positionDetail,\n ...position,\n } as PositionDetail;\n}\n\nexport function usePositionFromNFT(metadata: SwapNFTTokenMetadata) {\n const [loading, setLoading] = useState(false);\n const [position, setPosition] = useState(undefined);\n\n useEffect(() => {\n const call = async () => {\n setLoading(true);\n const position = await getPositionFromNFT(metadata);\n setPosition(position);\n setLoading(false);\n };\n\n call();\n }, [metadata]);\n\n return useMemo(\n () => ({\n loading,\n result: position,\n }),\n [position, loading],\n );\n}\n\nexport function usePositionsFromNFTs(data: SwapNFTTokenMetadata[] | undefined) {\n const [loading, setLoading] = useState(false);\n const [positions, setPositions] = useState([]);\n\n useEffect(() => {\n const call = () => {\n if (!data) return;\n if (data.length === 0) {\n setPositions([]);\n return;\n }\n\n setLoading(true);\n\n Promise.all(\n data.map(async (ele) => {\n return await getPositionFromNFT(ele);\n }),\n ).then((result) => {\n const positions = result.filter((ele) => ele !== undefined) as PositionDetail[];\n setPositions(positions);\n setLoading(false);\n });\n };\n\n call();\n }, [data]);\n\n return useMemo(() => ({ loading, result: positions }), [positions, loading]);\n}\n\nexport interface UseSwapDepositArgs {\n token: Token;\n amount: string;\n poolId: string;\n openExternalTip?: OpenExternalTip;\n standard: TOKEN_STANDARD;\n}\n\nexport function useSwapDeposit() {\n const [openErrorTip] = useErrorTip();\n\n return useCallback(async ({ token, amount, poolId, openExternalTip, standard }: UseSwapDepositArgs) => {\n const useTransfer = isUseTransferByStandard(standard);\n\n let status: ResultStatus = ResultStatus.ERROR;\n let message = \"\";\n\n if (useTransfer) {\n const { status: _status, message: _message } = await deposit(\n poolId,\n token.address,\n BigInt(amount),\n BigInt(token.transFee),\n );\n status = _status;\n message = _message;\n } else {\n const { status: _status, message: _message } = await depositFrom(\n poolId,\n token.address,\n BigInt(amount),\n BigInt(token.transFee),\n );\n status = _status;\n message = _message;\n }\n\n if (status === \"err\") {\n if (openExternalTip) {\n openExternalTip({ message });\n } else {\n openErrorTip(\n `Failed to deposit ${token.symbol}: ${message}. Please check your balance in the Swap Pool to see if tokens have been transferred to the Swap Pool.`,\n );\n }\n\n return false;\n }\n\n return true;\n }, []);\n}\n\nexport function useSwapTransfer() {\n const [openErrorTip] = useErrorTip();\n\n const principal = useAccountPrincipal();\n\n return useCallback(\n async (token: Token, amount: string, poolId: string, options?: TIP_OPTIONS) => {\n if (!principal) {\n openErrorTip(t`Failed to transfer: no principal`);\n return false;\n }\n\n const { status, message } = await tokenTransfer({\n to: poolId,\n canisterId: token.address,\n amount: new BigNumber(amount),\n from: principal?.toString() ?? \"\",\n subaccount: [...SubAccount.fromPrincipal(principal).toUint8Array()],\n fee: token.transFee,\n decimals: token.decimals,\n });\n\n if (status === \"err\") {\n openErrorTip(`Failed to transfer ${token.symbol}: ${message}`, options);\n return false;\n }\n\n return true;\n },\n [principal],\n );\n}\n\nexport * from \"./useReclaimCallback\";\nexport * from \"./useSwapApprove\";\nexport * from \"./usePositionValue\";\nexport * from \"./useWithdrawPCMBalance\";\nexport * from \"./useSortedPositions\";\nexport * from \"./useTokenInsufficient\";\nexport * from \"./useSwapPositions\";\nexport * from \"./usePCMBalances\";\nexport * from \"./useSwapTokenFeeCost\";\nexport * from \"./useLiquidityLocksImage\";\nexport * from \"./useMaxAmountSpend\";\nexport * from \"./useSwapWithdraw\";\n","import { CurrencyAmount, Token } from \"@icpswap/swap-sdk\";\nimport { BigNumber, isNullArgs, nonNullArgs } from \"@icpswap/utils\";\nimport { Null } from \"@icpswap/types\";\nimport { useAllowance } from \"hooks/token\";\nimport { useMemo } from \"react\";\nimport { useAccountPrincipalString } from \"store/auth/hooks\";\nimport { isUseTransfer } from \"utils/token\";\n\nexport interface UseMaxPoolBalanceSpendProps {\n token: Token | Null;\n subBalance: BigNumber | Null;\n unusedBalance: bigint | Null;\n}\n\nexport function usePoolBalanceMaxSpend({ token, subBalance, unusedBalance }: UseMaxPoolBalanceSpendProps) {\n return useMemo(() => {\n if (!token || isNullArgs(unusedBalance) || isNullArgs(subBalance)) return undefined;\n\n const totalPoolBalance = new BigNumber(unusedBalance.toString()).plus(subBalance);\n\n if (totalPoolBalance.isEqualTo(0)) return CurrencyAmount.fromRawAmount(token, 0);\n\n // The token use transfer to deposit\n // 1 token fee is needed for deposit\n if (isUseTransfer(token)) {\n // No token fee needed\n if (subBalance.isEqualTo(0)) {\n return CurrencyAmount.fromRawAmount(token, unusedBalance.toString());\n }\n\n return CurrencyAmount.fromRawAmount(\n token,\n new BigNumber(unusedBalance.toString()).plus(subBalance).minus(token.transFee).toString(),\n );\n }\n\n // If token use approve, no token fee needed\n // And the subAccountBalance is 0\n return CurrencyAmount.fromRawAmount(\n token,\n new BigNumber(unusedBalance.toString()).plus(subBalance.toString()).toString(),\n );\n }, [unusedBalance, subBalance]);\n}\n\nexport interface UseMaxBalanceSpendArgs {\n token: Token | Null;\n balance: string | Null;\n poolId?: string | Null;\n allowance?: bigint | Null;\n}\n\nexport function useBalanceMaxSpend({ token, balance, poolId, allowance: __allowance }: UseMaxBalanceSpendArgs) {\n const principal = useAccountPrincipalString();\n\n const allowanceCanisterId = useMemo(() => {\n if (!token || nonNullArgs(__allowance)) return undefined;\n return isUseTransfer(token) ? undefined : token.address;\n }, [token, __allowance]);\n\n const { result: allowance } = useAllowance({ canisterId: allowanceCanisterId, owner: principal, spender: poolId });\n\n return useMemo(() => {\n if (isNullArgs(balance) || isNullArgs(token)) return undefined;\n\n if (new BigNumber(balance).isEqualTo(0)) return CurrencyAmount.fromRawAmount(token, 0);\n\n // The token use transfer to deposit\n // 2 token fee is needed, 1 for deposit, 1 for token canister\n if (isUseTransfer(token)) {\n return CurrencyAmount.fromRawAmount(token, new BigNumber(balance).minus(token.transFee * 2).toString());\n }\n\n // The token use approve to deposit\n const innerAllowance = (allowance ?? __allowance) as bigint;\n\n // If token use approve, subaccount balance is 0\n // The tokens use approve to deposit, but can't get allowance, so 2 trans fee is needed\n if (innerAllowance === undefined) {\n return CurrencyAmount.fromRawAmount(token, new BigNumber(balance).minus(token.transFee * 2).toString());\n }\n\n // Need call token approve, would cost one transfer fee\n if (new BigNumber(innerAllowance.toString()).isLessThan(balance)) {\n return CurrencyAmount.fromRawAmount(token, new BigNumber(balance).minus(token.transFee * 2).toString());\n }\n\n return CurrencyAmount.fromRawAmount(token, new BigNumber(balance).minus(token.transFee).toString());\n }, [allowance, __allowance, token, balance, allowanceCanisterId]);\n}\n\nexport interface UseMaxAmountSpendArgs {\n token: Token | Null;\n balance: string | Null;\n poolId?: string | Null;\n subBalance: BigNumber | Null;\n unusedBalance: bigint | Null;\n allowance?: bigint | Null;\n}\n\nexport function useAllBalanceMaxSpend({\n poolId,\n subBalance,\n unusedBalance,\n allowance: __allowance,\n token,\n balance,\n}: UseMaxAmountSpendArgs) {\n const maxBalanceSpend = useBalanceMaxSpend({ token, balance, poolId, allowance: __allowance });\n const maxPoolBalanceSpent = usePoolBalanceMaxSpend({ token, subBalance, unusedBalance });\n\n return useMemo(() => {\n if (isNullArgs(maxBalanceSpend) || isNullArgs(maxPoolBalanceSpent) || isNullArgs(token)) return undefined;\n if (!maxBalanceSpend.currency.equals(maxPoolBalanceSpent.currency)) return undefined;\n\n return maxBalanceSpend.add(maxPoolBalanceSpent);\n }, [maxBalanceSpend, maxPoolBalanceSpent]);\n}\n","import { Pool, Token, FeeAmount } from \"@icpswap/swap-sdk\";\nimport { useMemo, useEffect, useState } from \"react\";\nimport { getPool, getPool_update_call } from \"hooks/swap/v3Calls\";\nimport { getSwapPoolMetadata, useSwapPools } from \"@icpswap/hooks\";\nimport { numberToString } from \"@icpswap/utils\";\nimport type { Null, PoolMetadata, TickLiquidityInfo } from \"@icpswap/types\";\nimport { NETWORK, network } from \"constants/index\";\nimport { ICP } from \"@icpswap/tokens\";\n\nexport enum PoolState {\n LOADING = \"LOADING\",\n NOT_EXISTS = \"NOT_EXISTS\",\n EXISTS = \"EXISTS\",\n INVALID = \"INVALID\",\n NOT_CHECK = \"NOT_CHECK\",\n}\n\ntype TypePoolsState = {\n id: string;\n metadata: PoolMetadata | undefined;\n ticks: TickLiquidityInfo[];\n key: string;\n checked: boolean;\n};\n\ntype TransformedKey = { token0: string; token1: string; fee: FeeAmount };\n\nfunction transformedKeyToKey(transformedKey: TransformedKey) {\n return `${transformedKey.token0}_${transformedKey.token1}_${transformedKey.fee}`;\n}\n\nexport type PoolKey = [Token | Null, Token | Null, FeeAmount | undefined];\n\nexport function usePools(poolKeys: PoolKey[], withoutVerify = false): [PoolState, Pool | null][] {\n const [pools, setPools] = useState<{ [key: string]: TypePoolsState | null }>({});\n const [loading, setLoading] = useState(false);\n\n const transformedPoolKeys = useMemo(() => {\n return poolKeys.map(([currencyA, currencyB, feeAmount]) => {\n if (!currencyA || !currencyB || !feeAmount) return null;\n\n const tokenA = currencyA.wrapped;\n const tokenB = currencyB.wrapped;\n\n if (!tokenA || !tokenB || tokenA.equals(tokenB)) return null;\n\n const [token0, token1] = tokenA.sortsBefore(tokenB) ? [tokenA, tokenB] : [tokenB, tokenA];\n\n return { token0: token0.address, token1: token1.address, fee: feeAmount } as TransformedKey;\n });\n }, [poolKeys]);\n\n useEffect(() => {\n async function call() {\n if (transformedPoolKeys && transformedPoolKeys.length) {\n setLoading(true);\n\n const result = await Promise.all(\n transformedPoolKeys.map(async (element) => {\n if (!element) return null;\n\n const pool = await getPool(element.token0, element.token1, element.fee);\n\n if (!pool) return null;\n\n const poolMetadata = await getSwapPoolMetadata(pool.canisterId.toString());\n\n return {\n key: transformedKeyToKey(element),\n id: pool.canisterId.toString(),\n metadata: poolMetadata,\n ticks: [],\n checked: !!withoutVerify,\n };\n }),\n );\n\n const pools: { [id: string]: TypePoolsState } = {};\n\n result.forEach((ele) => {\n if (ele) {\n pools[ele.key] = ele;\n }\n });\n\n setPools(pools);\n setLoading(false);\n\n // Use update call to verify the pool.\n if (withoutVerify === false) {\n transformedPoolKeys.map(async (element) => {\n if (!element) return;\n\n const pool = await getPool_update_call(element.token0, element.token1, element.fee);\n\n if (!pool) {\n setPools((prevState) => ({\n ...prevState,\n [transformedKeyToKey(element)]: null,\n }));\n } else {\n const poolMetadata = await getSwapPoolMetadata(pool.canisterId.toString());\n\n setPools((prevState) => ({\n ...prevState,\n [transformedKeyToKey(element)]: {\n key: transformedKeyToKey(element),\n id: pool.canisterId.toString(),\n metadata: poolMetadata,\n ticks: [],\n checked: true,\n },\n }));\n }\n });\n }\n }\n }\n\n call();\n }, [JSON.stringify(transformedPoolKeys), withoutVerify]);\n\n return useMemo(() => {\n return transformedPoolKeys.map((transformedKey, index) => {\n if (!transformedKey) return [PoolState.INVALID, null];\n if (loading) return [PoolState.LOADING, null];\n\n const key = transformedKeyToKey(transformedKey);\n const result: TypePoolsState | null | undefined = pools[key];\n\n if (!result) return [PoolState.NOT_EXISTS, null];\n\n const { metadata, id, checked } = result;\n\n if (!metadata?.token0 || !metadata?.token1 || !metadata?.fee || !id) return [PoolState.NOT_EXISTS, null];\n\n try {\n const { fee, sqrtPriceX96, liquidity, tick } = metadata;\n const [token0, token1] = poolKeys[index];\n\n if (!token0 || !token1) return [PoolState.NOT_EXISTS, null];\n\n // Renew token that standard from the pool metadata\n const __token0 = new Token({\n address: token0.address,\n decimals: token0.decimals,\n symbol: token0.symbol,\n name: token0.name,\n standard: token0.address === metadata.token0.address ? metadata.token0.standard : metadata.token1.standard,\n logo: token0.logo,\n transFee: token0.transFee,\n });\n\n const __token1 = new Token({\n address: token1.address,\n decimals: token1.decimals,\n symbol: token1.symbol,\n name: token1.name,\n standard: token1.address === metadata.token1.address ? metadata.token1.standard : metadata.token0.standard,\n logo: token1.logo,\n transFee: token1.transFee,\n });\n\n return [\n checked ? PoolState.EXISTS : PoolState.NOT_CHECK,\n new Pool(\n id,\n __token0,\n __token1,\n Number(fee),\n numberToString(sqrtPriceX96),\n numberToString(liquidity),\n Number(tick),\n ),\n ];\n } catch (error) {\n console.error(\"Error when constructing the pool\", error);\n return [PoolState.NOT_EXISTS, null];\n }\n });\n }, [JSON.stringify(pools), loading, poolKeys, JSON.stringify(transformedPoolKeys)]);\n}\n\nexport function usePool(\n currencyA: Token | Null,\n currencyB: Token | Null,\n feeAmount: FeeAmount | undefined,\n withoutVerify = false,\n) {\n const poolKeys: [Token | Null, Token | Null, FeeAmount | undefined][] = useMemo(\n () => [[currencyA, currencyB, feeAmount]],\n [currencyA, currencyB, feeAmount],\n );\n\n return usePools(poolKeys, withoutVerify)[0];\n}\n\nexport function useTokenSwapPools(tokens: string[] | undefined) {\n const { result: allPools } = useSwapPools();\n\n return useMemo(() => {\n if (!tokens || !allPools) return undefined;\n\n return tokens.map((token) => {\n return allPools.filter((pool) => {\n return pool.token1.address === token || pool.token0.address === token;\n });\n });\n }, [allPools, tokens]);\n}\n\nexport function useTokenHasPairWithBaseToken(token: string | undefined) {\n const tokenPools = useTokenSwapPools(token ? [token] : undefined);\n\n return useMemo(() => {\n if (!tokenPools || !tokenPools[0] || !token) return undefined;\n\n return !!tokenPools[0].find((pool) => pool.token0.address === ICP.address || pool.token1.address === ICP.address);\n }, [tokenPools]);\n}\n\nexport function useTokensHasPairWithBaseToken(tokens: string[] | undefined) {\n const tokenPools = useTokenSwapPools(tokens);\n\n return useMemo(() => {\n if (!tokenPools || !tokenPools[0] || !tokens) return undefined;\n\n if (network === NETWORK.LOCAL) return true;\n\n if (tokens.find((token) => token === ICP.address)) return true;\n\n return tokens.reduce((prev, curr, index) => {\n const hasPairWithBaseToken = !!tokenPools[index].find(\n (pool) => pool.token0.address === ICP.address || pool.token1.address === ICP.address,\n );\n\n return prev || hasPairWithBaseToken;\n }, false);\n }, [tokenPools]);\n}\n","import { useCallback } from \"react\";\nimport { useCloseAllSteps } from \"store/steps/hooks\";\nimport { useHistory } from \"react-router-dom\";\n\nexport function useReclaimCallback() {\n const history = useHistory();\n const closeAllSteps = useCloseAllSteps();\n\n return useCallback(() => {\n history.push(\"/swap/withdraw\");\n closeAllSteps();\n }, [history, closeAllSteps]);\n}\n","import invariant from \"tiny-invariant\";\n\n// given an array of items sorted by `comparator`, insert an item into its sort index and constrain the size to\n// `maxSize` by removing the last item\nexport function sortedInsert(items: T[], add: T, maxSize: number, comparator: (a: T, b: T) => number): T | null {\n invariant(maxSize > 0, \"MAX_SIZE_ZERO\");\n // this is an invariant because the interface cannot return multiple removed items if items.length exceeds maxSize\n invariant(items.length <= maxSize, \"ITEMS_SIZE\");\n\n // short circuit first item add\n if (items.length === 0) {\n items.push(add);\n return null;\n } else {\n const isFull = items.length === maxSize;\n // short circuit if full and the additional item does not come before the last item\n if (isFull && comparator(items[items.length - 1], add) <= 0) {\n return add;\n }\n\n let lo = 0,\n hi = items.length;\n\n while (lo < hi) {\n const mid = (lo + hi) >>> 1;\n if (comparator(items[mid], add) <= 0) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n items.splice(lo, 0, add);\n return isFull ? items.pop()! : null;\n }\n}\n","import invariant from \"tiny-invariant\";\nimport { Token, Price } from \"../core\";\nimport { Pool } from \"./pool\";\n\n/**\n * Represents a list of pools through which a swap can occur\n * @template TInput The input token\n * @template TOutput The output token\n */\nexport class Route {\n public readonly pools: Pool[];\n\n public readonly tokenPath: Token[];\n\n public readonly input: TInput;\n\n public readonly output: TOutput;\n\n private _midPrice: Price | null = null;\n\n /**\n * Creates an instance of route.\n * @param pools An array of `Pool` objects, ordered by the route the swap will take\n * @param input The input token\n * @param output The output token\n */\n public constructor(pools: Pool[], input: TInput, output: TOutput) {\n invariant(pools.length > 0, \"POOLS\");\n\n const wrappedInput = input.wrapped;\n invariant(pools[0].involvesToken(wrappedInput), \"INPUT\");\n\n invariant(pools[pools.length - 1].involvesToken(output.wrapped), \"OUTPUT\");\n\n /**\n * Normalizes token0-token1 order and selects the next token/fee step to add to the path\n * */\n const tokenPath: Token[] = [wrappedInput];\n for (const [i, pool] of pools.entries()) {\n const currentInputToken = tokenPath[i];\n invariant(currentInputToken.equals(pool.token0) || currentInputToken.equals(pool.token1), \"PATH\");\n const nextToken = currentInputToken.equals(pool.token0) ? pool.token1 : pool.token0;\n tokenPath.push(nextToken);\n }\n\n this.pools = pools;\n this.tokenPath = tokenPath;\n this.input = input;\n this.output = output ?? (tokenPath[tokenPath.length - 1] as TOutput);\n }\n\n /**\n * Returns the mid price of the route\n */\n public get midPrice(): Price {\n if (this._midPrice !== null) return this._midPrice;\n\n const price = this.pools.slice(1).reduce(\n ({ nextInput, price }, pool) => {\n return nextInput.equals(pool.token0)\n ? {\n nextInput: pool.token1,\n price: price.multiply(pool.token0Price),\n }\n : {\n nextInput: pool.token0,\n price: price.multiply(pool.token1Price),\n };\n },\n this.pools[0].token0.equals(this.input.wrapped)\n ? {\n nextInput: this.pools[0].token1,\n price: this.pools[0].token0Price,\n }\n : {\n nextInput: this.pools[0].token0,\n price: this.pools[0].token1Price,\n },\n ).price;\n\n this._midPrice = new Price(this.input, this.output, price.denominator, price.numerator);\n\n return this._midPrice;\n }\n}\n","import invariant from \"tiny-invariant\";\nimport { Fraction, Percent, Price, sortedInsert, CurrencyAmount, TradeType, Token } from \"../core\";\nimport { ONE, ZERO } from \"../internalConstants\";\nimport { Pool } from \"./pool\";\nimport { Route } from \"./route\";\n\n/**\n * Trades comparator, an extension of the input output comparator that also considers other dimensions of the trade in ranking them\n * @template TInput The input token, either Ether or an ERC-20\n * @template TOutput The output token, either Ether or an ERC-20\n * @template TTradeType The trade type, either exact input or exact output\n * @param a The first trade to compare\n * @param b The second trade to compare\n * @returns A sorted ordering for two neighboring elements in a trade array\n */\nexport function tradeComparator(\n a: Trade,\n b: Trade,\n) {\n // must have same input and output token for comparison\n invariant(a.inputAmount.currency.equals(b.inputAmount.currency), \"INPUT_CURRENCY\");\n invariant(a.outputAmount.currency.equals(b.outputAmount.currency), \"OUTPUT_CURRENCY\");\n if (a.outputAmount.equalTo(b.outputAmount)) {\n if (a.inputAmount.equalTo(b.inputAmount)) {\n // consider the number of hops since each hop costs gas\n const aHops = a.swaps.reduce((total, cur) => total + cur.route.tokenPath.length, 0);\n const bHops = b.swaps.reduce((total, cur) => total + cur.route.tokenPath.length, 0);\n return aHops - bHops;\n }\n // trade A requires less input than trade B, so A should come first\n if (a.inputAmount.lessThan(b.inputAmount)) {\n return -1;\n } \n return 1;\n \n } \n // tradeA has less output than trade B, so should come second\n if (a.outputAmount.lessThan(b.outputAmount)) {\n return 1;\n } \n return -1;\n \n \n}\n\nexport interface BestTradeOptions {\n // how many results to return\n maxNumResults?: number;\n // the maximum number of hops a trade should contain\n maxHops?: number;\n}\n\n/**\n * Represents a trade executed against a set of routes where some percentage of the input is\n * split across each route.\n *\n * Each route has its own set of pools. Pools can not be re-used across routes.\n *\n * Does not account for slippage, i.e., changes in price environment that can occur between\n * the time the trade is submitted and when it is executed.\n * @template TInput The input token, either Ether or an ERC-20\n * @template TOutput The output token, either Ether or an ERC-20\n * @template TTradeType The trade type, either exact input or exact output\n */\nexport class Trade {\n /**\n * @deprecated Deprecated in favor of 'swaps' property. If the trade consists of multiple routes\n * this will return an error.\n *\n * When the trade consists of just a single route, this returns the route of the trade,\n * i.e. which pools the trade goes through.\n */\n public get route(): Route {\n invariant(this.swaps.length === 1, \"MULTIPLE_ROUTES\");\n return this.swaps[0].route;\n }\n\n /**\n * The swaps of the trade, i.e. which routes and how much is swapped in each that\n * make up the trade.\n */\n public readonly swaps: {\n route: Route;\n inputAmount: CurrencyAmount;\n outputAmount: CurrencyAmount;\n }[];\n\n /**\n * The type of the trade, either exact in or exact out.\n */\n public readonly tradeType: TTradeType;\n\n /**\n * The cached result of the input amount computation\n * @private\n */\n private _inputAmount: CurrencyAmount | undefined;\n\n /**\n * The input amount for the trade assuming no slippage.\n */\n public get inputAmount(): CurrencyAmount {\n if (this._inputAmount) {\n return this._inputAmount;\n }\n\n const inputCurrency = this.swaps[0].inputAmount.currency;\n const totalInputFromRoutes = this.swaps\n .map(({ inputAmount }) => inputAmount)\n .reduce((total, cur) => total.add(cur), CurrencyAmount.fromRawAmount(inputCurrency, 0));\n\n this._inputAmount = totalInputFromRoutes;\n return this._inputAmount;\n }\n\n /**\n * The cached result of the output amount computation\n * @private\n */\n private _outputAmount: CurrencyAmount | undefined;\n\n /**\n * The output amount for the trade assuming no slippage.\n */\n public get outputAmount(): CurrencyAmount {\n if (this._outputAmount) {\n return this._outputAmount;\n }\n\n const outputCurrency = this.swaps[0].outputAmount.currency;\n const totalOutputFromRoutes = this.swaps\n .map(({ outputAmount }) => outputAmount)\n .reduce((total, cur) => total.add(cur), CurrencyAmount.fromRawAmount(outputCurrency, 0));\n\n this._outputAmount = totalOutputFromRoutes;\n return this._outputAmount;\n }\n\n /**\n * The cached result of the computed execution price\n * @private\n */\n private _executionPrice: Price | undefined;\n\n /**\n * The price expressed in terms of output amount/input amount.\n */\n public get executionPrice(): Price {\n if (this._executionPrice) return this._executionPrice;\n\n this._executionPrice = new Price(\n this.inputAmount.currency,\n this.outputAmount.currency,\n this.inputAmount.quotient,\n this.outputAmount.quotient,\n );\n\n return new Price(\n this.inputAmount.currency,\n this.outputAmount.currency,\n this.inputAmount.quotient,\n this.outputAmount.quotient,\n );\n }\n\n /**\n * The cached result of the price impact computation\n * @private\n */\n private _priceImpact: Percent | undefined;\n\n /**\n * Returns the percent difference between the route's mid price and the price impact\n */\n public get priceImpact(): Percent {\n if (this._priceImpact) {\n return this._priceImpact;\n }\n\n let spotOutputAmount = CurrencyAmount.fromRawAmount(this.outputAmount.currency, 0);\n for (const { route, inputAmount } of this.swaps) {\n const midPrice = route.midPrice;\n spotOutputAmount = spotOutputAmount.add(midPrice.quote(inputAmount));\n }\n\n const priceImpact = spotOutputAmount.subtract(this.outputAmount).divide(spotOutputAmount);\n this._priceImpact = new Percent(priceImpact.numerator, priceImpact.denominator);\n\n return this._priceImpact;\n }\n\n /**\n * Constructs an exact in trade with the given amount in and route\n * @template TInput The input token, either Ether or an ERC-20\n * @template TOutput The output token, either Ether or an ERC-20\n * @param route The route of the exact in trade\n * @param amountIn The amount being passed in\n * @returns The exact in trade\n */\n public static async exactIn(\n route: Route,\n amountIn: CurrencyAmount,\n ): Promise> {\n return Trade.fromRoute(route, amountIn, TradeType.EXACT_INPUT);\n }\n\n /**\n * Constructs an exact out trade with the given amount out and route\n * @template TInput The input token, either Ether or an ERC-20\n * @template TOutput The output token, either Ether or an ERC-20\n * @param route The route of the exact out trade\n * @param amountOut The amount returned by the trade\n * @returns The exact out trade\n */\n public static async exactOut(\n route: Route,\n amountOut: CurrencyAmount,\n ): Promise> {\n return Trade.fromRoute(route, amountOut, TradeType.EXACT_OUTPUT);\n }\n\n /**\n * Constructs a trade by simulating swaps through the given route\n * @template TInput The input token, either Ether or an ERC-20.\n * @template TOutput The output token, either Ether or an ERC-20.\n * @template TTradeType The type of the trade, either exact in or exact out.\n * @param route route to swap through\n * @param amount the amount specified, either input or output, depending on tradeType\n * @param tradeType whether the trade is an exact input or exact output swap\n * @returns The route\n */\n public static async fromRoute(\n route: Route,\n amount: TTradeType extends TradeType.EXACT_INPUT ? CurrencyAmount : CurrencyAmount,\n tradeType: TTradeType,\n ): Promise> {\n const amounts: CurrencyAmount[] = new Array(route.tokenPath.length);\n let inputAmount: CurrencyAmount;\n let outputAmount: CurrencyAmount;\n if (tradeType === TradeType.EXACT_INPUT) {\n invariant(amount.currency.equals(route.input), \"INPUT\");\n amounts[0] = amount.wrapped;\n for (let i = 0; i < route.tokenPath.length - 1; i++) {\n const pool = route.pools[i];\n const [outputAmount] = await pool.getOutputAmount(amounts[i]);\n amounts[i + 1] = outputAmount;\n }\n inputAmount = CurrencyAmount.fromFractionalAmount(route.input, amount.numerator, amount.denominator);\n outputAmount = CurrencyAmount.fromFractionalAmount(\n route.output,\n amounts[amounts.length - 1].numerator,\n amounts[amounts.length - 1].denominator,\n );\n } else {\n invariant(amount.currency.equals(route.output), \"OUTPUT\");\n amounts[amounts.length - 1] = amount.wrapped;\n for (let i = route.tokenPath.length - 1; i > 0; i--) {\n const pool = route.pools[i - 1];\n const [inputAmount] = await pool.getInputAmount(amounts[i]);\n amounts[i - 1] = inputAmount;\n }\n inputAmount = CurrencyAmount.fromFractionalAmount(route.input, amounts[0].numerator, amounts[0].denominator);\n outputAmount = CurrencyAmount.fromFractionalAmount(route.output, amount.numerator, amount.denominator);\n }\n\n return new Trade({\n routes: [{ inputAmount, outputAmount, route }],\n tradeType,\n });\n }\n\n /**\n * Constructs a trade from routes by simulating swaps\n *\n * @template TInput The input token, either Ether or an ERC-20.\n * @template TOutput The output token, either Ether or an ERC-20.\n * @template TTradeType The type of the trade, either exact in or exact out.\n * @param routes the routes to swap through and how much of the amount should be routed through each\n * @param tradeType whether the trade is an exact input or exact output swap\n * @returns The trade\n */\n public static async fromRoutes(\n routes: {\n amount: TTradeType extends TradeType.EXACT_INPUT ? CurrencyAmount : CurrencyAmount;\n route: Route;\n }[],\n tradeType: TTradeType,\n ): Promise> {\n const populatedRoutes: {\n route: Route;\n inputAmount: CurrencyAmount;\n outputAmount: CurrencyAmount;\n }[] = [];\n\n for (const { route, amount } of routes) {\n const amounts: CurrencyAmount[] = new Array(route.tokenPath.length);\n let inputAmount: CurrencyAmount;\n let outputAmount: CurrencyAmount;\n\n if (tradeType === TradeType.EXACT_INPUT) {\n invariant(amount.currency.equals(route.input), \"INPUT\");\n inputAmount = CurrencyAmount.fromFractionalAmount(route.input, amount.numerator, amount.denominator);\n amounts[0] = CurrencyAmount.fromFractionalAmount(route.input.wrapped, amount.numerator, amount.denominator);\n\n for (let i = 0; i < route.tokenPath.length - 1; i++) {\n const pool = route.pools[i];\n const [outputAmount] = await pool.getOutputAmount(amounts[i]);\n amounts[i + 1] = outputAmount;\n }\n\n outputAmount = CurrencyAmount.fromFractionalAmount(\n route.output,\n amounts[amounts.length - 1].numerator,\n amounts[amounts.length - 1].denominator,\n );\n } else {\n invariant(amount.currency.equals(route.output), \"OUTPUT\");\n outputAmount = CurrencyAmount.fromFractionalAmount(route.output, amount.numerator, amount.denominator);\n amounts[amounts.length - 1] = CurrencyAmount.fromFractionalAmount(\n route.output.wrapped,\n amount.numerator,\n amount.denominator,\n );\n\n for (let i = route.tokenPath.length - 1; i > 0; i--) {\n const pool = route.pools[i - 1];\n const [inputAmount] = await pool.getInputAmount(amounts[i]);\n amounts[i - 1] = inputAmount;\n }\n\n inputAmount = CurrencyAmount.fromFractionalAmount(route.input, amounts[0].numerator, amounts[0].denominator);\n }\n\n populatedRoutes.push({ route, inputAmount, outputAmount });\n }\n\n return new Trade({\n routes: populatedRoutes,\n tradeType,\n });\n }\n\n /**\n * Creates a trade without computing the result of swapping through the route. Useful when you have simulated the trade\n * elsewhere and do not have any tick data\n * @template TInput The input token, either Ether or an ERC-20\n * @template TOutput The output token, either Ether or an ERC-20\n * @template TTradeType The type of the trade, either exact in or exact out\n * @param constructorArguments The arguments passed to the trade constructor\n * @returns The unchecked trade\n */\n public static createUncheckedTrade<\n TInput extends Token,\n TOutput extends Token,\n TTradeType extends TradeType,\n >(constructorArguments: {\n route: Route;\n inputAmount: CurrencyAmount;\n outputAmount: CurrencyAmount;\n tradeType: TTradeType;\n }): Trade {\n return new Trade({\n ...constructorArguments,\n routes: [\n {\n inputAmount: constructorArguments.inputAmount,\n outputAmount: constructorArguments.outputAmount,\n route: constructorArguments.route,\n },\n ],\n });\n }\n\n /**\n * Creates a trade without computing the result of swapping through the routes. Useful when you have simulated the trade\n * elsewhere and do not have any tick data\n * @template TInput The input token, either Ether or an ERC-20\n * @template TOutput The output token, either Ether or an ERC-20\n * @template TTradeType The type of the trade, either exact in or exact out\n * @param constructorArguments The arguments passed to the trade constructor\n * @returns The unchecked trade\n */\n public static createUncheckedTradeWithMultipleRoutes<\n TInput extends Token,\n TOutput extends Token,\n TTradeType extends TradeType,\n >(constructorArguments: {\n routes: {\n route: Route;\n inputAmount: CurrencyAmount;\n outputAmount: CurrencyAmount;\n }[];\n tradeType: TTradeType;\n }): Trade {\n return new Trade(constructorArguments);\n }\n\n /**\n * Construct a trade by passing in the pre-computed property values\n * @param routes The routes through which the trade occurs\n * @param tradeType The type of trade, exact input or exact output\n */\n private constructor({\n routes,\n tradeType,\n }: {\n routes: {\n route: Route;\n inputAmount: CurrencyAmount;\n outputAmount: CurrencyAmount;\n }[];\n tradeType: TTradeType;\n }) {\n const inputCurrency = routes[0].inputAmount.currency;\n const outputCurrency = routes[0].outputAmount.currency;\n invariant(\n routes.every(({ route }) => inputCurrency.wrapped.equals(route.input.wrapped)),\n \"INPUT_CURRENCY_MATCH\",\n );\n invariant(\n routes.every(({ route }) => outputCurrency.wrapped.equals(route.output.wrapped)),\n \"OUTPUT_CURRENCY_MATCH\",\n );\n\n const numPools = routes.map(({ route }) => route.pools.length).reduce((total, cur) => total + cur, 0);\n const poolAddressSet = new Set();\n for (const { route } of routes) {\n for (const pool of route.pools) {\n poolAddressSet.add(Pool.getAddress(pool.token0, pool.token1, pool.fee));\n }\n }\n\n invariant(numPools === poolAddressSet.size, \"POOLS_DUPLICATED\");\n\n this.swaps = routes;\n this.tradeType = tradeType;\n }\n\n /**\n * Get the minimum amount that must be received from this trade for the given slippage tolerance\n * @param slippageTolerance The tolerance of unfavorable slippage from the execution price of this trade\n * @returns The amount out\n */\n public minimumAmountOut(slippageTolerance: Percent, amountOut = this.outputAmount): CurrencyAmount {\n invariant(!slippageTolerance.lessThan(ZERO), \"SLIPPAGE_TOLERANCE\");\n if (this.tradeType === TradeType.EXACT_OUTPUT) {\n return amountOut;\n } \n const slippageAdjustedAmountOut = new Fraction(ONE)\n .add(slippageTolerance)\n .invert()\n .multiply(amountOut.quotient).quotient;\n return CurrencyAmount.fromRawAmount(amountOut.currency, slippageAdjustedAmountOut);\n \n }\n\n /**\n * Get the maximum amount in that can be spent via this trade for the given slippage tolerance\n * @param slippageTolerance The tolerance of unfavorable slippage from the execution price of this trade\n * @returns The amount in\n */\n public maximumAmountIn(slippageTolerance: Percent, amountIn = this.inputAmount): CurrencyAmount {\n invariant(!slippageTolerance.lessThan(ZERO), \"SLIPPAGE_TOLERANCE\");\n if (this.tradeType === TradeType.EXACT_INPUT) {\n return amountIn;\n } \n const slippageAdjustedAmountIn = new Fraction(ONE).add(slippageTolerance).multiply(amountIn.quotient).quotient;\n return CurrencyAmount.fromRawAmount(amountIn.currency, slippageAdjustedAmountIn);\n \n }\n\n /**\n * Return the execution price after accounting for slippage tolerance\n * @param slippageTolerance the allowed tolerated slippage\n * @returns The execution price\n */\n public worstExecutionPrice(slippageTolerance: Percent): Price {\n return new Price(\n this.inputAmount.currency,\n this.outputAmount.currency,\n this.maximumAmountIn(slippageTolerance).quotient,\n this.minimumAmountOut(slippageTolerance).quotient,\n );\n }\n\n /**\n * Given a list of pools, and a fixed amount in, returns the top `maxNumResults` trades that go from an input token\n * amount to an output token, making at most `maxHops` hops.\n * Note this does not consider aggregation, as routes are linear. It's possible a better route exists by splitting\n * the amount in among multiple routes.\n * @param pools the pools to consider in finding the best trade\n * @param nextAmountIn exact amount of input currency to spend\n * @param currencyOut the desired currency out\n * @param maxNumResults maximum number of results to return\n * @param maxHops maximum number of hops a returned trade can make, e.g. 1 hop goes through a single pool\n * @param currentPools used in recursion; the current list of pools\n * @param currencyAmountIn used in recursion; the original value of the currencyAmountIn parameter\n * @param bestTrades used in recursion; the current list of best trades\n * @returns The exact in trade\n */\n public static async bestTradeExactIn(\n pools: Pool[],\n currencyAmountIn: CurrencyAmount,\n currencyOut: TOutput,\n { maxNumResults = 3, maxHops = 3 }: BestTradeOptions = {},\n // used in recursion.\n currentPools: Pool[] = [],\n nextAmountIn: CurrencyAmount = currencyAmountIn,\n bestTrades: Trade[] = [],\n ): Promise[]> {\n invariant(pools.length > 0, \"POOLS\");\n invariant(maxHops > 0, \"MAX_HOPS\");\n invariant(currencyAmountIn === nextAmountIn || currentPools.length > 0, \"INVALID_RECURSION\");\n\n const amountIn = nextAmountIn.wrapped;\n const tokenOut = currencyOut.wrapped;\n for (let i = 0; i < pools.length; i++) {\n const pool = pools[i];\n // pool irrelevant\n if (!pool.token0.equals(amountIn.currency) && !pool.token1.equals(amountIn.currency)) continue;\n\n let amountOut: CurrencyAmount;\n try {\n [amountOut] = await pool.getOutputAmount(amountIn);\n } catch (error) {\n // input too low\n if (error.isInsufficientInputAmountError) {\n continue;\n }\n throw error;\n }\n // we have arrived at the output token, so this is the final trade of one of the paths\n if (amountOut.currency.isToken && amountOut.currency.equals(tokenOut)) {\n sortedInsert(\n bestTrades,\n await Trade.fromRoute(\n new Route([...currentPools, pool], currencyAmountIn.currency, currencyOut),\n currencyAmountIn,\n TradeType.EXACT_INPUT,\n ),\n maxNumResults,\n tradeComparator,\n );\n } else if (maxHops > 1 && pools.length > 1) {\n const poolsExcludingThisPool = pools.slice(0, i).concat(pools.slice(i + 1, pools.length));\n\n // otherwise, consider all the other paths that lead from this token as long as we have not exceeded maxHops\n await Trade.bestTradeExactIn(\n poolsExcludingThisPool,\n currencyAmountIn,\n currencyOut,\n {\n maxNumResults,\n maxHops: maxHops - 1,\n },\n [...currentPools, pool],\n amountOut,\n bestTrades,\n );\n }\n }\n\n return bestTrades;\n }\n\n /**\n * similar to the above method but instead targets a fixed output amount\n * given a list of pools, and a fixed amount out, returns the top `maxNumResults` trades that go from an input token\n * to an output token amount, making at most `maxHops` hops\n * note this does not consider aggregation, as routes are linear. it's possible a better route exists by splitting\n * the amount in among multiple routes.\n * @param pools the pools to consider in finding the best trade\n * @param currencyIn the currency to spend\n * @param currencyAmountOut the desired currency amount out\n * @param nextAmountOut the exact amount of currency out\n * @param maxNumResults maximum number of results to return\n * @param maxHops maximum number of hops a returned trade can make, e.g. 1 hop goes through a single pool\n * @param currentPools used in recursion; the current list of pools\n * @param bestTrades used in recursion; the current list of best trades\n * @returns The exact out trade\n */\n public static async bestTradeExactOut(\n pools: Pool[],\n currencyIn: TInput,\n currencyAmountOut: CurrencyAmount,\n { maxNumResults = 3, maxHops = 3 }: BestTradeOptions = {},\n // used in recursion.\n currentPools: Pool[] = [],\n nextAmountOut: CurrencyAmount = currencyAmountOut,\n bestTrades: Trade[] = [],\n ): Promise[]> {\n invariant(pools.length > 0, \"POOLS\");\n invariant(maxHops > 0, \"MAX_HOPS\");\n invariant(currencyAmountOut === nextAmountOut || currentPools.length > 0, \"INVALID_RECURSION\");\n\n const amountOut = nextAmountOut.wrapped;\n const tokenIn = currencyIn.wrapped;\n for (let i = 0; i < pools.length; i++) {\n const pool = pools[i];\n // pool irrelevant\n if (!pool.token0.equals(amountOut.currency) && !pool.token1.equals(amountOut.currency)) continue;\n\n let amountIn: CurrencyAmount;\n try {\n [amountIn] = await pool.getInputAmount(amountOut);\n } catch (error) {\n // not enough liquidity in this pool\n if (error.isInsufficientReservesError) {\n continue;\n }\n throw error;\n }\n // we have arrived at the input token, so this is the first trade of one of the paths\n if (amountIn.currency.equals(tokenIn)) {\n sortedInsert(\n bestTrades,\n await Trade.fromRoute(\n new Route([pool, ...currentPools], currencyIn, currencyAmountOut.currency),\n currencyAmountOut,\n TradeType.EXACT_OUTPUT,\n ),\n maxNumResults,\n tradeComparator,\n );\n } else if (maxHops > 1 && pools.length > 1) {\n const poolsExcludingThisPool = pools.slice(0, i).concat(pools.slice(i + 1, pools.length));\n\n // otherwise, consider all the other paths that arrive at this token as long as we have not exceeded maxHops\n await Trade.bestTradeExactOut(\n poolsExcludingThisPool,\n currencyIn,\n currencyAmountOut,\n {\n maxNumResults,\n maxHops: maxHops - 1,\n },\n [pool, ...currentPools],\n amountIn,\n bestTrades,\n );\n }\n }\n\n return bestTrades;\n }\n}\n","import { FeeAmount, Token } from \"@icpswap/swap-sdk\";\nimport { useMemo } from \"react\";\nimport { useAllCurrencyCombinations } from \"./useAllCurrencyCombinations\";\nimport { PoolState, usePools } from \"./usePools\";\n\nexport function useSwapPools(currencyIn: Token | undefined, currencyOut: Token | undefined) {\n const allCurrencyCombinations = useAllCurrencyCombinations(currencyIn, currencyOut);\n\n const allCurrencyCombinationsWithAllFees: [Token, Token, FeeAmount][] = useMemo(() => {\n return allCurrencyCombinations.reduce(\n (list, [tokenA, tokenB]) => {\n return list.concat([\n // [tokenA, tokenB, FeeAmount.LOW],\n [tokenA, tokenB, FeeAmount.MEDIUM],\n // [tokenA, tokenB, FeeAmount.HIGH],\n ]);\n },\n [] as [Token, Token, FeeAmount][],\n );\n }, [allCurrencyCombinations]);\n\n const pools = usePools(allCurrencyCombinationsWithAllFees);\n\n return useMemo(() => {\n return {\n pools: pools\n .filter((tuple) => {\n return (tuple[0] === PoolState.EXISTS || tuple[0] === PoolState.NOT_CHECK) && tuple[1] !== null;\n })\n .map(([, pool]) => pool),\n loading: pools.some(([state]) => state === PoolState.LOADING),\n checked: !pools.some(([state]) => state === PoolState.NOT_CHECK),\n noLiquidity: !!pools.find((tuple) => tuple[0] === PoolState.NOT_EXISTS),\n };\n }, [pools]);\n}\n","import { useMemo } from \"react\";\nimport { Token } from \"@icpswap/swap-sdk\";\n\nexport function useAllCurrencyCombinations(tokenA: Token | undefined, tokenB: Token | undefined): Token[][] {\n return useMemo(() => {\n return tokenA && tokenB\n ? [[tokenA, tokenB]]\n .filter((tokens) => Boolean(tokens[0] && tokens[1]))\n .filter(([t0, t1]) => t0.address !== t1.address)\n : [];\n }, [tokenA, tokenB]);\n}\n","import { Route, Pool, Token } from \"@icpswap/swap-sdk\";\nimport { useMemo } from \"react\";\nimport { useIsSingleHop } from \"store/swap/cache/hooks\";\nimport { useSwapPools } from \"./useSwapPools\";\n\nfunction poolEquals(poolA: Pool, poolB: Pool) {\n return (\n poolA === poolB ||\n (poolA.token0.equals(poolB.token0) && poolA.token1.equals(poolB.token1) && poolA.fee === poolB.fee)\n );\n}\n\nexport function computeAllRoutes(\n currencyIn: Token,\n currencyOut: Token,\n pools: (Pool | null)[],\n currentPath: Pool[],\n allPaths: Route[],\n startCurrencyIn: Token = currencyIn,\n maxHops = 2,\n) {\n const tokenIn = currencyIn?.wrapped;\n const tokenOut = currencyOut?.wrapped;\n\n if (!tokenIn || !tokenOut) throw new Error(\"Missing tokenIn/tokenOut\");\n\n for (const pool of pools) {\n if (!pool || !pool.involvesToken(tokenIn) || currentPath.find((pathPool) => poolEquals(pool, pathPool))) continue;\n\n const outputToken = pool.token0.equals(tokenIn) ? pool.token1 : pool.token0;\n if (outputToken.equals(tokenOut)) {\n allPaths.push(new Route([...currentPath, pool], startCurrencyIn, currencyOut));\n } else if (maxHops > 1) {\n computeAllRoutes(outputToken, currencyOut, pools, [...currentPath, pool], allPaths, startCurrencyIn, maxHops - 1);\n }\n }\n\n return allPaths;\n}\n\nexport function useAllRoutes(currencyIn: Token | undefined, currencyOut: Token | undefined) {\n const { pools, loading: poolsLoading, checked, noLiquidity } = useSwapPools(currencyIn, currencyOut);\n\n const singleHopOnly = useIsSingleHop();\n\n return useMemo(() => {\n if (poolsLoading || !pools || !currencyIn || !currencyOut) return { loading: true, routes: [], checked: false };\n const routes = computeAllRoutes(currencyIn, currencyOut, pools, [], [], currencyIn, singleHopOnly ? 1 : 2);\n return { loading: false, routes, checked, noLiquidity };\n }, [currencyIn, currencyOut, pools, poolsLoading, singleHopOnly, checked, noLiquidity]);\n}\n","import { useMemo } from \"react\";\nimport { TradeType } from \"@icpswap/constants\";\nimport { CurrencyAmount, Trade, Token, Route } from \"@icpswap/swap-sdk\";\nimport { tryParseAmount } from \"utils/swap\";\nimport { BigNumber } from \"bignumber.js\";\nimport { formatTokenAmount, numberToString } from \"@icpswap/utils\";\nimport { useQuoteExactInput, useSwapPoolAvailable } from \"hooks/swap/v3Calls\";\n\nimport { useAllRoutes } from \"./useAllRoutes\";\n\nexport enum TradeState {\n LOADING = \"LOADING\",\n INVALID = \"INVALID\",\n NO_ROUTE_FOUND = \"NO_ROUTE_FOUND\",\n VALID = \"VALID\",\n SYNCING = \"SYNCING\",\n NOT_CHECK = \"NOT_CHECK\",\n}\n\nexport function useBestTrade(\n inputCurrency: Token | undefined,\n outputCurrency: Token | undefined,\n typedValue: string | undefined,\n) {\n const actualSwapValue = typedValue;\n\n // reload when typeValue is changed\n const { routes, loading: routesLoading, checked, noLiquidity } = useAllRoutes(inputCurrency, outputCurrency);\n\n const zeroForOne =\n inputCurrency && outputCurrency ? inputCurrency.wrapped.sortsBefore(outputCurrency.wrapped) : undefined;\n\n const tradePoolId = useMemo(() => {\n if (!routes) return undefined;\n return routes[0]?.pools[0]?.id;\n }, [routes]);\n\n const params = useMemo(() => {\n if (!actualSwapValue || zeroForOne === undefined) return undefined;\n\n const route = routes\n .sort((a, b) => {\n if (a.midPrice.greaterThan(b.midPrice)) return -1;\n if (a.midPrice.lessThan(b.midPrice)) return 1;\n return 0;\n })\n .map((route) => {\n return {\n pool: route.pools[0]?.id,\n tokenIn: route.input?.wrapped?.address,\n tokenOut: route.output?.wrapped?.address,\n amountIn: actualSwapValue ? numberToString(formatTokenAmount(actualSwapValue, route.input?.decimals)) : \"0\",\n feeAmount: route.pools[0]?.fee,\n };\n });\n\n if (!route[0]) return undefined;\n\n return JSON.stringify({\n poolId: route[0].pool,\n amountIn: route[0].amountIn,\n zeroForOne,\n });\n }, [routes, actualSwapValue]);\n\n const available = useSwapPoolAvailable(tradePoolId);\n\n const { loading: exactInputLoading, result: _quotesResults } = useQuoteExactInput(params);\n\n const quotesResults = useMemo(() => {\n if (_quotesResults) {\n return [{ amountOut: `0x${new BigNumber(String(_quotesResults)).toString(16)}` }];\n }\n return [];\n }, [_quotesResults, exactInputLoading]);\n\n return useMemo(() => {\n if (\n !inputCurrency ||\n !outputCurrency ||\n inputCurrency.equals(outputCurrency) ||\n !actualSwapValue ||\n new BigNumber(actualSwapValue).isEqualTo(0)\n ) {\n return {\n state: TradeState.INVALID,\n trade: null,\n tradePoolId,\n routes,\n noLiquidity,\n };\n }\n\n if (routesLoading || exactInputLoading) {\n return {\n state: TradeState.LOADING,\n trade: null,\n tradePoolId,\n routes,\n noLiquidity,\n };\n }\n\n const { bestRoute, amountOut } = quotesResults.reduce(\n (currentBest: { bestRoute: Route | null; amountOut: string | null }, { amountOut }, i) => {\n if (!amountOut) return currentBest;\n\n if (currentBest.amountOut === null) {\n return {\n bestRoute: routes[i],\n amountOut,\n };\n }\n if (new BigNumber(currentBest.amountOut).isLessThan(amountOut)) {\n return {\n bestRoute: routes[i],\n amountOut,\n };\n }\n\n return currentBest;\n },\n {\n bestRoute: null,\n amountOut: null,\n },\n );\n\n const inputAmount = tryParseAmount(actualSwapValue, inputCurrency);\n\n if (!bestRoute || !amountOut || !inputAmount) {\n return {\n state: TradeState.NO_ROUTE_FOUND,\n trade: null,\n tradePoolId,\n routes,\n noLiquidity,\n };\n }\n\n return {\n state: checked ? TradeState.VALID : TradeState.NOT_CHECK,\n available,\n trade: Trade.createUncheckedTrade({\n route: bestRoute,\n tradeType: TradeType.EXACT_INPUT,\n inputAmount,\n outputAmount: CurrencyAmount.fromRawAmount(outputCurrency, amountOut.toString()),\n }),\n tradePoolId,\n routes,\n noLiquidity,\n };\n }, [\n inputCurrency,\n actualSwapValue,\n outputCurrency,\n quotesResults,\n routes,\n routesLoading,\n available,\n checked,\n tradePoolId,\n noLiquidity,\n ]);\n}\n","import { Principal } from \"@dfinity/principal\";\nimport { resultFormat } from \"@icpswap/utils\";\nimport { swapPool } from \"@icpswap/actor\";\nimport { useCallsData } from \"@icpswap/hooks\";\nimport { useCallback } from \"react\";\n\nexport async function getUserPositionIds(canisterId: string, principal: string) {\n return resultFormat>(\n await (await swapPool(canisterId)).getUserPositionIdsByPrincipal(Principal.fromText(principal)),\n ).data;\n}\n\nexport function useUserPositionIds(canisterId: string | undefined, principal: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || !principal) return undefined;\n return await getUserPositionIds(canisterId, principal);\n }, [canisterId, principal]),\n );\n}\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { getSwapTokenArgs } from \"hooks/token/index\";\nimport { userStorage, swapPool } from \"@icpswap/actor\";\nimport {\n useCallsData,\n useInfoUserStorageIds,\n getInfoUserStorageIds,\n quote,\n getSwapPoolMetadata,\n getSwapPosition,\n getSwapPool,\n createSwapPool,\n _getSwapPoolAllBalance,\n} from \"@icpswap/hooks\";\nimport { resultFormat, isAvailablePageArgs } from \"@icpswap/utils\";\nimport { FeeAmount } from \"@icpswap/swap-sdk\";\nimport type { PaginationResult, SwapPoolData, UserStorageTransaction } from \"@icpswap/types\";\nimport BigNumber from \"bignumber.js\";\nimport { swapFactory_update_call } from \"actor/swap\";\nimport { UserPosition } from \"types/swap\";\nimport { Principal } from \"@dfinity/principal\";\nimport { useStateCallsData } from \"hooks/useCallsData\";\nimport { sortToken } from \"utils/swap\";\n\nexport async function getPool(token0: string, token1: string, fee: FeeAmount = FeeAmount.MEDIUM) {\n const sortedToken = sortToken(token0, token1);\n\n return await getSwapPool({\n fee: BigInt(fee),\n token0: getSwapTokenArgs(sortedToken.token0),\n token1: getSwapTokenArgs(sortedToken.token1),\n });\n}\n\nexport async function getPool_update_call(token0: string, token1: string, fee: FeeAmount = FeeAmount.MEDIUM) {\n const sortedToken = sortToken(token0, token1);\n\n return resultFormat(\n await (\n await swapFactory_update_call()\n ).getPool({\n fee: BigInt(fee),\n token0: getSwapTokenArgs(sortedToken.token0),\n token1: getSwapTokenArgs(sortedToken.token1),\n }),\n ).data;\n}\n\nexport async function createPool(token0: string, token1: string, fee: FeeAmount, sqrtPriceX96: string) {\n let _token0 = token0;\n let _token1 = token1;\n\n if (_token0 > _token1) {\n _token0 = token1;\n _token1 = token0;\n }\n\n return await createSwapPool({\n fee: BigInt(fee),\n token0: getSwapTokenArgs(_token0),\n token1: getSwapTokenArgs(_token1),\n sqrtPriceX96,\n });\n}\n\nexport { deposit, mint, increaseLiquidity, decreaseLiquidity, quote, swap, collect, withdraw } from \"@icpswap/hooks\";\n\nexport async function getPositionDetailsFromId(poolId: string, positionId: string) {\n const pool = await getSwapPoolMetadata(poolId);\n const position = await getSwapPosition(poolId, BigInt(positionId));\n\n if (pool && position) {\n return {\n tickLower: position.tickLower,\n tickUpper: position.tickUpper,\n liquidity: position.liquidity,\n tokensOwed0: position.tokensOwed0,\n tokensOwed1: position.tokensOwed1,\n feeGrowthInside0LastX128: position.feeGrowthInside0LastX128,\n feeGrowthInside1LastX128: position.feeGrowthInside1LastX128,\n index: Number(positionId),\n id: poolId,\n token0: pool.token0.address,\n token1: pool.token1.address,\n fee: pool.fee.toString(),\n } as UserPosition;\n }\n\n return undefined;\n}\n\nexport function usePositionDetailsFromId(poolId: string | undefined, positionId: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (poolId === undefined || positionId === undefined) return undefined;\n return await getPositionDetailsFromId(poolId, positionId);\n }, [poolId, positionId]),\n );\n}\n\nexport function useQuoteExactInput(args: string | undefined) {\n const call = useCallback(async () => {\n if (!args) return undefined;\n\n const _args = JSON.parse(args) as { amountIn: string; zeroForOne: boolean; poolId: string };\n\n return await quote(_args.poolId, {\n amountIn: _args.amountIn,\n zeroForOne: _args.zeroForOne,\n amountOutMinimum: \"0\",\n });\n }, [args]);\n\n return useStateCallsData(call, \"quoteExactInput\", !!args);\n}\n\nexport function useQuoteUnitPrice(\n poolId: string | undefined,\n amountIn: string | undefined,\n zeroForOne: boolean | undefined,\n) {\n return useCallsData(\n useCallback(async () => {\n if (!amountIn || amountIn === \"0\" || !poolId || zeroForOne === undefined) return undefined;\n return await quote(poolId, {\n amountIn,\n zeroForOne,\n amountOutMinimum: \"0\",\n });\n }, [amountIn, poolId, zeroForOne]),\n );\n}\n\nexport async function getPoolCanisterId(token0Id: string, token1Id: string, fee: FeeAmount) {\n const pool = await getPool(token0Id, token1Id, fee);\n return pool?.canisterId.toString();\n}\n\nexport function usePoolCanisterId(\n token0Id: string | undefined | null,\n token1Id: string | undefined | null,\n fee: FeeAmount | undefined | null,\n) {\n return useCallsData(\n useCallback(async () => {\n if (!token0Id || !token1Id || !fee) return undefined;\n return await getPoolCanisterId(token0Id, token1Id, fee);\n }, [token0Id, token1Id, fee]),\n );\n}\n\nexport type TokenAmounts = [Principal, { balance0: bigint; balance1: bigint }];\n\nexport async function getPoolTokenAmounts(poolId: string) {\n const result = await _getSwapPoolAllBalance(poolId);\n\n if (result) {\n return result.reduce(\n (prev, curr) => {\n return {\n balance0: prev.balance0.plus(curr[1].balance0.toString()),\n balance1: prev.balance1.plus(curr[1].balance1.toString()),\n };\n },\n { balance0: new BigNumber(0), balance1: new BigNumber(1) },\n );\n }\n\n return undefined;\n}\n\nexport function usePoolTokenAmounts(poolId: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!poolId) return undefined;\n return await getPoolTokenAmounts(poolId);\n }, [poolId]),\n );\n}\n\nexport type Key = {\n token0: string;\n token1: string;\n fee: FeeAmount;\n};\n\nexport function usePoolIdsFromKey(keys: (Key | undefined)[] | undefined) {\n const [ids, setIds] = useState<(string | undefined)[]>([]);\n\n useEffect(() => {\n const call = async () => {\n const queries = keys?.map(async (key) => {\n if (!key) return undefined;\n return await getPoolCanisterId(key.token0, key.token1, key.fee);\n });\n\n if (queries && !!queries.length) {\n const ids = await Promise.all(queries);\n setIds(ids);\n }\n };\n\n call();\n }, [keys]);\n\n return useMemo(() => ids, [ids]);\n}\n\nexport function usePoolIdFromKey(key: Key | undefined) {\n const ids = usePoolIdsFromKey([key]);\n return useMemo(() => ids[0], [ids]);\n}\n\nexport function usePoolsTokenAmountsFromKey(keys: (Key | undefined)[] | undefined) {\n const [amounts, setAmounts] = useState<({ balance0: BigNumber; balance1: BigNumber } | undefined)[]>([]);\n const [loading, setLoading] = useState(false);\n\n const ids = usePoolIdsFromKey(keys);\n\n useEffect(() => {\n const call = async () => {\n if (ids.length) {\n setLoading(true);\n const queries = ids?.map(async (id) => {\n if (id) return await getPoolTokenAmounts(id);\n return undefined;\n });\n\n if (queries && !!queries.length) {\n const results = await Promise.all<{ balance0: BigNumber; balance1: BigNumber } | undefined>(queries);\n setAmounts(results);\n }\n setLoading(false);\n }\n };\n\n call();\n }, [ids]);\n\n return useMemo(() => ({ result: amounts, loading }), [amounts, loading]);\n}\n\nexport function usePoolTokenAmountsFromKey(key: Key | undefined) {\n const keys = useMemo(() => [key], [key]);\n const { result, loading } = usePoolsTokenAmountsFromKey(keys);\n return useMemo(() => ({ result: result[0], loading }), [result, loading]);\n}\n\nexport function useUserSwapTransactions(principal: string | undefined, offset: number, limit: number) {\n const { result: storageIds } = useInfoUserStorageIds(principal);\n\n const storageId = useMemo(() => {\n if (!storageIds) return undefined;\n return storageIds[storageIds.length - 1];\n }, [storageIds]);\n\n return useCallsData(\n useCallback(async () => {\n if (!principal || !isAvailablePageArgs(offset, limit)) return undefined;\n\n const storageIds = await getInfoUserStorageIds(principal);\n\n if (!storageIds || storageIds.length === 0) return undefined;\n\n const storageId = storageIds[storageIds.length - 1];\n\n return resultFormat>(\n await (await userStorage(storageId)).get(principal, BigInt(offset), BigInt(limit), []),\n ).data;\n }, [principal, offset, limit, storageId]),\n );\n}\n\nexport async function getSwapPoolAvailable(canisterId: string) {\n const result = resultFormat<{ whitelist: string[]; available: boolean }>(\n await (await swapPool(canisterId)).getAvailabilityState(),\n ).data;\n\n return result?.available;\n}\n\nexport function useSwapPoolAvailable(canisterId: string | undefined) {\n const [available, setAvailable] = useState(true);\n\n useEffect(() => {\n const call = async () => {\n if (!canisterId) return;\n const available = await getSwapPoolAvailable(canisterId);\n setAvailable(!!available);\n };\n\n call();\n }, [canisterId]);\n\n return useMemo(() => available, [available]);\n}\n","import { useCallback } from \"react\";\nimport { BigNumber, isValidPrincipal, resultFormat, isAvailablePageArgs, parseTokenAmount } from \"@icpswap/utils\";\nimport { ICP } from \"@icpswap/tokens\";\nimport { Principal } from \"@dfinity/principal\";\nimport { TokenInfo } from \"types/token\";\nimport { tokenAdapter, icpAdapter } from \"@icpswap/token-adapter\";\nimport { tokenList } from \"@icpswap/actor\";\nimport { getTokenStandard } from \"store/token/cache/hooks\";\nimport TokenDefaultLogo from \"assets/images/Token_default_logo.png\";\nimport { useCallsData } from \"@icpswap/hooks\";\nimport { ResultStatus, StatusResult, TOKEN_STANDARD } from \"@icpswap/types\";\n\nexport async function getTokenTotalHolder(canisterId: string | undefined) {\n if (!canisterId) return undefined;\n\n return (\n await tokenAdapter.totalHolders({\n canisterId,\n })\n ).data;\n}\n\nexport function useTokenTotalHolder(canisterId: string | undefined, reload?: boolean) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getTokenTotalHolder(canisterId);\n }, [canisterId]),\n reload,\n );\n}\n\nexport function useTokenHolders(canisterId: string, offset: number, limit: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || !isAvailablePageArgs(offset, limit)) return undefined;\n return (\n await tokenAdapter.holders({\n canisterId,\n params: {\n offset: BigInt(offset),\n limit: BigInt(limit),\n },\n })\n ).data;\n }, [offset, limit, canisterId]),\n );\n}\n\nexport interface TokenTransferProps {\n canisterId: string;\n to: string;\n amount: BigNumber | number;\n from: string;\n subaccount?: number[];\n memo?: number[] | bigint;\n fee?: number | string | bigint;\n decimals?: number;\n}\n\nexport async function tokenTransfer({\n canisterId,\n to,\n amount,\n from,\n subaccount,\n memo,\n fee,\n decimals,\n}: TokenTransferProps) {\n let result: StatusResult = { data: undefined, message: \"\", status: ResultStatus.ERROR };\n\n if (canisterId === ICP.address) {\n result = await icpAdapter.transfer({\n canisterId,\n identity: true,\n params: {\n from: isValidPrincipal(from) ? { principal: Principal.fromText(from) } : { address: from },\n to: isValidPrincipal(to) ? { principal: Principal.fromText(to) } : { address: to },\n amount: BigInt(amount.toString()),\n subaccount,\n memo,\n },\n });\n } else {\n result = await tokenAdapter.transfer({\n identity: true,\n canisterId,\n params: {\n from: isValidPrincipal(from) ? { principal: Principal.fromText(from) } : { address: from },\n to: isValidPrincipal(to) ? { principal: Principal.fromText(to) } : { address: to },\n amount: BigInt(amount.toString()),\n subaccount,\n memo,\n fee: fee !== undefined ? BigInt(fee) : undefined,\n },\n });\n }\n\n const { data, message, status } = result;\n\n let new_message = message;\n\n if (new_message.includes(\"InsufficientFunds\")) {\n const balance = new_message.replace(/\\D/g, \"\");\n\n if (balance) {\n new_message = `InsufficientFunds: ${decimals ? parseTokenAmount(balance, decimals).toFormat() : balance}`;\n }\n }\n\n return {\n status,\n message: new_message,\n data,\n } as StatusResult;\n}\n\nexport async function getTokenTransaction(\n canisterId: string,\n account: string | undefined,\n offset: number,\n limit: number,\n) {\n return (\n await tokenAdapter.transactions({\n canisterId,\n params: {\n user: account ? { address: account } : undefined,\n offset,\n limit,\n },\n })\n ).data;\n}\n\nexport function useTokenTransactions(canisterId: string, account: string | undefined, offset: number, limit: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || !isAvailablePageArgs(offset, limit)) return undefined;\n return getTokenTransaction(canisterId, account, offset, limit);\n }, [offset, limit, canisterId]),\n );\n}\n\nexport async function getTokenSupply(canisterId: string | undefined) {\n if (!canisterId) return undefined;\n return (await tokenAdapter.supply({ canisterId })).data;\n}\n\nexport function useTokenSupply(canisterId: string | undefined, reload?: boolean) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getTokenSupply(canisterId);\n }, [canisterId]),\n reload,\n );\n}\n\nexport async function getTokenMetadata(canisterId: string) {\n return tokenAdapter.metadata({ canisterId });\n}\n\nexport function useTokenMetadata(canisterId: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return (await getTokenMetadata(canisterId)).data;\n }, [canisterId]),\n );\n}\n\nexport async function getTokenListLogo(canisterId: string | undefined) {\n if (!canisterId) return undefined;\n return resultFormat(await (await tokenList()).getLogo(canisterId)).data;\n}\n\nfunction isICRCToken(tokenId: string) {\n const tokenStandard = getTokenStandard(tokenId);\n return tokenStandard === TOKEN_STANDARD.ICRC1 || tokenStandard === TOKEN_STANDARD.ICRC2;\n}\n\nexport async function getTokenInfo(canisterId: string | undefined) {\n if (!canisterId) return undefined;\n\n return Promise.all([\n getTokenMetadata(canisterId),\n isICRCToken(canisterId) ? getTokenListLogo(canisterId) : null,\n ]).then(([result, logo]) => {\n if (!result) return undefined;\n\n const metadata = result.data;\n\n if (!metadata || metadata.decimals === undefined || metadata.fee === undefined || metadata.symbol === undefined)\n return undefined;\n\n const _logo = isICRCToken(canisterId) ? logo || metadata.logo : metadata.logo;\n\n return {\n logo: _logo || TokenDefaultLogo,\n transFee: metadata.fee,\n decimals: metadata.decimals,\n name: metadata.name,\n symbol: metadata.symbol,\n canisterId,\n standardType: getTokenStandard(canisterId) ?? TOKEN_STANDARD.ICRC1,\n totalSupply: BigInt(0),\n } as TokenInfo;\n });\n}\n\nexport function useTokenInfo(canisterId: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getTokenInfo(canisterId);\n }, [canisterId]),\n );\n}\n","import { useMemo } from \"react\";\nimport type { Erc20MinterInfo, Null } from \"@icpswap/types\";\nimport { useTokenFromActiveNetwork } from \"hooks/web3/useTokenFromNetwork\";\n\nexport function useERC20Token(tokenAddress: string | undefined) {\n return useTokenFromActiveNetwork(tokenAddress);\n}\n\nexport function useERC20TokenByChainKeyId(tokenId: string | undefined, chainKeyMinterInfo: Erc20MinterInfo | Null) {\n const tokenAddress = useMemo(() => {\n if (!tokenId || !chainKeyMinterInfo || !chainKeyMinterInfo.supported_ckerc20_tokens[0]) return undefined;\n\n const chainKeyInfo = chainKeyMinterInfo.supported_ckerc20_tokens[0].find(\n (token) => token.ledger_canister_id.toString() === tokenId,\n );\n\n return chainKeyInfo?.erc20_contract_address;\n }, [tokenId, chainKeyMinterInfo]);\n\n return useTokenFromActiveNetwork(tokenAddress);\n}\n","import { nonNullArgs } from \"@icpswap/utils\";\nimport { icrc1 } from \"@icpswap/actor\";\nimport { EXTAdapter, icrc1Adapter, DIP20Adapter } from \"@icpswap/token-adapter\";\nimport { TOKEN_STANDARD } from \"@icpswap/constants\";\n\nexport async function getIcrcStandard(canisterId: string) {\n try {\n const metadata = (await icrc1Adapter.metadata({ canisterId })).data;\n if (metadata.symbol) {\n const standards = await (await icrc1(canisterId)).icrc1_supported_standards();\n const support_icrc2 = standards.find((e) => e.name === \"ICRC-2\");\n if (support_icrc2) return TOKEN_STANDARD.ICRC2;\n return TOKEN_STANDARD.ICRC1;\n }\n } catch (error) {\n console.error(error);\n }\n\n return undefined;\n}\n\nexport async function getExtStandard(canisterId: string) {\n try {\n const metadata = (await EXTAdapter.metadata({ canisterId })).data;\n if (metadata.symbol) return TOKEN_STANDARD.EXT;\n } catch (error) {\n console.error(error);\n }\n\n return undefined;\n}\n\nexport async function getDIP20Standard(canisterId: string) {\n try {\n const metadata = (await DIP20Adapter.metadata({ canisterId })).data;\n if (metadata.symbol) return TOKEN_STANDARD.DIP20;\n } catch (error) {\n console.error(error);\n }\n\n return undefined;\n}\n\nexport interface GetTokenStandardProps {\n canisterId: string;\n}\n\nexport async function getTokenStandard({ canisterId }: GetTokenStandardProps) {\n const icrc_standard = await getIcrcStandard(canisterId);\n if (nonNullArgs(icrc_standard)) return icrc_standard;\n\n const dip20_standard = await getDIP20Standard(canisterId);\n if (nonNullArgs(dip20_standard)) return dip20_standard;\n\n const ext_standard = await getExtStandard(canisterId);\n if (nonNullArgs(ext_standard)) return ext_standard;\n\n return undefined;\n}\n","import { WRAPPED_ICP_TOKEN_INFO } from \"constants/index\";\nimport store from \"store/index\";\nimport { ICP_TOKEN_INFO } from \"@icpswap/tokens\";\n\nexport function getSwapTokenArgs(token: string) {\n const { standards } = store.getState().tokenCache;\n let standard = standards[token];\n if (token === WRAPPED_ICP_TOKEN_INFO.canisterId) standard = WRAPPED_ICP_TOKEN_INFO.standardType;\n if (token === ICP_TOKEN_INFO.canisterId) standard = ICP_TOKEN_INFO.standardType;\n if (!standard) throw Error(`No token standard: ${token}, please reload the page`);\n return { address: token, standard: standard as string };\n}\n\nexport * from \"./useAllowance\";\nexport * from \"./useApprove\";\nexport * from \"./useTokenInfo\";\nexport * from \"./useTokenBalance\";\nexport * from \"./useTokenInSNS\";\nexport * from \"./useERC20Token\";\nexport * from \"./useTokenStandard\";\n","import { Principal } from \"@dfinity/principal\";\nimport { isNullArgs, isValidPrincipal } from \"@icpswap/utils\";\nimport { useCallback } from \"react\";\nimport { useCallsData } from \"@icpswap/hooks\";\nimport { tokenAdapter } from \"@icpswap/token-adapter\";\nimport { Null } from \"@icpswap/types\";\n\nexport interface AllowanceArgs {\n canisterId: string;\n spender: string;\n spenderSub?: number[] | Null;\n owner: string;\n ownerSub?: number[] | Null;\n}\n\nexport async function allowance({ canisterId, owner, spender, spenderSub, ownerSub }: AllowanceArgs) {\n return (\n await tokenAdapter.allowance({\n canisterId,\n params: {\n spender: Principal.fromText(spender),\n owner: isValidPrincipal(owner) ? { principal: Principal.fromText(owner) } : { address: owner },\n spenderSub,\n subaccount: ownerSub,\n },\n })\n ).data;\n}\n\nexport interface useAllowanceArgs {\n canisterId: string | Null;\n spender: string | Null;\n spenderSub?: number[];\n owner: string | Null;\n ownerSub?: number[];\n}\n\nexport function useAllowance({ canisterId, spender, spenderSub, owner, ownerSub }: useAllowanceArgs) {\n return useCallsData(\n useCallback(async () => {\n if (!spender || !owner || isNullArgs(canisterId)) return undefined;\n return await allowance({\n spender,\n spenderSub,\n owner,\n ownerSub,\n canisterId,\n });\n }, [spender, spenderSub, owner, ownerSub, canisterId]),\n );\n}\n","import { useCallback } from \"react\";\nimport { Principal } from \"@dfinity/principal\";\nimport { TOKEN_STANDARD, tokenAdapter } from \"@icpswap/token-adapter\";\nimport { ResultStatus, StatusResult } from \"@icpswap/types\";\nimport { allowance } from \"./useAllowance\";\n\nexport interface ApproveArgs {\n canisterId: string;\n spender: string;\n value: number | string | bigint;\n account: string | Principal | undefined;\n standard?: TOKEN_STANDARD;\n}\n\nexport async function approve({ canisterId, spender, value, account, standard }: ApproveArgs) {\n if (!account) {\n return { status: ResultStatus.ERROR, data: undefined, message: \"No account\" };\n }\n\n if (standard) {\n const adapter = tokenAdapter.getAdapterByName(standard);\n return adapter.approve({\n canisterId,\n identity: true,\n params: {\n spender: Principal.fromText(spender),\n allowance: BigInt(value),\n subaccount: undefined,\n account,\n },\n });\n }\n\n return tokenAdapter.approve({\n canisterId,\n identity: true,\n params: {\n spender: Principal.fromText(spender),\n allowance: BigInt(value),\n subaccount: undefined,\n account,\n },\n });\n}\n\nexport function useApprove(): (approveParams: ApproveArgs) => Promise> {\n return useCallback(async ({ canisterId, spender, value, account, standard }: ApproveArgs) => {\n if (!account)\n return await Promise.resolve({\n status: \"err\",\n message: \"Invalid account\",\n } as StatusResult);\n\n const allowedBalance = await allowance({\n canisterId,\n owner: account.toString(),\n spender,\n });\n\n if (!allowedBalance || allowedBalance === BigInt(0) || BigInt(value) > allowedBalance) {\n return await approve({\n canisterId,\n spender,\n value,\n account,\n standard,\n });\n }\n return await Promise.resolve({\n status: \"ok\",\n data: true,\n message: \"You have approved successfully\",\n } as StatusResult);\n }, []);\n}\n","import { useMemo } from \"react\";\nimport { useFetchSnsAllTokensInfo } from \"store/sns/hooks\";\nimport { Null } from \"@icpswap/types\";\n\nexport function useSNSTokenRootId(tokenId: string | Null) {\n const { result: snsAllTokensInfo } = useFetchSnsAllTokensInfo();\n\n return useMemo(() => {\n if (!tokenId || !snsAllTokensInfo) return undefined;\n const snsTokenInfo = snsAllTokensInfo.find((e) => e.canister_ids.ledger_canister_id === tokenId);\n return snsTokenInfo?.canister_ids.root_canister_id;\n }, [snsAllTokensInfo, tokenId]);\n}\n","export const idlFactory = ({ IDL }: any) => {\n const TxReceipt = IDL.Variant({\n Ok: IDL.Nat,\n Err: IDL.Variant({\n InsufficientAllowance: IDL.Null,\n InsufficientBalance: IDL.Null,\n ErrorOperationStyle: IDL.Null,\n Unauthorized: IDL.Null,\n LedgerTrap: IDL.Null,\n ErrorTo: IDL.Null,\n Other: IDL.Text,\n BlockUsed: IDL.Null,\n AmountTooSmall: IDL.Null,\n }),\n });\n const Metadata = IDL.Record({\n fee: IDL.Nat,\n decimals: IDL.Nat8,\n owner: IDL.Principal,\n logo: IDL.Text,\n name: IDL.Text,\n totalSupply: IDL.Nat,\n symbol: IDL.Text,\n });\n const TokenInfo = IDL.Record({\n holderNumber: IDL.Nat64,\n deployTime: IDL.Nat64,\n metadata: Metadata,\n historySize: IDL.Nat64,\n cycles: IDL.Nat64,\n feeTo: IDL.Principal,\n });\n return IDL.Service({\n allowance: IDL.Func([IDL.Principal, IDL.Principal], [IDL.Nat], [\"query\"]),\n approve: IDL.Func([IDL.Principal, IDL.Nat], [TxReceipt], []),\n balanceOf: IDL.Func([IDL.Principal], [IDL.Nat], []),\n cleanOutOldAllowances: IDL.Func([], [IDL.Nat], []),\n decimals: IDL.Func([], [IDL.Nat8], [\"query\"]),\n filterAllowancesArray: IDL.Func(\n [IDL.Int],\n [IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Tuple(IDL.Nat, IDL.Int)))))],\n [],\n ),\n getASize: IDL.Func([], [IDL.Nat], [\"query\"]),\n getAgeAllowanceLimit: IDL.Func([], [IDL.Int], []),\n getAllowanceSize: IDL.Func([], [IDL.Nat], [\"query\"]),\n getAllowancesArray: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Tuple(IDL.Nat, IDL.Int)))))],\n [],\n ),\n getMaxAllowances: IDL.Func([], [IDL.Int], []),\n getMetadata: IDL.Func([], [Metadata], [\"query\"]),\n getResultArrayIndex: IDL.Func([], [IDL.Int], []),\n getSpendersSize: IDL.Func([], [IDL.Nat], []),\n getTokenFee: IDL.Func([], [IDL.Nat], [\"query\"]),\n getTokenInfo: IDL.Func([], [TokenInfo], [\"query\"]),\n getUserApprovals: IDL.Func([IDL.Principal], [IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Nat))], [\"query\"]),\n historySize: IDL.Func([], [IDL.Nat], []),\n logo: IDL.Func([], [IDL.Text], [\"query\"]),\n name: IDL.Func([], [IDL.Text], [\"query\"]),\n setAgeAllowanceLimit: IDL.Func([], [IDL.Nat], []),\n setFee: IDL.Func([IDL.Nat], [], [\"oneway\"]),\n setLogo: IDL.Func([IDL.Text], [], [\"oneway\"]),\n setMaxAllowances: IDL.Func([IDL.Int], [], []),\n setName: IDL.Func([IDL.Text], [], [\"oneway\"]),\n setOwner: IDL.Func([IDL.Principal], [], [\"oneway\"]),\n symbol: IDL.Func([], [IDL.Text], [\"query\"]),\n totalSupply: IDL.Func([], [IDL.Nat], []),\n transfer: IDL.Func([IDL.Principal, IDL.Nat], [TxReceipt], []),\n transferFrom: IDL.Func([IDL.Principal, IDL.Principal, IDL.Nat], [TxReceipt], []),\n });\n};\n","import { actor } from \"@icpswap/actor\";\nimport { type ActorIdentity } from \"@icpswap/types\";\nimport { Principal } from \"@dfinity/principal\";\nimport { resultFormat, isPrincipal } from \"@icpswap/utils\";\nimport { idlFactory as OGY_IDL } from \"candid/ogy.did\";\nimport { _SERVICE as OGY_SERVICE } from \"candid/ogy\";\n\nconst ORG_ID = \"rd6wb-lyaaa-aaaaj-acvla-cai\";\n\nconst ogy = async (identity?: ActorIdentity) =>\n actor.create({ canisterId: ORG_ID, idlFactory: OGY_IDL, identity });\n\nconst BALANCE_ADAPTER_IDS = [ORG_ID];\n\nexport const isNeedBalanceAdapter = (canisterId: string) => BALANCE_ADAPTER_IDS.includes(canisterId);\n\nexport async function balanceAdapter(canisterId: string, account: string | Principal) {\n switch (canisterId) {\n case ORG_ID:\n if (isPrincipal(account)) {\n return resultFormat(await (await ogy()).balanceOf(account));\n }\n throw Error(\"not support address\");\n\n default:\n throw Error(\"no canister id\");\n }\n}\n","import { useCallback, useState, useEffect, useMemo } from \"react\";\nimport { Principal } from \"@dfinity/principal\";\nimport { Token, CurrencyAmount } from \"@icpswap/swap-sdk\";\nimport { getTokenStandard } from \"store/token/cache/hooks\";\nimport { balanceAdapter, isNeedBalanceAdapter } from \"utils/token/adapter\";\nimport { ICP } from \"@icpswap/tokens\";\nimport { isPrincipal, isValidPrincipal, isOkSubAccount, principalToAccount, BigNumber } from \"@icpswap/utils\";\nimport { AccountIdentifier, SubAccount } from \"@dfinity/ledger-icp\";\nimport { icpAdapter, tokenAdapter, TOKEN_STANDARD } from \"@icpswap/token-adapter\";\nimport { useLatestDataCall } from \"@icpswap/hooks\";\nimport { Null } from \"@icpswap/types\";\n\nexport async function getTokenBalance(canisterId: string, account: string | Principal, subAccount?: Uint8Array) {\n if (isNeedBalanceAdapter(canisterId)) return await balanceAdapter(canisterId, account);\n\n const standard = getTokenStandard(canisterId);\n\n if (standard === TOKEN_STANDARD.EXT) {\n let address = \"\";\n\n if (!subAccount) {\n if (isPrincipal(account)) {\n address = principalToAccount(account.toString());\n } else if (isValidPrincipal(account)) {\n address = principalToAccount(account);\n } else {\n address = account;\n }\n } else {\n const sub = SubAccount.fromBytes(subAccount);\n\n if (isOkSubAccount(sub)) {\n if (isPrincipal(account)) {\n address = AccountIdentifier.fromPrincipal({\n principal: account,\n subAccount: sub,\n }).toHex();\n }\n }\n }\n\n return await tokenAdapter.balance({\n canisterId,\n params: {\n user: { address },\n token: \"\",\n },\n });\n }\n\n if (canisterId === ICP.address) {\n return await icpAdapter.balance({\n canisterId,\n params: {\n user: isPrincipal(account)\n ? { principal: account }\n : isValidPrincipal(account)\n ? { principal: Principal.fromText(account) }\n : { address: account },\n token: \"\",\n subaccount: subAccount ? [...subAccount] : undefined,\n },\n });\n }\n\n return await tokenAdapter.balance({\n canisterId,\n params: {\n user: isPrincipal(account)\n ? { principal: account }\n : isValidPrincipal(account)\n ? { principal: Principal.fromText(account) }\n : { address: account },\n token: \"\",\n subaccount: subAccount ? [...subAccount] : undefined,\n },\n });\n}\n\nexport function useTokenBalance(\n canisterId: string | undefined,\n account: string | Principal | Null,\n refresh?: number | boolean,\n subAccount?: Uint8Array,\n) {\n return useLatestDataCall(\n useCallback(async () => {\n if (!account || !canisterId) return undefined;\n const result = await getTokenBalance(canisterId, account, subAccount);\n return new BigNumber(result ? result.data?.toString() ?? 0 : 0);\n }, [account, canisterId, subAccount]),\n refresh,\n );\n}\n\nexport type Balances = {\n [key: string]: CurrencyAmount;\n};\n\nexport function useCurrencyBalances(\n account: string | Principal | undefined,\n currencies: (Token | undefined | null)[],\n reload?: boolean,\n) {\n const [balances, setBalances] = useState({} as Balances);\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n if (account && currencies && currencies.length) {\n setLoading(true);\n\n const queryPromise = currencies.map((currency) => {\n if (currency) {\n return getTokenBalance(currency.address, account).then(\n (result) => new BigNumber(result ? result.toString() : \"0\"),\n );\n }\n\n return new Promise((resolve) => resolve(new BigNumber(0)));\n });\n\n Promise.all(queryPromise).then((result: BigNumber[]) => {\n const balances = {} as Balances;\n\n result.forEach((balance: BigNumber, index: number) => {\n const currency = currencies[index];\n\n if (currency) {\n balances[currency.address] = CurrencyAmount.fromRawAmount(\n currency,\n balance ? balance.toString() : 0,\n );\n }\n });\n\n setBalances(balances);\n setLoading(false);\n });\n }\n }, [currencies, account, reload]);\n\n return useMemo(\n () => ({\n loading,\n result: balances ?? {},\n }),\n [balances, loading],\n );\n}\n\nexport function useCurrencyBalance(\n account: string | Principal | undefined,\n currency: Token | undefined,\n refresh?: boolean | number,\n) {\n const { loading, result } = useTokenBalance(currency?.address, account, refresh);\n\n return useMemo(() => {\n if (!result || loading || !currency)\n return {\n loading,\n result: undefined,\n };\n\n return {\n loading,\n result: CurrencyAmount.fromRawAmount(currency, result.toNumber()),\n };\n }, [loading, result, currency]);\n}\n\nexport function useCurrencyBalanceV1(\n account: string | Principal | undefined,\n currency: Token | undefined,\n refresh?: boolean | number,\n) {\n const [storeResult, setStoreResult] = useState(undefined);\n\n const { loading, result } = useTokenBalance(currency?.address, account, refresh);\n\n useEffect(() => {\n if (result) {\n setStoreResult(result);\n }\n }, [result]);\n\n return useMemo(() => {\n if (!currency || !storeResult || loading || isNaN(storeResult.toNumber()))\n return {\n loading,\n result: storeResult && currency ? CurrencyAmount.fromRawAmount(currency, storeResult.toNumber()) : undefined,\n };\n\n return {\n loading,\n result: CurrencyAmount.fromRawAmount(currency, storeResult.toNumber()),\n };\n }, [loading, storeResult, currency]);\n}\n\nexport interface UseTokenBalanceProps {\n canisterId: string | undefined;\n address: string | Principal | undefined;\n sub?: Uint8Array;\n refresh?: boolean | number;\n}\n\nexport function useTokenBalanceV2({ canisterId, address, sub, refresh }: UseTokenBalanceProps) {\n return useLatestDataCall(\n useCallback(async () => {\n if (!address || !canisterId) return undefined;\n const result = await getTokenBalance(canisterId, address, sub);\n return new BigNumber(result ? result.data?.toString() ?? 0 : 0);\n }, [address, canisterId, sub]),\n refresh,\n );\n}\n\nexport function useStoreTokenBalance(\n tokenId: string | undefined,\n address: string | Principal | undefined,\n refresh?: boolean | number,\n) {\n const [storeResult, setStoreResult] = useState(undefined);\n\n const { loading, result } = useTokenBalance(tokenId, address, refresh);\n\n useEffect(() => {\n if (result) {\n setStoreResult(result);\n }\n }, [result]);\n\n return useMemo(() => {\n if (!tokenId || !storeResult || loading || isNaN(storeResult.toNumber()))\n return {\n loading,\n result: storeResult && tokenId ? storeResult : undefined,\n };\n\n return {\n loading,\n result: storeResult,\n };\n }, [loading, storeResult, tokenId]);\n}\n","/* eslint-disable no-useless-constructor */\nimport { openDB, IDBPDatabase, deleteDB } from \"idb\";\n\ntype Database = IDBPDatabase;\ntype IDBValidKey = string | number | Date | BufferSource | IDBValidKey[];\n\nfunction isLessThanCurrentVersion(err: string) {\n // Chrome\n if (err.includes(\"is less than the existing version\")) return true;\n // Safari\n if (err.includes(\"using a lower version than the existing version.\")) return true;\n // Firefox\n if (err.includes(\"is a higher version than the version requested\")) return true;\n}\n\nconst _openDbStore = async (dbName: string, storeName: string, version: number) => {\n return await openDB(dbName, version, {\n upgrade: (database, oldVersion, newVersion, transaction) => {\n if (oldVersion === 0) {\n database.createObjectStore(storeName);\n }\n\n if (!database.objectStoreNames.contains(storeName)) {\n database.createObjectStore(storeName);\n }\n\n if (oldVersion < version) {\n const store = transaction.objectStore(storeName);\n store.clear();\n }\n },\n }).catch((err) => {\n // For development\n if (isLessThanCurrentVersion(String(err))) {\n deleteDB(dbName).then(() => {\n window.location.reload();\n });\n }\n\n return undefined;\n });\n};\n\nasync function _getValue(db: Database, storeName: string, key: IDBValidKey): Promise {\n return await db.get(storeName, key);\n}\n\nasync function _setValue(db: Database, storeName: string, key: IDBValidKey, value: T): Promise {\n return await db.put(storeName, value, key);\n}\n\nasync function _removeValue(db: Database, storeName: string, key: IDBValidKey): Promise {\n return await db.delete(storeName, key);\n}\n\nasync function _getAllValues(db: Database, storeName: string): Promise<(T | undefined)[]> {\n return await db.getAll(storeName);\n}\n\nexport type DBCreateOptions = {\n dbName: string;\n storeName: string;\n version: number;\n};\n\n/**\n * Simple Key Value store\n * Defaults to `'auth-client-db'` with an object store of `'ic-keyval'`\n */\nexport class IdbKeyVal {\n /**\n *\n * @param {DBCreateOptions} options {@link DbCreateOptions}\n * @param {DBCreateOptions['dbName']} options.dbName name for the indexDB database\n * @default\n * @param {DBCreateOptions['storeName']} options.storeName name for the indexDB Data Store\n * @default\n * @param {DBCreateOptions['version']} options.version version of the database. Increment to safely upgrade\n * @constructs an {@link IdbKeyVal}\n */\n public static async create(options?: DBCreateOptions): Promise {\n const { dbName, storeName, version = 1 } = options ?? {};\n const db = await _openDbStore(dbName, storeName, version);\n return new IdbKeyVal(db, storeName);\n }\n\n // Do not use - instead prefer create\n private constructor(\n private _db: Database,\n private _storeName: string,\n ) {}\n\n /**\n * Basic setter\n * @param {IDBValidKey} key string | number | Date | BufferSource | IDBValidKey[]\n * @param value value to set\n * @returns void\n */\n public async set(key: IDBValidKey, value: T) {\n return await _setValue(this._db, this._storeName, key, value);\n }\n\n /**\n * Basic getter\n * Pass in a type T for type safety if you know the type the value will have if it is found\n * @param {IDBValidKey} key string | number | Date | BufferSource | IDBValidKey[]\n * @returns `Promise`\n * @example\n * await get('exampleKey') -> 'exampleValue'\n */\n public async get(key: IDBValidKey): Promise {\n return (await _getValue(this._db, this._storeName, key)) ?? null;\n }\n\n /**\n * Remove a key\n * @param key {@link IDBValidKey}\n * @returns void\n */\n public async remove(key: IDBValidKey) {\n return await _removeValue(this._db, this._storeName, key);\n }\n\n /**\n * Get all values\n * @param key {@link IDBValidKey}\n * @returns void\n */\n public async getAll(): Promise<(T | undefined)[] | null> {\n return await _getAllValues(this._db, this._storeName);\n }\n}\n","import { splitArr } from \"@icpswap/utils\";\nimport { useEffect, useMemo, useState } from \"react\";\n\ntype Call = Promise;\n\nexport async function getPromisesAwait(calls: Call[], limit = 100) {\n const __calls = splitArr(calls, limit);\n\n const result: Array = [];\n\n for (let i = 0; i < __calls.length; i++) {\n const res = await Promise.all(__calls[i]);\n result.push(res);\n }\n\n return result.flat();\n}\n\nexport function usePromisesAwait(calls: Call[] | undefined, limit = 100) {\n const [result, setResult] = useState(null);\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n async function call() {\n if (calls) {\n setLoading(true);\n const result = await getPromisesAwait(calls, limit);\n setResult(result);\n setLoading(false);\n }\n }\n\n call();\n }, [calls, limit]);\n\n return useMemo(() => ({ loading, result }), [loading, result]);\n}\n","import { useMemo } from \"react\";\n\ninterface Token {\n fee: number;\n decimals: number;\n canisterId: string;\n name: string;\n standard: string;\n symbol: string;\n}\n\nlet tokens: Token[] = [];\n\nasync function loadTokens() {\n try {\n tokens = (await import(\"../../.tokens.json\")).default;\n } catch (err) {\n console.warn(err);\n }\n}\n\nloadTokens();\n\nexport function useLocalTokens() {\n return useMemo(() => tokens, [tokens]);\n}\n","import { useMemo, useEffect, useState } from \"react\";\nimport { TOKEN_STANDARD, WRAPPED_ICP_TOKEN_INFO } from \"constants/index\";\nimport type { TokenInfo, StorageTokenInfo, Null } from \"@icpswap/types\";\nimport { getTokenStandard } from \"store/token/cache/hooks\";\nimport { DB_NAME, DB_VERSION } from \"constants/db\";\nimport { IdbStorage } from \"@icpswap/utils\";\nimport TokenDefaultLogo from \"assets/images/Token_default_logo.png\";\nimport { getPromisesAwait } from \"@icpswap/hooks\";\nimport { ICP_TOKEN_INFO } from \"@icpswap/tokens\";\n// import { generateLogoUrl } from \"hooks/token/useTokenLogo\";\n\nimport { useLocalTokens } from \"./useLocalTokens\";\nimport { getTokenInfo } from \"./calls\";\n\nconst STORAGE_TIME_KEY = \"STORAGE_TIME_KEY\";\nconst STORAGE_EXPIRE_TIME = 2 * 60 * 60 * 1000; // millisecond\n\nconst storage = new IdbStorage(DB_NAME, DB_VERSION, \"tokens\");\n\nasync function getStorageTokenInfo(tokenId: string) {\n const storageInfo = await storage.get(`TOKEN_${tokenId}`);\n if (storageInfo) return JSON.parse(storageInfo) as StorageTokenInfo;\n return undefined;\n}\n\nasync function setStorageTokenInfo(tokenInfo: StorageTokenInfo) {\n await storage.set(`TOKEN_${tokenInfo.canisterId}`, JSON.stringify(tokenInfo));\n}\n\nexport function getTokenStorageTime(tokenId: string) {\n const val = window.localStorage.getItem(STORAGE_TIME_KEY);\n if (!val) return null;\n return (JSON.parse(val) as { [tokenId: string]: string })[tokenId] ?? null;\n}\n\nexport function updateTokenStorageTime(tokenId: string) {\n const time = new Date().getTime();\n const val = window.localStorage.getItem(STORAGE_TIME_KEY);\n\n if (!val) {\n window.localStorage.setItem(STORAGE_TIME_KEY, JSON.stringify({ [tokenId]: time.toString() }));\n } else {\n const new_val = JSON.parse(val) as { [tokenId: string]: string };\n new_val[tokenId] = time.toString();\n\n window.localStorage.setItem(STORAGE_TIME_KEY, JSON.stringify(new_val));\n }\n}\n\nfunction isNeedUpdateTokenInfo(tokenId: string) {\n const storage_time = getTokenStorageTime(tokenId);\n if (!storage_time) return true;\n return new Date().getTime() - Number(storage_time) > STORAGE_EXPIRE_TIME;\n}\n\nfunction isStorageInfoValid(storageInfo: StorageTokenInfo | undefined): storageInfo is StorageTokenInfo {\n return !!storageInfo && storageInfo.decimals !== undefined && storageInfo.transFee !== undefined;\n}\n\nexport async function _getTokenInfo(tokenId: string) {\n const storageInfo = await getStorageTokenInfo(tokenId);\n\n if (isStorageInfoValid(storageInfo) && !isNeedUpdateTokenInfo(tokenId)) {\n return storageInfo;\n }\n\n const baseTokenInfo = await getTokenInfo(tokenId);\n\n if (baseTokenInfo) {\n await setStorageTokenInfo({\n ...baseTokenInfo,\n totalSupply: \"0\",\n transFee: baseTokenInfo.transFee.toString(),\n });\n updateTokenStorageTime(tokenId);\n return baseTokenInfo as TokenInfo;\n }\n}\n\nexport enum TokenInfoState {\n LOADING = \"LOADING\",\n NOT_EXISTS = \"NOT_EXISTS\",\n EXISTS = \"EXISTS\",\n INVALID = \"INVALID\",\n}\n\nexport function useTokensInfo(tokenIds: (string | undefined | null)[]): [TokenInfoState, TokenInfo | undefined][] {\n const [tokenInfos, setTokenInfos] = useState<{ [id: string]: TokenInfo | undefined }>({});\n const [loadings, setLoadings] = useState<{ [id: string]: boolean }>({});\n\n const localTokens = useLocalTokens();\n\n const fetch_token_info = async (tokenId: string | undefined | null) => {\n if (!tokenId) return;\n\n let tokeInfo: undefined | TokenInfo;\n\n if (tokenId === ICP_TOKEN_INFO.canisterId) tokeInfo = ICP_TOKEN_INFO;\n if (tokenId === WRAPPED_ICP_TOKEN_INFO.canisterId) tokeInfo = WRAPPED_ICP_TOKEN_INFO;\n\n if (tokeInfo) {\n setTokenInfos((prevState) => ({\n ...prevState,\n [tokenId]: tokeInfo,\n }));\n setLoadings((prevState) => ({\n ...prevState,\n [tokenId]: false,\n }));\n return;\n }\n\n setLoadings((prevState) => ({\n ...prevState,\n [tokenId]: true,\n }));\n\n const localToken = localTokens.find((e) => e.canisterId === tokenId);\n\n if (localToken) {\n setTokenInfos((prevState) => ({\n ...prevState,\n [tokenId]: {\n ...localToken,\n logo: TokenDefaultLogo,\n transFee: BigInt(localToken.fee),\n decimals: Number(localToken.decimals),\n standardType: localToken.standard as TOKEN_STANDARD,\n totalSupply: BigInt(0),\n },\n }));\n\n setLoadings((prevState) => ({\n ...prevState,\n [tokenId]: false,\n }));\n }\n\n const storageInfo = await getStorageTokenInfo(tokenId);\n\n let getStorageInfoErrored = false;\n\n // Fix some user's wrong cache: transFee or some bigint is liked \"bigint:5\"\n try {\n if (isStorageInfoValid(storageInfo)) {\n setTokenInfos((prevState) => ({\n ...prevState,\n [tokenId]: {\n name: storageInfo.name,\n logo: storageInfo.logo,\n // logo: generateLogoUrl(storageInfo.canisterId),\n symbol: storageInfo.symbol,\n canisterId: storageInfo.canisterId,\n totalSupply: BigInt(0),\n transFee: storageInfo.transFee.includes(\"bigint:\")\n ? BigInt(storageInfo.transFee.replace(/\\D/g, \"\"))\n : BigInt(storageInfo.transFee.toString()),\n decimals: Number(storageInfo.decimals),\n standardType: storageInfo.standardType,\n },\n }));\n\n setLoadings((prevState) => ({\n ...prevState,\n [tokenId]: false,\n }));\n }\n } catch (err) {\n console.error(err);\n getStorageInfoErrored = true;\n }\n\n if (!storageInfo || isNeedUpdateTokenInfo(tokenId) || !isStorageInfoValid(storageInfo) || getStorageInfoErrored) {\n const tokenInfo = await getTokenInfo(tokenId);\n\n if (tokenInfo) {\n await setStorageTokenInfo({\n ...tokenInfo,\n // logo: generateLogoUrl(tokenId),\n transFee: tokenInfo.transFee.toString(),\n totalSupply: \"0\",\n });\n updateTokenStorageTime(tokenId);\n\n // The token standard maybe changed in some case,\n // So get the standard from the storage to upgrade the token info\n const tokenStandard = getTokenStandard(tokenInfo.canisterId);\n\n setTokenInfos((prevState) => ({\n ...prevState,\n [tokenId]: {\n ...tokenInfo,\n transFee: BigInt(tokenInfo.transFee.toString()),\n decimals: Number(tokenInfo.decimals),\n standardType: tokenStandard ?? tokenInfo.standardType,\n },\n }));\n }\n }\n\n setLoadings((prevState) => ({\n ...prevState,\n [tokenId]: false,\n }));\n };\n\n useEffect(() => {\n async function call() {\n const calls = tokenIds.map(async (tokenId) => await fetch_token_info(tokenId));\n getPromisesAwait(calls, 20);\n }\n\n call();\n }, [JSON.stringify(tokenIds)]);\n\n return useMemo(() => {\n return tokenIds.map((tokenId) => {\n if (!tokenId) return [TokenInfoState.INVALID, undefined];\n\n const tokenInfo = tokenInfos[tokenId];\n const loading = loadings[tokenId];\n\n if (loading) return [TokenInfoState.LOADING, undefined];\n if (!tokenInfo) return [TokenInfoState.INVALID, undefined];\n\n return [TokenInfoState.EXISTS, tokenInfo];\n });\n }, [tokenInfos, loadings, tokenIds]);\n}\n\nexport function useTokenInfo(tokenId: string | Null) {\n const [state, tokenInfo] = useTokensInfo([tokenId])[0];\n\n return useMemo(() => {\n if (!tokenInfo) {\n return {\n result: undefined,\n loading: state === TokenInfoState.LOADING,\n };\n }\n\n return {\n result: tokenInfo as TokenInfo,\n loading: state === TokenInfoState.LOADING,\n };\n }, [tokenInfo, state]);\n}\n","import { IdbKeyVal } from \"./db\";\n\nexport const isBrowser = typeof window !== \"undefined\";\n\nexport type StoredKey = string | CryptoKeyPair;\n\n/**\n * Interface for persisting user authentication data\n */\nexport interface ClientStorage {\n get(key: string): Promise;\n\n set(key: string, value: StoredKey): Promise;\n\n remove(key: string): Promise;\n}\n\n/**\n * IdbStorage is an interface for simple storage of string key-value pairs built on {@link IdbKeyVal}\n *\n * It replaces {@link LocalStorage}\n * @see implements {@link AuthClientStorage}\n */\nexport class IdbStorage implements ClientStorage {\n // Initializes a KeyVal on first request\n private initializedDb: IdbKeyVal | undefined;\n\n private version = 1;\n\n private dbName: string;\n\n private storeName: string;\n\n constructor(dbName: string, DB_VERSION = 1, storeName: string) {\n this.version = DB_VERSION;\n this.dbName = dbName;\n this.storeName = storeName;\n }\n\n get _db(): Promise {\n return new Promise((resolve) => {\n if (this.initializedDb) {\n resolve(this.initializedDb);\n return;\n }\n\n IdbKeyVal.create({\n version: this.version,\n storeName: this.storeName,\n dbName: this.dbName,\n }).then((db) => {\n this.initializedDb = db;\n resolve(db);\n });\n });\n }\n\n public async get(key: string): Promise {\n const db = await this._db;\n return await db.get(key);\n }\n\n public async set(key: string, value: string): Promise {\n const db = await this._db;\n await db.set(key, value);\n }\n\n public async remove(key: string): Promise {\n const db = await this._db;\n await db.remove(key);\n }\n\n public async getAll(): Promise<(string | undefined)[] | null> {\n const db = await this._db;\n return await db.getAll();\n }\n}\n","export const DB_NAME = \"ICPSwap-app\";\nexport const DB_VERSION = 11;\n","import { useMemo } from \"react\";\n\nexport function generateLogoUrl(tokenId: string) {\n return `https://wqfao-piaaa-aaaag-qj5ba-cai.raw.icp0.io/${tokenId}`;\n}\n\nexport function useTokenLogo(tokenId: string | undefined) {\n return useMemo(() => {\n if (!tokenId) return undefined;\n\n return `https://wqfao-piaaa-aaaag-qj5ba-cai.raw.icp0.io/${tokenId}`;\n }, [tokenId]);\n}\n","import { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport { useCallback, useMemo } from \"react\";\nimport store from \"store/index\";\nimport { updateCallKeys, updateCallResult } from \"./actions\";\n\nexport function useCallResult(callKey: string) {\n return useAppSelector((state) => state.call.callResults)[callKey];\n}\n\nexport function useUpdateCallResult() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (callKey: string, result: any) => {\n dispatch(updateCallResult({ callKey, result }));\n },\n [dispatch],\n );\n}\n\nexport function useCallAllIndex() {\n return useAppSelector((state) => state.call.callKeys);\n}\n\nexport function getCallIndex(key: string) {\n return store.getState().call.callKeys[key];\n}\n\nexport function useCallKeysIndexManager(callKey: string): [number, ({ callIndex }: { callIndex: number }) => void] {\n const callAllIndex = useCallAllIndex();\n const dispatch = useAppDispatch();\n\n const _updateCallKeyIndex = useCallback(\n ({ callIndex }: { callIndex: number }) => {\n dispatch(updateCallKeys({ callKey, callIndex }));\n },\n [callKey, dispatch],\n );\n\n return useMemo(() => [callAllIndex[callKey], _updateCallKeyIndex], [callKey, _updateCallKeyIndex, callAllIndex]);\n}\n","import { useState, useMemo, useEffect } from \"react\";\nimport type { ApiResult } from \"@icpswap/types\";\nimport { useCallKeysIndexManager, useUpdateCallResult, useCallResult, getCallIndex } from \"store/call/hooks\";\n\nexport type Call = () => Promise>;\n\nlet stateCallIndex = 0;\n\nexport function useStateCallsData(fn: Call, key: string, valid: boolean, reload?: boolean, useOldData?: boolean) {\n const callResults = useCallResult(key) ?? {};\n\n const updateCallResult = useUpdateCallResult();\n\n const [loading, setLoading] = useState(false);\n const [callKeyIndex, updateCallKeyIndex] = useCallKeysIndexManager(key);\n\n useEffect(() => {\n if (fn && valid !== false) {\n setLoading(true);\n\n stateCallIndex++;\n const index = stateCallIndex;\n\n updateCallKeyIndex({ callIndex: index });\n\n fn().then((result) => {\n const stateIndex = getCallIndex(key);\n\n if (stateIndex === index) {\n updateCallResult(key, { ...callResults, [index]: result });\n setLoading(false);\n }\n });\n }\n }, [fn, valid, reload]);\n\n return useMemo(() => {\n const result = (\n callResults[callKeyIndex] ? callResults[callKeyIndex] : useOldData ? callResults[callKeyIndex - 1] : undefined\n ) as T | undefined;\n\n return {\n result,\n loading,\n };\n }, [callResults, loading, callKeyIndex]);\n}\n","import { useMemo } from \"react\";\nimport { Token } from \"@icpswap/swap-sdk\";\nimport { TOKEN_STANDARD, WRAPPED_ICP } from \"constants/index\";\nimport { TokenInfo } from \"types/token\";\nimport { useTokenInfo, useTokensInfo } from \"hooks/token/useTokenInfo\";\nimport { getTokenStandard } from \"store/token/cache/hooks\";\nimport { ICP } from \"@icpswap/tokens\";\nimport { Null } from \"@icpswap/types\";\n\nexport enum UseCurrencyState {\n LOADING = \"LOADING\",\n VALID = \"VALID\",\n INVALID = \"INVALID\",\n}\n\nexport function useToken(tokenId: string | Null): [UseCurrencyState, Token | undefined] {\n const { result: tokenInfo, loading: queryLoading } = useTokenInfo(tokenId);\n\n return useMemo(() => {\n if (!tokenId) return [UseCurrencyState.INVALID, undefined];\n if (tokenId === ICP.address) return [UseCurrencyState.VALID, ICP];\n if (tokenId === WRAPPED_ICP.address) return [UseCurrencyState.VALID, WRAPPED_ICP];\n if (!tokenInfo) return [UseCurrencyState.INVALID, undefined];\n if (queryLoading) return [UseCurrencyState.LOADING, undefined];\n\n return [\n UseCurrencyState.VALID,\n new Token({\n address: tokenId,\n decimals: Number(tokenInfo.decimals),\n symbol: tokenInfo.symbol,\n name: tokenInfo.name,\n logo: tokenInfo.logo,\n transFee: Number(tokenInfo.transFee),\n standard: getTokenStandard(tokenInfo.canisterId) ?? TOKEN_STANDARD.EXT,\n }),\n ];\n }, [tokenId, tokenInfo, queryLoading]);\n}\n\nexport function useTokens(tokenIds: (string | undefined)[]): [UseCurrencyState, Token | undefined][] {\n const tokens = useTokensInfo(tokenIds);\n\n return useMemo(() => {\n return tokenIds.map((tokenId, index) => {\n const [, tokenInfo] = tokens[index];\n\n if (!tokenInfo || !tokenId) {\n return [UseCurrencyState.INVALID, undefined];\n }\n\n return [\n UseCurrencyState.VALID,\n new Token({\n address: tokenId,\n decimals: Number(tokenInfo.decimals),\n symbol: tokenInfo.symbol,\n name: tokenInfo.name,\n logo: tokenInfo.logo,\n transFee: Number(tokenInfo.transFee),\n standard: getTokenStandard(tokenInfo.canisterId) ?? TOKEN_STANDARD.ICRC1,\n }),\n ];\n });\n }, [tokens, tokenIds]);\n}\n\nexport function useCurrencyFromInfo(tokenInfo: TokenInfo | undefined) {\n return useMemo(() => {\n if (!tokenInfo) return undefined;\n\n return new Token({\n address: tokenInfo.canisterId,\n decimals: Number(tokenInfo.decimals),\n symbol: tokenInfo.symbol,\n name: tokenInfo.name,\n logo: tokenInfo.logo,\n standard: getTokenStandard(tokenInfo.canisterId) ?? TOKEN_STANDARD.EXT,\n });\n }, [tokenInfo]);\n}\n\nexport function useCurrenciesFromInfo(tokenInfos: TokenInfo[] | undefined | null) {\n return useMemo(() => {\n if (!tokenInfos) return undefined;\n\n return tokenInfos.map((tokenInfo) =>\n tokenInfo\n ? new Token({\n address: tokenInfo.canisterId,\n decimals: Number(tokenInfo.decimals),\n symbol: tokenInfo.symbol,\n name: tokenInfo.name,\n logo: tokenInfo.logo,\n standard: getTokenStandard(tokenInfo.canisterId) ?? TOKEN_STANDARD.EXT,\n })\n : undefined,\n );\n }, [tokenInfos]);\n}\n","import { createContext, useContext, useMemo } from \"react\";\nimport type { SwapPoolData } from \"@icpswap/types\";\n\nexport type GlobalContextProps = {\n AllPools: SwapPoolData[] | undefined;\n refreshTriggers: { [key: string]: number };\n setRefreshTriggers: (key: string) => void;\n};\n\nexport const GlobalContext = createContext({} as GlobalContextProps);\n\nexport function useGlobalContext() {\n return useContext(GlobalContext);\n}\n\nexport function useRefreshTrigger(key: string | undefined) {\n const { refreshTriggers } = useGlobalContext();\n\n return useMemo(() => {\n if (!key) return undefined;\n return refreshTriggers[key];\n }, [refreshTriggers, key]);\n}\n\nexport function useRefreshTriggerManager(key: string | undefined): [undefined | number, () => void] {\n const { refreshTriggers, setRefreshTriggers } = useGlobalContext();\n\n return useMemo(() => {\n if (!key) return [undefined, () => setRefreshTriggers(\"Global_key\")];\n\n return [refreshTriggers[key], () => setRefreshTriggers(key)];\n }, [refreshTriggers, key, setRefreshTriggers]);\n}\n","import { useState, useEffect, useMemo } from \"react\";\n\nexport function useIntervalFetch(\n call: (() => Promise) | undefined,\n force: boolean | number = false,\n interval = 5000,\n) {\n const [data, setData] = useState(undefined);\n const [tick, setTick] = useState(0);\n\n useEffect(() => {\n async function _call() {\n if (call) {\n const result = await call();\n setData(result);\n }\n }\n\n _call();\n }, [tick, call, force]);\n\n useEffect(() => {\n const timer = setInterval(() => {\n if (call) {\n setTick((prevState) => prevState + 1);\n }\n }, interval);\n\n return () => {\n clearInterval(timer);\n };\n }, [interval, call]);\n\n return useMemo(() => data, [data]);\n}\n","import { useCallback } from \"react\";\nimport { useStepManager, useUpdateCallStep, useCloseAllSteps } from \"store/steps/hooks\";\n\nexport type StepCallback = () => Promise;\n\nlet stepKey = 0;\n\nexport function newStepKey() {\n stepKey++;\n return stepKey.toString();\n}\n\nexport function useStepCalls() {\n const { open } = useStepManager();\n const updateCallStep = useUpdateCallStep();\n\n return useCallback(\n (_calls: StepCallback[] | undefined, key: string) => {\n let curr = 0;\n let err: number | undefined;\n let calls: StepCallback[] | undefined = _calls;\n\n const fn = async (step: number) => {\n if (!calls) calls = [];\n for (let i = step; i < calls.length; i++) {\n curr = i;\n updateCallStep(key, curr, err);\n const result = await calls[i]();\n if (result === false) {\n err = i;\n updateCallStep(key, curr, err);\n return false;\n }\n curr = i + 1;\n updateCallStep(key, curr, err);\n }\n\n return true;\n };\n\n const reset = () => {\n curr = 0;\n err = undefined;\n };\n\n const call = async () => {\n reset();\n\n open(key);\n\n return await fn(0);\n };\n\n const retry = async () => {\n return await fn(err ?? 0);\n };\n\n return { call, reset, retry, currentStep: curr, errorStep: err };\n },\n [open, updateCallStep],\n );\n}\n\nexport function useCloseStep() {\n const { close } = useStepManager();\n\n return useCallback(\n (key?: string) => {\n close(key);\n },\n [close],\n );\n}\n\nexport { useCloseAllSteps };\n","import { useCallback, useMemo, ReactNode } from \"react\";\nimport { openSnackbar } from \"store/snackbar/actions\";\nimport { openLoading, closeLoading } from \"store/loadingReducer\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport store from \"store\";\nimport { useSnackbar } from \"components/notistack\";\nimport { ResultStatus } from \"types/global\";\n\nexport enum MessageTypes {\n success = \"ok\",\n error = \"err\",\n warning = \"warning\",\n loading = \"loading\",\n}\n\nexport const TipTypes: { [key in MessageTypes]: \"success\" | \"error\" | \"warning\" | \"loading\" } = {\n [MessageTypes.success]: \"success\",\n [MessageTypes.error]: \"error\",\n [MessageTypes.warning]: \"warning\",\n [MessageTypes.loading]: \"loading\",\n};\n\nexport const TIP_ERROR = MessageTypes.error;\nexport const TIP_SUCCESS = MessageTypes.success;\nexport const TIP_LOADING = MessageTypes.loading;\n\nexport type TIP_KEY = string | undefined | number;\n\nexport type TIP_OPTIONS = { [key: string]: any };\n\nexport function useTips(): [\n (message: ReactNode, type: MessageTypes | ResultStatus, options?: TIP_OPTIONS) => TIP_KEY,\n (key: string | undefined | number) => void,\n] {\n const dispatch = useAppDispatch();\n const { closeSnackbar, enqueueSnackbar } = useSnackbar();\n\n const open = useCallback(\n (message: ReactNode, type: MessageTypes | ResultStatus, options?: TIP_OPTIONS) => {\n return enqueueSnackbar(message, {\n variant: type in ResultStatus ? (type === ResultStatus.OK ? TipTypes.ok : TipTypes.err) : TipTypes[type],\n ...(type === MessageTypes.loading ? { persist: true } : {}),\n ...(options ?? {}),\n });\n },\n [dispatch],\n );\n\n const close = useCallback(\n (messageKey: TIP_KEY) => {\n closeSnackbar(messageKey);\n },\n [dispatch],\n );\n\n return useMemo(() => [open, close], [open, close]);\n}\n\nexport function useSuccessTip(): [(message: ReactNode, options?: TIP_OPTIONS) => TIP_KEY, (key: TIP_KEY) => void] {\n const [openCallback, closeCallback] = useTips();\n\n const open = useCallback(\n (message, options?: TIP_OPTIONS) => {\n return openCallback(message, TIP_SUCCESS, options);\n },\n [openCallback],\n );\n\n const close = useCallback(\n (key: TIP_KEY) => {\n closeCallback(key);\n },\n [closeCallback],\n );\n\n return useMemo(() => [open, close], [open, close]);\n}\n\nexport function useErrorTip(): [(message: ReactNode, options?: TIP_OPTIONS) => TIP_KEY, (key: TIP_KEY) => void] {\n const [openCallback, closeCallback] = useTips();\n\n const open = useCallback(\n (message: ReactNode, options?: TIP_OPTIONS) => {\n return openCallback(message, TIP_ERROR, options);\n },\n [openCallback],\n );\n\n const close = useCallback(\n (key: TIP_KEY) => {\n closeCallback(key);\n },\n [closeCallback],\n );\n\n return useMemo(() => [open, close], [open, close]);\n}\n\nexport function useLoadingTip(): [(message: string, options?: TIP_OPTIONS) => TIP_KEY, (key: TIP_KEY) => void] {\n const [openCallback, closeCallback] = useTips();\n\n const open = useCallback(\n (message: string, options?: TIP_OPTIONS) => {\n return openCallback(message, TIP_LOADING, { ...(options ?? {}) });\n },\n [openCallback],\n );\n\n const close = useCallback(\n (key: TIP_KEY) => {\n closeCallback(key);\n },\n [closeCallback],\n );\n\n return useMemo(() => [open, close], [open, close]);\n}\n\nexport function useFullscreenLoading(): [() => void, () => void, boolean] {\n const dispatch = useAppDispatch();\n const isOpen = useAppSelector((state) => state.loading.open);\n\n const open = useCallback(() => {\n dispatch(openLoading());\n }, [dispatch]);\n\n const close = useCallback(() => {\n dispatch(closeLoading());\n }, [dispatch]);\n\n return useMemo(() => [open, close, isOpen], [open, close, isOpen]);\n}\n\nexport function openTip(message: string, type: MessageTypes) {\n if (type === TIP_ERROR) {\n store.dispatch(\n openSnackbar({\n message,\n variant: \"alert\",\n alertSeverity: \"error\",\n }),\n );\n } else {\n store.dispatch(\n openSnackbar({\n message,\n variant: \"alert\",\n alertSeverity: \"success\",\n }),\n );\n }\n}\n\nexport function openErrorTip(message: string) {\n openTip(message, TIP_ERROR);\n}\n","import { formatTokenAmount, BigNumber } from \"@icpswap/utils\";\nimport { Price, Token, CurrencyAmount } from \"@icpswap/swap-sdk\";\nimport { ICP } from \"@icpswap/tokens\";\nimport { useAppSelector } from \"store/hooks\";\nimport { useMemo } from \"react\";\nimport { WRAPPED_ICP } from \"constants/tokens\";\nimport { network, NETWORK } from \"constants/server\";\nimport { useInfoToken } from \"hooks/info/useInfoTokens\";\n\nexport function useICPPrice(): number | undefined {\n const { ICPPriceList } = useAppSelector((state) => state.global);\n\n return useMemo(() => {\n if (ICPPriceList.length) {\n return ICPPriceList[ICPPriceList.length - 1].value;\n }\n\n return undefined;\n }, [ICPPriceList]);\n}\n\nexport function useUSDPrice(currency: Token | undefined): string | number | undefined {\n const _currency = useMemo(() => {\n if (!currency) return undefined;\n if (currency?.wrapped.equals(WRAPPED_ICP) || currency?.wrapped.equals(ICP)) return undefined;\n return currency;\n }, [currency]);\n\n const graphToken = useInfoToken(_currency?.wrapped.address);\n\n const baseToken = useMemo(() => {\n return network === NETWORK.IC ? ICP : WRAPPED_ICP;\n }, [network, NETWORK]);\n\n const icpPriceNumber = useICPPrice();\n\n const baseTokenPrice = useMemo(() => {\n if (icpPriceNumber) {\n return new Price(\n baseToken,\n baseToken,\n formatTokenAmount(1, baseToken.decimals).toString(),\n formatTokenAmount(icpPriceNumber, baseToken.decimals).toString(),\n );\n }\n return undefined;\n }, [icpPriceNumber, baseToken]);\n\n return useMemo(() => {\n if (!currency || !baseTokenPrice) return undefined;\n\n if (currency?.wrapped.equals(ICP) || currency?.wrapped.equals(WRAPPED_ICP)) return baseTokenPrice.toFixed();\n\n if (graphToken) {\n return graphToken.priceUSD;\n }\n\n return undefined;\n }, [currency, baseToken, graphToken, baseTokenPrice]);\n}\n\nexport function useUSDPriceById(tokenId: string | undefined): number | undefined {\n const _tokenId = useMemo(() => {\n if (!tokenId) return undefined;\n if (tokenId === WRAPPED_ICP.address || tokenId === ICP.address) return undefined;\n return tokenId;\n }, [tokenId]);\n\n const graphToken = useInfoToken(_tokenId);\n\n const icpPriceNumber = useICPPrice();\n\n return useMemo(() => {\n if (!tokenId || !icpPriceNumber) return undefined;\n\n if (tokenId === ICP.address || tokenId === WRAPPED_ICP.address) return icpPriceNumber;\n\n if (graphToken) {\n return graphToken.priceUSD;\n }\n\n return undefined;\n }, [tokenId, graphToken, icpPriceNumber]);\n}\n\nexport function useUSDValue(currencyAmount: CurrencyAmount | undefined) {\n const price = useUSDPrice(currencyAmount?.currency);\n\n return useMemo(() => {\n if (!price || !currencyAmount) return null;\n try {\n return new BigNumber(price).multipliedBy(currencyAmount.toExact());\n } catch (error) {\n return null;\n }\n }, [currencyAmount, price]);\n}\n","import { useCallsData } from \"@icpswap/hooks\";\nimport { useCallback, useMemo } from \"react\";\nimport { useSupportedActiveChain } from \"hooks/web3/index\";\n\nimport { useInterfaceMulticall } from \"./useContract\";\n\n// gets the current timestamp from the blockchain\nexport function useCurrentBlockTimestamp() {\n const multicall = useInterfaceMulticall();\n const supportedActiveChain = useSupportedActiveChain();\n\n const { result } = useCallsData(\n useCallback(async () => {\n if (!multicall || !supportedActiveChain) return;\n\n const resultStr = await multicall.getCurrentBlockTimestamp();\n\n return resultStr;\n }, [multicall]),\n );\n\n return useMemo(() => result, [result]);\n}\n","import { useWeb3React } from \"@web3-react/core\";\nimport { DEFAULT_CHAIN_ID, SUPPORTED_CHAINS } from \"constants/web3\";\nimport { useMemo } from \"react\";\n\nexport function useActiveChain(): number | undefined {\n const { chainId } = useWeb3React();\n\n return chainId ?? DEFAULT_CHAIN_ID;\n}\n\nexport function useSupportedActiveChain() {\n const chainId = useActiveChain();\n\n return useMemo(() => {\n if (!chainId) return undefined;\n\n return SUPPORTED_CHAINS.includes(chainId);\n }, [chainId, SUPPORTED_CHAINS]);\n}\n","import { useWeb3React } from \"@web3-react/core\";\nimport { useEffect, useMemo, useState } from \"react\";\nimport { BigNumber } from \"@icpswap/utils\";\nimport Web3 from \"web3\";\n\nexport function useETHBalance(reload?: boolean) {\n const { account } = useWeb3React();\n const [balance, setBalance] = useState(undefined);\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n async function call() {\n if (account) {\n setLoading(true);\n const web3 = new Web3(Web3.givenProvider);\n const balance = await web3.eth.getBalance(account);\n setBalance(new BigNumber(balance.toString()));\n setLoading(false);\n }\n }\n\n call();\n }, [account, reload]);\n\n return useMemo(() => ({ result: balance, loading }), [balance, loading]);\n}\n","import { useCallback } from \"react\";\nimport { useSupportedActiveChain } from \"hooks/web3/index\";\nimport { useCallsData, Call } from \"@icpswap/hooks\";\n\nexport function useWeb3CallsData(fn: Call, reload?: number | string | boolean) {\n const supportedActiveChain = useSupportedActiveChain();\n\n return useCallsData(\n useCallback(async () => {\n return await fn();\n }, [supportedActiveChain, fn]),\n reload,\n );\n}\n","import { useWeb3React } from \"@web3-react/core\";\nimport { useCallback } from \"react\";\nimport { BigNumber } from \"@icpswap/utils\";\nimport { useCallsData } from \"@icpswap/hooks\";\n\nimport { useERC20Contract } from \"./useContract\";\n\nexport function useERC20Balance(contractAddress: string | undefined, reload?: number) {\n const { account } = useWeb3React();\n const contract = useERC20Contract(contractAddress);\n\n return useCallsData(\n useCallback(async () => {\n if (!contract || !account) return undefined;\n const result = await contract.balanceOf(account);\n return new BigNumber(result.toString());\n }, [contract, account]),\n reload,\n );\n}\n","import useSwr from \"swr\";\nimport useSWRImmutable from \"swr/immutable\";\nimport Web3 from \"web3\";\n\nexport function useFetchBlockNumber(): number | undefined {\n const { data } = useSwr(\n \"ethBlockNumber\",\n async () => {\n const web3 = new Web3(Web3.givenProvider);\n const blockNumber = await web3.eth.getBlockNumber();\n return Number(blockNumber);\n },\n {\n refreshInterval: 3000,\n },\n );\n\n return data;\n}\n\nexport function useBlockNumber() {\n const { data } = useSWRImmutable(\"ethBlockNumber\");\n return data;\n}\n\nexport function useFetchFinalizedBlock(): number | undefined {\n const { data } = useSwr(\n \"ethFinalizedBlockNumber\",\n async () => {\n const web3 = new Web3(Web3.givenProvider);\n const block = await web3.eth.getBlock(\"finalized\");\n return Number(Number(block.number));\n },\n {\n refreshInterval: 3000,\n },\n );\n\n return data;\n}\n\nexport function useFinalizedBlockNumber() {\n const { data } = useSWRImmutable(\"ethFinalizedBlockNumber\");\n return data;\n}\n","import { ChainId, SUPPORTED_CHAINS, SupportedChainsType } from \"./chains\";\n\ntype AddressMap = { [chainId: number]: string };\n\ntype ChainAddresses = {\n v3CoreFactoryAddress: string;\n multicallAddress: string;\n quoterAddress: string;\n v3MigratorAddress?: string;\n nonfungiblePositionManagerAddress?: string;\n tickLensAddress?: string;\n swapRouter02Address?: string;\n v1MixedRouteQuoterAddress?: string;\n};\n\nconst DEFAULT_NETWORKS = [ChainId.MAINNET, ChainId.GOERLI, ChainId.SEPOLIA];\n\nfunction constructSameAddressMap(address: string, additionalNetworks: ChainId[] = []): AddressMap {\n return DEFAULT_NETWORKS.concat(additionalNetworks).reduce((memo, chainId) => {\n memo[chainId] = address;\n return memo;\n }, {});\n}\n\nexport const UNI_ADDRESSES: AddressMap = constructSameAddressMap(\"0x1f9840a85d5aF5bf1D1762F925BDADdC4201F984\", [\n ChainId.OPTIMISM,\n ChainId.ARBITRUM_ONE,\n ChainId.POLYGON,\n ChainId.POLYGON_MUMBAI,\n ChainId.SEPOLIA,\n]);\n\nexport const UNISWAP_NFT_AIRDROP_CLAIM_ADDRESS = \"0x8B799381ac40b838BBA4131ffB26197C432AFe78\";\n\n/**\n * @deprecated use V2_FACTORY_ADDRESSES instead\n */\nexport const V2_FACTORY_ADDRESS = \"0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f\";\nexport const V2_FACTORY_ADDRESSES: AddressMap = {\n [ChainId.MAINNET]: \"0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f\",\n [ChainId.GOERLI]: \"0x5C69bEe701ef814a2B6a3EDD4B1652CB9cc5aA6f\",\n [ChainId.SEPOLIA]: \"0xB7f907f7A9eBC822a80BD25E224be42Ce0A698A0\",\n [ChainId.OPTIMISM]: \"0x0c3c1c532F1e39EdF36BE9Fe0bE1410313E074Bf\",\n [ChainId.ARBITRUM_ONE]: \"0xf1D7CC64Fb4452F05c498126312eBE29f30Fbcf9\",\n [ChainId.AVALANCHE]: \"0x9e5A52f57b3038F1B8EeE45F28b3C1967e22799C\",\n [ChainId.BASE]: \"0x8909dc15e40173ff4699343b6eb8132c65e18ec6\",\n [ChainId.BNB]: \"0x8909Dc15e40173Ff4699343b6eB8132c65e18eC6\",\n [ChainId.POLYGON]: \"0x9e5A52f57b3038F1B8EeE45F28b3C1967e22799C\",\n [ChainId.CELO]: \"0x79a530c8e2fA8748B7B40dd3629C0520c2cCf03f\",\n [ChainId.BLAST]: \"0x5C346464d33F90bABaf70dB6388507CC889C1070\",\n};\n/**\n * @deprecated use V2_ROUTER_ADDRESSES instead\n */\nexport const V2_ROUTER_ADDRESS = \"0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D\";\nexport const V2_ROUTER_ADDRESSES: AddressMap = {\n [ChainId.MAINNET]: \"0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D\",\n [ChainId.GOERLI]: \"0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D\",\n [ChainId.ARBITRUM_ONE]: \"0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24\",\n [ChainId.OPTIMISM]: \"0x4a7b5da61326a6379179b40d00f57e5bbdc962c2\",\n [ChainId.BASE]: \"0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24\",\n [ChainId.AVALANCHE]: \"0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24\",\n [ChainId.BNB]: \"0x4752ba5dbc23f44d87826276bf6fd6b1c372ad24\",\n [ChainId.POLYGON]: \"0xedf6066a2b290c185783862c7f4776a2c8077ad1\",\n [ChainId.BLAST]: \"0xBB66Eb1c5e875933D44DAe661dbD80e5D9B03035\",\n};\n\n// Networks that share most of the same addresses i.e. Mainnet, Goerli, Optimism, Arbitrum, Polygon\nconst DEFAULT_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x1F98431c8aD98523631AE4a59f267346ea31F984\",\n multicallAddress: \"0x1F98415757620B543A52E61c46B32eB19261F984\",\n quoterAddress: \"0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6\",\n v3MigratorAddress: \"0xA5644E29708357803b5A882D272c41cC0dF92B34\",\n nonfungiblePositionManagerAddress: \"0xC36442b4a4522E871399CD717aBDD847Ab11FE88\",\n};\nconst MAINNET_ADDRESSES: ChainAddresses = {\n ...DEFAULT_ADDRESSES,\n v1MixedRouteQuoterAddress: \"0x84E44095eeBfEC7793Cd7d5b57B7e401D7f1cA2E\",\n};\nconst GOERLI_ADDRESSES: ChainAddresses = {\n ...DEFAULT_ADDRESSES,\n v1MixedRouteQuoterAddress: \"0xBa60b6e6fF25488308789E6e0A65D838be34194e\",\n};\n\nconst OPTIMISM_ADDRESSES: ChainAddresses = DEFAULT_ADDRESSES;\nconst ARBITRUM_ONE_ADDRESSES: ChainAddresses = {\n ...DEFAULT_ADDRESSES,\n multicallAddress: \"0xadF885960B47eA2CD9B55E6DAc6B42b7Cb2806dB\",\n tickLensAddress: \"0xbfd8137f7d1516D3ea5cA83523914859ec47F573\",\n};\nconst POLYGON_ADDRESSES: ChainAddresses = DEFAULT_ADDRESSES;\n\n// celo v3 addresses\nconst CELO_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0xAfE208a311B21f13EF87E33A90049fC17A7acDEc\",\n multicallAddress: \"0x633987602DE5C4F337e3DbF265303A1080324204\",\n quoterAddress: \"0x82825d0554fA07f7FC52Ab63c961F330fdEFa8E8\",\n v3MigratorAddress: \"0x3cFd4d48EDfDCC53D3f173F596f621064614C582\",\n nonfungiblePositionManagerAddress: \"0x3d79EdAaBC0EaB6F08ED885C05Fc0B014290D95A\",\n tickLensAddress: \"0x5f115D9113F88e0a0Db1b5033D90D4a9690AcD3D\",\n};\n\n// BNB v3 addresses\nconst BNB_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0xdB1d10011AD0Ff90774D0C6Bb92e5C5c8b4461F7\",\n multicallAddress: \"0x963Df249eD09c358A4819E39d9Cd5736c3087184\",\n quoterAddress: \"0x78D78E420Da98ad378D7799bE8f4AF69033EB077\",\n v3MigratorAddress: \"0x32681814957e0C13117ddc0c2aba232b5c9e760f\",\n nonfungiblePositionManagerAddress: \"0x7b8A01B39D58278b5DE7e48c8449c9f4F5170613\",\n tickLensAddress: \"0xD9270014D396281579760619CCf4c3af0501A47C\",\n swapRouter02Address: \"0xB971eF87ede563556b2ED4b1C0b0019111Dd85d2\",\n};\n\n// optimism goerli addresses\nconst OPTIMISM_GOERLI_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0xB656dA17129e7EB733A557f4EBc57B76CFbB5d10\",\n multicallAddress: \"0x07F2D8a2a02251B62af965f22fC4744A5f96BCCd\",\n quoterAddress: \"0x9569CbA925c8ca2248772A9A4976A516743A246F\",\n v3MigratorAddress: \"0xf6c55fBe84B1C8c3283533c53F51bC32F5C7Aba8\",\n nonfungiblePositionManagerAddress: \"0x39Ca85Af2F383190cBf7d7c41ED9202D27426EF6\",\n tickLensAddress: \"0xe6140Bd164b63E8BfCfc40D5dF952f83e171758e\",\n};\n\n// optimism sepolia addresses\nconst OPTIMISM_SEPOLIA_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x8CE191193D15ea94e11d327b4c7ad8bbE520f6aF\",\n multicallAddress: \"0x80e4e06841bb76AA9735E0448cB8d003C0EF009a\",\n quoterAddress: \"0x0FBEa6cf957d95ee9313490050F6A0DA68039404\",\n v3MigratorAddress: \"0xE7EcbAAaA54D007A00dbb6c1d2f150066D69dA07\",\n nonfungiblePositionManagerAddress: \"0xdA75cEf1C93078e8b736FCA5D5a30adb97C8957d\",\n tickLensAddress: \"0xCb7f54747F58F8944973cea5b8f4ac2209BadDC5\",\n swapRouter02Address: \"0x94cC0AaC535CCDB3C01d6787D6413C739ae12bc4\",\n};\n\n// arbitrum goerli v3 addresses\nconst ARBITRUM_GOERLI_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x4893376342d5D7b3e31d4184c08b265e5aB2A3f6\",\n multicallAddress: \"0x8260CB40247290317a4c062F3542622367F206Ee\",\n quoterAddress: \"0x1dd92b83591781D0C6d98d07391eea4b9a6008FA\",\n v3MigratorAddress: \"0xA815919D2584Ac3F76ea9CB62E6Fd40a43BCe0C3\",\n nonfungiblePositionManagerAddress: \"0x622e4726a167799826d1E1D150b076A7725f5D81\",\n tickLensAddress: \"0xb52429333da969a0C79a60930a4Bf0020E5D1DE8\",\n};\n\n// arbitrum sepolia v3 addresses\nconst ARBITRUM_SEPOLIA_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x248AB79Bbb9bC29bB72f7Cd42F17e054Fc40188e\",\n multicallAddress: \"0x2B718b475e385eD29F56775a66aAB1F5cC6B2A0A\",\n quoterAddress: \"0x2779a0CC1c3e0E44D2542EC3e79e3864Ae93Ef0B\",\n v3MigratorAddress: \"0x398f43ef2c67B941147157DA1c5a868E906E043D\",\n nonfungiblePositionManagerAddress: \"0x6b2937Bde17889EDCf8fbD8dE31C3C2a70Bc4d65\",\n tickLensAddress: \"0x0fd18587734e5C2dcE2dccDcC7DD1EC89ba557d9\",\n swapRouter02Address: \"0x101F443B4d1b059569D643917553c771E1b9663E\",\n};\n\n// sepolia v3 addresses\nconst SEPOLIA_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x0227628f3F023bb0B980b67D528571c95c6DaC1c\",\n multicallAddress: \"0xD7F33bCdb21b359c8ee6F0251d30E94832baAd07\",\n quoterAddress: \"0xEd1f6473345F45b75F8179591dd5bA1888cf2FB3\",\n v3MigratorAddress: \"0x729004182cF005CEC8Bd85df140094b6aCbe8b15\",\n nonfungiblePositionManagerAddress: \"0x1238536071E1c677A632429e3655c799b22cDA52\",\n tickLensAddress: \"0xd7f33bcdb21b359c8ee6f0251d30e94832baad07\",\n swapRouter02Address: \"0x3bFA4769FB09eefC5a80d6E87c3B9C650f7Ae48E\",\n};\n\n// Avalanche v3 addresses\nconst AVALANCHE_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x740b1c1de25031C31FF4fC9A62f554A55cdC1baD\",\n multicallAddress: \"0x0139141Cd4Ee88dF3Cdb65881D411bAE271Ef0C2\",\n quoterAddress: \"0xbe0F5544EC67e9B3b2D979aaA43f18Fd87E6257F\",\n v3MigratorAddress: \"0x44f5f1f5E452ea8d29C890E8F6e893fC0f1f0f97\",\n nonfungiblePositionManagerAddress: \"0x655C406EBFa14EE2006250925e54ec43AD184f8B\",\n tickLensAddress: \"0xEB9fFC8bf81b4fFd11fb6A63a6B0f098c6e21950\",\n swapRouter02Address: \"0xbb00FF08d01D300023C629E8fFfFcb65A5a578cE\",\n};\n\nconst BASE_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x33128a8fC17869897dcE68Ed026d694621f6FDfD\",\n multicallAddress: \"0x091e99cb1C49331a94dD62755D168E941AbD0693\",\n quoterAddress: \"0x3d4e44Eb1374240CE5F1B871ab261CD16335B76a\",\n v3MigratorAddress: \"0x23cF10b1ee3AdfCA73B0eF17C07F7577e7ACd2d7\",\n nonfungiblePositionManagerAddress: \"0x03a520b32C04BF3bEEf7BEb72E919cf822Ed34f1\",\n tickLensAddress: \"0x0CdeE061c75D43c82520eD998C23ac2991c9ac6d\",\n swapRouter02Address: \"0x2626664c2603336E57B271c5C0b26F421741e481\",\n};\n\n// Base Goerli v3 addresses\nconst BASE_GOERLI_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x9323c1d6D800ed51Bd7C6B216cfBec678B7d0BC2\",\n multicallAddress: \"0xB206027a9E0E13F05eBEFa5D2402Bab3eA716439\",\n quoterAddress: \"0xedf539058e28E5937dAef3f69cEd0b25fbE66Ae9\",\n v3MigratorAddress: \"0x3efe5d02a04b7351D671Db7008ec6eBA9AD9e3aE\",\n nonfungiblePositionManagerAddress: \"0x3c61369ef0D1D2AFa70d8feC2F31C5D6Ce134F30\",\n tickLensAddress: \"0x1acB873Ee909D0c98adB18e4474943249F931b92\",\n swapRouter02Address: \"0x8357227D4eDc78991Db6FDB9bD6ADE250536dE1d\",\n};\n\nconst ZORA_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x7145F8aeef1f6510E92164038E1B6F8cB2c42Cbb\",\n multicallAddress: \"0xA51c76bEE6746cB487a7e9312E43e2b8f4A37C15\",\n quoterAddress: \"0x11867e1b3348F3ce4FcC170BC5af3d23E07E64Df\",\n v3MigratorAddress: \"0x048352d8dCF13686982C799da63fA6426a9D0b60\",\n nonfungiblePositionManagerAddress: \"0xbC91e8DfA3fF18De43853372A3d7dfe585137D78\",\n tickLensAddress: \"0x209AAda09D74Ad3B8D0E92910Eaf85D2357e3044\",\n swapRouter02Address: \"0x7De04c96BE5159c3b5CeffC82aa176dc81281557\",\n};\n\nconst ZORA_SEPOLIA_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x4324A677D74764f46f33ED447964252441aA8Db6\",\n multicallAddress: \"0xA1E7e3A69671C4494EC59Dbd442de930a93F911A\",\n quoterAddress: \"0xC195976fEF0985886E37036E2DF62bF371E12Df0\",\n v3MigratorAddress: \"0x65ef259b31bf1d977c37e9434658694267674897\",\n nonfungiblePositionManagerAddress: \"0xB8458EaAe43292e3c1F7994EFd016bd653d23c20\",\n tickLensAddress: \"0x23C0F71877a1Fc4e20A78018f9831365c85f3064\",\n};\n\nconst ROOTSTOCK_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0xaF37EC98A00FD63689CF3060BF3B6784E00caD82\",\n multicallAddress: \"0x996a9858cDfa45Ad68E47c9A30a7201E29c6a386\",\n quoterAddress: \"0xb51727c996C68E60F598A923a5006853cd2fEB31\",\n v3MigratorAddress: \"0x16678977CA4ec3DAD5efc7b15780295FE5f56162\",\n nonfungiblePositionManagerAddress: \"0x9d9386c042F194B460Ec424a1e57ACDE25f5C4b1\",\n tickLensAddress: \"0x55B9dF5bF68ADe972191a91980459f48ecA16afC\",\n swapRouter02Address: \"0x0B14ff67f0014046b4b99057Aec4509640b3947A\",\n};\n\nconst BLAST_ADDRESSES: ChainAddresses = {\n v3CoreFactoryAddress: \"0x792edAdE80af5fC680d96a2eD80A44247D2Cf6Fd\",\n multicallAddress: \"0xdC7f370de7631cE9e2c2e1DCDA6B3B5744Cf4705\",\n quoterAddress: \"0x6Cdcd65e03c1CEc3730AeeCd45bc140D57A25C77\",\n v3MigratorAddress: \"0x15CA7043CD84C5D21Ae76Ba0A1A967d42c40ecE0\",\n nonfungiblePositionManagerAddress: \"0xB218e4f7cF0533d4696fDfC419A0023D33345F28\",\n tickLensAddress: \"0x2E95185bCdD928a3e984B7e2D6560Ab1b17d7274\",\n swapRouter02Address: \"0x549FEB8c9bd4c12Ad2AB27022dA12492aC452B66\",\n};\n\nexport const CHAIN_TO_ADDRESSES_MAP: Record = {\n [ChainId.MAINNET]: MAINNET_ADDRESSES,\n [ChainId.OPTIMISM]: OPTIMISM_ADDRESSES,\n [ChainId.ARBITRUM_ONE]: ARBITRUM_ONE_ADDRESSES,\n [ChainId.POLYGON]: POLYGON_ADDRESSES,\n [ChainId.POLYGON_MUMBAI]: POLYGON_ADDRESSES,\n [ChainId.GOERLI]: GOERLI_ADDRESSES,\n [ChainId.CELO]: CELO_ADDRESSES,\n [ChainId.CELO_ALFAJORES]: CELO_ADDRESSES,\n [ChainId.BNB]: BNB_ADDRESSES,\n [ChainId.OPTIMISM_GOERLI]: OPTIMISM_GOERLI_ADDRESSES,\n [ChainId.OPTIMISM_SEPOLIA]: OPTIMISM_SEPOLIA_ADDRESSES,\n [ChainId.ARBITRUM_GOERLI]: ARBITRUM_GOERLI_ADDRESSES,\n [ChainId.ARBITRUM_SEPOLIA]: ARBITRUM_SEPOLIA_ADDRESSES,\n [ChainId.SEPOLIA]: SEPOLIA_ADDRESSES,\n [ChainId.AVALANCHE]: AVALANCHE_ADDRESSES,\n [ChainId.BASE]: BASE_ADDRESSES,\n [ChainId.BASE_GOERLI]: BASE_GOERLI_ADDRESSES,\n [ChainId.ZORA]: ZORA_ADDRESSES,\n [ChainId.ZORA_SEPOLIA]: ZORA_SEPOLIA_ADDRESSES,\n [ChainId.ROOTSTOCK]: ROOTSTOCK_ADDRESSES,\n [ChainId.BLAST]: BLAST_ADDRESSES,\n};\n\n/* V3 Contract Addresses */\nexport const V3_CORE_FACTORY_ADDRESSES: AddressMap = {\n ...SUPPORTED_CHAINS.reduce((memo, chainId) => {\n memo[chainId] = CHAIN_TO_ADDRESSES_MAP[chainId].v3CoreFactoryAddress;\n return memo;\n }, {}),\n};\n\nexport const V3_MIGRATOR_ADDRESSES: AddressMap = {\n ...SUPPORTED_CHAINS.reduce((memo, chainId) => {\n const v3MigratorAddress = CHAIN_TO_ADDRESSES_MAP[chainId].v3MigratorAddress;\n if (v3MigratorAddress) {\n memo[chainId] = v3MigratorAddress;\n }\n return memo;\n }, {}),\n};\n\nexport const MULTICALL_ADDRESSES: AddressMap = {\n ...SUPPORTED_CHAINS.reduce((memo, chainId) => {\n memo[chainId] = CHAIN_TO_ADDRESSES_MAP[chainId].multicallAddress;\n return memo;\n }, {}),\n};\n\n/**\n * The oldest V0 governance address\n */\nexport const GOVERNANCE_ALPHA_V0_ADDRESSES: AddressMap = constructSameAddressMap(\n \"0x5e4be8Bc9637f0EAA1A755019e06A68ce081D58F\",\n);\n/**\n * The older V1 governance address\n */\nexport const GOVERNANCE_ALPHA_V1_ADDRESSES: AddressMap = {\n [ChainId.MAINNET]: \"0xC4e172459f1E7939D522503B81AFAaC1014CE6F6\",\n};\n/**\n * The latest governor bravo that is currently admin of timelock\n */\nexport const GOVERNANCE_BRAVO_ADDRESSES: AddressMap = {\n [ChainId.MAINNET]: \"0x408ED6354d4973f66138C91495F2f2FCbd8724C3\",\n};\n\nexport const TIMELOCK_ADDRESSES: AddressMap = constructSameAddressMap(\"0x1a9C8182C09F50C8318d769245beA52c32BE35BC\");\n\nexport const MERKLE_DISTRIBUTOR_ADDRESS: AddressMap = {\n [ChainId.MAINNET]: \"0x090D4613473dEE047c3f2706764f49E0821D256e\",\n};\n\nexport const ARGENT_WALLET_DETECTOR_ADDRESS: AddressMap = {\n [ChainId.MAINNET]: \"0xeca4B0bDBf7c55E9b7925919d03CbF8Dc82537E8\",\n};\n\nexport const QUOTER_ADDRESSES: AddressMap = {\n ...SUPPORTED_CHAINS.reduce((memo, chainId) => {\n memo[chainId] = CHAIN_TO_ADDRESSES_MAP[chainId].quoterAddress;\n return memo;\n }, {}),\n};\n\nexport const NONFUNGIBLE_POSITION_MANAGER_ADDRESSES: AddressMap = {\n ...SUPPORTED_CHAINS.reduce((memo, chainId) => {\n const nonfungiblePositionManagerAddress = CHAIN_TO_ADDRESSES_MAP[chainId].nonfungiblePositionManagerAddress;\n if (nonfungiblePositionManagerAddress) {\n memo[chainId] = nonfungiblePositionManagerAddress;\n }\n return memo;\n }, {}),\n};\n\nexport const ENS_REGISTRAR_ADDRESSES: AddressMap = {\n ...constructSameAddressMap(\"0x00000000000C2E074eC69A0dFb2997BA6C7d2e1e\"),\n};\n\nexport const SOCKS_CONTROLLER_ADDRESSES: AddressMap = {\n [ChainId.MAINNET]: \"0x65770b5283117639760beA3F867b69b3697a91dd\",\n};\n\nexport const TICK_LENS_ADDRESSES: AddressMap = {\n ...SUPPORTED_CHAINS.reduce((memo, chainId) => {\n const tickLensAddress = CHAIN_TO_ADDRESSES_MAP[chainId].tickLensAddress;\n if (tickLensAddress) {\n memo[chainId] = tickLensAddress;\n }\n return memo;\n }, {}),\n};\n\nexport const MIXED_ROUTE_QUOTER_V1_ADDRESSES: AddressMap = SUPPORTED_CHAINS.reduce((memo, chainId) => {\n const v1MixedRouteQuoterAddress = CHAIN_TO_ADDRESSES_MAP[chainId].v1MixedRouteQuoterAddress;\n if (v1MixedRouteQuoterAddress) {\n memo[chainId] = v1MixedRouteQuoterAddress;\n }\n return memo;\n}, {});\n\nexport const SWAP_ROUTER_02_ADDRESSES = (chainId: number) => {\n if (SUPPORTED_CHAINS.includes(chainId)) {\n const id = chainId as SupportedChainsType;\n return CHAIN_TO_ADDRESSES_MAP[id].swapRouter02Address ?? \"0x68b3465833fb72A70ecDF485E0e4C7bD8665Fc45\";\n }\n return \"\";\n};\n","import { Web3Provider } from \"@ethersproject/providers\";\nimport type { Client, Transport, Chain } from \"viem\";\nimport { useMemo } from \"react\";\nimport { useClient } from \"wagmi\";\nimport { mainnet } from \"wagmi/chains\";\n\nconst providers = new WeakMap();\n\nexport function clientToWeb3js(client?: Client) {\n if (!client) return undefined;\n\n const { transport } = client;\n\n const provider = new Web3Provider(transport, mainnet.id);\n providers.set(client, provider);\n return provider;\n}\n\n/** Hook to convert a connected viem Client to an ethers.js Provider. */\nexport function useEthersWeb3Provider({ chainId = 1 }: { chainId?: number } = {}) {\n const client = useClient({ chainId });\n\n return useMemo(() => clientToWeb3js(client), [chainId, client]);\n}\n","import { Contract } from \"@ethersproject/contracts\";\nimport { useWeb3React } from \"@web3-react/core\";\nimport { chain, SUPPORTED_CHAINS } from \"constants/web3\";\nimport { useMemo } from \"react\";\nimport { getContract } from \"utils/web3/index\";\nimport { ckETH_MINTER_CONTRACT } from \"constants/ckETH\";\nimport { MULTICALL_ADDRESSES } from \"@icpswap/constants\";\n\nimport type { UniswapInterfaceMulticall, CkETH, ERC20, ERC20Helper } from \"abis/types\";\nimport UniswapInterfaceMulticallJson from \"abis/UniswapInterfaceMulticall.json\";\nimport ABI from \"abis/ckETH.json\";\nimport ERC20ABI from \"abis/ERC20.json\";\nimport ERC20HelperAbi from \"abis/ERC20Helper.json\";\n\nimport { useEthersWeb3Provider } from \"./useEthersProvider\";\n\nconst { abi: MulticallABI } = UniswapInterfaceMulticallJson;\n\n// returns null on errors\nexport function useContract(\n addressOrAddressMap: string | { [chainId: number]: string } | undefined,\n ABI: any,\n withSignerIfPossible = true,\n): T | null {\n const { provider, account } = useWeb3React();\n const ethersProvider = useEthersWeb3Provider();\n\n return useMemo(() => {\n if (!addressOrAddressMap || !ABI) return null;\n let address: string | undefined;\n if (typeof addressOrAddressMap === \"string\") address = addressOrAddressMap;\n else address = addressOrAddressMap[chain];\n if (!address) return null;\n\n try {\n return getContract(\n address,\n ABI,\n provider && provider?.network?.chainId && SUPPORTED_CHAINS.includes(provider?.network?.chainId)\n ? provider\n : ethersProvider,\n withSignerIfPossible && account ? account : undefined,\n );\n } catch (error) {\n console.error(\"Failed to get contract\", error);\n return null;\n }\n }, [addressOrAddressMap, ABI, provider, withSignerIfPossible, account]) as T;\n}\n\nexport function useEthMinterContract(withSignerIfPossible?: boolean) {\n return useContract(ckETH_MINTER_CONTRACT, ABI, withSignerIfPossible);\n}\n\nexport function useERC20Contract(contract: string | undefined, withSignerIfPossible?: boolean) {\n return useContract(contract, ERC20ABI, withSignerIfPossible);\n}\n\nexport function useERC20MinterHelperContract(contract: string | undefined, withSignerIfPossible?: boolean) {\n return useContract(contract, ERC20HelperAbi, withSignerIfPossible);\n}\n\nexport function useInterfaceMulticall() {\n const MULTICALL_ADDRESSE = MULTICALL_ADDRESSES[chain];\n\n return useContract(MULTICALL_ADDRESSE, MulticallABI, false);\n}\n","import { useCallsData } from \"@icpswap/hooks\";\nimport { ERC20Token } from \"@icpswap/swap-sdk\";\nimport { Null } from \"@icpswap/types\";\nimport { useERC20Contract } from \"hooks/web3/useContract\";\nimport { useCallback, useMemo } from \"react\";\n\nexport interface UseTokenAllowanceArgs {\n tokenAllowance?: string;\n isSyncing: boolean;\n}\n\nexport function useERC20TokenAllowance(\n token?: ERC20Token | Null,\n owner?: string | Null,\n spender?: string | Null,\n reload?: number | boolean,\n): UseTokenAllowanceArgs {\n const contract = useERC20Contract(token?.address, false);\n\n // If there is no allowance yet, re-check next observed block.\n // This guarantees that the tokenAllowance is marked isSyncing upon approval and updated upon being synced.\n // const [blocksPerFetch, setBlocksPerFetch] = useState<1>();\n const { result, loading } = useCallsData(\n useCallback(async () => {\n if (!owner || !spender) return undefined;\n const allowance = await contract?.allowance(owner, spender);\n return allowance?.toString();\n }, [owner, spender, contract]),\n reload,\n );\n\n const rawAmount = result?.toString(); // convert to a string before using in a hook, to avoid spurious rerenders\n const allowance = useMemo(() => (token && rawAmount ? rawAmount : undefined), [token, rawAmount]);\n\n return useMemo(() => ({ tokenAllowance: allowance, isSyncing: loading }), [allowance, loading]);\n}\n","/* eslint-disable no-else-return */\nimport { MaxUint256 } from \"@ethersproject/constants\";\nimport type { TransactionResponse } from \"@ethersproject/providers\";\nimport { ERC20Token } from \"@icpswap/swap-sdk\";\nimport { useWeb3React } from \"@web3-react/core\";\nimport { useERC20Contract } from \"hooks/web3/useContract\";\nimport { useCallback, useMemo } from \"react\";\nimport { calculateGasMargin } from \"utils/web3/calculateGasMargin\";\nimport { useERC20TokenAllowance } from \"hooks/web3/useERC20Allowance\";\nimport BigNumber from \"bignumber.js\";\nimport { Null } from \"@icpswap/types\";\n\nexport enum ApprovalState {\n UNKNOWN = \"UNKNOWN\",\n NOT_APPROVED = \"NOT_APPROVED\",\n PENDING = \"PENDING\",\n APPROVED = \"APPROVED\",\n}\n\nfunction useApprovalStateForSpender(\n amountToApprove: string | Null,\n token: ERC20Token | Null,\n spender: string | Null,\n useIsPendingApproval: (token?: ERC20Token | Null, spender?: string | Null) => boolean,\n): ApprovalState {\n const { account } = useWeb3React();\n\n const pendingApproval = useIsPendingApproval(token, spender);\n const { tokenAllowance } = useERC20TokenAllowance(token, account ?? undefined, spender, pendingApproval);\n\n return useMemo(() => {\n if (!amountToApprove || !spender) return ApprovalState.UNKNOWN;\n\n // we might not have enough data to know whether or not we need to approve\n if (!tokenAllowance) return ApprovalState.UNKNOWN;\n\n // amountToApprove will be defined if tokenAllowance is\n return new BigNumber(tokenAllowance).isLessThan(amountToApprove)\n ? pendingApproval\n ? ApprovalState.PENDING\n : ApprovalState.NOT_APPROVED\n : ApprovalState.APPROVED;\n }, [amountToApprove, pendingApproval, spender, tokenAllowance]);\n}\n\nexport function useApproval(\n amountToApprove: string | Null,\n token: ERC20Token | Null,\n spender: string | Null,\n useIsPendingApproval: (token?: ERC20Token | Null, spender?: string | Null) => boolean,\n): [\n ApprovalState,\n () => Promise<\n | { response: TransactionResponse; tokenAddress: string; spenderAddress: string; amount: string }\n | undefined\n | {\n error: string;\n }\n >,\n] {\n const { chainId } = useWeb3React();\n\n // check the current approval status\n const approvalState = useApprovalStateForSpender(amountToApprove, token, spender, useIsPendingApproval);\n\n const tokenContract = useERC20Contract(token?.address);\n\n const approve = useCallback(async () => {\n function logFailure(error: Error | string) {\n console.warn(`${token?.symbol || \"Token\"} approval failed:`, error);\n return undefined;\n }\n\n // Bail early if there is an issue.\n if (approvalState !== ApprovalState.NOT_APPROVED) {\n return logFailure(\"approve was called unnecessarily\");\n } else if (!chainId) {\n return logFailure(\"no chainId\");\n } else if (!token) {\n return logFailure(\"no token\");\n } else if (!tokenContract) {\n return logFailure(\"tokenContract is null\");\n } else if (!amountToApprove) {\n return logFailure(\"missing amount to approve\");\n } else if (!spender) {\n return logFailure(\"no spender\");\n }\n\n let useExact = false;\n const estimatedGas = await tokenContract.estimateGas.approve(spender, MaxUint256).catch(() => {\n // general fallback for tokens which restrict approval amounts\n useExact = true;\n return tokenContract.estimateGas.approve(spender, amountToApprove);\n });\n\n return tokenContract\n .approve(spender, useExact ? amountToApprove : MaxUint256, {\n gasLimit: calculateGasMargin(estimatedGas),\n })\n .then((response) => {\n return {\n response,\n tokenAddress: token.address,\n spenderAddress: spender,\n amount: amountToApprove,\n };\n })\n .catch((error: Error) => {\n logFailure(error);\n\n return {\n error: String(error),\n };\n });\n }, [approvalState, token, tokenContract, amountToApprove, spender, chainId]);\n\n return [approvalState, approve];\n}\n","import { ERC20Token } from \"@icpswap/swap-sdk\";\nimport { useCallback, useMemo } from \"react\";\nimport { useERC20Contract, useSupportedActiveChain, useWeb3CallsData, useActiveChain } from \"hooks/web3/index\";\n\nexport function useTokenName(tokenAddress: string | undefined) {\n const contract = useERC20Contract(tokenAddress, false);\n\n return useWeb3CallsData(\n useCallback(async () => {\n if (!tokenAddress || !contract) return undefined;\n return await contract.name();\n }, [tokenAddress, contract]),\n );\n}\n\nexport function useTokenSymbol(tokenAddress: string | undefined) {\n const contract = useERC20Contract(tokenAddress, false);\n\n return useWeb3CallsData(\n useCallback(async () => {\n if (!tokenAddress || !contract) return undefined;\n return await contract.symbol();\n }, [tokenAddress, contract]),\n );\n}\n\nexport function useTokenDecimals(tokenAddress: string | undefined) {\n const contract = useERC20Contract(tokenAddress, false);\n\n return useWeb3CallsData(\n useCallback(async () => {\n if (!tokenAddress || !contract) return undefined;\n return await contract.decimals();\n }, [tokenAddress, contract]),\n );\n}\n\nexport function useTokenLogo(tokenAddress: string | undefined) {\n return useWeb3CallsData(\n useCallback(async () => {\n if (!tokenAddress) return undefined;\n return `https://raw.githubusercontent.com/Uniswap/assets/master/blockchains/ethereum/assets/${tokenAddress}/logo.png`;\n }, [tokenAddress]),\n );\n}\n\n/**\n * Returns a Token from the tokenAddress.\n * Returns null if token is loading or null was passed.\n * Returns undefined if tokenAddress is invalid or token does not exist.\n */\nexport function useTokenFromActiveNetwork(tokenAddress: string | undefined): ERC20Token | undefined {\n const chainId = useActiveChain();\n const supportedActiveChain = useSupportedActiveChain();\n\n // TODO (WEB-1709): reduce this to one RPC call instead of 5\n // TODO: Fix redux-multicall so that these values do not reload.\n const { result: name } = useTokenName(tokenAddress);\n const { result: symbol } = useTokenSymbol(tokenAddress);\n const { result: decimals } = useTokenDecimals(tokenAddress);\n const { result: logo } = useTokenLogo(tokenAddress);\n\n return useMemo(() => {\n // If the token is on another chain, we cannot fetch it on-chain, and it is invalid.\n if (typeof tokenAddress !== \"string\" || !tokenAddress) return undefined;\n\n if ((!decimals && decimals !== 0) || !symbol || !name) {\n return undefined;\n }\n\n return new ERC20Token({ address: tokenAddress, decimals, name, symbol, logo });\n }, [tokenAddress, chainId, name, symbol, decimals, logo, supportedActiveChain]);\n}\n","/* eslint-disable no-param-reassign */\n/* eslint-disable no-console */\n\n// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://cra.link/PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === \"localhost\" ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === \"[::1]\" ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/),\n);\n\ntype Config = {\n onSuccess?: (registration: ServiceWorkerRegistration) => void;\n onUpdate?: (registration: ServiceWorkerRegistration) => void;\n};\n\nfunction registerValidSW(swUrl: string, config?: Config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === \"installed\") {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n \"New content is available and will be used when all \" +\n \"tabs for this page are closed. See https://cra.link/PWA.\",\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log(\"Content is cached for offline use.\");\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error(\"Error during service worker registration:\", error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl: string, config?: Config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { \"Service-Worker\": \"script\" },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get(\"content-type\");\n if (response.status === 404 || (contentType != null && contentType.indexOf(\"javascript\") === -1)) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\"No internet connection found. App is running in offline mode.\");\n });\n}\n\nexport function register(config?: Config) {\n if (process.env.NODE_ENV === \"production\" && \"serviceWorker\" in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener(\"load\", () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n \"This web app is being served cache-first by a service \" +\n \"worker. To learn more, visit https://cra.link/PWA\",\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nexport function unregister() {\n if (\"serviceWorker\" in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","import { useEffect } from \"react\";\nimport { RouteComponentProps } from \"react-router-dom\";\nimport ReactGA from \"react-ga\";\nimport { REACT_GA_TRACKING_ID } from \"constants/index\";\nimport { isMobile } from \"react-device-detect\";\n\nexport default function GoogleAnalytics({ location: { pathname, search } }: RouteComponentProps): null {\n useEffect(() => {\n ReactGA.pageview(`${pathname}${search}`);\n }, [pathname, search]);\n return null;\n}\n\nexport function initGoogleAnalytics() {\n if (typeof REACT_GA_TRACKING_ID === \"string\") {\n ReactGA.initialize(REACT_GA_TRACKING_ID);\n\n ReactGA.set({\n anonymizeIp: true,\n customBrowserType: !isMobile ? \"desktop\" : \"web3\" in window ? \"mobileWeb3\" : \"mobileRegular\",\n });\n } else {\n ReactGA.initialize(\"test\", { testMode: true, debug: true });\n }\n}\n","export const RISK_WARNING_INDEX = 3;\n","import { useState } from \"react\";\nimport { Grid, Typography, Box, Checkbox, Button } from \"@mui/material\";\nimport { makeStyles, useTheme } from \"@mui/styles\";\nimport { Theme } from \"@mui/material/styles\";\nimport Modal from \"components/modal/index\";\nimport { Trans, t } from \"@lingui/macro\";\nimport { TextButton } from \"components/index\";\nimport storage from \"redux-persist/lib/storage\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n content: {\n background: theme.palette.background.level3,\n border: `1px solid ${theme.palette.background.level4}`,\n borderRadius: \"12px\",\n padding: \"14px 16px\",\n marginTop: \"16px\",\n overflow: \"auto\",\n maxHeight: \"280px\",\n },\n button: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"40px\",\n padding: \"0 20px\",\n background: \"#FFFFFF\",\n boxShadow: \"0px 4px 4px rgba(0, 0, 0, 0.15)\",\n borderRadius: \"8px\",\n cursor: \"pointer\",\n },\n };\n});\n\nexport const RISK_STORAGE_NAME = \"ICPSwap_Risk\";\n\nexport async function getRiskStorage() {\n const storageRisk = await storage.getItem(RISK_STORAGE_NAME);\n const isRead = !storageRisk ? \"\" : JSON.parse(storageRisk);\n return isRead;\n}\n\nexport async function setRiskStorage(isRead: boolean) {\n await storage.setItem(RISK_STORAGE_NAME, JSON.stringify(isRead));\n}\n\nexport default function RiskStatementModal({\n open,\n onClose,\n onRead,\n}: {\n open: boolean;\n onClose: () => void;\n onRead: () => void;\n}) {\n const classes = useStyles();\n\n const [isRead, setIsRead] = useState(false);\n\n const theme = useTheme() as Theme;\n\n const handleRead = () => {\n setRiskStorage(true);\n onClose();\n onRead();\n };\n\n return (\n \n \n \n There is always some potential risk in using Tokens and/or Cryptos. DYOR before investing.\n \n \n \n \n \n \n 1. ICPSwap is a decentralized financial hub of the Internet Computer, providing the transaction function\n of various tokens and NFTs within its ecosystem and other services. All the services are deployed on the\n Internet Computer, and all transactions can be checked on the Internet Computer protocol. Only you can be\n responsible for your own funds. Please make sure to keep your funds safe and be vigilant of fraud.\n \n \n \n \n \n \n 2. The Internet Computer ecosystem is in its growth stage. All functions of ICPSwap have undergone\n multiple rounds of internal and public testing and also iterative repair, The ICPSwap DApp is now under\n SNS control, enhancing its security!\n \n \n \n \n \n \n 3. Anyone who has the seed phrase of a wallet address has control of the funds in that wallet. Never share\n your seed phrase under any circumstances whatsoever, including with the ICPSwap team.\n \n \n \n \n \n \n 4. Please stay vigilant to phishing attacks and make sure you are visiting{\" \"}\n \n https://app.icpswap.com\n {\" \"}\n - check the URL carefully.\n \n \n \n \n \n \n 5. For any events and news about ICPSwap, please refer to ICPSwap's Twitter:{\" \"}\n https://twitter.com/icpswap or @ICPSwap\n \n \n \n \n \n setIsRead(!isRead)}\n >\n {\n setIsRead(checked);\n }}\n />\n \n I have read the risk warning carefully and agree to take the risk myself\n \n \n \n \n \n \n \n \n * The ICPSwap founding team reserves right for the final explanation of all the statements.\n \n \n \n );\n}\n","import { useState, useEffect } from \"react\";\nimport { Grid, Typography, Box, useTheme, useMediaQuery } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { Trans } from \"@lingui/macro\";\nimport { Theme } from \"@mui/material/styles\";\nimport { RISK_WARNING_INDEX } from \"constants/zIndex\";\n\nimport RiskStatementModal, { getRiskStorage } from \"./Modal\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n container: {\n padding: \"15px 20px\",\n background: \"linear-gradient(89.44deg, #5569DB -0.31%, #8572FF 91.14%)\",\n [theme.breakpoints.down(\"md\")]: {\n padding: \"5px 10px\",\n },\n },\n button: {\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n height: \"40px\",\n padding: \"0 20px\",\n background: \"#FFFFFF\",\n boxShadow: \"0px 4px 4px rgba(0, 0, 0, 0.15)\",\n borderRadius: \"8px\",\n cursor: \"pointer\",\n [theme.breakpoints.down(\"md\")]: {\n height: \"30px\",\n padding: \"0 10px\",\n },\n [theme.breakpoints.down(\"sm\")]: {\n marginTop: \"8px\",\n },\n },\n };\n});\n\nexport default function RiskStatement() {\n const classes = useStyles();\n const theme = useTheme() as Theme;\n\n const [riskStatementShow, setRickStatementShow] = useState(false);\n const [isRead, setIsRead] = useState(true);\n\n const matchDownSM = useMediaQuery(theme.breakpoints.down(\"sm\"));\n\n useEffect(() => {\n (async () => {\n const isRead = await getRiskStorage();\n if (isRead === \"true\" || isRead === true) {\n setIsRead(true);\n } else {\n setIsRead(false);\n }\n })();\n }, []);\n\n const handleRead = () => {\n setRickStatementShow(true);\n };\n\n return !isRead ? (\n <>\n \n \n \n \n There is always some potential risk in using Tokens and/or Cryptos. DYOR before investing.\n \n \n \n \n Read risk warning and close\n \n \n \n \n {riskStatementShow ? (\n setRickStatementShow(false)}\n onRead={() => setIsRead(true)}\n />\n ) : null}\n \n ) : null;\n}\n","export default function ErrorImage() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { ReactNode } from \"react\";\nimport { Box, Typography } from \"./Mui\";\nimport { Flex } from \"./Grid/Flex\";\n\nfunction CloseIcon() {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport interface GlobalTipsProps {\n onClose?: () => void;\n children?: ReactNode;\n}\n\nexport function GlobalTips({ children, onClose }: GlobalTipsProps) {\n return (\n \n \n {children}\n \n\n {onClose ? (\n \n \n \n ) : null}\n \n );\n}\n","import { Box } from \"@mui/material\";\n\nexport default function Background() {\n return (\n \n );\n}\n","import { Grid, Box, Typography } from \"@mui/material\";\nimport { Trans } from \"@lingui/macro\";\nimport { useHistory } from \"react-router-dom\";\n\nfunction CloseIcon() {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport default function V3Event({ onClick }: { onClick: () => void }) {\n const history = useHistory();\n\n const handleToTwitter = () => {\n history.push(\"/swap\");\n };\n\n return (\n \n \n \n We have launched Swap(MOR) V3. Click to Switch to the Smoother Swap V3 Ver.\n \n \n\n \n \n \n \n );\n}\n","var _path, _path2, _path3, _path4, _path5, _path6, _mask, _g, _circle, _path7, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgLogoDark(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 125,\n height: 32,\n viewBox: \"0 0 125 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M47 21.8866H49.3981V9.07214H47V21.8866Z\",\n fill: \"white\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M62.964 20.2756C61.6461 21.5753 59.9435 22.1794 58.0943 22.1794C53.3346 22.1794 51.3209 18.9026 51.3028 15.571C51.2846 12.221 53.4628 8.81567 58.0943 8.81567C59.8336 8.81567 61.4814 9.47469 62.7995 10.7745L61.1882 12.3306C60.3463 11.5071 59.2115 11.1225 58.0943 11.1225C55.0007 11.1225 53.6643 13.4291 53.6829 15.571C53.7009 17.6946 54.9276 19.9098 58.0943 19.9098C59.2115 19.9098 60.4743 19.4521 61.3166 18.61L62.964 20.2756Z\",\n fill: \"white\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M66.5545 15.9001H70.1792C73.2728 15.9001 73.2547 11.3599 70.1792 11.3599H66.5545V15.9001ZM70.1792 18.1154H66.5544V21.8864H64.1379V9.07195C66.1518 9.07195 68.1655 9.05371 70.1792 9.05371C76.44 9.05371 76.4582 18.1154 70.1792 18.1154Z\",\n fill: \"white\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M84.4238 12.166C83.9848 11.4335 82.7762 10.738 81.3852 10.738C79.591 10.738 78.7306 11.4884 78.7306 12.4406C78.7306 13.5572 80.0485 13.8686 81.5866 14.0517C84.2593 14.3812 86.7487 15.0765 86.7487 18.1336C86.7487 20.9896 84.2223 22.2162 81.3665 22.2162C78.7489 22.2162 76.735 21.4109 75.7834 19.0676L77.7967 18.024C78.3643 19.4334 79.8472 20.0561 81.4033 20.0561C82.9227 20.0561 84.3507 19.5251 84.3507 18.1336C84.3507 16.9257 83.0875 16.4312 81.3852 16.2481C78.7669 15.9372 76.3506 15.2415 76.3506 12.3673C76.3506 9.73094 78.9502 8.65119 81.3116 8.63263C83.3071 8.63263 85.3758 9.20027 86.3463 11.177L84.4238 12.166Z\",\n fill: \"white\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M96.5635 12.8432L98.5405 19.6347L100.609 12.8432H103.081L99.9315 21.9235H97.3321L96.3986 19.2508L95.5933 16.23L94.7874 19.2508L93.8539 21.9235H91.2544L88.0872 12.8432H90.5773L92.6455 19.6347L94.6048 12.8432H96.5635Z\",\n fill: \"white\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M107.861 20.088C106.452 20.088 105.305 18.9409 105.305 17.531C105.305 16.1214 106.452 14.9743 107.861 14.9743C109.271 14.9743 110.418 16.1214 110.418 17.531C110.418 18.9409 109.271 20.088 107.861 20.088ZM110.441 13.5087C109.669 13.0124 108.779 12.7506 107.861 12.7506C105.225 12.7506 103.081 14.8954 103.081 17.5311C103.081 20.1672 105.225 22.3118 107.861 22.3118C108.779 22.3118 109.669 22.05 110.441 21.5537V22.1273H112.642V12.9166H110.441V13.5087Z\",\n fill: \"white\"\n })), _mask || (_mask = /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask0\",\n \"mask-type\": \"alpha\",\n maskUnits: \"userSpaceOnUse\",\n x: 114,\n y: 12,\n width: 11,\n height: 14\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M114.133 12.7412H124.113V25.7503H114.133V12.7412Z\",\n fill: \"white\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask0)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M119.332 20.0784C117.922 20.0784 116.775 18.9315 116.775 17.5216C116.775 16.1118 117.922 14.9649 119.332 14.9649C120.742 14.9649 121.889 16.1118 121.889 17.5216C121.889 18.9315 120.742 20.0784 119.332 20.0784ZM119.332 12.7412C118.244 12.7412 117.183 13.1176 116.334 13.8033V12.9621H114.133V25.7503H116.334V21.2402C117.183 21.926 118.244 22.3024 119.332 22.3024C121.968 22.3024 124.113 20.1576 124.113 17.5217C124.113 14.886 121.968 12.7412 119.332 12.7412Z\",\n fill: \"white\"\n }))), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 16,\n cy: 16,\n r: 16,\n fill: \"url(#paint0_linear)\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M19.9707 7.20001C17.4803 7.20001 15.6815 9.19209 15.2017 10.5987C14.3601 12.7633 14.7154 14.426 15.0285 15.8923L15.0512 15.9991C15.3419 17.3628 15.6163 18.6508 15.2234 20.2673C15.1869 20.4886 15.1221 20.7063 15.0307 20.9143C14.5812 21.9452 13.5617 22.6109 12.4338 22.6109C10.8728 22.6109 9.60277 21.3485 9.60277 19.7964C9.60277 18.2437 10.8728 16.9805 12.4338 16.9805C12.8542 16.9805 13.2582 17.0706 13.6355 17.2478L13.9643 17.4025L13.5546 14.9127L13.4253 14.8867C13.101 14.8218 12.7673 14.7892 12.4338 14.7892C9.65803 14.7892 7.3999 17.0353 7.3999 19.7964C7.3999 22.5576 9.65803 24.8036 12.4338 24.8036C14.7381 24.8036 16.7435 23.2539 17.3075 21.0474C17.8778 19.3192 17.6112 17.7424 17.2333 16.0072L17.1911 15.8141C16.8203 14.1169 16.5273 12.7763 17.4106 11.0062C17.8756 10.026 18.8803 9.39237 19.9707 9.39237C21.531 9.39237 22.8007 10.6548 22.8007 12.2068C22.8007 13.7588 21.531 15.0217 19.9707 15.0217C19.5838 15.0217 19.2081 14.9453 18.8528 14.794L18.5334 14.6584L18.9368 17.1101L19.0695 17.1343C19.3643 17.1873 19.6676 17.2145 19.9707 17.2145C22.7458 17.2145 25.0035 14.9679 25.0035 12.2068C25.0035 9.44603 22.7458 7.20001 19.9707 7.20001Z\",\n fill: \"white\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear\",\n x1: -0.264463,\n y1: 15.1351,\n x2: 29.2813,\n y2: 14.8475,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#5569DB\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#8572FF\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogoDark);\nexport default __webpack_public_path__ + \"static/media/logo-dark.7b8c12091e650c40c5e9f561c57473ba.svg\";\nexport { ForwardRef as ReactComponent };","var _path, _path2, _path3, _path4, _path5, _path6, _mask, _g, _circle, _path7, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgLogoWhite(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 119,\n height: 32,\n viewBox: \"0 0 119 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M41 21.8866H43.3981V9.07214H41V21.8866Z\",\n fill: \"#212121\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M56.964 20.2756C55.6461 21.5753 53.9435 22.1794 52.0943 22.1794C47.3346 22.1794 45.3209 18.9026 45.3028 15.571C45.2846 12.221 47.4628 8.81567 52.0943 8.81567C53.8336 8.81567 55.4814 9.47469 56.7995 10.7745L55.1882 12.3306C54.3463 11.5071 53.2115 11.1225 52.0943 11.1225C49.0007 11.1225 47.6643 13.4291 47.6829 15.571C47.7009 17.6946 48.9276 19.9098 52.0943 19.9098C53.2115 19.9098 54.4743 19.4521 55.3166 18.61L56.964 20.2756Z\",\n fill: \"#212121\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M60.5545 15.9001H64.1792C67.2728 15.9001 67.2547 11.3599 64.1792 11.3599H60.5545V15.9001ZM64.1792 18.1154H60.5544V21.8864H58.1379V9.07195C60.1518 9.07195 62.1655 9.05371 64.1792 9.05371C70.44 9.05371 70.4582 18.1154 64.1792 18.1154Z\",\n fill: \"#212121\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M78.4238 12.1659C77.9848 11.4335 76.7762 10.738 75.3852 10.738C73.591 10.738 72.7306 11.4884 72.7306 12.4406C72.7306 13.5571 74.0485 13.8685 75.5866 14.0516C78.2593 14.3811 80.7487 15.0765 80.7487 18.1336C80.7487 20.9895 78.2223 22.2162 75.3665 22.2162C72.7489 22.2162 70.735 21.4109 69.7834 19.0675L71.7967 18.0239C72.3643 19.4334 73.8472 20.056 75.4033 20.056C76.9227 20.056 78.3507 19.5251 78.3507 18.1336C78.3507 16.9256 77.0875 16.4311 75.3852 16.2481C72.7669 15.9371 70.3506 15.2415 70.3506 12.3673C70.3506 9.73087 72.9502 8.65113 75.3116 8.63257C77.3071 8.63257 79.3758 9.20021 80.3463 11.1769L78.4238 12.1659Z\",\n fill: \"#212121\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M90.5635 12.8431L92.5405 19.6346L94.6091 12.8431H97.0806L93.9315 21.9234H91.3321L90.3986 19.2507L89.5933 16.2299L88.7874 19.2507L87.8539 21.9234H85.2544L82.0872 12.8431H84.5773L86.6455 19.6346L88.6048 12.8431H90.5635Z\",\n fill: \"#212121\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M101.861 20.0878C100.452 20.0878 99.3046 18.9407 99.3046 17.5308C99.3046 16.1213 100.452 14.9742 101.861 14.9742C103.271 14.9742 104.418 16.1213 104.418 17.5308C104.418 18.9407 103.271 20.0878 101.861 20.0878ZM104.441 13.5086C103.669 13.0123 102.779 12.7505 101.861 12.7505C99.2252 12.7505 97.0806 14.8953 97.0806 17.531C97.0806 20.1671 99.2252 22.3117 101.861 22.3117C102.779 22.3117 103.669 22.0498 104.441 21.5536V22.1271H106.642V12.9164H104.441V13.5086Z\",\n fill: \"#212121\"\n })), _mask || (_mask = /*#__PURE__*/React.createElement(\"mask\", {\n id: \"mask0\",\n \"mask-type\": \"alpha\",\n maskUnits: \"userSpaceOnUse\",\n x: 108,\n y: 12,\n width: 11,\n height: 14\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M108.133 12.7411H118.113V25.7502H108.133V12.7411Z\",\n fill: \"white\"\n }))), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n mask: \"url(#mask0)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M113.332 20.0783C111.922 20.0783 110.775 18.9313 110.775 17.5214C110.775 16.1117 111.922 14.9648 113.332 14.9648C114.742 14.9648 115.889 16.1117 115.889 17.5214C115.889 18.9313 114.742 20.0783 113.332 20.0783ZM113.332 12.7411C112.244 12.7411 111.183 13.1175 110.334 13.8032V12.9619H108.133V25.7502H110.334V21.2401C111.183 21.9259 112.244 22.3023 113.332 22.3023C115.968 22.3023 118.113 20.1575 118.113 17.5216C118.113 14.8859 115.968 12.7411 113.332 12.7411Z\",\n fill: \"#212121\"\n }))), _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 16,\n cy: 16,\n r: 16,\n fill: \"url(#paint0_linear)\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M19.9707 7.19995C17.4803 7.19995 15.6815 9.19203 15.2017 10.5987C14.3601 12.7632 14.7154 14.4259 15.0285 15.8922L15.0512 15.999C15.3419 17.3627 15.6163 18.6507 15.2234 20.2673C15.1869 20.4886 15.1221 20.7062 15.0307 20.9142C14.5812 21.9451 13.5617 22.6108 12.4338 22.6108C10.8728 22.6108 9.60277 21.3484 9.60277 19.7964C9.60277 18.2436 10.8728 16.9804 12.4338 16.9804C12.8542 16.9804 13.2582 17.0705 13.6355 17.2477L13.9643 17.4024L13.5546 14.9126L13.4253 14.8867C13.101 14.8218 12.7673 14.7891 12.4338 14.7891C9.65803 14.7891 7.3999 17.0353 7.3999 19.7964C7.3999 22.5576 9.65803 24.8036 12.4338 24.8036C14.7381 24.8036 16.7435 23.2538 17.3075 21.0474C17.8778 19.3192 17.6112 17.7424 17.2333 16.0071L17.1911 15.814C16.8203 14.1169 16.5273 12.7763 17.4106 11.0062C17.8756 10.0259 18.8803 9.39231 19.9707 9.39231C21.531 9.39231 22.8007 10.6547 22.8007 12.2068C22.8007 13.7587 21.531 15.0217 19.9707 15.0217C19.5838 15.0217 19.2081 14.9453 18.8528 14.794L18.5334 14.6583L18.9368 17.1101L19.0695 17.1342C19.3643 17.1872 19.6676 17.2144 19.9707 17.2144C22.7458 17.2144 25.0035 14.9679 25.0035 12.2068C25.0035 9.44597 22.7458 7.19995 19.9707 7.19995Z\",\n fill: \"white\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear\",\n x1: -0.264463,\n y1: 15.1351,\n x2: 29.2813,\n y2: 14.8475,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#5569DB\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#8572FF\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogoWhite);\nexport default __webpack_public_path__ + \"static/media/logo-white.3e0cd9be6a0e52b49b72c67e9486d930.svg\";\nexport { ForwardRef as ReactComponent };","import { useTheme } from \"@mui/material/\";\nimport { Theme } from \"@mui/material/styles\";\nimport logoDark from \"../assets/images/logo-dark.svg\";\nimport logo from \"../assets/images/logo-white.svg\";\n\nexport default function Logo() {\n const theme = useTheme() as Theme;\n\n return \"\";\n}\n","import { Link } from \"react-router-dom\";\nimport { ButtonBase } from \"@mui/material\";\nimport Logo from \"components/Logo\";\n\nexport default function LogoSection() {\n return (\n \n \n \n );\n}\n","import { useRef } from \"react\";\nimport { Box, Typography } from \"components/Mui\";\nimport Copy, { CopyRef } from \"components/Copy\";\nimport { Image } from \"components/index\";\nimport { mockALinkAndOpen, shorten } from \"@icpswap/utils\";\nimport { Flex } from \"@icpswap/ui\";\n\nexport interface AddressSectionProps {\n label: string;\n link: string | undefined;\n address: string | undefined;\n}\n\nexport function AddressSection({ label, link, address }: AddressSectionProps) {\n const copyRef = useRef(null);\n\n const handleCopy = () => {\n if (copyRef) {\n copyRef?.current?.copy();\n }\n };\n\n const handleToExplorer = () => {\n if (!link) return;\n mockALinkAndOpen(link, \"explorers_address\");\n };\n\n return (\n \n \n {label}\n \n\n \n {shorten(address)}\n \n\n \n\n \n \n );\n}\n","import { explorerLink, principalToAccount } from \"@icpswap/utils\";\nimport { t } from \"@lingui/macro\";\nimport { useAccountPrincipalString } from \"store/auth/hooks\";\nimport { AddressSection } from \"./Address\";\n\nexport function AccountSection() {\n const principal = useAccountPrincipalString();\n\n return (\n \n );\n}\n","import { explorerLink } from \"@icpswap/utils\";\nimport { t } from \"@lingui/macro\";\nimport { useAccountPrincipalString } from \"store/auth/hooks\";\nimport { AddressSection } from \"./Address\";\n\nexport default function ProfileSection() {\n const principal = useAccountPrincipalString();\n\n return (\n \n );\n}\n","import { Button, Dialog, DialogTitle, DialogContent, Typography, Grid } from \"@mui/material\";\nimport { makeStyles } from \"@mui/styles\";\nimport { Trans } from \"@lingui/macro\";\nimport { Theme } from \"@mui/material/styles\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n titleContainer: {\n position: \"relative\",\n },\n title: {\n fontSize: theme.fontSize.lg,\n fontWeight: 700,\n },\n detailItem: {\n marginBottom: \"24px\",\n },\n value: {\n textAlign: \"right\",\n wordBreak: \"break-all\",\n },\n closeButton: {\n position: \"absolute\",\n right: 0,\n top: \"50%\",\n transform: \"translate(0, -50%)\",\n cursor: \"pointer\",\n \"&:hover\": {\n color: theme.palette.secondary.main,\n },\n },\n}));\n\nexport default function LogoutConfirmModal({\n open,\n onCancel,\n onConfirm,\n}: {\n open: boolean;\n onCancel: () => void;\n onConfirm: () => void;\n}) {\n const classes = useStyles();\n\n return (\n \n \n \n \n Log Out\n \n \n \n \n \n \n \n \n When you log out, your account information will be cleared for asset security. Please ensure that you\n have safely backed up your wallet's mnemonic phrase.\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { useState, ReactNode } from \"react\";\nimport { Box } from \"@mui/material\";\nimport { useUserLogout } from \"store/auth/hooks\";\nimport LogoutConfirmModal from \"./Confirm\";\n\nexport default function LogOutSection({ children, onLogout }: { children: ReactNode; onLogout?: () => void }) {\n const [logoutConfirmOpen, setLogoutConfirmOpen] = useState(false);\n const logout = useUserLogout();\n\n const onLogoutConfirm = async () => {\n await logout();\n setLogoutConfirmOpen(false);\n if (onLogout) onLogout();\n };\n\n return (\n <>\n setLogoutConfirmOpen(true)}>{children}\n setLogoutConfirmOpen(false)}\n />\n \n );\n}\n","import { Typography } from \"components/Mui\";\nimport { formatDollarAmount, parseTokenAmount, toSignificantWithGroupSeparator } from \"@icpswap/utils\";\nimport { ICP } from \"@icpswap/tokens\";\nimport { Flex } from \"@icpswap/ui\";\nimport { useAccountPrincipal } from \"store/auth/hooks\";\nimport { useInfoToken } from \"hooks/info/useInfoTokens\";\nimport { useTokenBalance } from \"hooks/token/useTokenBalance\";\n\nexport function BalanceAndValue() {\n const principal = useAccountPrincipal();\n\n const infoToken = useInfoToken(ICP.address);\n const { result: tokenBalance } = useTokenBalance(ICP.address, principal);\n\n return (\n \n \n {tokenBalance && infoToken\n ? formatDollarAmount(\n parseTokenAmount(tokenBalance, ICP.decimals).multipliedBy(infoToken.priceUSD).toString(),\n 3,\n 0.01,\n )\n : \"--\"}\n \n\n \n {tokenBalance\n ? toSignificantWithGroupSeparator(parseTokenAmount(tokenBalance, ICP.decimals).toString(), 4)\n : \"--\"}{\" \"}\n ICP\n \n \n );\n}\n","import { useCallback, useEffect, useRef, useState } from \"react\";\nimport { Paper, Popper, Box, Typography, useMediaQuery, Fade, Button } from \"@mui/material\";\nimport { useTheme } from \"components/Mui\";\nimport { shorten } from \"@icpswap/utils\";\nimport { Trans } from \"@lingui/macro\";\nimport { ClickAwayListener } from \"@mui/base/ClickAwayListener\";\nimport {\n useAccountPrincipal,\n useConnectorStateConnected,\n useUserLogout,\n useWalletConnectorManager,\n useConnectorType,\n} from \"store/auth/hooks\";\nimport { Flex } from \"@icpswap/ui\";\nimport { ConnectorImage, Image } from \"components/Image/index\";\nimport { ChevronDown } from \"react-feather\";\nimport { useHistory } from \"react-router-dom\";\nimport { Connector } from \"constants/wallet\";\n\nimport { AccountSection } from \"./Account\";\nimport Principal from \"./Principal\";\nimport LogOutSection from \"../LogOutSection\";\nimport { BalanceAndValue } from \"./BalanceAndValue\";\n\nexport default function ProfileSection() {\n const theme = useTheme();\n const matchDownMD = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n const [open, setOpen] = useState(false);\n\n const anchorRef = useRef(null);\n const prevOpen = useRef(open);\n\n const principal = useAccountPrincipal();\n const isConnected = useConnectorStateConnected();\n const logout = useUserLogout();\n const history = useHistory();\n const connectorType = useConnectorType();\n\n const [, walletManager] = useWalletConnectorManager();\n\n const handleToggle = () => {\n setOpen((prevOpen) => !prevOpen);\n };\n\n const handleClose = (event: MouseEvent | TouchEvent) => {\n if (anchorRef.current && anchorRef.current.contains(event.target as Node)) return;\n setOpen(false);\n };\n\n const handleConnectWallet = async () => {\n await logout();\n walletManager(true);\n };\n\n useEffect(() => {\n if (anchorRef.current && prevOpen.current === true && open === false) {\n anchorRef.current.focus();\n }\n prevOpen.current = open;\n }, [open]);\n\n const handleToWallet = useCallback(() => {\n history.push(\"/wallet\");\n }, [history]);\n\n return (\n \n {isConnected ? (\n \n ) : null}\n\n \n {isConnected ? (\n \n \n \n {principal ? shorten(principal.toString()) : \"\"}\n \n \n \n ) : (\n \n )}\n \n\n \n {({ TransitionProps }) => (\n \n \n \n \n \n \n setOpen(false)}>\n \n \n \n\n \n\n \n \n Copy Account ID for sending from exchanges and Principal ID for lCP network.\n \n\n \n \n \n\n \n \n \n \n\n {connectorType === Connector.IC ? (\n \n \n \n Internet Identity generates unique Principal IDs and Account IDs for each Dapp. This feature\n ensures that user identities and account information are isolated across different\n applications, enhancing security and privacy protection.\n \n \n \n ) : null}\n \n \n \n \n \n )}\n \n \n );\n}\n","\n/** This is auto generated by scripts/pre-deploy.js */\n\nexport const version: string = \"4.13.3\";\n","import { INFO_URL } from \"constants/index\";\nimport TwitterIcon from \"./icons/Twitter\";\nimport TelegramIcon from \"./icons/Telegram\";\nimport DiscordIcon from \"./icons/Discord\";\nimport WebsiteIcon from \"./icons/Website\";\nimport MediumIcon from \"./icons/Medium\";\nimport GithubIcon from \"./icons/Github\";\nimport GitbookIcon from \"./icons/Gitbook\";\nimport DSCVRIcon from \"./icons/DSCVR\";\nimport SimpleModeIcon from \"./icons/SimpleMode\";\nimport ProModeIcon from \"./icons/ProMode\";\nimport { version } from \"../../../.version\";\n\nexport type Route = {\n name: string;\n path?: string;\n link?: string;\n subMenus?: SubMenu[];\n key: string;\n icon?: () => JSX.Element;\n disabled?: boolean;\n};\n\nexport type SubMenu = Route;\n\nexport const MAX_NUMBER = 5;\n\nexport const MOBILE_MAX_NUMBER = 7;\n\nexport const routes: Route[] = [\n {\n key: \"swap\",\n name: `Swap`,\n path: \"/swap\",\n subMenus: [\n { key: \"simple-mode\", name: `Simple mode`, path: \"/swap\", icon: SimpleModeIcon },\n { key: \"pro-mode\", name: `Pro mode`, path: \"/swap/pro\", icon: ProModeIcon },\n ],\n },\n {\n key: \"liquidity\",\n name: `Liquidity`,\n path: \"/liquidity\",\n },\n {\n key: \"stake_farm\",\n name: `Earn`,\n subMenus: [\n { key: \"farm\", name: `Farm`, path: \"/farm\" },\n { key: \"staking-token\", name: `Staking Pool V2`, path: \"/stake\" },\n ],\n },\n {\n key: \"ck-bridge\",\n name: `ck-Bridge`,\n path: `/ck-bridge`,\n },\n {\n key: \"info\",\n name: `Info`,\n link: INFO_URL,\n },\n {\n key: \"marketplace\",\n name: `NFT`,\n path: \"/marketplace/collections\",\n },\n {\n key: \"/token-claim\",\n name: `Claim`,\n path: \"/token-claim\",\n },\n {\n key: \"sns\",\n name: `SNS(Beta)`,\n path: `/sns/neurons`,\n },\n {\n key: \"voting\",\n name: `Voting`,\n path: `/voting`,\n },\n {\n key: \"console\",\n name: `Console`,\n path: `/console`,\n },\n {\n key: \"followUS\",\n name: `Follow US`,\n subMenus: [\n { key: \"followUS_twitter\", name: `Twitter`, link: \"https://twitter.com/ICPSwap\", icon: TwitterIcon },\n { key: \"followUS_Telegram\", name: `Telegram`, link: \"https://t.me/ICPSwap_Official\", icon: TelegramIcon },\n {\n key: \"followUS_DSCVR\",\n name: `DSCVR`,\n link: \"https://h5aet-waaaa-aaaab-qaamq-cai.raw.ic0.app/p/icpswap\",\n icon: DSCVRIcon,\n },\n { key: \"followUS_Medium\", name: `Medium`, link: \"https://icpswap.medium.com/\", icon: MediumIcon },\n { key: \"followUS_Gitbook\", name: `Gitbook`, link: \"https://iloveics.gitbook.io/icpswap/\", icon: GitbookIcon },\n { key: \"followUS_Github\", name: `Github`, link: \"https://github.com/ICPSwap-Labs\", icon: GithubIcon },\n { key: \"followUS_Discord\", name: `Discord`, link: \"https://discord.gg/UFDTQkBfEB\", icon: DiscordIcon },\n { key: \"followUS_Website\", name: `Website`, link: \"http://icpswap.com/\", icon: WebsiteIcon },\n ],\n },\n // {\n // key: \"feedback\",\n // name: \"Feedback\",\n // link: \"https://forms.gle/E1WAEfemwDBnLmY66\",\n // },\n {\n key: \"wrap\",\n name: \"WICP\",\n path: \"/swap/v2/wrap\",\n },\n {\n key: \"version\",\n name: `Version ${version}`,\n path: \"\",\n disabled: true,\n },\n];\n","export default function SimpleModeIcon() {\n return (\n \n \n \n );\n}\n","export default function ProModeIcon() {\n return (\n \n \n \n );\n}\n","export default function TwitterIcon() {\n return (\n \n \n \n );\n}\n","export default function TelegramIcon() {\n return (\n \n \n \n );\n}\n","export default function DSCVSRIcon() {\n return (\n \n \n \n \n \n \n \n \n \n );\n}\n","export default function MediumIcon() {\n return (\n \n \n \n );\n}\n","export default function GithubIcon() {\n return (\n \n \n \n \n );\n}\n","export default function GithubIcon() {\n return (\n \n \n \n );\n}\n","export default function DiscordIcon() {\n return (\n \n \n \n \n );\n}\n","export default function WebsiteIcon() {\n return (\n \n \n \n \n );\n}\n","import { ReactNode } from \"react\";\n\nimport { useTheme, Typography, BoxProps } from \"../Mui\";\nimport { Flex } from \"../Grid/Flex\";\n\nexport interface MenuItemProps {\n onMenuClick: (value: any) => void;\n active?: boolean;\n label?: ReactNode;\n icon?: ReactNode;\n value: any;\n children?: ReactNode;\n onMouseEnter?: BoxProps[\"onMouseEnter\"];\n onMouseLeave?: BoxProps[\"onMouseLeave\"];\n disabled?: boolean;\n}\n\nexport function MenuItem({\n value,\n active,\n label,\n icon,\n onMenuClick,\n children,\n disabled,\n onMouseEnter,\n onMouseLeave,\n}: MenuItemProps) {\n const theme = useTheme();\n\n return (\n onMenuClick(value)}\n onMouseEnter={onMouseEnter}\n onMouseLeave={onMouseLeave}\n >\n {label ? (\n \n {icon}\n \n {label}\n \n \n ) : null}\n\n {children}\n \n );\n}\n","import { useLocation } from \"react-router-dom\";\nimport { Link } from \"components/index\";\nimport { MenuWrapper, MenuItem } from \"@icpswap/ui\";\n\nimport { Route } from \"./config\";\n\nexport interface SubMenuPopperProps {\n route: Route;\n subMenuKey: string | null;\n onClickAway: () => void;\n anchor: any;\n onMenuClick: (route: Route) => void;\n placement?:\n | \"top-start\"\n | \"top-end\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"right-start\"\n | \"right-end\"\n | \"left-start\"\n | \"left-end\";\n menuWidth?: string;\n}\n\nexport function SubMenuPopper({\n route,\n subMenuKey,\n onClickAway,\n anchor,\n onMenuClick,\n placement,\n menuWidth,\n}: SubMenuPopperProps) {\n const location = useLocation();\n const pathName = location.pathname;\n\n const isActive = (route: Route) => {\n return pathName === route?.path;\n };\n\n return route.subMenus && route.subMenus.length ? (\n \n {(route.subMenus ?? []).map((subRoute) => {\n const Icon = subRoute.icon;\n\n return (\n \n : null}\n value={subRoute}\n onMenuClick={onMenuClick}\n />\n \n );\n })}\n \n ) : null;\n}\n","import { useState } from \"react\";\nimport { Link } from \"components/index\";\nimport { MenuWrapper, MenuItem } from \"@icpswap/ui\";\n\nimport { Route } from \"./config\";\nimport { SubMenuPopper } from \"./SubMenuPopper\";\n\nexport interface ExceedRoutesPopperProps {\n routes: Route[];\n anchor: any;\n open: boolean;\n onMenuClick: (route: Route) => void;\n onClickAway: () => void;\n}\n\nexport function ExceedRoutesPopper({ open, routes, anchor, onMenuClick, onClickAway }: ExceedRoutesPopperProps) {\n const [subMenuOpenKey, setSubMenuOpenKey] = useState(null);\n const [subMenuTarget, setSubMenuTarget] = useState(undefined);\n\n const handleSubMenuMouseEnter = (route: Route, target: any) => {\n if (route.subMenus && route.subMenus.length) {\n setSubMenuOpenKey(route.key);\n setSubMenuTarget(target);\n }\n };\n\n const handleSubMenuMouseLeave = () => {\n setSubMenuOpenKey(null);\n };\n\n const handleSubMenuClose = () => {\n setSubMenuOpenKey(null);\n };\n\n const handleMenuClick = (route: Route) => {\n if (!route.subMenus) {\n handleSubMenuClose();\n onMenuClick(route);\n }\n };\n\n return (\n \n {routes.map((route, index) => (\n \n handleMenuClick(route)}\n onMouseEnter={({ target }) => handleSubMenuMouseEnter(route, target)}\n onMouseLeave={handleSubMenuMouseLeave}\n disabled={route.disabled === true}\n >\n \n \n \n ))}\n \n );\n}\n","import { useRef, useState } from \"react\";\nimport { makeStyles, Box, Grid, Theme } from \"components/Mui\";\nimport { Flex } from \"@icpswap/ui\";\n\nimport { Route, MAX_NUMBER } from \"./config\";\nimport { ExceedRoutesPopper } from \"./ExceedRoutesPopper\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n navItem: {\n height: \"40px\",\n cursor: \"pointer\",\n padding: \"0 16px\",\n \"&:hover\": {\n \"& .MuiTypography-root\": {\n color: \"#FFFFFF\",\n },\n },\n \"&.active\": {\n \"& .MuiTypography-root\": {\n color: \"#FFFFFF\",\n },\n },\n [theme.breakpoints.down(\"md\")]: {\n height: \"36px\",\n padding: \"0 12px\",\n },\n },\n more: {\n padding: \"0 17px\",\n cursor: \"pointer\",\n \"&:hover\": {\n \"& .dot\": {\n background: \"#fff\",\n },\n },\n },\n dot: {\n width: \"5px\",\n height: \"5px\",\n background: theme.colors.darkTextSecondary,\n borderRadius: \"50%\",\n marginRight: \"6px\",\n \"&:last-child\": {\n marginRight: \"0px\",\n },\n },\n };\n});\n\nexport interface ExceedRoutesProps {\n routes: Route[];\n onMenuClick?: (route: Route) => void;\n}\n\nexport function ExceedRoutes({ routes, onMenuClick }: ExceedRoutesProps) {\n const classes = useStyles();\n const ref = useRef(null);\n\n const [open, setOpen] = useState(false);\n\n const handleMouseEnter = () => {\n setOpen(true);\n };\n\n const handleMouseLeave = () => {\n setOpen(false);\n };\n\n const handleClose = () => {\n setOpen(false);\n };\n\n const handleMenuClick = (route: Route) => {\n setOpen(false);\n if (onMenuClick) onMenuClick(route);\n };\n\n return (\n \n \n \n \n \n \n\n index > MAX_NUMBER || index === MAX_NUMBER)}\n />\n \n );\n}\n","import { useState } from \"react\";\nimport { Box, Grid, Typography, useMediaQuery, useTheme } from \"components/Mui\";\nimport { useLocation } from \"react-router-dom\";\nimport { ChevronDown } from \"react-feather\";\nimport { Link } from \"components/index\";\n\nimport { Route, MAX_NUMBER } from \"./config\";\nimport { SubMenuPopper } from \"./SubMenuPopper\";\n\nexport interface RoutesProps {\n routes: Route[];\n onMenuClick?: (route: Route) => void;\n}\n\nexport function Routes({ routes, onMenuClick }: RoutesProps) {\n const location = useLocation();\n const pathName = location.pathname;\n const theme = useTheme();\n\n const matchDownMD = useMediaQuery(theme.breakpoints.down(\"md\"));\n\n const [subMenuOpenKey, setSubMenuOpenKey] = useState(null);\n const [subMenuTarget, setSubMenuTarget] = useState(undefined);\n\n const handleMenuMouseEnter = (route: Route, target: any) => {\n if (route.subMenus && route.subMenus.length) {\n setSubMenuOpenKey(route.key);\n setSubMenuTarget(target);\n }\n };\n\n const handleMenuMouseLeave = () => {\n setSubMenuOpenKey(null);\n };\n\n const handleSubMenuClose = () => {\n setSubMenuOpenKey(null);\n };\n\n function isActive(route: Route) {\n return !!route.path && route.key === pathName.split(\"/\")[1];\n }\n\n const handleRouteClick = (route: Route) => {\n if (!route.subMenus) {\n handleSubMenuClose();\n if (onMenuClick) onMenuClick(route);\n }\n };\n\n return (\n <>\n {routes.map((route, index) =>\n index >= MAX_NUMBER ? null : (\n \n handleRouteClick(route)}\n className={`${isActive(route) ? \"active\" : \"\"}`}\n sx={{\n height: \"40px\",\n cursor: \"pointer\",\n padding: \"0 16px\",\n \"&:hover\": {\n \"& .MuiTypography-root\": {\n color: \"#FFFFFF\",\n },\n },\n \"&.active\": {\n \"& .MuiTypography-root\": {\n color: \"#FFFFFF\",\n },\n },\n [theme.breakpoints.down(\"md\")]: {\n height: \"36px\",\n padding: \"0 12px\",\n },\n }}\n >\n handleMenuMouseEnter(route, target)}\n onMouseLeave={handleMenuMouseLeave}\n >\n \n {route.name}\n {route.subMenus ? : null}\n \n\n \n \n \n \n ),\n )}\n \n );\n}\n","import { Box } from \"components/Mui\";\n\nimport { routes, MAX_NUMBER } from \"./config\";\nimport { ExceedRoutes } from \"./ExceedRoutes\";\nimport { Routes } from \"./Routes\";\n\nexport default function NavBar() {\n return (\n \n \n {routes.length > MAX_NUMBER ? : null}\n \n );\n}\n","var _circle, _path, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgLogo1(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 32,\n height: 32,\n viewBox: \"0 0 32 32\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _circle || (_circle = /*#__PURE__*/React.createElement(\"circle\", {\n cx: 16,\n cy: 16,\n r: 16,\n fill: \"url(#paint0_linear_39278_19113)\"\n })), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n fillRule: \"evenodd\",\n clipRule: \"evenodd\",\n d: \"M20.1773 7.03906C17.6017 7.03906 15.7412 9.09941 15.245 10.5543C14.3745 12.793 14.742 14.5127 15.0658 16.0292L15.0893 16.1397C15.39 17.5501 15.6737 18.8822 15.2674 20.5542C15.2296 20.7831 15.1626 21.0082 15.0681 21.2233C14.6031 22.2895 13.5487 22.9781 12.3822 22.9781C10.7677 22.9781 9.45414 21.6724 9.45414 20.0671C9.45414 18.4612 10.7677 17.1547 12.3822 17.1547C12.817 17.1547 13.2349 17.2479 13.625 17.4311L13.9651 17.5912L13.5414 15.0161L13.4077 14.9892C13.0722 14.9221 12.7272 14.8883 12.3822 14.8883C9.51129 14.8883 7.17578 17.2114 7.17578 20.0671C7.17578 22.923 9.51129 25.246 12.3822 25.246C14.7655 25.246 16.8396 23.6431 17.4229 21.361C18.0127 19.5736 17.737 17.9428 17.3462 16.148L17.3025 15.9483C16.919 14.193 16.616 12.8065 17.5296 10.9757C18.0104 9.96187 19.0496 9.30655 20.1773 9.30655C21.7912 9.30655 23.1043 10.6122 23.1043 12.2175C23.1043 13.8226 21.7912 15.1288 20.1773 15.1288C19.7773 15.1288 19.3886 15.0498 19.0211 14.8933L18.6908 14.753L19.108 17.2888L19.2452 17.3138C19.5502 17.3686 19.8639 17.3967 20.1773 17.3967C23.0476 17.3967 25.3827 15.0732 25.3827 12.2175C25.3827 9.36205 23.0476 7.03906 20.1773 7.03906Z\",\n fill: \"white\"\n })), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"paint0_linear_39278_19113\",\n x1: -0.264463,\n y1: 15.1351,\n x2: 29.2813,\n y2: 14.8475,\n gradientUnits: \"userSpaceOnUse\"\n }, /*#__PURE__*/React.createElement(\"stop\", {\n stopColor: \"#5569DB\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#8572FF\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgLogo1);\nexport default __webpack_public_path__ + \"static/media/logo1.2fb6a8dc89f75f8ba16877a187602346.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _defs;\nfunction _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }\nimport * as React from \"react\";\nfunction SvgArrowDown(_ref, svgRef) {\n let {\n title,\n titleId,\n ...props\n } = _ref;\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n clipPath: \"url(#clip0_39281_19125)\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M18.5303 9.53033C18.8232 9.23744 18.8232 8.76256 18.5303 8.46967C18.2374 8.17678 17.7626 8.17678 17.4697 8.46967L18.5303 9.53033ZM12 15L11.4697 15.5303C11.7626 15.8232 12.2374 15.8232 12.5303 15.5303L12 15ZM6.53033 8.46967C6.23744 8.17678 5.76256 8.17678 5.46967 8.46967C5.17678 8.76256 5.17678 9.23744 5.46967 9.53033L6.53033 8.46967ZM17.4697 8.46967L11.4697 14.4697L12.5303 15.5303L18.5303 9.53033L17.4697 8.46967ZM12.5303 14.4697L6.53033 8.46967L5.46967 9.53033L11.4697 15.5303L12.5303 14.4697Z\",\n fill: \"#8492C4\"\n }))), _defs || (_defs = /*#__PURE__*/React.createElement(\"defs\", null, /*#__PURE__*/React.createElement(\"clipPath\", {\n id: \"clip0_39281_19125\"\n }, /*#__PURE__*/React.createElement(\"rect\", {\n width: 24,\n height: 24,\n fill: \"white\"\n })))));\n}\nconst ForwardRef = /*#__PURE__*/React.forwardRef(SvgArrowDown);\nexport default __webpack_public_path__ + \"static/media/arrow-down.225a9b51561a669be37be87e6b27199c.svg\";\nexport { ForwardRef as ReactComponent };","import { useState } from \"react\";\nimport { Box, Typography, Collapse } from \"components/Mui\";\nimport { ReactComponent as ArrowDownIcon } from \"assets/images/arrow-down.svg\";\nimport { useLocation } from \"react-router-dom\";\n\nimport { Route } from \"../config\";\n\nexport interface RoutesProps {\n routes: Route[];\n onRouteClick: (route: Route) => void;\n}\n\nexport function Routes({ routes, onRouteClick }: RoutesProps) {\n const location = useLocation();\n const pathName = location.pathname;\n const [collapseKey, setCollapseKey] = useState(undefined);\n\n const handleRouteClick = (route: Route) => {\n if (route.subMenus) {\n if (collapseKey === route.key) {\n setCollapseKey(undefined);\n } else {\n setCollapseKey(route.key);\n }\n\n return;\n }\n\n onRouteClick(route);\n };\n\n const isActive = (route: Route) => {\n return pathName === route?.path;\n };\n\n return (\n <>\n {routes.map((route, index) => {\n return (\n handleRouteClick(route)}\n sx={{\n padding: \"24px 16px\",\n borderBottom: \"1px solid #29314F\",\n \"&:last-type-of\": {\n borderBottom: \"none\",\n },\n }}\n >\n \n \n {route.name}\n \n\n {route.subMenus ? : null}\n \n\n \n {route.subMenus && route.subMenus.length ? (\n \n {(route.subMenus ?? []).map((subRoute) => {\n const Icon = subRoute.icon;\n\n return (\n handleRouteClick(subRoute)}\n sx={{\n color: isActive(subRoute) ? \"text.primary\" : \"text.secondary\",\n }}\n >\n \n {Icon ? : null}\n \n {subRoute.name}\n \n \n \n );\n })}\n \n ) : null}\n \n \n );\n })}\n \n );\n}\n","import { useMemo, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { mockALinkAndOpen } from \"@icpswap/utils\";\nimport { XCircle } from \"react-feather\";\nimport { ReactComponent as Logo } from \"assets/images/logo1.svg\";\nimport { Box, Collapse } from \"components/Mui\";\nimport { ReactComponent as ArrowDownIcon } from \"assets/images/arrow-down.svg\";\n\nimport { Routes } from \"./Routes\";\nimport { routes, Route, MOBILE_MAX_NUMBER } from \"../config\";\n\nexport interface MobileNavbarProps {\n onClose?: () => void;\n}\n\nexport default function MobileNavbar({ onClose }: MobileNavbarProps) {\n const history = useHistory();\n const [collapseKey, setCollapseKey] = useState(undefined);\n const [exceedOpen, setExceedOpen] = useState(false);\n\n const handleRouteClick = (route: Route) => {\n if (route.subMenus) {\n if (collapseKey === route.key) {\n setCollapseKey(undefined);\n } else {\n setCollapseKey(route.key);\n }\n\n return;\n }\n\n if (!route.path && !route.link) return;\n\n if (route.link) {\n mockALinkAndOpen(route.link ?? \"\", \"nav-bar-menu\");\n } else {\n history.push(route.path ?? \"\");\n }\n\n if (onClose) onClose();\n };\n\n const noExceedRoutes = useMemo(() => {\n return routes.filter((route, index) => index < MOBILE_MAX_NUMBER);\n }, [routes, MOBILE_MAX_NUMBER]);\n\n const exceedRoutes = useMemo(() => {\n return routes.filter((route, index) => index >= MOBILE_MAX_NUMBER);\n }, [routes, MOBILE_MAX_NUMBER]);\n\n return (\n <>\n \n \n \n \n\n {/* \n \n */}\n\n \n \n\n {exceedRoutes.length > 0 ? (\n <>\n setExceedOpen(!exceedOpen)}\n >\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n ) : null}\n \n \n );\n}\n","import { useState } from \"react\";\nimport { Box, useMediaQuery, Drawer } from \"components/Mui\";\nimport { Flex } from \"@icpswap/ui\";\nimport { createTheme } from \"@mui/material/styles\";\nimport DensityMediumIcon from \"@mui/icons-material/DensityMedium\";\n\nimport LogoSection from \"../../LogoSection\";\nimport ProfileSection from \"./ProfileSection\";\nimport Navbar from \"../Navbar\";\nimport MobileNavbar from \"../Navbar/mobile/Navbar\";\n\nexport const customizeTheme = createTheme({\n breakpoints: {\n values: {\n md: 960,\n },\n },\n});\n\nexport const customizeBreakPoints = customizeTheme.breakpoints;\n\nexport default function Header() {\n const [drawerOpen, setDrawerOpen] = useState(false);\n\n const matchDownMD = useMediaQuery(customizeBreakPoints.down(\"md\"));\n\n const handleToggleDrawer = () => {\n setDrawerOpen(true);\n };\n\n return (\n <>\n \n \n {matchDownMD ? (\n \n ) : (\n <>\n \n \n \n \n \n )}\n \n\n \n \n \n\n setDrawerOpen(false)}\n sx={{\n width: \"100%\",\n \"& .MuiPaper-root\": {\n width: \"100%\",\n },\n }}\n >\n setDrawerOpen(false)} />\n \n \n \n );\n}\n","import { Grid, Box, Typography } from \"@mui/material\";\n\nfunction CloseIcon() {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport interface GlobalTipsProps {\n onClose: () => void;\n}\n\nexport function SnsTips({ onClose }: GlobalTipsProps) {\n return (\n \n \n \n The SNS function is deployed based on the NNS frontend and is currently in public testing.\n \n \n\n \n \n \n \n );\n}\n","import React, { useState, useMemo } from \"react\";\nimport { makeStyles, useTheme, Box, Theme } from \"components/Mui\";\nimport { Flex, GlobalTips } from \"@icpswap/ui\";\nimport { useLocation } from \"react-router-dom\";\nimport Background from \"components/Background\";\n\nimport V3Event from \"./V3Event\";\nimport Header from \"./Header\";\nimport { SnsTips } from \"./SnsTips\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n content: {\n background: \"transparent\",\n width: \"100%\",\n minHeight: \"calc(100vh - 64px)\",\n flexGrow: 1,\n padding: \"0 16px\",\n borderRadius: \"8px\",\n borderBottomLeftRadius: 0,\n borderBottomRightRadius: 0,\n \"&.small-padding\": {\n padding: \"0 12px\",\n },\n transition: theme.transitions.create(\"margin\", {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n [theme.breakpoints.down(\"md\")]: {\n padding: \"0 16px\",\n minHeight: \"calc(100vh - 60px)\",\n },\n [theme.breakpoints.down(\"sm\")]: {\n padding: \"0 12px\",\n backgroundColor: \"transparent\",\n },\n },\n mainContent: {\n paddingTop: \"64px\",\n \"&.pro\": {\n background: theme.palette.background.level1,\n },\n [theme.breakpoints.down(\"md\")]: {\n paddingTop: \"60px\",\n },\n },\n };\n});\n\nconst SMALL_PADDING_PATH = [\"/swap/pro\"];\n\nexport function MainLayout({ children }: { children: React.ReactNode }) {\n const theme = useTheme() as Theme;\n const classes = useStyles();\n const location = useLocation();\n\n const [show, setShow] = useState(true);\n const [globalTipShow, setGlobalTipShow] = useState(false);\n const [snsTipShow, setSnsTipShow] = useState(true);\n\n const isSmallPadding = useMemo(() => {\n return SMALL_PADDING_PATH.includes(location.pathname);\n }, [location]);\n\n return (\n <>\n \n
\n \n\n \n {show && location.pathname.includes(\"/swap/v2\") ? setShow(false)} /> : null}\n {globalTipShow ? setGlobalTipShow(false)} /> : null}\n {snsTipShow && location.pathname.includes(\"sns\") ? setSnsTipShow(false)} /> : null}\n\n
{children}
\n
\n\n \n \n );\n}\n","import React from \"react\";\nimport { MainLayout } from \"./MainLayout\";\n\nexport interface LayoutProps {\n children: React.ReactNode;\n}\n\nexport function Layout({ children }: LayoutProps) {\n return {children};\n}\n","import React, { useEffect } from \"react\";\nimport * as Sentry from \"@sentry/react\";\nimport { Grid, Box, Typography } from \"@mui/material\";\nimport ErrorImage from \"assets/images/Error\";\nimport { Layout } from \"components/Layout/index\";\nimport { Trans } from \"@lingui/macro\";\nimport copy from \"copy-to-clipboard\";\n\ninterface FallbackProps {\n error: Error;\n eventId: string | number | null;\n}\n\nfunction Fallback({ error, eventId }: FallbackProps) {\n const handleCopyError = () => {\n copy(`${error?.toString() ?? \"\"}_${eventId}`);\n };\n\n useEffect(() => {\n if (error) {\n const errorString = error.toString();\n if (/Loading chunk *.{1,} failed./.test(errorString) || /Unexpected token '<'/.test(errorString)) {\n window.location.reload();\n }\n }\n }, [error]);\n\n return (\n \n \n \n \n \n \n Oops, you've encountered an error\n \n\n \n\n \n \n \n {error.toString()}\n \n\n \n {eventId}\n \n \n \n \n Copy\n \n \n \n \n \n \n \n \n );\n}\n\nexport interface ErrorBoundaryProps {\n children: React.ReactNode;\n}\n\nexport default function ErrorBoundary({ children }: ErrorBoundaryProps) {\n return (\n // @ts-ignore\n }>\n {children}\n \n );\n}\n","import { useEffect, useState } from \"react\";\nimport { Box, Typography, useTheme, makeStyles } from \"components/Mui\";\nimport { t } from \"@lingui/macro\";\nimport { useErrorTip } from \"hooks/useTips\";\nimport { Connector as ConnectorType } from \"constants/wallet\";\nimport { WalletConnector } from \"utils/connector\";\nimport { useWalletConnectorManager } from \"store/auth/hooks\";\nimport { Flex } from \"@icpswap/ui\";\n\nconst useStyles = makeStyles(() => {\n return {\n loadingWrapper: {\n width: \"40px\",\n height: \"40px\",\n overflow: \"hidden\",\n \"&.loading\": {\n animation: `$loading 1000ms`,\n animationIterationCount: \"infinite\",\n },\n },\n \"@keyframes loading\": {\n \"0%\": {\n transform: \"rotate(0deg)\",\n },\n \"100%\": {\n transform: \"rotate(360deg)\",\n },\n },\n };\n});\n\nexport interface ConnectorProps {\n label: string;\n value: ConnectorType;\n logo: string;\n disabled?: boolean;\n}\n\nexport function ConnectorComponent({ label, value, logo, disabled }: ConnectorProps) {\n const [, walletConnectorManager] = useWalletConnectorManager();\n\n const theme = useTheme();\n const classes = useStyles();\n const [openErrorTip] = useErrorTip();\n\n const [loading, setLoading] = useState(false);\n const [selfConnector, setSelfConnector] = useState(null);\n\n useEffect(() => {\n async function call() {\n const selfConnector = new WalletConnector();\n await selfConnector.init(value);\n setSelfConnector(selfConnector);\n }\n\n call();\n }, []);\n\n const handleConnect = async () => {\n if (disabled) return;\n\n try {\n if (loading || !value || !selfConnector) return;\n\n if ((!window.ic || !window.ic?.infinityWallet) && value === ConnectorType.INFINITY) {\n openErrorTip(t`Please install the Bitfinity wallet extension!`);\n return;\n }\n\n if ((!window.ic || !window.ic?.plug) && value === ConnectorType.PLUG) {\n openErrorTip(t`Please install the plug wallet extension!`);\n return;\n }\n\n setLoading(true);\n\n const connectSuccessful = await selfConnector.connect();\n\n if (!connectSuccessful) {\n openErrorTip(t`An unknown error occurred. Please try connect again.`);\n }\n\n walletConnectorManager(false);\n setLoading(false);\n } catch (error: any) {\n console.error(error);\n setLoading(false);\n\n openErrorTip(`Failed to connect to ${label}: ${error}`);\n }\n };\n\n return (\n \n \n \n {label}\n \n \n\n \n \"\"\n \n \n );\n}\n","import { Box, makeStyles, Theme, Typography } from \"components/Mui\";\nimport Modal from \"components/modal\";\nimport { Trans, t } from \"@lingui/macro\";\nimport { Flex, TextButton } from \"components/index\";\nimport { Connector } from \"constants/wallet\";\nimport { useWalletConnectorManager } from \"store/auth/hooks\";\n\nimport { ConnectorComponent } from \"./connector\";\n\nconst useStyles = makeStyles((theme: Theme) => {\n return {\n wrapper: {\n position: \"relative\",\n borderRadius: \"12px\",\n maxWidth: \"100%\",\n },\n walletBox: {\n display: \"grid\",\n gridTemplateColumns: \"1fr 1fr\",\n gap: \"16px 16px\",\n [theme.breakpoints.down(\"md\")]: {\n gridTemplateColumns: \"1fr \",\n gap: \"16px 0\",\n },\n },\n walletWrapper: {\n cursor: \"pointer\",\n padding: \"12px 16px\",\n background: \"rgba(255, 255, 255, 0.08)\",\n borderRadius: \"8px\",\n [theme.breakpoints.down(\"md\")]: {\n padding: \"8px 14px\",\n },\n },\n walletComingSoon: {\n height: \"80px\",\n background: \"rgba(17, 25, 54, 0.4)\",\n border: \"1px solid #29314F\",\n borderRadius: \"8px\",\n [theme.breakpoints.down(\"md\")]: {\n height: \"64px\",\n },\n },\n };\n});\n\ntype Wallet = {\n label: string;\n value: Connector;\n logo: any;\n tips?: string;\n disabled?: boolean;\n};\n\nexport default function WalletConnector() {\n const [open, walletConnectorManager] = useWalletConnectorManager();\n\n const classes = useStyles();\n\n const Wallets: Wallet[] = [\n {\n label: \"Internet Identity\",\n value: Connector.IC,\n logo: \"/images/connect/InternetIdentity.svg\",\n },\n { label: \"Plug\", value: Connector.PLUG, logo: \"/images/connect/Plug.svg\" },\n {\n label: \"Stoic Wallet\",\n value: Connector.STOIC,\n logo: \"/images/connect/stoic.svg\",\n },\n {\n label: \"ICPSwap Wallet\",\n value: Connector.ICPSwap,\n logo: \"/images/connect/icpswap.svg\",\n },\n { label: \"NFID\", value: Connector.NFID, logo: \"/images/connect/NFID.svg\" },\n {\n label: \"Bitfinity Wallet\",\n value: Connector.INFINITY,\n logo: \"/images/connect/Infinity.svg\",\n },\n {\n label: \"AstroX ME\",\n value: Connector.ME,\n logo: \"/images/connect/AstroX.svg\",\n },\n {\n label: \"MetaMask\",\n value: Connector.Metamask,\n logo: \"/images/connect/metamask.svg\",\n },\n ];\n\n return (\n walletConnectorManager(false)} title={t`Connect a wallet`}>\n \n \n \n \n By connecting a wallet, you agree to ICPSwap’s{\" \"}\n \n Terms of Service\n {\" \"}\n and acknowledge that you have read and understand the{\" \"}\n \n ICPSwap Disclaimer\n \n .\n \n \n\n \n \n {Wallets.map((wallet) => (\n \n ))}\n \n \n \n \n \n );\n}\n","import { makeStyles } from \"@mui/styles\";\nimport LinearProgress from \"@mui/material/LinearProgress\";\nimport { Theme } from \"@mui/material/styles\";\n\nconst useStyles = makeStyles((theme: Theme) => ({\n root: {\n position: \"fixed\",\n top: 0,\n left: 0,\n zIndex: 1301,\n width: \"100%\",\n \"& > * + *\": {\n marginTop: theme.spacing(2),\n },\n },\n}));\n\nexport default function LinearLoader() {\n const classes = useStyles();\n\n return (\n
\n \n
\n );\n}\n","import { getPaginationAllData, getClaimEvents } from \"@icpswap/hooks\";\n\nexport async function getAllClaimEvents() {\n const call = async (offset: number, limit: number) => {\n return await getClaimEvents(offset, limit);\n };\n\n return getPaginationAllData(call, 1000);\n}\n","import { useEffect, useState, useMemo } from \"react\";\nimport { XTC, TOKEN_STANDARD, CAT, MOD, BoomDAO } from \"constants/tokens\";\nimport { ckSepoliaUSDC, ckSepoliaETH, ICP, WRAPPED_ICP } from \"@icpswap/tokens\";\nimport { network, NETWORK } from \"constants/server\";\nimport { useUpdateTokenStandard, useTokenStandards } from \"store/token/cache/hooks\";\nimport { useGlobalTokenList } from \"store/global/hooks\";\nimport { usePoolCanisterIdManager } from \"store/swap/hooks\";\nimport { getSwapPools } from \"@icpswap/hooks\";\nimport { registerTokens } from \"@icpswap/token-adapter\";\nimport { getAllTokenPools } from \"hooks/staking-token/index\";\nimport { getAllClaimEvents } from \"hooks/token-claim\";\nimport { updateCanisters } from \"store/allCanisters\";\nimport type { SwapPoolData } from \"@icpswap/types\";\n\nexport const Tokens = [XTC, CAT, MOD, BoomDAO, ckSepoliaUSDC, ckSepoliaETH];\n\nexport interface UseInitialTokenStandardArgs {\n fetchGlobalTokensLoading: boolean;\n}\n\nexport function useInitialTokenStandard({ fetchGlobalTokensLoading }: UseInitialTokenStandardArgs) {\n const [tokensLoading, setTokensLoading] = useState(true);\n const [updated, setUpdated] = useState(false);\n\n const [AllPools, setAllPools] = useState(undefined);\n\n const updateTokenStandard = useUpdateTokenStandard();\n\n const globalTokenList = useGlobalTokenList();\n\n const [, updatePoolCanisterId] = usePoolCanisterIdManager();\n\n useEffect(() => {\n if (network === NETWORK.IC) {\n Promise.all([\n getSwapPools(),\n getAllTokenPools().catch(() => undefined),\n getAllClaimEvents().catch(() => undefined),\n ]).then(([allSwapPools, allTokenPools, allClaimEvents]) => {\n const allTokenStandards: { canisterId: string; standard: TOKEN_STANDARD }[] = [];\n\n allTokenPools?.forEach((pool) => {\n allTokenStandards.push({\n canisterId: pool.stakingToken.address,\n standard: pool.stakingToken.standard as TOKEN_STANDARD,\n });\n\n allTokenStandards.push({\n canisterId: pool.rewardToken.address,\n standard: pool.rewardToken.standard as TOKEN_STANDARD,\n });\n });\n\n allClaimEvents?.forEach((event) => {\n allTokenStandards.push({\n canisterId: event.tokenCid,\n standard: event.tokenStandard as TOKEN_STANDARD,\n });\n });\n\n allSwapPools?.forEach((pool) => {\n allTokenStandards.push({\n canisterId: pool.token0.address,\n standard: pool.token0.standard as TOKEN_STANDARD,\n });\n\n allTokenStandards.push({\n canisterId: pool.token1.address,\n standard: pool.token1.standard as TOKEN_STANDARD,\n });\n\n setAllPools(allSwapPools);\n\n updatePoolCanisterId({ key: pool.key, id: pool.canisterId.toString() });\n });\n\n registerTokens(allTokenStandards);\n updateTokenStandard(allTokenStandards);\n\n updateCanisters(\n [\n ...(allSwapPools?.map((ele) => [ele.canisterId.toString(), ele.token0.address, ele.token1.address]) ?? []),\n ...(allTokenPools?.map((ele) => [\n ele.canisterId.toString(),\n ele.rewardToken.address,\n ele.stakingToken.address,\n ]) ?? []),\n ].reduce((prev, curr) => {\n return prev.concat(curr);\n }, [] as string[]),\n );\n\n setUpdated(true);\n });\n } else {\n setUpdated(true);\n }\n }, []);\n\n useEffect(() => {\n if (globalTokenList && globalTokenList.length > 0) {\n const allTokenStandards = globalTokenList.map((token) => {\n return {\n canisterId: token.canisterId,\n standard: token.standard as TOKEN_STANDARD,\n };\n });\n\n updateTokenStandard(allTokenStandards);\n\n setTokensLoading(false);\n\n updateCanisters(globalTokenList.map((ele) => ele.canisterId));\n } else if (!fetchGlobalTokensLoading) {\n setTokensLoading(false);\n }\n }, [globalTokenList, fetchGlobalTokensLoading]);\n\n useEffect(() => {\n if (network === NETWORK.IC) {\n Tokens.forEach((token) => {\n updateTokenStandard([\n {\n canisterId: token.address,\n standard: token.standard as TOKEN_STANDARD,\n },\n ]);\n });\n\n updateCanisters(Tokens.map((ele) => ele.address));\n }\n\n registerTokens([\n { canisterId: WRAPPED_ICP.address, standard: WRAPPED_ICP.standard as TOKEN_STANDARD },\n { canisterId: ICP.address, standard: ICP.standard as TOKEN_STANDARD },\n ]);\n }, []);\n\n // All token's standards, includes the local cached tokens\n const tokenStandards = useTokenStandards();\n useEffect(() => {\n if (tokenStandards) {\n const allStandards = Object.keys(tokenStandards).map((key) => ({\n canisterId: key,\n standard: tokenStandards[key],\n }));\n\n registerTokens(allStandards);\n }\n }, [tokenStandards]);\n\n return useMemo(() => {\n return {\n loading: fetchGlobalTokensLoading || tokensLoading || !updated,\n AllPools,\n };\n }, [tokensLoading, fetchGlobalTokensLoading, updated, AllPools]);\n}\n","import { CircularProgress } from \"@mui/material\";\n\nexport default function GreenCircleLoading() {\n return ;\n}\n","export function Arrow() {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport function SuccessIcon() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nexport function ErrorIcon() {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { useState, useEffect } from \"react\";\nimport { Box, Typography, Grid } from \"@mui/material\";\nimport { useTheme } from \"@mui/styles\";\nimport { Modal } from \"components/index\";\nimport { Theme } from \"@mui/material/styles\";\nimport GreenCircleLoading from \"components/Loading/GreenCircle\";\nimport { Trans } from \"@lingui/macro\";\nimport { StepContents, StepDetailsProps } from \"types/step\";\n\nimport { Arrow, SuccessIcon, ErrorIcon } from \"./icons\";\n\ninterface ActionIconProps {\n activeStep: number;\n ele: StepContents;\n errorStep: number | undefined;\n showErrorHint: boolean;\n}\n\nfunction ActionIcon({ ele, activeStep, showErrorHint }: ActionIconProps) {\n const theme = useTheme() as Theme;\n\n return (\n \n \n {showErrorHint ? (\n \n \n \n ) : activeStep < ele.step ? (\n \n ) : activeStep === ele.step ? (\n \n ) : ele.step < activeStep ? (\n \n \n \n ) : null}\n \n \n );\n}\n\nexport default function _StepDetails({\n title,\n onClose,\n open,\n content,\n activeStep,\n errorStep,\n description,\n}: StepDetailsProps) {\n const [openedSteps, setOpenedSteps] = useState([]);\n\n const theme = useTheme() as Theme;\n\n const isStepOpened = (step: number) => {\n return !!openedSteps.includes(step) || step === activeStep;\n };\n\n const handleStepClick = (step: number) => {\n const index = openedSteps.indexOf(step);\n\n if (index === -1) {\n setOpenedSteps([...openedSteps, step]);\n } else {\n const newOpenedSteps = [...openedSteps];\n newOpenedSteps.splice(index, 1);\n setOpenedSteps([...newOpenedSteps]);\n }\n };\n\n useEffect(() => {\n if (activeStep === content.length) {\n if (onClose) onClose();\n }\n }, [content, activeStep]);\n\n const showErrorHint = (ele: StepContents) => {\n return errorStep === ele.step || !!ele.skipError;\n };\n\n return (\n \n {description ? {description} : null}\n\n \n\n \n {content.map((ele, index) => {\n return (\n \n \n \n {\n if (ele.children) handleStepClick(ele.step);\n }}\n >\n \n {ele.step + 1}. {ele.title}\n \n\n {ele.children ? (\n \n \n \n ) : null}\n \n\n {isStepOpened(ele.step) && !!ele.children ? (\n \n \n {ele.children.map((ele1, index) => (\n \n {ele1.label}\n {ele1.value}\n \n ))}\n {ele.skipError ? (\n \n \n Error\n \n \n {ele.skipError}\n \n \n ) : null}\n {!!ele.errorMessage && errorStep === ele.step ? (\n \n \n Error\n \n \n {ele.errorMessage}\n \n \n ) : null}\n \n\n {errorStep === ele.step && ele.errorActions && ele.errorActions.length > 0 ? (\n \n {ele.errorActions.map((action, index) => (\n \n \n {action}\n \n \n ))}\n \n ) : null}\n \n ) : null}\n \n \n );\n })}\n \n \n );\n}\n","import StepDetails from \"components/Steps/Details\";\nimport { useOpenedSteps, useStepDetails } from \"store/steps/hooks\";\n\nfunction StepItem({ step }: { step: string }) {\n const { activeStep, errorStep, content, onClose, title, description } = useStepDetails(step);\n\n return (\n \n );\n}\n\nexport default function GlobalSteps() {\n const openedSteps = useOpenedSteps();\n\n return (\n <>\n {openedSteps.map((step) => (\n \n ))}\n \n );\n}\n","import { useErrorTip } from \"hooks/useTips\";\nimport { actor, ActorError } from \"@icpswap/actor\";\nimport { useEffect } from \"react\";\nimport { t } from \"@lingui/macro\";\n\nconst INTERVAL = 30; // 30 seconds\n\nconst timeOfMessages: { [message: string]: number } = {};\n\nfunction isNewMessage(message: string) {\n const last_time = timeOfMessages[message];\n\n const now = new Date().getTime();\n\n if (!last_time) {\n timeOfMessages[message] = now;\n return true;\n }\n\n if (now - last_time > INTERVAL * 1000) {\n timeOfMessages[message] = now;\n return true;\n }\n\n return false;\n}\n\nexport function isWithoutCyclesError(message: string) {\n return (\n message.includes(\"Please top up the canister with cycles and try again\") ||\n message.includes(\"is out of cycles\") ||\n message.includes(\"could not perform remote call\")\n );\n}\n\nexport function isOutOfTimeRange(message: string) {\n return message.includes(\"Specified ingress_expiry not within expected range: Minimum allowed expiry\");\n}\n\nexport function useHandleActorError() {\n const [open] = useErrorTip();\n\n useEffect(() => {\n actor.onError((error: ActorError) => {\n if (isOutOfTimeRange(error.message)) {\n if (isNewMessage(\"Specified ingress_expiry not within expected range\")) {\n open(t`Specified ingress_expiry not within expected range. Please reset your time on your device.`);\n }\n }\n });\n }, []);\n}\n","import { actor, BeforeSubmitArgs, Connector } from \"@icpswap/actor\";\nimport { useEffect } from \"react\";\nimport store from \"store/index\";\nimport { t } from \"@lingui/macro\";\n\nasync function isCurrentAccount() {\n const {principal} = store.getState().auth;\n\n if (window.ic && window.ic.plug && !!principal) {\n const plugPrincipal = await window.ic.plug.getPrincipal();\n return plugPrincipal.toString() === principal;\n }\n\n return false;\n}\n\nexport function useActorSubmit() {\n useEffect(() => {\n actor.onSubmit(async (args: BeforeSubmitArgs) => {\n if (!!args.identity && store.getState().auth.walletType === Connector.PLUG) {\n if (!(await isCurrentAccount())) {\n return {\n success: false,\n message: t`There was an error when tried to interact with Plug. Please reconnect the plug.`,\n };\n }\n }\n\n return { success: true, message: \"\" };\n });\n }, []);\n}\n","import { useHandleActorError } from \"hooks/useActorError\";\nimport { useActorSubmit } from \"hooks/useActorSubmit\";\nimport React from \"react\";\n\nexport default function Actor({ children }: { children: React.ReactNode }) {\n useHandleActorError();\n useActorSubmit();\n\n return <>{children};\n}\n","/* eslint-disable lines-between-class-members */\n/* eslint-disable no-param-reassign */\n\nfunction wait(ms: number): Promise {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n\nfunction waitRandom(min: number, max: number): Promise {\n return wait(min + Math.round(Math.random() * Math.max(0, max - min)));\n}\n\n/** Thrown if the function is canceled before resolving. */\nexport class CanceledError extends Error {\n name = \"CanceledError\";\n message = \"Retryable was canceled\";\n}\n\n/** May be thrown to force a retry. */\nexport class RetryableError extends Error {\n name = \"RetryableError\";\n}\n\nexport interface RetryOptions {\n n: number;\n minWait: number;\n maxWait: number;\n}\n\n/**\n * Retries a function until its returned promise successfully resolves, up to n times.\n * @param fn function to retry\n * @param n how many times to retry\n * @param minWait min wait between retries in ms\n * @param maxWait max wait between retries in ms\n */\nexport function retry(\n fn: () => Promise,\n { n, minWait, maxWait }: RetryOptions,\n): { promise: Promise; cancel: () => void } {\n let completed = false;\n let rejectCancelled: (error: Error) => void;\n // eslint-disable-next-line no-async-promise-executor\n const promise = new Promise(async (resolve, reject) => {\n rejectCancelled = reject;\n // eslint-disable-next-line no-constant-condition\n while (true) {\n let result: T;\n try {\n result = await fn();\n if (!completed) {\n resolve(result);\n completed = true;\n }\n break;\n } catch (error) {\n if (completed) {\n break;\n }\n if (n <= 0 || !(error instanceof RetryableError)) {\n reject(error);\n completed = true;\n break;\n }\n n--;\n }\n await waitRandom(minWait, maxWait);\n }\n });\n return {\n promise,\n cancel: () => {\n if (completed) return;\n completed = true;\n rejectCancelled(new CanceledError());\n },\n };\n}\n","import { TransactionReceipt } from \"@ethersproject/abstract-provider\";\nimport { ChainId } from \"@icpswap/constants\";\nimport { useWeb3React } from \"@web3-react/core\";\nimport { useBlockNumber, useCurrentBlockTimestamp } from \"hooks/web3/index\";\n// import { useFastForwardBlockNumber } from \"lib/hooks/useBlockNumber\";\nimport ms from \"ms\";\nimport { useCallback, useEffect } from \"react\";\nimport { useTransactionRemover } from \"store/transactions/hooks\";\nimport { TransactionDetails } from \"store/transactions/types\";\n\nimport { CanceledError, retry, RetryableError, RetryOptions } from \"./retry\";\n\ninterface Transaction {\n addedTime: number;\n receipt?: unknown;\n lastCheckedBlockNumber?: number;\n}\n\nexport function shouldCheck(lastBlockNumber: number, tx: Transaction): boolean {\n if (tx.receipt) return false;\n if (!tx.lastCheckedBlockNumber) return true;\n const blocksSinceCheck = lastBlockNumber - tx.lastCheckedBlockNumber;\n if (blocksSinceCheck < 1) return false;\n const minutesPending = (new Date().getTime() - tx.addedTime) / ms(`1m`);\n\n if (minutesPending > 60) {\n // every 10 blocks if pending longer than an hour\n return blocksSinceCheck > 9;\n }\n\n if (minutesPending > 5) {\n // every 3 blocks if pending longer than 5 minutes\n return blocksSinceCheck > 2;\n }\n\n return true;\n}\n\nconst RETRY_OPTIONS_BY_CHAIN_ID: { [chainId: number]: RetryOptions } = {\n [ChainId.ARBITRUM_ONE]: { n: 10, minWait: 250, maxWait: 1000 },\n [ChainId.ARBITRUM_GOERLI]: { n: 10, minWait: 250, maxWait: 1000 },\n [ChainId.OPTIMISM]: { n: 10, minWait: 250, maxWait: 1000 },\n [ChainId.OPTIMISM_GOERLI]: { n: 10, minWait: 250, maxWait: 1000 },\n [ChainId.BASE]: { n: 10, minWait: 250, maxWait: 1000 },\n};\nconst DEFAULT_RETRY_OPTIONS: RetryOptions = { n: 1, minWait: 0, maxWait: 0 };\n\ninterface UpdaterProps {\n pendingTransactions: { [hash: string]: TransactionDetails };\n onCheck: (tx: { chainId: number; hash: string; blockNumber: number }) => void;\n onReceipt: (tx: { chainId: number; hash: string; receipt: TransactionReceipt }) => void;\n}\n\nexport default function Updater({ pendingTransactions, onCheck, onReceipt }: UpdaterProps): null {\n const { account, chainId, provider } = useWeb3React();\n\n const lastBlockNumber = useBlockNumber();\n // const fastForwardBlockNumber = useFastForwardBlockNumber();\n const removeTransaction = useTransactionRemover();\n const blockTimestamp = useCurrentBlockTimestamp();\n\n const getReceipt = useCallback(\n (hash: string) => {\n if (!provider || !chainId) throw new Error(\"No provider or chainId\");\n const retryOptions = RETRY_OPTIONS_BY_CHAIN_ID[chainId] ?? DEFAULT_RETRY_OPTIONS;\n return retry(\n () =>\n provider.getTransactionReceipt(hash).then(async (receipt) => {\n if (receipt === null) {\n if (account) {\n const tx = pendingTransactions[hash];\n // Remove transactions past their deadline or - if there is no deadline - older than 6 hours.\n if (tx.deadline) {\n // Deadlines are expressed as seconds since epoch, as they are used on-chain.\n if (blockTimestamp && tx.deadline < blockTimestamp.toNumber()) {\n removeTransaction(hash);\n }\n } else if (tx.addedTime + ms(`6h`) < Date.now()) {\n removeTransaction(hash);\n }\n }\n throw new RetryableError();\n }\n return receipt;\n }),\n retryOptions,\n );\n },\n [account, blockTimestamp, chainId, pendingTransactions, provider, removeTransaction],\n );\n\n useEffect(() => {\n if (!chainId || !provider || !lastBlockNumber) return;\n\n const cancels = Object.keys(pendingTransactions)\n .filter((hash) => shouldCheck(lastBlockNumber, pendingTransactions[hash]))\n .map((hash) => {\n const { promise, cancel } = getReceipt(hash);\n promise\n .then((receipt) => {\n // fastForwardBlockNumber(receipt.blockNumber);\n onReceipt({ chainId, hash, receipt });\n })\n .catch((error) => {\n if (error instanceof CanceledError) return;\n onCheck({ chainId, hash, blockNumber: lastBlockNumber });\n });\n return cancel;\n });\n\n return () => {\n cancels.forEach((cancel) => cancel());\n };\n }, [chainId, provider, lastBlockNumber, getReceipt, onReceipt, onCheck, pendingTransactions]);\n\n return null;\n}\n","/* eslint-disable no-param-reassign */\nimport { TransactionReceipt } from \"@ethersproject/abstract-provider\";\nimport { useWeb3React } from \"@web3-react/core\";\nimport LibUpdater from \"hooks/transactions/updater\";\nimport { useCallback, useMemo } from \"react\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\n\nimport { isPendingTx } from \"./hooks\";\nimport { checkedTransaction, finalizeTransaction } from \"./reducer\";\nimport { SerializableTransactionReceipt, TransactionDetails } from \"./types\";\n\nexport function toSerializableReceipt(receipt: TransactionReceipt): SerializableTransactionReceipt {\n return {\n blockHash: receipt.blockHash,\n blockNumber: receipt.blockNumber,\n contractAddress: receipt.contractAddress,\n from: receipt.from,\n status: receipt.status,\n to: receipt.to,\n transactionHash: receipt.transactionHash,\n transactionIndex: receipt.transactionIndex,\n };\n}\n\nexport default function Updater() {\n // const analyticsContext = useTrace();\n const { chainId } = useWeb3React();\n\n // const addPopup = useAddPopup();\n\n // speed up popup dismissal time if on L2\n // const isL2 = Boolean(chainId && L2_CHAIN_IDS.includes(chainId));\n const transactions = useAppSelector((state) => state.transactions);\n const pendingTransactions = useMemo(() => {\n if (!chainId || !transactions[chainId]) return {};\n return Object.values(transactions[chainId]).reduce(\n (acc, tx) => {\n if (isPendingTx(tx)) acc[tx.hash] = tx;\n return acc;\n },\n {} as Record,\n );\n }, [chainId, transactions]);\n\n const dispatch = useAppDispatch();\n const onCheck = useCallback(\n ({ chainId, hash, blockNumber }: { chainId: number; hash: string; blockNumber: number }) =>\n dispatch(checkedTransaction({ chainId, hash, blockNumber })),\n [dispatch],\n );\n const onReceipt = useCallback(\n ({ chainId, hash, receipt }: { chainId: number; hash: string; receipt: TransactionReceipt }) => {\n dispatch(\n finalizeTransaction({\n chainId,\n hash,\n receipt: toSerializableReceipt(receipt),\n }),\n );\n\n // if (pendingTransactions[hash] && pendingTransactions[hash].info?.type === TransactionType.SWAP) {\n // logSwapSuccess(hash, chainId, analyticsContext);\n // }\n\n // addPopup(\n // {\n // type: PopupType.Transaction,\n // hash,\n // },\n // hash,\n // isL2 ? L2_TXN_DISMISS_MS : DEFAULT_TXN_DISMISS_MS,\n // );\n },\n // [addPopup, analyticsContext, dispatch, isL2, pendingTransactions],\n [dispatch, pendingTransactions],\n );\n\n return ;\n}\n","// @ts-nocheck\nimport { http, createConfig } from \"wagmi\";\nimport { mainnet, sepolia } from \"wagmi/chains\";\n\nexport const wagmiConfig = createConfig({\n chains: [mainnet, sepolia],\n transports: {\n [mainnet.id]: http(),\n [sepolia.id]: http(),\n },\n});\n","import React, { useEffect, useState } from \"react\";\n\nexport interface DisableIframeProps {\n children: React.ReactNode;\n}\n\nexport function DisableIframe({ children }: DisableIframeProps) {\n const [sameOrigin, setSameOrigin] = useState(true);\n\n useEffect(() => {\n if (top?.location !== self.location) {\n setSameOrigin(false);\n }\n }, [setSameOrigin]);\n\n return sameOrigin ? <>{children} :
Not support iframe now
;\n}\n","import { Connector } from \"@web3-react/types\";\nimport { ConnectionType, injectedConnection } from \"./index\";\n\nconst CONNECTIONS = [injectedConnection];\n\nexport function getConnection(c: Connector | ConnectionType) {\n if (c instanceof Connector) {\n const connection = CONNECTIONS.find((connection) => connection.connector === c);\n if (!connection) {\n throw Error(\"unsupported connector\");\n }\n return connection;\n } \n return injectedConnection;\n \n}\n","import { Web3ReactHooks } from \"@web3-react/core\";\nimport { Connector } from \"@web3-react/types\";\nimport { ConnectionType } from \"utils/web3/connection\";\nimport { getConnection } from \"utils/web3/connection/utils\";\nimport { useMemo } from \"react\";\n\nexport const BACKFILLABLE_WALLETS = [\n ConnectionType.COINBASE_WALLET,\n ConnectionType.WALLET_CONNECT,\n ConnectionType.INJECTED,\n];\n\nconst SELECTABLE_WALLETS = [...BACKFILLABLE_WALLETS];\n\nexport default function useConnectors() {\n return useMemo(() => {\n const orderedConnectionTypes: ConnectionType[] = [];\n\n orderedConnectionTypes.push(...SELECTABLE_WALLETS);\n\n // Add network connection last as it should be the fallback.\n orderedConnectionTypes.push(ConnectionType.NETWORK);\n\n // Convert to web3-react's representation of connectors.\n const web3Connectors: [Connector, Web3ReactHooks][] = orderedConnectionTypes\n .map(getConnection)\n .map(({ connector, hooks }) => [connector, hooks]);\n return web3Connectors;\n }, []);\n}\n","import { Web3ReactProvider } from \"@web3-react/core\";\nimport useConnectors from \"hooks/web3/useConnectors\";\nimport useEagerlyConnect from \"hooks/web3/useEagerlyConnect\";\nimport { ReactNode } from \"react\";\n\nexport default function Web3Provider({ children }: { children: ReactNode }) {\n useEagerlyConnect();\n\n const connectors = useConnectors();\n\n return {children};\n}\n","import { metamask } from \"utils/web3/connection\";\nimport { useEffect } from \"react\";\nimport { isMobile } from \"react-device-detect\";\n\nexport default function useEagerlyConnect() {\n useEffect(() => {\n metamask.connectEagerly()?.catch(() => {\n console.error(\"Failed to connect eagerly to metamask\");\n });\n\n if (isMobile) {\n metamask.activate()?.catch(() => {\n console.error(\"Failed to connect eagerly to metamask\");\n });\n }\n }, []);\n}\n","import React from \"react\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport { closeSnackbar } from \"store/snackbar/actions\";\nimport { Alert, Fade, IconButton, SnackbarCloseReason } from \"@mui/material\";\nimport MuiSnackbar from \"@mui/material/Snackbar\";\nimport CloseIcon from \"@mui/icons-material/Close\";\n\nexport default function Snackbar() {\n const dispatch = useAppDispatch();\n const [open, setOpen] = React.useState(false);\n const snackbarInitial = useAppSelector((state) => state.snackbar);\n\n const handleClose = (event: any, reason: SnackbarCloseReason) => {\n if (reason === \"clickaway\") return;\n dispatch(closeSnackbar());\n };\n\n const handleClickClose = () => {\n dispatch(closeSnackbar());\n };\n\n React.useEffect(() => {\n setOpen(snackbarInitial.open);\n }, [snackbarInitial.action, snackbarInitial.open]);\n\n return (\n <>\n {/* default snackbar */}\n {snackbarInitial.variant === \"default\" && (\n \n )}\n\n {/* alert snackbar */}\n {snackbarInitial.variant === \"alert\" && (\n \n \n \n \n ) : null\n }\n >\n {snackbarInitial.message}\n \n \n )}\n \n );\n}\n","import { useEffect, ReactNode } from \"react\";\nimport { withRouter, RouteComponentProps } from \"react-router-dom\";\n\nexport interface NavigationScrollProps extends RouteComponentProps {\n children: ReactNode;\n}\n\nexport default withRouter(({ children, location: { pathname } }: NavigationScrollProps) => {\n useEffect(() => {\n window.scrollTo({\n top: 0,\n left: 0,\n behavior: \"smooth\",\n });\n }, [pathname]);\n\n return children || (null as any);\n});\n","export const lightColors = {};\n\nexport const darkColors = {};\n\nexport default {\n paper: \"#ffffff\",\n\n // primary\n primaryLight: \"#e3f2fd\",\n primary200: \"#ffffff\",\n primaryMain: \"#8672FF\",\n primaryDark: \"#8672FF\",\n primary800: \"#1565c0\",\n\n // secondary\n secondaryLight: \"#ffffff\",\n secondary200: \"#b39ddb\",\n secondaryMain: \"#5669dc\",\n secondaryDark: \"#5669dc\",\n secondary800: \"#4527a0\",\n\n // success\n successLight: \"#b9f6ca\",\n success200: \"#69f0ae\",\n successMain: \"#00e676\",\n successDark: \"#54c081\",\n\n // error\n errorLight: \"#ef9a9a\",\n errorMain: \"#f44336\",\n\n // orange\n orangeLight: \"#fbe9e7\",\n orangeMain: \"#ffab91\",\n orangeDark: \"#d84315\",\n\n // warning\n warningLight: \"#F2994A\",\n warningMain: \"#ffe57f\",\n warningDark: \"#ffc107\",\n\n danger: \"#D3625B\",\n\n warning: \"#B79C4A\",\n\n // grey\n grey50: \"#fafafa\",\n grey100: \"#f5f5f5\",\n grey200: \"#eeeeee\",\n grey300: \"#e0e0e0\",\n grey500: \"#9e9e9e\",\n grey600: \"#757575\",\n grey700: \"#616161\",\n grey900: \"#212121\",\n\n // -----------------------|| DARK THEME VARIANTS ||-----------------------//\n\n // paper & background\n darkPaper: \"#1a223f\",\n darkBackground: \"#1a223f\",\n\n // dark 800 & 900\n darkLevel1: \"#111936\",\n darkLevel2: \"#1a223f\",\n darkLevel3: \"#212946\",\n darkLevel4: \"#29314f\",\n darkLevel5: \"#273051\",\n\n // text variants\n darkTextPrimary: \"#ffffff\",\n darkTextSecondary: \"#8492c4\",\n darkTextTertiary: \"#4F5A84\",\n darkTextFourth: \"#29314F\",\n darkTextFifth: \"#212946\",\n\n disable: \"#4F5A84\",\n\n lightPrimaryMain: \"#8672FF\",\n\n lightTextTitle: \"#212121\",\n lightTextPrimary: \"#212121\",\n lightTextSecondary: \"#757575\",\n lightTextTertiary: \"#9E9E9E\",\n lightTextFourth: \"#F5F5F5\",\n lightTextFifth: \"#FAFAFA\",\n\n lightLevel2: \"#EFEFFF\",\n lightLevel4: \"#FAFAFA\",\n lightLevel5: \"#FAFAFA\",\n\n lightGray200: \"#f5f5f5\",\n lightGray50: \"#fafafa\",\n\n lightGray200BorderColor: \"#EFEFFF\",\n\n // primary dark\n darkPrimaryLight: \"#e3f2fd\",\n darkPrimaryMain: \"#8672FF\",\n darkPrimaryDark: \"#5669dc\",\n darkPrimary200: \"#000001\",\n darkPrimary800: \"#1565c0\",\n darkPrimary400: \"#4F5A84\",\n\n // secondary dark\n darkSecondaryLight: \"#212946\",\n darkSecondaryMain: \"#5669dc\",\n darkSecondaryDark: \"#5669dc\",\n darkSecondary200: \"#b39ddb\",\n darkSecondary800: \"#6200ea\",\n\n defaultGradientStart: \"#5569db\",\n defaultGradientEnd: \"#8572ff\",\n border0: \"#4F5A84\",\n border1: \"#353C5D\",\n\n apr: \"#54C081\",\n\n \"text.success\": \"#54C081\",\n};\n","import { isDarkTheme } from \"utils/index\";\nimport { createTheme, keyframes } from \"@mui/material\";\n\nimport colors from \"./colors\";\n\nconst MuiTheme = createTheme({});\n\nexport function componentStyleOverrides(theme: { [key: string]: any }) {\n const isDark = isDarkTheme(theme);\n\n const globalButtonBackground = isDark ? theme.defaultGradient : theme.colors.lightPrimaryMain;\n\n const menuHoverBackground = isDark ? theme.menuSelectedBack : theme.colors.lightLevel2;\n\n const CircularProgressKeyframes0 = keyframes`\n 0% {\n transform: rotate(0deg);\n }\n 100% {\n transform: rotate(360deg);\n }\n `;\n\n const CircularProgressKeyframes1 = keyframes`\n 0% {\n stroke-dasharray: 1px,200px;\n stroke-dashoffset: 0;\n }\n 50% {\n stroke-dasharray: 100px,200px;\n stroke-dashoffset: -15px;\n }\n 100% {\n stroke-dasharray: 100px,200px;\n stroke-dashoffset: -125px;\n }\n `;\n\n return {\n MuiTypography: {\n styleOverrides: {\n root: {\n lineHeight: 1,\n },\n },\n },\n MuiButton: {\n styleOverrides: {\n root: {\n fontWeight: 500,\n borderRadius: \"12px\",\n textTransform: \"none\",\n \"&.MuiButton-outlinedPrimary\": {\n color: isDark ? theme.colors.secondaryMain : theme.colors.lightPrimaryMain,\n borderColor: isDark ? theme.colors.secondaryMain : theme.colors.lightPrimaryMain,\n \"&:hover\": {\n background: \"rgba(86, 105, 220, 0.1)\",\n },\n \"&.secondary\": {\n border: `1px solid ${colors.darkLevel4}`,\n color: \"#ffffff\",\n },\n },\n \"&.MuiButton-contained.Mui-disabled\": {\n ...(isDark\n ? {\n background: \"#4F5A84\",\n }\n : { color: \"#9E9E9E\", background: \"#E0E0E0\" }),\n },\n \"&.MuiButton-contained\": {\n \"&.secondary\": {\n background: colors.darkLevel4,\n boxShadow: \"none\",\n \"&.Mui-disabled\": {\n color: colors.darkTextTertiary,\n },\n },\n },\n \"&.MuiButton-outlined\": {\n \"&.Mui-disabled\": {\n color: \"#4F5A84\",\n border: \"1px solid #4F5A84\",\n },\n },\n },\n containedPrimary: {\n background: globalButtonBackground,\n \"&.MuiButton-sizeLarge\": {\n padding: \"11px 22px\",\n },\n },\n containedSecondary: {\n background: isDark ? theme.colors.darkLevel4 : \"#EFEFFF\",\n color: isDark ? \"#ffffff\" : theme.colors.primaryMain,\n border: \"1px solid #5569DB\",\n boxShadow: \"none\",\n },\n },\n },\n MuiPaper: {\n defaultProps: {\n elevation: 0,\n },\n styleOverrides: {\n root: {\n backgroundImage: \"none\",\n backgroundColor: isDark ? theme.colors.darkLevel1 : theme.colors.paper,\n\n // Date pick button\n \"&.MuiPaper-elevation.MuiPaper-rounded.MuiPaper-elevation8\": {\n \"& .MuiButtonBase-root.MuiIconButton-root.MuiIconButton-sizeMedium\": {\n \"&:hover\": {\n backgroundColor: theme.colors.primaryMain,\n },\n \"& .MuiTypography-caption\": {\n color: \"#fff\",\n },\n },\n },\n },\n rounded: {\n borderRadius: `${theme.borderRadius}px`,\n },\n },\n },\n MuiCardHeader: {\n styleOverrides: {\n root: {\n color: theme.colors.textDark,\n padding: \"24px\",\n },\n title: {\n fontSize: \"1.125rem\",\n },\n },\n },\n MuiCardContent: {\n styleOverrides: {\n root: {\n padding: \"24px\",\n\n \"&:last-child\": {\n [MuiTheme.breakpoints.down(\"sm\")]: {\n paddingBottom: \"12px\",\n },\n },\n [MuiTheme.breakpoints.down(\"sm\")]: {\n padding: \"12px\",\n },\n },\n },\n },\n MuiCardActions: {\n styleOverrides: {\n root: {\n padding: \"24px\",\n },\n },\n },\n MuiAlert: {\n styleOverrides: {\n root: {\n alignItems: \"center\",\n },\n outlined: {\n border: \"1px dashed\",\n },\n },\n },\n MuiButtonBase: {\n styleOverrides: {\n root: {\n \"&.radius-12\": {\n borderRadius: \"12px\",\n },\n \"&.MuiListItem-root\": {\n color: theme.textSecondary,\n paddingTop: \"10px\",\n paddingBottom: \"10px\",\n backgroundColor: theme.menuBackground,\n \"&.Mui-selected\": {\n color: theme.textPrimary,\n backgroundColor: menuHoverBackground,\n \"&:hover\": {\n backgroundColor: menuHoverBackground,\n },\n \"& .MuiListItemIcon-root\": {\n color: theme.textPrimary,\n },\n },\n \"&:hover\": {\n backgroundColor: menuHoverBackground,\n color: theme.textPrimary,\n \"& .MuiListItemIcon-root\": {\n color: theme.textPrimary,\n },\n },\n },\n\n // sidebar menu\n \"&.MuiListItem-root&.sidebar\": {\n color: theme.textPrimary,\n paddingTop: \"10px\",\n paddingBottom: \"10px\",\n marginBottom: \"5px\",\n paddingLeft: \"0px\",\n \"&:last-child\": {\n marginBottom: 0,\n },\n \"& .MuiSvgIcon-root\": {\n color: \"#8492C4\",\n },\n \"&.Mui-selected, &:hover\": {\n color: theme.menuSelected,\n background: globalButtonBackground,\n \"& .MuiListItemIcon-root\": {\n color: theme.menuSelected,\n },\n \"& .MuiSvgIcon-root\": {\n color: theme.menuSelected,\n },\n },\n },\n \"&.MuiListItem-root&.sub\": {\n color: theme.textPrimary,\n paddingTop: \"7px\",\n paddingBottom: \"7px\",\n paddingLeft: \"0px\",\n background: \"transparent\",\n \"& .MuiSvgIcon-root\": {\n color: \"#8492C4\",\n },\n \"&.Mui-selected, &:hover\": {\n color: theme.menuSelected,\n background: \"transparent\",\n \"& .MuiListItemIcon-root\": {\n color: theme.menuSelected,\n },\n \"& .MuiSvgIcon-root\": {\n color: theme.colors.darkSecondaryMain,\n },\n },\n },\n },\n },\n },\n MuiListItemIcon: {\n styleOverrides: {\n root: {\n color: theme.textPrimary,\n minWidth: \"36px\",\n },\n },\n },\n MuiListItemText: {\n styleOverrides: {\n primary: {\n color: theme.textDark,\n },\n },\n },\n MuiInputBase: {\n styleOverrides: {\n root: {\n \"& .MuiInputBase-input\": {\n fontSize: \"16px\",\n },\n },\n input: {\n color: theme.textDark,\n \"&::placeholder\": {\n color: theme.textSecondary,\n fontSize: \"0.875rem\",\n fontWeight: 400,\n },\n },\n },\n },\n MuiOutlinedInput: {\n styleOverrides: {\n root: {\n background: isDark ? theme.colors.darkBackground : theme.colors.grey50,\n borderRadius: `${theme.borderRadius}px`,\n \"& fieldset\": {\n borderColor: theme.colors.darkTextSecondary,\n },\n \"&:hover $notchedOutline\": {\n borderColor: theme.colors.primaryLight,\n },\n \"&.MuiInputBase-multiline\": {\n padding: 1,\n },\n },\n input: {\n fontWeight: 500,\n background: isDark ? theme.colors.darkBackground : theme.colors.grey50,\n padding: \"15.5px 14px\",\n borderRadius: `${theme.borderRadius}px`,\n \"&.MuiInputBase-inputSizeSmall\": {\n padding: \"10px 14px\",\n \"&.MuiInputBase-inputAdornedStart\": {\n paddingLeft: 0,\n },\n },\n },\n inputAdornedStart: {\n paddingLeft: 4,\n },\n notchedOutline: {\n borderColor: theme.colors.secondary,\n borderRadius: `${theme.borderRadius}px`,\n },\n },\n },\n MuiSlider: {\n styleOverrides: {\n root: {\n \"&.Mui-disabled\": {\n color: isDark ? theme.colors.textPrimary + 50 : theme.colors.grey300,\n },\n },\n mark: {\n backgroundColor: theme.paper,\n width: \"4px\",\n },\n valueLabel: {\n color: theme.colors.primaryMain,\n },\n },\n },\n MuiAutocomplete: {\n styleOverrides: {\n root: {\n \"& .MuiAutocomplete-tag\": {\n background: isDark ? theme.colors.textPrimary + 20 : theme.colors.secondaryLight,\n borderRadius: 4,\n color: theme.textDark,\n \".MuiChip-deleteIcon\": {\n color: isDark ? theme.colors.textPrimary + 80 : theme.colors.secondary200,\n },\n },\n },\n popper: {\n borderRadius: `${theme.borderRadius}px`,\n boxShadow:\n \"0px 8px 10px -5px rgb(0 0 0 / 20%), 0px 16px 24px 2px rgb(0 0 0 / 14%), 0px 6px 30px 5px rgb(0 0 0 / 12%)\",\n },\n },\n },\n MuiDivider: {\n styleOverrides: {\n root: {\n borderColor: theme.divider,\n opacity: isDark ? 0.2 : 1,\n },\n },\n },\n MuiSelect: {\n styleOverrides: {\n select: {\n \"&:focus\": {\n backgroundColor: \"transparent\",\n },\n },\n },\n },\n MuiCheckbox: {\n styleOverrides: {\n select: {\n fontSize: \"28px\",\n },\n root: {\n padding: 0,\n },\n },\n },\n MuiAvatar: {\n styleOverrides: {\n root: {\n color: isDark ? theme.colors.darkLevel1 : theme.colors.primaryDark,\n background: isDark ? theme.textPrimary : theme.colors.primary200,\n },\n },\n },\n MuiChip: {\n styleOverrides: {\n root: {\n \"&.MuiChip-deletable .MuiChip-deleteIcon\": {\n color: \"inherit\",\n },\n },\n },\n },\n MuiTimelineContent: {\n styleOverrides: {\n root: {\n color: theme.textDark,\n fontSize: \"16px\",\n },\n },\n },\n MuiTreeItem: {\n styleOverrides: {\n label: {\n marginTop: 14,\n marginBottom: 14,\n },\n },\n },\n MuiTimelineDot: {\n styleOverrides: {\n root: {\n boxShadow: \"none\",\n },\n },\n },\n MuiInternalDateTimePickerTabs: {\n styleOverrides: {\n tabs: {\n backgroundColor: isDark ? theme.colors.darkPaper : theme.colors.primaryLight,\n \"& .MuiTabs-flexContainer\": {\n borderColor: isDark ? theme.colors.textPrimary + 20 : theme.colors.primary200,\n },\n \"& .MuiTab-root\": {\n color: isDark ? theme.colors.textSecondary : theme.colors.grey900,\n },\n \"& .MuiTabs-indicator\": {\n backgroundColor: theme.colors.primaryDark,\n },\n \"& .Mui-selected\": {\n color: theme.colors.primaryDark,\n },\n },\n },\n },\n MuiTabs: {\n styleOverrides: {\n flexContainer: {\n borderBottom: \"1px solid\",\n borderColor: isDark ? theme.colors.textPrimary + 20 : theme.colors.grey200,\n },\n },\n },\n MuiDialog: {\n styleOverrides: {\n paper: {\n padding: \"12px 0 12px 0\",\n backgroundColor: isDark ? theme.colors.darkLevel3 : theme.colors.primary200,\n },\n },\n },\n MuiTable: {\n styleOverrides: {\n root: {\n \"& td\": {\n whiteSpace: \"nowrap\",\n },\n \"& td:first-of-type, & th:first-of-type\": {\n paddingLeft: \"0px\",\n },\n },\n },\n },\n MuiTableCell: {\n styleOverrides: {\n root: {\n borderColor: isDark ? \"rgba(189, 200, 240, 0.082)\" : theme.colors.grey200,\n \"&.MuiTableCell-head\": {\n fontSize: theme.fontSize.xs,\n color: theme.textTertiary,\n },\n },\n },\n },\n MuiTooltip: {\n styleOverrides: {\n tooltip: {\n background: \"#ffffff\",\n borderRadius: \"8px\",\n padding: \"12px 16px\",\n maxWidth: \"300px\",\n color: \"#111936\",\n fontSize: \"12px\",\n lineHeight: \"18px\",\n fontWeight: 400,\n \"& .MuiTooltip-arrow\": {\n color: \"#ffffff\",\n },\n },\n },\n },\n MuiPagination: {\n styleOverrides: {\n root: {\n // \".Mui-selected\": {\n // backgroundColor: theme.colors.primaryMain,\n // },\n \".MuiPaginationItem-previousNext\": {\n borderRadius: \"50%\",\n },\n \".MuiPaginationItem-root\": {\n \"&.Mui-selected\": {\n backgroundColor: theme.colors.secondaryMain,\n },\n },\n \".MuiButtonBase-root\": {\n minWidth: \"22px\",\n height: \"22px\",\n },\n },\n nav: {\n backgroundColor: theme.colors.primaryMain,\n },\n },\n },\n MuiTableContainer: {\n styleOverrides: {\n root: {\n position: \"relative\",\n \"&.with-loading\": {\n minHeight: \"210px\",\n },\n },\n },\n },\n MuiStepper: {\n styleOverrides: {\n root: {\n \"& .MuiStepLabel-label\": {\n color: isDark ? theme.textSecondary : theme.textPrimary,\n \"&.Mui-active\": {\n color: theme.textPrimary,\n },\n },\n \"& .MuiStepIcon-root\": {\n color: isDark ? theme.colors.darkLevel4 : \"#BDBDBD\",\n \"&.Mui-active\": {\n color: isDark ? theme.colors.darkSecondaryMain : theme.colors.lightPrimaryMain,\n },\n \"&.MuiStepIcon-completed\": {\n color: isDark ? theme.colors.darkSecondaryMain : \"#00C853\",\n },\n },\n \"& .MuiStepConnector-line\": {\n borderColor: isDark ? theme.colors.darkLevel4 : \"#E0E0E0\",\n },\n },\n },\n },\n MuiBreadcrumbs: {\n styleOverrides: {\n root: {\n \"& a\": {\n \"&:hover\": {\n textDecoration: `underline solid ${theme.textSecondary}!important`,\n },\n \"& .MuiTypography-root\": {\n color: theme.textSecondary,\n },\n },\n \"& .MuiTypography-root\": {\n color: theme.textPrimary,\n },\n },\n },\n },\n MuiSwitch: {\n styleOverrides: {\n root: {\n width: \"36px\",\n borderRadius: \"12px\",\n },\n },\n },\n MuiGrid: {\n styleOverrides: {\n root: {\n \"& .lightGray200\": {\n ...(theme.customization.mode !== \"dark\" ? { backgroundColor: theme.colors.lightGray200 } : {}),\n },\n \"& .lightGray50\": {\n ...(theme.customization.mode !== \"dark\" ? { backgroundColor: theme.colors.lightGray50 } : {}),\n },\n },\n },\n },\n MuiPopover: {\n styleOverrides: {\n root: {\n \"&.custom-select\": {\n \"& .MuiPaper-root\": {\n background: theme.colors.darkLevel3,\n border: \"1px solid #49588E\",\n borderRadius: \"8px\",\n \"& .MuiList-root\": {\n padding: 0,\n },\n \"& .MuiMenuItem-root\": {\n background: theme.colors.darkLevel3,\n paddingTop: \"13px\",\n paddingBottom: \"13px\",\n color: theme.textPrimary,\n \"&.disabled\": {\n background: theme.colors.darkLevel4,\n opacity: 0.3,\n cursor: \"not-allowed\",\n \"&:hover\": {\n background: theme.colors.darkLevel4,\n opacity: 0.3,\n },\n \"&.active\": {\n background: theme.colors.darkLevel4,\n opacity: 0.3,\n },\n },\n \"&.active\": {\n background: \"#313D67\",\n },\n \"&:hover\": {\n background: \"#313D67\",\n },\n },\n },\n },\n },\n },\n },\n MuiList: {\n styleOverrides: {\n root: {\n \"&.customize-menu-list\": {\n padding: 0,\n background: theme.colors.darkLevel3,\n border: \"1px solid #49588E\",\n borderRadius: \"8px\",\n width: \"146px\",\n overflow: \"hidden\",\n \"& .MuiMenuItem-root.MuiButtonBase-root\": {\n background: theme.colors.darkLevel3,\n paddingTop: \"10px\",\n paddingBottom: \"10px\",\n margin: \"5px 0\",\n \"&.active\": {\n background: \"#313D67\",\n },\n \"&:hover\": {\n background: \"#313D67\",\n },\n },\n \"&.style1\": {\n background: theme.colors.darkLevel1,\n border: `1px solid ${theme.colors.darkLevel3}`,\n \"& .MuiMenuItem-root.MuiButtonBase-root\": {\n background: theme.colors.darkLevel1,\n \"&.active\": {\n background: theme.colors.darkLevel3,\n \"& .customize-label\": {\n color: \"#fff\",\n },\n },\n \"& .customize-label.active\": {\n color: \"#fff\",\n },\n \"&:hover\": {\n background: theme.colors.darkLevel3,\n \"& .customize-label\": {\n color: \"#fff\",\n },\n },\n },\n },\n },\n \"&.customize-menu-list-light\": {\n padding: 0,\n background: \"#ffffff\",\n border: \"1px solid #EFEFFF\",\n borderRadius: \"12px\",\n width: \"146px\",\n overflow: \"hidden\",\n \"& .MuiMenuItem-root.MuiButtonBase-root\": {\n background: \"#ffffff\",\n paddingTop: \"10px\",\n paddingBottom: \"10px\",\n \"&:first-of-type\": {\n borderRadius: \"12px 12px 0 0\",\n },\n \"&:last-child\": {\n borderRadius: \"0 0 12px 12px\",\n },\n \"&.active\": {\n background: \"#F5F5FF\",\n },\n \"&:hover\": {\n background: \"#F5F5FF\",\n },\n },\n },\n },\n },\n },\n MuiCircularProgress: {\n styleOverrides: {\n root: {\n animation: `${CircularProgressKeyframes0} 0.8s linear infinite`,\n \"& .MuiCircularProgress-circle\": {\n animation: `${CircularProgressKeyframes1} 0.8s ease-in-out infinite`,\n },\n },\n },\n },\n };\n}\n","import { isDarkTheme } from \"utils\";\n\nexport function themePalette(theme: { [key: string]: any }) {\n const isDark = isDarkTheme(theme);\n\n return {\n mode: theme.customization.mode,\n common: {\n black: theme.colors.darkPaper,\n },\n primary: {\n light: isDark ? theme.colors.darkPrimaryLight : theme.colors.primaryLight,\n main: isDark ? theme.colors.darkPrimaryMain : theme.colors.lightPrimaryMain,\n dark: isDark ? theme.colors.darkPrimaryDark : theme.colors.primaryDark,\n 200: isDark ? theme.colors.darkPrimary200 : theme.colors.primary200,\n 800: isDark ? theme.colors.darkPrimary800 : theme.colors.primary800,\n 400: isDark ? theme.colors.darkPrimary400 : theme.colors.primary800,\n },\n secondary: {\n light: isDark ? theme.colors.darkSecondaryLight : theme.colors.secondaryLight,\n main: isDark ? theme.colors.darkSecondaryMain : theme.colors.secondaryMain,\n dark: isDark ? theme.colors.darkSecondaryLight : theme.colors.secondaryDark,\n 200: isDark ? theme.colors.darkSecondary200 : theme.colors.secondary200,\n 800: isDark ? theme.colors.darkSecondary800 : theme.colors.secondary800,\n },\n error: {\n light: theme.colors.errorLight,\n main: theme.colors.errorMain,\n },\n orange: {\n light: theme.colors.orangeLight,\n main: theme.colors.orangeMain,\n dark: theme.colors.orangeDark,\n },\n warning: {\n light: theme.colors.warningLight,\n main: theme.colors.warningMain,\n dark: theme.colors.warningDark,\n },\n success: {\n light: theme.colors.successLight,\n 200: theme.colors.success200,\n main: theme.colors.successMain,\n dark: theme.colors.successDark,\n },\n grey: {\n 50: theme.colors.grey50,\n 100: theme.colors.grey100,\n 500: theme.darkTextSecondary,\n 600: theme.heading,\n 700: theme.colors.darkTextPrimary,\n 900: theme.textDark,\n },\n dark: {\n light: theme.colors.darkTextPrimary,\n main: theme.colors.darkLevel1,\n dark: theme.colors.darkLevel2,\n level3: theme.colors.darkLevel3,\n level4: theme.colors.darkLevel4,\n },\n text: {\n primary: theme.textPrimary,\n secondary: theme.textSecondary,\n tertiary: theme.textTertiary,\n dark: theme.textDark,\n light: theme.textLight,\n danger: theme.colors.danger,\n orangeWarning: theme.colors.warning,\n level1: isDark ? theme.colors.darkLevel1 : theme.colors.primaryLight,\n 400: isDark ? theme.colors.darkPrimary400 : theme.colors.primary800,\n theme_primary: theme.colors.darkPrimaryMain,\n theme_secondary: theme.colors.darkSecondaryMain,\n \"theme-primary\": theme.colors.darkPrimaryMain,\n \"theme-secondary\": theme.colors.darkSecondaryMain,\n apr: theme.colors.apr,\n success: theme.colors[\"text.success\"],\n },\n background: {\n paper: theme.paper,\n default: theme.backgroundDefault,\n level1: isDark ? theme.colors.darkLevel1 : theme.colors.primaryLight,\n level2: isDark ? theme.colors.darkLevel2 : theme.colors.lightLevel2,\n level3: isDark ? theme.colors.darkLevel3 : theme.colors.paper,\n level4: isDark ? theme.colors.darkLevel4 : theme.colors.lightLevel4,\n level5: isDark ? theme.colors.darkLevel5 : theme.colors.lightLevel5,\n },\n border: {\n normal: isDark ? \"1px solid #313A5A\" : `1px solid ${theme.colors.lightGray200BorderColor}`,\n border0: \"1px solid #4F5A84\",\n gray200: isDark ? \"1px solid #29314F\" : `1px solid ${theme.colors.lightGray200BorderColor}`,\n },\n avatar: {\n gray200BgColor: isDark ? { bgcolor: \"#384368\" } : { bgcolor: \"transparent\" },\n },\n loading: {\n background: isDark ? theme.colors.darkLevel3 : theme.colors.paper,\n },\n };\n}\n","export function themeTypography(theme: { [key: string]: any }) {\n return {\n fontFamily: theme.customization.fontFamily,\n h6: {\n fontWeight: 500,\n color: theme.textSecondary,\n fontSize: \"0.75rem\",\n },\n h5: {\n fontSize: \"0.875rem\",\n color: theme.textSecondary,\n fontWeight: 500,\n },\n h4: {\n fontSize: \"1rem\",\n color: theme.textSecondary,\n fontWeight: 600,\n },\n h3: {\n fontSize: \"1.25rem\",\n color: theme.textSecondary,\n fontWeight: 600,\n },\n h2: {\n fontSize: \"1.5rem\",\n color: theme.textSecondary,\n fontWeight: 700,\n },\n h1: {\n fontSize: \"2.125rem\",\n color: theme.textSecondary,\n fontWeight: 700,\n },\n subtitle1: {\n fontSize: \"0.875rem\",\n fontWeight: 500,\n color: theme.customization.mode === \"dark\" ? theme.heading : theme.textDark,\n },\n subtitle2: {\n fontSize: \"0.75rem\",\n fontWeight: 400,\n color: theme.textSecondary,\n },\n caption: {\n fontSize: \"0.75rem\",\n color: theme.textSecondary,\n fontWeight: 400,\n },\n body1: {\n fontSize: \"0.875rem\",\n fontWeight: 400,\n lineHeight: \"1.334em\",\n color: theme.textSecondary,\n },\n body2: {\n letterSpacing: \"0em\",\n fontWeight: 400,\n lineHeight: \"1.5em\",\n color: theme.textSecondary,\n fontSize: \"16px\",\n },\n customInput: {\n marginTop: 8,\n marginBottom: 8,\n \"& > label\": {\n top: \"23px\",\n left: 0,\n color: theme.grey500,\n '&[data-shrink=\"false\"]': {\n top: \"5px\",\n },\n },\n \"& > div > input\": {\n padding: \"30.5px 14px 11.5px !important\",\n },\n \"& legend\": {\n display: \"none\",\n },\n \"& fieldset\": {\n top: 0,\n },\n },\n menuCaption: {\n fontSize: \"0.875rem\",\n color: theme.heading,\n padding: \"11px 0 11px 19px\",\n textTransform: \"capitalize\",\n fontWeight: \"400\",\n },\n subMenuCaption: {\n fontSize: \"0.6875rem\",\n fontWeight: 500,\n color: theme.textSecondary,\n textTransform: \"capitalize\",\n },\n commonAvatar: {\n cursor: \"pointer\",\n borderRadius: \"8px\",\n },\n smallAvatar: {\n width: \"22px\",\n height: \"22px\",\n fontSize: \"1rem\",\n },\n mediumAvatar: {\n width: \"34px\",\n height: \"34px\",\n fontSize: \"1.2rem\",\n },\n largeAvatar: {\n width: \"44px\",\n height: \"44px\",\n fontSize: \"1.5rem\",\n },\n };\n}\n","import { createTheme } from \"@mui/material/styles\";\nimport { DynamicObject } from \"types/index\";\n\nimport { componentStyleOverrides } from \"./compStyleOverride\";\nimport { themePalette } from \"./palette\";\nimport { themeTypography } from \"./typography\";\nimport colors from \"./colors\";\n\nconst fontSize = {\n xs: \"0.75rem\",\n sm: \"0.875rem\",\n md: \"1rem\",\n lg: \"1.25rem\",\n};\n\nconst Radius = 12;\n\nexport interface ThemeOption {\n [key: string]: any;\n}\n\nexport function theme(customization: DynamicObject) {\n const themeOption: ThemeOption = {\n colors,\n fontSize,\n heading: \"\",\n paper: \"\",\n backgroundDefault: \"\",\n background: \"\",\n textPrimary: \"\",\n darkTextSecondary: \"\",\n textDark: \"\",\n textLight: \"\",\n menuSelected: \"\",\n menuSelectedBack: \"\",\n divider: \"\",\n customization,\n defaultGradient: `linear-gradient(89.44deg, ${colors.defaultGradientStart} -0.31%, ${colors.defaultGradientEnd} 91.14%)`,\n borderRadius: 12,\n };\n\n switch (customization.mode) {\n case \"dark\":\n themeOption.paper = colors.darkLevel2;\n themeOption.backgroundDefault = colors.darkPaper;\n themeOption.background = colors.darkBackground;\n themeOption.textPrimary = colors.darkTextPrimary;\n themeOption.textSecondary = colors.darkTextSecondary;\n themeOption.textTertiary = colors.darkTextTertiary;\n themeOption.textDark = colors.darkTextPrimary;\n themeOption.textLight = colors.lightTextPrimary;\n themeOption.menuBackground = colors.darkLevel1;\n themeOption.menuSelected = colors.darkSecondaryMain;\n themeOption.menuSelectedBack = colors.darkSecondaryMain + 15;\n themeOption.menuSelected = colors.paper;\n themeOption.divider = colors.darkTextPrimary;\n themeOption.heading = colors.darkTextSecondary;\n break;\n case \"light\":\n default:\n themeOption.paper = colors.paper;\n themeOption.backgroundDefault = colors.paper;\n themeOption.background = colors.primaryLight;\n themeOption.textPrimary = colors.lightTextPrimary;\n themeOption.textSecondary = colors.lightTextSecondary;\n themeOption.textTertiary = colors.lightTextTertiary;\n themeOption.textDark = colors.grey900;\n themeOption.menuBackground = colors.paper;\n themeOption.menuSelected = colors.lightTextPrimary;\n themeOption.menuSelectedBack = colors.secondaryLight;\n themeOption.menuSelected = colors.paper;\n themeOption.divider = colors.grey200;\n themeOption.heading = colors.grey900;\n break;\n }\n\n return createTheme({\n direction: customization.rtlLayout ? \"rtl\" : \"ltr\",\n palette: themePalette(themeOption),\n mixins: {\n overflowEllipsis: {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n whiteSpace: \"nowrap\",\n },\n overflowEllipsis2: {\n overflow: \"hidden\",\n textOverflow: \"ellipsis\",\n display: \"-webkit-box\",\n \"-webkit-box-orient\": \"vertical\",\n \"-webkit-line-clamp\": 2,\n },\n },\n typography: themeTypography(themeOption),\n components: componentStyleOverrides(themeOption),\n themeOption,\n colors,\n fontSize,\n customization,\n radius: Radius,\n });\n}\n","import { Grid, Box, Typography } from \"@mui/material\";\nimport ErrorImage from \"assets/images/Error\";\nimport { Trans } from \"@lingui/macro\";\n\nexport default function PageNotFound() {\n return (\n \n \n \n \n \n Page not found\n \n \n \n \n );\n}\n","import React, { Suspense } from \"react\";\nimport Loader from \"./LinearLoader\";\n\nexport default function Loadable(Component: React.FC) {\n return (props: any) => (\n }>\n \n \n );\n}\n","import { lazy } from \"react\";\nimport Loadable from \"../components/Loading/Loadable\";\n\nconst Wallet = Loadable(lazy(() => import(\"../views/wallet/index\")));\n\nconst Farms = Loadable(lazy(() => import(\"../views/staking-farm/index\")));\nconst Farm = Loadable(lazy(() => import(\"../views/staking-farm/farm\")));\nconst CreateFarm = Loadable(lazy(() => import(\"../views/staking-farm/create\")));\n\nconst Staking = Loadable(lazy(() => import(\"../views/staking-token\")));\nconst StakingDetails = Loadable(lazy(() => import(\"../views/staking-token/details\")));\nconst StakingTokenCreate = Loadable(lazy(() => import(\"../views/staking-token/create\")));\n\nconst Swap = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/index\")));\nconst SwapPro = Loadable(lazy(() => import(\"../views/swap-pro\")));\nconst Liquidity = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/liquidity/index\")));\nconst AddLiquidity = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/liquidity/AddLiquidity\")));\nconst IncreaseLiquidity = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/liquidity/IncreaseLiquidity\")));\nconst DecreaseLiquidity = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/liquidity/DecreaseLiquidity\")));\nconst SwapReclaim = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/reclaim/Reclaim\")));\nconst SwapFindMisTransferToken = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/MisTransferTokens\")));\nconst SwapRevokeApprove = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/RevokeApprove\")));\nconst PCMReclaim = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/PCMReclaim\")));\nconst Position = Loadable(lazy(() => import(\"../views/swap-liquidity-v3/liquidity/Position\")));\n\nconst NFTView = Loadable(lazy(() => import(\"../views/nft/View\")));\nconst WalletNFTView = Loadable(lazy(() => import(\"../views/nft/WalletNFTView\")));\nconst NFTMint = Loadable(lazy(() => import(\"../views/nft/Mint\")));\nconst Console = Loadable(lazy(() => import(\"../views/console/index\")));\nconst ConsoleBurn = Loadable(lazy(() => import(\"../views/console/burn\")));\n\nconst NFTCanisterList = Loadable(lazy(() => import(\"../views/nft/CanisterList\")));\nconst NFTCanisterCreate = Loadable(lazy(() => import(\"../views/nft/CanisterCreate\")));\nconst NFTCanisterDetails = Loadable(lazy(() => import(\"../views/nft/CanisterDetails\")));\n\n// const NFTMarket = Loadable(lazy(() => import(\"../views/nft\")));\nconst NFTCollectMarket = Loadable(lazy(() => import(\"../views/nft/Collection\")));\nconst NFTMarketCollections = Loadable(lazy(() => import(\"../views/nft/MarketplaceCollections\")));\n\nconst Voting = Loadable(lazy(() => import(\"../views/voting/index\")));\nconst VotingProject = Loadable(lazy(() => import(\"../views/voting/project\")));\nconst VotingProposal = Loadable(lazy(() => import(\"../views/voting/proposal\")));\nconst VotingCreateProposal = Loadable(lazy(() => import(\"../views/voting/create\")));\nconst VoteCreateProject = Loadable(lazy(() => import(\"../views/voting/create-project\")));\n\nconst TokenClaimIndex = Loadable(lazy(() => import(\"../views/token-claim/index\")));\nconst TokenClaimTransactions = Loadable(lazy(() => import(\"../views/token-claim/transactions\")));\nconst CreateTokenClaim = Loadable(lazy(() => import(\"../views/token-claim/create\")));\n\nconst LiquidityV2 = Loadable(lazy(() => import(\"../views/swap-v2/liquidity/index\")));\nconst DecreaseLiquidityV2 = Loadable(lazy(() => import(\"../views/swap-v2/liquidity/DecreaseLiquidity\")));\nconst Wrap = Loadable(lazy(() => import(\"../views/swap-v2/wrap/index\")));\n\nconst SNSLaunches = Loadable(lazy(() => import(\"../views/sns/Launchpad/Launches\")));\nconst SNSLaunch = Loadable(lazy(() => import(\"../views/sns/Launchpad/Launch\")));\nconst SnsNeurons = Loadable(lazy(() => import(\"../views/sns/Neurons/index\")));\nconst SnsVotes = Loadable(lazy(() => import(\"../views/sns/Voting/index\")));\nconst SnsVoting = Loadable(lazy(() => import(\"../views/sns/Voting/Voting\")));\n\nconst CkBridge = Loadable(lazy(() => import(\"../views/ck-bridge\")));\n\nexport const routeConfigs: { [path: string]: (props: any) => JSX.Element | any } = {\n \"/wallet\": Wallet,\n\n \"/wallet/nft/view/:canisterId/:tokenId\": WalletNFTView,\n \"/wallet/nft/canister/details/:id\": NFTCanisterDetails,\n\n \"/stake\": Staking,\n \"/stake/details/:id\": StakingDetails,\n \"/stake/create\": StakingTokenCreate,\n \"/farm\": Farms,\n \"/farm/details/:id\": Farm,\n \"/farm/create\": CreateFarm,\n\n \"/swap\": Swap,\n \"/liquidity\": Liquidity,\n \"/liquidity/add/:currencyIdA?/:currencyIdB?/:feeAmount?\": AddLiquidity,\n \"/liquidity/decrease/:positionId/:pool\": DecreaseLiquidity,\n \"/liquidity/increase/:positionId/:pool\": IncreaseLiquidity,\n \"/liquidity/position/:positionId/:pool\": Position,\n\n \"/swap/withdraw\": SwapReclaim,\n \"/swap/find-mis-transferred-token\": SwapFindMisTransferToken,\n \"/swap/revoke-approve\": SwapRevokeApprove,\n \"/swap/pcm/reclaim\": PCMReclaim,\n \"/swap/pro\": SwapPro,\n\n \"/swap/v2/liquidity\": LiquidityV2,\n \"/swap/v2/liquidity/decrease/:positionId?\": DecreaseLiquidityV2,\n \"/swap/v2/wrap\": Wrap,\n\n // \"/marketplace/NFT\": NFTMarket,\n \"/marketplace/NFT/:canisterId\": NFTCollectMarket,\n \"/marketplace/NFT/view/:canisterId/:tokenId\": NFTView,\n \"/marketplace/collections\": NFTMarketCollections,\n\n \"/voting\": Voting,\n \"/voting/:canisterId\": VotingProject,\n \"/voting/project/create\": VoteCreateProject,\n\n \"/voting/proposal/details/:canisterId/:id\": VotingProposal,\n \"/voting/proposal/create/:id\": VotingCreateProposal,\n\n \"/token-claim\": TokenClaimIndex,\n \"/token-claim/transactions/:id\": TokenClaimTransactions,\n \"/token-claim/create\": CreateTokenClaim,\n\n \"/console\": Console,\n \"/console/burn\": ConsoleBurn,\n \"/console/nft/canister/create\": NFTCanisterCreate,\n \"/console/nft/mint\": NFTMint,\n \"/console/nft/canister/list\": NFTCanisterList,\n\n \"/sns/neurons\": SnsNeurons,\n \"/sns/voting\": SnsVotes,\n \"/sns/voting/:governance_id/:proposal_id\": SnsVoting,\n \"/sns/launches\": SNSLaunches,\n \"/sns/launch/:root_id\": SNSLaunch,\n\n \"/ck-bridge\": CkBridge,\n};\n","import { Route, Switch, useLocation } from \"react-router-dom\";\nimport { Layout } from \"components/Layout/index\";\nimport PageNotFound from \"components/404\";\nimport { Maintenance } from \"components/Maintenance\";\nimport { routeConfigs } from \"./config\";\n\nconst maintenancePages: string[] = [];\n\nexport default function MainRoutes() {\n const location = useLocation();\n\n const allPath = Object.keys(routeConfigs);\n\n return (\n \n \n \n {allPath.map((pathName) => {\n const component = maintenancePages.includes(pathName) ? Maintenance : routeConfigs[pathName];\n\n // @ts-ignore TODO:FIX\n return ;\n })}\n {/* @ts-ignore TODO:FIX */}\n \n \n \n \n );\n}\n","import { Switch, Route, Redirect } from \"react-router-dom\";\nimport AuthRoutes from \"./Auth\";\n\nexport default function Routes() {\n return (\n \n \n \n \n \n \n );\n}\n","import { useCallback, useState } from \"react\";\nimport { useAppSelector } from \"store/hooks\";\nimport { ThemeProvider } from \"@mui/material/styles\";\nimport { CssBaseline, StyledEngineProvider } from \"@mui/material\";\nimport { useFetchXDR2USD, useFetchGlobalTokenList } from \"store/global/hooks\";\nimport { useFetchSnsAllTokensInfo } from \"store/sns/hooks\";\nimport { Route } from \"react-router-dom\";\nimport GoogleAnalytics, { initGoogleAnalytics } from \"components/GoogleAnalytics\";\nimport { useConnectManager, useWalletConnectorManager } from \"store/auth/hooks\";\nimport RiskStatement from \"components/RiskStatement\";\nimport { SnackbarProvider } from \"components/notistack\";\nimport ErrorBoundary from \"components/ErrorBoundary\";\nimport WalletConnector from \"components/authentication/ConnectorModal\";\nimport Loader from \"components/Loading/LinearLoader\";\nimport { useInitialTokenStandard } from \"hooks/useInitialTokenStandard\";\nimport { useFetchInfoAllTokens } from \"hooks/info/useInfoTokens\";\nimport GlobalSteps from \"components/Steps/index\";\nimport ActorInitial from \"components/Actor\";\nimport { GlobalContext } from \"hooks/useGlobalContext\";\nimport TransactionsUpdater from \"store/transactions/updater\";\nimport { WagmiProvider } from \"wagmi\";\nimport { wagmiConfig } from \"constants/wagmi\";\nimport { QueryClient, QueryClientProvider } from \"@tanstack/react-query\";\nimport { DisableIframe } from \"components/DisableIframe\";\n\nimport Web3Provider from \"./components/Web3Injector\";\nimport { useFetchICPPrices, useFetchAllSwapTokens } from \"./store/global/hooks\";\nimport { FullscreenLoading } from \"./components/index\";\nimport Snackbar from \"./components/Snackbar\";\nimport NavigationScroll from \"./components/NavigationScroll\";\nimport { theme } from \"./theme\";\nimport Routes from \"./routes\";\n\ninitGoogleAnalytics();\n\nexport default function App() {\n const [refreshTriggers, setRefreshTriggers] = useState<{ [key: string]: number }>({});\n const customization = useAppSelector((state) => state.customization);\n\n useFetchXDR2USD();\n useFetchICPPrices();\n useFetchInfoAllTokens();\n useFetchAllSwapTokens();\n\n const { isConnected } = useConnectManager();\n\n const [walletConnectorOpen] = useWalletConnectorManager();\n\n const { loading: fetchGlobalTokensLoading } = useFetchGlobalTokenList();\n const { loading: isInitialStandardLoading, AllPools } = useInitialTokenStandard({ fetchGlobalTokensLoading });\n\n useFetchSnsAllTokensInfo();\n\n const queryClient = new QueryClient();\n\n const handleRefreshTriggers = useCallback(\n (key: string) => {\n setRefreshTriggers({ ...refreshTriggers, [key]: (refreshTriggers[key] ?? 0) + 1 });\n },\n [refreshTriggers, setRefreshTriggers],\n );\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n {isInitialStandardLoading ? (\n \n ) : (\n \n \n \n )}\n \n \n \n {isConnected ? : null}\n {walletConnectorOpen ? : null}\n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { useCallback } from \"react\";\nimport { DEFAULT_LOCALE, SUPPORTED_LOCALES , SupportedLocale } from \"constants/locales\";\n// import useParsedQueryString from \"./useParsedQueryString\";\nimport { useAppSelector, useAppDispatch } from \"store/hooks\";\nimport { updateUserLocale } from \"store/global/actions\";\n\nfunction parseLocale(maybeSupportedLocale: string) {\n const lowerMaybeSupportedLocale = maybeSupportedLocale.toLowerCase();\n return SUPPORTED_LOCALES.find(\n (locale) =>\n locale.toLowerCase() === lowerMaybeSupportedLocale || locale.split(\"-\")[0] === lowerMaybeSupportedLocale,\n );\n}\n\nexport function navigatorLocale() {\n if (!navigator.language) return undefined;\n\n const [language, region] = navigator.language.split(\"-\");\n\n if (region) {\n return parseLocale(`${language}-${region.toUpperCase()}`) ?? parseLocale(language);\n }\n\n return parseLocale(language);\n}\n\n// export function useSetLocaleFromUrl() {\n// const parsed = useParsedQueryString();\n// const [userLocale, setUserLocale] = useUserLocaleManager();\n\n// useEffect(() => {\n// const urlLocale =\n// typeof parsed.lng === \"string\" ? parseLocale(parsed.lng) : undefined;\n// if (urlLocale && urlLocale !== userLocale) {\n// setUserLocale(urlLocale);\n// }\n// }, [parsed.lng, setUserLocale, userLocale]);\n// }\n\nexport function useActiveLocale() {\n return useAppSelector((state) => state.global.userLocale) ?? navigatorLocale() ?? DEFAULT_LOCALE;\n}\n\nexport function useLocaleManager(): [SupportedLocale, (locale: SupportedLocale) => void] {\n const dispatch = useAppDispatch();\n const locale = useActiveLocale();\n\n const setLocale = useCallback(\n (newLocale: SupportedLocale) => {\n dispatch(updateUserLocale(newLocale));\n },\n [dispatch],\n );\n\n return [locale, setLocale];\n}\n","import { useEffect, useState, ReactNode } from \"react\";\nimport { i18n } from \"@lingui/core\";\nimport { I18nProvider } from \"@lingui/react\";\n// import { useActiveLocale, useSetLocaleFromUrl } from \"hooks/useActiveLocale\";\nimport { useActiveLocale } from \"hooks/useActiveLocale\";\nimport { SupportedLocale } from \"constants/locales\";\nimport \"./locales/services\";\n\nasync function dynamicActivate(locale: SupportedLocale) {\n const { messages } = await import(`./locales/${locale}.js`);\n // @ts-ignore\n i18n.loadLocaleData(locale, { plurals: () => plurals[locale] });\n i18n.load(locale, messages);\n i18n.activate(locale);\n}\n\nexport function LanguageProvider({ children }: { children: ReactNode }) {\n // useSetLocaleFromUrl();\n const locale = useActiveLocale();\n const [loaded, setLoaded] = useState(false);\n\n useEffect(() => {\n dynamicActivate(locale)\n .then(() => {\n setLoaded(true);\n })\n .catch((error) => {\n console.error(\"Failed to activate locale\", locale, error);\n });\n }, [locale]);\n\n // prevent the app from rendering with placeholder text before the locale is loaded\n if (!loaded) return null;\n\n return {children};\n}\n","export function isDevelopmentEnv(): boolean {\n return process.env.NODE_ENV === \"development\";\n}\n\nexport function isTestEnv(): boolean {\n return process.env.NODE_ENV === \"test\";\n}\n\nexport function isStagingEnv(): boolean {\n // This is set in vercel builds and deploys from releases/staging.\n return Boolean(process.env.REACT_APP_STAGING);\n}\n\nexport function isProductionEnv(): boolean {\n return process.env.NODE_ENV === \"production\" && !isStagingEnv();\n}\n\nexport function isLocalhost({ hostname }: { hostname: string }): boolean {\n return hostname === \"localhost\";\n}\n\nexport function isSentryEnabled(): boolean {\n // disable in develop\n if (isDevelopmentEnv()) return false;\n\n return process.env.REACT_APP_SENTRY_ENABLED === \"true\";\n}\n\nexport function getEnvName(): \"production\" | \"staging\" | \"development\" {\n if (isStagingEnv()) return \"staging\";\n if (isProductionEnv()) return \"production\";\n\n return \"development\";\n}\n","import * as Sentry from \"@sentry/react\";\nimport { ClientOptions, ErrorEvent } from \"@sentry/types\";\nimport { isSentryEnabled, getEnvName } from \"utils/env\";\nimport { BrowserTracing } from \"@sentry/browser\";\n\nexport function shouldRejectError(error: ErrorEvent) {\n // User reject plug connect\n if (error.message?.includes(\"The agent creation was rejected\")) return true;\n\n // Plug disconnect error\n if (error.message?.includes(\"Attempting to use a disconnected port object\")) return true;\n\n if (\"stack\" in error && typeof error.stack === \"string\") {\n // Errors coming from a browser extension can be ignored. These errors are usually caused by extensions injecting\n // scripts into the page, which we cannot control.\n if (error.stack.match(/-extension:\\/\\//i)) return true;\n }\n\n // Network error\n if (error.message?.match(/Failed to fetch/)) return true;\n\n // Failed to load some static files\n if (error.message?.match(/Load failed/)) return true;\n\n // These are caused by user navigation away from the page before a request has finished.\n if (error instanceof DOMException && error?.name === \"AbortError\") return true;\n\n return false;\n}\n\n/**\n * Filters known (ignorable) errors out before sending them to Sentry. Also, adds tags to the event.\n * Intended as a {@link ClientOptions.beforeSend} callback. Returning null filters the error from Sentry.\n */\nexport const beforeSend: Required[\"beforeSend\"] = (event: ErrorEvent) => {\n if (shouldRejectError(event)) {\n return null;\n }\n\n return event;\n};\n\nSentry.init({\n dsn: process.env.REACT_APP_SENTRY_DSN,\n environment: getEnvName(),\n enabled: isSentryEnabled(),\n tracesSampleRate: Number(process.env.REACT_APP_SENTRY_TRACES_SAMPLE_RATE ?? 0),\n beforeSend,\n integrations: [\n new BrowserTracing({\n startTransactionOnLocationChange: false,\n startTransactionOnPageLoad: true,\n }),\n ],\n});\n","import { createRoot } from \"react-dom/client\";\nimport { BrowserRouter } from \"react-router-dom\";\nimport { Provider } from \"react-redux\";\nimport { PersistGate } from \"redux-persist/lib/integration/react\";\n\nimport * as serviceWorker from \"./serviceWorker\";\nimport store, { persistor } from \"./store/index\";\nimport App from \"./App\";\nimport { LanguageProvider } from \"./i18n\";\nimport \"./tracing\";\nimport \"./assets/css/global.css\";\n\nwindow.onerror = (msg, url, row, col, error) => {\n const _error = error ? error.toString() : \"\";\n console.error(msg, url, row, col, error, \"msg, row, col, error\");\n // update users not reload error debug\n if (/Loading chunk *.{1,} failed./.test(_error) || /Unexpected token '<'/.test(_error)) {\n window.location.reload();\n }\n};\n\n// @ts-ignore\n// Fix astrox me wallet's bug\nwindow.process = {};\n\nconst root = document.getElementById(\"root\") as HTMLElement;\n\ncreateRoot(root).render(\n // @ts-ignore TODO:FIX\n \n \n \n \n \n \n \n \n ,\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n","import { t } from \"@lingui/macro\";\n\nexport type Locals = {\n [key: string]: string;\n};\n\nexport const TokenLocales: Locals = {\n insufficient_cycles_balance: t`Insufficient cycles balance`,\n invalid_value: t`Invalid value`,\n has_been_initialized: t`Has been initialized`,\n no_sufficient_balance: t`Insufficient balance`,\n unsupported_operator: t`Unsupported operator`,\n no_balance: t`Insufficient balance`,\n no_enough_balance: t`Insufficient balance`,\n permission_deined: t`Permission denied`,\n not_mint_token_list: t`You are not in the whitelist`,\n max_tokens_limit: t`No seat for the Mint Token authority.`,\n token_exists: t`Token exists`,\n invaild_token_symbol: t`Invalid token symbol`,\n insufficient_ics_balance: t`Insufficient token balance`,\n mint_token_error: t`Mint token error`,\n InsufficientBalance: t`Insufficient Balance`,\n handling_fee_error: t`Insufficient Balance`,\n};\n\nexport const SwapLocales: Locals = {\n \"mint liquidity failed\": t`Failed to mint liquidity`,\n \"collect failed\": t`Failed to Collect`,\n \"burn failed\": t`Failed to burn`,\n \"create pool task is busy, please try again later\": t`Create pool task is busy, please try again later`,\n \"token amount should be more than triple the transfer fee\": t`Token amount should be more than triple the transfer fee`,\n \"position can not be burned if not cleared\": t`Position can not be burned if not cleared`,\n \"high price impact\": t`High price impact`,\n};\n\nexport const NFTLocals: Locals = {\n NFT_claim_paused: t`The claim function is not open now. Stay tuned`,\n NFT_claim_email_code_error: t`Failed to claim. Please check your email or airdrop redemption code`,\n NFT_was_claimed: t`Failed to claim. This airdrop redemption code has been claimed`,\n NFT_claim_exceeded: t`You have reached a limit for claiming NFT`,\n NFT_token_not_exist: t`The claiming NFT tokenId does not exist`,\n \"Insufficient ICP balance\": t`Insufficient WICP balance`,\n \"exceeded max supply\": t`Exceed the limit of supply`,\n permission_denied: t`Permission denied`,\n \"Canister not found\": t`Can't not find this canister`,\n \"Check collection name or creator\": t`Invalid collection name or creator`,\n \"NFTCanisterController insufficient cycles balance\": t`Insufficient cycles balance`,\n \"Exceeded max supply\": t`Exceeded max supply`,\n \"Must use amount of 1\": t`Must use amount of 1`,\n \"Without authorization\": t`Without authorization`,\n \"Invalid owner\": t`Invalid owner`,\n \"Invalid token\": t`Invalid token`,\n can_not_find_token: t`Can't not find this token`,\n \"Order not found\": t`Order not found`,\n \"Trading stoped\": t`Trading was stopped`,\n \"Request error\": t`Request error`,\n \"NFT royalties are too high\": t`NFT royalties are too high`,\n \"Please complete the authorization operation\": t`Please complete the authorization operation`,\n \"Order is locked\": t`Order is locked`,\n \"Trade faild\": t`Failed to Trade`,\n \"Operation failed\": t`Operation failed`,\n \"Tx hash is not exist\": t`Tx hash is not exist`,\n \"Tx fee settle error\": t`Tx fee settle error`,\n \"Royalties fee settle error\": t`Royalties fee settle error`,\n \"Transfer wicp to seller error\": t`An error occurred while transferring token to the seller`,\n \"FullMath illegal result\": t`FullMath illegal result`,\n \"Buyer and seller are the same\": t`Buyer and seller are the same`,\n \"Operation failed e2\": t`Operation failed e2`,\n \"Operation failed e1\": t`Operation failed e1`,\n \"NFT transfer for the market failed\": t`Failed to transfer NFT for the market`,\n \"Order does not exist\": t`Order does not exist`,\n};\n\nexport const StakingLocals: Locals = {\n \"ward amount must be positive\": t`Reward amount must be positive`,\n \"The start time must be now or in the future\": t`The start time must be now or in the future`,\n \"The start time must be recent\": t`The start time must be recent`,\n \"The start time must be earlier than the end time\": t`The start time must be earlier than the end time`,\n \"The incentive duration is too long\": t`The incentive duration is too long`,\n \"An error occurred during the reward token transfer\": t`An error occurred during the reward token transfer`,\n \"The creator does not have permission to use this feature\": t`The creator does not have permission to use this feature`,\n \"You can't end the incentive pool because there are still staking users\": t`You can't end the incentive pool because there are still staking users`,\n \"The incentive pool cannot be terminated before the end time\": t`The incentive pool cannot be terminated before the end time`,\n \"You have not available refund\": t`You have not available refund`,\n \"The incentive pool cannot be terminated because there are staked NFTs in the incentive pool\": t`The incentive pool cannot be terminated because there are staked NFTs in the incentive pool`,\n \"The position(LP) NFT canister has not been found\": t`The position(LP) NFT canister has not been found`,\n \"The position(LP) NFT you staked is incorrect and does not match the current incentive pool\": t`The position(LP) NFT you staked is incorrect and does not match the current incentive pool`,\n \"The position(LP) NFT has already staked\": t`The position(LP) NFT has already staked`,\n \"Incentive is closure\": t`Incentive pool is closure`,\n \"The incentive pool has not started\": t`The incentive pool has not started`,\n \"The incentive pool has ended\": t`The incentive pool has ended`,\n \"Cannot endincentive while depositsMap are staked\": t`Cannot endincentive while epositsMap are staked`,\n \"The incentive pool doesn't exist\": t`The incentive pool doesn't exist`,\n \"The position(LP) NFT has not incentive pool\": t`The position(LP) NFT has not incentive pool`,\n \"You can not stake position(LP) NFT of no liquidity\": t`You can not stake position(LP) NFT of no liquidity`,\n \"You may not stake the same NFT more than once\": t`You may not stake the same NFT more than once`,\n \"NFT you staked is not you\": t`NFT you staked is not you`,\n \"You cannot withdraw to staker the Position(LP) NFT\": t`You cannot withdraw to staker the Position(LP) NFT`,\n \"Only position(LP) nft owners can withdraw them before the end of the incentive pool\": t`Only position(LP) nft owners can withdraw them before the end of the incentive pool`,\n \"You withdrawed a position(LP) NFT of no liquidity\": t`You withdrew a position(LP) NFT of no liquidity`,\n \"Error in transferring NFT, please change your account and try again\": t`Error in transferring NFT, please change your account and try again`,\n \"Error in withdrawing, please change your account and try again\": t`Error in withdrawing, please change your account and try again`,\n \"The position(LP) NFT has not staked\": t`The position(LP) NFT has not staked`,\n \"Created successfully\": t`Created successfully`,\n \"End the incentive pool successfully\": t`Ended the incentive pool successfully`,\n \"Staked successfully\": t`Staked successfully`,\n \"Deposited Successfully\": t`Deposited Successfully`,\n \"Withdrew Successfully\": t`Withdrew Successfully`,\n \"Harvest successfully\": t`Harvested successfully`,\n \"Harvest Failurefully\": t`Failed to harvest`,\n \"StartTime must be now or in the future\": t`StartTime must be now or in the future`,\n \"StartTime too far intoFuture\": t`StartTime too far intoFuture`,\n \"StartTime must be before end time\": t`StartTime must be before end time`,\n \"Incentive duration is too long\": t`Incentive duration is too long`,\n \"A minimum of 1000 Tokens are required to create a pool\": t`A minimum of 1000 Tokens are required to create a pool`,\n \"Create Storage canister Failurefully\": t`Failed to created storage canister`,\n \"Create SwapStaker Canister Failurefully\": t`Failed to create SwapStaker canister`,\n \"Adapter metadata query error\": t`Adapter metadata query error`,\n \"Approved successfully\": t`Approved successfully`,\n \"Create SingleSmartChefStaker Successfully\": t`Created SingleSmartChefStaker successfully`,\n \"The amount of withdrawal is less than the staking token transfer fee\": t`The amount of withdrawal is less than the staking token transfer fee`,\n \"The amount of deposit is less than the staking token transfer fee\": t`The amount of deposit is less than the staking token transfer fee`,\n \"The withdrawal task is busy, and please try again later\": t`The withdrawal task is busy, and please try again later`,\n \"The amount of withdrawal can’t be 0\": t`The amount of withdrawal can’t be 0`,\n \"The amount of deposit can’t be 0\": t`The amount of deposit can’t be 0`,\n \"The deposit task is busy, and please try again later\": t`The deposit task is busy, and please try again later`,\n \"The harvest task is busy, and please try again later\": t`The harvest task is busy, and please try again later`,\n};\n\nexport const WICPLocales: Locals = {\n Unauthorized: t`Unauthorized`,\n error_to_address: t`Invalid To Address`,\n amount_too_small: t`Requested amount is too small`,\n used_block_height: t`The block height has been used`,\n block_error: t`Invalid block height`,\n insufficient_funds: t`Insufficient funds`,\n InsufficientBalance: \"Insufficient balance\",\n unexpected_error: \"Unexpected error\",\n};\n\nexport const VoteMessages: Locals = {\n \"Proposal has no voting rights allocated\": t`Proposal has no voting rights allocated`,\n};\n\nexport const XTCMessages: Locals = {\n InsufficientBalance: t`Insufficient Balance`,\n InvalidTokenContract: t`Invalid token contract`,\n NotSufficientLiquidity: t`Insufficient liquidity`,\n};\n\nexport const ClaimMessages: Locals = {\n \"Your claim quota wasn't found\": t`Sorry, this address is not eligible to claim`,\n};\n\n// This is a map of message and it's locale id\nexport const MessageMaps: Locals = {\n ...NFTLocals,\n ...TokenLocales,\n ...WICPLocales,\n ...StakingLocals,\n ...SwapLocales,\n ...ClaimMessages,\n ...XTCMessages,\n ...VoteMessages,\n};\n\nexport const getLocaleMessage = (message: string): string => {\n const id = MessageMaps[message];\n const msg = t({ id });\n\n return msg || message;\n};\n","import storage from \"redux-persist/lib/storage\";\n\nconst KEY = \"ICPSwap-all-canisters\";\n\nexport async function getAllCanisters() {\n const allCanisters = await storage.getItem(KEY);\n return allCanisters?.split(\",\");\n}\n\nexport async function setAllCanisters(canisterIds: string[]) {\n const storageAllCanisters = await getAllCanisters();\n\n const allCanisters = [...(storageAllCanisters ?? []), ...canisterIds];\n\n await storage.setItem(KEY, [...new Set(allCanisters)].join(\",\"));\n}\n\nexport async function updateCanisters(canisterIds: string[]) {\n await setAllCanisters(canisterIds);\n}\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { LoginState } from \"./states\";\n\nexport const login = createAction(\"auth/login\");\n\nexport const logout = createAction(\"auth/logout\");\n\nexport const updateConnected = createAction<{ isConnected: boolean }>(\"auth/updateConnected\");\n\nexport const updateWalletConnector = createAction(\"global/updateWalletConnector\");\n","import { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { principalToAccount, isPrincipal } from \"@icpswap/utils\";\nimport { Connector } from \"constants/wallet\";\nimport { Principal } from \"@dfinity/principal\";\nimport { getConnectorIsConnected, getConnectorPrincipal, connector, WalletConnector } from \"utils/connector\";\nimport { isMeWebview } from \"utils/connector/me\";\nimport { actor } from \"@icpswap/actor\";\nimport store from \"../index\";\nimport { login, logout, updateConnected, updateWalletConnector } from \"./actions\";\nimport { updateLockStatus as _updateLockStatus } from \"../session/actions\";\n\nexport function useIsUnLocked() {\n return useAppSelector((state) => state.session.isUnLocked);\n}\n\nexport function getConnectorType() {\n let connectorType = store.getState().auth.walletType;\n if (isMeWebview()) connectorType = Connector.ME;\n return connectorType;\n}\n\nexport function useConnectorType() {\n const connectorType = getConnectorType();\n return useMemo(() => connectorType, [connectorType]);\n}\n\nexport async function connectToConnector(connectorType: Connector) {\n await connector.init(connectorType);\n\n if (!(await connector.isConnected())) {\n await connector.connect();\n } else if (connector.connector) {\n window.icConnector = connector.connector;\n }\n\n return await getConnectorIsConnected();\n}\n\nexport function useConnectorStateConnected() {\n const isConnected = useAppSelector((state) => state.auth.isConnected);\n const isUnLocked = useAppSelector((state) => state.session.isUnLocked);\n const walletType = useAppSelector((state) => state.auth.walletType);\n\n if (!walletType) return false;\n if (walletType === Connector.PLUG && !isUnLocked) return false;\n return isConnected;\n}\n\nexport function getStoreWalletConnected() {\n const { auth } = store.getState();\n return auth.isConnected;\n}\n\nexport function getStoreWalletUnlocked() {\n const { session } = store.getState();\n return session.isUnLocked;\n}\n\nexport interface UpdateAuthProps {\n walletType: Connector;\n}\n\nexport async function updateAuth({ walletType }: UpdateAuthProps) {\n const state = store.getState();\n\n const principal = await getConnectorPrincipal();\n\n if (!principal) return;\n\n const account = principalToAccount(principal);\n\n const mnemonic =\n walletType === Connector.ICPSwap || walletType === Connector.STOIC_MNEMONIC ? state.auth.mnemonic : \"\";\n const password =\n walletType === Connector.ICPSwap || walletType === Connector.STOIC_MNEMONIC ? state.auth.password : \"\";\n\n store.dispatch(\n login({\n name: walletType,\n mnemonic,\n account,\n principal,\n walletType,\n password,\n }),\n );\n\n store.dispatch(updateConnected({ isConnected: true }));\n store.dispatch(_updateLockStatus(false));\n}\n\nexport function setActorHttpAgent() {\n const { auth } = store.getState();\n const { walletType } = auth;\n\n if (!walletType) return;\n\n actor.setConnector(walletType);\n}\n\nexport function updateLockStatus(locked: boolean) {\n store.dispatch(_updateLockStatus(locked));\n}\n\nexport function useUserLogout() {\n const dispatch = useAppDispatch();\n const walletType = useConnectorType();\n\n return useCallback(async () => {\n await dispatch(logout());\n if (walletType && window.icConnector) window.icConnector.disconnect();\n await updateLockStatus(true);\n dispatch(updateConnected({ isConnected: false }));\n }, [dispatch, updateLockStatus]);\n}\n\nexport function useConnectManager() {\n const dispatch = useAppDispatch();\n const [loading, setLoading] = useState(true);\n\n const connectorStateConnected = useConnectorStateConnected();\n const isUnLocked = useIsUnLocked();\n const logout = useUserLogout();\n\n useEffect(() => {\n async function call() {\n const connectorType = getConnectorType();\n if (!connectorType) {\n dispatch(updateConnected({ isConnected: false }));\n setLoading(false);\n return;\n }\n\n const new_connector = await WalletConnector.create(connectorType);\n const expired = await new_connector.expired();\n\n if (expired) {\n logout();\n setLoading(false);\n return;\n }\n\n const isConnected = await connectToConnector(connectorType);\n\n if (connectorType === Connector.ME) {\n updateAuth({ walletType: Connector.ME });\n }\n\n dispatch(updateConnected({ isConnected }));\n\n if (isConnected) setActorHttpAgent();\n\n setLoading(false);\n }\n\n call();\n }, [isUnLocked]);\n\n return useMemo(() => ({ isConnected: connectorStateConnected, loading }), [connectorStateConnected, loading]);\n}\n\nexport function useAccountPrincipal(): Principal | undefined {\n const principal = useAppSelector((state) => state.auth.principal);\n const walletType = useAppSelector((state) => state.auth.walletType);\n const isUnLocked = useAppSelector((state) => state.session.isUnLocked);\n\n return useMemo(() => {\n if (!principal) return undefined;\n if (walletType === Connector.PLUG && !isUnLocked) return undefined;\n if (isPrincipal(principal)) return principal as Principal;\n return Principal.fromText(principal);\n }, [principal, walletType, isUnLocked]);\n}\n\nexport function useAccount() {\n const principal = useAccountPrincipal();\n\n return useMemo(() => {\n if (!principal) return undefined;\n return principalToAccount(principal.toString());\n }, [principal]);\n}\n\nexport function useAccountPrincipalString() {\n const principal = useAccountPrincipal();\n\n return useMemo(() => {\n return principal?.toString();\n }, [principal]);\n}\n\nexport function useWalletConnectorManager(): [boolean, (open: boolean) => void] {\n const dispatch = useAppDispatch();\n const open = useAppSelector((state) => state.auth.walletConnectorOpen);\n\n const manage = useCallback(\n (open: boolean) => {\n dispatch(updateWalletConnector(open));\n },\n [dispatch],\n );\n\n return [open, manage];\n}\n","import { createAction } from \"@reduxjs/toolkit\";\n\nexport const updateCallResult = createAction<{ callKey: string; result: any }>(\"auth/updateCallResult\");\n\nexport const updateCallIndex = createAction(\"auth/updateCallIndex\");\n\nexport const updateCallKeys = createAction<{ callKey: string; callIndex: number }>(\"auth/updateCallKeys\");\n","import { createAction } from \"@reduxjs/toolkit\";\n\nexport const changeTheme = createAction(\"customization/changeTheme\");\nexport const updateLocal = createAction(\"customization/updateLocal\");\nexport const updateHideUnavailableClaim = createAction(\"customization/updateHideUnavailableClaim\");\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { ICPPriceInfo } from \"types/token\";\nimport { SupportedLocale } from \"constants/locales\";\nimport { TokenListMetadata } from \"types/token-list\";\nimport { type AllTokenOfSwapTokenInfo } from \"@icpswap/types\";\n\nexport const updateXDR2USD = createAction(\"global/updateXDR2USD\");\n\nexport const updateICPPriceList = createAction(\"global/updateICPPriceList\");\n\nexport const updateUserLocale = createAction(\"global/updateUserLocale\");\n\nexport const updateTokenList = createAction(\"global/updateTokenList\");\n\nexport const updateAllSwapTokens = createAction(\"global/updateAllSwapTokens\");\n","import { useCallback } from \"react\";\nimport { exchangeRate } from \"@icpswap/actor\";\nimport { useCallsData } from \"./useCallData\";\nimport { parseTokenAmount } from \"@icpswap/utils\";\n\nexport async function getExchangeRates() {\n return await (await exchangeRate()).get_exchange_rates();\n}\n\nexport function useExchangeRates() {\n return useCallsData(\n useCallback(async () => {\n return await getExchangeRates();\n }, [])\n );\n}\n\nexport async function getExchangeRate(pair: string) {\n return await (await exchangeRate()).get_exchange_rate(pair);\n}\n\nexport function useExchangeRate(pair: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n return await getExchangeRate(pair!);\n }, [pair]),\n !!pair\n );\n}\n\nexport async function getXDR2USD() {\n const result = await getExchangeRate(\"f_USD-f_XDR\");\n return parseTokenAmount(result.rate, result.decimals).toString();\n}\n\nexport function useXDR2USD() {\n return useCallsData(\n useCallback(async () => {\n return await getXDR2USD();\n }, [])\n );\n}\n","import { useCallback } from \"react\";\nimport { resultFormat } from \"@icpswap/utils\";\nimport { useCallsData } from \"./useCallData\";\n\ntype PriceResult = [number, number];\n\ntype ICPPriceResult = {\n icp_xdr_conversion_rates: PriceResult[];\n};\n\nexport async function get100ICPPriceInfo() {\n const now = new Date().getTime();\n const start = now - 10 * 24 * 60 * 60 * 1000;\n\n const fetch_result = await fetch(\n `https://ic-api.internetcomputer.org/api/v3/icp-xdr-conversion-rates?start=${parseInt(\n (start / 1000).toString(),\n 10,\n )}&end=${parseInt((now / 1000).toString(), 10)}&step=600`,\n ).catch(() => undefined);\n\n if (!fetch_result) return undefined;\n\n const result = (await fetch_result.json()) as { icp_xdr_conversion_rates: ICPPriceResult };\n\n return resultFormat(result.icp_xdr_conversion_rates).data;\n}\n\nexport function use100ICPPriceInfo() {\n return useCallsData(\n useCallback(async () => {\n return await get100ICPPriceInfo();\n }, []),\n );\n}\n","import { useEffect, useMemo, useState } from \"react\";\nimport { ICP } from \"@icpswap/tokens\";\nimport { parseTokenAmount, BigNumber } from \"@icpswap/utils\";\nimport { AppState } from \"store/index\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport {\n use100ICPPriceInfo,\n useXDR2USD,\n useTokensFromList,\n getLimitedInfinityCall,\n getAllTokensOfSwap,\n} from \"@icpswap/hooks\";\nimport { AllTokenOfSwapTokenInfo } from \"@icpswap/types\";\n\nimport { updateXDR2USD, updateICPPriceList, updateTokenList, updateAllSwapTokens } from \"./actions\";\n\nexport function useAccount() {\n return useAppSelector((state: AppState) => state.auth.account);\n}\n\nexport function useGlobalTokenList() {\n return useAppSelector((state: AppState) => state.global.tokenList);\n}\n\nexport function useICPPriceList() {\n return useAppSelector((state: AppState) => state.global.ICPPriceList);\n}\n\nexport interface SwapToken {\n canisterId: string;\n symbol: string;\n name: string;\n decimals: number;\n}\n\nexport function useICPPrice() {\n const ICPPriceList = useICPPriceList();\n\n return useMemo(() => {\n if (ICPPriceList && ICPPriceList.length) {\n const price = ICPPriceList[ICPPriceList.length - 1].value;\n return price;\n }\n return undefined;\n }, [ICPPriceList]);\n}\n\nexport function useICPAmountUSDValue(amount: number | null | string | undefined | bigint) {\n const ICPPrice = useICPPrice();\n\n return useMemo(() => {\n if (!ICPPrice || !amount) return undefined;\n return new BigNumber(ICPPrice).multipliedBy(parseTokenAmount(amount, ICP.decimals));\n }, [ICPPrice, amount]);\n}\n\nexport function useICP2CyclesManager() {\n const ICPPriceList = useICPPriceList();\n\n return useMemo(() => {\n if (ICPPriceList && ICPPriceList.length) {\n return ICPPriceList[ICPPriceList.length - 1]?.xdr ?? 0;\n }\n return 0;\n }, [ICPPriceList]);\n}\n\nexport function useStateXDR2USD() {\n return useAppSelector((state: AppState) => state.global.xdr_usdt);\n}\n\nexport function useFetchXDR2USD() {\n const dispatch = useAppDispatch();\n\n const { result: xdr_usd } = useXDR2USD();\n\n useEffect(() => {\n async function call() {\n if (xdr_usd) {\n dispatch(updateXDR2USD(Number(xdr_usd)));\n }\n }\n\n call();\n }, [xdr_usd]);\n}\n\nexport function useFetchICPPrices() {\n const dispatch = useAppDispatch();\n const xdr_usdt = useStateXDR2USD();\n\n const { result: icpPrices } = use100ICPPriceInfo();\n\n useEffect(() => {\n if (!icpPrices || !xdr_usdt || icpPrices.length === 0) return;\n\n const priceList = icpPrices.map((ele) => ({\n value: new BigNumber(new BigNumber(ele[1]).dividedBy(10000).times(xdr_usdt).toFixed(4)).toNumber(),\n timestamp: ele[0].toString(),\n xdr: new BigNumber(ele[1]).dividedBy(10000).toString(),\n }));\n\n dispatch(updateICPPriceList(priceList));\n }, [xdr_usdt, icpPrices]);\n}\n\nexport function useFetchGlobalTokenList() {\n const dispatch = useAppDispatch();\n const { result: tokens, loading } = useTokensFromList();\n\n useEffect(() => {\n if (tokens && tokens.length > 0) {\n const allTokensFromList = [...tokens].sort((a, b) => {\n if (a && b) {\n if (a.rank < b.rank) return -1;\n if (a.rank === b.rank) return 0;\n if (a.rank > b.rank) return 1;\n }\n\n return 0;\n });\n\n dispatch(updateTokenList(allTokensFromList));\n }\n }, [tokens, dispatch]);\n\n return {\n loading,\n result: tokens,\n };\n}\n\nexport function useTokenIsInTokenList(tokenId: string | undefined) {\n const globalTokenList = useGlobalTokenList();\n\n return useMemo(() => {\n if (!tokenId || !globalTokenList || globalTokenList.length === 0) return false;\n const token = globalTokenList.find((e) => e.canisterId === tokenId);\n return Boolean(token);\n }, [globalTokenList, tokenId]);\n}\n\nexport function useStateSwapAllTokens() {\n return useAppSelector((state: AppState) => state.global.allSwapTokens);\n}\n\nexport function useFetchAllSwapTokens() {\n const dispatch = useAppDispatch();\n const allSwapTokens = useStateSwapAllTokens();\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n const fetch = async (offset: number, limit: number) => {\n const result = await getAllTokensOfSwap(offset, limit);\n return result?.content;\n };\n\n async function call() {\n if (allSwapTokens.length > 0 || loading) return;\n\n setLoading(true);\n const data = await getLimitedInfinityCall(fetch, 1000, 2);\n dispatch(updateAllSwapTokens(data));\n setLoading(false);\n }\n\n call();\n }, [allSwapTokens, dispatch]);\n\n return useMemo(() => ({ loading, result: allSwapTokens }), [loading, allSwapTokens]);\n}\n","import { TypedUseSelectorHook, useDispatch, useSelector } from \"react-redux\";\nimport store, { AppState } from \"./index\";\n\nexport const useAppDispatch = () => useDispatch();\nexport const useAppSelector: TypedUseSelectorHook = useSelector;\n\nexport * from \"./swap/hooks\";\nexport * from \"./swap/cache/hooks\";\n","export interface CustomizationState {\n fontFamily: string;\n mode: string;\n locale: string;\n rtlLayout: boolean;\n hideUnavailableClaim: boolean;\n}\n\nexport const initialState: CustomizationState = {\n fontFamily: `'Poppins','Roboto',sans-serif`,\n mode: \"dark\",\n locale: \"en\",\n rtlLayout: false,\n hideUnavailableClaim: true,\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { changeTheme, updateLocal, updateHideUnavailableClaim } from \"./actions\";\nimport { initialState } from \"./states\";\n\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(changeTheme, (state, { payload }) => {\n state.mode = payload;\n })\n .addCase(updateLocal, (state, { payload }) => {\n state.locale = payload;\n })\n .addCase(updateHideUnavailableClaim, (state, { payload }) => {\n state.hideUnavailableClaim = payload;\n });\n});\n","import { SnackbarOrigin, AlertColor } from \"@mui/material\";\n\nexport interface SnackbarState {\n action: boolean;\n open: boolean;\n message: string;\n anchorOrigin: SnackbarOrigin;\n variant: string;\n alertSeverity: AlertColor;\n transition: string;\n close: boolean;\n actionButton: boolean;\n autoHideDuration: number;\n}\n\nexport const initialState: SnackbarState = {\n action: false,\n open: false,\n message: \"No Message Founded\",\n anchorOrigin: {\n vertical: \"top\",\n horizontal: \"right\",\n },\n variant: \"default\",\n alertSeverity: \"success\",\n transition: \"Fade\",\n close: true,\n actionButton: false,\n autoHideDuration: 4000,\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { closeSnackbar, openSnackbar } from \"./actions\";\nimport { initialState } from \"./states\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(openSnackbar, (state, { payload }) => {\n return {\n ...state,\n action: !state.action,\n open: true,\n message: payload.message ? payload.message : initialState.message,\n anchorOrigin: payload.anchorOrigin ? payload.anchorOrigin : initialState.anchorOrigin,\n variant: payload.variant ? payload.variant : initialState.variant,\n alertSeverity: payload.alertSeverity ? payload.alertSeverity : initialState.alertSeverity,\n transition: payload.transition ? payload.transition : initialState.transition,\n close: false,\n actionButton: payload.actionButton ? payload.actionButton : initialState.actionButton,\n };\n })\n .addCase(closeSnackbar, (state) => {\n return {\n ...state,\n action: !state.action,\n open: false,\n message: \"\",\n close: true,\n };\n });\n});\n","import { StoredTxValue } from \"types/ckBTC\";\nimport { WalletSortType, SortBalanceEnum } from \"types/index\";\n\nexport interface WalletState {\n taggedTokens: string[];\n ckBTCAddresses: { [key: string]: string };\n retrieveState: { [key: string]: StoredTxValue[] };\n sort: WalletSortType;\n sortBalance: SortBalanceEnum;\n}\n\nexport const initialState: WalletState = {\n ckBTCAddresses: {},\n retrieveState: {},\n taggedTokens: [],\n sort: \"Default\",\n sortBalance: SortBalanceEnum.ALL,\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport {\n updateTaggedTokens,\n deleteTaggedTokens,\n updateCK_BTCAddresses,\n updateRetrieveState,\n updateWalletSortType,\n updateSortBalance,\n} from \"./actions\";\nimport { initialState } from \"./states\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(updateTaggedTokens, (state, { payload }) => {\n const newTaggedTokens = [...state.taggedTokens, ...payload];\n\n return {\n ...state,\n taggedTokens: newTaggedTokens,\n };\n })\n .addCase(deleteTaggedTokens, (state, { payload }) => {\n const newTaggedTokens = [...state.taggedTokens].filter((token) => !payload.includes(token));\n\n return {\n ...state,\n taggedTokens: newTaggedTokens,\n };\n })\n .addCase(updateCK_BTCAddresses, (state, { payload }) => {\n state.ckBTCAddresses = {\n ...state.ckBTCAddresses,\n [`${payload.principal}_${payload.type}`]: payload.address,\n };\n })\n .addCase(updateRetrieveState, (state, { payload }) => {\n const states = state.retrieveState[`${payload.principal}`]\n ? [...state.retrieveState[`${payload.principal}`]].filter(\n (state) => state.block_index !== String(payload.block_index),\n )\n : [];\n\n const old_state = (\n state.retrieveState[`${payload.principal}`] ? [...state.retrieveState[`${payload.principal}`]] : []\n ).filter((state) => state.block_index === String(payload.block_index))[0];\n\n states.unshift({\n state: payload.state,\n txid: payload.txid,\n block_index: String(payload.block_index),\n value: payload.value ? payload.value : old_state ? old_state.value : \"\",\n });\n\n const _states = states.sort((a, b) => {\n if (Number(a.block_index) > Number(b.block_index)) return -1;\n if (Number(a.block_index) < Number(b.block_index)) return 1;\n return 0;\n });\n\n state.retrieveState[`${payload.principal}`] = _states;\n })\n .addCase(updateWalletSortType, (state, { payload }) => {\n state.sort = payload;\n })\n .addCase(updateSortBalance, (state, { payload }) => {\n state.sortBalance = payload;\n });\n});\n","import { DEFAULT_LOCALE, SupportedLocale } from \"constants/locales\";\nimport { ICPPriceInfo } from \"types/token\";\nimport { TokenListMetadata } from \"types/token-list\";\nimport { type AllTokenOfSwapTokenInfo } from \"@icpswap/types\";\n\nexport interface GlobalState {\n xdr_usdt: number;\n ICPPriceList: ICPPriceInfo[];\n tokenList: TokenListMetadata[];\n hasBeenClaimTestToken: boolean;\n swapTokenList: [];\n userLocale: SupportedLocale;\n poolStandardUpdated: boolean;\n allSwapTokens: AllTokenOfSwapTokenInfo[];\n}\n\nexport const initialState: GlobalState = {\n xdr_usdt: 1.33,\n ICPPriceList: [],\n tokenList: [],\n hasBeenClaimTestToken: false,\n swapTokenList: [],\n userLocale: DEFAULT_LOCALE,\n poolStandardUpdated: false,\n allSwapTokens: [],\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { updateXDR2USD, updateICPPriceList, updateUserLocale, updateTokenList, updateAllSwapTokens } from \"./actions\";\nimport { initialState } from \"./states\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(updateXDR2USD, (state, { payload }) => {\n state.xdr_usdt = payload;\n })\n .addCase(updateICPPriceList, (state, { payload }) => {\n state.ICPPriceList = payload;\n })\n .addCase(updateUserLocale, (state, { payload }) => {\n state.userLocale = payload;\n })\n .addCase(updateTokenList, (state, { payload }) => {\n state.tokenList = payload;\n })\n .addCase(updateAllSwapTokens, (state, { payload }) => {\n state.allSwapTokens = payload;\n });\n});\n","import { SWAP_FIELD } from \"constants/index\";\nimport { DEFAULT_SWAP_INPUT_ID, DEFAULT_SWAP_OUTPUT_ID } from \"constants/swap\";\n\nexport interface SwapState {\n [SWAP_FIELD.INPUT]: { currencyId: string | undefined };\n [SWAP_FIELD.OUTPUT]: { currencyId: string | undefined };\n typedValue: string;\n independentField: SWAP_FIELD;\n poolCanisterIds: { [key: string]: string };\n swapOutAmount: { [key: string]: bigint | undefined };\n decreaseLiquidityAmount: { [key: string]: { amount0: bigint | undefined; amount1: bigint | undefined } };\n}\n\nexport const initialState: SwapState = {\n [SWAP_FIELD.INPUT]: { currencyId: DEFAULT_SWAP_INPUT_ID },\n [SWAP_FIELD.OUTPUT]: { currencyId: DEFAULT_SWAP_OUTPUT_ID },\n typedValue: \"\",\n independentField: SWAP_FIELD.INPUT,\n poolCanisterIds: {},\n swapOutAmount: {},\n decreaseLiquidityAmount: {},\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { SWAP_FIELD } from \"constants/swap\";\nimport {\n typeInput,\n clearSwapState,\n selectCurrency,\n switchCurrencies,\n updatePoolCanisterIds,\n updateSwapOutAmount,\n updateDecreaseLiquidityAmount,\n} from \"./actions\";\nimport { initialState } from \"./state\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(typeInput, (state, { payload }) => {\n const { field: independentField, typedValue } = payload;\n\n state.independentField = independentField;\n state.typedValue = typedValue;\n })\n .addCase(selectCurrency, (state, { payload }) => {\n const { field, currencyId } = payload;\n\n const otherField = field === SWAP_FIELD.INPUT ? SWAP_FIELD.OUTPUT : SWAP_FIELD.INPUT;\n if (currencyId === state[otherField].currencyId) {\n return {\n ...state,\n independentField: state.independentField === SWAP_FIELD.INPUT ? SWAP_FIELD.OUTPUT : SWAP_FIELD.INPUT,\n [field]: { currencyId },\n [otherField]: { currencyId: state[field].currencyId },\n };\n } \n // the normal case\n return {\n ...state,\n [field]: { currencyId },\n };\n \n })\n .addCase(switchCurrencies, (state) => {\n return {\n ...state,\n typedValue: \"\",\n independentField: state.independentField === SWAP_FIELD.INPUT ? SWAP_FIELD.OUTPUT : SWAP_FIELD.INPUT,\n [SWAP_FIELD.INPUT]: { currencyId: state[SWAP_FIELD.OUTPUT].currencyId },\n [SWAP_FIELD.OUTPUT]: { currencyId: state[SWAP_FIELD.INPUT].currencyId },\n };\n })\n .addCase(clearSwapState, () => {\n return initialState;\n })\n .addCase(updatePoolCanisterIds, (state, { payload }) => {\n state.poolCanisterIds[payload.key] = payload.id;\n })\n .addCase(updateSwapOutAmount, (state, { payload }) => {\n state.swapOutAmount[payload.key] = payload.value;\n })\n .addCase(updateDecreaseLiquidityAmount, (state, { payload }) => {\n state.decreaseLiquidityAmount[payload.key] = { amount0: payload.amount0, amount1: payload.amount1 };\n });\n});\n","import { FIELD } from \"constants/swap\";\n\nexport interface SwapLiquidityState {\n leftRangeValue: string | boolean;\n rightRangeValue: string | boolean;\n startPrice: string;\n independentField: FIELD; // The currency input currently\n typedValue: string;\n}\n\nexport const initialState: SwapLiquidityState = {\n leftRangeValue: \"\",\n rightRangeValue: \"\",\n startPrice: \"\",\n independentField: FIELD.CURRENCY_A,\n typedValue: \"\",\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport {\n updateFiled,\n updateFullRange,\n updateLeftRange,\n updateRightRange,\n updateStartPrice,\n resetMintState,\n} from \"./actions\";\nimport { initialState } from \"./state\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n\n .addCase(updateFiled, (state, { payload }) => {\n const { field, typedValue } = payload;\n\n if (field === state.independentField) {\n return {\n ...state,\n independentField: field,\n typedValue,\n };\n } \n return {\n ...state,\n independentField: field,\n typedValue,\n };\n \n })\n .addCase(updateFullRange, (state) => {\n state.leftRangeValue = true;\n state.rightRangeValue = true;\n })\n .addCase(updateLeftRange, (state, { payload }) => {\n state.leftRangeValue = payload;\n })\n .addCase(updateRightRange, (state, { payload }) => {\n state.rightRangeValue = payload;\n })\n .addCase(updateStartPrice, (state, { payload }) => {\n state.startPrice = payload;\n })\n .addCase(resetMintState, () => {\n return initialState;\n });\n});\n","import {\n DEFAULT_BURN_SLIPPAGE,\n DEFAULT_SWAP_SLIPPAGE,\n DEFAULT_MINT_SLIPPAGE,\n DEFAULT_TRANSACTIONS_DEADLINE,\n DEFAULT_MULTIPLE_APPROVE,\n} from \"constants/swap\";\n\nexport interface SwapCacheState {\n userExpertMode: boolean;\n userSingleHop: boolean;\n userSelectedToken: string[];\n userSlippage: { [key: string]: number };\n userTransactionsDeadline: number;\n taggedTokens: string[];\n showClosedPosition: boolean;\n userPositionPools: string[];\n multipleApprove: number;\n swapProAutoRefresh: boolean;\n keepTokenInPools: boolean;\n}\n\nexport const initialState: SwapCacheState = {\n userExpertMode: false,\n userSingleHop: false,\n userSelectedToken: [],\n userSlippage: {\n swap: DEFAULT_SWAP_SLIPPAGE,\n mint: DEFAULT_MINT_SLIPPAGE,\n burn: DEFAULT_BURN_SLIPPAGE,\n },\n userTransactionsDeadline: DEFAULT_TRANSACTIONS_DEADLINE,\n taggedTokens: [],\n showClosedPosition: true,\n userPositionPools: [],\n multipleApprove: DEFAULT_MULTIPLE_APPROVE,\n swapProAutoRefresh: true,\n keepTokenInPools: false,\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport {\n updateUserExpertMode,\n updateUserSelectedToken,\n updateUserSingleHop,\n updateUserSlippage,\n updateUserTransactionsDeadline,\n updateTaggedTokens,\n removeTaggedTokens,\n updateShowClosedPosition,\n updateUserPositionPools,\n updateUserMultipleApprove,\n updateSwapProAutoRefresh,\n updateKeepTokenInPools,\n} from \"./actions\";\nimport { initialState } from \"./state\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(updateUserExpertMode, (state, { payload }) => {\n state.userExpertMode = payload;\n })\n .addCase(updateUserSelectedToken, (state, { payload }) => {\n state.userSelectedToken = payload;\n })\n .addCase(updateUserSingleHop, (state, { payload }) => {\n state.userSingleHop = payload;\n })\n .addCase(updateUserTransactionsDeadline, (state, { payload }) => {\n state.userTransactionsDeadline = payload;\n })\n .addCase(updateUserSlippage, (state, { payload }) => {\n const { type, value } = payload;\n state.userSlippage[type] = value;\n })\n .addCase(updateTaggedTokens, (state, { payload }) => {\n state.taggedTokens = [...state.taggedTokens, ...payload];\n })\n .addCase(removeTaggedTokens, (state, { payload }) => {\n state.taggedTokens = state.taggedTokens.filter((token) => payload.findIndex((_token) => _token === token) === -1);\n })\n .addCase(updateShowClosedPosition, (state, { payload }) => {\n state.showClosedPosition = payload;\n })\n .addCase(updateUserPositionPools, (state, { payload }) => {\n const { userPositionPools } = state;\n const allPoolIds = [...new Set([...userPositionPools, ...payload])];\n\n state.userPositionPools = allPoolIds;\n })\n .addCase(updateUserMultipleApprove, (state, { payload }) => {\n state.multipleApprove = payload;\n })\n .addCase(updateSwapProAutoRefresh, (state, { payload }) => {\n state.swapProAutoRefresh = payload;\n })\n .addCase(updateKeepTokenInPools, (state, { payload }) => {\n state.keepTokenInPools = payload;\n });\n});\n","import { BURN_FIELD } from \"constants/swap\";\n\nexport interface SwapBurnState {\n typedValue: string;\n independentField: BURN_FIELD;\n}\n\nexport const initialState: SwapBurnState = {\n independentField: BURN_FIELD.LIQUIDITY_PERCENT,\n typedValue: \"0\",\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { updateTypedInput, resetBurnState } from \"./actions\";\nimport { initialState } from \"./state\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(updateTypedInput, (state, { payload }) => {\n const { typedValue, independentField } = payload;\n\n state.independentField = independentField;\n state.typedValue = typedValue;\n })\n .addCase(resetBurnState, () => {\n return initialState;\n });\n});\n","import { ImportedNFT } from \"types/nft\";\n\nexport interface NFTState {\n userSelectedCanisters: string[];\n importedNFTs: ImportedNFT[];\n}\n\nexport const initialState: NFTState = {\n userSelectedCanisters: [],\n importedNFTs: [],\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { updateUserSelectedCanisters, deleteUserSelectedCanisters, importNFT, deleteNFT } from \"./actions\";\nimport { initialState } from \"./states\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(updateUserSelectedCanisters, (state, { payload }) => {\n state.userSelectedCanisters = [...state.userSelectedCanisters, ...(payload ?? [])];\n })\n .addCase(deleteUserSelectedCanisters, (state, { payload }) => {\n const userSelectedCanisters = new Set(state.userSelectedCanisters);\n\n userSelectedCanisters.delete(payload);\n\n state.userSelectedCanisters = [...userSelectedCanisters];\n })\n .addCase(importNFT, (state, { payload }) => {\n state.importedNFTs = state.importedNFTs.concat(payload);\n })\n .addCase(deleteNFT, (state, { payload }) => {\n state.importedNFTs = state.importedNFTs.filter((e) => e.canisterId !== payload.canisterId);\n });\n});\n","import { Connector } from \"constants/wallet\";\n\nexport type LoginState = {\n name: string;\n mnemonic: null | string;\n principal: string;\n walletType: null | Connector;\n account: string;\n password: string;\n};\n\nexport interface AuthState {\n name: string;\n mnemonic: null | string;\n principal: string;\n walletType: null | Connector;\n isConnected: boolean;\n account: string;\n password: string;\n walletConnectorOpen: boolean;\n}\n\nexport const initialState: AuthState = {\n name: \"\",\n mnemonic: null,\n principal: \"\",\n walletType: null,\n isConnected: false,\n account: \"\",\n password: \"\",\n walletConnectorOpen: false,\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { login, logout, updateConnected, updateWalletConnector } from \"./actions\";\nimport { initialState } from \"./states\";\n\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(login, (state, { payload }) => {\n return {\n ...state,\n ...payload,\n };\n })\n .addCase(logout, () => {\n return { ...initialState };\n })\n .addCase(updateConnected, (state, { payload }) => {\n state.isConnected = payload.isConnected;\n })\n .addCase(updateWalletConnector, (state, { payload }) => {\n state.walletConnectorOpen = payload;\n });\n});\n","export interface SessionState {\n isUnLocked: boolean;\n}\n\nexport const initialState: SessionState = {\n isUnLocked: false,\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { updateLockStatus } from \"./actions\";\nimport { initialState } from \"./states\";\n\nexport default createReducer(initialState, (builder) => {\n builder.addCase(updateLockStatus, (state, { payload }) => {\n state.isUnLocked = !payload;\n });\n});\n","import { TOKEN_STANDARD } from \"@icpswap/token-adapter\";\n\nexport interface TokenCacheState {\n standards: { [canisterId: string]: TOKEN_STANDARD };\n allTokenIds: string[];\n}\n\nexport const initialState: TokenCacheState = {\n standards: {},\n allTokenIds: [],\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { updateTokenStandards, updateAllTokenIds } from \"./actions\";\nimport { initialState } from \"./states\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(updateTokenStandards, (state, { payload }) => {\n payload.forEach(({ canisterId, standard }) => {\n if (canisterId) {\n state.standards[canisterId] = standard;\n }\n });\n })\n .addCase(updateAllTokenIds, (state, { payload }) => {\n state.allTokenIds = [...new Set(state.allTokenIds.concat(payload))];\n });\n});\n","export interface CallState {\n callResults: {\n [callKey: string]: any;\n };\n callIndex: number;\n callKeys: {\n [callKey: string]: number;\n };\n}\n\nexport const initialState: CallState = {\n callResults: {},\n callIndex: 0,\n callKeys: {},\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { updateCallResult, updateCallIndex, updateCallKeys } from \"./actions\";\nimport { initialState } from \"./states\";\n\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(updateCallResult, (state, { payload }) => {\n state.callResults = {\n ...state.callResults,\n [payload.callKey]: payload.result,\n };\n })\n .addCase(updateCallIndex, (state) => {\n state.callIndex += 1;\n })\n .addCase(updateCallKeys, (state, { payload }) => {\n state.callKeys = {\n ...state.callKeys,\n [payload.callKey]: payload.callIndex,\n };\n });\n});\n","import { ReactNode } from \"react\";\nimport { type StepContents } from \"types/step\";\n\nexport interface StepDetailsProps {\n title: ReactNode;\n onClose?: () => void;\n content: StepContents[];\n activeStep: number;\n errorStep: number | undefined;\n description?: string;\n}\n\nexport interface StepsState {\n steps: { [key: string]: StepDetailsProps };\n opened: string[];\n key: number;\n data: { [key: string]: any };\n}\n\nexport const initialState: StepsState = {\n steps: {},\n opened: [],\n key: 0,\n data: {},\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { open, close, updateStepDetails, updateKey, closeAll, updateData } from \"./actions\";\nimport { initialState } from \"./state\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(open, (state, { payload }) => {\n if (payload) {\n state.opened = [payload];\n }\n })\n .addCase(close, (state, { payload }) => {\n if (payload && state.opened.includes(payload)) {\n state.opened = [];\n }\n })\n .addCase(closeAll, (state) => {\n state.opened = [];\n })\n .addCase(updateStepDetails, (state, { payload }) => {\n state.steps = {\n ...state.steps,\n [payload.key]: payload.value,\n };\n })\n .addCase(updateKey, (state) => {\n state.key += 1;\n })\n .addCase(updateData, (state, { payload }) => {\n state.data = {\n ...state.data,\n [payload.key]: payload.data,\n };\n });\n});\n","import type { SnsTokensInfo } from \"@icpswap/types\";\n\nexport interface SnsState {\n snsAllTokensInfo: SnsTokensInfo[];\n}\n\nexport const initialState: SnsState = {\n snsAllTokensInfo: [],\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { updateSnsAllTokensInfo } from \"./actions\";\nimport { initialState } from \"./states\";\n\nexport default createReducer(initialState, (builder) => {\n builder.addCase(updateSnsAllTokensInfo, (state, { payload }) => {\n state.snsAllTokensInfo = payload;\n });\n});\n","import { UserPosition } from \"types/swapv2\";\nimport { FIELD } from \"constants/swap\";\n\nexport interface SwapLiquidityState {\n userPositions: (UserPosition | undefined)[];\n leftRangeValue: string | boolean;\n rightRangeValue: string | boolean;\n startPrice: string;\n independentField: FIELD; // The currency input currently\n typedValue: string;\n}\n\nexport const initialState: SwapLiquidityState = {\n userPositions: [],\n leftRangeValue: \"\",\n rightRangeValue: \"\",\n startPrice: \"\",\n independentField: FIELD.CURRENCY_A,\n typedValue: \"\",\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport {\n updateFiled,\n updateFullRange,\n updateLeftRange,\n updateRightRange,\n updateStartPrice,\n updateUserPositions,\n resetMintState,\n} from \"./actions\";\nimport { initialState } from \"./state\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(updateUserPositions, (state, { payload }) => {\n state.userPositions = payload;\n })\n .addCase(updateFiled, (state, { payload }) => {\n const { field, typedValue } = payload;\n\n if (field === state.independentField) {\n return {\n ...state,\n independentField: field,\n typedValue,\n };\n } \n return {\n ...state,\n independentField: field,\n typedValue,\n };\n \n })\n .addCase(updateFullRange, (state) => {\n state.leftRangeValue = true;\n state.rightRangeValue = true;\n })\n .addCase(updateLeftRange, (state, { payload }) => {\n state.leftRangeValue = payload;\n })\n .addCase(updateRightRange, (state, { payload }) => {\n state.rightRangeValue = payload;\n })\n .addCase(updateStartPrice, (state, { payload }) => {\n state.startPrice = payload;\n })\n .addCase(resetMintState, () => {\n return initialState;\n });\n});\n","import {\n DEFAULT_BURN_SLIPPAGE,\n DEFAULT_SWAP_SLIPPAGE,\n DEFAULT_MINT_SLIPPAGE,\n DEFAULT_TRANSACTIONS_DEADLINE,\n} from \"constants/swap\";\n\nexport interface SwapCacheState {\n userExpertMode: boolean;\n userSingleHop: boolean;\n userSelectedToken: string[];\n userSlippage: { [key: string]: number };\n userTransactionsDeadline: number;\n poolCanisterIds: { [key: string]: string };\n taggedTokens: string[];\n}\n\nexport const initialState: SwapCacheState = {\n userExpertMode: false,\n userSingleHop: false,\n userSelectedToken: [],\n userSlippage: {\n swap: DEFAULT_SWAP_SLIPPAGE,\n mint: DEFAULT_MINT_SLIPPAGE,\n burn: DEFAULT_BURN_SLIPPAGE,\n },\n userTransactionsDeadline: DEFAULT_TRANSACTIONS_DEADLINE,\n poolCanisterIds: {},\n taggedTokens: [],\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { updateUserSlippage } from \"./actions\";\nimport { initialState } from \"./state\";\n\nexport default createReducer(initialState, (builder) => {\n builder.addCase(updateUserSlippage, (state, { payload }) => {\n const { type, value } = payload;\n state.userSlippage[type] = value;\n });\n});\n","import { BURN_FIELD } from \"constants/swap\";\n\nexport interface SwapBurnState {\n typedValue: string;\n independentField: BURN_FIELD;\n}\n\nexport const initialState: SwapBurnState = {\n independentField: BURN_FIELD.LIQUIDITY_PERCENT,\n typedValue: \"0\",\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { updateTypedInput, resetBurnState } from \"./actions\";\nimport { initialState } from \"./state\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(updateTypedInput, (state, { payload }) => {\n const { typedValue, independentField } = payload;\n\n state.independentField = independentField;\n state.typedValue = typedValue;\n })\n .addCase(resetBurnState, () => {\n return initialState;\n });\n});\n","import { TX } from \"types/web3\";\nimport { StoredWithdrawTxValue } from \"types/ckETH\";\n\nexport interface Web3State {\n tx: { [principal: string]: TX[] };\n withdrawTx: { [principal: string]: StoredWithdrawTxValue[] };\n erc20Transactions: { [principal_ledger: string]: TX[] };\n}\n\nexport const initialState: Web3State = {\n tx: {},\n withdrawTx: {},\n erc20Transactions: {},\n};\n","import { createReducer } from \"@reduxjs/toolkit\";\nimport { updateTX, updateErc20TX, updateWithdrawTX } from \"./actions\";\nimport { initialState } from \"./states\";\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(updateTX, (state, { payload }) => {\n const allTx = state.tx[`${payload.principal}`] ? [payload.tx, ...state.tx[`${payload.principal}`]] : [payload.tx];\n state.tx[`${payload.principal}`] = allTx;\n })\n .addCase(updateWithdrawTX, (state, { payload }) => {\n const otherStates = state.withdrawTx[`${payload.principal}`]\n ? [...state.withdrawTx[`${payload.principal}`]].filter(\n (transaction) => transaction.block_index !== String(payload.tx.block_index),\n )\n : [];\n\n const old_state = (\n state.withdrawTx[`${payload.principal}`] ? [...state.withdrawTx[`${payload.principal}`]] : []\n ).filter((transaction) => transaction.block_index === String(payload.tx.block_index))[0];\n\n otherStates.unshift({\n state: payload.tx.state,\n hash: payload.tx.hash ?? old_state?.hash,\n block_index: String(payload.tx.block_index),\n value: payload.tx.value ? payload.tx.value : old_state ? old_state.value : \"\",\n });\n\n const newStates = otherStates.sort((a, b) => {\n if (Number(a.block_index) > Number(b.block_index)) return -1;\n if (Number(a.block_index) < Number(b.block_index)) return 1;\n return 0;\n });\n\n state.withdrawTx[`${payload.principal}`] = newStates;\n })\n .addCase(updateErc20TX, (state, { payload }) => {\n const key = `${payload.principal}_${payload.ledger_id}`;\n const allTx = state.erc20Transactions[key] ? [payload.tx, ...state.erc20Transactions[key]] : [payload.tx];\n state.erc20Transactions[key] = allTx;\n });\n});\n","import customizationReducer from \"./customization/reducer\";\nimport snackbarReducer from \"./snackbar/reducer\";\nimport walletReducer from \"./wallet/reducer\";\nimport globalReducer from \"./global/reducer\";\nimport loadingReducer from \"./loadingReducer\";\nimport SwapReducer from \"./swap/reducer\";\nimport SwapLiquidityReducer from \"./swap/liquidity/reducer\";\nimport SwapCacheReducer from \"./swap/cache/reducer\";\nimport SwapBurn from \"./swap/burn/reducer\";\nimport NFTReducer from \"./nft/reducer\";\nimport AuthReducer from \"./auth/reducer\";\nimport sessionReducer from \"./session/reducer\";\nimport tokenCacheReducer from \"./token/cache/reducer\";\nimport callReducer from \"./call/reducer\";\nimport StepReducer from \"./steps/reducer\";\nimport SnsReducer from \"./sns/reducer\";\nimport TransactionsReducer from \"./transactions/reducer\";\n\nimport SwapV2LiquidityReducer from \"./swapv2/liquidity/reducer\";\nimport SwapV2CacheReducer from \"./swapv2/cache/reducer\";\nimport SwapV2Burn from \"./swapv2/burn/reducer\";\nimport Web3 from \"./web3/reducer\";\n\nexport { sessionReducer };\n\nexport default {\n customization: customizationReducer,\n snackbar: snackbarReducer,\n loading: loadingReducer,\n wallet: walletReducer,\n global: globalReducer,\n swap: SwapReducer,\n swapCache: SwapCacheReducer,\n swapLiquidity: SwapLiquidityReducer,\n swapBurn: SwapBurn,\n nft: NFTReducer,\n auth: AuthReducer,\n call: callReducer,\n step: StepReducer,\n tokenCache: tokenCacheReducer,\n transactions: TransactionsReducer,\n\n swapV2Cache: SwapV2CacheReducer,\n swapV2Liquidity: SwapV2LiquidityReducer,\n swapV2Burn: SwapV2Burn,\n web3: Web3,\n sns: SnsReducer,\n};\n","import { configureStore } from \"@reduxjs/toolkit\";\nimport { AnyAction, combineReducers } from \"redux\";\nimport { persistStore, persistReducer } from \"redux-persist\";\nimport storage from \"redux-persist/lib/storage\";\nimport sessionStorage from \"redux-persist/lib/storage/session\";\nimport autoMergeLevel2 from \"redux-persist/lib/stateReconciler/autoMergeLevel2\";\nimport { PersistState } from \"redux-persist/es/types\";\nimport allReducer, { sessionReducer } from \"./reducer\";\n\nimport { AuthState } from \"./auth/states\";\nimport { SessionState } from \"./session/states\";\nimport { GlobalState } from \"./global/states\";\nimport { NFTTradeState } from \"./NFTTrade/states\";\nimport { SnackbarState } from \"./snackbar/states\";\nimport { LoadingState } from \"./loadingReducer\";\nimport { NFTState } from \"./nft/states\";\nimport { WalletState } from \"./wallet/states\";\nimport { CustomizationState } from \"./customization/states\";\nimport { SwapBurnState } from \"./swap/burn/state\";\nimport { SwapLiquidityState } from \"./swap/liquidity/state\";\nimport { SwapCacheState } from \"./swap/cache/state\";\nimport { SwapState } from \"./swap/state\";\nimport { TokenCacheState } from \"./token/cache/states\";\nimport { CallState } from \"./call/states\";\nimport { StepsState } from \"./steps/state\";\nimport { Web3State } from \"./web3/states\";\nimport { SnsState } from \"./sns/states\";\nimport { TransactionsState } from \"./transactions/reducer\";\n\nimport { SwapBurnState as SwapV2BurnState } from \"./swapv2/burn/state\";\nimport { SwapLiquidityState as SwapV2LiquidityState } from \"./swapv2/liquidity/state\";\nimport { SwapCacheState as SwapV2CacheState } from \"./swapv2/cache/state\";\n\ninterface PersistPartial {\n _persist: PersistState;\n}\nexport interface AllState {\n auth: AuthState;\n session: SessionState & PersistPartial;\n global: GlobalState;\n loading: LoadingState;\n cache: any;\n snackbar: SnackbarState;\n swap: SwapState;\n swapLiquidity: SwapLiquidityState;\n swapBurn: SwapBurnState;\n swapCache: SwapCacheState;\n tokenCache: TokenCacheState;\n customization: CustomizationState;\n wallet: WalletState;\n nft: NFTState;\n NFTTrade: NFTTradeState;\n call: CallState;\n step: StepsState;\n swapV2Burn: SwapV2BurnState;\n swapV2Liquidity: SwapV2LiquidityState;\n swapV2Cache: SwapV2CacheState;\n web3: Web3State;\n sns: SnsState;\n transactions: TransactionsState;\n}\n\nconst defaultStorageConfig = {\n storage,\n stateReconciler: autoMergeLevel2,\n version: 0,\n};\n\nconst rootPersistConfig = {\n key: \"root\",\n ...defaultStorageConfig,\n blacklist: [\n \"cache\",\n \"session\",\n \"global\",\n \"loading\",\n \"snackbar\",\n \"swap\",\n \"swapLiquidity\",\n \"swapBurn\",\n \"call\",\n \"step\",\n \"swapV2Liquidity\",\n \"swapV2Burn\",\n \"sns\",\n ],\n migrate: (state: any) => {\n let newState = {};\n\n if (state?._persist?.version === -1) {\n newState = { ...(state ?? {}), auth: {} };\n } else {\n newState = { ...(state ?? {}) };\n }\n\n // 11/17/2023 Fix some incorrect token cache\n if (state?._persist?.version === 1) {\n newState = { ...(state ?? {}), tokenCache: {} };\n } else {\n newState = { ...(state ?? {}) };\n }\n\n // 12/06/2023 Fix ckETH cache\n if (state?._persist?.version === 2) {\n newState = { ...(state ?? {}), tokenCache: {} };\n } else {\n newState = { ...(state ?? {}) };\n }\n\n return Promise.resolve(newState);\n },\n version: 3,\n};\n\nconst SessionPersistConfig = {\n key: \"session\",\n storage: sessionStorage,\n stateReconciler: autoMergeLevel2,\n version: 3,\n};\n\nconst rootReducer = combineReducers({\n ...allReducer,\n session: persistReducer(SessionPersistConfig, sessionReducer),\n});\n\n// @ts-ignore\nconst PersistReducer = persistReducer(rootPersistConfig, rootReducer);\n\nconst store = configureStore({\n reducer: PersistReducer,\n middleware: (getDefaultMiddleware) => getDefaultMiddleware({ thunk: true, serializableCheck: false }),\n});\n\nexport const persistor = persistStore(store);\n\nexport type AppState = ReturnType;\nexport type AppDispatch = typeof store.dispatch;\n\nexport default store;\n","import { createAction , createReducer } from \"@reduxjs/toolkit\";\n\nexport const openLoading = createAction(\"loading/open\");\nexport const closeLoading = createAction(\"loading/close\");\n\nexport interface LoadingState {\n open: boolean;\n}\n\nconst initialState: LoadingState = {\n open: false,\n};\n\nexport default createReducer(initialState, (builder) => {\n builder\n .addCase(openLoading, (state) => {\n state.open = true;\n })\n .addCase(closeLoading, (state) => {\n state.open = false;\n });\n});\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { NFT_STANDARDS } from \"@icpswap/constants\";\n\nexport const updateUserSelectedCanisters = createAction(\"NFT/updateUserSelectedCanisters\");\n\nexport const deleteUserSelectedCanisters = createAction(\"NFT/deleteUserSelectedCanisters\");\n\nexport const importNFT = createAction<{ canisterId: string; standard: NFT_STANDARDS }>(\"NFT/importNFT\");\n\nexport const deleteNFT = createAction<{ canisterId: string }>(\"NFT/deleteNFT\");\n","import { createAction } from \"@reduxjs/toolkit\";\n\nexport const updateLockStatus = createAction(\"session/updateLockStatus\");\n","import { createAction } from \"@reduxjs/toolkit\";\n\nexport const openSnackbar = createAction<{ [key: string]: any }>(\"snackbar/openSnackbar\");\nexport const closeSnackbar = createAction(\"snackbar/closeSnackbar\");\n","import { createAction } from \"@reduxjs/toolkit\";\nimport type { SnsTokensInfo } from \"@icpswap/types\";\n\nexport const updateSnsAllTokensInfo = createAction(\"global/updateSnsAllTokensInfo\");\n","import { useEffect, useMemo, useState } from \"react\";\nimport { AppState } from \"store/index\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport { getSnsAllTokensInfo } from \"@icpswap/hooks\";\nimport { updateSnsAllTokensInfo } from \"./actions\";\n\nexport function useStateSnsAllTokensInfo() {\n return useAppSelector((state: AppState) => state.sns.snsAllTokensInfo);\n}\n\nexport function useFetchSnsAllTokensInfo() {\n const dispatch = useAppDispatch();\n const allTokensInfo = useStateSnsAllTokensInfo();\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n async function call() {\n if (allTokensInfo.length > 0 || loading) return;\n\n setLoading(true);\n const data = await getSnsAllTokensInfo();\n dispatch(updateSnsAllTokensInfo(data));\n setLoading(false);\n }\n\n call();\n }, [dispatch]);\n\n return useMemo(() => ({ loading, result: allTokensInfo }), [loading, allTokensInfo]);\n}\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { StepDetailsProps } from \"./state\";\n\nexport const updateStepDetails = createAction<{ key: string; value: StepDetailsProps }>(\"steps/updateStepDetails\");\n\nexport const open = createAction(\"steps/open\");\n\nexport const close = createAction(\"steps/close\");\n\nexport const updateKey = createAction(\"steps/updateKey\");\n\nexport const closeAll = createAction(\"steps/closeAll\");\n\nexport const updateData = createAction<{ key: string; data: any }>(\"steps/updateData\");\n","import { useCallback, useMemo } from \"react\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport type { StepDetails } from \"types/step\";\n\nimport { open, close, updateStepDetails, updateKey, closeAll, updateData } from \"./actions\";\nimport store from \"../index\";\n\nexport function getStepDetails(key: string) {\n return store.getState().step.steps[key];\n}\n\nexport function useCurrKey() {\n return useAppSelector((state) => state.step.key);\n}\n\nexport function useUpdateKey() {\n const dispatch = useAppDispatch();\n\n return useCallback(() => {\n dispatch(updateKey());\n }, [dispatch]);\n}\n\nexport function useStepManager() {\n const dispatch = useAppDispatch();\n\n const openCall = useCallback(\n (key: string | undefined) => {\n dispatch(open(key));\n },\n [dispatch],\n );\n\n const closeCall = useCallback(\n (key: string | undefined) => {\n dispatch(close(key));\n },\n [dispatch],\n );\n\n return useMemo(\n () => ({\n open: openCall,\n close: closeCall,\n }),\n [openCall, closeCall],\n );\n}\n\nexport function useCloseAllSteps() {\n const dispatch = useAppDispatch();\n\n return useCallback(() => {\n dispatch(closeAll());\n }, [dispatch]);\n}\n\nexport function useStepContentManager() {\n const dispatch = useAppDispatch();\n const { close } = useStepManager();\n\n return useCallback(\n (key: string, step: StepDetails) => {\n const prevStep = getStepDetails(key) ?? {};\n\n dispatch(\n updateStepDetails({\n key,\n value: {\n ...step,\n activeStep: prevStep.activeStep ?? 0,\n errorStep: prevStep.errorStep,\n onClose: () => close(key),\n },\n }),\n );\n },\n [dispatch, close],\n );\n}\n\nexport function useUpdateCallStep() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (key: string, activeStep: number, errorStep: number | undefined) => {\n const prevStep = getStepDetails(key) ?? {};\n\n dispatch(updateStepDetails({ key, value: { ...prevStep, activeStep, errorStep } }));\n },\n [dispatch],\n );\n}\n\nexport function useOpenedSteps() {\n return useAppSelector((state) => state.step.opened);\n}\n\nexport function useStepDetails(key: string) {\n return useAppSelector((state) => state.step.steps[key]);\n}\n\nexport function useStepData(key: string) {\n return useAppSelector((state) => state.step.data[key]) as T;\n}\n\nexport function getStepData(key: string) {\n return store.getState().step.data[key] as T;\n}\n\nexport function useUpdateStepData() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (key: string, data: any) => {\n dispatch(updateData({ key, data }));\n },\n [dispatch],\n );\n}\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { SWAP_FIELD } from \"constants/swap\";\n\nexport const selectCurrency = createAction<{ field: SWAP_FIELD; currencyId: string | undefined }>(\n \"swap/selectCurrency\",\n);\n\nexport const switchCurrencies = createAction(\"swap/switchCurrencies\");\n\nexport const typeInput = createAction<{ field: SWAP_FIELD; typedValue: string }>(\"swap/typeInput\");\n\nexport const clearSwapState = createAction(\"swap/clearSwapState\");\n\nexport type PoolCanisterRecord = { key: string; id: string };\n\nexport const updatePoolCanisterIds = createAction(\"swapCache/updatePoolCanisterIds\");\n\nexport const updateSwapOutAmount = createAction<{ key: string; value: bigint | undefined }>(\"swap/updateSwapOutAmount\");\n\nexport const updateDecreaseLiquidityAmount = createAction<{\n key: string;\n amount0: bigint | undefined;\n amount1: bigint | undefined;\n}>(\"swap/updateDecreaseLiquidityAmount\");\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { BURN_FIELD } from \"constants/swap\";\n\nexport interface updateTypedInputPayload {\n independentField: BURN_FIELD;\n typedValue: string;\n}\n\nexport const updateTypedInput = createAction(\"swapBurn/updateTypedInput\");\n\nexport const resetBurnState = createAction(\"swapBurn/resetBurnState\");\n","import { createAction } from \"@reduxjs/toolkit\";\n\nexport const updateUserExpertMode = createAction(\"swapCache/updateUserExpertMode\");\n\nexport const updateUserSingleHop = createAction(\"swapCache/updateUserSingleHop\");\n\nexport const updateUserSelectedToken = createAction(\"swapCache/updateUserSelectedToken\");\n\nexport const updateUserSlippage = createAction<{ type: string; value: number }>(\"swapCache/updateUserSlippage\");\n\nexport const updateUserTransactionsDeadline = createAction(\"swapCache/updateUserTransactionsDeadline\");\n\nexport const updateTaggedTokens = createAction(\"swapCache/updateTaggedToken\");\n\nexport const removeTaggedTokens = createAction(\"swapCache/removeTaggedTokens\");\n\nexport const updateShowClosedPosition = createAction(\"swapCache/updateShowClosedPosition\");\n\nexport const updateUserPositionPools = createAction(\"swapCache/updateUserPositionPools\");\n\nexport const updateUserMultipleApprove = createAction(\"swapCache/updateUserMultipleApprove\");\n\nexport const updateSwapProAutoRefresh = createAction(\"global/updateSwapProAutoRefresh\");\n\nexport const updateKeepTokenInPools = createAction(\"swapCache/updateKeepTokenInPools\");\n","import { useCallback, useEffect, useMemo, useState } from \"react\";\nimport { useUserPositionPools } from \"@icpswap/hooks\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport { slippageToPercent, getDefaultSlippageTolerance } from \"constants/swap\";\nimport { useAccount } from \"store/auth/hooks\";\nimport { Percent } from \"@icpswap/swap-sdk\";\nimport {\n updateUserExpertMode,\n updateUserSingleHop,\n updateUserSelectedToken,\n updateUserTransactionsDeadline,\n updateUserSlippage,\n updateTaggedTokens,\n removeTaggedTokens,\n updateShowClosedPosition,\n updateUserPositionPools,\n updateUserMultipleApprove,\n updateSwapProAutoRefresh,\n updateKeepTokenInPools,\n} from \"./actions\";\n\nexport function useIsExpertMode() {\n return useAppSelector((state) => state.swapCache.userExpertMode);\n}\n\nexport function useIsSingleHop() {\n return useAppSelector((state) => state.swapCache.userSingleHop);\n}\n\nexport function useUserSlippage() {\n return useAppSelector((state) => state.swapCache.userSlippage);\n}\n\nexport function useUserTransactionsDeadline() {\n return useAppSelector((state) => state.swapCache.userTransactionsDeadline);\n}\n\nexport function useExpertModeManager(): [boolean, () => void] {\n const dispatch = useAppDispatch();\n const expertMode = useIsExpertMode();\n\n const toggleSetExpertMode = useCallback(() => {\n dispatch(updateUserExpertMode(!expertMode));\n }, [dispatch, expertMode]);\n\n return [expertMode, toggleSetExpertMode];\n}\n\nexport function useSingleHopManager(): [boolean, () => void] {\n const dispatch = useAppDispatch();\n const singleHop = useIsSingleHop();\n\n const toggleSetSingleHop = useCallback(() => {\n dispatch(updateUserSingleHop(!singleHop));\n }, [dispatch, singleHop]);\n\n return [singleHop, toggleSetSingleHop];\n}\n\nexport function useUserSelectedToken() {\n return useAppSelector((state) => state.swapCache.userSelectedToken);\n}\n\nexport function useMultipleApproveManager() {\n const dispatch = useAppDispatch();\n const multipleApprove = useAppSelector((state) => state.swapCache.multipleApprove);\n\n const updateMultipleApprove = useCallback(\n (multipleApprove: number) => {\n dispatch(updateUserMultipleApprove(multipleApprove));\n },\n [dispatch, multipleApprove],\n );\n\n return useMemo(() => ({ multipleApprove, updateMultipleApprove }), [updateMultipleApprove, multipleApprove]);\n}\n\nexport function useSelectedTokenManage(): [string[], (tokenIds: string[]) => void] {\n const dispatch = useAppDispatch();\n const userSelectedToken = useUserSelectedToken();\n\n const setUserSelectedToken = useCallback(\n (checkedToken: string[]) => {\n dispatch(updateUserSelectedToken(checkedToken));\n },\n [dispatch],\n );\n return [userSelectedToken, setUserSelectedToken];\n}\n\nexport function useSlippageManager(type: string): [number, (value: number) => void] {\n const dispatch = useAppDispatch();\n const userSlippage = useUserSlippage()[type];\n\n const setUserSlippage = useCallback(\n (value: number) => {\n dispatch(updateUserSlippage({ type, value }));\n },\n [dispatch],\n );\n\n return [userSlippage, setUserSlippage];\n}\n\nexport function useSlippageToleranceToPercent(type: string) {\n const [slippageTolerance] = useSlippageManager(type);\n\n return useMemo(() => {\n if (slippageTolerance || slippageTolerance === 0) {\n return slippageToPercent(slippageTolerance);\n }\n\n let percentSlippage: Percent | null = null;\n // input change will case error when value is 0.\n try {\n percentSlippage = slippageToPercent(getDefaultSlippageTolerance(type));\n } catch {\n percentSlippage = slippageToPercent(getDefaultSlippageTolerance(type));\n }\n\n return percentSlippage;\n }, [slippageTolerance, slippageToPercent]);\n}\n\nexport function useTransactionsDeadlineManager(): [number, (value: number) => void] {\n const dispatch = useAppDispatch();\n const transactionDeadline = useUserTransactionsDeadline();\n\n const setTransactionsDeadline = useCallback(\n (value: number) => {\n dispatch(updateUserTransactionsDeadline(value));\n },\n [dispatch],\n );\n\n return [transactionDeadline, setTransactionsDeadline];\n}\n\nexport function useTaggedTokenManager(): [string[], (tokens: string[]) => void, (tokens: string[]) => void] {\n const dispatch = useAppDispatch();\n\n const taggedTokens = useAppSelector((state) => state.swapCache.taggedTokens);\n\n const updateTaggedTokensCall = useCallback(\n (tokens: string[]) => {\n dispatch(updateTaggedTokens(tokens));\n },\n [dispatch],\n );\n\n const removeTaggedTokensCall = useCallback(\n (tokens: string[]) => {\n dispatch(removeTaggedTokens(tokens));\n },\n [dispatch],\n );\n\n return useMemo(\n () => [taggedTokens, updateTaggedTokensCall, removeTaggedTokensCall],\n [taggedTokens, updateTaggedTokensCall, removeTaggedTokensCall],\n );\n}\n\nexport function useClosedPositionManager(): [boolean, (bool: boolean) => void] {\n const showClosedPosition = useAppSelector((state) => state.swapCache.showClosedPosition);\n const dispatch = useAppDispatch();\n\n const update = useCallback(\n (bool: boolean) => {\n dispatch(updateShowClosedPosition(bool));\n },\n [dispatch],\n );\n\n return useMemo(() => [showClosedPosition, update], [showClosedPosition, update]);\n}\n\nexport function useStoreUserPositionPools() {\n return useAppSelector((state) => state.swapCache.userPositionPools);\n}\n\nexport function useUpdateUserPositionPools() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (poolIds: string[]) => {\n dispatch(updateUserPositionPools(poolIds));\n },\n [dispatch],\n );\n}\n\nexport function useInitialUserPositionPools() {\n const account = useAccount();\n const storeUserPositionPools = useStoreUserPositionPools();\n const updateStoreUserPositionPools = useUpdateUserPositionPools();\n\n const [initialLoading, setInitialLoading] = useState(true);\n\n const { result: positionPools, loading } = useUserPositionPools(account);\n\n useEffect(() => {\n if (positionPools) {\n const allPoolIds = [...new Set([...storeUserPositionPools, ...positionPools])];\n updateStoreUserPositionPools(allPoolIds);\n setInitialLoading(false);\n } else if (loading === false) {\n setInitialLoading(false);\n }\n }, [JSON.stringify(storeUserPositionPools), positionPools, updateStoreUserPositionPools, loading]);\n\n return {\n loading: initialLoading,\n };\n}\n\nexport function useSwapProAutoRefresh() {\n return useAppSelector((state) => state.swapCache.swapProAutoRefresh);\n}\n\nexport function useSwapProAutoRefreshManager(): [boolean, (autoRefresh: boolean) => void] {\n const dispatch = useAppDispatch();\n const swapProAutoRefresh = useSwapProAutoRefresh();\n\n const callback = useCallback(\n (autoRefresh: boolean) => {\n dispatch(updateSwapProAutoRefresh(autoRefresh));\n },\n [dispatch],\n );\n\n return useMemo(() => [swapProAutoRefresh, callback], [swapProAutoRefresh, callback]);\n}\n\nexport function useSwapKeepTokenInPools() {\n return useAppSelector((state) => state.swapCache.keepTokenInPools);\n}\n\nexport function useSwapKeepTokenInPoolsManager(): [boolean, (autoRefresh: boolean) => void] {\n const dispatch = useAppDispatch();\n const keepTokenInPools = useSwapKeepTokenInPools();\n\n const callback = useCallback(\n (keepTokenInPools: boolean) => {\n dispatch(updateKeepTokenInPools(keepTokenInPools));\n },\n [dispatch],\n );\n\n return useMemo(() => [keepTokenInPools, callback], [keepTokenInPools, callback]);\n}\n","import { useCallback, useEffect, useMemo } from \"react\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport { SWAP_FIELD } from \"constants/swap\";\nimport { useToken } from \"hooks/useCurrency\";\nimport { tryParseAmount, inputNumberCheck, isUseTransfer } from \"utils/index\";\nimport { TradeState, useBestTrade } from \"hooks/swap/useTrade\";\nimport { useAccountPrincipal } from \"store/auth/hooks\";\nimport { useCurrencyBalance } from \"hooks/token/useTokenBalance\";\nimport { useSlippageToleranceToPercent } from \"store/swap/cache/hooks\";\nimport { t } from \"@lingui/macro\";\nimport { getTokenInsufficient } from \"hooks/swap/index\";\nimport useDebounce from \"hooks/useDebounce\";\nimport store from \"store/index\";\nimport { useParsedQueryString, useUserUnusedBalance, useTokenBalance, useDebouncedChangeHandler } from \"@icpswap/hooks\";\nimport { isValidPrincipal, formatTokenAmount, isNullArgs } from \"@icpswap/utils\";\nimport { SubAccount } from \"@dfinity/ledger-icp\";\nimport { useAllowance } from \"hooks/token\";\nimport { useAllBalanceMaxSpend } from \"hooks/swap/useMaxAmountSpend\";\n\nimport {\n selectCurrency,\n switchCurrencies,\n typeInput,\n clearSwapState,\n updatePoolCanisterIds,\n PoolCanisterRecord,\n updateSwapOutAmount,\n updateDecreaseLiquidityAmount,\n} from \"./actions\";\n\nexport function useSwapHandlers() {\n const dispatch = useAppDispatch();\n\n const onCurrencySelection = useCallback(\n (field: SWAP_FIELD, currencyId: string | undefined) => {\n dispatch(\n selectCurrency({\n field,\n currencyId,\n }),\n );\n },\n [dispatch],\n );\n\n const onSwitchTokens = useCallback(() => {\n dispatch(switchCurrencies());\n }, [dispatch]);\n\n const [, debouncedSwitchTokens] = useDebouncedChangeHandler(undefined, onSwitchTokens, 500);\n\n const onUserInput = useCallback(\n (field: SWAP_FIELD, typedValue: string) => {\n dispatch(typeInput({ field, typedValue }));\n },\n [dispatch],\n );\n\n return {\n onCurrencySelection,\n onSwitchTokens: debouncedSwitchTokens,\n onUserInput,\n };\n}\n\nexport function useSwapState() {\n return useAppSelector((state) => state.swap);\n}\n\nexport function useCleanSwapState() {\n const dispatch = useAppDispatch();\n\n return useCallback(() => dispatch(clearSwapState()), [dispatch]);\n}\n\nexport interface UseSwapInfoArgs {\n refresh?: number | boolean;\n}\n\nexport function useSwapInfo({ refresh }: UseSwapInfoArgs) {\n const principal = useAccountPrincipal();\n const userSlippageTolerance = useSlippageToleranceToPercent(\"swap\");\n\n const sub = useMemo(() => {\n return principal ? SubAccount.fromPrincipal(principal).toUint8Array() : undefined;\n }, [principal]);\n\n const {\n independentField,\n typedValue,\n [SWAP_FIELD.INPUT]: { currencyId: inputCurrencyId },\n [SWAP_FIELD.OUTPUT]: { currencyId: outputCurrencyId },\n } = useSwapState();\n\n const [inputCurrencyState, inputToken] = useToken(inputCurrencyId);\n const [outputCurrencyState, outputToken] = useToken(outputCurrencyId);\n\n const isExactIn = independentField === SWAP_FIELD.INPUT;\n\n const { result: inputCurrencyBalance } = useCurrencyBalance(principal, inputToken, refresh);\n const { result: outputCurrencyBalance } = useCurrencyBalance(principal, outputToken, refresh);\n\n const currencyBalances = {\n [SWAP_FIELD.INPUT]: inputCurrencyBalance,\n [SWAP_FIELD.OUTPUT]: outputCurrencyBalance,\n };\n\n const parsedAmount = tryParseAmount(typedValue, (isExactIn ? inputToken : outputToken) ?? undefined);\n\n const currencies = {\n [SWAP_FIELD.INPUT]: inputToken ?? undefined,\n [SWAP_FIELD.OUTPUT]: outputToken ?? undefined,\n };\n\n const otherCurrency = (isExactIn ? outputToken : inputToken) ?? undefined;\n\n const [debouncedTypedValue] = useDebounce(\n useMemo(() => [typedValue, otherCurrency], [typedValue, otherCurrency]),\n 600,\n );\n\n const Trade = useBestTrade(\n inputToken,\n outputToken,\n !typedValue || typedValue === \"0\" || debouncedTypedValue !== typedValue ? undefined : debouncedTypedValue,\n );\n\n const poolId = useMemo(() => Trade?.tradePoolId, [Trade]);\n\n // DIP20 not support subaccount balance\n // So useTokenBalance is 0 by default if standard is DIP20\n const { result: __inputTokenSubBalance } = useTokenBalance({\n canisterId: inputToken?.address,\n address: poolId,\n sub,\n refresh,\n });\n const { result: __outputTokenSubBalance } = useTokenBalance({\n canisterId: outputToken?.address,\n address: poolId,\n sub,\n refresh,\n });\n\n const inputTokenSubBalance = useMemo(() => {\n if (!principal) return undefined;\n return __inputTokenSubBalance;\n }, [__inputTokenSubBalance, principal]);\n\n const outputTokenSubBalance = useMemo(() => {\n if (!principal) return undefined;\n return __outputTokenSubBalance;\n }, [__outputTokenSubBalance]);\n\n const { result: unusedBalance } = useUserUnusedBalance(poolId, principal, refresh);\n const { inputTokenUnusedBalance, outputTokenUnusedBalance } = useMemo(() => {\n if (!poolId || !unusedBalance || !inputToken) return {};\n\n const pool = Trade.routes[0].pools[0];\n\n return {\n inputTokenUnusedBalance:\n pool.token0.address === inputToken.address ? unusedBalance.balance0 : unusedBalance.balance1,\n outputTokenUnusedBalance:\n pool.token0.address === inputToken.address ? unusedBalance.balance1 : unusedBalance.balance0,\n };\n }, [Trade, inputToken, unusedBalance]);\n\n const allowanceTokenId = useMemo(() => {\n if (!inputToken) return undefined;\n\n return isUseTransfer(inputToken) ? undefined : inputToken.address;\n }, [inputToken]);\n\n const { result: allowance } = useAllowance({\n canisterId: allowanceTokenId,\n owner: principal?.toString(),\n spender: poolId,\n });\n\n const tokenInsufficient = getTokenInsufficient({\n token: inputToken,\n subAccountBalance: inputTokenSubBalance,\n balance: formatTokenAmount(inputCurrencyBalance?.toExact(), inputToken?.decimals),\n formatTokenAmount: formatTokenAmount(typedValue, inputToken?.decimals).toString(),\n unusedBalance: inputTokenUnusedBalance,\n allowance,\n });\n\n const maxInputAmount = useAllBalanceMaxSpend({\n token: inputToken,\n balance: formatTokenAmount(inputCurrencyBalance?.toExact(), inputToken?.decimals).toString(),\n poolId: Trade?.tradePoolId,\n subBalance: inputTokenSubBalance,\n unusedBalance: inputTokenUnusedBalance,\n allowance,\n });\n\n const inputError = useMemo(() => {\n if (!currencies[SWAP_FIELD.INPUT] || !currencies[SWAP_FIELD.OUTPUT]) return t`Select a token`;\n if (!parsedAmount) return t`Enter an amount`;\n if (!typedValue || typedValue === \"0\") return t`Amount should large than trans fee`;\n if (!inputTokenSubBalance || isNullArgs(inputTokenUnusedBalance)) return t`Swap`;\n if (inputNumberCheck(typedValue) === false) return t`Amount exceeds limit`;\n if (typeof Trade.available === \"boolean\" && !Trade.available) return t`This pool is not available now`;\n if (tokenInsufficient === \"INSUFFICIENT\") return `Insufficient ${inputToken?.symbol} balance`;\n\n return null;\n }, [typedValue, parsedAmount, currencies, inputTokenSubBalance, inputTokenUnusedBalance, Trade, tokenInsufficient]);\n\n return {\n currencies,\n inputError,\n parsedAmount,\n trade: Trade?.trade,\n state: Trade?.state ?? TradeState.INVALID,\n available: Trade?.available,\n tradePoolId: Trade?.tradePoolId,\n routes: Trade?.routes,\n noLiquidity: Trade?.noLiquidity,\n currencyBalances,\n userSlippageTolerance,\n inputToken,\n outputToken,\n inputCurrencyState,\n outputCurrencyState,\n inputTokenUnusedBalance,\n outputTokenUnusedBalance,\n inputTokenSubBalance,\n outputTokenSubBalance,\n inputTokenBalance: formatTokenAmount(inputCurrencyBalance?.toExact(), inputCurrencyBalance?.currency.decimals),\n outputTokenBalance: formatTokenAmount(outputCurrencyBalance?.toExact(), outputCurrencyBalance?.currency.decimals),\n maxInputAmount,\n };\n}\n\nexport function useLoadDefaultParams() {\n const dispatch = useAppDispatch();\n\n const { input, output } = useParsedQueryString() as { input: string | undefined; output: string | undefined };\n\n useEffect(() => {\n if (input !== undefined && isValidPrincipal(input)) {\n dispatch(\n selectCurrency({\n field: SWAP_FIELD.INPUT,\n currencyId: input,\n }),\n );\n }\n\n if (output !== undefined && isValidPrincipal(output)) {\n dispatch(\n selectCurrency({\n field: SWAP_FIELD.OUTPUT,\n currencyId: output,\n }),\n );\n }\n }, [input, output, dispatch]);\n}\n\nexport function usePoolCanisterIdManager(\n key?: string | undefined,\n): [string | undefined, (params: PoolCanisterRecord) => void] {\n const dispatch = useAppDispatch();\n\n const poolIds = useAppSelector((state) => state.swap.poolCanisterIds);\n const poolId = !key ? undefined : poolIds[key];\n\n const updatePoolCanisterId = useCallback(\n ({ key, id }: PoolCanisterRecord) => {\n dispatch(updatePoolCanisterIds({ key, id }));\n },\n [dispatch],\n );\n\n return useMemo(() => [poolId, updatePoolCanisterId], [poolId, updatePoolCanisterId]);\n}\n\nexport function useSwapOutAmount() {\n return useAppSelector((state) => state.swap.swapOutAmount);\n}\n\nexport function getSwapOutAmount(key: string) {\n return store.getState().swap.swapOutAmount[key];\n}\n\nexport function useUpdateSwapOutAmount() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (key: string, amount: bigint | undefined) => {\n dispatch(updateSwapOutAmount({ key, value: amount }));\n },\n [dispatch],\n );\n}\n\nexport function getDecreaseLiquidityAmount(key: string) {\n return store.getState().swap.decreaseLiquidityAmount[key];\n}\n\nexport function useUpdateDecreaseLiquidityAmount() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (key: string, amount0: bigint | undefined, amount1: bigint | undefined) => {\n dispatch(updateDecreaseLiquidityAmount({ key, amount0, amount1 }));\n },\n [dispatch],\n );\n}\n","import { useEffect, useState } from \"react\";\n\n/**\n * Debounces updates to a value.\n * Non-primitives *must* wrap the value in useMemo, or the value will be updated due to referential inequality.\n */\n// modified from https://usehooks.com/useDebounce/\nexport default function useDebounce(value: T, delay: number): T {\n const [debouncedValue, setDebouncedValue] = useState(value);\n\n useEffect(() => {\n // Update debounced value after delay\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay);\n\n // Cancel the timeout if value changes (also on delay change or unmount)\n // This is how we prevent debounced value from updating if value is changed ...\n // .. within the delay period. Timeout gets cleared and restarted.\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n\n return debouncedValue;\n}\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { FIELD } from \"constants/swap\";\n\nexport const updateFiled = createAction<{ field: FIELD; typedValue: string }>(\"swapLiquidity/updateFiled\");\n\nexport const updateLeftRange = createAction(\"swapLiquidity/updateLeftRange\");\n\nexport const updateRightRange = createAction(\"swapLiquidity/updateRightRange\");\n\nexport const updateStartPrice = createAction(\"swapLiquidity/updateStartPrice\");\n\nexport const updateFullRange = createAction(\"swapLiquidity/updateFullRange\");\n\nexport const resetMintState = createAction(\"swapLiquidity/resetMintState\");\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { BURN_FIELD } from \"constants/swap\";\n\nexport interface updateTypedInputPayload {\n independentField: BURN_FIELD;\n typedValue: string;\n}\n\nexport const updateTypedInput = createAction(\"swapV2Burn/updateTypedInput\");\n\nexport const resetBurnState = createAction(\"swapV2Burn/resetBurnState\");\n","import { createAction } from \"@reduxjs/toolkit\";\n\nexport const updateUserSlippage = createAction<{ type: string; value: number }>(\"swapV2Cache/updateUserSlippage\");\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { FIELD } from \"constants/swap\";\nimport { UserPosition } from \"types/swapv2\";\n\nexport const updateUserPositions = createAction<(UserPosition | undefined)[]>(\"swapV2Liquidity/updateUserPositions\");\n\nexport const updateFiled = createAction<{ field: FIELD; typedValue: string }>(\"swapV2Liquidity/updateFiled\");\n\nexport const updateLeftRange = createAction(\"swapV2Liquidity/updateLeftRange\");\n\nexport const updateRightRange = createAction(\"swapV2Liquidity/updateRightRange\");\n\nexport const updateStartPrice = createAction(\"swapV2Liquidity/updateStartPrice\");\n\nexport const updateFullRange = createAction(\"swapV2Liquidity/updateFullRange\");\n\nexport const resetMintState = createAction(\"swapV2Liquidity/resetMintState\");\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { TOKEN_STANDARD } from \"constants/tokens\";\n\nexport const updateTokenStandards =\n createAction<{ canisterId: string; standard: TOKEN_STANDARD }[]>(\"token/updateTokenStandard\");\n\nexport const updateAllTokenIds = createAction(\"token/updateAllTokenIds\");\n","import { useCallback, useMemo } from \"react\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport store from \"store/index\";\nimport { TOKEN_STANDARD } from \"constants/tokens\";\nimport { ICP } from \"@icpswap/tokens\";\nimport { registerTokens } from \"@icpswap/token-adapter\";\nimport { updateTokenStandards } from \"./actions\";\n\ninterface useUpdateTokenStandardProps {\n canisterId: string;\n standard: TOKEN_STANDARD;\n}\n\nexport function useUpdateTokenStandard() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (standards: useUpdateTokenStandardProps[]) => {\n const __standards = standards.map(({ standard, canisterId }) => {\n // Register icp as icrc2 token\n if (canisterId === ICP.address) {\n return { canisterId, standard: TOKEN_STANDARD.ICRC2 };\n // Register usdc as icrc2 token\n }\n\n if (\n canisterId === \"xevnm-gaaaa-aaaar-qafnq-cai\" ||\n canisterId === \"yfumr-cyaaa-aaaar-qaela-cai\" ||\n canisterId === \"vgqnj-miaaa-aaaal-qaapa-cai\"\n ) {\n return { canisterId, standard: TOKEN_STANDARD.ICRC2 };\n }\n\n if (canisterId === \"qfr6e-biaaa-aaaak-qafuq-cai\") {\n return { canisterId, standard: TOKEN_STANDARD.ICRC1 };\n }\n\n return { canisterId, standard };\n });\n\n dispatch(updateTokenStandards(__standards));\n registerTokens(__standards);\n },\n [dispatch],\n );\n}\n\nexport function useTokenStandard(canisterId: string | undefined) {\n const standards = useAppSelector((state) => state.tokenCache.standards);\n\n return useMemo(() => {\n if (canisterId) {\n return standards[canisterId];\n }\n }, [canisterId, standards]);\n}\n\nexport function getTokenStandard(canisterId: string | undefined) {\n const {\n tokenCache: { standards },\n } = store.getState();\n\n if (canisterId) {\n return standards[canisterId];\n }\n}\n\nexport function useTokenStandards() {\n return useAppSelector((state) => state.tokenCache.standards);\n}\n\nexport function useAllTokenIds() {\n return useAppSelector((state) => state.tokenCache.allTokenIds);\n}\n","/* eslint-disable guard-for-in */\nimport { BigNumber } from \"@ethersproject/bignumber\";\nimport type { TransactionResponse } from \"@ethersproject/providers\";\nimport { ChainId } from \"@icpswap/constants\";\nimport { SUPPORTED_CHAINS } from \"constants/web3\";\nimport { useWeb3React } from \"@web3-react/core\";\nimport { useCallback, useMemo } from \"react\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport { ERC20Token } from \"@icpswap/swap-sdk\";\n\nimport { Null } from \"@icpswap/types\";\nimport { addTransaction, cancelTransaction, removeTransaction } from \"./reducer\";\nimport { TransactionDetails, TransactionInfo, TransactionType } from \"./types\";\n\n// helper that can take a ethers library transaction response and add it to the list of transactions\nexport function useTransactionAdder(): (\n response: TransactionResponse,\n info: TransactionInfo,\n deadline?: number,\n) => void {\n const { chainId, account } = useWeb3React();\n const dispatch = useAppDispatch();\n\n return useCallback(\n (response: TransactionResponse, info: TransactionInfo, deadline?: number) => {\n if (!account) return;\n if (!chainId) return;\n\n const { hash, nonce } = response;\n if (!hash) {\n throw Error(\"No transaction hash found.\");\n }\n dispatch(addTransaction({ hash, from: account, info, chainId, nonce, deadline }));\n },\n [account, chainId, dispatch],\n );\n}\n\nexport function useTransactionRemover() {\n const { chainId, account } = useWeb3React();\n const dispatch = useAppDispatch();\n\n return useCallback(\n (hash: string) => {\n if (!account) return;\n if (!chainId) return;\n\n dispatch(removeTransaction({ hash, chainId }));\n },\n [account, chainId, dispatch],\n );\n}\n\nexport function useTransactionCanceller() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (hash: string, chainId: number, cancelHash: string) => {\n dispatch(cancelTransaction({ hash, chainId, cancelHash }));\n },\n [dispatch],\n );\n}\n\nexport function useMultichainTransactions(): [TransactionDetails, ChainId][] {\n const state = useAppSelector((state) => state.transactions);\n return SUPPORTED_CHAINS.flatMap((chainId) =>\n state[chainId] ? Object.values(state[chainId]).map((tx): [TransactionDetails, ChainId] => [tx, chainId]) : [],\n );\n}\n\n// returns all the transactions for the current chain\nfunction useAllTransactions(): { [txHash: string]: TransactionDetails } {\n const { chainId } = useWeb3React();\n\n const state = useAppSelector((state) => state.transactions);\n\n return chainId ? state[chainId] ?? {} : {};\n}\n\nexport function useTransaction(transactionHash?: string): TransactionDetails | undefined {\n const allTransactions = useAllTransactions();\n\n if (!transactionHash) {\n return undefined;\n }\n\n return allTransactions[transactionHash];\n}\n\nexport function isPendingTx(tx: TransactionDetails): boolean {\n return !tx.receipt && !tx.cancelled;\n}\n\nexport function useIsTransactionPending(transactionHash?: string): boolean {\n const transactions = useAllTransactions();\n\n if (!transactionHash || !transactions[transactionHash]) return false;\n\n return isPendingTx(transactions[transactionHash]);\n}\n\nexport function useIsTransactionConfirmed(transactionHash?: string): boolean {\n const transactions = useAllTransactions();\n\n if (!transactionHash || !transactions[transactionHash]) return false;\n\n return Boolean(transactions[transactionHash].receipt);\n}\n\n/**\n * Returns whether a transaction happened in the last day (86400 seconds * 1000 milliseconds / second)\n * @param tx to check for recency\n */\nfunction isTransactionRecent(tx: TransactionDetails): boolean {\n return new Date().getTime() - tx.addedTime < 86_400_000;\n}\n\nfunction usePendingApprovalAmount(token: ERC20Token | Null, spender: string | Null): BigNumber | undefined {\n const allTransactions = useAllTransactions();\n return useMemo(() => {\n if (typeof token?.address !== \"string\" || typeof spender !== \"string\") {\n return undefined;\n }\n for (const txHash in allTransactions) {\n const tx = allTransactions[txHash];\n if (!tx || tx.receipt || tx.info.type !== TransactionType.APPROVAL) continue;\n if (tx.info.spender === spender && tx.info.tokenAddress === token.address && isTransactionRecent(tx)) {\n return BigNumber.from(tx.info.amount);\n }\n }\n return undefined;\n }, [allTransactions, spender, token?.address]);\n}\n\n// returns whether a token has a pending approval transaction\nexport function useHasPendingApproval(token?: ERC20Token | Null, spender?: string | Null): boolean {\n return usePendingApprovalAmount(token, spender)?.gt(0) ?? false;\n}\n\nexport function useHasPendingRevocation(token?: ERC20Token, spender?: string): boolean {\n return usePendingApprovalAmount(token, spender)?.eq(0) ?? false;\n}\n\nexport function usePendingTransactions(): TransactionDetails[] {\n const allTransactions = useAllTransactions();\n const { account } = useWeb3React();\n\n return useMemo(\n () => Object.values(allTransactions).filter((tx) => tx.from === account && isPendingTx(tx)),\n [account, allTransactions],\n );\n}\n","/* eslint-disable no-param-reassign */\nimport { createSlice } from \"@reduxjs/toolkit\";\nimport { ChainId } from \"@icpswap/constants\";\n\nimport { SerializableTransactionReceipt, TransactionDetails, TransactionInfo } from \"./types\";\n\nexport interface TransactionsState {\n [chainId: number]: {\n [txHash: string]: TransactionDetails;\n };\n}\n\ninterface AddTransactionPayload {\n chainId: ChainId;\n from: string;\n hash: string;\n info: TransactionInfo;\n nonce?: number;\n deadline?: number;\n receipt?: SerializableTransactionReceipt;\n}\n\nexport const transactionsState: TransactionsState = {};\n\nconst transactionSlice = createSlice({\n name: \"transactions\",\n initialState: transactionsState,\n reducers: {\n addTransaction(\n transactions,\n { payload: { chainId, from, hash, info, nonce, deadline, receipt } }: { payload: AddTransactionPayload },\n ) {\n if (transactions[chainId]?.[hash]) {\n throw Error(\"Attempted to add existing transaction.\");\n }\n const txs = transactions[chainId] ?? {};\n txs[hash] = { hash, info, from, addedTime: Date.now(), nonce, deadline, receipt };\n transactions[chainId] = txs;\n },\n clearAllTransactions(transactions, { payload: { chainId } }) {\n if (!transactions[chainId]) return;\n transactions[chainId] = {};\n },\n removeTransaction(transactions, { payload: { chainId, hash } }) {\n if (transactions[chainId][hash]) {\n delete transactions[chainId][hash];\n }\n },\n checkedTransaction(transactions, { payload: { chainId, hash, blockNumber } }) {\n const tx = transactions[chainId]?.[hash];\n if (!tx) {\n return;\n }\n if (!tx.lastCheckedBlockNumber) {\n tx.lastCheckedBlockNumber = blockNumber;\n } else {\n tx.lastCheckedBlockNumber = Math.max(blockNumber, tx.lastCheckedBlockNumber);\n }\n },\n finalizeTransaction(transactions, { payload: { hash, chainId, receipt } }) {\n const tx = transactions[chainId]?.[hash];\n if (!tx) {\n return;\n }\n tx.receipt = receipt;\n tx.confirmedTime = Date.now();\n },\n cancelTransaction(transactions, { payload: { hash, chainId, cancelHash } }) {\n const tx = transactions[chainId]?.[hash];\n\n if (tx) {\n delete transactions[chainId]?.[hash];\n transactions[chainId][cancelHash] = {\n ...tx,\n hash: cancelHash,\n cancelled: true,\n };\n }\n },\n },\n});\n\nexport const {\n addTransaction,\n clearAllTransactions,\n checkedTransaction,\n finalizeTransaction,\n removeTransaction,\n cancelTransaction,\n} = transactionSlice.actions;\n\nexport default transactionSlice.reducer;\n","export interface SerializableTransactionReceipt {\n to: string;\n from: string;\n contractAddress: string;\n transactionIndex: number;\n blockHash: string;\n transactionHash: string;\n blockNumber: number;\n status?: number;\n}\n\n/**\n * Be careful adding to this enum, always assign a unique value (typescript will not prevent duplicate values).\n * These values is persisted in state and if you change the value it will cause errors\n */\nexport enum TransactionType {\n APPROVAL = 0,\n SWAP,\n DEPOSIT_LIQUIDITY_STAKING,\n WITHDRAW_LIQUIDITY_STAKING,\n CLAIM,\n VOTE,\n DELEGATE,\n WRAP,\n CREATE_V3_POOL,\n ADD_LIQUIDITY_V3_POOL,\n ADD_LIQUIDITY_V2_POOL,\n MIGRATE_LIQUIDITY_V3,\n COLLECT_FEES,\n REMOVE_LIQUIDITY_V3,\n SUBMIT_PROPOSAL,\n QUEUE,\n EXECUTE,\n BUY,\n SEND,\n RECEIVE,\n MINT,\n BURN,\n BORROW,\n REPAY,\n DEPLOY,\n CANCEL,\n LIMIT,\n}\n\ninterface BaseTransactionInfo {\n type: TransactionType;\n}\n\nexport interface QueueTransactionInfo extends BaseTransactionInfo {\n type: TransactionType.QUEUE;\n governorAddress: string;\n proposalId: number;\n}\n\nexport interface ExecuteTransactionInfo extends BaseTransactionInfo {\n type: TransactionType.EXECUTE;\n governorAddress: string;\n proposalId: number;\n}\n\nexport interface DelegateTransactionInfo extends BaseTransactionInfo {\n type: TransactionType.DELEGATE;\n delegatee: string;\n}\n\nexport interface ApproveTransactionInfo extends BaseTransactionInfo {\n type: TransactionType.APPROVAL;\n tokenAddress: string;\n spender: string;\n amount: string;\n}\n\ninterface DepositLiquidityStakingTransactionInfo {\n type: TransactionType.DEPOSIT_LIQUIDITY_STAKING;\n token0Address: string;\n token1Address: string;\n}\n\ninterface WithdrawLiquidityStakingTransactionInfo {\n type: TransactionType.WITHDRAW_LIQUIDITY_STAKING;\n token0Address: string;\n token1Address: string;\n}\n\nexport interface WrapTransactionInfo {\n type: TransactionType.WRAP;\n unwrapped: boolean;\n currencyAmountRaw: string;\n chainId?: number;\n}\n\nexport interface ClaimTransactionInfo {\n type: TransactionType.CLAIM;\n recipient: string;\n uniAmountRaw?: string;\n}\n\nexport interface CreateV3PoolTransactionInfo {\n type: TransactionType.CREATE_V3_POOL;\n baseCurrencyId: string;\n quoteCurrencyId: string;\n}\n\nexport interface AddLiquidityV3PoolTransactionInfo {\n type: TransactionType.ADD_LIQUIDITY_V3_POOL;\n createPool: boolean;\n baseCurrencyId: string;\n quoteCurrencyId: string;\n feeAmount: number;\n expectedAmountBaseRaw: string;\n expectedAmountQuoteRaw: string;\n}\n\nexport interface AddLiquidityV2PoolTransactionInfo {\n type: TransactionType.ADD_LIQUIDITY_V2_POOL;\n baseCurrencyId: string;\n quoteCurrencyId: string;\n expectedAmountBaseRaw: string;\n expectedAmountQuoteRaw: string;\n}\n\nexport interface MigrateV2LiquidityToV3TransactionInfo {\n type: TransactionType.MIGRATE_LIQUIDITY_V3;\n baseCurrencyId: string;\n quoteCurrencyId: string;\n isFork: boolean;\n}\n\nexport interface CollectFeesTransactionInfo {\n type: TransactionType.COLLECT_FEES;\n currencyId0: string;\n currencyId1: string;\n expectedCurrencyOwed0: string;\n expectedCurrencyOwed1: string;\n}\n\nexport interface RemoveLiquidityV3TransactionInfo {\n type: TransactionType.REMOVE_LIQUIDITY_V3;\n baseCurrencyId: string;\n quoteCurrencyId: string;\n expectedAmountBaseRaw: string;\n expectedAmountQuoteRaw: string;\n}\n\ninterface SubmitProposalTransactionInfo {\n type: TransactionType.SUBMIT_PROPOSAL;\n}\n\nexport interface SendTransactionInfo {\n type: TransactionType.SEND;\n currencyId: string;\n amount: string;\n recipient: string;\n}\n\nexport type TransactionInfo =\n | ApproveTransactionInfo\n | ClaimTransactionInfo\n | QueueTransactionInfo\n | ExecuteTransactionInfo\n | DelegateTransactionInfo\n | DepositLiquidityStakingTransactionInfo\n | WithdrawLiquidityStakingTransactionInfo\n | WrapTransactionInfo\n | CreateV3PoolTransactionInfo\n | AddLiquidityV3PoolTransactionInfo\n | AddLiquidityV2PoolTransactionInfo\n | MigrateV2LiquidityToV3TransactionInfo\n | CollectFeesTransactionInfo\n | RemoveLiquidityV3TransactionInfo\n | SubmitProposalTransactionInfo\n | SendTransactionInfo;\n\nexport interface TransactionDetails {\n hash: string;\n receipt?: SerializableTransactionReceipt;\n lastCheckedBlockNumber?: number;\n addedTime: number;\n confirmedTime?: number;\n deadline?: number;\n from: string;\n info: TransactionInfo;\n nonce?: number;\n cancelled?: boolean;\n}\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { BTCAddressType, TxState } from \"types/ckBTC\";\nimport { WalletSortType, SortBalanceEnum } from \"types/index\";\n\nexport const updateTaggedTokens = createAction(\"wallet/updateTaggedTokens\");\n\nexport const deleteTaggedTokens = createAction(\"wallet/deleteTaggedTokens\");\n\nexport const updateWalletSortType = createAction(\"wallet/updateWalletSortType\");\n\nexport const updateSortBalance = createAction(\"wallet/updateSortBalance\");\n\nexport const updateCK_BTCAddresses = createAction<{\n principal: string;\n address: string;\n type: BTCAddressType;\n}>(\"wallet/updateCK_BTCAddresses\");\n\nexport const updateRetrieveState = createAction<{\n principal: string;\n block_index: number;\n state: TxState;\n txid: string;\n value: string;\n}>(\"wallet/updateRetrieveState\");\n","import { useCallback, useMemo } from \"react\";\nimport { useAppDispatch, useAppSelector } from \"store/hooks\";\nimport { RetrieveBtcStatus, TxState } from \"types/ckBTC\";\nimport { Principal } from \"@dfinity/principal\";\nimport { SortBalanceEnum, WalletSortType } from \"types/index\";\nimport {\n updateTaggedTokens,\n deleteTaggedTokens,\n updateCK_BTCAddresses,\n updateRetrieveState,\n updateWalletSortType,\n updateSortBalance,\n} from \"./actions\";\n\nexport function toHexString(byteArray: number[]) {\n return Array.from(byteArray, (byte) => {\n return `0${(byte & 0xff).toString(16)}`.slice(-2);\n }).join(\"\");\n}\n\nexport function useTaggedTokens() {\n return useAppSelector((state) => state.wallet.taggedTokens);\n}\n\nexport function useUpdateTaggedTokenCallback() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (tokens: string[]) => {\n dispatch(updateTaggedTokens(tokens));\n },\n [dispatch],\n );\n}\n\nexport function useDeleteTaggedTokenCallback() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (tokens: string[]) => {\n dispatch(deleteTaggedTokens(tokens));\n },\n [dispatch],\n );\n}\n\nexport function useTaggedTokenManager() {\n const taggedTokens = useTaggedTokens();\n\n const updateTaggedTokens = useUpdateTaggedTokenCallback();\n const deleteTaggedTokens = useDeleteTaggedTokenCallback();\n\n return useMemo(\n () => ({ taggedTokens, updateTaggedTokens, deleteTaggedTokens }),\n [taggedTokens, updateTaggedTokens, deleteTaggedTokens],\n );\n}\n\nexport function useUserBTCDepositAddress(principal: string | undefined) {\n return useAppSelector((state) => state.wallet.ckBTCAddresses)[`${principal}_deposit`];\n}\n\nexport function useUserBTCWithdrawAddress(principal: string | undefined) {\n const address = useAppSelector((state) => state.wallet.ckBTCAddresses)[`${principal}_withdraw`];\n if (!address) return undefined;\n const { owner, subaccount } = JSON.parse(address) as { owner: string; subaccount: number[] | undefined };\n\n return {\n owner,\n subaccount: subaccount && subaccount.length > 0 ? [Uint8Array.from(subaccount)] : [],\n };\n}\n\nexport function useUpdateUserBTCDepositAddress() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (principal: string, address: string) => {\n dispatch(updateCK_BTCAddresses({ principal, address, type: \"deposit\" }));\n },\n [dispatch],\n );\n}\n\nexport function useUpdateUserBTCWithdrawAddress() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (principal: string, owner: Principal, subaccount: Uint8Array[] | []) => {\n const address = JSON.stringify({ owner: owner.toString(), subaccount: [...(subaccount[0] ?? [])] });\n dispatch(updateCK_BTCAddresses({ principal, address, type: \"withdraw\" }));\n },\n [dispatch],\n );\n}\n\nexport function useUpdateUserTx() {\n const dispatch = useAppDispatch();\n\n return useCallback(\n (principal: string, block_index: bigint, status: undefined | RetrieveBtcStatus, value: string | undefined) => {\n const txid = status ? Object.values(status)[0]?.txid : undefined;\n const txIdString = txid ? toHexString([...txid].reverse()) : \"\";\n\n dispatch(\n updateRetrieveState({\n principal,\n block_index: Number(block_index),\n txid: txIdString,\n state: (status ? Object.keys(status)[0] : \"\") as TxState,\n value: value ?? \"\",\n }),\n );\n },\n [dispatch],\n );\n}\n\nexport function useUserTxs(principal: string | undefined) {\n const states = useAppSelector((state) => state.wallet.retrieveState);\n\n return useMemo(() => {\n if (principal && states) {\n return states[principal];\n }\n\n return undefined;\n }, [principal, states]);\n}\n\nexport function useWalletSortType() {\n return useAppSelector((state) => state.wallet.sort);\n}\n\nexport function useWalletSortManager() {\n const sortType = useWalletSortType();\n const dispatch = useAppDispatch();\n\n const update = useCallback(\n (val: WalletSortType) => {\n dispatch(updateWalletSortType(val));\n },\n [dispatch],\n );\n\n return useMemo(() => ({ sort: sortType, updateWalletSortType: update }), [update, sortType]);\n}\n\nexport function useSortBalanceValue() {\n return useAppSelector((state) => state.wallet.sortBalance);\n}\n\nexport function useSortBalanceManager() {\n const sortBalance = useSortBalanceValue();\n const dispatch = useAppDispatch();\n\n const update = useCallback(\n (val: SortBalanceEnum) => {\n dispatch(updateSortBalance(val));\n },\n [dispatch],\n );\n\n return useMemo(() => ({ sortBalance, updateSortBalance: update }), [update, sortBalance]);\n}\n","import { createAction } from \"@reduxjs/toolkit\";\nimport { TX } from \"types/web3\";\nimport { StoredWithdrawTxValue } from \"types/ckETH\";\n\nexport const updateTX = createAction<{ principal: string; tx: TX }>(\"web3/updateTX\");\n\nexport const updateErc20TX = createAction<{ principal: string; ledger_id: string; tx: TX }>(\"web3/updateErc20TX\");\n\nexport const updateWithdrawTX = createAction<{ principal: string; tx: StoredWithdrawTxValue }>(\"web3/updateWithdrawTX\");\n","import type { Ed25519KeyIdentity, Secp256k1KeyIdentity } from \"@dfinity/identity\";\nimport { ActorIdentity } from \"@icpswap/types\";\n\nexport enum ResultStatus {\n ERROR = \"err\",\n OK = \"ok\",\n}\n\nexport type StatusResult = {\n readonly status: ResultStatus;\n readonly data: T | string;\n};\n\nexport type CallResult = {\n readonly result: ApiResult;\n readonly loading: boolean;\n};\n\nexport type ApiResult = undefined | T;\n\nexport type PaginationResult = {\n totalElements: number;\n offset: number;\n limit: number;\n content: T[];\n};\n\nexport type DynamicObject = {\n [key: string]: any;\n};\n\nexport type ICPIdentity = Ed25519KeyIdentity | Secp256k1KeyIdentity;\n\nexport type Identity = ActorIdentity;\n\nexport type Override = Omit & S;\n\nexport type WalletSortType = \"Default\" | \"High\" | \"Low\";\n\nexport enum SortBalanceEnum {\n ZERO = \"ZERO\",\n ONE = \"ONE\",\n TEN = \"TEN\",\n ALL = \"ALL\",\n}\n","import { Override, StakingPoolControllerPoolInfo, StakingPoolUserInfo } from \"@icpswap/types\";\n\nexport type UnusedBalance = Override<\n StakingPoolControllerPoolInfo,\n { poolId: string; balance: bigint; rewardTokenId: string }\n>;\n\nexport enum STATE {\n LIVE = \"LIVE\",\n UPCOMING = \"UNSTART\",\n FINISHED = \"FINISHED\",\n}\n\nexport enum FilterState {\n \"ALL\" = \"ALL\",\n \"NOT_STARTED\" = \"NOT_STARTED\",\n \"LIVE\" = \"LIVE\",\n \"FINISHED\" = \"FINISHED\",\n \"CLOSED\" = \"CLOSED\",\n \"YOUR\" = \"YOUR\",\n}\n\nexport type UserPendingRewards = Override<\n StakingPoolUserInfo,\n { poolId: string; rewardAmount: bigint; stakingAmount: bigint; rewardTokenId: string; stakeTokenId: string }\n>;\n","import { FarmInfoWithId, Override, UserPositionInfo } from \"@icpswap/types\";\n\nexport type PositionDetail = {\n pool: string;\n token0: string;\n token1: string;\n fee: string;\n tickUpper: bigint;\n tokensOwed0: bigint;\n tokensOwed1: bigint;\n feeGrowthInside1LastX128: bigint;\n liquidity: bigint;\n feeGrowthInside0LastX128: bigint;\n tickLower: bigint;\n positionId: string;\n};\n\nexport type UserPosition = Override<\n UserPositionInfo,\n { index: number; id: string; token0: string; token1: string; fee: string }\n>;\n\nexport type UserPositionForFarm = Override<\n UserPositionInfo,\n { index: number; id: string; token0: string; token1: string; fee: string; farm: FarmInfoWithId }\n>;\n\nexport enum PositionFilterState {\n Default = \"Default\",\n All = \"All\",\n InRanges = \"In ranges\",\n OutOfRanges = \"Out of ranges\",\n Closed = \"Closed\",\n}\n\nexport enum PositionSort {\n Default = \"Default\",\n PositionValue = \"Position value\",\n FeesValue = \"Uncollected fees\",\n}\n\nexport type PositionKey = string;\n","import { AuthClient, LocalStorage } from \"@dfinity/auth-client\";\nimport { Actor, ActorSubclass, HttpAgent } from \"@dfinity/agent\";\nimport type { Identity } from \"@dfinity/agent\";\nimport { requestTransfer } from \"@nfid/wallet\";\nimport { defaultWindowFeatures } from \"@nfid/core\";\nimport { type CreateActorArgs, IConnector, ConnectorType, WalletConnectorConfig } from \"./connectors\";\n\nconst APPLICATION_NAME = \"ICPSwap\";\nconst APPLICATION_LOGO_URL = \"https://r7ftp-xaaaa-aaaag-qbbsq-cai.raw.ic0.app/ICPSwap_96x96.png\";\nconst APP_META = `applicationName=${APPLICATION_NAME}&applicationLogo=${APPLICATION_LOGO_URL}`;\nconst AUTH_PATH = `/authenticate/?${ APP_META }#authorize`;\nconst NFID_ORIGIN = \"https://nfid.one\";\nconst NF_ID_AUTH_URL = NFID_ORIGIN + AUTH_PATH;\n\nexport const NF_ID_LOGIN_CONFIG = {\n maxTimeToLive: BigInt(Date.now() + 30 * 24 * 60 * 60 * 1e9),\n identityProvider: NF_ID_AUTH_URL,\n windowOpenerFeatures:\n `left=${window.screen.width / 2 - 525 / 2}, ` +\n `top=${window.screen.height / 2 - 705 / 2},` +\n `toolbar=0,location=0,menubar=0,width=525,height=705`,\n};\n\nexport class NF_IDConnector implements IConnector {\n private config: {\n whitelist: Array;\n host: string;\n providerUrl: string;\n dev: boolean;\n };\n\n private identity?: Identity;\n\n private principal?: string;\n\n private client?: AuthClient;\n\n public type = ConnectorType.NFID;\n\n public get getPrincipal() {\n return this.principal;\n }\n\n constructor(config: WalletConnectorConfig) {\n this.config = {\n whitelist: config.whitelist,\n host: config.host,\n providerUrl: NF_ID_AUTH_URL,\n dev: false,\n };\n }\n\n async init() {\n this.client = this.client\n ? this.client\n : await AuthClient.create({\n storage: new LocalStorage(),\n idleOptions: {\n idleTimeout: 30 * 24 * 3_600_000,\n disableIdle: true,\n disableDefaultIdleCallback: true,\n },\n });\n\n const isConnected = await this.isConnected();\n\n if (isConnected) {\n this.identity = this.client.getIdentity();\n this.principal = this.identity?.getPrincipal().toString();\n }\n\n return true;\n }\n\n async isConnected(): Promise {\n return !!(await this.client?.isAuthenticated());\n }\n\n async createActor({\n canisterId,\n interfaceFactory,\n }: CreateActorArgs): Promise | undefined> {\n const agent = new HttpAgent({\n ...this.config,\n identity: this.identity,\n });\n\n if (this.config.dev) {\n // Fetch root key for certificate validation during development\n agent.fetchRootKey().catch((err) => {\n console.warn(\"Unable to fetch root key. Check to ensure that your local replica is running\");\n console.error(err);\n });\n }\n\n return Actor.createActor(interfaceFactory, {\n agent,\n canisterId,\n });\n }\n\n async connect() {\n await new Promise((resolve, reject) => {\n this.client?.login({\n onSuccess: () => resolve(true),\n onError: reject,\n ...NF_ID_LOGIN_CONFIG,\n });\n });\n const identity = this.client?.getIdentity();\n const principal = identity?.getPrincipal().toString();\n\n this.identity = identity;\n this.principal = principal;\n return true;\n }\n\n async disconnect() {\n await this.client?.logout();\n }\n\n async expired() {\n return false;\n }\n}\n\nexport const NF_ID = {\n connector: NF_IDConnector,\n id: \"NF ID\",\n};\n\nconst REQ_TRANSFER = \"wallet/request-transfer\";\nconst PROVIDER_URL = new URL(`${NFID_ORIGIN}/${REQ_TRANSFER}?${APP_META}`);\n\nexport const NFIDRequestTransfer = async ({ to, amount }: { to: string; amount: number }) =>\n await requestTransfer(\n { to, amount },\n {\n provider: PROVIDER_URL,\n windowFeatures: defaultWindowFeatures,\n },\n );\n","import { getAllCanisters } from \"store/allCanisters\";\nimport { ALL_CANISTER_IDS } from \"./canister\";\nimport { LEDGER_CANISTER_ID } from \"./icp\";\nimport { ckBTC_MINTER_ID } from \"./ckBTC\";\n\nexport const DelegationIds = [...ALL_CANISTER_IDS, LEDGER_CANISTER_ID, ckBTC_MINTER_ID];\n\nexport const MAX_DELEGATION_TARGETS = 999;\n\nexport async function getDelegationIds() {\n const canisterIds = [...ALL_CANISTER_IDS, LEDGER_CANISTER_ID, ckBTC_MINTER_ID];\n const stateCanisterIds = await getAllCanisters();\n const delegationIds = [...new Set(canisterIds.concat(stateCanisterIds ?? []))];\n return delegationIds.length > MAX_DELEGATION_TARGETS ? delegationIds.slice(0, MAX_DELEGATION_TARGETS) : delegationIds;\n}\n","import { AuthClient } from \"@dfinity/auth-client\";\nimport { Actor, ActorSubclass, HttpAgent } from \"@dfinity/agent\";\nimport type { Identity } from \"@dfinity/agent\";\nimport { IConnector, CreateActorArgs, ConnectorType, type WalletConnectorConfig } from \"./connectors\";\n\nconst iiExpireTime = 7 * 24 * 3600; // seconds\n\nexport class InternetIdentityConnector implements IConnector {\n private config: {\n whitelist: Array;\n host: string;\n providerUrl: string;\n dev: boolean;\n };\n\n private identity?: Identity;\n\n private principal?: string;\n\n private client?: AuthClient;\n\n public type = ConnectorType.IC;\n\n public get getPrincipal() {\n return this.principal;\n }\n\n constructor(config: WalletConnectorConfig) {\n this.config = {\n whitelist: config.whitelist,\n host: config.host,\n providerUrl: \"https://identity.ic0.app\",\n dev: false,\n };\n }\n\n async init() {\n this.client = await AuthClient.create({\n idleOptions: {\n disableDefaultIdleCallback: true,\n },\n });\n const isConnected = await this.isConnected();\n\n if (isConnected) {\n this.identity = this.client.getIdentity();\n this.principal = this.identity?.getPrincipal().toString();\n }\n\n return true;\n }\n\n async isConnected(): Promise {\n return !!(await this.client?.isAuthenticated());\n }\n\n async createActor({\n canisterId,\n interfaceFactory,\n }: CreateActorArgs): Promise | undefined> {\n const agent = new HttpAgent({\n ...this.config,\n identity: this.identity,\n });\n\n if (this.config.dev) {\n // Fetch root key for certificate validation during development\n agent.fetchRootKey().catch((err) => {\n console.warn(\"Unable to fetch root key. Check to ensure that your local replica is running\");\n console.error(err);\n });\n }\n\n return Actor.createActor(interfaceFactory, {\n agent,\n canisterId,\n });\n }\n\n async connect() {\n await new Promise((resolve, reject) => {\n this.client?.login({\n identityProvider: this.config.providerUrl,\n onSuccess: () => resolve(true),\n onError: reject,\n maxTimeToLive: BigInt(iiExpireTime * 1000 * 1000 * 1000),\n });\n });\n window.localStorage.setItem(\"ii-expire-time\", (new Date().getTime() + iiExpireTime * 1000).toString());\n const identity = this.client?.getIdentity();\n const principal = identity?.getPrincipal().toString();\n this.identity = identity;\n this.principal = principal;\n return true;\n }\n\n async disconnect() {\n await this.client?.logout();\n }\n\n async expired() {\n const iiExpireTime = window.localStorage.getItem(\"ii-expire-time\");\n if (!iiExpireTime) return true;\n return new Date().getTime() >= Number(iiExpireTime);\n }\n}\n\nexport const InternetIdentity = {\n connector: InternetIdentityConnector,\n id: \"ii\",\n type: ConnectorType.IC,\n};\n","// @ts-ignore\nimport { StoicIdentity } from \"ic-stoic-identity\";\nimport { Actor, ActorSubclass, HttpAgent } from \"@dfinity/agent\";\nimport { Connector } from \"@icpswap/actor\";\nimport { type CreateActorArgs, IConnector, ConnectorType, type WalletConnectorConfig } from \"./connectors\";\n\nexport class StoicConnector implements IConnector {\n private config: {\n whitelist: Array;\n providerUrl: string;\n host: string;\n dev: boolean;\n };\n\n private identity?: any;\n\n private principal?: string;\n\n public type = ConnectorType.STOIC;\n\n public get getPrincipal() {\n return this.principal;\n }\n\n constructor(config: WalletConnectorConfig) {\n this.config = {\n whitelist: config.whitelist,\n host: config.host,\n providerUrl: \"https://www.stoicwallet.com\",\n dev: false,\n };\n }\n\n async init() {\n const identity = await StoicIdentity.load(this.config.providerUrl);\n\n if (identity) {\n this.identity = identity;\n this.principal = identity.getPrincipal().toText();\n }\n\n return true;\n }\n\n async createActor({\n canisterId,\n interfaceFactory,\n }: CreateActorArgs): Promise | undefined> {\n const agent = new HttpAgent({\n ...this.config,\n identity: this.identity,\n });\n\n // Fetch root key for certificate validation during development\n if (this.config.dev) {\n agent.fetchRootKey().catch((err) => {\n console.warn(\"Unable to fetch root key. Check to ensure that your local replica is running\");\n console.error(err);\n });\n }\n\n return Actor.createActor(interfaceFactory, {\n agent,\n canisterId,\n });\n }\n\n async isConnected() {\n const identity = await StoicIdentity.load();\n return !!identity;\n }\n\n async connect() {\n this.identity = await StoicIdentity.connect();\n this.principal = this.identity.getPrincipal().toText();\n return true;\n }\n\n async disconnect() {\n await StoicIdentity.disconnect();\n }\n\n async expired() {\n return false;\n }\n}\n\nexport const StoicWallet = {\n connector: StoicConnector,\n id: \"stoic\",\n type: Connector.STOIC,\n};\n","import { ActorSubclass } from \"@dfinity/agent\";\nimport { getStoreWalletUnlocked } from \"store/auth/hooks\";\nimport { type CreateActorArgs, IConnector, ConnectorType, type WalletConnectorConfig } from \"./connectors\";\n\nconst MAX_PLUG_WHITELIST_NUMBER = 200;\n\nexport class PlugConnector implements IConnector {\n private config: {\n whitelist: Array;\n providerUrl: string;\n host: string;\n dev: boolean;\n };\n\n private principal?: string;\n\n public type = ConnectorType.PLUG;\n\n public get getPrincipal() {\n return this.principal;\n }\n\n constructor(config: WalletConnectorConfig) {\n this.config = {\n whitelist: config.whitelist,\n host: config.host,\n providerUrl: \"\",\n dev: false,\n };\n }\n\n async init() {\n return true;\n }\n\n async createActor({\n canisterId,\n interfaceFactory,\n }: CreateActorArgs): Promise | undefined> {\n return await window.ic.plug.createActor({\n canisterId,\n interfaceFactory,\n });\n }\n\n async isConnected() {\n const isUnLocked = getStoreWalletUnlocked();\n\n if (typeof isUnLocked === \"boolean\" && !isUnLocked) {\n return false;\n }\n\n if (window.ic && window.ic.plug) {\n return await window.ic.plug.isConnected();\n }\n\n return false;\n }\n\n async connect() {\n // Fix tracing message if plug is uninstalled but still connect to\n if (!window.ic?.plug) {\n return false;\n }\n\n if (await this.isConnected()) {\n this.principal = window.ic.plug.principalId;\n } else {\n await window.ic.plug.requestConnect({\n whitelist:\n this.config.whitelist.length > MAX_PLUG_WHITELIST_NUMBER\n ? this.config.whitelist.slice(0, MAX_PLUG_WHITELIST_NUMBER)\n : this.config.whitelist,\n });\n this.principal = window.ic.plug.principalId;\n }\n\n return true;\n }\n\n async disconnect() {\n await window.ic.plug.disconnect();\n }\n\n async expired() {\n return false;\n }\n}\n","import { AuthClient } from \"@honopu/auth-client\";\nimport { Actor, ActorSubclass, HttpAgent } from \"@dfinity/agent\";\nimport type { Identity } from \"@dfinity/agent\";\nimport { type CreateActorArgs, IConnector, ConnectorType, WalletConnectorConfig } from \"./connectors\";\n\nconst EXPIRE_TIME = 7 * 24 * 3600; // seconds\n\nexport class ICPSwapConnector implements IConnector {\n private config: {\n whitelist: Array;\n host: string;\n providerUrl: string;\n dev: boolean;\n };\n\n private identity?: Identity;\n\n private principal?: string;\n\n private client?: AuthClient;\n\n public type = ConnectorType.ICPSwap;\n\n public get getPrincipal() {\n return this.principal;\n }\n\n constructor(config: WalletConnectorConfig) {\n this.config = {\n whitelist: config.whitelist,\n host: config.host,\n providerUrl: \"http://localhost:8088\",\n dev: false,\n };\n }\n\n async init() {\n this.client = await AuthClient.create({\n idleOptions: {\n disableDefaultIdleCallback: true,\n },\n keyType: \"Ed25519\",\n });\n const isConnected = await this.isConnected();\n\n if (isConnected) {\n this.identity = this.client.getIdentity();\n this.principal = this.identity?.getPrincipal().toString();\n }\n\n return true;\n }\n\n async isConnected(): Promise {\n return !!(await this.client?.isAuthenticated());\n }\n\n async createActor({\n canisterId,\n interfaceFactory,\n }: CreateActorArgs): Promise | undefined> {\n const agent = new HttpAgent({\n host: this.config.host,\n identity: this.identity,\n });\n\n if (this.config.dev) {\n // Fetch root key for certificate validation during development\n agent.fetchRootKey().catch((err) => {\n console.warn(\"Unable to fetch root key. Check to ensure that your local replica is running\");\n console.error(err);\n });\n }\n\n return Actor.createActor(interfaceFactory, {\n agent,\n canisterId,\n });\n }\n\n async connect() {\n await new Promise((resolve, reject) => {\n this.client?.login({\n onSuccess: () => resolve(true),\n onError: reject,\n maxTimeToLive: BigInt(EXPIRE_TIME * 1000 * 1000 * 1000),\n });\n });\n\n const identity = this.client?.getIdentity();\n const principal = identity?.getPrincipal().toString();\n this.identity = identity;\n this.principal = principal;\n\n window.localStorage.setItem(\"ICPSwap-wallet-expire-time\", (new Date().getTime() + EXPIRE_TIME * 1000).toString());\n\n return true;\n }\n\n async disconnect() {\n await this.client?.logout();\n }\n\n async expired() {\n const iiExpireTime = window.localStorage.getItem(\"ICPSwap-wallet-expire-time\");\n if (!iiExpireTime) return true;\n return new Date().getTime() >= Number(iiExpireTime);\n }\n}\n\nexport const ICPSwapWallet = {\n connector: ICPSwapConnector,\n id: \"ICPSwap\",\n type: ConnectorType.ICPSwap,\n};\n","import { ActorSubclass } from \"@dfinity/agent\";\nimport { getStoreWalletUnlocked } from \"store/auth/hooks\";\nimport { type CreateActorArgs, IConnector, ConnectorType, WalletConnectorConfig } from \"./connectors\";\n\nexport class InfinityConnector implements IConnector {\n private config: {\n whitelist: Array;\n providerUrl: string;\n host: string;\n dev: boolean;\n };\n\n private principal?: string;\n\n public type = ConnectorType.INFINITY;\n\n public get getPrincipal() {\n return this.principal;\n }\n\n constructor(config: WalletConnectorConfig) {\n this.config = {\n whitelist: config.whitelist,\n host: config.host,\n providerUrl: \"\",\n dev: false,\n };\n }\n\n async init() {\n return true;\n }\n\n async createActor({\n canisterId,\n interfaceFactory,\n }: CreateActorArgs): Promise | undefined> {\n return await window.ic.infinityWallet.createActor({ canisterId, interfaceFactory });\n }\n\n async isConnected() {\n const isUnLocked = getStoreWalletUnlocked();\n\n if (typeof isUnLocked === \"boolean\" && !isUnLocked) {\n return false;\n }\n\n if (window.ic.infinityWallet) {\n return await window.ic.infinityWallet.isConnected();\n }\n\n return false;\n }\n\n async connect() {\n if (await this.isConnected()) {\n this.principal = (await window.ic.infinityWallet.getPrincipal()).toString();\n } else {\n // disconnect first\n await window.ic.infinityWallet.disconnect();\n await window.ic.infinityWallet.requestConnect({ whitelist: this.config.whitelist });\n\n this.principal = (await window.ic.infinityWallet.getPrincipal()).toString();\n }\n\n return true;\n }\n\n async disconnect() {\n await window.ic.infinityWallet.disconnect();\n }\n\n async expired() {\n return false;\n }\n}\n\nexport const InfinitySwapWallet = {\n connector: InfinityConnector,\n id: \"infinity\",\n type: ConnectorType.INFINITY,\n};\n","import { type ActorSubclass, Actor, HttpAgent } from \"@dfinity/agent\";\nimport { Connector } from \"@icpswap/actor\";\nimport { MsqClient, MsqIdentity } from \"@fort-major/msq-client\";\nimport type { IConnector, CreateActorArgs, WalletConnectorConfig } from \"./connectors\";\n\nconst EXPIRE_TIME = 7 * 24 * 3600; // seconds\nconst EXPIRE_TIME_STORAGE_NAME = \"metamask-expire-time\";\n// const REQUEST_LINK_DOMAIN = \"https://app.icpswap.com\";\n\nexport class MetamaskConnector implements IConnector {\n private config: {\n whitelist: Array;\n providerUrl: string;\n host: string;\n dev: boolean;\n };\n\n private identity?: any;\n\n private principal?: string;\n\n private client?: MsqClient;\n\n public type = Connector.Metamask;\n\n public get getPrincipal() {\n return this.principal;\n }\n\n constructor(config: WalletConnectorConfig) {\n this.config = {\n whitelist: config.whitelist,\n host: config.host,\n dev: false,\n providerUrl: \"\",\n };\n }\n\n async init() {\n return true;\n }\n\n async isConnected() {\n return this.client ? await this.client?.isAuthorized() : false;\n }\n\n async connect() {\n if (this.client && (await this.isConnected())) {\n // const requestLinkResult: boolean = await this.client.requestLink(REQUEST_LINK_DOMAIN);\n // if (!requestLinkResult) return false;\n\n const identity: MsqIdentity | null = await this.client.requestLogin();\n\n if (identity === null) {\n // the user has rejected to log in\n return false;\n }\n\n window.localStorage.setItem(EXPIRE_TIME_STORAGE_NAME, (new Date().getTime() + EXPIRE_TIME * 1000).toString());\n this.identity = identity;\n this.principal = identity?.getPrincipal().toString();\n } else {\n const result = await MsqClient.create();\n\n if (!(\"Ok\" in result)) return false;\n\n const client = result.Ok;\n // const requestLinkResult: boolean = await client.requestLink(REQUEST_LINK_DOMAIN);\n // if (!requestLinkResult) return false;\n\n const identity: MsqIdentity | null = await client.requestLogin();\n\n if (identity === null) {\n // the user has rejected to log in\n return false;\n }\n\n window.localStorage.setItem(EXPIRE_TIME_STORAGE_NAME, (new Date().getTime() + EXPIRE_TIME * 1000).toString());\n this.identity = identity;\n this.principal = identity.getPrincipal().toString();\n this.client = client;\n\n return true;\n }\n\n return true;\n }\n\n async disconnect() {\n await this.client?.requestLogout();\n }\n\n async createActor({ canisterId, interfaceFactory }: CreateActorArgs): Promise> {\n const httpAgent = new HttpAgent({ identity: this.identity, host: this.config.host });\n\n return Actor.createActor(interfaceFactory, {\n agent: httpAgent,\n canisterId,\n });\n }\n\n async expired() {\n const expireTime = window.localStorage.getItem(EXPIRE_TIME_STORAGE_NAME);\n if (!expireTime) return true;\n return new Date().getTime() >= Number(expireTime);\n }\n}\n","import { IDL } from \"@dfinity/candid\";\nimport { ActorSubclass } from \"@dfinity/agent\";\nimport { Connector } from \"constants/wallet\";\nimport { host } from \"constants/server\";\nimport { updateAuth } from \"store/auth/hooks\";\nimport { getDelegationIds } from \"constants/connector\";\nimport { InternetIdentityConnector } from \"./internet-identity\";\nimport { StoicConnector } from \"./stoic\";\nimport { NF_IDConnector } from \"./NF_ID\";\nimport type { IConnector } from \"./connectors\";\nimport { PlugConnector } from \"./plug\";\nimport { ICPSwapConnector } from \"./icpswap\";\nimport { InfinityConnector } from \"./infinity\";\nimport { MeConnector } from \"./me\";\nimport { MetamaskConnector } from \"./metamask\";\n\ntype ConnectorClass = { new (...args: any[]): IConnector };\n\nexport type ProviderOptions = {\n connector: ConnectorClass;\n id: string;\n name: string;\n};\n\nexport type Provider = {\n connector: IConnector;\n id: string;\n name: string;\n};\n\nexport type ConnectConfig = {\n whitelist: Array;\n host: string;\n providerUrl: string;\n dev: boolean;\n};\n\nexport class WalletConnector {\n public connector: IConnector | null = null;\n\n public connectorType: Connector = Connector.ICPSwap;\n\n // initial connect instance\n public async init(connectorType: Connector) {\n const connector = await WalletConnector.create(connectorType);\n this.connectorType = connectorType;\n await connector?.init();\n this.connector = connector;\n }\n\n public static async create(connector: Connector) {\n const config = {\n host,\n whitelist: await getDelegationIds(),\n };\n\n switch (connector) {\n case Connector.IC:\n return new InternetIdentityConnector(config);\n case Connector.STOIC:\n return new StoicConnector(config);\n case Connector.NFID:\n return new NF_IDConnector(config);\n case Connector.PLUG:\n return new PlugConnector(config);\n case Connector.ICPSwap:\n return new ICPSwapConnector(config);\n case Connector.INFINITY:\n return new InfinityConnector(config);\n case Connector.ME:\n return new MeConnector(config);\n case Connector.Metamask:\n return new MetamaskConnector(config);\n default:\n throw new Error(`Connector error ${Connector}: Not support this connect for now`);\n }\n }\n\n public async connect() {\n if (!this.connector) return false;\n\n const isConnectedSuccessfully = await this.connector.connect();\n\n window.icConnector = this.connector;\n\n updateAuth({ walletType: this.connectorType });\n\n return isConnectedSuccessfully;\n }\n\n public async isConnected() {\n const isConnected = await this.connector?.isConnected();\n return isConnected;\n }\n\n public async createActor(\n canisterId: string,\n interfaceFactory: IDL.InterfaceFactory,\n ): Promise | undefined> {\n return await this.connector?.createActor({ canisterId, interfaceFactory });\n }\n}\n\nexport async function getConnectorIsConnected(): Promise {\n return window.icConnector.isConnected();\n}\n\nexport async function getConnectorPrincipal() {\n return window.icConnector.getPrincipal;\n}\n\nexport const connector = new WalletConnector();\n","import type { ActorSubclass } from \"@dfinity/agent\";\nimport { AstroXWebViewHandler } from \"@astrox/sdk-webview\";\nimport { IC as AuthClient } from \"@astrox/sdk-web\";\nimport { Connector } from \"@icpswap/actor\";\nimport type { IConnector, CreateActorArgs, WalletConnectorConfig } from \"./connectors\";\n\nconst MeExpireTime = 7 * 24 * 3600; // seconds\nconst MAX_DELEGATION_TARGETS = 900;\n\nexport function isMeWebview() {\n return !!window.astrox_webview;\n}\n\nconst astrox = new AstroXWebViewHandler();\n\nexport class MeConnector implements IConnector {\n private config: {\n whitelist: Array;\n providerUrl: string;\n host: string;\n dev: boolean;\n };\n\n private identity?: any;\n\n private principal?: string;\n\n private client?: AuthClient;\n\n public type = Connector.ME;\n\n public get getPrincipal() {\n return this.principal;\n }\n\n constructor(config: WalletConnectorConfig) {\n this.config = {\n whitelist: config.whitelist,\n host: config.host,\n dev: false,\n providerUrl: \"\",\n };\n }\n\n async init() {\n if (isMeWebview()) {\n await astrox.init();\n\n if (!this.isConnected()) {\n const boolean = await astrox.connect({\n delegationTargets: this.config.whitelist,\n host: this.config.host,\n customDomain: \"https://app.icpswap.com\",\n });\n\n this.principal = astrox.identity?.getPrincipal().toString();\n this.identity = astrox.identity;\n\n return boolean;\n }\n this.principal = astrox.identity?.getPrincipal().toString();\n this.identity = astrox.identity;\n } else {\n this.client = this.client\n ? this.client\n : await AuthClient.create({\n useFrame: document.body.clientWidth > 768 ? true : undefined,\n signerProviderUrl: \"https://63k2f-nyaaa-aaaah-aakla-cai.raw.ic0.app/signer\",\n identityProvider: `https://63k2f-nyaaa-aaaah-aakla-cai.raw.ic0.app/login#authorize`,\n walletProviderUrl: `https://63k2f-nyaaa-aaaah-aakla-cai.raw.ic0.app/transaction`,\n host: this.config.host,\n });\n\n const isConnected = await this.isConnected();\n\n if (isConnected) {\n this.identity = this.client.identity;\n this.principal = this.identity?.getPrincipal().toString();\n }\n }\n\n return true;\n }\n\n async isConnected() {\n if (isMeWebview()) {\n return await astrox.isConnected();\n }\n return this.client ? await this.client?.isAuthenticated() : false;\n }\n\n async connect() {\n if (await this.isConnected()) {\n this.principal = this.identity?.getPrincipal().toString();\n } else {\n if (isMeWebview()) {\n const boolean = await astrox.connect({\n // Max delegation targets is 1000 in Me Wallet\n delegationTargets: this.config.whitelist,\n host: this.config.host,\n customDomain: \"https://app.icpswap.com\",\n });\n\n const { identity } = astrox;\n\n this.principal = identity?.getPrincipal().toString();\n\n return boolean;\n }\n const delegationTargets = this.config.whitelist;\n\n const client = await this.client?.connect({\n useFrame: !(window.innerWidth < 768),\n signerProviderUrl: \"https://63k2f-nyaaa-aaaah-aakla-cai.raw.ic0.app/signer\",\n identityProvider: `https://63k2f-nyaaa-aaaah-aakla-cai.raw.ic0.app/login#authorize`,\n walletProviderUrl: `https://63k2f-nyaaa-aaaah-aakla-cai.raw.ic0.app/transaction`,\n delegationTargets:\n delegationTargets.length > MAX_DELEGATION_TARGETS\n ? delegationTargets.slice(0, MAX_DELEGATION_TARGETS)\n : delegationTargets,\n customDomain: \"https://app.icpswap.com\",\n maxTimeToLive: BigInt(MeExpireTime * 1000 * 1000 * 1000),\n });\n\n if (client) {\n window.localStorage.setItem(\"me-expire-time\", (new Date().getTime() + MeExpireTime * 1000).toString());\n this.identity = client.identity;\n this.principal = this.identity?.getPrincipal().toString();\n }\n\n return !!client;\n }\n\n return true;\n }\n\n async disconnect() {\n if (isMeWebview()) {\n await astrox.disconnect();\n } else {\n await this.client?.disconnect();\n }\n }\n\n async createActor({ canisterId, interfaceFactory }: CreateActorArgs): Promise> {\n if (isMeWebview()) {\n // @ts-ignore\n return await astrox.createActor(canisterId, interfaceFactory);\n }\n // @ts-ignore\n return await this.client?.createActor(interfaceFactory, canisterId);\n }\n\n async expired() {\n if (isMeWebview()) return false;\n const meExpireTime = window.localStorage.getItem(\"me-expire-time\");\n if (!meExpireTime) return true;\n return new Date().getTime() >= Number(meExpireTime);\n }\n}\n","/* eslint-disable no-extend-native */\n\nimport JSBI from \"jsbi\";\nimport BigNumber from \"bignumber.js\";\n\n// @ts-ignore hijack bigint\nBigInt.prototype.toJSON = function toJSON() {\n return this.toString();\n};\n\n// avoid scientific notation when use toString\nBigNumber.set({ EXPONENTIAL_AT: 10 ** 9 });\n\nBigNumber.config({\n ROUNDING_MODE: BigNumber.ROUND_DOWN,\n});\n\nexport const NO_GROUP_SEPARATOR_FORMATTER = {\n groupSeparator: \"\",\n};\n\nexport { JSBI };\n\nexport function isDarkTheme(theme: any): boolean {\n return theme.customization.mode === \"dark\";\n}\n\nexport function isICPSwapOfficial(account: string | undefined): boolean {\n return (\n account === \"b2b33b29fa0f9458ec7ba0025f6a53126043fad143dd17619d5f162f41e69869\" ||\n account === \"e695fda51d898ad6f46211d8f468f85dd1364819e52c7740e4b4db90918ea6bc\" ||\n account === \"fbe00b464da19fc7bf234cf05e376631ad896163558174c375f6e9be96d95e95\" ||\n account === \"1ce94412fa0ad3b93132c651105d86e17bb87bafc78e9010a9e24a47a98e5b03\" ||\n account === \"9b0812ed39fe6e63c442d7a81672c0c2568ce10011dffc0e50a635250ff6967f\"\n );\n}\n\nexport function stringToArrayBuffer(string: string): Uint8Array {\n return new TextEncoder().encode(string);\n}\n\nexport function arrayBufferToString(arrayBuffer: Uint8Array): string {\n return new TextDecoder(\"utf-8\").decode(arrayBuffer);\n}\n\nexport type CountingTime = {\n hour: string | number;\n min: string | number;\n sec: string | number;\n};\n\nexport function toDoubleNumber(string: number | string) {\n const newString = String(string);\n\n if (newString.length < 2) {\n return `0${newString}`;\n }\n\n return string;\n}\n\nexport function counter(time: string | number | Date): CountingTime {\n const now = new Date().getTime();\n const end = new Date(time).getTime();\n\n const diff = end - now;\n\n if (diff <= 0) {\n return {\n hour: \"00\",\n min: \"00\",\n sec: \"00\",\n };\n }\n\n const sec = parseInt(String((diff / 1000) % 60));\n const min = parseInt(String((diff / (60 * 1000)) % 60));\n const hour = parseInt(String(diff / (60 * 60 * 1000)));\n\n return {\n hour: toDoubleNumber(hour),\n min: toDoubleNumber(min),\n sec: toDoubleNumber(sec),\n };\n}\n\nexport function toFormat(value: string | number | BigNumber | undefined) {\n if (value === undefined) return \"\";\n return new BigNumber(value).toFormat();\n}\n\nexport function timeParser(time: any): Date {\n const date = new Date(time);\n const seconds = date.getSeconds();\n return new Date(date.getTime() - seconds * 1000);\n}\n\nexport * from \"./type\";\nexport * from \"./nft\";\nexport * from \"./swap\";\nexport * from \"./token\";\n","import type { NFTTransferArgs, NFTTransferResult, NFTAllowanceArgs, NFTApproveArgs } from \"@icpswap/types\";\nimport { StatusResult } from \"@icpswap/types\";\nimport { Identity } from \"types/global\";\n\nexport interface TransferParameters {\n identity: Identity;\n params: NFTTransferArgs;\n canisterId: string;\n}\nexport abstract class BaseNFTAdapter {\n public readonly actor: any;\n\n constructor({ actor }: { actor: (canister: string, identity?: Identity) => any }) {\n this.actor = actor;\n }\n\n public abstract transfer(params: TransferParameters): Promise>;\n\n public abstract allowance(params: { canisterId: string; params: NFTAllowanceArgs }): Promise>;\n\n public abstract approve(params: {\n canisterId: string;\n identity: Identity;\n params: NFTApproveArgs;\n }): Promise>;\n}\n","import type { NFTTransferArgs, NFTTransferResult, NFTAllowanceArgs, NFTApproveArgs } from \"@icpswap/types\";\nimport { resultFormat } from \"@icpswap/utils\";\nimport { NFTCanister } from \"@icpswap/actor\";\nimport { Identity } from \"types/global\";\nimport { BaseNFTAdapter } from \"./BaseNFTAdapter\";\n\nexport class ICPSwapNFT extends BaseNFTAdapter {\n public async transfer({\n canisterId,\n params,\n identity,\n }: {\n canisterId: string;\n params: NFTTransferArgs;\n identity: Identity;\n }) {\n return resultFormat(await (await this.actor(canisterId, identity)).transfer(params));\n }\n\n public async allowance({ params, canisterId }: { canisterId: string; params: NFTAllowanceArgs }) {\n return resultFormat(await (await this.actor(canisterId)).allowance(params));\n }\n\n public async approve({\n params,\n canisterId,\n identity,\n }: {\n identity: Identity;\n canisterId: string;\n params: NFTApproveArgs;\n }) {\n return resultFormat(await (await this.actor(canisterId, identity)).approve(params));\n }\n}\n\nexport const ICPSwapAdapter = new ICPSwapNFT({\n actor: NFTCanister,\n});\n","import { type NFTTransferArgs, type NFTAllowanceArgs, type NFTApproveArgs, ResultStatus } from \"@icpswap/types\";\nimport { Identity } from \"types/global\";\nimport { BaseNFTAdapter } from \"./BaseNFTAdapter\";\nimport { ICPSwapAdapter } from \"./ICPSwapNFTAdapter\";\n\nexport class NFT {\n public canisterAdapters = new Map();\n\n public adapters = new Map();\n\n public initialAdapter(name: AdapterName, adapter: BaseNFTAdapter) {\n if (this.adapters.get(name)) throw Error(\"This adapter is already initialed\");\n this.adapters.set(name, adapter);\n }\n\n public register({ canisterIds, name }: { canisterIds: string[]; name: AdapterName }) {\n canisterIds.forEach((canisterId) => {\n this.canisterAdapters.set(canisterId, name);\n });\n }\n\n public getAdapter(canisterId: string) {\n const adapterName = this.canisterAdapters.get(canisterId);\n return adapterName ? this.adapters.get(adapterName) : undefined;\n }\n\n public getAdapterByName(adapterName: AdapterName) {\n if (!this.adapters.get(adapterName)) throw Error(`Can't not found adapter ${adapterName}`);\n return this.adapters.get(adapterName);\n }\n\n public async transfer({\n adapterName,\n params,\n identity,\n canisterId,\n }: {\n identity: Identity;\n adapterName: AdapterName;\n params: NFTTransferArgs;\n canisterId: string;\n }) {\n const adapter = this.getAdapterByName(adapterName);\n\n if (!adapter) return { status: ResultStatus.ERROR, data: undefined, message: \"No adapter\" };\n\n return await adapter.transfer({ canisterId, params, identity });\n }\n\n public async allowance({\n adapterName,\n params,\n canisterId,\n }: {\n canisterId: string;\n adapterName: AdapterName;\n params: NFTAllowanceArgs;\n }) {\n const adapter = this.getAdapterByName(adapterName);\n if (!adapter) return { status: ResultStatus.ERROR, data: undefined, message: \"No adapter\" };\n return await adapter.allowance({\n canisterId,\n params,\n });\n }\n\n public async approve({\n params,\n canisterId,\n adapterName,\n identity,\n }: {\n adapterName: AdapterName;\n canisterId: string;\n params: NFTApproveArgs;\n identity: Identity;\n }) {\n const adapter = this.getAdapterByName(adapterName);\n if (!adapter) return { status: ResultStatus.ERROR, data: undefined, message: \"No adapter\" };\n return await adapter.approve({\n canisterId,\n identity,\n params,\n });\n }\n}\n\nexport const NFTs = new NFT();\n\nexport const registerNFTs = ({ canisterIds, name }: { canisterIds: string[]; name: AdapterName }) =>\n NFTs.register({ canisterIds, name });\n\nexport enum AdapterName {\n ICPSwap = \"ICPSwap\",\n}\n\nNFTs.initialAdapter(AdapterName.ICPSwap, ICPSwapAdapter);\n","import type { NFTBuyArgs, NFTSaleArgs, NFTRevokeArgs } from \"@icpswap/types\";\nimport { StatusResult } from \"@icpswap/types\";\nimport { Identity } from \"types/global\";\n\nexport interface BuyParameters {\n identity: Identity;\n params: NFTBuyArgs;\n}\n\nexport interface SaleParameters {\n identity: Identity;\n params: NFTSaleArgs;\n}\n\nexport interface RevokeParameters {\n identity: Identity;\n params: NFTRevokeArgs;\n}\n\nexport abstract class BaseNFTsTradeAdapter {\n public readonly actor: any;\n\n constructor({ actor }: { actor: any }) {\n this.actor = actor;\n }\n\n public abstract buy(params: BuyParameters): Promise>;\n\n public abstract sale(params: SaleParameters): Promise>;\n\n public abstract revoke(params: RevokeParameters): Promise>;\n}\n","import type { NFTBuyArgs, NFTSaleArgs, NFTRevokeArgs } from \"@icpswap/types\";\nimport { resultFormat } from \"@icpswap/utils\";\nimport { Identity } from \"types/global\";\nimport { NFTTradeCanister } from \"@icpswap/actor\";\nimport { BaseNFTsTradeAdapter } from \"./BaseNFTAdapter\";\n\nexport class ICPSwapNFTsTradeAdapter extends BaseNFTsTradeAdapter {\n public async buy({ params, identity }: { params: NFTBuyArgs; identity: Identity }) {\n return resultFormat(await (await this.actor(identity)).buy(params));\n }\n\n public async sale({ params, identity }: { params: NFTSaleArgs; identity: Identity }) {\n return resultFormat(await (await this.actor(identity)).sale(params));\n }\n\n public async revoke({ params, identity }: { params: NFTRevokeArgs; identity: Identity }) {\n return resultFormat(await (await this.actor(identity)).revoke(params));\n }\n}\n\nexport const ICPSwapTradeAdapter = new ICPSwapNFTsTradeAdapter({\n actor: NFTTradeCanister,\n});\n","import { ResultStatus, type NFTBuyArgs, type NFTRevokeArgs, type NFTSaleArgs } from \"@icpswap/types\";\nimport { Identity } from \"types/global\";\nimport { BaseNFTsTradeAdapter } from \"./BaseNFTAdapter\";\nimport { ICPSwapTradeAdapter } from \"./ICPSwapNFTTradeAdapter\";\n\nexport enum TradeAdapterName {\n ICPSwap = \"ICPSwap\",\n}\n\nexport class NFTsTradeAdapter {\n public canisterAdapters = new Map();\n\n public adapters = new Map();\n\n public initialAdapter(name: TradeAdapterName, adapter: BaseNFTsTradeAdapter) {\n if (this.adapters.get(name)) throw Error(\"This adapter is already initialed\");\n this.adapters.set(name, adapter);\n }\n\n public register({ canisterIds, name }: { canisterIds: string[]; name: TradeAdapterName }) {\n canisterIds.forEach((canisterId) => {\n this.canisterAdapters.set(canisterId, name);\n });\n }\n\n public getAdapter(canisterId: string) {\n const adapterName = this.canisterAdapters.get(canisterId);\n return adapterName ? this.adapters.get(adapterName) : undefined;\n }\n\n public getAdapterByName(adapterName: TradeAdapterName) {\n if (!this.adapters.get(adapterName)) throw Error(`Can't not found adapter ${adapterName}`);\n return this.adapters.get(adapterName);\n }\n\n public async sale({\n adapterName,\n params,\n identity,\n }: {\n identity: Identity;\n adapterName: TradeAdapterName;\n params: NFTSaleArgs;\n }) {\n const adapter = this.getAdapterByName(adapterName);\n if (!adapter) return { status: ResultStatus.ERROR, data: undefined, message: \"\" };\n return await adapter.sale({ params, identity });\n }\n\n public async revoke({\n adapterName,\n params,\n identity,\n }: {\n identity: Identity;\n adapterName: TradeAdapterName;\n params: NFTRevokeArgs;\n }) {\n const adapter = this.getAdapterByName(adapterName);\n if (!adapter) return { status: ResultStatus.ERROR, data: undefined, message: \"\" };\n return await adapter.revoke({ params, identity });\n }\n\n public async buy({\n adapterName,\n params,\n identity,\n }: {\n identity: Identity;\n adapterName: TradeAdapterName;\n params: NFTBuyArgs;\n }) {\n const adapter = this.getAdapterByName(adapterName);\n if (!adapter) return { status: ResultStatus.ERROR, data: undefined, message: \"\" };\n return await adapter.buy({ params, identity });\n }\n}\n\nexport const NFTsTrade = new NFTsTradeAdapter();\n\nNFTsTrade.initialAdapter(TradeAdapterName.ICPSwap, ICPSwapTradeAdapter);\n","import { Principal } from \"@dfinity/principal\";\nimport { type SwapNFTTokenMetadata } from \"@icpswap/types\";\n\nexport function from32bits(data: number[]) {\n let value;\n\n for (let i = 0; i < 4; i++) {\n // @ts-ignore\n value = (value << 8) | data[i];\n }\n\n return value;\n}\n\nexport function to32bits(num: number) {\n const arrayBuffer = new ArrayBuffer(4);\n new DataView(arrayBuffer).setUint32(0, num);\n return Array.from(new Uint8Array(arrayBuffer));\n}\n\nexport function toHexString(byteArray: number[]) {\n return Array.from(byteArray, (byte) => {\n return `0${(byte & 0xff).toString(16)}`.slice(-2);\n }).join(\"\");\n}\n\nexport function encodeTokenIdentifier(principal: string, index: number | bigint) {\n // @ts-ignore\n const padding = Buffer(\"\\x0Atid\");\n\n const array = new Uint8Array([\n ...padding,\n ...Principal.fromText(principal).toUint8Array(),\n ...to32bits(Number(index)),\n ]);\n return Principal.fromUint8Array(array).toText();\n}\n\nexport function decodeTokenId(tid: string) {\n const p = [...Principal.fromText(tid).toUint8Array()];\n const padding = p.splice(0, 4);\n\n // @ts-ignore\n if (toHexString(padding) !== toHexString(Buffer(\"\\x0Atid\"))) {\n return {\n index: 0,\n canister: tid,\n token: encodeTokenIdentifier(tid, 0),\n };\n }\n return {\n index: from32bits(p.splice(-4)),\n // @ts-ignore\n canister: Principal.fromUint8Array(p).toText(),\n token: tid,\n };\n}\n\nexport function getNFTSwapPoolId(nft: SwapNFTTokenMetadata) {\n let poolId = \"\";\n\n for (let i = 0; i < nft.attributes.length; i++) {\n if (nft.attributes[i].k === \"pool\") {\n poolId = nft.attributes[i].v;\n break;\n }\n }\n\n return poolId;\n}\n\nexport function getNFTSwapPositionId(nft: SwapNFTTokenMetadata) {\n let poolId = \"\";\n\n for (let i = 0; i < nft.attributes.length; i++) {\n if (nft.attributes[i].k === \"positionId\") {\n poolId = nft.attributes[i].v;\n break;\n }\n }\n\n return poolId;\n}\n\nexport * from \"./NFT\";\nexport * from \"./trade\";\n","import { StakingState } from \"@icpswap/types\";\nimport { FilterState } from \"types/staking-token\";\n\nexport function getStateValue(state: StakingState) {\n switch (state) {\n case StakingState.LIVE:\n return BigInt(2);\n case StakingState.NOT_STARTED:\n return BigInt(1);\n case StakingState.FINISHED:\n return BigInt(3);\n default:\n return undefined;\n }\n}\n\nexport function getStateValueByFilterState(__state: FilterState) {\n switch (__state) {\n case FilterState.ALL:\n return undefined;\n case FilterState.NOT_STARTED:\n return getStateValue(StakingState.NOT_STARTED);\n case FilterState.LIVE:\n return getStateValue(StakingState.LIVE);\n case FilterState.FINISHED:\n return getStateValue(StakingState.FINISHED);\n case FilterState.YOUR:\n return undefined;\n default:\n return undefined;\n }\n}\n","import BigNumber from \"bignumber.js\";\nimport { SAFE_DECIMALS_LENGTH } from \"constants/index\";\n\n/**\n * Given some token amount, check and format the amount by the max decimals\n * @param amount token amount\n * @param decimals token decimals\n */\nexport function maxAmountFormat(amount: string, decimals: number): string {\n if (!amount) return amount;\n\n if (decimals > SAFE_DECIMALS_LENGTH) {\n return new BigNumber(amount).toFixed(SAFE_DECIMALS_LENGTH);\n }\n\n return amount;\n}\n","export function sortToken(token0: string, token1: string) {\n return token0 > token1 ? { token0: token1, token1: token0 } : { token0, token1 };\n}\n","import { type Position } from \"@icpswap/swap-sdk\";\n\nexport function encodePositionKey(position: Position | undefined, index: bigint | number) {\n if (!position) return undefined;\n\n const { token0, token1 } = position.pool;\n\n const keyItems = [\n position.pool.id,\n index.toString(),\n token0.address,\n token0.transFee.toString(),\n token1.address,\n token1.transFee.toString(),\n ];\n\n return keyItems.join(\"_\");\n}\n\nexport function encodePositionKeyByPool(poolId: string | undefined, index: bigint | number) {\n if (!poolId) return undefined;\n\n return `${poolId}_${index.toString()}`;\n}\n\nexport function decodePositionKey(key: string | undefined) {\n if (!key || !key.includes(\"_\")) return {};\n\n const arr = key.split(\"_\");\n\n return {\n poolId: arr[0],\n positionIndex: arr[1],\n token0: arr[2],\n token0Fee: arr[3],\n token1: arr[4],\n token1Fee: arr[5],\n };\n}\n\nexport enum PositionState {\n OutOfRange = \"outOfRange\",\n InRange = \"inRange\",\n LEVEL0 = \"level0\",\n LEVEL1 = \"level1\",\n CLOSED = \"closed\",\n}\n\nexport const getStateColor = (state: PositionState) => {\n switch (state) {\n case PositionState.OutOfRange:\n return \"#9D332C\";\n case PositionState.InRange:\n return \"#54C081\";\n case PositionState.LEVEL0:\n return \"#FFD24C\";\n case PositionState.LEVEL1:\n return \"#D3625B\";\n case PositionState.CLOSED:\n return \"#8492C4\";\n default:\n return \"#54C081\";\n }\n};\n","import { Token, CurrencyAmount } from \"@icpswap/swap-sdk\";\nimport { SAFE_INTEGER_LENGTH, SAFE_DECIMALS_LENGTH } from \"constants/index\";\nimport { BigNumber } from \"@icpswap/utils\";\n\nexport function tryParseAmount(value?: string, currency?: T): CurrencyAmount | undefined {\n if (!value || !currency) {\n return undefined;\n }\n try {\n const typedValueParsed = new BigNumber(value)\n .multipliedBy(10 ** currency.decimals)\n .toFormat({ groupSeparator: \"\" });\n\n if (typedValueParsed !== \"0\") {\n return CurrencyAmount.fromRawAmount(currency, typedValueParsed);\n }\n } catch (error) {\n // should fail if the user specifies too many decimal places of precision (or maybe exceed max uint?)\n console.error(`Failed to parse input amount: \"${value}\"`, error);\n }\n // necessary for all paths to return a value\n return undefined;\n}\n\nexport function feeAmountToPercentage(feeAmount: number | string): string {\n return `${new BigNumber(feeAmount).div(10000).toFixed(2)}%`;\n}\n\nexport function inputNumberCheck(num: string | number): boolean {\n const integer = String(num).split(\".\")[0];\n const decimal = String(num).split(\".\")[1];\n\n if (decimal && decimal.length > SAFE_DECIMALS_LENGTH) {\n return false;\n }\n\n if (integer && integer.length > SAFE_INTEGER_LENGTH) {\n return false;\n }\n\n return true;\n}\n\nexport * from \"./maxAmountFormat\";\nexport * from \"./maxAmountSpend\";\nexport * from \"./sortToken\";\nexport * from \"./liquidity\";\nexport * from \"./mint\";\n","import {\n Price,\n Token,\n priceToClosestTick,\n nearestUsableTick,\n FeeAmount,\n TICK_SPACINGS,\n encodeSqrtRatioX96,\n TickMath,\n} from \"@icpswap/swap-sdk\";\nimport JSBI from \"jsbi\";\n\nexport function tryParsePrice(baseToken?: Token, quoteToken?: Token, value?: string) {\n if (!baseToken || !quoteToken || !value) {\n return undefined;\n }\n\n if (!value.match(/^\\d*\\.?\\d+$/)) {\n return undefined;\n }\n\n const [whole, fraction] = value.split(\".\");\n\n const decimals = fraction?.length ?? 0;\n const withoutDecimals = JSBI.BigInt((whole ?? \"\") + (fraction ?? \"\"));\n\n return new Price(\n baseToken,\n quoteToken,\n JSBI.multiply(JSBI.BigInt(10 ** decimals), JSBI.BigInt(10 ** baseToken.decimals)),\n JSBI.multiply(withoutDecimals, JSBI.BigInt(10 ** quoteToken.decimals)),\n );\n}\n\nexport function tryParseTick(\n baseToken?: Token,\n quoteToken?: Token,\n feeAmount?: FeeAmount,\n value?: string,\n): number | undefined {\n if (!baseToken || !quoteToken || !feeAmount || !value) {\n return undefined;\n }\n\n const price = tryParsePrice(baseToken, quoteToken, value);\n\n if (!price) {\n return undefined;\n }\n\n let tick: number;\n\n // check price is within min/max bounds, if outside return min/max\n const sqrtRatioX96 = encodeSqrtRatioX96(price.numerator, price.denominator);\n\n if (JSBI.greaterThanOrEqual(sqrtRatioX96, TickMath.MAX_SQRT_RATIO)) {\n tick = TickMath.MAX_TICK;\n } else if (JSBI.lessThanOrEqual(sqrtRatioX96, TickMath.MIN_SQRT_RATIO)) {\n tick = TickMath.MIN_TICK;\n } else {\n // this function is agnostic to the base, will always return the correct tick\n tick = priceToClosestTick(price);\n }\n\n return nearestUsableTick(tick, TICK_SPACINGS[feeAmount]);\n}\n","import { numberToString, BigNumber } from \"@icpswap/utils\";\nimport { TOKEN_STANDARD } from \"@icpswap/token-adapter\";\nimport { Token } from \"@icpswap/swap-sdk\";\n\nexport function isUseTransfer(token: Token | undefined) {\n if (token === undefined) return false;\n return token.standard.includes(\"ICRC1\") || token.standard === TOKEN_STANDARD.ICP;\n}\n\nexport function isUseTransferByStandard(standard: TOKEN_STANDARD) {\n return standard.includes(\"ICRC1\") || standard === TOKEN_STANDARD.ICP;\n}\n\nexport function actualAmountToPool(token: Token, amount: string) {\n if (isUseTransfer(token)) {\n if (!new BigNumber(amount).minus(token.transFee).isGreaterThan(0)) {\n return \"0\";\n }\n return numberToString(new BigNumber(amount).minus(token.transFee));\n }\n return amount;\n}\n","import { BigNumber } from \"@ethersproject/bignumber\";\n\n/**\n * Returns the gas value plus a margin for unexpected or variable gas costs\n * @param value the gas value to pad\n */\nexport function calculateGasMargin(value: BigNumber): BigNumber {\n return value.mul(120).div(100);\n}\n","import { initializeConnector, Web3ReactHooks } from \"@web3-react/core\";\nimport { MetaMask } from \"@web3-react/metamask\";\nimport { Connector } from \"@web3-react/types\";\n\nexport enum ConnectionType {\n INJECTED = \"INJECTED\",\n COINBASE_WALLET = \"COINBASE_WALLET\",\n WALLET_CONNECT = \"WALLET_CONNECT\",\n NETWORK = \"NETWORK\",\n GNOSIS_SAFE = \"GNOSIS_SAFE\",\n}\n\nexport interface Connection {\n connector: Connector;\n hooks: Web3ReactHooks;\n type: ConnectionType;\n}\n\nfunction onError(error: Error) {\n console.error(`web3-react error: ${error}`);\n}\n\nconst [metamask, hooks] = initializeConnector((actions) => new MetaMask({ actions, onError }));\n\nexport const injectedConnection: Connection = {\n connector: metamask,\n hooks,\n type: ConnectionType.INJECTED,\n};\n\nexport { metamask, hooks };\n","import { getAddress } from \"@ethersproject/address\";\nimport { BigNumber as Big } from \"@ethersproject/bignumber\";\nimport { AddressZero } from \"@ethersproject/constants\";\nimport { Contract } from \"@ethersproject/contracts\";\nimport { JsonRpcProvider, JsonRpcSigner } from \"@ethersproject/providers\";\nimport BigNumber from \"bignumber.js\";\n\n// returns the checksummed address if the address is valid, otherwise returns false\nexport function isAddress(value: any): string | false {\n try {\n return getAddress(value);\n } catch {\n return false;\n }\n}\n\n// shorten the checksummed version of the input address to have 0x + 4 characters at start and end\nexport function shortenAddress(address: string, chars = 4): string {\n const parsed = isAddress(address);\n if (!parsed) {\n throw Error(`Invalid 'address' parameter '${address}'.`);\n }\n return `${parsed.substring(0, chars + 2)}...${parsed.substring(42 - chars)}`;\n}\n\n// account is not optional\nfunction getSigner(provider: JsonRpcProvider, account: string): JsonRpcSigner {\n return provider.getSigner(account).connectUnchecked();\n}\n\n// account is optional\nfunction getProviderOrSigner(\n provider: JsonRpcProvider | undefined,\n account?: string,\n): JsonRpcProvider | JsonRpcSigner | undefined {\n return account && provider ? getSigner(provider, account) : provider;\n}\n\n// account is optional\nexport function getContract(\n address: string,\n ABI: any,\n provider: JsonRpcProvider | undefined,\n account?: string,\n): Contract {\n if (!isAddress(address) || address === AddressZero) {\n throw Error(`Invalid 'address' parameter '${address}'.`);\n }\n\n return new Contract(address, ABI, getProviderOrSigner(provider, account) as any);\n}\n\nexport function escapeRegExp(string: string): string {\n return string.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\"); // $& means the whole matched string\n}\n\nexport function toHexString(amount: string | number, decimals = 18): string {\n return `0x0${new BigNumber(amount).multipliedBy(10 ** decimals).toString(16)}`;\n}\n\n/**\n * Returns the gas value plus a margin for unexpected or variable gas costs\n * @param value the gas value to pad\n */\nexport function calculateGasMargin(value: Big): Big {\n return value.mul(120).div(100);\n}\n","export const idlFactory = ({ IDL }: any) => {\n const Config = IDL.Record({ value: IDL.Text, name: IDL.Text });\n const Media = IDL.Record({ link: IDL.Text, mediaType: IDL.Text });\n const TokenMetadata = IDL.Record({\n fee: IDL.Nat,\n configs: IDL.Vec(Config),\n decimals: IDL.Nat,\n name: IDL.Text,\n rank: IDL.Nat32,\n mediaLinks: IDL.Vec(Media),\n totalSupply: IDL.Nat,\n introduction: IDL.Text,\n standard: IDL.Text,\n symbol: IDL.Text,\n canisterId: IDL.Text,\n });\n const BoolResult = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const Result_3 = IDL.Variant({\n ok: IDL.Opt(TokenMetadata),\n err: IDL.Text,\n });\n const Result_2 = IDL.Variant({ ok: IDL.Vec(IDL.Text), err: IDL.Text });\n const Result_1 = IDL.Variant({\n ok: IDL.Vec(TokenMetadata),\n err: IDL.Text,\n });\n const Result = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n return IDL.Service({\n add: IDL.Func([TokenMetadata], [BoolResult], []),\n addAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n edit: IDL.Func([IDL.Text, TokenMetadata], [BoolResult], []),\n get: IDL.Func([IDL.Text], [Result_3], [\"query\"]),\n getAdminList: IDL.Func([], [Result_2], [\"query\"]),\n getList: IDL.Func([], [Result_1], [\"query\"]),\n getLogo: IDL.Func([IDL.Text], [Result], [\"query\"]),\n remove: IDL.Func([IDL.Text], [BoolResult], []),\n removeAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n updateLogo: IDL.Func([IDL.Text, IDL.Text], [BoolResult], []),\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Result_2 = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n const Result = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const Subaccount = IDL.Vec(IDL.Nat8);\n const Account = IDL.Record({\n owner: IDL.Principal,\n subaccount: IDL.Opt(Subaccount),\n });\n const TokenInfo = IDL.Record({\n fee: IDL.Nat,\n decimals: IDL.Nat,\n minting_account: IDL.Opt(Account),\n logo: IDL.Opt(IDL.Text),\n name: IDL.Text,\n ledger_id: IDL.Principal,\n min_burn_amount: IDL.Nat,\n max_supply: IDL.Opt(IDL.Nat),\n index: IDL.Nat,\n standard: IDL.Text,\n total_supply: IDL.Nat,\n symbol: IDL.Text,\n });\n const Page = IDL.Record({\n content: IDL.Vec(TokenInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_1 = IDL.Variant({ ok: Page, err: IDL.Text });\n return IDL.Service({\n get_logo: IDL.Func([IDL.Principal], [Result_2], [\"query\"]),\n get_task_state: IDL.Func([], [Result], [\"query\"]),\n get_token_list: IDL.Func([IDL.Nat, IDL.Nat, IDL.Opt(IDL.Bool)], [Result_1], [\"query\"]),\n set_task_state: IDL.Func([IDL.Bool], [Result], []),\n set_token_index: IDL.Func([IDL.Principal, IDL.Nat], [Result], []),\n set_token_logo: IDL.Func([IDL.Principal, IDL.Text], [Result], []),\n });\n};\n","export const ic_host = \"https://icp0.io\";\n","import { HttpAgent, ActorSubclass } from \"@dfinity/agent\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { IDL } from \"@dfinity/candid\";\nimport { ic_host } from \"@icpswap/constants\";\nimport { ActorName } from \"./ActorName\";\nimport { createBaseActor } from \"./BaseActor\";\n\nlet cachedCanisterIds: { [key: string]: string } = {};\n\nexport type ActorConstructor = {\n canisterId?: string;\n actorName?: ActorName;\n host?: string;\n idlFactory: IDL.InterfaceFactory;\n identity?: ActorIdentity;\n agent?: HttpAgent;\n};\n\nexport enum Connector {\n ICPSwap = \"ICPSwap\",\n PLUG = \"PLUG\",\n STOIC = \"STOIC\",\n IC = \"IC\",\n NFID = \"NFID\",\n INFINITY = \"INFINITY\",\n ME = \"ME\",\n STOIC_MNEMONIC = \"STOIC_MNEMONIC\",\n Metamask = \"Metamask\",\n}\n\nexport function isICConnector(connector: Connector) {\n return connector === Connector.IC || connector === Connector.STOIC || connector === Connector.NFID;\n}\n\nexport type ActorError = {\n canisterId: string;\n message: string;\n method: string;\n};\nexport type ActorErrorCallback = (error: ActorError) => void;\nexport type BeforeSubmitArgs = {\n canisterId: string;\n method: string;\n identity: ActorIdentity | undefined;\n connector: Connector;\n};\nexport type BeforeSubmitCallback = (args: BeforeSubmitArgs) => Promise<{ success: boolean; message: string }>;\n\nexport function isPlugTypeConnector(connector: Connector) {\n return connector === Connector.PLUG || connector === Connector.INFINITY;\n}\n\nexport function isMeConnector(connector: Connector) {\n return connector === Connector.ME;\n}\n\nexport class Actor {\n private connector: Connector = Connector.ICPSwap;\n\n private agent: null | HttpAgent = null;\n\n private host: string = ic_host;\n\n private errorCallbacks: ActorErrorCallback[] = [];\n\n private beforeSubmit: BeforeSubmitCallback;\n\n public log = false;\n\n public setConnector(connector: Connector) {\n this.connector = connector;\n }\n\n public async create({\n canisterId,\n host,\n idlFactory,\n identity,\n agent,\n actorName,\n }: ActorConstructor): Promise> {\n let id = canisterId;\n if (!id && actorName) id = cachedCanisterIds[actorName];\n if (!id) throw new Error(\"No canister id\");\n\n const _host = host ?? this.host;\n\n const isRejected = false;\n\n const serviceClass = idlFactory({ IDL });\n\n let actor: ActorSubclass | null = null;\n\n // catch create infinity actor rejected\n let createActorError: null | string = null;\n\n if (identity) {\n try {\n actor = await window.icConnector.createActor({\n canisterId: id,\n interfaceFactory: idlFactory,\n });\n } catch (error) {\n createActorError = String(error);\n }\n } else {\n actor = await createBaseActor({\n canisterId: id,\n interfaceFactory: idlFactory,\n agent: this.AnonymousAgent(_host),\n fetchRootKey: _host !== ic_host,\n });\n }\n\n const _actor: any = {};\n\n serviceClass._fields.forEach((ele) => {\n const key = ele[0];\n\n _actor[key] = async (...args) => {\n if (createActorError)\n return {\n err: `${createActorError}. Please try reconnecting your wallet and ensure the account inside matches the account displayed on the ICPSwap page.`,\n };\n\n if (isRejected) {\n return {\n err: \"The agent creation was rejected. Please try reconnecting your wallet and ensure the account inside matches the account displayed on the ICPSwap page.\",\n };\n }\n\n try {\n if (!actor) return { err: \"no actor\" };\n\n if (this.beforeSubmit) {\n const checkResult = await this.beforeSubmit({\n canisterId: id ?? \"\",\n method: key,\n identity,\n connector: this.connector,\n });\n\n if (checkResult.success === false) {\n return { err: checkResult.message };\n }\n }\n\n const result = actor[key](...args) as Promise;\n return await result;\n } catch (error) {\n const _error = String(error);\n\n let message = \"\";\n if (_error.includes(\"Reject text:\")) {\n const _message = _error.split(`Reject text: `)[1]?.split(\" at\") ?? \"\";\n message = _message ? _message[0]?.trim() : _error;\n } else {\n const _message = _error.includes(`\"Message\"`) ? _error.split(`\"Message\": `)[1]?.split('\"') : \"\";\n message = _error.includes(`\"Message\"`) && !!_message ? _message[1] : _error;\n }\n\n if (this.log) {\n console.log(\"Actor =====================>\");\n console.log(\"canister: \", id);\n console.log(\"method: \", key);\n console.log(\"rejected: \", message);\n console.log(\"Actor =====================>\");\n }\n\n this.errorCallbacks.forEach((call) => {\n call({ canisterId: id ?? \"\", method: key, message });\n });\n\n return { err: message };\n }\n };\n });\n\n return _actor as ActorSubclass;\n }\n\n public AnonymousAgent(host?: string) {\n return new HttpAgent({\n host: host ?? this.host,\n });\n }\n\n public async createAgent(canisterId: string, host: string, identity?: ActorIdentity): Promise {\n // connector is plug type\n if (identity === true) {\n if (this.connector === Connector.PLUG) {\n await window.ic.plug.createAgent({ whitelist: [canisterId], host });\n return window.ic.plug.agent;\n }\n if (this.connector === Connector.INFINITY) {\n return new HttpAgent({\n host,\n });\n }\n return window.icConnector.httpAgent;\n }\n\n return new HttpAgent({\n host,\n });\n }\n\n public setAgent(agent: HttpAgent | null) {\n this.agent = agent;\n }\n\n public setHost(host: string) {\n this.host = host;\n }\n\n public static setActorCanisterIds(canisterIds: { [key: string]: string }) {\n cachedCanisterIds = canisterIds;\n }\n\n public onError(callback: ActorErrorCallback) {\n this.errorCallbacks.push(callback);\n }\n\n public onSubmit(callback: BeforeSubmitCallback) {\n this.beforeSubmit = callback;\n }\n\n public setLog(log: boolean) {\n this.log = log;\n }\n}\n\nexport const actor = new Actor();\n","import { Actor, HttpAgent } from \"@dfinity/agent\";\nimport { IDL } from \"@dfinity/candid\";\n\nexport interface CreateBaseActorProps {\n canisterId: string;\n interfaceFactory: IDL.InterfaceFactory;\n actorOptions?: any;\n agent: HttpAgent;\n fetchRootKey?: boolean;\n}\n\nexport async function createBaseActor({\n canisterId,\n interfaceFactory,\n actorOptions,\n agent,\n fetchRootKey = false,\n}: CreateBaseActorProps) {\n // Fetch root key for certificate validation during development\n if (fetchRootKey) {\n await agent?.fetchRootKey().catch((err) => {\n console.warn(\n \"Unable to fetch root key. Check to ensure that your local replica is running\"\n );\n console.error(err);\n });\n }\n\n return Actor.createActor(interfaceFactory, {\n agent: agent,\n canisterId,\n ...(actorOptions ?? {}),\n });\n}\n","export enum ActorName {\n SwapPool = \"SwapPool\",\n SwapFactory = \"SwapFactory\",\n SwapNFTCanister = \"SwapNFT\",\n Position = \"PositionIndex\",\n PassCodeManager = \"PassCodeManager\",\n PositionCharts = \"PositionCharts\",\n\n SwapGraphRecord = \"BaseDataStructure\",\n SwapGraphPool = \"Pools\",\n SwapGraphToken = \"Token\",\n SwapTicket = \"Ticket\",\n GraphICP = \"ICPPrice\",\n TVL = \"TVL\",\n\n TokenList = \"TokenList\",\n AllTokenOfSwap = \"AllTokenOfSwap\",\n\n Token = \"token\",\n WICP = \"wicp\",\n\n FarmController = \"FarmController\",\n Farm = \"Farm\",\n FarmStorage = \"FarmStorage\",\n FarmIndex = \"FarmIndex\",\n\n NFTCanisterController = \"V3NFTCanisterController\",\n NFTCanister = \"NFTDynamicCanister\",\n NFTTradeCanister = \"V3TradeCanister\",\n NFTTradeStat = \"V3TradeStat\",\n\n LaunchpadCanister = \"LaunchpadCanister\",\n LaunchpadController = \"LaunchpadController\",\n LaunchpadManager = \"LaunchpadManager\",\n LaunchpadStorage = \"LaunchpadStorage\",\n\n ClaimController = \"ClaimController\",\n ClaimStorage = \"ClaimStorage\",\n\n VotingController = \"VoteController\",\n VotingCanister = \"VoteProjectCanister\",\n VotingFileCanister = \"VoteFileCanister\",\n\n StakingTokenController = \"StakingTokenController\",\n TokenPool = \"TokenPool\",\n TokenPoolStorage = \"TokenPoolStorage\",\n StakeIndex = \"StakeIndex\",\n\n V1TokenPoolController = \"V1TokenPoolController\",\n V1TokenPool = \"V1TokenPool\",\n V1TokenPoolStorage = \"V1TokenPoolStorage\",\n\n GlobalIndex = \"GlobalIndex\",\n NodeIndex = \"NodeIndex\",\n BaseIndex = \"BaseIndex\",\n\n LiquidityLocks = \"LiquidityLocks\",\n}\n","import {\n TokenListService,\n TokenListInterfaceFactory,\n AllTokenOfSwapInterfaceFactory,\n AllTokenOfSwapService,\n} from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\nimport { ActorName } from \"../ActorName\";\n\nexport const tokenList = async (identity?: true) =>\n actor.create({\n actorName: ActorName.TokenList,\n identity,\n idlFactory: TokenListInterfaceFactory,\n });\n\nexport const allTokenOfSwap = async () =>\n actor.create({\n canisterId: \"aofop-yyaaa-aaaag-qdiqa-cai\",\n idlFactory: AllTokenOfSwapInterfaceFactory,\n });\n","import { SNS_ROOT_SERVE, SNS_INTERFACE_FACTORY } from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\n\nexport const sns_root = async (canisterId: string) =>\n actor.create({\n canisterId,\n idlFactory: SNS_INTERFACE_FACTORY,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const SnsWasmCanisterInitPayload = IDL.Record({\n allowed_principals: IDL.Vec(IDL.Principal),\n access_controls_enabled: IDL.Bool,\n sns_subnet_ids: IDL.Vec(IDL.Principal),\n });\n const SnsWasm = IDL.Record({\n wasm: IDL.Vec(IDL.Nat8),\n canister_type: IDL.Int32,\n });\n const AddWasmRequest = IDL.Record({\n hash: IDL.Vec(IDL.Nat8),\n wasm: IDL.Opt(SnsWasm),\n });\n const SnsWasmError = IDL.Record({ message: IDL.Text });\n const Result = IDL.Variant({\n Error: SnsWasmError,\n Hash: IDL.Vec(IDL.Nat8),\n });\n const AddWasmResponse = IDL.Record({ result: IDL.Opt(Result) });\n const NeuronBasketConstructionParameters = IDL.Record({\n dissolve_delay_interval_seconds: IDL.Nat64,\n count: IDL.Nat64,\n });\n const Canister = IDL.Record({ id: IDL.Opt(IDL.Principal) });\n const DappCanisters = IDL.Record({ canisters: IDL.Vec(Canister) });\n const LinearScalingCoefficient = IDL.Record({\n slope_numerator: IDL.Opt(IDL.Nat64),\n intercept_icp_e8s: IDL.Opt(IDL.Nat64),\n from_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n slope_denominator: IDL.Opt(IDL.Nat64),\n to_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n });\n const IdealMatchedParticipationFunction = IDL.Record({\n serialized_representation: IDL.Opt(IDL.Text),\n });\n const NeuronsFundParticipationConstraints = IDL.Record({\n coefficient_intervals: IDL.Vec(LinearScalingCoefficient),\n max_neurons_fund_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n min_direct_participation_threshold_icp_e8s: IDL.Opt(IDL.Nat64),\n ideal_matched_participation_function: IDL.Opt(\n IdealMatchedParticipationFunction\n ),\n });\n const CfNeuron = IDL.Record({\n has_created_neuron_recipes: IDL.Opt(IDL.Bool),\n nns_neuron_id: IDL.Nat64,\n amount_icp_e8s: IDL.Nat64,\n });\n const CfParticipant = IDL.Record({\n hotkey_principal: IDL.Text,\n cf_neurons: IDL.Vec(CfNeuron),\n });\n const NeuronsFundParticipants = IDL.Record({\n participants: IDL.Vec(CfParticipant),\n });\n const TreasuryDistribution = IDL.Record({ total_e8s: IDL.Nat64 });\n const NeuronDistribution = IDL.Record({\n controller: IDL.Opt(IDL.Principal),\n dissolve_delay_seconds: IDL.Nat64,\n memo: IDL.Nat64,\n stake_e8s: IDL.Nat64,\n vesting_period_seconds: IDL.Opt(IDL.Nat64),\n });\n const DeveloperDistribution = IDL.Record({\n developer_neurons: IDL.Vec(NeuronDistribution),\n });\n const AirdropDistribution = IDL.Record({\n airdrop_neurons: IDL.Vec(NeuronDistribution),\n });\n const SwapDistribution = IDL.Record({\n total_e8s: IDL.Nat64,\n initial_swap_amount_e8s: IDL.Nat64,\n });\n const FractionalDeveloperVotingPower = IDL.Record({\n treasury_distribution: IDL.Opt(TreasuryDistribution),\n developer_distribution: IDL.Opt(DeveloperDistribution),\n airdrop_distribution: IDL.Opt(AirdropDistribution),\n swap_distribution: IDL.Opt(SwapDistribution),\n });\n const InitialTokenDistribution = IDL.Variant({\n FractionalDeveloperVotingPower: FractionalDeveloperVotingPower,\n });\n const Countries = IDL.Record({ iso_codes: IDL.Vec(IDL.Text) });\n const SnsInitPayload = IDL.Record({\n url: IDL.Opt(IDL.Text),\n max_dissolve_delay_seconds: IDL.Opt(IDL.Nat64),\n max_dissolve_delay_bonus_percentage: IDL.Opt(IDL.Nat64),\n nns_proposal_id: IDL.Opt(IDL.Nat64),\n neurons_fund_participation: IDL.Opt(IDL.Bool),\n min_participant_icp_e8s: IDL.Opt(IDL.Nat64),\n neuron_basket_construction_parameters: IDL.Opt(\n NeuronBasketConstructionParameters\n ),\n fallback_controller_principal_ids: IDL.Vec(IDL.Text),\n token_symbol: IDL.Opt(IDL.Text),\n final_reward_rate_basis_points: IDL.Opt(IDL.Nat64),\n max_icp_e8s: IDL.Opt(IDL.Nat64),\n neuron_minimum_stake_e8s: IDL.Opt(IDL.Nat64),\n confirmation_text: IDL.Opt(IDL.Text),\n logo: IDL.Opt(IDL.Text),\n name: IDL.Opt(IDL.Text),\n swap_start_timestamp_seconds: IDL.Opt(IDL.Nat64),\n swap_due_timestamp_seconds: IDL.Opt(IDL.Nat64),\n initial_voting_period_seconds: IDL.Opt(IDL.Nat64),\n neuron_minimum_dissolve_delay_to_vote_seconds: IDL.Opt(IDL.Nat64),\n description: IDL.Opt(IDL.Text),\n max_neuron_age_seconds_for_age_bonus: IDL.Opt(IDL.Nat64),\n min_participants: IDL.Opt(IDL.Nat64),\n initial_reward_rate_basis_points: IDL.Opt(IDL.Nat64),\n wait_for_quiet_deadline_increase_seconds: IDL.Opt(IDL.Nat64),\n transaction_fee_e8s: IDL.Opt(IDL.Nat64),\n dapp_canisters: IDL.Opt(DappCanisters),\n neurons_fund_participation_constraints: IDL.Opt(\n NeuronsFundParticipationConstraints\n ),\n neurons_fund_participants: IDL.Opt(NeuronsFundParticipants),\n max_age_bonus_percentage: IDL.Opt(IDL.Nat64),\n initial_token_distribution: IDL.Opt(InitialTokenDistribution),\n reward_rate_transition_duration_seconds: IDL.Opt(IDL.Nat64),\n token_logo: IDL.Opt(IDL.Text),\n token_name: IDL.Opt(IDL.Text),\n max_participant_icp_e8s: IDL.Opt(IDL.Nat64),\n min_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n proposal_reject_cost_e8s: IDL.Opt(IDL.Nat64),\n restricted_countries: IDL.Opt(Countries),\n min_icp_e8s: IDL.Opt(IDL.Nat64),\n max_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n });\n const DeployNewSnsRequest = IDL.Record({\n sns_init_payload: IDL.Opt(SnsInitPayload),\n });\n const DappCanistersTransferResult = IDL.Record({\n restored_dapp_canisters: IDL.Vec(Canister),\n nns_controlled_dapp_canisters: IDL.Vec(Canister),\n sns_controlled_dapp_canisters: IDL.Vec(Canister),\n });\n const SnsCanisterIds = IDL.Record({\n root: IDL.Opt(IDL.Principal),\n swap: IDL.Opt(IDL.Principal),\n ledger: IDL.Opt(IDL.Principal),\n index: IDL.Opt(IDL.Principal),\n governance: IDL.Opt(IDL.Principal),\n });\n const DeployNewSnsResponse = IDL.Record({\n dapp_canisters_transfer_result: IDL.Opt(DappCanistersTransferResult),\n subnet_id: IDL.Opt(IDL.Principal),\n error: IDL.Opt(SnsWasmError),\n canisters: IDL.Opt(SnsCanisterIds),\n });\n const GetAllowedPrincipalsResponse = IDL.Record({\n allowed_principals: IDL.Vec(IDL.Principal),\n });\n const GetDeployedSnsByProposalIdRequest = IDL.Record({\n proposal_id: IDL.Nat64,\n });\n const DeployedSns = IDL.Record({\n root_canister_id: IDL.Opt(IDL.Principal),\n governance_canister_id: IDL.Opt(IDL.Principal),\n index_canister_id: IDL.Opt(IDL.Principal),\n swap_canister_id: IDL.Opt(IDL.Principal),\n ledger_canister_id: IDL.Opt(IDL.Principal),\n });\n const GetDeployedSnsByProposalIdResult = IDL.Variant({\n Error: SnsWasmError,\n DeployedSns: DeployedSns,\n });\n const GetDeployedSnsByProposalIdResponse = IDL.Record({\n get_deployed_sns_by_proposal_id_result: IDL.Opt(\n GetDeployedSnsByProposalIdResult\n ),\n });\n const SnsVersion = IDL.Record({\n archive_wasm_hash: IDL.Vec(IDL.Nat8),\n root_wasm_hash: IDL.Vec(IDL.Nat8),\n swap_wasm_hash: IDL.Vec(IDL.Nat8),\n ledger_wasm_hash: IDL.Vec(IDL.Nat8),\n governance_wasm_hash: IDL.Vec(IDL.Nat8),\n index_wasm_hash: IDL.Vec(IDL.Nat8),\n });\n const GetNextSnsVersionRequest = IDL.Record({\n governance_canister_id: IDL.Opt(IDL.Principal),\n current_version: IDL.Opt(SnsVersion),\n });\n const GetNextSnsVersionResponse = IDL.Record({\n next_version: IDL.Opt(SnsVersion),\n });\n const GetSnsSubnetIdsResponse = IDL.Record({\n sns_subnet_ids: IDL.Vec(IDL.Principal),\n });\n const GetWasmRequest = IDL.Record({ hash: IDL.Vec(IDL.Nat8) });\n const GetWasmResponse = IDL.Record({ wasm: IDL.Opt(SnsWasm) });\n const SnsUpgrade = IDL.Record({\n next_version: IDL.Opt(SnsVersion),\n current_version: IDL.Opt(SnsVersion),\n });\n const InsertUpgradePathEntriesRequest = IDL.Record({\n upgrade_path: IDL.Vec(SnsUpgrade),\n sns_governance_canister_id: IDL.Opt(IDL.Principal),\n });\n const InsertUpgradePathEntriesResponse = IDL.Record({\n error: IDL.Opt(SnsWasmError),\n });\n const ListDeployedSnsesResponse = IDL.Record({\n instances: IDL.Vec(DeployedSns),\n });\n const ListUpgradeStepsRequest = IDL.Record({\n limit: IDL.Nat32,\n starting_at: IDL.Opt(SnsVersion),\n sns_governance_canister_id: IDL.Opt(IDL.Principal),\n });\n const PrettySnsVersion = IDL.Record({\n archive_wasm_hash: IDL.Text,\n root_wasm_hash: IDL.Text,\n swap_wasm_hash: IDL.Text,\n ledger_wasm_hash: IDL.Text,\n governance_wasm_hash: IDL.Text,\n index_wasm_hash: IDL.Text,\n });\n const ListUpgradeStep = IDL.Record({\n pretty_version: IDL.Opt(PrettySnsVersion),\n version: IDL.Opt(SnsVersion),\n });\n const ListUpgradeStepsResponse = IDL.Record({\n steps: IDL.Vec(ListUpgradeStep),\n });\n const UpdateAllowedPrincipalsRequest = IDL.Record({\n added_principals: IDL.Vec(IDL.Principal),\n removed_principals: IDL.Vec(IDL.Principal),\n });\n const UpdateAllowedPrincipalsResult = IDL.Variant({\n Error: SnsWasmError,\n AllowedPrincipals: GetAllowedPrincipalsResponse,\n });\n const UpdateAllowedPrincipalsResponse = IDL.Record({\n update_allowed_principals_result: IDL.Opt(UpdateAllowedPrincipalsResult),\n });\n const UpdateSnsSubnetListRequest = IDL.Record({\n sns_subnet_ids_to_add: IDL.Vec(IDL.Principal),\n sns_subnet_ids_to_remove: IDL.Vec(IDL.Principal),\n });\n const UpdateSnsSubnetListResponse = IDL.Record({\n error: IDL.Opt(SnsWasmError),\n });\n return IDL.Service({\n add_wasm: IDL.Func([AddWasmRequest], [AddWasmResponse], []),\n deploy_new_sns: IDL.Func([DeployNewSnsRequest], [DeployNewSnsResponse], []),\n get_allowed_principals: IDL.Func(\n [IDL.Record({})],\n [GetAllowedPrincipalsResponse],\n [\"query\"]\n ),\n get_deployed_sns_by_proposal_id: IDL.Func(\n [GetDeployedSnsByProposalIdRequest],\n [GetDeployedSnsByProposalIdResponse],\n [\"query\"]\n ),\n get_latest_sns_version_pretty: IDL.Func(\n [IDL.Null],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))],\n [\"query\"]\n ),\n get_next_sns_version: IDL.Func(\n [GetNextSnsVersionRequest],\n [GetNextSnsVersionResponse],\n [\"query\"]\n ),\n get_sns_subnet_ids: IDL.Func(\n [IDL.Record({})],\n [GetSnsSubnetIdsResponse],\n [\"query\"]\n ),\n get_wasm: IDL.Func([GetWasmRequest], [GetWasmResponse], [\"query\"]),\n insert_upgrade_path_entries: IDL.Func(\n [InsertUpgradePathEntriesRequest],\n [InsertUpgradePathEntriesResponse],\n []\n ),\n list_deployed_snses: IDL.Func(\n [IDL.Record({})],\n [ListDeployedSnsesResponse],\n [\"query\"]\n ),\n list_upgrade_steps: IDL.Func(\n [ListUpgradeStepsRequest],\n [ListUpgradeStepsResponse],\n [\"query\"]\n ),\n update_allowed_principals: IDL.Func(\n [UpdateAllowedPrincipalsRequest],\n [UpdateAllowedPrincipalsResponse],\n []\n ),\n update_sns_subnet_list: IDL.Func(\n [UpdateSnsSubnetListRequest],\n [UpdateSnsSubnetListResponse],\n []\n ),\n });\n};\n","import { SNS_WASM_SERVICE, SNS_WASM_INTERFACE_FACTORY } from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\n\nexport const sns_wasm = async () =>\n actor.create({\n canisterId: \"qaa6y-5yaaa-aaaaa-aaafa-cai\",\n idlFactory: SNS_WASM_INTERFACE_FACTORY,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const NeuronBasketConstructionParameters = IDL.Record({\n dissolve_delay_interval_seconds: IDL.Nat64,\n count: IDL.Nat64,\n });\n const LinearScalingCoefficient = IDL.Record({\n slope_numerator: IDL.Opt(IDL.Nat64),\n intercept_icp_e8s: IDL.Opt(IDL.Nat64),\n from_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n slope_denominator: IDL.Opt(IDL.Nat64),\n to_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n });\n const IdealMatchedParticipationFunction = IDL.Record({\n serialized_representation: IDL.Opt(IDL.Text),\n });\n const NeuronsFundParticipationConstraints = IDL.Record({\n coefficient_intervals: IDL.Vec(LinearScalingCoefficient),\n max_neurons_fund_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n min_direct_participation_threshold_icp_e8s: IDL.Opt(IDL.Nat64),\n ideal_matched_participation_function: IDL.Opt(\n IdealMatchedParticipationFunction\n ),\n });\n const CfNeuron = IDL.Record({\n has_created_neuron_recipes: IDL.Opt(IDL.Bool),\n nns_neuron_id: IDL.Nat64,\n amount_icp_e8s: IDL.Nat64,\n });\n const CfParticipant = IDL.Record({\n hotkey_principal: IDL.Text,\n cf_neurons: IDL.Vec(CfNeuron),\n });\n const NeuronsFundParticipants = IDL.Record({\n cf_participants: IDL.Vec(CfParticipant),\n });\n const Countries = IDL.Record({ iso_codes: IDL.Vec(IDL.Text) });\n const Init = IDL.Record({\n nns_proposal_id: IDL.Opt(IDL.Nat64),\n sns_root_canister_id: IDL.Text,\n neurons_fund_participation: IDL.Opt(IDL.Bool),\n min_participant_icp_e8s: IDL.Opt(IDL.Nat64),\n neuron_basket_construction_parameters: IDL.Opt(\n NeuronBasketConstructionParameters\n ),\n fallback_controller_principal_ids: IDL.Vec(IDL.Text),\n max_icp_e8s: IDL.Opt(IDL.Nat64),\n neuron_minimum_stake_e8s: IDL.Opt(IDL.Nat64),\n confirmation_text: IDL.Opt(IDL.Text),\n swap_start_timestamp_seconds: IDL.Opt(IDL.Nat64),\n swap_due_timestamp_seconds: IDL.Opt(IDL.Nat64),\n min_participants: IDL.Opt(IDL.Nat32),\n sns_token_e8s: IDL.Opt(IDL.Nat64),\n nns_governance_canister_id: IDL.Text,\n transaction_fee_e8s: IDL.Opt(IDL.Nat64),\n icp_ledger_canister_id: IDL.Text,\n sns_ledger_canister_id: IDL.Text,\n neurons_fund_participation_constraints: IDL.Opt(\n NeuronsFundParticipationConstraints\n ),\n neurons_fund_participants: IDL.Opt(NeuronsFundParticipants),\n should_auto_finalize: IDL.Opt(IDL.Bool),\n max_participant_icp_e8s: IDL.Opt(IDL.Nat64),\n sns_governance_canister_id: IDL.Text,\n min_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n restricted_countries: IDL.Opt(Countries),\n min_icp_e8s: IDL.Opt(IDL.Nat64),\n max_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n });\n const ErrorRefundIcpRequest = IDL.Record({\n source_principal_id: IDL.Opt(IDL.Principal),\n });\n const Ok = IDL.Record({ block_height: IDL.Opt(IDL.Nat64) });\n const Err = IDL.Record({\n description: IDL.Opt(IDL.Text),\n error_type: IDL.Opt(IDL.Int32),\n });\n const Result = IDL.Variant({ Ok: Ok, Err: Err });\n const ErrorRefundIcpResponse = IDL.Record({ result: IDL.Opt(Result) });\n const CanisterCallError = IDL.Record({\n code: IDL.Opt(IDL.Int32),\n description: IDL.Text,\n });\n const FailedUpdate = IDL.Record({\n err: IDL.Opt(CanisterCallError),\n dapp_canister_id: IDL.Opt(IDL.Principal),\n });\n const SetDappControllersResponse = IDL.Record({\n failed_updates: IDL.Vec(FailedUpdate),\n });\n const Possibility = IDL.Variant({\n Ok: SetDappControllersResponse,\n Err: CanisterCallError,\n });\n const SetDappControllersCallResult = IDL.Record({\n possibility: IDL.Opt(Possibility),\n });\n const SweepResult = IDL.Record({\n failure: IDL.Nat32,\n skipped: IDL.Nat32,\n invalid: IDL.Nat32,\n success: IDL.Nat32,\n global_failures: IDL.Nat32,\n });\n const GovernanceError = IDL.Record({\n error_message: IDL.Text,\n error_type: IDL.Int32,\n });\n const Response = IDL.Record({\n governance_error: IDL.Opt(GovernanceError),\n });\n const Possibility_1 = IDL.Variant({\n Ok: Response,\n Err: CanisterCallError,\n });\n const SettleCommunityFundParticipationResult = IDL.Record({\n possibility: IDL.Opt(Possibility_1),\n });\n const Ok_1 = IDL.Record({\n neurons_fund_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n neurons_fund_neurons_count: IDL.Opt(IDL.Nat64),\n });\n const Error = IDL.Record({ message: IDL.Opt(IDL.Text) });\n const Possibility_2 = IDL.Variant({ Ok: Ok_1, Err: Error });\n const SettleNeuronsFundParticipationResult = IDL.Record({\n possibility: IDL.Opt(Possibility_2),\n });\n const Possibility_3 = IDL.Variant({\n Ok: IDL.Record({}),\n Err: CanisterCallError,\n });\n const SetModeCallResult = IDL.Record({\n possibility: IDL.Opt(Possibility_3),\n });\n const FinalizeSwapResponse = IDL.Record({\n set_dapp_controllers_call_result: IDL.Opt(SetDappControllersCallResult),\n create_sns_neuron_recipes_result: IDL.Opt(SweepResult),\n settle_community_fund_participation_result: IDL.Opt(\n SettleCommunityFundParticipationResult\n ),\n error_message: IDL.Opt(IDL.Text),\n settle_neurons_fund_participation_result: IDL.Opt(\n SettleNeuronsFundParticipationResult\n ),\n set_mode_call_result: IDL.Opt(SetModeCallResult),\n sweep_icp_result: IDL.Opt(SweepResult),\n claim_neuron_result: IDL.Opt(SweepResult),\n sweep_sns_result: IDL.Opt(SweepResult),\n });\n const GetAutoFinalizationStatusResponse = IDL.Record({\n auto_finalize_swap_response: IDL.Opt(FinalizeSwapResponse),\n has_auto_finalize_been_attempted: IDL.Opt(IDL.Bool),\n is_auto_finalize_enabled: IDL.Opt(IDL.Bool),\n });\n const GetBuyerStateRequest = IDL.Record({\n principal_id: IDL.Opt(IDL.Principal),\n });\n const TransferableAmount = IDL.Record({\n transfer_fee_paid_e8s: IDL.Opt(IDL.Nat64),\n transfer_start_timestamp_seconds: IDL.Nat64,\n amount_e8s: IDL.Nat64,\n amount_transferred_e8s: IDL.Opt(IDL.Nat64),\n transfer_success_timestamp_seconds: IDL.Nat64,\n });\n const BuyerState = IDL.Record({\n icp: IDL.Opt(TransferableAmount),\n has_created_neuron_recipes: IDL.Opt(IDL.Bool),\n });\n const GetBuyerStateResponse = IDL.Record({\n buyer_state: IDL.Opt(BuyerState),\n });\n const GetBuyersTotalResponse = IDL.Record({ buyers_total: IDL.Nat64 });\n const CanisterStatusType = IDL.Variant({\n stopped: IDL.Null,\n stopping: IDL.Null,\n running: IDL.Null,\n });\n const DefiniteCanisterSettingsArgs = IDL.Record({\n freezing_threshold: IDL.Nat,\n controllers: IDL.Vec(IDL.Principal),\n memory_allocation: IDL.Nat,\n compute_allocation: IDL.Nat,\n });\n const CanisterStatusResultV2 = IDL.Record({\n status: CanisterStatusType,\n memory_size: IDL.Nat,\n cycles: IDL.Nat,\n settings: DefiniteCanisterSettingsArgs,\n idle_cycles_burned_per_day: IDL.Nat,\n module_hash: IDL.Opt(IDL.Vec(IDL.Nat8)),\n });\n const GetDerivedStateResponse = IDL.Record({\n sns_tokens_per_icp: IDL.Opt(IDL.Float64),\n buyer_total_icp_e8s: IDL.Opt(IDL.Nat64),\n cf_participant_count: IDL.Opt(IDL.Nat64),\n neurons_fund_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n direct_participant_count: IDL.Opt(IDL.Nat64),\n cf_neuron_count: IDL.Opt(IDL.Nat64),\n });\n const GetInitResponse = IDL.Record({ init: IDL.Opt(Init) });\n const GetLifecycleResponse = IDL.Record({\n decentralization_sale_open_timestamp_seconds: IDL.Opt(IDL.Nat64),\n lifecycle: IDL.Opt(IDL.Int32),\n decentralization_swap_termination_timestamp_seconds: IDL.Opt(IDL.Nat64),\n });\n const Icrc1Account = IDL.Record({\n owner: IDL.Opt(IDL.Principal),\n subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n });\n const Ticket = IDL.Record({\n creation_time: IDL.Nat64,\n ticket_id: IDL.Nat64,\n account: IDL.Opt(Icrc1Account),\n amount_icp_e8s: IDL.Nat64,\n });\n const Ok_2 = IDL.Record({ ticket: IDL.Opt(Ticket) });\n const Err_1 = IDL.Record({ error_type: IDL.Opt(IDL.Int32) });\n const Result_1 = IDL.Variant({ Ok: Ok_2, Err: Err_1 });\n const GetOpenTicketResponse = IDL.Record({ result: IDL.Opt(Result_1) });\n const Params = IDL.Record({\n min_participant_icp_e8s: IDL.Nat64,\n neuron_basket_construction_parameters: IDL.Opt(\n NeuronBasketConstructionParameters\n ),\n max_icp_e8s: IDL.Nat64,\n swap_due_timestamp_seconds: IDL.Nat64,\n min_participants: IDL.Nat32,\n sns_token_e8s: IDL.Nat64,\n sale_delay_seconds: IDL.Opt(IDL.Nat64),\n max_participant_icp_e8s: IDL.Nat64,\n min_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n min_icp_e8s: IDL.Nat64,\n max_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n });\n const GetSaleParametersResponse = IDL.Record({ params: IDL.Opt(Params) });\n const NeuronId = IDL.Record({ id: IDL.Vec(IDL.Nat8) });\n const NeuronAttributes = IDL.Record({\n dissolve_delay_seconds: IDL.Nat64,\n memo: IDL.Nat64,\n followees: IDL.Vec(NeuronId),\n });\n const CfInvestment = IDL.Record({\n hotkey_principal: IDL.Text,\n nns_neuron_id: IDL.Nat64,\n });\n const DirectInvestment = IDL.Record({ buyer_principal: IDL.Text });\n const Investor = IDL.Variant({\n CommunityFund: CfInvestment,\n Direct: DirectInvestment,\n });\n const SnsNeuronRecipe = IDL.Record({\n sns: IDL.Opt(TransferableAmount),\n claimed_status: IDL.Opt(IDL.Int32),\n neuron_attributes: IDL.Opt(NeuronAttributes),\n investor: IDL.Opt(Investor),\n });\n const Swap = IDL.Record({\n auto_finalize_swap_response: IDL.Opt(FinalizeSwapResponse),\n neuron_recipes: IDL.Vec(SnsNeuronRecipe),\n next_ticket_id: IDL.Opt(IDL.Nat64),\n decentralization_sale_open_timestamp_seconds: IDL.Opt(IDL.Nat64),\n finalize_swap_in_progress: IDL.Opt(IDL.Bool),\n cf_participants: IDL.Vec(CfParticipant),\n init: IDL.Opt(Init),\n already_tried_to_auto_finalize: IDL.Opt(IDL.Bool),\n neurons_fund_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n purge_old_tickets_last_completion_timestamp_nanoseconds: IDL.Opt(IDL.Nat64),\n direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n lifecycle: IDL.Int32,\n purge_old_tickets_next_principal: IDL.Opt(IDL.Vec(IDL.Nat8)),\n decentralization_swap_termination_timestamp_seconds: IDL.Opt(IDL.Nat64),\n buyers: IDL.Vec(IDL.Tuple(IDL.Text, BuyerState)),\n params: IDL.Opt(Params),\n open_sns_token_swap_proposal_id: IDL.Opt(IDL.Nat64),\n });\n const DerivedState = IDL.Record({\n sns_tokens_per_icp: IDL.Float32,\n buyer_total_icp_e8s: IDL.Nat64,\n cf_participant_count: IDL.Opt(IDL.Nat64),\n neurons_fund_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n direct_participant_count: IDL.Opt(IDL.Nat64),\n cf_neuron_count: IDL.Opt(IDL.Nat64),\n });\n const GetStateResponse = IDL.Record({\n swap: IDL.Opt(Swap),\n derived: IDL.Opt(DerivedState),\n });\n const ListCommunityFundParticipantsRequest = IDL.Record({\n offset: IDL.Opt(IDL.Nat64),\n limit: IDL.Opt(IDL.Nat32),\n });\n const ListDirectParticipantsRequest = IDL.Record({\n offset: IDL.Opt(IDL.Nat32),\n limit: IDL.Opt(IDL.Nat32),\n });\n const Participant = IDL.Record({\n participation: IDL.Opt(BuyerState),\n participant_id: IDL.Opt(IDL.Principal),\n });\n const ListDirectParticipantsResponse = IDL.Record({\n participants: IDL.Vec(Participant),\n });\n const ListSnsNeuronRecipesRequest = IDL.Record({\n offset: IDL.Opt(IDL.Nat64),\n limit: IDL.Opt(IDL.Nat32),\n });\n const ListSnsNeuronRecipesResponse = IDL.Record({\n sns_neuron_recipes: IDL.Vec(SnsNeuronRecipe),\n });\n const NewSaleTicketRequest = IDL.Record({\n subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n amount_icp_e8s: IDL.Nat64,\n });\n const InvalidUserAmount = IDL.Record({\n min_amount_icp_e8s_included: IDL.Nat64,\n max_amount_icp_e8s_included: IDL.Nat64,\n });\n const Err_2 = IDL.Record({\n invalid_user_amount: IDL.Opt(InvalidUserAmount),\n existing_ticket: IDL.Opt(Ticket),\n error_type: IDL.Int32,\n });\n const Result_2 = IDL.Variant({ Ok: Ok_2, Err: Err_2 });\n const NewSaleTicketResponse = IDL.Record({ result: IDL.Opt(Result_2) });\n const OpenRequest = IDL.Record({\n cf_participants: IDL.Vec(CfParticipant),\n params: IDL.Opt(Params),\n open_sns_token_swap_proposal_id: IDL.Opt(IDL.Nat64),\n });\n const RefreshBuyerTokensRequest = IDL.Record({\n confirmation_text: IDL.Opt(IDL.Text),\n buyer: IDL.Text,\n });\n const RefreshBuyerTokensResponse = IDL.Record({\n icp_accepted_participation_e8s: IDL.Nat64,\n icp_ledger_account_balance_e8s: IDL.Nat64,\n });\n return IDL.Service({\n error_refund_icp: IDL.Func(\n [ErrorRefundIcpRequest],\n [ErrorRefundIcpResponse],\n []\n ),\n finalize_swap: IDL.Func([IDL.Record({})], [FinalizeSwapResponse], []),\n get_auto_finalization_status: IDL.Func(\n [IDL.Record({})],\n [GetAutoFinalizationStatusResponse],\n [\"query\"]\n ),\n get_buyer_state: IDL.Func(\n [GetBuyerStateRequest],\n [GetBuyerStateResponse],\n [\"query\"]\n ),\n get_buyers_total: IDL.Func([IDL.Record({})], [GetBuyersTotalResponse], []),\n get_canister_status: IDL.Func(\n [IDL.Record({})],\n [CanisterStatusResultV2],\n []\n ),\n get_derived_state: IDL.Func(\n [IDL.Record({})],\n [GetDerivedStateResponse],\n [\"query\"]\n ),\n get_init: IDL.Func([IDL.Record({})], [GetInitResponse], [\"query\"]),\n get_lifecycle: IDL.Func(\n [IDL.Record({})],\n [GetLifecycleResponse],\n [\"query\"]\n ),\n get_open_ticket: IDL.Func(\n [IDL.Record({})],\n [GetOpenTicketResponse],\n [\"query\"]\n ),\n get_sale_parameters: IDL.Func(\n [IDL.Record({})],\n [GetSaleParametersResponse],\n [\"query\"]\n ),\n get_state: IDL.Func([IDL.Record({})], [GetStateResponse], [\"query\"]),\n list_community_fund_participants: IDL.Func(\n [ListCommunityFundParticipantsRequest],\n [NeuronsFundParticipants],\n [\"query\"]\n ),\n list_direct_participants: IDL.Func(\n [ListDirectParticipantsRequest],\n [ListDirectParticipantsResponse],\n [\"query\"]\n ),\n list_sns_neuron_recipes: IDL.Func(\n [ListSnsNeuronRecipesRequest],\n [ListSnsNeuronRecipesResponse],\n [\"query\"]\n ),\n new_sale_ticket: IDL.Func(\n [NewSaleTicketRequest],\n [NewSaleTicketResponse],\n []\n ),\n notify_payment_failure: IDL.Func([IDL.Record({})], [Ok_2], []),\n open: IDL.Func([OpenRequest], [IDL.Record({})], []),\n refresh_buyer_tokens: IDL.Func(\n [RefreshBuyerTokensRequest],\n [RefreshBuyerTokensResponse],\n []\n ),\n restore_dapp_controllers: IDL.Func(\n [IDL.Record({})],\n [SetDappControllersCallResult],\n []\n ),\n });\n};\nexport const init = ({ IDL }: any) => {\n const NeuronBasketConstructionParameters = IDL.Record({\n dissolve_delay_interval_seconds: IDL.Nat64,\n count: IDL.Nat64,\n });\n const LinearScalingCoefficient = IDL.Record({\n slope_numerator: IDL.Opt(IDL.Nat64),\n intercept_icp_e8s: IDL.Opt(IDL.Nat64),\n from_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n slope_denominator: IDL.Opt(IDL.Nat64),\n to_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n });\n const IdealMatchedParticipationFunction = IDL.Record({\n serialized_representation: IDL.Opt(IDL.Text),\n });\n const NeuronsFundParticipationConstraints = IDL.Record({\n coefficient_intervals: IDL.Vec(LinearScalingCoefficient),\n max_neurons_fund_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n min_direct_participation_threshold_icp_e8s: IDL.Opt(IDL.Nat64),\n ideal_matched_participation_function: IDL.Opt(\n IdealMatchedParticipationFunction\n ),\n });\n const CfNeuron = IDL.Record({\n has_created_neuron_recipes: IDL.Opt(IDL.Bool),\n nns_neuron_id: IDL.Nat64,\n amount_icp_e8s: IDL.Nat64,\n });\n const CfParticipant = IDL.Record({\n hotkey_principal: IDL.Text,\n cf_neurons: IDL.Vec(CfNeuron),\n });\n const NeuronsFundParticipants = IDL.Record({\n cf_participants: IDL.Vec(CfParticipant),\n });\n const Countries = IDL.Record({ iso_codes: IDL.Vec(IDL.Text) });\n const Init = IDL.Record({\n nns_proposal_id: IDL.Opt(IDL.Nat64),\n sns_root_canister_id: IDL.Text,\n neurons_fund_participation: IDL.Opt(IDL.Bool),\n min_participant_icp_e8s: IDL.Opt(IDL.Nat64),\n neuron_basket_construction_parameters: IDL.Opt(\n NeuronBasketConstructionParameters\n ),\n fallback_controller_principal_ids: IDL.Vec(IDL.Text),\n max_icp_e8s: IDL.Opt(IDL.Nat64),\n neuron_minimum_stake_e8s: IDL.Opt(IDL.Nat64),\n confirmation_text: IDL.Opt(IDL.Text),\n swap_start_timestamp_seconds: IDL.Opt(IDL.Nat64),\n swap_due_timestamp_seconds: IDL.Opt(IDL.Nat64),\n min_participants: IDL.Opt(IDL.Nat32),\n sns_token_e8s: IDL.Opt(IDL.Nat64),\n nns_governance_canister_id: IDL.Text,\n transaction_fee_e8s: IDL.Opt(IDL.Nat64),\n icp_ledger_canister_id: IDL.Text,\n sns_ledger_canister_id: IDL.Text,\n neurons_fund_participation_constraints: IDL.Opt(\n NeuronsFundParticipationConstraints\n ),\n neurons_fund_participants: IDL.Opt(NeuronsFundParticipants),\n should_auto_finalize: IDL.Opt(IDL.Bool),\n max_participant_icp_e8s: IDL.Opt(IDL.Nat64),\n sns_governance_canister_id: IDL.Text,\n min_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n restricted_countries: IDL.Opt(Countries),\n min_icp_e8s: IDL.Opt(IDL.Nat64),\n max_direct_participation_icp_e8s: IDL.Opt(IDL.Nat64),\n });\n return [Init];\n};\n","import { SNS_SWAP_SERVICE, SNS_SWAP_INTERFACE_FACTORY } from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\n\nexport const sns_swap = async (canisterId: string, identity?: true) =>\n actor.create({\n canisterId,\n idlFactory: SNS_SWAP_INTERFACE_FACTORY,\n identity,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const GenericNervousSystemFunction = IDL.Record({\n validator_canister_id: IDL.Opt(IDL.Principal),\n target_canister_id: IDL.Opt(IDL.Principal),\n validator_method_name: IDL.Opt(IDL.Text),\n target_method_name: IDL.Opt(IDL.Text),\n });\n const FunctionType = IDL.Variant({\n NativeNervousSystemFunction: IDL.Record({}),\n GenericNervousSystemFunction: GenericNervousSystemFunction,\n });\n const NervousSystemFunction = IDL.Record({\n id: IDL.Nat64,\n name: IDL.Text,\n description: IDL.Opt(IDL.Text),\n function_type: IDL.Opt(FunctionType),\n });\n const GovernanceCachedMetrics = IDL.Record({\n not_dissolving_neurons_e8s_buckets: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Float64)),\n garbage_collectable_neurons_count: IDL.Nat64,\n neurons_with_invalid_stake_count: IDL.Nat64,\n not_dissolving_neurons_count_buckets: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Nat64)),\n neurons_with_less_than_6_months_dissolve_delay_count: IDL.Nat64,\n dissolved_neurons_count: IDL.Nat64,\n total_staked_e8s: IDL.Nat64,\n total_supply_governance_tokens: IDL.Nat64,\n not_dissolving_neurons_count: IDL.Nat64,\n dissolved_neurons_e8s: IDL.Nat64,\n neurons_with_less_than_6_months_dissolve_delay_e8s: IDL.Nat64,\n dissolving_neurons_count_buckets: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Nat64)),\n dissolving_neurons_count: IDL.Nat64,\n dissolving_neurons_e8s_buckets: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Float64)),\n timestamp_seconds: IDL.Nat64,\n });\n const MaturityModulation = IDL.Record({\n current_basis_points: IDL.Opt(IDL.Int32),\n updated_at_timestamp_seconds: IDL.Opt(IDL.Nat64),\n });\n const NeuronId = IDL.Record({ id: IDL.Vec(IDL.Nat8) });\n const Followees = IDL.Record({ followees: IDL.Vec(NeuronId) });\n const DefaultFollowees = IDL.Record({\n followees: IDL.Vec(IDL.Tuple(IDL.Nat64, Followees)),\n });\n const NeuronPermissionList = IDL.Record({\n permissions: IDL.Vec(IDL.Int32),\n });\n const VotingRewardsParameters = IDL.Record({\n final_reward_rate_basis_points: IDL.Opt(IDL.Nat64),\n initial_reward_rate_basis_points: IDL.Opt(IDL.Nat64),\n reward_rate_transition_duration_seconds: IDL.Opt(IDL.Nat64),\n round_duration_seconds: IDL.Opt(IDL.Nat64),\n });\n const NervousSystemParameters = IDL.Record({\n default_followees: IDL.Opt(DefaultFollowees),\n max_dissolve_delay_seconds: IDL.Opt(IDL.Nat64),\n max_dissolve_delay_bonus_percentage: IDL.Opt(IDL.Nat64),\n max_followees_per_function: IDL.Opt(IDL.Nat64),\n neuron_claimer_permissions: IDL.Opt(NeuronPermissionList),\n neuron_minimum_stake_e8s: IDL.Opt(IDL.Nat64),\n max_neuron_age_for_age_bonus: IDL.Opt(IDL.Nat64),\n initial_voting_period_seconds: IDL.Opt(IDL.Nat64),\n neuron_minimum_dissolve_delay_to_vote_seconds: IDL.Opt(IDL.Nat64),\n reject_cost_e8s: IDL.Opt(IDL.Nat64),\n max_proposals_to_keep_per_action: IDL.Opt(IDL.Nat32),\n wait_for_quiet_deadline_increase_seconds: IDL.Opt(IDL.Nat64),\n max_number_of_neurons: IDL.Opt(IDL.Nat64),\n transaction_fee_e8s: IDL.Opt(IDL.Nat64),\n max_number_of_proposals_with_ballots: IDL.Opt(IDL.Nat64),\n max_age_bonus_percentage: IDL.Opt(IDL.Nat64),\n neuron_grantable_permissions: IDL.Opt(NeuronPermissionList),\n voting_rewards_parameters: IDL.Opt(VotingRewardsParameters),\n maturity_modulation_disabled: IDL.Opt(IDL.Bool),\n max_number_of_principals_per_neuron: IDL.Opt(IDL.Nat64),\n });\n const Version = IDL.Record({\n archive_wasm_hash: IDL.Vec(IDL.Nat8),\n root_wasm_hash: IDL.Vec(IDL.Nat8),\n swap_wasm_hash: IDL.Vec(IDL.Nat8),\n ledger_wasm_hash: IDL.Vec(IDL.Nat8),\n governance_wasm_hash: IDL.Vec(IDL.Nat8),\n index_wasm_hash: IDL.Vec(IDL.Nat8),\n });\n const ProposalId = IDL.Record({ id: IDL.Nat64 });\n const RewardEvent = IDL.Record({\n rounds_since_last_distribution: IDL.Opt(IDL.Nat64),\n actual_timestamp_seconds: IDL.Nat64,\n end_timestamp_seconds: IDL.Opt(IDL.Nat64),\n distributed_e8s_equivalent: IDL.Nat64,\n round: IDL.Nat64,\n settled_proposals: IDL.Vec(ProposalId),\n });\n const UpgradeInProgress = IDL.Record({\n mark_failed_at_seconds: IDL.Nat64,\n checking_upgrade_lock: IDL.Nat64,\n proposal_id: IDL.Nat64,\n target_version: IDL.Opt(Version),\n });\n const GovernanceError = IDL.Record({\n error_message: IDL.Text,\n error_type: IDL.Int32,\n });\n const Ballot = IDL.Record({\n vote: IDL.Int32,\n cast_timestamp_seconds: IDL.Nat64,\n voting_power: IDL.Nat64,\n });\n const Percentage = IDL.Record({ basis_points: IDL.Opt(IDL.Nat64) });\n const Tally = IDL.Record({\n no: IDL.Nat64,\n yes: IDL.Nat64,\n total: IDL.Nat64,\n timestamp_seconds: IDL.Nat64,\n });\n const ManageDappCanisterSettings = IDL.Record({\n freezing_threshold: IDL.Opt(IDL.Nat64),\n canister_ids: IDL.Vec(IDL.Principal),\n reserved_cycles_limit: IDL.Opt(IDL.Nat64),\n log_visibility: IDL.Opt(IDL.Int32),\n memory_allocation: IDL.Opt(IDL.Nat64),\n compute_allocation: IDL.Opt(IDL.Nat64),\n });\n const RegisterDappCanisters = IDL.Record({\n canister_ids: IDL.Vec(IDL.Principal),\n });\n const Subaccount = IDL.Record({ subaccount: IDL.Vec(IDL.Nat8) });\n const TransferSnsTreasuryFunds = IDL.Record({\n from_treasury: IDL.Int32,\n to_principal: IDL.Opt(IDL.Principal),\n to_subaccount: IDL.Opt(Subaccount),\n memo: IDL.Opt(IDL.Nat64),\n amount_e8s: IDL.Nat64,\n });\n const UpgradeSnsControlledCanister = IDL.Record({\n new_canister_wasm: IDL.Vec(IDL.Nat8),\n mode: IDL.Opt(IDL.Int32),\n canister_id: IDL.Opt(IDL.Principal),\n canister_upgrade_arg: IDL.Opt(IDL.Vec(IDL.Nat8)),\n });\n const DeregisterDappCanisters = IDL.Record({\n canister_ids: IDL.Vec(IDL.Principal),\n new_controllers: IDL.Vec(IDL.Principal),\n });\n const MintSnsTokens = IDL.Record({\n to_principal: IDL.Opt(IDL.Principal),\n to_subaccount: IDL.Opt(Subaccount),\n memo: IDL.Opt(IDL.Nat64),\n amount_e8s: IDL.Opt(IDL.Nat64),\n });\n const ManageSnsMetadata = IDL.Record({\n url: IDL.Opt(IDL.Text),\n logo: IDL.Opt(IDL.Text),\n name: IDL.Opt(IDL.Text),\n description: IDL.Opt(IDL.Text),\n });\n const ExecuteGenericNervousSystemFunction = IDL.Record({\n function_id: IDL.Nat64,\n payload: IDL.Vec(IDL.Nat8),\n });\n const ManageLedgerParameters = IDL.Record({\n transfer_fee: IDL.Opt(IDL.Nat64),\n });\n const Motion = IDL.Record({ motion_text: IDL.Text });\n const Action = IDL.Variant({\n ManageNervousSystemParameters: NervousSystemParameters,\n AddGenericNervousSystemFunction: NervousSystemFunction,\n ManageDappCanisterSettings: ManageDappCanisterSettings,\n RemoveGenericNervousSystemFunction: IDL.Nat64,\n UpgradeSnsToNextVersion: IDL.Record({}),\n RegisterDappCanisters: RegisterDappCanisters,\n TransferSnsTreasuryFunds: TransferSnsTreasuryFunds,\n UpgradeSnsControlledCanister: UpgradeSnsControlledCanister,\n DeregisterDappCanisters: DeregisterDappCanisters,\n MintSnsTokens: MintSnsTokens,\n Unspecified: IDL.Record({}),\n ManageSnsMetadata: ManageSnsMetadata,\n ExecuteGenericNervousSystemFunction: ExecuteGenericNervousSystemFunction,\n ManageLedgerParameters: ManageLedgerParameters,\n Motion: Motion,\n });\n const Proposal = IDL.Record({\n url: IDL.Text,\n title: IDL.Text,\n action: IDL.Opt(Action),\n summary: IDL.Text,\n });\n const WaitForQuietState = IDL.Record({\n current_deadline_timestamp_seconds: IDL.Nat64,\n });\n const ProposalData = IDL.Record({\n id: IDL.Opt(ProposalId),\n payload_text_rendering: IDL.Opt(IDL.Text),\n action: IDL.Nat64,\n failure_reason: IDL.Opt(GovernanceError),\n ballots: IDL.Vec(IDL.Tuple(IDL.Text, Ballot)),\n minimum_yes_proportion_of_total: IDL.Opt(Percentage),\n reward_event_round: IDL.Nat64,\n failed_timestamp_seconds: IDL.Nat64,\n reward_event_end_timestamp_seconds: IDL.Opt(IDL.Nat64),\n proposal_creation_timestamp_seconds: IDL.Nat64,\n initial_voting_period_seconds: IDL.Nat64,\n reject_cost_e8s: IDL.Nat64,\n latest_tally: IDL.Opt(Tally),\n wait_for_quiet_deadline_increase_seconds: IDL.Nat64,\n decided_timestamp_seconds: IDL.Nat64,\n proposal: IDL.Opt(Proposal),\n proposer: IDL.Opt(NeuronId),\n wait_for_quiet_state: IDL.Opt(WaitForQuietState),\n minimum_yes_proportion_of_exercised: IDL.Opt(Percentage),\n is_eligible_for_rewards: IDL.Bool,\n executed_timestamp_seconds: IDL.Nat64,\n });\n const Split = IDL.Record({ memo: IDL.Nat64, amount_e8s: IDL.Nat64 });\n const Follow = IDL.Record({\n function_id: IDL.Nat64,\n followees: IDL.Vec(NeuronId),\n });\n const Account = IDL.Record({\n owner: IDL.Opt(IDL.Principal),\n subaccount: IDL.Opt(Subaccount),\n });\n const DisburseMaturity = IDL.Record({\n to_account: IDL.Opt(Account),\n percentage_to_disburse: IDL.Nat32,\n });\n const ChangeAutoStakeMaturity = IDL.Record({\n requested_setting_for_auto_stake_maturity: IDL.Bool,\n });\n const IncreaseDissolveDelay = IDL.Record({\n additional_dissolve_delay_seconds: IDL.Nat32,\n });\n const SetDissolveTimestamp = IDL.Record({\n dissolve_timestamp_seconds: IDL.Nat64,\n });\n const Operation = IDL.Variant({\n ChangeAutoStakeMaturity: ChangeAutoStakeMaturity,\n StopDissolving: IDL.Record({}),\n StartDissolving: IDL.Record({}),\n IncreaseDissolveDelay: IncreaseDissolveDelay,\n SetDissolveTimestamp: SetDissolveTimestamp,\n });\n const Configure = IDL.Record({ operation: IDL.Opt(Operation) });\n const RegisterVote = IDL.Record({\n vote: IDL.Int32,\n proposal: IDL.Opt(ProposalId),\n });\n const FinalizeDisburseMaturity = IDL.Record({\n amount_to_be_disbursed_e8s: IDL.Nat64,\n to_account: IDL.Opt(Account),\n });\n const MemoAndController = IDL.Record({\n controller: IDL.Opt(IDL.Principal),\n memo: IDL.Nat64,\n });\n const By = IDL.Variant({\n MemoAndController: MemoAndController,\n NeuronId: IDL.Record({}),\n });\n const ClaimOrRefresh = IDL.Record({ by: IDL.Opt(By) });\n const RemoveNeuronPermissions = IDL.Record({\n permissions_to_remove: IDL.Opt(NeuronPermissionList),\n principal_id: IDL.Opt(IDL.Principal),\n });\n const AddNeuronPermissions = IDL.Record({\n permissions_to_add: IDL.Opt(NeuronPermissionList),\n principal_id: IDL.Opt(IDL.Principal),\n });\n const MergeMaturity = IDL.Record({ percentage_to_merge: IDL.Nat32 });\n const Amount = IDL.Record({ e8s: IDL.Nat64 });\n const Disburse = IDL.Record({\n to_account: IDL.Opt(Account),\n amount: IDL.Opt(Amount),\n });\n const Command_2 = IDL.Variant({\n Split: Split,\n Follow: Follow,\n DisburseMaturity: DisburseMaturity,\n Configure: Configure,\n RegisterVote: RegisterVote,\n SyncCommand: IDL.Record({}),\n MakeProposal: Proposal,\n FinalizeDisburseMaturity: FinalizeDisburseMaturity,\n ClaimOrRefreshNeuron: ClaimOrRefresh,\n RemoveNeuronPermissions: RemoveNeuronPermissions,\n AddNeuronPermissions: AddNeuronPermissions,\n MergeMaturity: MergeMaturity,\n Disburse: Disburse,\n });\n const NeuronInFlightCommand = IDL.Record({\n command: IDL.Opt(Command_2),\n timestamp: IDL.Nat64,\n });\n const NeuronPermission = IDL.Record({\n principal: IDL.Opt(IDL.Principal),\n permission_type: IDL.Vec(IDL.Int32),\n });\n const DissolveState = IDL.Variant({\n DissolveDelaySeconds: IDL.Nat64,\n WhenDissolvedTimestampSeconds: IDL.Nat64,\n });\n const DisburseMaturityInProgress = IDL.Record({\n timestamp_of_disbursement_seconds: IDL.Nat64,\n amount_e8s: IDL.Nat64,\n account_to_disburse_to: IDL.Opt(Account),\n finalize_disbursement_timestamp_seconds: IDL.Opt(IDL.Nat64),\n });\n const Neuron = IDL.Record({\n id: IDL.Opt(NeuronId),\n staked_maturity_e8s_equivalent: IDL.Opt(IDL.Nat64),\n permissions: IDL.Vec(NeuronPermission),\n maturity_e8s_equivalent: IDL.Nat64,\n cached_neuron_stake_e8s: IDL.Nat64,\n created_timestamp_seconds: IDL.Nat64,\n source_nns_neuron_id: IDL.Opt(IDL.Nat64),\n auto_stake_maturity: IDL.Opt(IDL.Bool),\n aging_since_timestamp_seconds: IDL.Nat64,\n dissolve_state: IDL.Opt(DissolveState),\n voting_power_percentage_multiplier: IDL.Nat64,\n vesting_period_seconds: IDL.Opt(IDL.Nat64),\n disburse_maturity_in_progress: IDL.Vec(DisburseMaturityInProgress),\n followees: IDL.Vec(IDL.Tuple(IDL.Nat64, Followees)),\n neuron_fees_e8s: IDL.Nat64,\n });\n const Governance = IDL.Record({\n root_canister_id: IDL.Opt(IDL.Principal),\n id_to_nervous_system_functions: IDL.Vec(IDL.Tuple(IDL.Nat64, NervousSystemFunction)),\n metrics: IDL.Opt(GovernanceCachedMetrics),\n maturity_modulation: IDL.Opt(MaturityModulation),\n mode: IDL.Int32,\n parameters: IDL.Opt(NervousSystemParameters),\n is_finalizing_disburse_maturity: IDL.Opt(IDL.Bool),\n deployed_version: IDL.Opt(Version),\n sns_initialization_parameters: IDL.Text,\n latest_reward_event: IDL.Opt(RewardEvent),\n pending_version: IDL.Opt(UpgradeInProgress),\n swap_canister_id: IDL.Opt(IDL.Principal),\n ledger_canister_id: IDL.Opt(IDL.Principal),\n proposals: IDL.Vec(IDL.Tuple(IDL.Nat64, ProposalData)),\n in_flight_commands: IDL.Vec(IDL.Tuple(IDL.Text, NeuronInFlightCommand)),\n sns_metadata: IDL.Opt(ManageSnsMetadata),\n neurons: IDL.Vec(IDL.Tuple(IDL.Text, Neuron)),\n genesis_timestamp_seconds: IDL.Nat64,\n });\n const NeuronParameters = IDL.Record({\n controller: IDL.Opt(IDL.Principal),\n dissolve_delay_seconds: IDL.Opt(IDL.Nat64),\n source_nns_neuron_id: IDL.Opt(IDL.Nat64),\n stake_e8s: IDL.Opt(IDL.Nat64),\n followees: IDL.Vec(NeuronId),\n hotkey: IDL.Opt(IDL.Principal),\n neuron_id: IDL.Opt(NeuronId),\n });\n const ClaimSwapNeuronsRequest = IDL.Record({\n neuron_parameters: IDL.Vec(NeuronParameters),\n });\n const SwapNeuron = IDL.Record({\n id: IDL.Opt(NeuronId),\n status: IDL.Int32,\n });\n const ClaimedSwapNeurons = IDL.Record({\n swap_neurons: IDL.Vec(SwapNeuron),\n });\n const ClaimSwapNeuronsResult = IDL.Variant({\n Ok: ClaimedSwapNeurons,\n Err: IDL.Int32,\n });\n const ClaimSwapNeuronsResponse = IDL.Record({\n claim_swap_neurons_result: IDL.Opt(ClaimSwapNeuronsResult),\n });\n const GetMaturityModulationResponse = IDL.Record({\n maturity_modulation: IDL.Opt(MaturityModulation),\n });\n const GetMetadataResponse = IDL.Record({\n url: IDL.Opt(IDL.Text),\n logo: IDL.Opt(IDL.Text),\n name: IDL.Opt(IDL.Text),\n description: IDL.Opt(IDL.Text),\n });\n const GetModeResponse = IDL.Record({ mode: IDL.Opt(IDL.Int32) });\n const GetNeuron = IDL.Record({ neuron_id: IDL.Opt(NeuronId) });\n const Result = IDL.Variant({ Error: GovernanceError, Neuron: Neuron });\n const GetNeuronResponse = IDL.Record({ result: IDL.Opt(Result) });\n const GetProposal = IDL.Record({ proposal_id: IDL.Opt(ProposalId) });\n const Result_1 = IDL.Variant({\n Error: GovernanceError,\n Proposal: ProposalData,\n });\n const GetProposalResponse = IDL.Record({ result: IDL.Opt(Result_1) });\n const CanisterStatusType = IDL.Variant({\n stopped: IDL.Null,\n stopping: IDL.Null,\n running: IDL.Null,\n });\n const DefiniteCanisterSettingsArgs = IDL.Record({\n freezing_threshold: IDL.Nat,\n controllers: IDL.Vec(IDL.Principal),\n memory_allocation: IDL.Nat,\n compute_allocation: IDL.Nat,\n });\n const CanisterStatusResultV2 = IDL.Record({\n status: CanisterStatusType,\n memory_size: IDL.Nat,\n cycles: IDL.Nat,\n settings: DefiniteCanisterSettingsArgs,\n idle_cycles_burned_per_day: IDL.Nat,\n module_hash: IDL.Opt(IDL.Vec(IDL.Nat8)),\n });\n const GetRunningSnsVersionResponse = IDL.Record({\n deployed_version: IDL.Opt(Version),\n pending_version: IDL.Opt(UpgradeInProgress),\n });\n const GetSnsInitializationParametersResponse = IDL.Record({\n sns_initialization_parameters: IDL.Text,\n });\n const ListNervousSystemFunctionsResponse = IDL.Record({\n reserved_ids: IDL.Vec(IDL.Nat64),\n functions: IDL.Vec(NervousSystemFunction),\n });\n const ListNeurons = IDL.Record({\n of_principal: IDL.Opt(IDL.Principal),\n limit: IDL.Nat32,\n start_page_at: IDL.Opt(NeuronId),\n });\n const ListNeuronsResponse = IDL.Record({ neurons: IDL.Vec(Neuron) });\n const ListProposals = IDL.Record({\n include_reward_status: IDL.Vec(IDL.Int32),\n before_proposal: IDL.Opt(ProposalId),\n limit: IDL.Nat32,\n exclude_type: IDL.Vec(IDL.Nat64),\n include_status: IDL.Vec(IDL.Int32),\n });\n const ListProposalsResponse = IDL.Record({\n proposals: IDL.Vec(ProposalData),\n });\n const StakeMaturity = IDL.Record({\n percentage_to_stake: IDL.Opt(IDL.Nat32),\n });\n const Command = IDL.Variant({\n Split: Split,\n Follow: Follow,\n DisburseMaturity: DisburseMaturity,\n ClaimOrRefresh: ClaimOrRefresh,\n Configure: Configure,\n RegisterVote: RegisterVote,\n MakeProposal: Proposal,\n StakeMaturity: StakeMaturity,\n RemoveNeuronPermissions: RemoveNeuronPermissions,\n AddNeuronPermissions: AddNeuronPermissions,\n MergeMaturity: MergeMaturity,\n Disburse: Disburse,\n });\n const ManageNeuron = IDL.Record({\n subaccount: IDL.Vec(IDL.Nat8),\n command: IDL.Opt(Command),\n });\n const SplitResponse = IDL.Record({ created_neuron_id: IDL.Opt(NeuronId) });\n const DisburseMaturityResponse = IDL.Record({\n amount_disbursed_e8s: IDL.Nat64,\n amount_deducted_e8s: IDL.Opt(IDL.Nat64),\n });\n const ClaimOrRefreshResponse = IDL.Record({\n refreshed_neuron_id: IDL.Opt(NeuronId),\n });\n const StakeMaturityResponse = IDL.Record({\n maturity_e8s: IDL.Nat64,\n staked_maturity_e8s: IDL.Nat64,\n });\n const MergeMaturityResponse = IDL.Record({\n merged_maturity_e8s: IDL.Nat64,\n new_stake_e8s: IDL.Nat64,\n });\n const DisburseResponse = IDL.Record({ transfer_block_height: IDL.Nat64 });\n const Command_1 = IDL.Variant({\n Error: GovernanceError,\n Split: SplitResponse,\n Follow: IDL.Record({}),\n DisburseMaturity: DisburseMaturityResponse,\n ClaimOrRefresh: ClaimOrRefreshResponse,\n Configure: IDL.Record({}),\n RegisterVote: IDL.Record({}),\n MakeProposal: GetProposal,\n RemoveNeuronPermission: IDL.Record({}),\n StakeMaturity: StakeMaturityResponse,\n MergeMaturity: MergeMaturityResponse,\n Disburse: DisburseResponse,\n AddNeuronPermission: IDL.Record({}),\n });\n const ManageNeuronResponse = IDL.Record({ command: IDL.Opt(Command_1) });\n const SetMode = IDL.Record({ mode: IDL.Int32 });\n return IDL.Service({\n claim_swap_neurons: IDL.Func([ClaimSwapNeuronsRequest], [ClaimSwapNeuronsResponse], []),\n fail_stuck_upgrade_in_progress: IDL.Func([IDL.Record({})], [IDL.Record({})], []),\n get_build_metadata: IDL.Func([], [IDL.Text], [\"query\"]),\n get_latest_reward_event: IDL.Func([], [RewardEvent], [\"query\"]),\n get_maturity_modulation: IDL.Func([IDL.Record({})], [GetMaturityModulationResponse], []),\n get_metadata: IDL.Func([IDL.Record({})], [GetMetadataResponse], [\"query\"]),\n get_mode: IDL.Func([IDL.Record({})], [GetModeResponse], [\"query\"]),\n get_nervous_system_parameters: IDL.Func([IDL.Null], [NervousSystemParameters], [\"query\"]),\n get_neuron: IDL.Func([GetNeuron], [GetNeuronResponse], [\"query\"]),\n get_proposal: IDL.Func([GetProposal], [GetProposalResponse], [\"query\"]),\n get_root_canister_status: IDL.Func([IDL.Null], [CanisterStatusResultV2], []),\n get_running_sns_version: IDL.Func([IDL.Record({})], [GetRunningSnsVersionResponse], [\"query\"]),\n get_sns_initialization_parameters: IDL.Func([IDL.Record({})], [GetSnsInitializationParametersResponse], [\"query\"]),\n list_nervous_system_functions: IDL.Func([], [ListNervousSystemFunctionsResponse], [\"query\"]),\n list_neurons: IDL.Func([ListNeurons], [ListNeuronsResponse], [\"query\"]),\n list_proposals: IDL.Func([ListProposals], [ListProposalsResponse], [\"query\"]),\n manage_neuron: IDL.Func([ManageNeuron], [ManageNeuronResponse], []),\n set_mode: IDL.Func([SetMode], [IDL.Record({})], []),\n });\n};\nexport const init = ({ IDL }: any) => {\n const GenericNervousSystemFunction = IDL.Record({\n validator_canister_id: IDL.Opt(IDL.Principal),\n target_canister_id: IDL.Opt(IDL.Principal),\n validator_method_name: IDL.Opt(IDL.Text),\n target_method_name: IDL.Opt(IDL.Text),\n });\n const FunctionType = IDL.Variant({\n NativeNervousSystemFunction: IDL.Record({}),\n GenericNervousSystemFunction: GenericNervousSystemFunction,\n });\n const NervousSystemFunction = IDL.Record({\n id: IDL.Nat64,\n name: IDL.Text,\n description: IDL.Opt(IDL.Text),\n function_type: IDL.Opt(FunctionType),\n });\n const GovernanceCachedMetrics = IDL.Record({\n not_dissolving_neurons_e8s_buckets: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Float64)),\n garbage_collectable_neurons_count: IDL.Nat64,\n neurons_with_invalid_stake_count: IDL.Nat64,\n not_dissolving_neurons_count_buckets: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Nat64)),\n neurons_with_less_than_6_months_dissolve_delay_count: IDL.Nat64,\n dissolved_neurons_count: IDL.Nat64,\n total_staked_e8s: IDL.Nat64,\n total_supply_governance_tokens: IDL.Nat64,\n not_dissolving_neurons_count: IDL.Nat64,\n dissolved_neurons_e8s: IDL.Nat64,\n neurons_with_less_than_6_months_dissolve_delay_e8s: IDL.Nat64,\n dissolving_neurons_count_buckets: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Nat64)),\n dissolving_neurons_count: IDL.Nat64,\n dissolving_neurons_e8s_buckets: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Float64)),\n timestamp_seconds: IDL.Nat64,\n });\n const MaturityModulation = IDL.Record({\n current_basis_points: IDL.Opt(IDL.Int32),\n updated_at_timestamp_seconds: IDL.Opt(IDL.Nat64),\n });\n const NeuronId = IDL.Record({ id: IDL.Vec(IDL.Nat8) });\n const Followees = IDL.Record({ followees: IDL.Vec(NeuronId) });\n const DefaultFollowees = IDL.Record({\n followees: IDL.Vec(IDL.Tuple(IDL.Nat64, Followees)),\n });\n const NeuronPermissionList = IDL.Record({\n permissions: IDL.Vec(IDL.Int32),\n });\n const VotingRewardsParameters = IDL.Record({\n final_reward_rate_basis_points: IDL.Opt(IDL.Nat64),\n initial_reward_rate_basis_points: IDL.Opt(IDL.Nat64),\n reward_rate_transition_duration_seconds: IDL.Opt(IDL.Nat64),\n round_duration_seconds: IDL.Opt(IDL.Nat64),\n });\n const NervousSystemParameters = IDL.Record({\n default_followees: IDL.Opt(DefaultFollowees),\n max_dissolve_delay_seconds: IDL.Opt(IDL.Nat64),\n max_dissolve_delay_bonus_percentage: IDL.Opt(IDL.Nat64),\n max_followees_per_function: IDL.Opt(IDL.Nat64),\n neuron_claimer_permissions: IDL.Opt(NeuronPermissionList),\n neuron_minimum_stake_e8s: IDL.Opt(IDL.Nat64),\n max_neuron_age_for_age_bonus: IDL.Opt(IDL.Nat64),\n initial_voting_period_seconds: IDL.Opt(IDL.Nat64),\n neuron_minimum_dissolve_delay_to_vote_seconds: IDL.Opt(IDL.Nat64),\n reject_cost_e8s: IDL.Opt(IDL.Nat64),\n max_proposals_to_keep_per_action: IDL.Opt(IDL.Nat32),\n wait_for_quiet_deadline_increase_seconds: IDL.Opt(IDL.Nat64),\n max_number_of_neurons: IDL.Opt(IDL.Nat64),\n transaction_fee_e8s: IDL.Opt(IDL.Nat64),\n max_number_of_proposals_with_ballots: IDL.Opt(IDL.Nat64),\n max_age_bonus_percentage: IDL.Opt(IDL.Nat64),\n neuron_grantable_permissions: IDL.Opt(NeuronPermissionList),\n voting_rewards_parameters: IDL.Opt(VotingRewardsParameters),\n maturity_modulation_disabled: IDL.Opt(IDL.Bool),\n max_number_of_principals_per_neuron: IDL.Opt(IDL.Nat64),\n });\n const Version = IDL.Record({\n archive_wasm_hash: IDL.Vec(IDL.Nat8),\n root_wasm_hash: IDL.Vec(IDL.Nat8),\n swap_wasm_hash: IDL.Vec(IDL.Nat8),\n ledger_wasm_hash: IDL.Vec(IDL.Nat8),\n governance_wasm_hash: IDL.Vec(IDL.Nat8),\n index_wasm_hash: IDL.Vec(IDL.Nat8),\n });\n const ProposalId = IDL.Record({ id: IDL.Nat64 });\n const RewardEvent = IDL.Record({\n rounds_since_last_distribution: IDL.Opt(IDL.Nat64),\n actual_timestamp_seconds: IDL.Nat64,\n end_timestamp_seconds: IDL.Opt(IDL.Nat64),\n distributed_e8s_equivalent: IDL.Nat64,\n round: IDL.Nat64,\n settled_proposals: IDL.Vec(ProposalId),\n });\n const UpgradeInProgress = IDL.Record({\n mark_failed_at_seconds: IDL.Nat64,\n checking_upgrade_lock: IDL.Nat64,\n proposal_id: IDL.Nat64,\n target_version: IDL.Opt(Version),\n });\n const GovernanceError = IDL.Record({\n error_message: IDL.Text,\n error_type: IDL.Int32,\n });\n const Ballot = IDL.Record({\n vote: IDL.Int32,\n cast_timestamp_seconds: IDL.Nat64,\n voting_power: IDL.Nat64,\n });\n const Percentage = IDL.Record({ basis_points: IDL.Opt(IDL.Nat64) });\n const Tally = IDL.Record({\n no: IDL.Nat64,\n yes: IDL.Nat64,\n total: IDL.Nat64,\n timestamp_seconds: IDL.Nat64,\n });\n const ManageDappCanisterSettings = IDL.Record({\n freezing_threshold: IDL.Opt(IDL.Nat64),\n canister_ids: IDL.Vec(IDL.Principal),\n reserved_cycles_limit: IDL.Opt(IDL.Nat64),\n log_visibility: IDL.Opt(IDL.Int32),\n memory_allocation: IDL.Opt(IDL.Nat64),\n compute_allocation: IDL.Opt(IDL.Nat64),\n });\n const RegisterDappCanisters = IDL.Record({\n canister_ids: IDL.Vec(IDL.Principal),\n });\n const Subaccount = IDL.Record({ subaccount: IDL.Vec(IDL.Nat8) });\n const TransferSnsTreasuryFunds = IDL.Record({\n from_treasury: IDL.Int32,\n to_principal: IDL.Opt(IDL.Principal),\n to_subaccount: IDL.Opt(Subaccount),\n memo: IDL.Opt(IDL.Nat64),\n amount_e8s: IDL.Nat64,\n });\n const UpgradeSnsControlledCanister = IDL.Record({\n new_canister_wasm: IDL.Vec(IDL.Nat8),\n mode: IDL.Opt(IDL.Int32),\n canister_id: IDL.Opt(IDL.Principal),\n canister_upgrade_arg: IDL.Opt(IDL.Vec(IDL.Nat8)),\n });\n const DeregisterDappCanisters = IDL.Record({\n canister_ids: IDL.Vec(IDL.Principal),\n new_controllers: IDL.Vec(IDL.Principal),\n });\n const MintSnsTokens = IDL.Record({\n to_principal: IDL.Opt(IDL.Principal),\n to_subaccount: IDL.Opt(Subaccount),\n memo: IDL.Opt(IDL.Nat64),\n amount_e8s: IDL.Opt(IDL.Nat64),\n });\n const ManageSnsMetadata = IDL.Record({\n url: IDL.Opt(IDL.Text),\n logo: IDL.Opt(IDL.Text),\n name: IDL.Opt(IDL.Text),\n description: IDL.Opt(IDL.Text),\n });\n const ExecuteGenericNervousSystemFunction = IDL.Record({\n function_id: IDL.Nat64,\n payload: IDL.Vec(IDL.Nat8),\n });\n const ManageLedgerParameters = IDL.Record({\n transfer_fee: IDL.Opt(IDL.Nat64),\n });\n const Motion = IDL.Record({ motion_text: IDL.Text });\n const Action = IDL.Variant({\n ManageNervousSystemParameters: NervousSystemParameters,\n AddGenericNervousSystemFunction: NervousSystemFunction,\n ManageDappCanisterSettings: ManageDappCanisterSettings,\n RemoveGenericNervousSystemFunction: IDL.Nat64,\n UpgradeSnsToNextVersion: IDL.Record({}),\n RegisterDappCanisters: RegisterDappCanisters,\n TransferSnsTreasuryFunds: TransferSnsTreasuryFunds,\n UpgradeSnsControlledCanister: UpgradeSnsControlledCanister,\n DeregisterDappCanisters: DeregisterDappCanisters,\n MintSnsTokens: MintSnsTokens,\n Unspecified: IDL.Record({}),\n ManageSnsMetadata: ManageSnsMetadata,\n ExecuteGenericNervousSystemFunction: ExecuteGenericNervousSystemFunction,\n ManageLedgerParameters: ManageLedgerParameters,\n Motion: Motion,\n });\n const Proposal = IDL.Record({\n url: IDL.Text,\n title: IDL.Text,\n action: IDL.Opt(Action),\n summary: IDL.Text,\n });\n const WaitForQuietState = IDL.Record({\n current_deadline_timestamp_seconds: IDL.Nat64,\n });\n const ProposalData = IDL.Record({\n id: IDL.Opt(ProposalId),\n payload_text_rendering: IDL.Opt(IDL.Text),\n action: IDL.Nat64,\n failure_reason: IDL.Opt(GovernanceError),\n ballots: IDL.Vec(IDL.Tuple(IDL.Text, Ballot)),\n minimum_yes_proportion_of_total: IDL.Opt(Percentage),\n reward_event_round: IDL.Nat64,\n failed_timestamp_seconds: IDL.Nat64,\n reward_event_end_timestamp_seconds: IDL.Opt(IDL.Nat64),\n proposal_creation_timestamp_seconds: IDL.Nat64,\n initial_voting_period_seconds: IDL.Nat64,\n reject_cost_e8s: IDL.Nat64,\n latest_tally: IDL.Opt(Tally),\n wait_for_quiet_deadline_increase_seconds: IDL.Nat64,\n decided_timestamp_seconds: IDL.Nat64,\n proposal: IDL.Opt(Proposal),\n proposer: IDL.Opt(NeuronId),\n wait_for_quiet_state: IDL.Opt(WaitForQuietState),\n minimum_yes_proportion_of_exercised: IDL.Opt(Percentage),\n is_eligible_for_rewards: IDL.Bool,\n executed_timestamp_seconds: IDL.Nat64,\n });\n const Split = IDL.Record({ memo: IDL.Nat64, amount_e8s: IDL.Nat64 });\n const Follow = IDL.Record({\n function_id: IDL.Nat64,\n followees: IDL.Vec(NeuronId),\n });\n const Account = IDL.Record({\n owner: IDL.Opt(IDL.Principal),\n subaccount: IDL.Opt(Subaccount),\n });\n const DisburseMaturity = IDL.Record({\n to_account: IDL.Opt(Account),\n percentage_to_disburse: IDL.Nat32,\n });\n const ChangeAutoStakeMaturity = IDL.Record({\n requested_setting_for_auto_stake_maturity: IDL.Bool,\n });\n const IncreaseDissolveDelay = IDL.Record({\n additional_dissolve_delay_seconds: IDL.Nat32,\n });\n const SetDissolveTimestamp = IDL.Record({\n dissolve_timestamp_seconds: IDL.Nat64,\n });\n const Operation = IDL.Variant({\n ChangeAutoStakeMaturity: ChangeAutoStakeMaturity,\n StopDissolving: IDL.Record({}),\n StartDissolving: IDL.Record({}),\n IncreaseDissolveDelay: IncreaseDissolveDelay,\n SetDissolveTimestamp: SetDissolveTimestamp,\n });\n const Configure = IDL.Record({ operation: IDL.Opt(Operation) });\n const RegisterVote = IDL.Record({\n vote: IDL.Int32,\n proposal: IDL.Opt(ProposalId),\n });\n const FinalizeDisburseMaturity = IDL.Record({\n amount_to_be_disbursed_e8s: IDL.Nat64,\n to_account: IDL.Opt(Account),\n });\n const MemoAndController = IDL.Record({\n controller: IDL.Opt(IDL.Principal),\n memo: IDL.Nat64,\n });\n const By = IDL.Variant({\n MemoAndController: MemoAndController,\n NeuronId: IDL.Record({}),\n });\n const ClaimOrRefresh = IDL.Record({ by: IDL.Opt(By) });\n const RemoveNeuronPermissions = IDL.Record({\n permissions_to_remove: IDL.Opt(NeuronPermissionList),\n principal_id: IDL.Opt(IDL.Principal),\n });\n const AddNeuronPermissions = IDL.Record({\n permissions_to_add: IDL.Opt(NeuronPermissionList),\n principal_id: IDL.Opt(IDL.Principal),\n });\n const MergeMaturity = IDL.Record({ percentage_to_merge: IDL.Nat32 });\n const Amount = IDL.Record({ e8s: IDL.Nat64 });\n const Disburse = IDL.Record({\n to_account: IDL.Opt(Account),\n amount: IDL.Opt(Amount),\n });\n const Command_2 = IDL.Variant({\n Split: Split,\n Follow: Follow,\n DisburseMaturity: DisburseMaturity,\n Configure: Configure,\n RegisterVote: RegisterVote,\n SyncCommand: IDL.Record({}),\n MakeProposal: Proposal,\n FinalizeDisburseMaturity: FinalizeDisburseMaturity,\n ClaimOrRefreshNeuron: ClaimOrRefresh,\n RemoveNeuronPermissions: RemoveNeuronPermissions,\n AddNeuronPermissions: AddNeuronPermissions,\n MergeMaturity: MergeMaturity,\n Disburse: Disburse,\n });\n const NeuronInFlightCommand = IDL.Record({\n command: IDL.Opt(Command_2),\n timestamp: IDL.Nat64,\n });\n const NeuronPermission = IDL.Record({\n principal: IDL.Opt(IDL.Principal),\n permission_type: IDL.Vec(IDL.Int32),\n });\n const DissolveState = IDL.Variant({\n DissolveDelaySeconds: IDL.Nat64,\n WhenDissolvedTimestampSeconds: IDL.Nat64,\n });\n const DisburseMaturityInProgress = IDL.Record({\n timestamp_of_disbursement_seconds: IDL.Nat64,\n amount_e8s: IDL.Nat64,\n account_to_disburse_to: IDL.Opt(Account),\n finalize_disbursement_timestamp_seconds: IDL.Opt(IDL.Nat64),\n });\n const Neuron = IDL.Record({\n id: IDL.Opt(NeuronId),\n staked_maturity_e8s_equivalent: IDL.Opt(IDL.Nat64),\n permissions: IDL.Vec(NeuronPermission),\n maturity_e8s_equivalent: IDL.Nat64,\n cached_neuron_stake_e8s: IDL.Nat64,\n created_timestamp_seconds: IDL.Nat64,\n source_nns_neuron_id: IDL.Opt(IDL.Nat64),\n auto_stake_maturity: IDL.Opt(IDL.Bool),\n aging_since_timestamp_seconds: IDL.Nat64,\n dissolve_state: IDL.Opt(DissolveState),\n voting_power_percentage_multiplier: IDL.Nat64,\n vesting_period_seconds: IDL.Opt(IDL.Nat64),\n disburse_maturity_in_progress: IDL.Vec(DisburseMaturityInProgress),\n followees: IDL.Vec(IDL.Tuple(IDL.Nat64, Followees)),\n neuron_fees_e8s: IDL.Nat64,\n });\n const Governance = IDL.Record({\n root_canister_id: IDL.Opt(IDL.Principal),\n id_to_nervous_system_functions: IDL.Vec(IDL.Tuple(IDL.Nat64, NervousSystemFunction)),\n metrics: IDL.Opt(GovernanceCachedMetrics),\n maturity_modulation: IDL.Opt(MaturityModulation),\n mode: IDL.Int32,\n parameters: IDL.Opt(NervousSystemParameters),\n is_finalizing_disburse_maturity: IDL.Opt(IDL.Bool),\n deployed_version: IDL.Opt(Version),\n sns_initialization_parameters: IDL.Text,\n latest_reward_event: IDL.Opt(RewardEvent),\n pending_version: IDL.Opt(UpgradeInProgress),\n swap_canister_id: IDL.Opt(IDL.Principal),\n ledger_canister_id: IDL.Opt(IDL.Principal),\n proposals: IDL.Vec(IDL.Tuple(IDL.Nat64, ProposalData)),\n in_flight_commands: IDL.Vec(IDL.Tuple(IDL.Text, NeuronInFlightCommand)),\n sns_metadata: IDL.Opt(ManageSnsMetadata),\n neurons: IDL.Vec(IDL.Tuple(IDL.Text, Neuron)),\n genesis_timestamp_seconds: IDL.Nat64,\n });\n return [Governance];\n};\n","import { SNS_GOVERNANCE_INTERFACE_FACTORY, SNS_GOVERNANCE_SERVICE } from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\n\nexport const sns_governance = async (canisterId: string, identity?: true) =>\n actor.create({\n canisterId,\n idlFactory: SNS_GOVERNANCE_INTERFACE_FACTORY,\n identity,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const TransactionType = IDL.Variant({\n decreaseLiquidity: IDL.Null,\n claim: IDL.Null,\n swap: IDL.Null,\n addLiquidity: IDL.Null,\n increaseLiquidity: IDL.Null,\n });\n const Transaction = IDL.Record({\n to: IDL.Text,\n action: TransactionType,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n liquidityTotal: IDL.Nat,\n from: IDL.Text,\n hash: IDL.Text,\n tick: IDL.Int,\n token1Price: IDL.Float64,\n recipient: IDL.Text,\n token0ChangeAmount: IDL.Float64,\n sender: IDL.Text,\n liquidityChange: IDL.Nat,\n token1Standard: IDL.Text,\n token0Fee: IDL.Float64,\n token1Fee: IDL.Float64,\n timestamp: IDL.Int,\n token1ChangeAmount: IDL.Float64,\n token1Decimals: IDL.Float64,\n token0Standard: IDL.Text,\n amountUSD: IDL.Float64,\n amountToken0: IDL.Float64,\n amountToken1: IDL.Float64,\n poolFee: IDL.Nat,\n token0Symbol: IDL.Text,\n token0Decimals: IDL.Float64,\n token0Price: IDL.Float64,\n token1Symbol: IDL.Text,\n poolId: IDL.Text,\n });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const PublicPoolOverView = IDL.Record({\n id: IDL.Nat,\n token0TotalVolume: IDL.Float64,\n volumeUSD1d: IDL.Float64,\n volumeUSD7d: IDL.Float64,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n token1Volume24H: IDL.Float64,\n totalVolumeUSD: IDL.Float64,\n sqrtPrice: IDL.Float64,\n pool: IDL.Text,\n tick: IDL.Int,\n liquidity: IDL.Nat,\n token1Price: IDL.Float64,\n feeTier: IDL.Nat,\n token1TotalVolume: IDL.Float64,\n volumeUSD: IDL.Float64,\n feesUSD: IDL.Float64,\n token0Volume24H: IDL.Float64,\n token1Standard: IDL.Text,\n txCount: IDL.Nat,\n token1Decimals: IDL.Float64,\n token0Standard: IDL.Text,\n token0Symbol: IDL.Text,\n token0Decimals: IDL.Float64,\n token0Price: IDL.Float64,\n token1Symbol: IDL.Text,\n });\n const PublicTokenOverview = IDL.Record({\n id: IDL.Nat,\n volumeUSD1d: IDL.Float64,\n volumeUSD7d: IDL.Float64,\n totalVolumeUSD: IDL.Float64,\n name: IDL.Text,\n volumeUSD: IDL.Float64,\n feesUSD: IDL.Float64,\n priceUSDChange: IDL.Float64,\n address: IDL.Text,\n txCount: IDL.Int,\n priceUSD: IDL.Float64,\n standard: IDL.Text,\n symbol: IDL.Text,\n });\n const Address = IDL.Text;\n return IDL.Service({\n addOwner: IDL.Func([IDL.Principal], [], []),\n addQuoteToken: IDL.Func([IDL.Text, IDL.Bool], [], []),\n allPoolStorage: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"]),\n allTokenStorage: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"]),\n allUserStorage: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"]),\n batchInsert: IDL.Func([IDL.Vec(Transaction)], [], []),\n clean: IDL.Func([], [], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n getAllPools: IDL.Func([], [IDL.Vec(PublicPoolOverView)], [\"query\"]),\n getAllTokens: IDL.Func([], [IDL.Vec(PublicTokenOverview)], [\"query\"]),\n getControllers: IDL.Func([], [IDL.Vec(IDL.Principal)], [\"query\"]),\n getDataQueueSize: IDL.Func([], [IDL.Nat], [\"query\"]),\n getLastDataTime: IDL.Func([], [IDL.Int], [\"query\"]),\n getOwners: IDL.Func([], [IDL.Vec(IDL.Principal)], [\"query\"]),\n getPoolQueueSize: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat))],\n [\"query\"]\n ),\n getPoolsForToken: IDL.Func(\n [IDL.Text],\n [IDL.Vec(PublicPoolOverView)],\n [\"query\"]\n ),\n getQuoteTokens: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"]),\n getSyncLock: IDL.Func([], [IDL.Bool], [\"query\"]),\n getSyncStatus: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Bool, IDL.Text))],\n [\"query\"]\n ),\n getTokenQueueSize: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat))],\n [\"query\"]\n ),\n getTotalVolumeAndUser: IDL.Func([], [IDL.Float64, IDL.Nat], [\"query\"]),\n getUserQueueSize: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat))],\n [\"query\"]\n ),\n insert: IDL.Func([Transaction], [], []),\n poolMapping: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))],\n [\"query\"]\n ),\n poolStorage: IDL.Func([IDL.Text], [IDL.Opt(IDL.Text)], [\"query\"]),\n setPoolSyncStatus: IDL.Func([IDL.Bool], [IDL.Bool], []),\n setQuoteTokens: IDL.Func([IDL.Vec(IDL.Text), IDL.Bool], [], []),\n setTokenSyncStatus: IDL.Func([IDL.Bool], [IDL.Bool], []),\n setUserSyncStatus: IDL.Func([IDL.Bool], [IDL.Bool], []),\n syncOverview: IDL.Func([], [], []),\n tokenMapping: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))],\n [\"query\"]\n ),\n tokenStorage: IDL.Func([IDL.Text], [IDL.Opt(IDL.Text)], [\"query\"]),\n userMapping: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Text))],\n [\"query\"]\n ),\n userStorage: IDL.Func([Address], [IDL.Opt(IDL.Text)], [\"query\"]),\n });\n};\n","import { NodeIndex, NodeIndexInterfaceFactory } from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\nimport { ActorName } from \"../ActorName\";\n\nexport const node_index = () =>\n actor.create({\n actorName: ActorName.NodeIndex,\n idlFactory: NodeIndexInterfaceFactory,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const TransactionType = IDL.Variant({\n decreaseLiquidity: IDL.Null,\n claim: IDL.Null,\n swap: IDL.Null,\n addLiquidity: IDL.Null,\n increaseLiquidity: IDL.Null,\n });\n const SwapRecordInfo = IDL.Record({\n to: IDL.Text,\n feeAmount: IDL.Int,\n action: TransactionType,\n feeAmountTotal: IDL.Int,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n token0AmountTotal: IDL.Nat,\n liquidityTotal: IDL.Nat,\n from: IDL.Text,\n tick: IDL.Int,\n feeTire: IDL.Nat,\n recipient: IDL.Text,\n token0ChangeAmount: IDL.Nat,\n token1AmountTotal: IDL.Nat,\n liquidityChange: IDL.Nat,\n token1Standard: IDL.Text,\n token0Fee: IDL.Nat,\n token1Fee: IDL.Nat,\n timestamp: IDL.Int,\n token1ChangeAmount: IDL.Nat,\n token0Standard: IDL.Text,\n price: IDL.Nat,\n poolId: IDL.Text,\n });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const BaseIndex = IDL.Service({\n addOwner: IDL.Func([IDL.Principal], [], []),\n baseLastStorage: IDL.Func([], [IDL.Text], [\"query\"]),\n baseStorage: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"]),\n batchPush: IDL.Func([IDL.Vec(SwapRecordInfo)], [], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n getAllowTokens: IDL.Func([], [IDL.Vec(IDL.Text)], []),\n getEnableSync: IDL.Func([], [IDL.Bool], [\"query\"]),\n getOwners: IDL.Func([], [IDL.Vec(IDL.Principal)], []),\n getPoolLastPrice: IDL.Func([IDL.Text], [IDL.Float64], [\"query\"]),\n getSyncError: IDL.Func([], [IDL.Text], [\"query\"]),\n getSyncLock: IDL.Func([], [IDL.Bool], [\"query\"]),\n getSyncOffset: IDL.Func([], [IDL.Nat], [\"query\"]),\n getSyncStatus: IDL.Func([], [IDL.Bool], [\"query\"]),\n priceCanister: IDL.Func([], [IDL.Vec(IDL.Text)], []),\n push: IDL.Func([SwapRecordInfo], [], []),\n setEnableSync: IDL.Func([IDL.Bool], [IDL.Bool], [\"query\"]),\n setPriceCanister: IDL.Func([IDL.Text], [], []),\n syncOldDataToLast: IDL.Func([IDL.Nat], [IDL.Bool], []),\n });\n return BaseIndex;\n};\n","export const idlFactory = ({ IDL }: any) => {\n const TransactionType = IDL.Variant({\n decreaseLiquidity: IDL.Null,\n claim: IDL.Null,\n swap: IDL.Null,\n addLiquidity: IDL.Null,\n increaseLiquidity: IDL.Null,\n });\n const Transaction = IDL.Record({\n to: IDL.Text,\n action: TransactionType,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n liquidityTotal: IDL.Nat,\n from: IDL.Text,\n hash: IDL.Text,\n tick: IDL.Int,\n token1Price: IDL.Float64,\n recipient: IDL.Text,\n token0ChangeAmount: IDL.Float64,\n sender: IDL.Text,\n liquidityChange: IDL.Nat,\n token1Standard: IDL.Text,\n token0Fee: IDL.Float64,\n token1Fee: IDL.Float64,\n timestamp: IDL.Int,\n token1ChangeAmount: IDL.Float64,\n token1Decimals: IDL.Float64,\n token0Standard: IDL.Text,\n amountUSD: IDL.Float64,\n amountToken0: IDL.Float64,\n amountToken1: IDL.Float64,\n poolFee: IDL.Nat,\n token0Symbol: IDL.Text,\n token0Decimals: IDL.Float64,\n token0Price: IDL.Float64,\n token1Symbol: IDL.Text,\n poolId: IDL.Text,\n });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const RecordPage = IDL.Record({\n content: IDL.Vec(Transaction),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n return IDL.Service({\n addOwners: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n batchInsert: IDL.Func([IDL.Vec(Transaction)], [], []),\n clean: IDL.Func([], [], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n getBaseRecord: IDL.Func([IDL.Nat, IDL.Nat, IDL.Vec(IDL.Text)], [RecordPage], [\"query\"]),\n getByPool: IDL.Func([IDL.Nat, IDL.Nat, IDL.Text], [RecordPage], [\"query\"]),\n getByToken: IDL.Func([IDL.Nat, IDL.Nat, IDL.Text], [RecordPage], [\"query\"]),\n getOwners: IDL.Func([], [IDL.Vec(IDL.Principal)], []),\n getTxCount: IDL.Func([], [IDL.Nat], [\"query\"]),\n insert: IDL.Func([Transaction], [], []),\n });\n};\n","import { actor } from \"../actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { ActorName } from \"../ActorName\";\n\nimport {\n BaseIndex,\n BaseStorage,\n BaseIndexInterfaceFactory,\n BaseStorageInterfaceFactory,\n} from \"@icpswap/candid\";\n\nexport const baseIndex = (identity?: ActorIdentity) =>\n actor.create({\n idlFactory: BaseIndexInterfaceFactory,\n actorName: ActorName.BaseIndex,\n identity,\n });\n\nexport const baseStorage = (id: string, identity?: ActorIdentity) =>\n actor.create({\n idlFactory: BaseStorageInterfaceFactory,\n canisterId: id,\n identity,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const TvlOverview = IDL.Record({\n tvlUSD: IDL.Float64,\n tvlUSDChange: IDL.Float64\n });\n const PublicProtocolData = IDL.Record({\n volumeUSD: IDL.Float64,\n feesUSD: IDL.Float64,\n tvlUSD: IDL.Float64,\n txCount: IDL.Int\n });\n return IDL.Service({\n addOwner: IDL.Func([IDL.Principal], [], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n getAllPoolTvl: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Float64))], [\"query\"]),\n getAllTokenTvl: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Float64))], [\"query\"]),\n getAllowTokens: IDL.Func([], [IDL.Vec(IDL.Text)], []),\n getOwners: IDL.Func([], [IDL.Vec(IDL.Principal)], []),\n getPoolLastTvl: IDL.Func([IDL.Text], [TvlOverview], [\"query\"]),\n getProtocolData: IDL.Func([], [PublicProtocolData], [\"query\"]),\n getSyncError: IDL.Func([], [IDL.Text], [\"query\"]),\n getSyncState: IDL.Func([], [IDL.Bool], [\"query\"]),\n getSyncTime: IDL.Func([], [IDL.Int], [\"query\"]),\n getTokenLastTvl: IDL.Func([IDL.Text], [TvlOverview], [\"query\"]),\n getTvlSyncState: IDL.Func([], [IDL.Bool], [\"query\"]),\n globalLastStorageCanister: IDL.Func([], [IDL.Text], [\"query\"]),\n globalStorageCanister: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"]),\n syncGlobal: IDL.Func([], [], []),\n syncTvl: IDL.Func([], [], []),\n syncTvlStatus: IDL.Func([], [IDL.Bool], [\"query\"]),\n tvlLastStorageCanister: IDL.Func([], [IDL.Text], [\"query\"]),\n tvlStorageCanister: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"])\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const NatResult__2 = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const TvlChartDayData = IDL.Record({\n id: IDL.Nat,\n tvlUSD: IDL.Float64,\n timestamp: IDL.Int\n });\n return IDL.Service({\n addOwners: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n cycleAvailable: IDL.Func([], [NatResult__2], []),\n cycleBalance: IDL.Func([], [NatResult__2], [\"query\"]),\n getOwners: IDL.Func([], [IDL.Vec(IDL.Principal)], []),\n getPoolChartTvl: IDL.Func([IDL.Text, IDL.Nat, IDL.Nat], [IDL.Vec(TvlChartDayData)], [\"query\"]),\n getTokenChartTvl: IDL.Func([IDL.Text, IDL.Nat, IDL.Nat], [IDL.Vec(TvlChartDayData)], [\"query\"]),\n insert: IDL.Func(\n [IDL.Vec(IDL.Tuple(IDL.Text, TvlChartDayData)), IDL.Vec(IDL.Tuple(IDL.Text, TvlChartDayData))],\n [IDL.Nat],\n []\n )\n });\n};\n","import { actor } from \"../actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { ActorName } from \"../ActorName\";\n\nimport {\n GlobalIndex,\n GlobalIndexInterfaceFactory,\n GlobalStorage,\n GlobalStorageInterfaceFactory,\n GlobalTVL,\n GlobalTVLInterfaceFactory,\n} from \"@icpswap/candid\";\n\nexport const globalIndex = (identity?: ActorIdentity) =>\n actor.create({\n idlFactory: GlobalIndexInterfaceFactory,\n actorName: ActorName.GlobalIndex,\n identity,\n });\n\nexport const globalStorage = (id: string) =>\n actor.create({\n idlFactory: GlobalStorageInterfaceFactory,\n canisterId: id,\n });\n\nexport const globalTVL = (id: string, identity?: ActorIdentity) =>\n actor.create({\n idlFactory: GlobalTVLInterfaceFactory,\n canisterId: id,\n identity,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const PublicPoolOverView = IDL.Record({\n id: IDL.Nat,\n volumeUSD1d: IDL.Float64,\n volumeUSD7d: IDL.Float64,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n totalVolumeUSD: IDL.Float64,\n sqrtPrice: IDL.Float64,\n pool: IDL.Text,\n tick: IDL.Int,\n liquidity: IDL.Nat,\n token1Price: IDL.Float64,\n feeTier: IDL.Nat,\n volumeUSD: IDL.Float64,\n feesUSD: IDL.Float64,\n token1Standard: IDL.Text,\n txCount: IDL.Nat,\n token1Decimals: IDL.Float64,\n token0Standard: IDL.Text,\n token0Symbol: IDL.Text,\n token0Decimals: IDL.Float64,\n token0Price: IDL.Float64,\n token1Symbol: IDL.Text\n });\n const PublicPoolChartDayData = IDL.Record({\n id: IDL.Int,\n volumeUSD: IDL.Float64,\n timestamp: IDL.Int,\n txCount: IDL.Int\n });\n const TransactionType = IDL.Variant({\n decreaseLiquidity: IDL.Null,\n claim: IDL.Null,\n swap: IDL.Null,\n addLiquidity: IDL.Null,\n increaseLiquidity: IDL.Null\n });\n const Transaction = IDL.Record({\n to: IDL.Text,\n action: TransactionType,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n liquidityTotal: IDL.Nat,\n from: IDL.Text,\n hash: IDL.Text,\n tick: IDL.Int,\n token1Price: IDL.Float64,\n recipient: IDL.Text,\n token0ChangeAmount: IDL.Float64,\n sender: IDL.Text,\n liquidityChange: IDL.Nat,\n token1Standard: IDL.Text,\n token0Fee: IDL.Float64,\n token1Fee: IDL.Float64,\n timestamp: IDL.Int,\n token1ChangeAmount: IDL.Float64,\n token1Decimals: IDL.Float64,\n token0Standard: IDL.Text,\n amountUSD: IDL.Float64,\n amountToken0: IDL.Float64,\n amountToken1: IDL.Float64,\n poolFee: IDL.Nat,\n token0Symbol: IDL.Text,\n token0Decimals: IDL.Float64,\n token0Price: IDL.Float64,\n token1Symbol: IDL.Text,\n poolId: IDL.Text\n });\n return IDL.Service({\n addOwners: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n getAllPools: IDL.Func([], [IDL.Vec(PublicPoolOverView)], [\"query\"]),\n getOwners: IDL.Func([], [IDL.Vec(IDL.Principal)], []),\n getPool: IDL.Func([IDL.Text], [PublicPoolOverView], [\"query\"]),\n getPoolChartData: IDL.Func([IDL.Text, IDL.Nat, IDL.Nat], [IDL.Vec(PublicPoolChartDayData)], [\"query\"]),\n getPoolTransactions: IDL.Func([IDL.Text, IDL.Nat, IDL.Nat], [IDL.Vec(Transaction)], [\"query\"]),\n insert: IDL.Func([Transaction], [], [])\n });\n};\n","import { actor } from \"../actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { PoolStorage, PoolStorageInterfaceFactory } from \"@icpswap/candid\";\n\nexport const poolStorage = (id: string, identity?: ActorIdentity) =>\n actor.create({\n idlFactory: PoolStorageInterfaceFactory,\n canisterId: id,\n identity,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const PublicTokenOverview = IDL.Record({\n id: IDL.Nat,\n volumeUSD1d: IDL.Float64,\n volumeUSD7d: IDL.Float64,\n totalVolumeUSD: IDL.Float64,\n name: IDL.Text,\n volumeUSD: IDL.Float64,\n feesUSD: IDL.Float64,\n priceUSDChange: IDL.Float64,\n address: IDL.Text,\n txCount: IDL.Int,\n priceUSD: IDL.Float64,\n standard: IDL.Text,\n symbol: IDL.Text\n });\n const PoolInfo = IDL.Record({\n fee: IDL.Int,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n pool: IDL.Text,\n token1Price: IDL.Float64,\n token1Standard: IDL.Text,\n token1Decimals: IDL.Float64,\n token0Standard: IDL.Text,\n token0Symbol: IDL.Text,\n token0Decimals: IDL.Float64,\n token0Price: IDL.Float64,\n token1Symbol: IDL.Text\n });\n const PublicTokenChartDayData = IDL.Record({\n id: IDL.Int,\n volumeUSD: IDL.Float64,\n timestamp: IDL.Int,\n txCount: IDL.Int\n });\n const PublicTokenPricesData = IDL.Record({\n id: IDL.Int,\n low: IDL.Float64,\n high: IDL.Float64,\n close: IDL.Float64,\n open: IDL.Float64,\n timestamp: IDL.Int\n });\n const TransactionType = IDL.Variant({\n decreaseLiquidity: IDL.Null,\n claim: IDL.Null,\n swap: IDL.Null,\n addLiquidity: IDL.Null,\n increaseLiquidity: IDL.Null\n });\n const Transaction = IDL.Record({\n to: IDL.Text,\n action: TransactionType,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n liquidityTotal: IDL.Nat,\n from: IDL.Text,\n hash: IDL.Text,\n tick: IDL.Int,\n token1Price: IDL.Float64,\n recipient: IDL.Text,\n token0ChangeAmount: IDL.Float64,\n sender: IDL.Text,\n liquidityChange: IDL.Nat,\n token1Standard: IDL.Text,\n token0Fee: IDL.Float64,\n token1Fee: IDL.Float64,\n timestamp: IDL.Int,\n token1ChangeAmount: IDL.Float64,\n token1Decimals: IDL.Float64,\n token0Standard: IDL.Text,\n amountUSD: IDL.Float64,\n amountToken0: IDL.Float64,\n amountToken1: IDL.Float64,\n poolFee: IDL.Nat,\n token0Symbol: IDL.Text,\n token0Decimals: IDL.Float64,\n token0Price: IDL.Float64,\n token1Symbol: IDL.Text,\n poolId: IDL.Text\n });\n return IDL.Service({\n addOwners: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n getAllTokens: IDL.Func([], [IDL.Vec(PublicTokenOverview)], [\"query\"]),\n getOwners: IDL.Func([], [IDL.Vec(IDL.Principal)], []),\n getPoolsForToken: IDL.Func([IDL.Text], [IDL.Vec(PoolInfo)], [\"query\"]),\n getToken: IDL.Func([IDL.Text], [PublicTokenOverview], [\"query\"]),\n getTokenChartData: IDL.Func([IDL.Text, IDL.Nat, IDL.Nat], [IDL.Vec(PublicTokenChartDayData)], [\"query\"]),\n getTokenPricesData: IDL.Func([IDL.Text, IDL.Int, IDL.Int, IDL.Nat], [IDL.Vec(PublicTokenPricesData)], [\"query\"]),\n getTokenTransactions: IDL.Func([IDL.Text, IDL.Nat, IDL.Nat], [IDL.Vec(Transaction)], [\"query\"]),\n insert: IDL.Func([IDL.Text, Transaction], [], [])\n });\n};\n","import { actor } from \"../actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { TokenStorage, TokenStorageInterfaceFactory } from \"@icpswap/candid\";\n\nexport const tokenStorage = (id: string, identity?: ActorIdentity) =>\n actor.create({\n idlFactory: TokenStorageInterfaceFactory,\n canisterId: id,\n identity,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const TransactionType = IDL.Variant({\n decreaseLiquidity: IDL.Null,\n claim: IDL.Null,\n swap: IDL.Null,\n addLiquidity: IDL.Null,\n increaseLiquidity: IDL.Null,\n });\n const Transaction = IDL.Record({\n to: IDL.Text,\n action: TransactionType,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n liquidityTotal: IDL.Nat,\n from: IDL.Text,\n hash: IDL.Text,\n tick: IDL.Int,\n token1Price: IDL.Float64,\n recipient: IDL.Text,\n token0ChangeAmount: IDL.Float64,\n sender: IDL.Text,\n liquidityChange: IDL.Nat,\n token1Standard: IDL.Text,\n token0Fee: IDL.Float64,\n token1Fee: IDL.Float64,\n timestamp: IDL.Int,\n token1ChangeAmount: IDL.Float64,\n token1Decimals: IDL.Float64,\n token0Standard: IDL.Text,\n amountUSD: IDL.Float64,\n amountToken0: IDL.Float64,\n amountToken1: IDL.Float64,\n poolFee: IDL.Nat,\n token0Symbol: IDL.Text,\n token0Decimals: IDL.Float64,\n token0Price: IDL.Float64,\n token1Symbol: IDL.Text,\n poolId: IDL.Text,\n });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const Address = IDL.Text;\n const RecordPage = IDL.Record({\n content: IDL.Vec(Transaction),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n return IDL.Service({\n addOwners: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n batchInsert: IDL.Func([IDL.Text, IDL.Vec(Transaction)], [], []),\n clean: IDL.Func([], [], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n get: IDL.Func([Address, IDL.Nat, IDL.Nat, IDL.Vec(IDL.Text)], [RecordPage], [\"query\"]),\n getOwners: IDL.Func([], [IDL.Vec(IDL.Principal)], []),\n insert: IDL.Func([Transaction], [], []),\n });\n};\n","import { actor } from \"../actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { UserStorage, UserStorageInterfaceFactory } from \"@icpswap/candid\";\n\nexport const userStorage = (id: string, identity?: ActorIdentity) =>\n actor.create({\n idlFactory: UserStorageInterfaceFactory,\n canisterId: id,\n identity,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const Value = IDL.Rec();\n const Map = IDL.Vec(IDL.Tuple(IDL.Text, Value));\n Value.fill(\n IDL.Variant({\n Int: IDL.Int,\n Map: Map,\n Nat: IDL.Nat,\n Nat64: IDL.Nat64,\n Blob: IDL.Vec(IDL.Nat8),\n Text: IDL.Text,\n Array: IDL.Vec(Value)\n })\n );\n const Block = Value;\n const Account = IDL.Record({\n owner: IDL.Principal,\n subaccount: IDL.Opt(IDL.Vec(IDL.Nat8))\n });\n const Transaction = IDL.Record({\n burn: IDL.Opt(\n IDL.Record({\n from: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat\n })\n ),\n kind: IDL.Text,\n mint: IDL.Opt(\n IDL.Record({\n to: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat\n })\n ),\n timestamp: IDL.Nat64,\n transfer: IDL.Opt(\n IDL.Record({\n to: Account,\n from: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat\n })\n )\n });\n return IDL.Service({\n append_blocks: IDL.Func([IDL.Vec(IDL.Vec(IDL.Nat8))], [], []),\n get_blocks: IDL.Func(\n [IDL.Record({ start: IDL.Nat, length: IDL.Nat })],\n [IDL.Record({ blocks: IDL.Vec(Block) })],\n [\"query\"]\n ),\n get_transaction: IDL.Func([IDL.Nat64], [IDL.Opt(Transaction)], [\"query\"]),\n get_transactions: IDL.Func(\n [IDL.Record({ start: IDL.Nat, length: IDL.Nat })],\n [IDL.Record({ transactions: IDL.Vec(Transaction) })],\n [\"query\"]\n ),\n remaining_capacity: IDL.Func([], [IDL.Nat64], [\"query\"])\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Subaccount = IDL.Vec(IDL.Nat8);\n const Account = IDL.Record({\n owner: IDL.Principal,\n subaccount: IDL.Opt(Subaccount)\n });\n const Tokens = IDL.Nat;\n const Value = IDL.Variant({\n Int: IDL.Int,\n Nat: IDL.Nat,\n Blob: IDL.Vec(IDL.Nat8),\n Text: IDL.Text\n });\n const Memo = IDL.Vec(IDL.Nat8);\n const Timestamp = IDL.Nat64;\n const TxIndex = IDL.Nat;\n const TransferError = IDL.Variant({\n GenericError: IDL.Record({\n message: IDL.Text,\n error_code: IDL.Nat\n }),\n TemporarilyUnavailable: IDL.Null,\n BadBurn: IDL.Record({ min_burn_amount: Tokens }),\n Duplicate: IDL.Record({ duplicate_of: TxIndex }),\n BadFee: IDL.Record({ expected_fee: Tokens }),\n CreatedInFuture: IDL.Record({ ledger_time: Timestamp }),\n TooOld: IDL.Null,\n InsufficientFunds: IDL.Record({ balance: Tokens })\n });\n const TransferResult = IDL.Variant({ Ok: TxIndex, Err: TransferError });\n const GetTransactionsRequest = IDL.Record({\n start: IDL.Nat,\n length: IDL.Nat\n });\n const Burn = IDL.Record({\n from: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat\n });\n const Mint = IDL.Record({\n to: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat\n });\n const Transfer = IDL.Record({\n to: Account,\n fee: IDL.Opt(IDL.Nat),\n from: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat\n });\n const Transaction = IDL.Record({\n burn: IDL.Opt(Burn),\n kind: IDL.Text,\n mint: IDL.Opt(Mint),\n timestamp: IDL.Nat64,\n transfer: IDL.Opt(Transfer)\n });\n const ArchivedTransactionRange = IDL.Record({\n callback: IDL.Func([GetTransactionsRequest], [IDL.Record({ transactions: IDL.Vec(Transaction) })], [\"query\"]),\n start: IDL.Nat,\n length: IDL.Nat\n });\n const GetTransactionsResponse = IDL.Record({\n first_index: IDL.Nat,\n log_length: IDL.Nat,\n transactions: IDL.Vec(Transaction),\n archived_transactions: IDL.Vec(ArchivedTransactionRange)\n });\n const Ledger = IDL.Service({\n get_transactions: IDL.Func([GetTransactionsRequest], [GetTransactionsResponse], [\"query\"]),\n icrc1_balance_of: IDL.Func([Account], [Tokens], [\"query\"]),\n icrc1_decimals: IDL.Func([], [IDL.Nat8], [\"query\"]),\n icrc1_fee: IDL.Func([], [IDL.Nat], [\"query\"]),\n icrc1_metadata: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, Value))], [\"query\"]),\n icrc1_minting_account: IDL.Func([], [IDL.Opt(Account)], [\"query\"]),\n icrc1_name: IDL.Func([], [IDL.Text], [\"query\"]),\n icrc1_supported_standards: IDL.Func([], [IDL.Vec(IDL.Record({ url: IDL.Text, name: IDL.Text }))], [\"query\"]),\n icrc1_symbol: IDL.Func([], [IDL.Text], [\"query\"]),\n icrc1_total_supply: IDL.Func([], [Tokens], [\"query\"]),\n icrc1_logo: IDL.Func([], [IDL.Text], [\"query\"]),\n icrc1_transfer: IDL.Func(\n [\n IDL.Record({\n to: Account,\n fee: IDL.Opt(Tokens),\n memo: IDL.Opt(Memo),\n from_subaccount: IDL.Opt(Subaccount),\n created_at_time: IDL.Opt(Timestamp),\n amount: Tokens\n })\n ],\n [TransferResult],\n []\n )\n });\n return Ledger;\n};\n\nexport const init = ({ IDL }: any) => {\n return [\n IDL.Record({\n decimals: IDL.Nat8,\n token_symbol: IDL.Text,\n transfer_fee: IDL.Nat,\n minting_account: IDL.Record({\n owner: IDL.Principal,\n subaccount: IDL.Opt(IDL.Vec(IDL.Nat8))\n }),\n initial_mints: IDL.Vec(\n IDL.Record({\n account: IDL.Record({\n owner: IDL.Principal,\n subaccount: IDL.Opt(IDL.Vec(IDL.Nat8))\n }),\n amount: IDL.Nat\n })\n ),\n token_name: IDL.Text\n })\n ];\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Value = IDL.Rec();\n const Vec = IDL.Rec();\n const MetadataValue = IDL.Variant({\n Int: IDL.Int,\n Nat: IDL.Nat,\n Blob: IDL.Vec(IDL.Nat8),\n Text: IDL.Text\n });\n const Account = IDL.Record({\n owner: IDL.Principal,\n subaccount: IDL.Opt(IDL.Vec(IDL.Nat8))\n });\n const ChangeFeeCollector = IDL.Variant({\n SetTo: Account,\n Unset: IDL.Null\n });\n const FeatureFlags = IDL.Record({ icrc2: IDL.Bool });\n const UpgradeArgs = IDL.Record({\n token_symbol: IDL.Opt(IDL.Text),\n transfer_fee: IDL.Opt(IDL.Nat),\n metadata: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, MetadataValue))),\n maximum_number_of_accounts: IDL.Opt(IDL.Nat64),\n accounts_overflow_trim_quantity: IDL.Opt(IDL.Nat64),\n change_fee_collector: IDL.Opt(ChangeFeeCollector),\n max_memo_length: IDL.Opt(IDL.Nat16),\n token_name: IDL.Opt(IDL.Text),\n feature_flags: IDL.Opt(FeatureFlags)\n });\n const ArchiveOptions = IDL.Record({\n num_blocks_to_archive: IDL.Nat64,\n max_transactions_per_response: IDL.Opt(IDL.Nat64),\n trigger_threshold: IDL.Nat64,\n max_message_size_bytes: IDL.Opt(IDL.Nat64),\n cycles_for_archive_creation: IDL.Opt(IDL.Nat64),\n node_max_memory_size_bytes: IDL.Opt(IDL.Nat64),\n controller_id: IDL.Principal\n });\n const InitArgs = IDL.Record({\n decimals: IDL.Opt(IDL.Nat8),\n token_symbol: IDL.Text,\n transfer_fee: IDL.Nat,\n metadata: IDL.Vec(IDL.Tuple(IDL.Text, MetadataValue)),\n minting_account: Account,\n initial_balances: IDL.Vec(IDL.Tuple(Account, IDL.Nat)),\n maximum_number_of_accounts: IDL.Opt(IDL.Nat64),\n accounts_overflow_trim_quantity: IDL.Opt(IDL.Nat64),\n fee_collector_account: IDL.Opt(Account),\n archive_options: ArchiveOptions,\n max_memo_length: IDL.Opt(IDL.Nat16),\n token_name: IDL.Text,\n feature_flags: IDL.Opt(FeatureFlags)\n });\n const LedgerArgument = IDL.Variant({\n Upgrade: IDL.Opt(UpgradeArgs),\n Init: InitArgs\n });\n const GetBlocksRequest = IDL.Record({\n start: IDL.Nat,\n length: IDL.Nat\n });\n Vec.fill(\n IDL.Vec(\n IDL.Variant({\n Int: IDL.Int,\n Map: IDL.Vec(IDL.Tuple(IDL.Text, Value)),\n Nat: IDL.Nat,\n Nat64: IDL.Nat64,\n Blob: IDL.Vec(IDL.Nat8),\n Text: IDL.Text,\n Array: Vec\n })\n )\n );\n Value.fill(\n IDL.Variant({\n Int: IDL.Int,\n Map: IDL.Vec(IDL.Tuple(IDL.Text, Value)),\n Nat: IDL.Nat,\n Nat64: IDL.Nat64,\n Blob: IDL.Vec(IDL.Nat8),\n Text: IDL.Text,\n Array: Vec\n })\n );\n const BlockRange = IDL.Record({ blocks: IDL.Vec(Value) });\n const ArchivedRange = IDL.Record({\n callback: IDL.Func([GetBlocksRequest], [BlockRange], [\"query\"]),\n start: IDL.Nat,\n length: IDL.Nat\n });\n const GetBlocksResponse = IDL.Record({\n certificate: IDL.Opt(IDL.Vec(IDL.Nat8)),\n first_index: IDL.Nat,\n blocks: IDL.Vec(Value),\n chain_length: IDL.Nat64,\n archived_blocks: IDL.Vec(ArchivedRange)\n });\n const DataCertificate = IDL.Record({\n certificate: IDL.Opt(IDL.Vec(IDL.Nat8)),\n hash_tree: IDL.Vec(IDL.Nat8)\n });\n const Burn = IDL.Record({\n from: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat,\n spender: IDL.Opt(Account)\n });\n const Mint = IDL.Record({\n to: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat\n });\n const Approve = IDL.Record({\n fee: IDL.Opt(IDL.Nat),\n from: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat,\n expected_allowance: IDL.Opt(IDL.Nat),\n expires_at: IDL.Opt(IDL.Nat64),\n spender: Account\n });\n const Transfer = IDL.Record({\n to: Account,\n fee: IDL.Opt(IDL.Nat),\n from: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat,\n spender: IDL.Opt(Account)\n });\n const Transaction = IDL.Record({\n burn: IDL.Opt(Burn),\n kind: IDL.Text,\n mint: IDL.Opt(Mint),\n approve: IDL.Opt(Approve),\n timestamp: IDL.Nat64,\n transfer: IDL.Opt(Transfer)\n });\n const TransactionRange = IDL.Record({\n transactions: IDL.Vec(Transaction)\n });\n const ArchivedRange_1 = IDL.Record({\n callback: IDL.Func([GetBlocksRequest], [TransactionRange], [\"query\"]),\n start: IDL.Nat,\n length: IDL.Nat\n });\n const GetTransactionsResponse = IDL.Record({\n first_index: IDL.Nat,\n log_length: IDL.Nat,\n transactions: IDL.Vec(Transaction),\n archived_transactions: IDL.Vec(ArchivedRange_1)\n });\n const StandardRecord = IDL.Record({ url: IDL.Text, name: IDL.Text });\n const TransferArg = IDL.Record({\n to: Account,\n fee: IDL.Opt(IDL.Nat),\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n from_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat\n });\n const TransferError = IDL.Variant({\n GenericError: IDL.Record({\n message: IDL.Text,\n error_code: IDL.Nat\n }),\n TemporarilyUnavailable: IDL.Null,\n BadBurn: IDL.Record({ min_burn_amount: IDL.Nat }),\n Duplicate: IDL.Record({ duplicate_of: IDL.Nat }),\n BadFee: IDL.Record({ expected_fee: IDL.Nat }),\n CreatedInFuture: IDL.Record({ ledger_time: IDL.Nat64 }),\n TooOld: IDL.Null,\n InsufficientFunds: IDL.Record({ balance: IDL.Nat })\n });\n const Result = IDL.Variant({ Ok: IDL.Nat, Err: TransferError });\n const AllowanceArgs = IDL.Record({\n account: Account,\n spender: Account\n });\n const Allowance = IDL.Record({\n allowance: IDL.Nat,\n expires_at: IDL.Opt(IDL.Nat64)\n });\n const ApproveArgs = IDL.Record({\n fee: IDL.Opt(IDL.Nat),\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n from_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat,\n expected_allowance: IDL.Opt(IDL.Nat),\n expires_at: IDL.Opt(IDL.Nat64),\n spender: Account\n });\n const ApproveError = IDL.Variant({\n GenericError: IDL.Record({\n message: IDL.Text,\n error_code: IDL.Nat\n }),\n TemporarilyUnavailable: IDL.Null,\n Duplicate: IDL.Record({ duplicate_of: IDL.Nat }),\n BadFee: IDL.Record({ expected_fee: IDL.Nat }),\n AllowanceChanged: IDL.Record({ current_allowance: IDL.Nat }),\n CreatedInFuture: IDL.Record({ ledger_time: IDL.Nat64 }),\n TooOld: IDL.Null,\n Expired: IDL.Record({ ledger_time: IDL.Nat64 }),\n InsufficientFunds: IDL.Record({ balance: IDL.Nat })\n });\n const Result_1 = IDL.Variant({ Ok: IDL.Nat, Err: ApproveError });\n const TransferFromArgs = IDL.Record({\n to: Account,\n fee: IDL.Opt(IDL.Nat),\n spender_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n from: Account,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat\n });\n const TransferFromError = IDL.Variant({\n GenericError: IDL.Record({\n message: IDL.Text,\n error_code: IDL.Nat\n }),\n TemporarilyUnavailable: IDL.Null,\n InsufficientAllowance: IDL.Record({ allowance: IDL.Nat }),\n BadBurn: IDL.Record({ min_burn_amount: IDL.Nat }),\n Duplicate: IDL.Record({ duplicate_of: IDL.Nat }),\n BadFee: IDL.Record({ expected_fee: IDL.Nat }),\n CreatedInFuture: IDL.Record({ ledger_time: IDL.Nat64 }),\n TooOld: IDL.Null,\n InsufficientFunds: IDL.Record({ balance: IDL.Nat })\n });\n const Result_2 = IDL.Variant({ Ok: IDL.Nat, Err: TransferFromError });\n return IDL.Service({\n get_blocks: IDL.Func([GetBlocksRequest], [GetBlocksResponse], [\"query\"]),\n get_data_certificate: IDL.Func([], [DataCertificate], [\"query\"]),\n get_transactions: IDL.Func([GetBlocksRequest], [GetTransactionsResponse], [\"query\"]),\n icrc1_balance_of: IDL.Func([Account], [IDL.Nat], [\"query\"]),\n icrc1_decimals: IDL.Func([], [IDL.Nat8], [\"query\"]),\n icrc1_fee: IDL.Func([], [IDL.Nat], [\"query\"]),\n icrc1_metadata: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, MetadataValue))], [\"query\"]),\n icrc1_minting_account: IDL.Func([], [IDL.Opt(Account)], [\"query\"]),\n icrc1_name: IDL.Func([], [IDL.Text], [\"query\"]),\n icrc1_supported_standards: IDL.Func([], [IDL.Vec(StandardRecord)], [\"query\"]),\n icrc1_symbol: IDL.Func([], [IDL.Text], [\"query\"]),\n icrc1_total_supply: IDL.Func([], [IDL.Nat], [\"query\"]),\n icrc1_transfer: IDL.Func([TransferArg], [Result], []),\n icrc2_allowance: IDL.Func([AllowanceArgs], [Allowance], [\"query\"]),\n icrc2_approve: IDL.Func([ApproveArgs], [Result_1], []),\n icrc2_transfer_from: IDL.Func([TransferFromArgs], [Result_2], [])\n });\n};\nexport const init = ({ IDL }) => {\n const MetadataValue = IDL.Variant({\n Int: IDL.Int,\n Nat: IDL.Nat,\n Blob: IDL.Vec(IDL.Nat8),\n Text: IDL.Text\n });\n const Account = IDL.Record({\n owner: IDL.Principal,\n subaccount: IDL.Opt(IDL.Vec(IDL.Nat8))\n });\n const ChangeFeeCollector = IDL.Variant({\n SetTo: Account,\n Unset: IDL.Null\n });\n const FeatureFlags = IDL.Record({ icrc2: IDL.Bool });\n const UpgradeArgs = IDL.Record({\n token_symbol: IDL.Opt(IDL.Text),\n transfer_fee: IDL.Opt(IDL.Nat),\n metadata: IDL.Opt(IDL.Vec(IDL.Tuple(IDL.Text, MetadataValue))),\n maximum_number_of_accounts: IDL.Opt(IDL.Nat64),\n accounts_overflow_trim_quantity: IDL.Opt(IDL.Nat64),\n change_fee_collector: IDL.Opt(ChangeFeeCollector),\n max_memo_length: IDL.Opt(IDL.Nat16),\n token_name: IDL.Opt(IDL.Text),\n feature_flags: IDL.Opt(FeatureFlags)\n });\n const ArchiveOptions = IDL.Record({\n num_blocks_to_archive: IDL.Nat64,\n max_transactions_per_response: IDL.Opt(IDL.Nat64),\n trigger_threshold: IDL.Nat64,\n max_message_size_bytes: IDL.Opt(IDL.Nat64),\n cycles_for_archive_creation: IDL.Opt(IDL.Nat64),\n node_max_memory_size_bytes: IDL.Opt(IDL.Nat64),\n controller_id: IDL.Principal\n });\n const InitArgs = IDL.Record({\n decimals: IDL.Opt(IDL.Nat8),\n token_symbol: IDL.Text,\n transfer_fee: IDL.Nat,\n metadata: IDL.Vec(IDL.Tuple(IDL.Text, MetadataValue)),\n minting_account: Account,\n initial_balances: IDL.Vec(IDL.Tuple(Account, IDL.Nat)),\n maximum_number_of_accounts: IDL.Opt(IDL.Nat64),\n accounts_overflow_trim_quantity: IDL.Opt(IDL.Nat64),\n fee_collector_account: IDL.Opt(Account),\n archive_options: ArchiveOptions,\n max_memo_length: IDL.Opt(IDL.Nat16),\n token_name: IDL.Text,\n feature_flags: IDL.Opt(FeatureFlags)\n });\n const LedgerArgument = IDL.Variant({\n Upgrade: IDL.Opt(UpgradeArgs),\n Init: InitArgs\n });\n return [LedgerArgument];\n};\n","import { actor } from \"../actor\";\nimport {\n ICRCArchive,\n ICRCArchiveInterfaceFactory,\n ICRC1_SERVICE,\n ICRC1InterfaceFactory,\n ICRC2,\n ICRC2InterfaceFactory,\n} from \"@icpswap/candid\";\nimport type { ActorIdentity } from \"@icpswap/types\";\n\nexport const icrcArchive = (canisterId: string) =>\n actor.create({\n idlFactory: ICRCArchiveInterfaceFactory,\n canisterId,\n });\n\nexport const icrc1 = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n identity,\n idlFactory: ICRC1InterfaceFactory,\n canisterId,\n });\n\nexport const icrc2 = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n identity,\n idlFactory: ICRC2InterfaceFactory,\n canisterId,\n });\n","export default ({ IDL }) => {\n const TxError = IDL.Variant({\n InsufficientAllowance: IDL.Null,\n InsufficientBalance: IDL.Null,\n ErrorOperationStyle: IDL.Null,\n Unauthorized: IDL.Null,\n LedgerTrap: IDL.Null,\n ErrorTo: IDL.Null,\n Other: IDL.Null,\n BlockUsed: IDL.Null,\n AmountTooSmall: IDL.Null,\n });\n const TxReceipt = IDL.Variant({ Ok: IDL.Nat, Err: TxError });\n const TransactionId = IDL.Nat64;\n const BurnError = IDL.Variant({\n InsufficientBalance: IDL.Null,\n InvalidTokenContract: IDL.Null,\n NotSufficientLiquidity: IDL.Null,\n });\n const BurnResult = IDL.Variant({ Ok: TransactionId, Err: BurnError });\n const TransactionStatus = IDL.Variant({\n FAILED: IDL.Null,\n SUCCEEDED: IDL.Null,\n });\n const EventDetail = IDL.Variant({\n Approve: IDL.Record({ to: IDL.Principal, from: IDL.Principal }),\n Burn: IDL.Record({ to: IDL.Principal, from: IDL.Principal }),\n Mint: IDL.Record({ to: IDL.Principal }),\n CanisterCreated: IDL.Record({\n from: IDL.Principal,\n canister: IDL.Principal,\n }),\n CanisterCalled: IDL.Record({\n from: IDL.Principal,\n method_name: IDL.Text,\n canister: IDL.Principal,\n }),\n Transfer: IDL.Record({ to: IDL.Principal, from: IDL.Principal }),\n TransferFrom: IDL.Record({\n to: IDL.Principal,\n from: IDL.Principal,\n caller: IDL.Principal,\n }),\n });\n const Event = IDL.Record({\n fee: IDL.Nat64,\n status: TransactionStatus,\n kind: EventDetail,\n cycles: IDL.Nat64,\n timestamp: IDL.Nat64,\n });\n const EventsConnection = IDL.Record({\n data: IDL.Vec(Event),\n next_offset: TransactionId,\n next_canister_id: IDL.Opt(IDL.Principal),\n });\n const Metadata = IDL.Record({\n fee: IDL.Nat,\n decimals: IDL.Nat8,\n owner: IDL.Principal,\n logo: IDL.Text,\n name: IDL.Text,\n totalSupply: IDL.Nat,\n symbol: IDL.Text,\n });\n const Operation = IDL.Variant({\n transferFrom: IDL.Null,\n burn: IDL.Null,\n mint: IDL.Null,\n approve: IDL.Null,\n canisterCalled: IDL.Null,\n transfer: IDL.Null,\n canisterCreated: IDL.Null,\n });\n const Time = IDL.Int;\n const TxRecord = IDL.Record({\n op: Operation,\n to: IDL.Principal,\n fee: IDL.Nat,\n status: TransactionStatus,\n from: IDL.Principal,\n timestamp: Time,\n caller: IDL.Opt(IDL.Principal),\n index: IDL.Nat,\n amount: IDL.Nat,\n });\n const MintError = IDL.Variant({ NotSufficientLiquidity: IDL.Null });\n const MintResult = IDL.Variant({ Ok: TransactionId, Err: MintError });\n const Stats = IDL.Record({\n fee: IDL.Nat,\n transfers_count: IDL.Nat64,\n balance: IDL.Nat64,\n mints_count: IDL.Nat64,\n transfers_from_count: IDL.Nat64,\n canisters_created_count: IDL.Nat64,\n supply: IDL.Nat,\n burns_count: IDL.Nat64,\n approvals_count: IDL.Nat64,\n proxy_calls_count: IDL.Nat64,\n history_events: IDL.Nat64,\n });\n const ResultCall = IDL.Variant({\n Ok: IDL.Record({ return: IDL.Vec(IDL.Nat8) }),\n Err: IDL.Text,\n });\n const CreateResult = IDL.Variant({\n Ok: IDL.Record({ canister_id: IDL.Principal }),\n Err: IDL.Text,\n });\n const ResultSend = IDL.Variant({ Ok: IDL.Null, Err: IDL.Text });\n return IDL.Service({\n allowance: IDL.Func([IDL.Principal, IDL.Principal], [IDL.Nat], [\"query\"]),\n approve: IDL.Func([IDL.Principal, IDL.Nat], [TxReceipt], []),\n balance: IDL.Func([IDL.Opt(IDL.Principal)], [IDL.Nat64], []),\n balanceOf: IDL.Func([IDL.Principal], [IDL.Nat], [\"query\"]),\n burn: IDL.Func([IDL.Record({ canister_id: IDL.Principal, amount: IDL.Nat64 })], [BurnResult], []),\n decimals: IDL.Func([], [IDL.Nat8], [\"query\"]),\n events: IDL.Func([IDL.Record({ offset: IDL.Opt(IDL.Nat64), limit: IDL.Nat16 })], [EventsConnection], [\"query\"]),\n getMetadata: IDL.Func([], [Metadata], [\"query\"]),\n getTransaction: IDL.Func([IDL.Nat], [TxRecord], []),\n getTransactions: IDL.Func([IDL.Nat, IDL.Nat], [IDL.Vec(TxRecord)], []),\n get_transaction: IDL.Func([TransactionId], [IDL.Opt(Event)], []),\n halt: IDL.Func([], [], []),\n historySize: IDL.Func([], [IDL.Nat], [\"query\"]),\n logo: IDL.Func([], [IDL.Text], [\"query\"]),\n mint: IDL.Func([IDL.Principal, IDL.Nat], [MintResult], []),\n name: IDL.Func([], [IDL.Text], [\"query\"]),\n nameErc20: IDL.Func([], [IDL.Text], [\"query\"]),\n stats: IDL.Func([], [Stats], [\"query\"]),\n symbol: IDL.Func([], [IDL.Text], [\"query\"]),\n totalSupply: IDL.Func([], [IDL.Nat], [\"query\"]),\n transfer: IDL.Func([IDL.Principal, IDL.Nat], [TxReceipt], []),\n transferErc20: IDL.Func([IDL.Principal, IDL.Nat], [TxReceipt], []),\n transferFrom: IDL.Func([IDL.Principal, IDL.Principal, IDL.Nat], [TxReceipt], []),\n wallet_balance: IDL.Func([], [IDL.Record({ amount: IDL.Nat64 })], [\"query\"]),\n wallet_call: IDL.Func(\n [\n IDL.Record({\n args: IDL.Vec(IDL.Nat8),\n cycles: IDL.Nat64,\n method_name: IDL.Text,\n canister: IDL.Principal,\n }),\n ],\n [ResultCall],\n []\n ),\n wallet_create_canister: IDL.Func(\n [\n IDL.Record({\n controller: IDL.Opt(IDL.Principal),\n cycles: IDL.Nat64,\n }),\n ],\n [CreateResult],\n []\n ),\n wallet_create_wallet: IDL.Func(\n [\n IDL.Record({\n controller: IDL.Opt(IDL.Principal),\n cycles: IDL.Nat64,\n }),\n ],\n [CreateResult],\n []\n ),\n wallet_send: IDL.Func([IDL.Record({ canister: IDL.Principal, amount: IDL.Nat64 })], [ResultSend], []),\n });\n};\nexport const init = () => {\n return [];\n};\n","export default ({ IDL }: any) => {\n const TxReceipt = IDL.Variant({\n Ok: IDL.Nat,\n Err: IDL.Variant({\n InsufficientAllowance: IDL.Null,\n InsufficientBalance: IDL.Null,\n ErrorOperationStyle: IDL.Null,\n Unauthorized: IDL.Null,\n LedgerTrap: IDL.Null,\n ErrorTo: IDL.Null,\n Other: IDL.Text,\n BlockUsed: IDL.Null,\n AmountTooSmall: IDL.Null\n })\n });\n const Metadata = IDL.Record({\n fee: IDL.Nat,\n decimals: IDL.Nat8,\n owner: IDL.Principal,\n logo: IDL.Text,\n name: IDL.Text,\n totalSupply: IDL.Nat,\n symbol: IDL.Text\n });\n const Time = IDL.Int;\n const TokenInfo = IDL.Record({\n holderNumber: IDL.Nat,\n deployTime: Time,\n metadata: Metadata,\n historySize: IDL.Nat,\n cycles: IDL.Nat,\n feeTo: IDL.Principal\n });\n return IDL.Service({\n allowance: IDL.Func([IDL.Principal, IDL.Principal], [IDL.Nat], [\"query\"]),\n approve: IDL.Func([IDL.Principal, IDL.Nat], [TxReceipt], []),\n balanceOf: IDL.Func([IDL.Principal], [IDL.Nat], [\"query\"]),\n burn: IDL.Func([IDL.Nat], [TxReceipt], []),\n decimals: IDL.Func([], [IDL.Nat8], [\"query\"]),\n getAllowanceSize: IDL.Func([], [IDL.Nat], [\"query\"]),\n getHolders: IDL.Func([IDL.Nat, IDL.Nat], [IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Nat))], [\"query\"]),\n getMetadata: IDL.Func([], [Metadata], [\"query\"]),\n getTokenFee: IDL.Func([], [IDL.Nat], [\"query\"]),\n getTokenInfo: IDL.Func([], [TokenInfo], [\"query\"]),\n getUserApprovals: IDL.Func([IDL.Principal], [IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Nat))], [\"query\"]),\n historySize: IDL.Func([], [IDL.Nat], [\"query\"]),\n logo: IDL.Func([], [IDL.Text], [\"query\"]),\n mint: IDL.Func([IDL.Principal, IDL.Nat], [TxReceipt], []),\n name: IDL.Func([], [IDL.Text], [\"query\"]),\n setFee: IDL.Func([IDL.Nat], [], [\"oneway\"]),\n setFeeTo: IDL.Func([IDL.Principal], [], [\"oneway\"]),\n setLogo: IDL.Func([IDL.Text], [], [\"oneway\"]),\n setName: IDL.Func([IDL.Text], [], [\"oneway\"]),\n setOwner: IDL.Func([IDL.Principal], [], [\"oneway\"]),\n symbol: IDL.Func([], [IDL.Text], [\"query\"]),\n totalSupply: IDL.Func([], [IDL.Nat], [\"query\"]),\n transfer: IDL.Func([IDL.Principal, IDL.Nat], [TxReceipt], []),\n transferFrom: IDL.Func([IDL.Principal, IDL.Principal, IDL.Nat], [TxReceipt], [])\n });\n};\n","export default ({ IDL }) => {\n return IDL.Service({\n balanceOf: IDL.Func([IDL.Principal], [IDL.Nat], []),\n });\n};\n","export default ({ IDL }) => {\n return IDL.Service({\n totalSupply: IDL.Func([], [IDL.Nat], [])\n });\n};\n","import { actor } from \"../actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport {\n DIP20,\n DIP20Balance,\n DIP20InterfaceFactory,\n DIP20BalanceInterfaceFactory,\n XTC,\n XTCInterfaceFactory,\n DIP20Supply,\n DIP20SupplyInterfaceFactory,\n} from \"@icpswap/candid\";\n\nexport const xtc = (identity?: ActorIdentity) =>\n actor.create({\n identity,\n idlFactory: XTCInterfaceFactory,\n canisterId: \"aanaa-xaaaa-aaaah-aaeiq-cai\",\n });\n\nexport const dip20 = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n identity,\n idlFactory: DIP20InterfaceFactory,\n canisterId,\n });\n\nexport const dip20BalanceActor = (\n canisterId: string,\n identity?: ActorIdentity\n) =>\n actor.create({\n identity,\n idlFactory: DIP20BalanceInterfaceFactory,\n canisterId,\n });\n\nexport const dip20SupplyActor = (\n canisterId: string,\n identity?: ActorIdentity\n) =>\n actor.create({\n identity,\n idlFactory: DIP20SupplyInterfaceFactory,\n canisterId,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const Balance = IDL.Nat;\n const AccountIdentifier = IDL.Text;\n const User = IDL.Variant({\n principal: IDL.Principal,\n address: AccountIdentifier\n });\n const SubAccount = IDL.Vec(IDL.Nat8);\n const AllowanceRequest = IDL.Record({\n owner: User,\n subaccount: IDL.Opt(SubAccount),\n spender: IDL.Principal\n });\n const Balance__1 = IDL.Nat;\n const TokenIdentifier = IDL.Text;\n const CommonError__1 = IDL.Variant({\n InsufficientBalance: IDL.Null,\n InvalidToken: TokenIdentifier,\n Unauthorized: AccountIdentifier,\n Other: IDL.Text\n });\n const Result_2 = IDL.Variant({ ok: Balance__1, err: CommonError__1 });\n const ApproveRequest = IDL.Record({\n subaccount: IDL.Opt(SubAccount),\n allowance: Balance,\n spender: IDL.Principal\n });\n const Result_3 = IDL.Variant({ ok: IDL.Bool, err: CommonError__1 });\n const BalanceRequest = IDL.Record({\n token: TokenIdentifier,\n user: User\n });\n const CommonError = IDL.Variant({\n InsufficientBalance: IDL.Null,\n InvalidToken: TokenIdentifier,\n Unauthorized: AccountIdentifier,\n Other: IDL.Text\n });\n const BalanceResponse = IDL.Variant({ ok: Balance, err: CommonError });\n const Result_7 = IDL.Variant({ ok: IDL.Nat, err: CommonError__1 });\n const Extension = IDL.Text;\n const HoldersRequest = IDL.Record({\n offset: IDL.Opt(IDL.Nat),\n limit: IDL.Opt(IDL.Nat)\n });\n const Holder = IDL.Record({\n balance: IDL.Nat,\n account: AccountIdentifier\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(Holder),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const Result_6 = IDL.Variant({ ok: Page_1, err: CommonError });\n const Result_5 = IDL.Variant({ ok: IDL.Text, err: CommonError__1 });\n const Metadata = IDL.Variant({\n fungible: IDL.Record({\n decimals: IDL.Nat8,\n ownerAccount: AccountIdentifier,\n metadata: IDL.Opt(IDL.Vec(IDL.Nat8)),\n name: IDL.Text,\n symbol: IDL.Text\n }),\n nonfungible: IDL.Record({ metadata: IDL.Opt(IDL.Vec(IDL.Nat8)) })\n });\n const Result_4 = IDL.Variant({ ok: Metadata, err: CommonError__1 });\n const MintRequest = IDL.Record({ to: User, amount: Balance });\n const TransferResponse = IDL.Variant({\n ok: Balance,\n err: IDL.Variant({\n InsufficientAllowance: IDL.Null,\n CannotNotify: AccountIdentifier,\n InsufficientBalance: IDL.Null,\n InvalidToken: TokenIdentifier,\n Rejected: IDL.Null,\n Unauthorized: AccountIdentifier,\n Other: IDL.Text\n })\n });\n const AccountIdentifier__1 = IDL.Text;\n const User__1 = IDL.Variant({\n principal: IDL.Principal,\n address: AccountIdentifier\n });\n const Result_1 = IDL.Variant({ ok: IDL.Nat, err: CommonError });\n const TransactionRequest = IDL.Record({\n hash: IDL.Opt(IDL.Text),\n user: IDL.Opt(User),\n offset: IDL.Opt(IDL.Nat),\n limit: IDL.Opt(IDL.Nat),\n index: IDL.Opt(IDL.Nat)\n });\n const TransType = IDL.Variant({\n burn: IDL.Null,\n mint: IDL.Null,\n approve: IDL.Null,\n transfer: IDL.Null\n });\n const Transaction = IDL.Record({\n to: AccountIdentifier,\n fee: Balance,\n status: IDL.Text,\n transType: TransType,\n from: AccountIdentifier,\n hash: IDL.Text,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n timestamp: IDL.Int,\n index: IDL.Nat,\n amount: Balance\n });\n const Page = IDL.Record({\n content: IDL.Vec(Transaction),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const Result = IDL.Variant({ ok: Page, err: CommonError });\n const Memo = IDL.Vec(IDL.Nat8);\n const TransferRequest = IDL.Record({\n to: User,\n token: TokenIdentifier,\n notify: IDL.Bool,\n from: User,\n memo: Memo,\n subaccount: IDL.Opt(SubAccount),\n nonce: IDL.Opt(IDL.Nat),\n amount: Balance\n });\n const Token = IDL.Service({\n allowance: IDL.Func([AllowanceRequest], [Result_2], [\"query\"]),\n approve: IDL.Func([ApproveRequest], [Result_3], []),\n balance: IDL.Func([BalanceRequest], [BalanceResponse], [\"query\"]),\n cycleAvailable: IDL.Func([], [Result_7], []),\n cycleBalance: IDL.Func([], [Result_7], [\"query\"]),\n extensions: IDL.Func([], [IDL.Vec(Extension)], [\"query\"]),\n getFee: IDL.Func([], [Result_2], [\"query\"]),\n holders: IDL.Func([HoldersRequest], [Result_6], [\"query\"]),\n logo: IDL.Func([], [Result_5], [\"query\"]),\n metadata: IDL.Func([], [Result_4], [\"query\"]),\n mint: IDL.Func([MintRequest], [TransferResponse], []),\n registry: IDL.Func([], [IDL.Vec(IDL.Tuple(AccountIdentifier__1, Balance__1))], [\"query\"]),\n setFee: IDL.Func([Balance__1], [Result_3], []),\n setFeeTo: IDL.Func([User__1], [Result_3], []),\n setLogo: IDL.Func([IDL.Text], [Result_3], []),\n supply: IDL.Func([], [Result_2], [\"query\"]),\n totalHolders: IDL.Func([], [Result_1], [\"query\"]),\n transactions: IDL.Func([TransactionRequest], [Result], [\"query\"]),\n transfer: IDL.Func([TransferRequest], [TransferResponse], []),\n transferFrom: IDL.Func([TransferRequest], [TransferResponse], [])\n });\n return Token;\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Balance = IDL.Nat;\n const AccountIdentifier = IDL.Text;\n const User = IDL.Variant({\n principal: IDL.Principal,\n address: AccountIdentifier\n });\n const SubAccount = IDL.Vec(IDL.Nat8);\n const AllowanceRequest = IDL.Record({\n owner: User,\n subaccount: IDL.Opt(SubAccount),\n spender: IDL.Principal\n });\n const Balance__1 = IDL.Nat;\n const TokenIdentifier = IDL.Text;\n const CommonError__1 = IDL.Variant({\n InsufficientBalance: IDL.Null,\n InvalidToken: TokenIdentifier,\n Unauthorized: AccountIdentifier,\n Other: IDL.Text\n });\n const Result_4 = IDL.Variant({ ok: Balance__1, err: CommonError__1 });\n const ApproveRequest = IDL.Record({\n subaccount: IDL.Opt(SubAccount),\n allowance: Balance,\n spender: IDL.Principal\n });\n const Result_5 = IDL.Variant({ ok: IDL.Bool, err: CommonError__1 });\n const BalanceRequest = IDL.Record({\n token: TokenIdentifier,\n user: User\n });\n const CommonError = IDL.Variant({\n InsufficientBalance: IDL.Null,\n InvalidToken: TokenIdentifier,\n Unauthorized: AccountIdentifier,\n Other: IDL.Text\n });\n const BalanceResponse = IDL.Variant({ ok: Balance, err: CommonError });\n const Result_10 = IDL.Variant({ ok: IDL.Nat, err: CommonError__1 });\n const Extension = IDL.Text;\n const HoldersRequest = IDL.Record({\n offset: IDL.Opt(IDL.Nat),\n limit: IDL.Opt(IDL.Nat)\n });\n const Holder = IDL.Record({\n balance: IDL.Nat,\n account: AccountIdentifier\n });\n const Page_2 = IDL.Record({\n content: IDL.Vec(Holder),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const Result_9 = IDL.Variant({ ok: Page_2, err: CommonError });\n const Result_8 = IDL.Variant({ ok: IDL.Text, err: CommonError__1 });\n const Metadata = IDL.Variant({\n fungible: IDL.Record({\n decimals: IDL.Nat8,\n ownerAccount: AccountIdentifier,\n metadata: IDL.Opt(IDL.Vec(IDL.Nat8)),\n name: IDL.Text,\n symbol: IDL.Text\n }),\n nonfungible: IDL.Record({ metadata: IDL.Opt(IDL.Vec(IDL.Nat8)) })\n });\n const Result_7 = IDL.Variant({ ok: Metadata, err: CommonError__1 });\n const BlockHeight = IDL.Nat64;\n const MintRequest = IDL.Record({ to: User, blockHeight: BlockHeight });\n const Result_6 = IDL.Variant({ ok: IDL.Bool, err: CommonError });\n const AccountIdentifier__1 = IDL.Text;\n const User__1 = IDL.Variant({\n principal: IDL.Principal,\n address: AccountIdentifier\n });\n const Result_3 = IDL.Variant({ ok: IDL.Nat, err: CommonError });\n const TransactionRequest = IDL.Record({\n hash: IDL.Opt(IDL.Text),\n user: IDL.Opt(User),\n offset: IDL.Opt(IDL.Nat),\n limit: IDL.Opt(IDL.Nat),\n index: IDL.Opt(IDL.Nat)\n });\n const TransType = IDL.Variant({\n burn: IDL.Null,\n mint: IDL.Null,\n approve: IDL.Null,\n transfer: IDL.Null\n });\n const Transaction = IDL.Record({\n to: AccountIdentifier,\n fee: Balance,\n status: IDL.Text,\n transType: TransType,\n from: AccountIdentifier,\n hash: IDL.Text,\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n timestamp: IDL.Int,\n index: IDL.Nat,\n amount: Balance\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(Transaction),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const Result_2 = IDL.Variant({ ok: Page_1, err: CommonError });\n const Memo = IDL.Vec(IDL.Nat8);\n const TransferRequest = IDL.Record({\n to: User,\n token: TokenIdentifier,\n notify: IDL.Bool,\n from: User,\n memo: Memo,\n subaccount: IDL.Opt(SubAccount),\n nonce: IDL.Opt(IDL.Nat),\n amount: Balance\n });\n const TransferResponse = IDL.Variant({\n ok: Balance,\n err: IDL.Variant({\n InsufficientAllowance: IDL.Null,\n CannotNotify: AccountIdentifier,\n InsufficientBalance: IDL.Null,\n InvalidToken: TokenIdentifier,\n Rejected: IDL.Null,\n Unauthorized: AccountIdentifier,\n Other: IDL.Text\n })\n });\n const WithdrawRequest = IDL.Record({ to: User, amount: Balance });\n const BlockHeight__1 = IDL.Nat64;\n const Result_1 = IDL.Variant({ ok: BlockHeight__1, err: CommonError });\n const WrapRequest = IDL.Record({\n user: IDL.Opt(User),\n offset: IDL.Opt(IDL.Nat),\n limit: IDL.Opt(IDL.Nat),\n index: IDL.Opt(IDL.Nat)\n });\n const Date = IDL.Nat64;\n const WrapType = IDL.Variant({ wrap: IDL.Null, unwrap: IDL.Null });\n const WrapRecord = IDL.Record({\n to: AccountIdentifier,\n date: Date,\n from: AccountIdentifier,\n wrapType: WrapType,\n blockHeight: BlockHeight,\n index: IDL.Nat,\n amount: Balance\n });\n const Page = IDL.Record({\n content: IDL.Vec(WrapRecord),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const Result = IDL.Variant({ ok: Page, err: CommonError });\n const WrapToken = IDL.Service({\n allowance: IDL.Func([AllowanceRequest], [Result_4], [\"query\"]),\n approve: IDL.Func([ApproveRequest], [Result_5], []),\n balance: IDL.Func([BalanceRequest], [BalanceResponse], [\"query\"]),\n cycleAvailable: IDL.Func([], [Result_10], []),\n cycleBalance: IDL.Func([], [Result_10], [\"query\"]),\n extensions: IDL.Func([], [IDL.Vec(Extension)], [\"query\"]),\n getFee: IDL.Func([], [Result_4], [\"query\"]),\n holders: IDL.Func([HoldersRequest], [Result_9], [\"query\"]),\n logo: IDL.Func([], [Result_8], [\"query\"]),\n metadata: IDL.Func([], [Result_7], [\"query\"]),\n mint: IDL.Func([MintRequest], [Result_6], []),\n registry: IDL.Func([], [IDL.Vec(IDL.Tuple(AccountIdentifier__1, Balance__1))], [\"query\"]),\n setFee: IDL.Func([Balance__1], [Result_5], []),\n setFeeTo: IDL.Func([User__1], [Result_5], []),\n setLogo: IDL.Func([IDL.Text], [Result_5], []),\n supply: IDL.Func([], [Result_4], [\"query\"]),\n totalHolders: IDL.Func([], [Result_3], [\"query\"]),\n transactions: IDL.Func([TransactionRequest], [Result_2], [\"query\"]),\n transfer: IDL.Func([TransferRequest], [TransferResponse], []),\n transferFrom: IDL.Func([TransferRequest], [TransferResponse], []),\n withdraw: IDL.Func([WithdrawRequest], [Result_1], []),\n wrappedTx: IDL.Func([WrapRequest], [Result], [])\n });\n return WrapToken;\n};\n","import { actor } from \"../actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { ActorName } from \"../ActorName\";\nimport {\n WrapICP,\n WrapICPInterfaceFactory,\n EXTToken,\n EXTTokenInterfaceFactory,\n} from \"@icpswap/candid\";\n\nexport const ext = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n identity,\n canisterId,\n idlFactory: EXTTokenInterfaceFactory,\n });\n\nexport const wrapICP = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.WICP,\n identity,\n idlFactory: WrapICPInterfaceFactory,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const Account = IDL.Record({\n owner: IDL.Principal,\n subaccount: IDL.Opt(IDL.Vec(IDL.Nat8))\n });\n const UpgradeArgs = IDL.Record({\n maximum_number_of_accounts: IDL.Opt(IDL.Nat64),\n icrc1_minting_account: IDL.Opt(Account)\n });\n const Tokens = IDL.Record({ e8s: IDL.Nat64 });\n const Duration = IDL.Record({ secs: IDL.Nat64, nanos: IDL.Nat32 });\n const ArchiveOptions = IDL.Record({\n num_blocks_to_archive: IDL.Nat64,\n max_transactions_per_response: IDL.Opt(IDL.Nat64),\n trigger_threshold: IDL.Nat64,\n max_message_size_bytes: IDL.Opt(IDL.Nat64),\n cycles_for_archive_creation: IDL.Opt(IDL.Nat64),\n node_max_memory_size_bytes: IDL.Opt(IDL.Nat64),\n controller_id: IDL.Principal\n });\n const InitArgs = IDL.Record({\n send_whitelist: IDL.Vec(IDL.Principal),\n token_symbol: IDL.Opt(IDL.Text),\n transfer_fee: IDL.Opt(Tokens),\n minting_account: IDL.Text,\n transaction_window: IDL.Opt(Duration),\n max_message_size_bytes: IDL.Opt(IDL.Nat64),\n icrc1_minting_account: IDL.Opt(Account),\n archive_options: IDL.Opt(ArchiveOptions),\n initial_values: IDL.Vec(IDL.Tuple(IDL.Text, Tokens)),\n token_name: IDL.Opt(IDL.Text)\n });\n const LedgerCanisterPayload = IDL.Variant({\n Upgrade: IDL.Opt(UpgradeArgs),\n Init: InitArgs\n });\n const BinaryAccountBalanceArgs = IDL.Record({\n account: IDL.Vec(IDL.Nat8)\n });\n const AccountBalanceArgs = IDL.Record({ account: IDL.Text });\n const ArchiveInfo = IDL.Record({ canister_id: IDL.Principal });\n const Archives = IDL.Record({ archives: IDL.Vec(ArchiveInfo) });\n const Decimals = IDL.Record({ decimals: IDL.Nat32 });\n const MetadataValue = IDL.Variant({\n Int: IDL.Int,\n Nat: IDL.Nat,\n Blob: IDL.Vec(IDL.Nat8),\n Text: IDL.Text\n });\n const StandardRecord = IDL.Record({ url: IDL.Text, name: IDL.Text });\n const TransferArg = IDL.Record({\n to: Account,\n fee: IDL.Opt(IDL.Nat),\n memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n from_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(IDL.Nat64),\n amount: IDL.Nat\n });\n const TransferError = IDL.Variant({\n GenericError: IDL.Record({\n message: IDL.Text,\n error_code: IDL.Nat\n }),\n TemporarilyUnavailable: IDL.Null,\n BadBurn: IDL.Record({ min_burn_amount: IDL.Nat }),\n Duplicate: IDL.Record({ duplicate_of: IDL.Nat }),\n BadFee: IDL.Record({ expected_fee: IDL.Nat }),\n CreatedInFuture: IDL.Record({ ledger_time: IDL.Nat64 }),\n TooOld: IDL.Null,\n InsufficientFunds: IDL.Record({ balance: IDL.Nat })\n });\n const Result = IDL.Variant({ Ok: IDL.Nat, Err: TransferError });\n const Name = IDL.Record({ name: IDL.Text });\n const GetBlocksArgs = IDL.Record({\n start: IDL.Nat64,\n length: IDL.Nat64\n });\n const TimeStamp = IDL.Record({ timestamp_nanos: IDL.Nat64 });\n const CandidOperation = IDL.Variant({\n Approve: IDL.Record({\n fee: Tokens,\n from: IDL.Vec(IDL.Nat8),\n allowance_e8s: IDL.Int,\n allowance: Tokens,\n expires_at: IDL.Opt(TimeStamp),\n spender: IDL.Vec(IDL.Nat8)\n }),\n Burn: IDL.Record({ from: IDL.Vec(IDL.Nat8), amount: Tokens }),\n Mint: IDL.Record({ to: IDL.Vec(IDL.Nat8), amount: Tokens }),\n Transfer: IDL.Record({\n to: IDL.Vec(IDL.Nat8),\n fee: Tokens,\n from: IDL.Vec(IDL.Nat8),\n amount: Tokens\n }),\n TransferFrom: IDL.Record({\n to: IDL.Vec(IDL.Nat8),\n fee: Tokens,\n from: IDL.Vec(IDL.Nat8),\n amount: Tokens,\n spender: IDL.Vec(IDL.Nat8)\n })\n });\n const CandidTransaction = IDL.Record({\n memo: IDL.Nat64,\n icrc1_memo: IDL.Opt(IDL.Vec(IDL.Nat8)),\n operation: IDL.Opt(CandidOperation),\n created_at_time: TimeStamp\n });\n const CandidBlock = IDL.Record({\n transaction: CandidTransaction,\n timestamp: TimeStamp,\n parent_hash: IDL.Opt(IDL.Vec(IDL.Nat8))\n });\n const BlockRange = IDL.Record({ blocks: IDL.Vec(CandidBlock) });\n const GetBlocksError = IDL.Variant({\n BadFirstBlockIndex: IDL.Record({\n requested_index: IDL.Nat64,\n first_valid_index: IDL.Nat64\n }),\n Other: IDL.Record({\n error_message: IDL.Text,\n error_code: IDL.Nat64\n })\n });\n const ArchivedBlocksRange = IDL.Record({\n callback: IDL.Func([GetBlocksArgs], [IDL.Variant({ Ok: BlockRange, Err: GetBlocksError })], [\"query\"]),\n start: IDL.Nat64,\n length: IDL.Nat64\n });\n const QueryBlocksResponse = IDL.Record({\n certificate: IDL.Opt(IDL.Vec(IDL.Nat8)),\n blocks: IDL.Vec(CandidBlock),\n chain_length: IDL.Nat64,\n first_block_index: IDL.Nat64,\n archived_blocks: IDL.Vec(ArchivedBlocksRange)\n });\n const ArchivedEncodedBlocksRange = IDL.Record({\n callback: IDL.Func(\n [GetBlocksArgs],\n [\n IDL.Variant({\n Ok: IDL.Vec(IDL.Vec(IDL.Nat8)),\n Err: GetBlocksError\n })\n ],\n [\"query\"]\n ),\n start: IDL.Nat64,\n length: IDL.Nat64\n });\n const QueryEncodedBlocksResponse = IDL.Record({\n certificate: IDL.Opt(IDL.Vec(IDL.Nat8)),\n blocks: IDL.Vec(IDL.Vec(IDL.Nat8)),\n chain_length: IDL.Nat64,\n first_block_index: IDL.Nat64,\n archived_blocks: IDL.Vec(ArchivedEncodedBlocksRange)\n });\n const SendArgs = IDL.Record({\n to: IDL.Text,\n fee: Tokens,\n memo: IDL.Nat64,\n from_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(TimeStamp),\n amount: Tokens\n });\n const Symbol = IDL.Record({ symbol: IDL.Text });\n const TransferArgs = IDL.Record({\n to: IDL.Vec(IDL.Nat8),\n fee: Tokens,\n memo: IDL.Nat64,\n from_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n created_at_time: IDL.Opt(TimeStamp),\n amount: Tokens\n });\n const TransferError_1 = IDL.Variant({\n TxTooOld: IDL.Record({ allowed_window_nanos: IDL.Nat64 }),\n BadFee: IDL.Record({ expected_fee: Tokens }),\n TxDuplicate: IDL.Record({ duplicate_of: IDL.Nat64 }),\n TxCreatedInFuture: IDL.Null,\n InsufficientFunds: IDL.Record({ balance: Tokens })\n });\n const Result_1 = IDL.Variant({ Ok: IDL.Nat64, Err: TransferError_1 });\n const TransferFee = IDL.Record({ transfer_fee: Tokens });\n return IDL.Service({\n account_balance: IDL.Func([BinaryAccountBalanceArgs], [Tokens], [\"query\"]),\n account_balance_dfx: IDL.Func([AccountBalanceArgs], [Tokens], [\"query\"]),\n archives: IDL.Func([], [Archives], [\"query\"]),\n decimals: IDL.Func([], [Decimals], [\"query\"]),\n icrc1_balance_of: IDL.Func([Account], [IDL.Nat], [\"query\"]),\n icrc1_decimals: IDL.Func([], [IDL.Nat8], [\"query\"]),\n icrc1_fee: IDL.Func([], [IDL.Nat], [\"query\"]),\n icrc1_metadata: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Text, MetadataValue))], [\"query\"]),\n icrc1_minting_account: IDL.Func([], [IDL.Opt(Account)], [\"query\"]),\n icrc1_name: IDL.Func([], [IDL.Text], [\"query\"]),\n icrc1_supported_standards: IDL.Func([], [IDL.Vec(StandardRecord)], [\"query\"]),\n icrc1_symbol: IDL.Func([], [IDL.Text], [\"query\"]),\n icrc1_total_supply: IDL.Func([], [IDL.Nat], [\"query\"]),\n icrc1_transfer: IDL.Func([TransferArg], [Result], []),\n name: IDL.Func([], [Name], [\"query\"]),\n query_blocks: IDL.Func([GetBlocksArgs], [QueryBlocksResponse], [\"query\"]),\n query_encoded_blocks: IDL.Func([GetBlocksArgs], [QueryEncodedBlocksResponse], [\"query\"]),\n send_dfx: IDL.Func([SendArgs], [IDL.Nat64], []),\n symbol: IDL.Func([], [Symbol], [\"query\"]),\n transfer: IDL.Func([TransferArgs], [Result_1], []),\n transfer_fee: IDL.Func([IDL.Record({})], [TransferFee], [\"query\"])\n });\n};\n","import { actor } from \"../actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { Ledger, LedgerInterfaceFactory } from \"@icpswap/candid\";\n\nimport { LEDGER_CANISTER_ID, ic_host } from \"@icpswap/constants\";\n\nexport const ledgerService = (identity?: ActorIdentity) =>\n actor.create({\n idlFactory: LedgerInterfaceFactory,\n canisterId: LEDGER_CANISTER_ID,\n identity,\n host: ic_host,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const BoolResult = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const AccountIdentifier = IDL.Text;\n const KVPair = IDL.Record({ k: IDL.Text, v: IDL.Text });\n const CanisterInfo = IDL.Record({\n cid: IDL.Text,\n creator: AccountIdentifier,\n linkMap: IDL.Vec(KVPair),\n ownerName: IDL.Text,\n owner: AccountIdentifier,\n name: IDL.Text,\n createTime: IDL.Int,\n totalSupply: IDL.Nat,\n introduction: IDL.Text,\n mintSupply: IDL.Nat,\n royalties: IDL.Nat,\n image: IDL.Text\n });\n const ResponseResult_5 = IDL.Variant({\n ok: CanisterInfo,\n err: IDL.Text\n });\n const CanisterRequest = IDL.Record({\n linkMap: IDL.Vec(KVPair),\n ownerName: IDL.Text,\n name: IDL.Text,\n introduction: IDL.Text,\n royalties: IDL.Nat,\n image: IDL.Text\n });\n const TextResult = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n const ResponseResult = IDL.Variant({\n ok: IDL.Tuple(IDL.Nat, IDL.Nat, IDL.Text, IDL.Text),\n err: IDL.Text\n });\n const PageResponse = IDL.Record({\n content: IDL.Vec(CanisterInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_2 = IDL.Variant({\n ok: PageResponse,\n err: IDL.Text\n });\n const ResponseResult_4 = IDL.Variant({\n ok: IDL.Tuple(IDL.Nat, IDL.Text, IDL.Text, IDL.Text),\n err: IDL.Text\n });\n const Page = IDL.Record({\n content: IDL.Vec(CanisterInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_3 = IDL.Variant({ ok: Page, err: IDL.Text });\n const ResponseResult_1 = IDL.Variant({\n ok: IDL.Vec(IDL.Text),\n err: IDL.Text\n });\n return IDL.Service({\n add: IDL.Func([IDL.Text, IDL.Nat], [NatResult], []),\n addAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n canisterInfo: IDL.Func([IDL.Text], [ResponseResult_5], [\"query\"]),\n create: IDL.Func([CanisterRequest], [TextResult], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], []),\n delete: IDL.Func([IDL.Text], [BoolResult], []),\n deleteTradeStatCanister: IDL.Func([IDL.Text], [BoolResult], []),\n feeInfo: IDL.Func([], [ResponseResult], [\"query\"]),\n findCanister: IDL.Func([IDL.Nat, IDL.Nat], [ResponseResult_2], [\"query\"]),\n findCanisterConfig: IDL.Func([], [ResponseResult_4], [\"query\"]),\n findTop5Canister: IDL.Func([IDL.Nat, IDL.Nat], [ResponseResult_3], [\"query\"]),\n findUserCanister: IDL.Func([IDL.Text, IDL.Nat, IDL.Nat], [ResponseResult_2], [\"query\"]),\n getAdminList: IDL.Func([], [ResponseResult_1], [\"query\"]),\n initLogo: IDL.Func([], [BoolResult], []),\n insert: IDL.Func([CanisterInfo], [NatResult], []),\n removeAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n setCanisterConfig: IDL.Func(\n [IDL.Nat, IDL.Opt(IDL.Text), IDL.Opt(IDL.Text), IDL.Opt(IDL.Text), IDL.Nat32],\n [BoolResult],\n []\n ),\n setFeeInfo: IDL.Func([IDL.Nat, IDL.Nat, IDL.Text, IDL.Text], [ResponseResult], []),\n setLogo: IDL.Func([IDL.Text, IDL.Text], [BoolResult], [])\n });\n};\n","export const idlFactory = ({ IDL }) => {\n const TokenIdentifier = IDL.Text;\n const AccountIdentifier = IDL.Text;\n const User = IDL.Variant({\n 'principal' : IDL.Principal,\n 'address' : AccountIdentifier,\n });\n const AllowanceRequest = IDL.Record({\n 'token' : TokenIdentifier,\n 'owner' : User,\n 'spender' : IDL.Principal,\n });\n const Balance__1 = IDL.Nat;\n const CommonError = IDL.Variant({\n 'InsufficientBalance' : IDL.Null,\n 'InvalidToken' : TokenIdentifier,\n 'Unauthorized' : AccountIdentifier,\n 'Other' : IDL.Text,\n });\n const Result_1 = IDL.Variant({ 'ok' : Balance__1, 'err' : CommonError });\n const SubAccount = IDL.Vec(IDL.Nat8);\n const Balance = IDL.Nat;\n const ApproveRequest = IDL.Record({\n 'token' : TokenIdentifier,\n 'subaccount' : IDL.Opt(SubAccount),\n 'allowance' : Balance,\n 'spender' : IDL.Principal,\n });\n const ApproveAllRequest = IDL.Record({\n 'approved' : IDL.Bool,\n 'spender' : User,\n });\n const BoolResult = IDL.Variant({ 'ok' : IDL.Bool, 'err' : IDL.Text });\n const BalanceRequest = IDL.Record({\n 'token' : TokenIdentifier,\n 'user' : User,\n });\n const CommonError__1 = IDL.Variant({\n 'InsufficientBalance' : IDL.Null,\n 'InvalidToken' : TokenIdentifier,\n 'Unauthorized' : AccountIdentifier,\n 'Other' : IDL.Text,\n });\n const BalanceResponse = IDL.Variant({\n 'ok' : Balance,\n 'err' : CommonError__1,\n });\n const TokenIdentifier__1 = IDL.Text;\n const AccountIdentifier__1 = IDL.Text;\n const Result_4 = IDL.Variant({\n 'ok' : AccountIdentifier__1,\n 'err' : CommonError,\n });\n const AccountIdentifier__2 = IDL.Text;\n const KVPair__1 = IDL.Record({ 'k' : IDL.Text, 'v' : IDL.Text });\n const CanisterInfo = IDL.Record({\n 'cid' : IDL.Text,\n 'creator' : AccountIdentifier__2,\n 'linkMap' : IDL.Vec(KVPair__1),\n 'ownerName' : IDL.Text,\n 'owner' : AccountIdentifier__2,\n 'name' : IDL.Text,\n 'createTime' : IDL.Int,\n 'totalSupply' : IDL.Nat,\n 'introduction' : IDL.Text,\n 'mintSupply' : IDL.Nat,\n 'royalties' : IDL.Nat,\n 'image' : IDL.Text,\n });\n const ResponseResult_6 = IDL.Variant({\n 'ok' : CanisterInfo,\n 'err' : IDL.Text,\n });\n const TokenIndex = IDL.Nat32;\n const TextResult = IDL.Variant({ 'ok' : IDL.Text, 'err' : IDL.Text });\n const Chunk = IDL.Record({\n 'content' : IDL.Vec(IDL.Nat8),\n 'batch_id' : IDL.Nat,\n });\n const NatResult = IDL.Variant({ 'ok' : IDL.Nat, 'err' : IDL.Text });\n const Extension = IDL.Text;\n const User__1 = IDL.Variant({\n 'principal' : IDL.Principal,\n 'address' : AccountIdentifier,\n });\n const TokenIndex__1 = IDL.Nat32;\n const KVPair = IDL.Record({ 'k' : IDL.Text, 'v' : IDL.Text });\n const IcsMetadata = IDL.Record({\n 'cId' : IDL.Text,\n 'tokenId' : TokenIndex__1,\n 'owner' : AccountIdentifier,\n 'metadata' : IDL.Opt(IDL.Vec(IDL.Nat8)),\n 'link' : IDL.Text,\n 'name' : IDL.Text,\n 'minter' : AccountIdentifier,\n 'filePath' : IDL.Text,\n 'fileType' : IDL.Text,\n 'mintTime' : IDL.Int,\n 'introduction' : IDL.Text,\n 'attributes' : IDL.Vec(KVPair),\n 'royalties' : IDL.Nat,\n 'nftType' : IDL.Text,\n 'artistName' : IDL.Text,\n });\n const Page_1 = IDL.Record({\n 'content' : IDL.Vec(IcsMetadata),\n 'offset' : IDL.Nat,\n 'limit' : IDL.Nat,\n 'totalElements' : IDL.Nat,\n });\n const ResponseResult_5 = IDL.Variant({ 'ok' : Page_1, 'err' : IDL.Text });\n const Remark = IDL.Text;\n const Memo = IDL.Vec(IDL.Nat8);\n const TransType = IDL.Variant({\n 'burn' : IDL.Null,\n 'mint' : IDL.Null,\n 'approve' : IDL.Null,\n 'transfer' : IDL.Null,\n });\n const TransferRecord = IDL.Record({\n 'to' : AccountIdentifier,\n 'remark' : Remark,\n 'tokenId' : TokenIndex__1,\n 'from' : AccountIdentifier,\n 'hash' : IDL.Text,\n 'memo' : IDL.Opt(Memo),\n 'time' : IDL.Int,\n 'tokenName' : IDL.Text,\n 'txType' : TransType,\n 'caller' : AccountIdentifier,\n 'price' : Balance,\n 'amount' : Balance,\n });\n const Page = IDL.Record({\n 'content' : IDL.Vec(TransferRecord),\n 'offset' : IDL.Nat,\n 'limit' : IDL.Nat,\n 'totalElements' : IDL.Nat,\n });\n const ResponseResult_4 = IDL.Variant({ 'ok' : Page, 'err' : IDL.Text });\n const ResponseResult_3 = IDL.Variant({\n 'ok' : IDL.Tuple(IDL.Nat, IDL.Nat),\n 'err' : IDL.Text,\n });\n const Metadata = IDL.Variant({\n 'fungible' : IDL.Record({\n 'decimals' : IDL.Nat8,\n 'ownerAccount' : AccountIdentifier,\n 'metadata' : IDL.Opt(IDL.Vec(IDL.Nat8)),\n 'name' : IDL.Text,\n 'symbol' : IDL.Text,\n }),\n 'nonfungible' : IDL.Record({ 'metadata' : IDL.Opt(IDL.Vec(IDL.Nat8)) }),\n });\n const HeaderField = IDL.Tuple(IDL.Text, IDL.Text);\n const HttpRequest = IDL.Record({\n 'url' : IDL.Text,\n 'method' : IDL.Text,\n 'body' : IDL.Vec(IDL.Nat8),\n 'headers' : IDL.Vec(HeaderField),\n });\n const StreamingCallbackToken__1 = IDL.Record({\n 'key' : IDL.Text,\n 'index' : IDL.Nat,\n 'content_encoding' : IDL.Text,\n });\n const StreamingStrategy = IDL.Variant({\n 'Callback' : IDL.Record({\n 'token' : StreamingCallbackToken__1,\n 'callback' : IDL.Func([], [], []),\n }),\n });\n const HttpResponse = IDL.Record({\n 'body' : IDL.Vec(IDL.Nat8),\n 'headers' : IDL.Vec(HeaderField),\n 'streaming_strategy' : IDL.Opt(StreamingStrategy),\n 'status_code' : IDL.Nat16,\n });\n const StreamingCallbackToken = IDL.Record({\n 'key' : IDL.Text,\n 'index' : IDL.Nat,\n 'content_encoding' : IDL.Text,\n });\n const StreamingCallbackHttpResponse = IDL.Record({\n 'token' : IDL.Opt(StreamingCallbackToken__1),\n 'body' : IDL.Vec(IDL.Nat8),\n });\n const ResponseResult_2 = IDL.Variant({\n 'ok' : IcsMetadata,\n 'err' : IDL.Text,\n });\n const ResponseResult = IDL.Variant({ 'ok' : Balance__1, 'err' : IDL.Text });\n const Result_3 = IDL.Variant({ 'ok' : IDL.Text, 'err' : IDL.Text });\n const Result_2 = IDL.Variant({ 'ok' : Metadata, 'err' : CommonError });\n const IcsMintRequest = IDL.Record({\n 'owner' : User,\n 'metadata' : IDL.Opt(IDL.Vec(IDL.Nat8)),\n 'link' : IDL.Text,\n 'name' : IDL.Text,\n 'filePath' : IDL.Text,\n 'fileType' : IDL.Text,\n 'introduction' : IDL.Text,\n 'attributes' : IDL.Vec(KVPair),\n 'royalties' : IDL.Nat,\n 'nftType' : IDL.Text,\n 'image' : IDL.Text,\n 'artistName' : IDL.Text,\n });\n const ResponseResult_1 = IDL.Variant({ 'ok' : TokenIndex, 'err' : IDL.Text });\n const MintRequest = IDL.Record({\n 'to' : User,\n 'metadata' : IDL.Opt(IDL.Vec(IDL.Nat8)),\n });\n const IcsMintRequests = IDL.Record({\n 'owner' : User,\n 'metadata' : IDL.Opt(IDL.Vec(IDL.Nat8)),\n 'link' : IDL.Text,\n 'name' : IDL.Text,\n 'count' : IDL.Nat,\n 'filePath' : IDL.Text,\n 'fileType' : IDL.Text,\n 'introduction' : IDL.Text,\n 'attributes' : IDL.Vec(KVPair),\n 'royalties' : IDL.Nat,\n 'nftType' : IDL.Text,\n 'image' : IDL.Text,\n 'artistName' : IDL.Text,\n });\n const Time = IDL.Int;\n const Listing = IDL.Record({\n 'locked' : IDL.Opt(Time),\n 'seller' : IDL.Principal,\n 'price' : IDL.Nat64,\n });\n const Result = IDL.Variant({\n 'ok' : IDL.Vec(\n IDL.Tuple(TokenIndex, IDL.Opt(Listing), IDL.Opt(IDL.Vec(IDL.Nat8)))\n ),\n 'err' : CommonError,\n });\n const TransferRequest = IDL.Record({\n 'to' : User,\n 'token' : TokenIdentifier,\n 'notify' : IDL.Bool,\n 'from' : User,\n 'memo' : Memo,\n 'subaccount' : IDL.Opt(SubAccount),\n 'nonce' : IDL.Opt(IDL.Nat),\n 'amount' : Balance,\n });\n const TransferResponse = IDL.Variant({\n 'ok' : Balance,\n 'err' : IDL.Variant({\n 'InsufficientAllowance' : IDL.Null,\n 'CannotNotify' : AccountIdentifier,\n 'InsufficientBalance' : IDL.Null,\n 'InvalidToken' : TokenIdentifier,\n 'Rejected' : IDL.Null,\n 'Unauthorized' : AccountIdentifier,\n 'Other' : IDL.Text,\n }),\n });\n const NFTDynamicCanister = IDL.Service({\n 'acceptCycles' : IDL.Func([], [], []),\n 'allowance' : IDL.Func([AllowanceRequest], [Result_1], ['query']),\n 'approve' : IDL.Func([ApproveRequest], [], []),\n 'approveForAll' : IDL.Func([ApproveAllRequest], [BoolResult], []),\n 'availableCycles' : IDL.Func([], [IDL.Nat], ['query']),\n 'balance' : IDL.Func([BalanceRequest], [BalanceResponse], ['query']),\n 'bearer' : IDL.Func([TokenIdentifier__1], [Result_4], ['query']),\n 'canisterInfo' : IDL.Func([], [ResponseResult_6], ['query']),\n 'chunkSize' : IDL.Func([], [IDL.Nat], ['query']),\n 'clearChunk' : IDL.Func([], [IDL.Bool], []),\n 'commit_batch' : IDL.Func(\n [\n IDL.Record({\n 'batch_id' : IDL.Nat,\n 'content_type' : IDL.Text,\n 'chunk_ids' : IDL.Vec(IDL.Nat),\n }),\n ],\n [],\n [],\n ),\n 'create' : IDL.Func([CanisterInfo, TokenIndex, IDL.Text], [TextResult], []),\n 'create_batch' : IDL.Func([], [IDL.Record({ 'batch_id' : IDL.Nat })], []),\n 'create_chunk' : IDL.Func(\n [Chunk],\n [IDL.Record({ 'chunk_id' : IDL.Nat })],\n [],\n ),\n 'cycleAvailable' : IDL.Func([], [NatResult], []),\n 'cycleBalance' : IDL.Func([], [NatResult], []),\n 'extensions' : IDL.Func([], [IDL.Vec(Extension)], ['query']),\n 'findCanisterId' : IDL.Func([], [TextResult], []),\n 'findTokenList' : IDL.Func(\n [User__1, IDL.Nat, IDL.Nat],\n [ResponseResult_5],\n ['query'],\n ),\n 'findTokenMarket' : IDL.Func(\n [IDL.Vec(IDL.Text), IDL.Nat, IDL.Nat],\n [ResponseResult_5],\n ['query'],\n ),\n 'findTokenTxRecord' : IDL.Func(\n [User__1, IDL.Nat, IDL.Nat],\n [ResponseResult_4],\n ['query'],\n ),\n 'findTxRecord' : IDL.Func(\n [TokenIdentifier, IDL.Nat, IDL.Nat],\n [ResponseResult_4],\n ['query'],\n ),\n 'getAllowances' : IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, IDL.Vec(AccountIdentifier__1)))],\n ['query'],\n ),\n 'getMinter' : IDL.Func([], [IDL.Principal], ['query']),\n 'getNftStat' : IDL.Func([], [ResponseResult_3], ['query']),\n 'getRegistry' : IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, AccountIdentifier__1))],\n ['query'],\n ),\n 'getTokens' : IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, Metadata))],\n ['query'],\n ),\n 'http_request' : IDL.Func([HttpRequest], [HttpResponse], ['query']),\n 'http_request_streaming_callback' : IDL.Func(\n [StreamingCallbackToken],\n [StreamingCallbackHttpResponse],\n ['query'],\n ),\n 'icsMetadata' : IDL.Func([TokenIndex], [ResponseResult_2], ['query']),\n 'isApproveForAll' : IDL.Func(\n [AccountIdentifier__1, AccountIdentifier__1],\n [BoolResult],\n ['query'],\n ),\n 'isApproveForToken' : IDL.Func(\n [TokenIndex, AccountIdentifier__1, AccountIdentifier__1],\n [ResponseResult],\n ['query'],\n ),\n 'maxFileSize' : IDL.Func([IDL.Nat], [Result_3], []),\n 'metadata' : IDL.Func([TokenIdentifier__1], [Result_2], ['query']),\n 'mint' : IDL.Func([IcsMintRequest], [ResponseResult_1], []),\n 'mintNFT' : IDL.Func([MintRequest], [TokenIndex], []),\n 'mint_batch' : IDL.Func([IcsMintRequests], [ResponseResult_1], []),\n 'ownerNFTCount' : IDL.Func([User__1], [ResponseResult], ['query']),\n 'removeAllApproval' : IDL.Func([ApproveAllRequest], [BoolResult], []),\n 'removeApproval' : IDL.Func([ApproveRequest], [BoolResult], []),\n 'setCanisterId' : IDL.Func([IDL.Opt(IDL.Text)], [BoolResult], []),\n 'setLogo' : IDL.Func([IDL.Text], [BoolResult], []),\n 'setMinter' : IDL.Func([IDL.Principal], [], []),\n 'spenderRemoveApproval' : IDL.Func([TokenIdentifier], [BoolResult], []),\n 'supply' : IDL.Func([TokenIdentifier__1], [Result_1], ['query']),\n 'tokens_ext' : IDL.Func([AccountIdentifier__1], [Result], ['query']),\n 'transfer' : IDL.Func([TransferRequest], [TransferResponse], []),\n });\n return NFTDynamicCanister;\n};\nexport const init = ({ IDL }) => { return [IDL.Principal]; };\n","export const idlFactory = ({ IDL }: any) => {\n const BoolResult = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const TokenIndex__1 = IDL.Nat32;\n const BuyRequest = IDL.Record({\n nftCid: IDL.Text,\n tokenIndex: TokenIndex__1\n });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const ResponseResult_6 = IDL.Variant({\n ok: IDL.Tuple(IDL.Text, IDL.Text),\n err: IDL.Text\n });\n const Time = IDL.Int;\n const AccountIdentifier = IDL.Text;\n const OrderInfo = IDL.Record({\n cid: IDL.Text,\n nftCid: IDL.Text,\n tokenIndex: TokenIndex__1,\n hash: IDL.Text,\n link: IDL.Text,\n name: IDL.Text,\n time: Time,\n minter: AccountIdentifier,\n filePath: IDL.Text,\n fileType: IDL.Text,\n seller: AccountIdentifier,\n introduction: IDL.Text,\n royalties: IDL.Nat,\n artistName: IDL.Text,\n price: IDL.Nat\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(OrderInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_5 = IDL.Variant({ ok: Page_1, err: IDL.Text });\n const AccountIdentifier__1 = IDL.Text;\n const TokenIndex = IDL.Nat32;\n const TxInfoResponse = IDL.Record({\n cid: IDL.Text,\n nftCid: IDL.Text,\n txFee: IDL.Nat,\n tokenIndex: TokenIndex__1,\n hash: IDL.Text,\n name: IDL.Text,\n time: Time,\n minter: AccountIdentifier,\n settleAmountStatus: IDL.Text,\n royaltiesFeeStatus: IDL.Text,\n royaltiesFee: IDL.Nat,\n filePath: IDL.Text,\n fileType: IDL.Text,\n txFeeStatus: IDL.Text,\n seller: AccountIdentifier,\n txStatus: IDL.Text,\n settleAmount: IDL.Nat,\n buyer: AccountIdentifier,\n price: IDL.Nat\n });\n const Page = IDL.Record({\n content: IDL.Vec(TxInfoResponse),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_4 = IDL.Variant({ ok: Page, err: IDL.Text });\n const ResponseResult_3 = IDL.Variant({\n ok: IDL.Vec(IDL.Text),\n err: IDL.Text\n });\n const ResponseResult_2 = IDL.Variant({ ok: OrderInfo, err: IDL.Text });\n const StatResponse = IDL.Record({\n totalVolume: IDL.Nat,\n listSize: IDL.Nat,\n totalTurnover: IDL.Nat,\n avgPrice: IDL.Nat,\n maxPrice: IDL.Nat,\n minPrice: IDL.Nat\n });\n const ResponseResult_1 = IDL.Variant({\n ok: StatResponse,\n err: IDL.Text\n });\n const ResponseResult = IDL.Variant({\n ok: IDL.Tuple(IDL.Bool, IDL.Nat, IDL.Nat, IDL.Nat),\n err: IDL.Text\n });\n const RevokeRequest = IDL.Record({\n nftCid: IDL.Text,\n tokenIndex: TokenIndex__1\n });\n const SaleRequest = IDL.Record({\n nftCid: IDL.Text,\n tokenIndex: TokenIndex__1,\n price: IDL.Nat\n });\n return IDL.Service({\n addAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n buy: IDL.Func([BuyRequest], [BoolResult], []),\n cancel: IDL.Func([IDL.Nat32, IDL.Text], [BoolResult], []),\n cancelOrder: IDL.Func([IDL.Nat32], [BoolResult], []),\n checkPayment: IDL.Func([IDL.Text], [BoolResult], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], []),\n findCanisterId: IDL.Func([], [ResponseResult_6], []),\n findCanisterRecommend: IDL.Func([IDL.Text, IDL.Nat, IDL.Nat], [ResponseResult_5], [\"query\"]),\n findOrderPage: IDL.Func(\n [\n IDL.Opt(IDL.Text),\n IDL.Opt(IDL.Text),\n IDL.Opt(AccountIdentifier__1),\n IDL.Opt(TokenIndex),\n IDL.Nat,\n IDL.Nat,\n IDL.Text,\n IDL.Bool\n ],\n [ResponseResult_5],\n [\"query\"]\n ),\n findRecommend: IDL.Func([IDL.Nat, IDL.Nat], [ResponseResult_5], [\"query\"]),\n findTokenOrderPage: IDL.Func(\n [TokenIndex, IDL.Text, IDL.Nat, IDL.Nat, IDL.Text, IDL.Bool],\n [ResponseResult_5],\n [\"query\"]\n ),\n findTokenTxPage: IDL.Func(\n [TokenIndex, IDL.Text, IDL.Nat, IDL.Nat, IDL.Text, IDL.Bool],\n [ResponseResult_4],\n [\"query\"]\n ),\n findTxPage: IDL.Func(\n [IDL.Opt(IDL.Text), IDL.Opt(IDL.Text), IDL.Opt(TokenIndex), IDL.Nat, IDL.Nat, IDL.Text, IDL.Bool],\n [ResponseResult_4],\n [\"query\"]\n ),\n findUserTxPage: IDL.Func(\n [AccountIdentifier__1, IDL.Opt(IDL.Text), IDL.Opt(IDL.Text), IDL.Nat, IDL.Nat, IDL.Text, IDL.Bool],\n [ResponseResult_4],\n [\"query\"]\n ),\n getAddress: IDL.Func([], [IDL.Text], [\"query\"]),\n getAdminList: IDL.Func([], [ResponseResult_3], [\"query\"]),\n getOrder: IDL.Func([IDL.Text, TokenIndex], [ResponseResult_2], [\"query\"]),\n getStat: IDL.Func([], [ResponseResult_1], [\"query\"]),\n getTradeState: IDL.Func([], [ResponseResult], [\"query\"]),\n removeAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n removeList: IDL.Func([], [BoolResult], []),\n revoke: IDL.Func([RevokeRequest], [BoolResult], []),\n sale: IDL.Func([SaleRequest], [BoolResult], []),\n setCanisterId: IDL.Func([IDL.Opt(IDL.Text), IDL.Opt(IDL.Text), IDL.Opt(IDL.Text)], [BoolResult], []),\n setState: IDL.Func([IDL.Text, IDL.Text, IDL.Text], [BoolResult], []),\n setTradeState: IDL.Func([IDL.Bool], [BoolResult], []),\n unlock: IDL.Func([IDL.Text, TokenIndex], [BoolResult], [])\n });\n};\n","export const idlFactory = ({ IDL }) => {\n const BoolResult = IDL.Variant({ 'ok' : IDL.Bool, 'err' : IDL.Text });\n const NatResult = IDL.Variant({ 'ok' : IDL.Nat, 'err' : IDL.Text });\n const TradeStatResp = IDL.Record({\n 'cid' : IDL.Text,\n 'totalVolume' : IDL.Nat,\n 'listSize' : IDL.Nat,\n 'name' : IDL.Text,\n 'totalTurnover' : IDL.Nat,\n 'floorPrice' : IDL.Nat,\n 'avgPrice' : IDL.Nat,\n 'maxPrice' : IDL.Nat,\n 'minPrice' : IDL.Nat,\n 'transactionCount' : IDL.Nat,\n });\n const Page = IDL.Record({\n 'content' : IDL.Vec(TradeStatResp),\n 'offset' : IDL.Nat,\n 'limit' : IDL.Nat,\n 'totalElements' : IDL.Nat,\n });\n const ResponseResult_3 = IDL.Variant({ 'ok' : Page, 'err' : IDL.Text });\n const ResponseResult_2 = IDL.Variant({\n 'ok' : IDL.Vec(IDL.Text),\n 'err' : IDL.Text,\n });\n const ResponseResult_1 = IDL.Variant({\n 'ok' : TradeStatResp,\n 'err' : IDL.Text,\n });\n const StatResponse = IDL.Record({\n 'totalVolume' : IDL.Nat,\n 'listSize' : IDL.Nat,\n 'totalTurnover' : IDL.Nat,\n 'avgPrice' : IDL.Nat,\n 'maxPrice' : IDL.Nat,\n 'minPrice' : IDL.Nat,\n });\n const ResponseResult = IDL.Variant({ 'ok' : StatResponse, 'err' : IDL.Text });\n return IDL.Service({\n 'addAdmin' : IDL.Func([IDL.Text], [BoolResult], []),\n 'cycleAvailable' : IDL.Func([], [NatResult], []),\n 'cycleBalance' : IDL.Func([], [NatResult], []),\n 'findCanisterStat' : IDL.Func(\n [IDL.Nat, IDL.Nat],\n [ResponseResult_3],\n ['query'],\n ),\n 'findNameStat' : IDL.Func(\n [IDL.Text, IDL.Nat, IDL.Nat],\n [ResponseResult_3],\n ['query'],\n ),\n 'getAdminList' : IDL.Func([], [ResponseResult_2], ['query']),\n 'getCanisterStat' : IDL.Func([IDL.Text], [ResponseResult_1], ['query']),\n 'getNameStat' : IDL.Func([IDL.Text], [ResponseResult_1], ['query']),\n 'getStat' : IDL.Func([], [ResponseResult], ['query']),\n 'init' : IDL.Func([], [NatResult], []),\n 'listStat' : IDL.Func(\n [IDL.Text, IDL.Text, IDL.Nat, IDL.Bool],\n [BoolResult],\n [],\n ),\n 'removeAdmin' : IDL.Func([IDL.Text], [BoolResult], []),\n 'setCanisterId' : IDL.Func(\n [IDL.Opt(IDL.Text), IDL.Opt(IDL.Text), IDL.Opt(IDL.Text)],\n [BoolResult],\n [],\n ),\n 'tradeStat' : IDL.Func(\n [IDL.Nat, IDL.Nat, IDL.Text, IDL.Text],\n [BoolResult],\n [],\n ),\n });\n};\nexport const init = ({ IDL }) => { return []; };\n","export const idlFactory = ({ IDL }: any) => {\n const AssetHandle = IDL.Text;\n const AccountIdentifier__1 = IDL.Text;\n const TokenIndex = IDL.Nat32;\n const SubAccount__1 = IDL.Vec(IDL.Nat8);\n const TokenIdentifier = IDL.Text;\n const AccountIdentifier = IDL.Text;\n const User = IDL.Variant({\n principal: IDL.Principal,\n address: AccountIdentifier,\n });\n const BalanceRequest = IDL.Record({\n token: TokenIdentifier,\n user: User,\n });\n const Balance = IDL.Nat;\n const CommonError__1 = IDL.Variant({\n InvalidToken: TokenIdentifier,\n Other: IDL.Text,\n });\n const BalanceResponse = IDL.Variant({\n ok: Balance,\n err: CommonError__1,\n });\n const TokenIdentifier__1 = IDL.Text;\n const CommonError = IDL.Variant({\n InvalidToken: TokenIdentifier,\n Other: IDL.Text,\n });\n const Result_7 = IDL.Variant({\n ok: AccountIdentifier__1,\n err: CommonError,\n });\n const Time = IDL.Int;\n const Listing = IDL.Record({\n locked: IDL.Opt(Time),\n seller: IDL.Principal,\n price: IDL.Nat64,\n });\n const Result_10 = IDL.Variant({\n ok: IDL.Tuple(AccountIdentifier__1, IDL.Opt(Listing)),\n err: CommonError,\n });\n const AssetId = IDL.Nat32;\n const ChunkId = IDL.Nat32;\n const AssetType = IDL.Variant({\n other: IDL.Text,\n canister: IDL.Record({ id: AssetId, canister: IDL.Text }),\n direct: IDL.Vec(ChunkId),\n });\n const Extension = IDL.Text;\n const ListRequest = IDL.Record({\n token: TokenIdentifier__1,\n from_subaccount: IDL.Opt(SubAccount__1),\n price: IDL.Opt(IDL.Nat64),\n });\n const Result_3 = IDL.Variant({ ok: IDL.Null, err: CommonError });\n const MetadataValue = IDL.Tuple(\n IDL.Text,\n IDL.Variant({\n nat: IDL.Nat,\n blob: IDL.Vec(IDL.Nat8),\n nat8: IDL.Nat8,\n text: IDL.Text,\n })\n );\n const MetadataContainer = IDL.Variant({\n blob: IDL.Vec(IDL.Nat8),\n data: IDL.Vec(MetadataValue),\n json: IDL.Text,\n });\n const Metadata = IDL.Variant({\n fungible: IDL.Record({\n decimals: IDL.Nat8,\n metadata: IDL.Opt(MetadataContainer),\n name: IDL.Text,\n symbol: IDL.Text,\n }),\n nonfungible: IDL.Record({\n thumbnail: IDL.Text,\n asset: IDL.Text,\n metadata: IDL.Opt(MetadataContainer),\n name: IDL.Text,\n }),\n });\n const Result_9 = IDL.Variant({\n ok: IDL.Tuple(AccountIdentifier__1, IDL.Nat64),\n err: CommonError,\n });\n const Transaction = IDL.Record({\n token: TokenIndex,\n time: Time,\n seller: AccountIdentifier__1,\n buyer: AccountIdentifier__1,\n price: IDL.Nat64,\n });\n const Result_8 = IDL.Variant({ ok: Metadata, err: CommonError });\n const PaymentType = IDL.Variant({\n nft: TokenIndex,\n nfts: IDL.Vec(TokenIndex),\n sale: IDL.Nat64,\n });\n const Payment = IDL.Record({\n expires: Time,\n subaccount: SubAccount__1,\n payer: AccountIdentifier__1,\n amount: IDL.Nat64,\n purchase: PaymentType,\n });\n const SalePricingGroup = IDL.Record({\n end: Time,\n participants: IDL.Vec(AccountIdentifier__1),\n name: IDL.Text,\n limit: IDL.Tuple(IDL.Nat64, IDL.Nat64),\n pricing: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Nat64)),\n start: Time,\n });\n const SaleRemaining = IDL.Variant({\n retain: IDL.Null,\n burn: IDL.Null,\n send: AccountIdentifier__1,\n });\n const Sale = IDL.Record({\n end: Time,\n groups: IDL.Vec(SalePricingGroup),\n start: Time,\n quantity: IDL.Nat,\n remaining: SaleRemaining,\n });\n const Result_5 = IDL.Variant({\n ok: IDL.Tuple(AccountIdentifier__1, IDL.Nat64),\n err: IDL.Text,\n });\n const SaleDetailGroup = IDL.Record({\n id: IDL.Nat,\n end: Time,\n name: IDL.Text,\n available: IDL.Bool,\n pricing: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Nat64)),\n start: Time,\n });\n const SaleDetails = IDL.Record({\n end: Time,\n groups: IDL.Vec(SaleDetailGroup),\n start: Time,\n quantity: IDL.Nat,\n remaining: IDL.Nat,\n });\n const Result_4 = IDL.Variant({ ok: IDL.Null, err: IDL.Text });\n const SaleTransaction = IDL.Record({\n time: Time,\n seller: IDL.Principal,\n tokens: IDL.Vec(TokenIndex),\n buyer: AccountIdentifier__1,\n price: IDL.Nat64,\n });\n const Memo = IDL.Vec(IDL.Nat8);\n const SubAccount = IDL.Vec(IDL.Nat8);\n const TransferRequest = IDL.Record({\n to: User,\n token: TokenIdentifier,\n notify: IDL.Bool,\n from: User,\n memo: Memo,\n subaccount: IDL.Opt(SubAccount),\n amount: Balance,\n });\n const TransferResponse = IDL.Variant({\n ok: Balance,\n err: IDL.Variant({\n CannotNotify: AccountIdentifier,\n InsufficientBalance: IDL.Null,\n InvalidToken: TokenIdentifier,\n Rejected: IDL.Null,\n Unauthorized: AccountIdentifier,\n Other: IDL.Text,\n }),\n });\n const Balance__1 = IDL.Nat;\n const Result_2 = IDL.Variant({ ok: Balance__1, err: CommonError });\n const MetadataLegacy = IDL.Variant({\n fungible: IDL.Record({\n decimals: IDL.Nat8,\n metadata: IDL.Opt(IDL.Vec(IDL.Nat8)),\n name: IDL.Text,\n symbol: IDL.Text,\n }),\n nonfungible: IDL.Record({ metadata: IDL.Opt(IDL.Vec(IDL.Nat8)) }),\n });\n const HeaderField = IDL.Tuple(IDL.Text, IDL.Text);\n const HttpRequest = IDL.Record({\n url: IDL.Text,\n method: IDL.Text,\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(HeaderField),\n });\n const HttpStreamingCallbackToken = IDL.Record({\n key: IDL.Text,\n sha256: IDL.Opt(IDL.Vec(IDL.Nat8)),\n index: IDL.Nat,\n content_encoding: IDL.Text,\n });\n const HttpStreamingCallbackResponse = IDL.Record({\n token: IDL.Opt(HttpStreamingCallbackToken),\n body: IDL.Vec(IDL.Nat8),\n });\n const HttpStreamingStrategy = IDL.Variant({\n Callback: IDL.Record({\n token: HttpStreamingCallbackToken,\n callback: IDL.Func(\n [HttpStreamingCallbackToken],\n [HttpStreamingCallbackResponse],\n [\"query\"]\n ),\n }),\n });\n const HttpResponse = IDL.Record({\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(HeaderField),\n upgrade: IDL.Bool,\n streaming_strategy: IDL.Opt(HttpStreamingStrategy),\n status_code: IDL.Nat16,\n });\n const Result_6 = IDL.Variant({ ok: MetadataLegacy, err: CommonError });\n const SaleSettings = IDL.Record({\n startTime: Time,\n whitelist: IDL.Bool,\n totalToSell: IDL.Nat,\n sold: IDL.Nat,\n bulkPricing: IDL.Vec(IDL.Tuple(IDL.Nat64, IDL.Nat64)),\n whitelistTime: Time,\n salePrice: IDL.Nat64,\n remaining: IDL.Nat,\n price: IDL.Nat64,\n });\n const Result_1 = IDL.Variant({\n ok: IDL.Vec(TokenIndex),\n err: CommonError,\n });\n const Result = IDL.Variant({\n ok: IDL.Vec(\n IDL.Tuple(TokenIndex, IDL.Opt(Listing), IDL.Opt(IDL.Vec(IDL.Nat8)))\n ),\n err: CommonError,\n });\n return IDL.Service({\n acceptCycles: IDL.Func([], [], []),\n addAsset: IDL.Func(\n [AssetHandle, IDL.Nat32, IDL.Text, IDL.Text, IDL.Text],\n [],\n []\n ),\n addThumbnail: IDL.Func([AssetHandle, IDL.Vec(IDL.Nat8)], [], []),\n adminKillHeartbeat: IDL.Func([], [], []),\n adminRefund: IDL.Func(\n [IDL.Text, AccountIdentifier__1, AccountIdentifier__1],\n [IDL.Text],\n []\n ),\n adminStartHeartbeat: IDL.Func([], [], []),\n allSettlements: IDL.Func(\n [],\n [\n IDL.Vec(\n IDL.Tuple(\n TokenIndex,\n IDL.Record({\n subaccount: SubAccount__1,\n seller: IDL.Principal,\n buyer: AccountIdentifier__1,\n price: IDL.Nat64,\n })\n )\n ),\n ],\n [\"query\"]\n ),\n availableCycles: IDL.Func([], [IDL.Nat], [\"query\"]),\n balance: IDL.Func([BalanceRequest], [BalanceResponse], [\"query\"]),\n bearer: IDL.Func([TokenIdentifier__1], [Result_7], [\"query\"]),\n details: IDL.Func([TokenIdentifier__1], [Result_10], [\"query\"]),\n ext_addAssetCanister: IDL.Func([], [], []),\n ext_admin: IDL.Func([], [IDL.Principal], [\"query\"]),\n ext_assetAdd: IDL.Func(\n [AssetHandle, IDL.Text, IDL.Text, AssetType, IDL.Nat],\n [],\n []\n ),\n ext_assetExists: IDL.Func([AssetHandle], [IDL.Bool], [\"query\"]),\n ext_assetFits: IDL.Func([IDL.Bool, IDL.Nat], [IDL.Bool], [\"query\"]),\n ext_assetStream: IDL.Func(\n [AssetHandle, IDL.Vec(IDL.Nat8), IDL.Bool],\n [IDL.Bool],\n []\n ),\n ext_balance: IDL.Func([BalanceRequest], [BalanceResponse], [\"query\"]),\n ext_bearer: IDL.Func([TokenIdentifier__1], [Result_7], [\"query\"]),\n ext_capInit: IDL.Func([], [], []),\n ext_expired: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(AccountIdentifier__1, SubAccount__1))],\n [\"query\"]\n ),\n ext_extensions: IDL.Func([], [IDL.Vec(Extension)], [\"query\"]),\n ext_marketplaceList: IDL.Func([ListRequest], [Result_3], []),\n ext_marketplaceListings: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, Listing, Metadata))],\n [\"query\"]\n ),\n ext_marketplacePurchase: IDL.Func(\n [TokenIdentifier__1, IDL.Nat64, AccountIdentifier__1],\n [Result_9],\n []\n ),\n ext_marketplaceSettle: IDL.Func([AccountIdentifier__1], [Result_3], []),\n ext_marketplaceStats: IDL.Func(\n [],\n [IDL.Nat64, IDL.Nat64, IDL.Nat64, IDL.Nat64, IDL.Nat, IDL.Nat, IDL.Nat],\n [\"query\"]\n ),\n ext_marketplaceTransactions: IDL.Func(\n [],\n [IDL.Vec(Transaction)],\n [\"query\"]\n ),\n ext_metadata: IDL.Func([TokenIdentifier__1], [Result_8], [\"query\"]),\n ext_mint: IDL.Func(\n [IDL.Vec(IDL.Tuple(AccountIdentifier__1, Metadata))],\n [IDL.Vec(TokenIndex)],\n []\n ),\n ext_payments: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(AccountIdentifier__1, Payment))],\n [\"query\"]\n ),\n ext_removeAdmin: IDL.Func([], [], []),\n ext_saleClose: IDL.Func([], [IDL.Bool], []),\n ext_saleCurrent: IDL.Func([], [IDL.Opt(Sale)], [\"query\"]),\n ext_saleEnd: IDL.Func([], [IDL.Bool], []),\n ext_saleOpen: IDL.Func(\n [IDL.Vec(SalePricingGroup), SaleRemaining, IDL.Vec(AccountIdentifier__1)],\n [IDL.Bool],\n []\n ),\n ext_salePause: IDL.Func([], [IDL.Bool], []),\n ext_salePurchase: IDL.Func(\n [IDL.Nat, IDL.Nat64, IDL.Nat64, AccountIdentifier__1],\n [Result_5],\n []\n ),\n ext_saleResume: IDL.Func([], [IDL.Bool], []),\n ext_saleSettings: IDL.Func(\n [AccountIdentifier__1],\n [IDL.Opt(SaleDetails)],\n [\"query\"]\n ),\n ext_saleSettle: IDL.Func([AccountIdentifier__1], [Result_4], []),\n ext_saleTransactions: IDL.Func([], [IDL.Vec(SaleTransaction)], [\"query\"]),\n ext_saleUpdate: IDL.Func(\n [\n IDL.Opt(IDL.Vec(SalePricingGroup)),\n IDL.Opt(SaleRemaining),\n IDL.Opt(IDL.Vec(AccountIdentifier__1)),\n ],\n [IDL.Bool],\n []\n ),\n ext_setAdmin: IDL.Func([IDL.Principal], [], []),\n ext_setCollectionMetadata: IDL.Func([IDL.Text, IDL.Text], [], []),\n ext_setMarketplaceOpen: IDL.Func([Time], [], []),\n ext_setOwner: IDL.Func([IDL.Principal], [], []),\n ext_setRoyalty: IDL.Func([AccountIdentifier__1, IDL.Nat64], [], []),\n ext_transfer: IDL.Func([TransferRequest], [TransferResponse], []),\n extdata_supply: IDL.Func([TokenIdentifier__1], [Result_2], [\"query\"]),\n extensions: IDL.Func([], [IDL.Vec(Extension)], [\"query\"]),\n failedSales: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(AccountIdentifier__1, SubAccount__1))],\n [\"query\"]\n ),\n getMetadata: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, MetadataLegacy))],\n [\"query\"]\n ),\n getMinter: IDL.Func([], [IDL.Principal], [\"query\"]),\n getRegistry: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, AccountIdentifier__1))],\n [\"query\"]\n ),\n getTokens: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, MetadataLegacy))],\n [\"query\"]\n ),\n heartbeat_assetCanisters: IDL.Func([], [], []),\n heartbeat_capEvents: IDL.Func([], [], []),\n heartbeat_disbursements: IDL.Func([], [], []),\n heartbeat_external: IDL.Func([], [], []),\n heartbeat_isRunning: IDL.Func([], [IDL.Bool], [\"query\"]),\n heartbeat_paymentSettlements: IDL.Func([], [], []),\n heartbeat_pending: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(IDL.Text, IDL.Nat))],\n [\"query\"]\n ),\n heartbeat_start: IDL.Func([], [], []),\n heartbeat_stop: IDL.Func([], [], []),\n http_request: IDL.Func([HttpRequest], [HttpResponse], [\"query\"]),\n http_request_streaming_callback: IDL.Func(\n [HttpStreamingCallbackToken],\n [HttpStreamingCallbackResponse],\n [\"query\"]\n ),\n http_request_update: IDL.Func([HttpRequest], [HttpResponse], []),\n isHeartbeatRunning: IDL.Func([], [IDL.Bool], [\"query\"]),\n list: IDL.Func([ListRequest], [Result_3], []),\n listings: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, Listing, MetadataLegacy))],\n [\"query\"]\n ),\n lock: IDL.Func(\n [TokenIdentifier__1, IDL.Nat64, AccountIdentifier__1, SubAccount__1],\n [Result_7],\n []\n ),\n metadata: IDL.Func([TokenIdentifier__1], [Result_6], [\"query\"]),\n reserve: IDL.Func(\n [IDL.Nat64, IDL.Nat64, AccountIdentifier__1, SubAccount__1],\n [Result_5],\n []\n ),\n retreive: IDL.Func([AccountIdentifier__1], [Result_4], []),\n saleTransactions: IDL.Func([], [IDL.Vec(SaleTransaction)], [\"query\"]),\n salesSettings: IDL.Func([AccountIdentifier__1], [SaleSettings], [\"query\"]),\n setMinter: IDL.Func([IDL.Principal], [], []),\n settle: IDL.Func([TokenIdentifier__1], [Result_3], []),\n settlements: IDL.Func(\n [],\n [IDL.Vec(IDL.Tuple(TokenIndex, AccountIdentifier__1, IDL.Nat64))],\n [\"query\"]\n ),\n stats: IDL.Func(\n [],\n [IDL.Nat64, IDL.Nat64, IDL.Nat64, IDL.Nat64, IDL.Nat, IDL.Nat, IDL.Nat],\n [\"query\"]\n ),\n supply: IDL.Func([TokenIdentifier__1], [Result_2], [\"query\"]),\n tokens: IDL.Func([AccountIdentifier__1], [Result_1], [\"query\"]),\n tokens_ext: IDL.Func([AccountIdentifier__1], [Result], [\"query\"]),\n transactions: IDL.Func([], [IDL.Vec(Transaction)], [\"query\"]),\n transfer: IDL.Func([TransferRequest], [TransferResponse], []),\n });\n};\n","import { actor } from \"../actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { ActorName } from \"../ActorName\";\n\nimport {\n V3TradeCanister,\n V3TradeCanisterInterfaceFactory,\n NFTCanister as NFT_SERVICE,\n NFTCanisterInterfaceFactory,\n V3TradeStat,\n V3TradeStatInterfaceFactory,\n V3NFTCanisterController,\n V3NFTCanisterControllerInterfaceFactory,\n NFTFile,\n NFTFileInterfaceFactory,\n V1NFTCanister,\n V1NFTCanisterInterfaceFactory,\n ExtNFTInterfaceFactory,\n ExtNFTService,\n} from \"@icpswap/candid\";\n\nexport const NFTCanisterController = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.NFTCanisterController,\n identity,\n idlFactory: V3NFTCanisterControllerInterfaceFactory,\n });\n\nexport const NFTCanister = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n canisterId,\n identity,\n actorName: ActorName.NFTCanister,\n idlFactory: NFTCanisterInterfaceFactory,\n });\n\nexport const NFTTradeCanister = (identity?: ActorIdentity) => {\n return actor.create({\n identity,\n actorName: ActorName.NFTTradeCanister,\n idlFactory: V3TradeCanisterInterfaceFactory,\n });\n};\n\nexport const NFTTradeStat = (identity?: ActorIdentity) => {\n return actor.create({\n identity,\n actorName: ActorName.NFTTradeStat,\n idlFactory: V3TradeStatInterfaceFactory,\n });\n};\n\nexport const NFT_V1 = (canisterId: string, identity?: ActorIdentity) => {\n return actor.create({\n identity,\n idlFactory: V1NFTCanisterInterfaceFactory,\n canisterId,\n });\n};\n\nexport const nftFile = (canisterId: string, identity?: ActorIdentity) => {\n return actor.create({\n identity,\n idlFactory: NFTFileInterfaceFactory,\n canisterId,\n });\n};\n\nexport const ext_nft = (canisterId: string, identity?: ActorIdentity) => {\n return actor.create({\n identity,\n idlFactory: ExtNFTInterfaceFactory,\n canisterId,\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const AssetClass = IDL.Variant({\n Cryptocurrency: IDL.Null,\n FiatCurrency: IDL.Null\n });\n const Asset = IDL.Record({ class: AssetClass, symbol: IDL.Text });\n const ExchangeRateError = IDL.Variant({\n AnonymousPrincipalNotAllowed: IDL.Null,\n CryptoQuoteAssetNotFound: IDL.Null,\n FailedToAcceptCycles: IDL.Null,\n ForexBaseAssetNotFound: IDL.Null,\n CryptoBaseAssetNotFound: IDL.Null,\n StablecoinRateTooFewRates: IDL.Null,\n ForexAssetsNotFound: IDL.Null,\n InconsistentRatesReceived: IDL.Null,\n RateLimited: IDL.Null,\n StablecoinRateZeroRate: IDL.Null,\n Other: IDL.Record({ code: IDL.Nat32, description: IDL.Text }),\n ForexInvalidTimestamp: IDL.Null,\n NotEnoughCycles: IDL.Null,\n ForexQuoteAssetNotFound: IDL.Null,\n StablecoinRateNotFound: IDL.Null,\n Pending: IDL.Null\n });\n const Error = IDL.Record({\n message: ExchangeRateError,\n timestamp: IDL.Int\n });\n const ExchangeRate__1 = IDL.Record({\n decimals: IDL.Nat32,\n rate: IDL.Nat64,\n error: IDL.Opt(Error),\n timestamp: IDL.Nat64,\n quote_symbol: IDL.Text,\n quote_class: IDL.Text,\n base_symbol: IDL.Text,\n base_class: IDL.Text\n });\n return IDL.Service({\n add_asset: IDL.Func([Asset, Asset], [], []),\n force_update_rate: IDL.Func([], [], []),\n get_assets: IDL.Func([], [IDL.Vec(IDL.Tuple(Asset, Asset))], [\"query\"]),\n get_exchange_rate: IDL.Func([IDL.Text], [ExchangeRate__1], [\"query\"]),\n get_exchange_rates: IDL.Func([], [IDL.Vec(ExchangeRate__1)], [\"query\"])\n });\n};\n","import { actor } from \"../actor\";\nimport { ExchangeRate, ExchangeRateInterfaceFactory } from \"@icpswap/candid\";\n\nexport const exchangeRate = () =>\n actor.create({\n canisterId: \"2ixw4-taaaa-aaaag-qcpdq-cai\",\n idlFactory: ExchangeRateInterfaceFactory,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const BlockTag = IDL.Variant({\n Safe: IDL.Null,\n Finalized: IDL.Null,\n Latest: IDL.Null,\n });\n const UpgradeArg = IDL.Record({\n next_transaction_nonce: IDL.Opt(IDL.Nat),\n ledger_suite_orchestrator_id: IDL.Opt(IDL.Principal),\n erc20_helper_contract_address: IDL.Opt(IDL.Text),\n last_erc20_scraped_block_number: IDL.Opt(IDL.Nat),\n ethereum_contract_address: IDL.Opt(IDL.Text),\n minimum_withdrawal_amount: IDL.Opt(IDL.Nat),\n ethereum_block_height: IDL.Opt(BlockTag),\n });\n const EthereumNetwork = IDL.Variant({\n Mainnet: IDL.Null,\n Sepolia: IDL.Null,\n });\n const InitArg = IDL.Record({\n ethereum_network: EthereumNetwork,\n last_scraped_block_number: IDL.Nat,\n ecdsa_key_name: IDL.Text,\n next_transaction_nonce: IDL.Nat,\n ledger_id: IDL.Principal,\n ethereum_contract_address: IDL.Opt(IDL.Text),\n minimum_withdrawal_amount: IDL.Nat,\n ethereum_block_height: BlockTag,\n });\n const MinterArg = IDL.Variant({\n UpgradeArg: UpgradeArg,\n InitArg: InitArg,\n });\n const AddCkErc20Token = IDL.Record({\n ckerc20_ledger_id: IDL.Principal,\n chain_id: IDL.Nat,\n address: IDL.Text,\n ckerc20_token_symbol: IDL.Text,\n });\n const Eip1559TransactionPrice = IDL.Record({\n max_priority_fee_per_gas: IDL.Nat,\n max_fee_per_gas: IDL.Nat,\n max_transaction_fee: IDL.Nat,\n timestamp: IDL.Opt(IDL.Nat64),\n gas_limit: IDL.Nat,\n });\n const CanisterStatusType = IDL.Variant({\n stopped: IDL.Null,\n stopping: IDL.Null,\n running: IDL.Null,\n });\n const DefiniteCanisterSettings = IDL.Record({\n freezing_threshold: IDL.Nat,\n controllers: IDL.Vec(IDL.Principal),\n reserved_cycles_limit: IDL.Nat,\n memory_allocation: IDL.Nat,\n compute_allocation: IDL.Nat,\n });\n const QueryStats = IDL.Record({\n response_payload_bytes_total: IDL.Nat,\n num_instructions_total: IDL.Nat,\n num_calls_total: IDL.Nat,\n request_payload_bytes_total: IDL.Nat,\n });\n const CanisterStatusResponse = IDL.Record({\n status: CanisterStatusType,\n memory_size: IDL.Nat,\n cycles: IDL.Nat,\n settings: DefiniteCanisterSettings,\n query_stats: QueryStats,\n idle_cycles_burned_per_day: IDL.Nat,\n module_hash: IDL.Opt(IDL.Vec(IDL.Nat8)),\n reserved_cycles: IDL.Nat,\n });\n const EventSource = IDL.Record({\n transaction_hash: IDL.Text,\n log_index: IDL.Nat,\n });\n const UnsignedTransaction = IDL.Record({\n destination: IDL.Text,\n value: IDL.Nat,\n max_priority_fee_per_gas: IDL.Nat,\n data: IDL.Vec(IDL.Nat8),\n max_fee_per_gas: IDL.Nat,\n chain_id: IDL.Nat,\n nonce: IDL.Nat,\n gas_limit: IDL.Nat,\n access_list: IDL.Vec(\n IDL.Record({\n storage_keys: IDL.Vec(IDL.Vec(IDL.Nat8)),\n address: IDL.Text,\n }),\n ),\n });\n const ReimbursementIndex = IDL.Variant({\n CkErc20: IDL.Record({\n cketh_ledger_burn_index: IDL.Nat,\n ledger_id: IDL.Principal,\n ckerc20_ledger_burn_index: IDL.Nat,\n }),\n CkEth: IDL.Record({ ledger_burn_index: IDL.Nat }),\n });\n const TransactionReceipt = IDL.Record({\n effective_gas_price: IDL.Nat,\n status: IDL.Variant({ Success: IDL.Null, Failure: IDL.Null }),\n transaction_hash: IDL.Text,\n block_hash: IDL.Text,\n block_number: IDL.Nat,\n gas_used: IDL.Nat,\n });\n const Event = IDL.Record({\n timestamp: IDL.Nat64,\n payload: IDL.Variant({\n SkippedBlock: IDL.Record({ block_number: IDL.Nat }),\n AcceptedErc20Deposit: IDL.Record({\n principal: IDL.Principal,\n transaction_hash: IDL.Text,\n value: IDL.Nat,\n log_index: IDL.Nat,\n block_number: IDL.Nat,\n erc20_contract_address: IDL.Text,\n from_address: IDL.Text,\n }),\n SignedTransaction: IDL.Record({\n raw_transaction: IDL.Text,\n withdrawal_id: IDL.Nat,\n }),\n Upgrade: UpgradeArg,\n Init: InitArg,\n AddedCkErc20Token: IDL.Record({\n ckerc20_ledger_id: IDL.Principal,\n chain_id: IDL.Nat,\n address: IDL.Text,\n ckerc20_token_symbol: IDL.Text,\n }),\n QuarantinedDeposit: IDL.Record({ event_source: EventSource }),\n SyncedToBlock: IDL.Record({ block_number: IDL.Nat }),\n AcceptedDeposit: IDL.Record({\n principal: IDL.Principal,\n transaction_hash: IDL.Text,\n value: IDL.Nat,\n log_index: IDL.Nat,\n block_number: IDL.Nat,\n from_address: IDL.Text,\n }),\n ReplacedTransaction: IDL.Record({\n withdrawal_id: IDL.Nat,\n transaction: UnsignedTransaction,\n }),\n QuarantinedReimbursement: IDL.Record({ index: ReimbursementIndex }),\n MintedCkEth: IDL.Record({\n event_source: EventSource,\n mint_block_index: IDL.Nat,\n }),\n ReimbursedEthWithdrawal: IDL.Record({\n transaction_hash: IDL.Opt(IDL.Text),\n withdrawal_id: IDL.Nat,\n reimbursed_amount: IDL.Nat,\n reimbursed_in_block: IDL.Nat,\n }),\n FailedErc20WithdrawalRequest: IDL.Record({\n to: IDL.Principal,\n withdrawal_id: IDL.Nat,\n reimbursed_amount: IDL.Nat,\n to_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n }),\n ReimbursedErc20Withdrawal: IDL.Record({\n burn_in_block: IDL.Nat,\n transaction_hash: IDL.Opt(IDL.Text),\n withdrawal_id: IDL.Nat,\n reimbursed_amount: IDL.Nat,\n ledger_id: IDL.Principal,\n reimbursed_in_block: IDL.Nat,\n }),\n MintedCkErc20: IDL.Record({\n event_source: EventSource,\n erc20_contract_address: IDL.Text,\n mint_block_index: IDL.Nat,\n ckerc20_token_symbol: IDL.Text,\n }),\n CreatedTransaction: IDL.Record({\n withdrawal_id: IDL.Nat,\n transaction: UnsignedTransaction,\n }),\n InvalidDeposit: IDL.Record({\n event_source: EventSource,\n reason: IDL.Text,\n }),\n SyncedErc20ToBlock: IDL.Record({ block_number: IDL.Nat }),\n AcceptedErc20WithdrawalRequest: IDL.Record({\n cketh_ledger_burn_index: IDL.Nat,\n destination: IDL.Text,\n ckerc20_ledger_id: IDL.Principal,\n withdrawal_amount: IDL.Nat,\n from: IDL.Principal,\n created_at: IDL.Nat64,\n from_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n erc20_contract_address: IDL.Text,\n ckerc20_ledger_burn_index: IDL.Nat,\n max_transaction_fee: IDL.Nat,\n }),\n AcceptedEthWithdrawalRequest: IDL.Record({\n ledger_burn_index: IDL.Nat,\n destination: IDL.Text,\n withdrawal_amount: IDL.Nat,\n from: IDL.Principal,\n created_at: IDL.Opt(IDL.Nat64),\n from_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n }),\n FinalizedTransaction: IDL.Record({\n withdrawal_id: IDL.Nat,\n transaction_receipt: TransactionReceipt,\n }),\n }),\n });\n const CkErc20Token = IDL.Record({\n erc20_contract_address: IDL.Text,\n ledger_canister_id: IDL.Principal,\n ckerc20_token_symbol: IDL.Text,\n });\n const GasFeeEstimate = IDL.Record({\n max_priority_fee_per_gas: IDL.Nat,\n max_fee_per_gas: IDL.Nat,\n timestamp: IDL.Nat64,\n });\n const MinterInfo = IDL.Record({\n eth_balance: IDL.Opt(IDL.Nat),\n eth_helper_contract_address: IDL.Opt(IDL.Text),\n last_observed_block_number: IDL.Opt(IDL.Nat),\n erc20_helper_contract_address: IDL.Opt(IDL.Text),\n last_erc20_scraped_block_number: IDL.Opt(IDL.Nat),\n supported_ckerc20_tokens: IDL.Opt(IDL.Vec(CkErc20Token)),\n last_gas_fee_estimate: IDL.Opt(GasFeeEstimate),\n smart_contract_address: IDL.Opt(IDL.Text),\n last_eth_scraped_block_number: IDL.Opt(IDL.Nat),\n minimum_withdrawal_amount: IDL.Opt(IDL.Nat),\n erc20_balances: IDL.Opt(IDL.Vec(IDL.Record({ balance: IDL.Nat, erc20_contract_address: IDL.Text }))),\n minter_address: IDL.Opt(IDL.Text),\n ethereum_block_height: IDL.Opt(BlockTag),\n });\n const EthTransaction = IDL.Record({ transaction_hash: IDL.Text });\n const TxFinalizedStatus = IDL.Variant({\n Success: IDL.Record({\n transaction_hash: IDL.Text,\n effective_transaction_fee: IDL.Opt(IDL.Nat),\n }),\n Reimbursed: IDL.Record({\n transaction_hash: IDL.Text,\n reimbursed_amount: IDL.Nat,\n reimbursed_in_block: IDL.Nat,\n }),\n PendingReimbursement: EthTransaction,\n });\n const RetrieveEthStatus = IDL.Variant({\n NotFound: IDL.Null,\n TxFinalized: TxFinalizedStatus,\n TxSent: EthTransaction,\n TxCreated: IDL.Null,\n Pending: IDL.Null,\n });\n const WithdrawErc20Arg = IDL.Record({\n ckerc20_ledger_id: IDL.Principal,\n recipient: IDL.Text,\n amount: IDL.Nat,\n });\n const RetrieveErc20Request = IDL.Record({\n ckerc20_block_index: IDL.Nat,\n cketh_block_index: IDL.Nat,\n });\n const LedgerError = IDL.Variant({\n TemporarilyUnavailable: IDL.Text,\n InsufficientAllowance: IDL.Record({\n token_symbol: IDL.Text,\n ledger_id: IDL.Principal,\n allowance: IDL.Nat,\n failed_burn_amount: IDL.Nat,\n }),\n AmountTooLow: IDL.Record({\n minimum_burn_amount: IDL.Nat,\n token_symbol: IDL.Text,\n ledger_id: IDL.Principal,\n failed_burn_amount: IDL.Nat,\n }),\n InsufficientFunds: IDL.Record({\n balance: IDL.Nat,\n token_symbol: IDL.Text,\n ledger_id: IDL.Principal,\n failed_burn_amount: IDL.Nat,\n }),\n });\n const WithdrawErc20Error = IDL.Variant({\n TokenNotSupported: IDL.Record({\n supported_tokens: IDL.Vec(CkErc20Token),\n }),\n TemporarilyUnavailable: IDL.Text,\n CkErc20LedgerError: IDL.Record({\n error: LedgerError,\n cketh_block_index: IDL.Nat,\n }),\n CkEthLedgerError: IDL.Record({ error: LedgerError }),\n RecipientAddressBlocked: IDL.Record({ address: IDL.Text }),\n });\n const WithdrawalArg = IDL.Record({\n recipient: IDL.Text,\n amount: IDL.Nat,\n });\n const RetrieveEthRequest = IDL.Record({ block_index: IDL.Nat });\n const WithdrawalError = IDL.Variant({\n TemporarilyUnavailable: IDL.Text,\n InsufficientAllowance: IDL.Record({ allowance: IDL.Nat }),\n AmountTooLow: IDL.Record({ min_withdrawal_amount: IDL.Nat }),\n RecipientAddressBlocked: IDL.Record({ address: IDL.Text }),\n InsufficientFunds: IDL.Record({ balance: IDL.Nat }),\n });\n const Account = IDL.Record({\n owner: IDL.Principal,\n subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n });\n const WithdrawalSearchParameter = IDL.Variant({\n ByRecipient: IDL.Text,\n BySenderAccount: Account,\n ByWithdrawalId: IDL.Nat64,\n });\n const WithdrawalStatus = IDL.Variant({\n TxFinalized: TxFinalizedStatus,\n TxSent: EthTransaction,\n TxCreated: IDL.Null,\n Pending: IDL.Null,\n });\n const WithdrawalDetail = IDL.Record({\n status: WithdrawalStatus,\n token_symbol: IDL.Text,\n withdrawal_amount: IDL.Nat,\n withdrawal_id: IDL.Nat64,\n from: IDL.Principal,\n from_subaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n max_transaction_fee: IDL.Opt(IDL.Nat),\n recipient_address: IDL.Text,\n });\n return IDL.Service({\n add_ckerc20_token: IDL.Func([AddCkErc20Token], [], []),\n eip_1559_transaction_price: IDL.Func([], [Eip1559TransactionPrice], [\"query\"]),\n get_canister_status: IDL.Func([], [CanisterStatusResponse], []),\n get_events: IDL.Func(\n [IDL.Record({ start: IDL.Nat64, length: IDL.Nat64 })],\n [\n IDL.Record({\n total_event_count: IDL.Nat64,\n events: IDL.Vec(Event),\n }),\n ],\n [\"query\"],\n ),\n get_minter_info: IDL.Func([], [MinterInfo], [\"query\"]),\n is_address_blocked: IDL.Func([IDL.Text], [IDL.Bool], [\"query\"]),\n minter_address: IDL.Func([], [IDL.Text], []),\n retrieve_eth_status: IDL.Func([IDL.Nat64], [RetrieveEthStatus], []),\n smart_contract_address: IDL.Func([], [IDL.Text], [\"query\"]),\n withdraw_erc20: IDL.Func(\n [WithdrawErc20Arg],\n [\n IDL.Variant({\n Ok: RetrieveErc20Request,\n Err: WithdrawErc20Error,\n }),\n ],\n [],\n ),\n withdraw_eth: IDL.Func([WithdrawalArg], [IDL.Variant({ Ok: RetrieveEthRequest, Err: WithdrawalError })], []),\n withdrawal_status: IDL.Func([WithdrawalSearchParameter], [IDL.Vec(WithdrawalDetail)], [\"query\"]),\n });\n};\nexport const init = ({ IDL }: any) => {\n const BlockTag = IDL.Variant({\n Safe: IDL.Null,\n Finalized: IDL.Null,\n Latest: IDL.Null,\n });\n const UpgradeArg = IDL.Record({\n next_transaction_nonce: IDL.Opt(IDL.Nat),\n ledger_suite_orchestrator_id: IDL.Opt(IDL.Principal),\n erc20_helper_contract_address: IDL.Opt(IDL.Text),\n last_erc20_scraped_block_number: IDL.Opt(IDL.Nat),\n ethereum_contract_address: IDL.Opt(IDL.Text),\n minimum_withdrawal_amount: IDL.Opt(IDL.Nat),\n ethereum_block_height: IDL.Opt(BlockTag),\n });\n const EthereumNetwork = IDL.Variant({\n Mainnet: IDL.Null,\n Sepolia: IDL.Null,\n });\n const InitArg = IDL.Record({\n ethereum_network: EthereumNetwork,\n last_scraped_block_number: IDL.Nat,\n ecdsa_key_name: IDL.Text,\n next_transaction_nonce: IDL.Nat,\n ledger_id: IDL.Principal,\n ethereum_contract_address: IDL.Opt(IDL.Text),\n minimum_withdrawal_amount: IDL.Nat,\n ethereum_block_height: BlockTag,\n });\n const MinterArg = IDL.Variant({\n UpgradeArg: UpgradeArg,\n InitArg: InitArg,\n });\n return [MinterArg];\n};\n","import { Erc20MinterInterfaceFactory, Erc20MinterService } from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\n\nexport const erc20Minter = (canisterId: string, identity?: true) =>\n actor.create({\n canisterId,\n idlFactory: Erc20MinterInterfaceFactory,\n identity,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const Result = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const Result_2 = IDL.Variant({\n ok: IDL.Vec(IDL.Principal),\n err: IDL.Text,\n });\n const AliasResult = IDL.Record({\n is_public: IDL.Bool,\n alias: IDL.Opt(IDL.Text),\n governance_id: IDL.Opt(IDL.Principal),\n ledger_id: IDL.Principal,\n });\n const Page = IDL.Record({\n content: IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Text)),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_1 = IDL.Variant({ ok: Page, err: IDL.Text });\n return IDL.Service({\n addPrincipalAlias: IDL.Func([IDL.Principal, IDL.Text], [Result], []),\n addSharedPrincipal: IDL.Func([IDL.Principal], [Result], []),\n cycleBalance: IDL.Func([], [IDL.Nat], []),\n getAdmins: IDL.Func([], [Result_2], [\"query\"]),\n getAllPrincipalAliases: IDL.Func([], [IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Text))], [\"query\"]),\n getPrincipalAlias: IDL.Func([IDL.Principal], [IDL.Opt(IDL.Text)], [\"query\"]),\n getPrincipalAliasByLedger: IDL.Func([IDL.Principal], [IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Text))], [\"query\"]),\n getPrincipalAliasByLedgers: IDL.Func([IDL.Vec(IDL.Principal)], [IDL.Vec(AliasResult)], [\"query\"]),\n queryPrincipalAliasPage: IDL.Func([IDL.Nat, IDL.Nat], [Result_1], [\"query\"]),\n setAdmins: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n syncSNSProject: IDL.Func([], [Result], []),\n });\n};\n","import { LiquidityLocksService, LiquidityLocksInterfaceFactory } from \"@icpswap/candid\";\nimport { ActorName } from \"../ActorName\";\n\nimport { actor } from \"../actor\";\n\nexport const liquidityLocks = () =>\n actor.create({\n actorName: ActorName.LiquidityLocks,\n idlFactory: LiquidityLocksInterfaceFactory,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const Result_2 = IDL.Variant({\n ok: IDL.Vec(IDL.Principal),\n err: IDL.Text,\n });\n const TokenBalance = IDL.Record({\n token: IDL.Principal,\n balance: IDL.Float64,\n });\n const WalletBalance = IDL.Record({\n user: IDL.Principal,\n tokens: IDL.Vec(TokenBalance),\n totalBalance: IDL.Float64,\n });\n const Result_1 = IDL.Variant({ ok: WalletBalance, err: IDL.Text });\n const UserWalletInfo = IDL.Record({\n user: IDL.Text,\n tokens: IDL.Vec(TokenBalance),\n });\n const Page = IDL.Record({\n content: IDL.Vec(UserWalletInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result = IDL.Variant({ ok: Page, err: IDL.Text });\n const UserWallet = IDL.Record({\n user: IDL.Principal,\n tokens: IDL.Vec(TokenBalance),\n });\n const UploadRequests = IDL.Record({ userWallets: IDL.Vec(UserWallet) });\n return IDL.Service({\n cycleBalance: IDL.Func([], [IDL.Nat], []),\n getAdmins: IDL.Func([], [Result_2], [\"query\"]),\n getUSDPrice: IDL.Func([IDL.Principal], [IDL.Float64], []),\n getUserTokens: IDL.Func([IDL.Principal], [Result_1], [\"query\"]),\n queryUserTokens: IDL.Func([IDL.Nat, IDL.Nat], [Result], [\"query\"]),\n setAdmins: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n uploadUserWallet: IDL.Func([UploadRequests], [IDL.Bool], []),\n });\n};\n","import { ToolService, ToolInterfaceFactory } from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\n\nexport const userTokenHelper = () =>\n actor.create({\n canisterId: \"mecty-aaaaa-aaaag-qkp6a-cai\",\n idlFactory: ToolInterfaceFactory,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const DepositArgs = IDL.Record({ fee: IDL.Nat, amount: IDL.Nat });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result = IDL.Variant({ ok: IDL.Nat, err: Error });\n const Result_1 = IDL.Variant({ ok: IDL.Text, err: Error });\n const WithdrawArgs = IDL.Record({ fee: IDL.Nat, amount: IDL.Nat });\n return IDL.Service({\n balanceOf: IDL.Func([IDL.Principal], [IDL.Nat], []),\n deposit: IDL.Func([DepositArgs], [Result], []),\n depositFrom: IDL.Func([DepositArgs], [Result], []),\n destoryPasscode: IDL.Func(\n [IDL.Principal, IDL.Principal, IDL.Nat],\n [Result_1],\n []\n ),\n getFactoryCid: IDL.Func([], [IDL.Principal], [\"query\"]),\n getTokenCid: IDL.Func([], [IDL.Principal], [\"query\"]),\n metadata: IDL.Func(\n [],\n [\n IDL.Record({\n passcodePrice: IDL.Nat,\n tokenCid: IDL.Principal,\n factoryCid: IDL.Principal,\n }),\n ],\n []\n ),\n requestPasscode: IDL.Func(\n [IDL.Principal, IDL.Principal, IDL.Nat],\n [Result_1],\n []\n ),\n withdraw: IDL.Func([WithdrawArgs], [Result], []),\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const TokenIdentifier = IDL.Text;\n const AccountIdentifier = IDL.Text;\n const User = IDL.Variant({\n principal: IDL.Principal,\n address: AccountIdentifier\n });\n const AllowanceRequest = IDL.Record({\n token: TokenIdentifier,\n owner: User,\n spender: IDL.Principal\n });\n const CommonError = IDL.Variant({\n InsufficientBalance: IDL.Null,\n InvalidToken: TokenIdentifier,\n Unauthorized: AccountIdentifier,\n Other: IDL.Text\n });\n const Result_17 = IDL.Variant({ ok: IDL.Nat, err: CommonError });\n const SubAccount = IDL.Vec(IDL.Nat8);\n const Balance = IDL.Nat;\n const ApproveRequest = IDL.Record({\n token: TokenIdentifier,\n subaccount: IDL.Opt(SubAccount),\n allowance: Balance,\n spender: IDL.Principal\n });\n const ApproveAllRequest = IDL.Record({\n approved: IDL.Bool,\n spender: User\n });\n const Result_3 = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const BalanceRequest = IDL.Record({\n token: TokenIdentifier,\n user: User\n });\n const BalanceResponse = IDL.Variant({ ok: Balance, err: CommonError });\n const Result_16 = IDL.Variant({ ok: IDL.Text, err: CommonError });\n const Chunk = IDL.Record({\n content: IDL.Vec(IDL.Nat8),\n batch_id: IDL.Nat\n });\n const Extension = IDL.Text;\n const TokenIndex = IDL.Nat32;\n const KVPair = IDL.Record({ k: IDL.Text, v: IDL.Text });\n const TokenMetadata = IDL.Record({\n cId: IDL.Text,\n tokenId: TokenIndex,\n owner: AccountIdentifier,\n metadata: IDL.Opt(IDL.Vec(IDL.Nat8)),\n link: IDL.Text,\n name: IDL.Text,\n minter: AccountIdentifier,\n filePath: IDL.Text,\n fileType: IDL.Text,\n mintTime: IDL.Int,\n introduction: IDL.Text,\n attributes: IDL.Vec(KVPair),\n royalties: IDL.Nat,\n nftType: IDL.Text,\n artistName: IDL.Text\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(TokenMetadata),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const Result_15 = IDL.Variant({ ok: Page_1, err: IDL.Text });\n const Remark = IDL.Text;\n const Memo = IDL.Vec(IDL.Nat8);\n const TransType = IDL.Variant({\n burn: IDL.Null,\n mint: IDL.Null,\n approve: IDL.Null,\n transfer: IDL.Null\n });\n const TransferRecord = IDL.Record({\n to: AccountIdentifier,\n remark: Remark,\n tokenId: TokenIndex,\n from: AccountIdentifier,\n hash: IDL.Text,\n memo: IDL.Opt(Memo),\n time: IDL.Int,\n tokenName: IDL.Text,\n txType: TransType,\n caller: AccountIdentifier,\n price: Balance,\n amount: Balance\n });\n const Page = IDL.Record({\n content: IDL.Vec(TransferRecord),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const Result_14 = IDL.Variant({ ok: Page, err: IDL.Text });\n const KVPair__1 = IDL.Record({ k: IDL.Text, v: IDL.Text });\n const CanisterInfo = IDL.Record({\n cid: IDL.Text,\n creator: AccountIdentifier,\n linkMap: IDL.Vec(KVPair__1),\n ownerName: IDL.Text,\n owner: AccountIdentifier,\n name: IDL.Text,\n createTime: IDL.Int,\n totalSupply: IDL.Nat,\n introduction: IDL.Text,\n mintSupply: IDL.Nat,\n royalties: IDL.Nat,\n image: IDL.Text\n });\n const Result_13 = IDL.Variant({ ok: CanisterInfo, err: IDL.Text });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null\n });\n const Result_12 = IDL.Variant({ ok: CycleInfo, err: Error });\n const Result_11 = IDL.Variant({\n ok: IDL.Tuple(IDL.Nat, IDL.Nat),\n err: IDL.Text\n });\n const Result_10 = IDL.Variant({ ok: IDL.Vec(IDL.Text), err: IDL.Text });\n const Result_6 = IDL.Variant({ ok: TokenIndex, err: IDL.Text });\n const Result_1 = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n const HeaderField = IDL.Tuple(IDL.Text, IDL.Text);\n const HttpRequest = IDL.Record({\n url: IDL.Text,\n method: IDL.Text,\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(HeaderField)\n });\n const StreamingCallbackToken = IDL.Record({\n key: IDL.Text,\n index: IDL.Nat,\n content_encoding: IDL.Text\n });\n const StreamingStrategy = IDL.Variant({\n Callback: IDL.Record({\n token: StreamingCallbackToken,\n callback: IDL.Func([], [], [])\n })\n });\n const HttpResponse = IDL.Record({\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(HeaderField),\n streaming_strategy: IDL.Opt(StreamingStrategy),\n status_code: IDL.Nat16\n });\n const StreamingCallbackHttpResponse = IDL.Record({\n token: IDL.Opt(StreamingCallbackToken),\n body: IDL.Vec(IDL.Nat8)\n });\n const Result_9 = IDL.Variant({ ok: TokenMetadata, err: IDL.Text });\n const Result_8 = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const Metadata = IDL.Variant({\n fungible: IDL.Record({\n decimals: IDL.Nat8,\n ownerAccount: AccountIdentifier,\n metadata: IDL.Opt(IDL.Vec(IDL.Nat8)),\n name: IDL.Text,\n symbol: IDL.Text\n }),\n nonfungible: IDL.Record({ metadata: IDL.Opt(IDL.Vec(IDL.Nat8)) })\n });\n const Result_7 = IDL.Variant({ ok: Metadata, err: CommonError });\n const MintRequest = IDL.Record({\n owner: User,\n metadata: IDL.Opt(IDL.Vec(IDL.Nat8)),\n link: IDL.Text,\n name: IDL.Text,\n filePath: IDL.Text,\n fileType: IDL.Text,\n introduction: IDL.Text,\n attributes: IDL.Vec(KVPair),\n royalties: IDL.Nat,\n nftType: IDL.Text,\n image: IDL.Text,\n artistName: IDL.Text\n });\n const Result_5 = IDL.Variant({ ok: Balance, err: IDL.Text });\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const QueryPositionResult = IDL.Record({\n fee: IDL.Nat,\n tickUpper: IDL.Int,\n feeGrowthInside1LastX128: IDL.Nat,\n pool: IDL.Text,\n liquidity: IDL.Nat,\n feeGrowthInside0LastX128: IDL.Nat,\n positionId: IDL.Text,\n token0: Token,\n token1: Token,\n tickLower: IDL.Int\n });\n const Result_4 = IDL.Variant({\n ok: QueryPositionResult,\n err: IDL.Text\n });\n const Result_2 = IDL.Variant({ ok: Balance, err: CommonError });\n const Time = IDL.Int;\n const Listing = IDL.Record({\n locked: IDL.Opt(Time),\n seller: IDL.Principal,\n price: IDL.Nat64\n });\n const Result = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(TokenIndex, IDL.Opt(Listing), IDL.Opt(IDL.Vec(IDL.Nat8)))),\n err: CommonError\n });\n const TransferRequest = IDL.Record({\n to: User,\n token: TokenIdentifier,\n notify: IDL.Bool,\n from: User,\n memo: Memo,\n subaccount: IDL.Opt(SubAccount),\n nonce: IDL.Opt(IDL.Nat),\n amount: Balance\n });\n const TransferResponse = IDL.Variant({\n ok: Balance,\n err: IDL.Variant({\n InsufficientAllowance: IDL.Null,\n CannotNotify: AccountIdentifier,\n InsufficientBalance: IDL.Null,\n InvalidToken: TokenIdentifier,\n Rejected: IDL.Null,\n Unauthorized: AccountIdentifier,\n Other: IDL.Text\n })\n });\n const SwapNFT = IDL.Service({\n allowance: IDL.Func([AllowanceRequest], [Result_17], [\"query\"]),\n approve: IDL.Func([ApproveRequest], [], []),\n approveForAll: IDL.Func([ApproveAllRequest], [Result_3], []),\n balance: IDL.Func([BalanceRequest], [BalanceResponse], [\"query\"]),\n bearer: IDL.Func([TokenIdentifier], [Result_16], [\"query\"]),\n checkOperator: IDL.Func([IDL.Text, IDL.Text, IDL.Text], [IDL.Bool], []),\n chunkSize: IDL.Func([], [IDL.Nat], [\"query\"]),\n clearChunk: IDL.Func([], [IDL.Bool], []),\n commit_batch: IDL.Func(\n [\n IDL.Record({\n batch_id: IDL.Nat,\n content_type: IDL.Text,\n chunk_ids: IDL.Vec(IDL.Nat)\n })\n ],\n [],\n []\n ),\n create_batch: IDL.Func([], [IDL.Record({ batch_id: IDL.Nat })], []),\n create_chunk: IDL.Func([Chunk], [IDL.Record({ chunk_id: IDL.Nat })], []),\n deletePool: IDL.Func([IDL.Text], [], []),\n extensions: IDL.Func([], [IDL.Vec(Extension)], [\"query\"]),\n findRemovedTokenList: IDL.Func([User, IDL.Nat, IDL.Nat], [Result_15], [\"query\"]),\n findTokenList: IDL.Func([User, IDL.Nat, IDL.Nat], [Result_15], [\"query\"]),\n findTokenListByPool: IDL.Func([IDL.Text, IDL.Nat, IDL.Nat], [Result_15], [\"query\"]),\n findTokenMarket: IDL.Func([IDL.Vec(IDL.Text), IDL.Nat, IDL.Nat], [Result_15], [\"query\"]),\n findTokenTxRecord: IDL.Func([User, IDL.Nat, IDL.Nat], [Result_14], [\"query\"]),\n findTxRecord: IDL.Func([TokenIdentifier, IDL.Nat, IDL.Nat], [Result_14], [\"query\"]),\n getAllowances: IDL.Func([], [IDL.Vec(IDL.Tuple(TokenIndex, IDL.Vec(AccountIdentifier)))], [\"query\"]),\n getCanisterInfo: IDL.Func([], [Result_13], [\"query\"]),\n getCycleInfo: IDL.Func([], [Result_12], []),\n getMinter: IDL.Func([], [IDL.Principal], [\"query\"]),\n getNftStat: IDL.Func([], [Result_11], [\"query\"]),\n getRegistry: IDL.Func([], [IDL.Vec(IDL.Tuple(TokenIndex, IDL.Text))], [\"query\"]),\n getRemovedPools: IDL.Func([], [Result_10], [\"query\"]),\n getTokenId: IDL.Func([IDL.Text, IDL.Text], [Result_6], [\"query\"]),\n getTokens: IDL.Func([], [IDL.Vec(IDL.Tuple(TokenIndex, TokenMetadata))], [\"query\"]),\n getTradeCanisterId: IDL.Func([], [Result_1], [\"query\"]),\n http_request: IDL.Func([HttpRequest], [HttpResponse], [\"query\"]),\n http_request_streaming_callback: IDL.Func([StreamingCallbackToken], [StreamingCallbackHttpResponse], [\"query\"]),\n icsMetadata: IDL.Func([TokenIndex], [Result_9], [\"query\"]),\n initNFTCanisterInfo: IDL.Func([CanisterInfo, TokenIndex, IDL.Text], [Result_1], []),\n isApproveForAll: IDL.Func([IDL.Text, IDL.Text], [Result_3], [\"query\"]),\n isApproveForToken: IDL.Func([TokenIndex, IDL.Text, IDL.Text], [Result_8], [\"query\"]),\n maxFileSize: IDL.Func([IDL.Nat], [Result_1], []),\n metadata: IDL.Func([TokenIdentifier], [Result_7], [\"query\"]),\n mint: IDL.Func([MintRequest], [Result_6], []),\n ownerNFTCount: IDL.Func([User], [Result_5], [\"query\"]),\n positions: IDL.Func([TokenIndex], [Result_4], []),\n removeAllApproval: IDL.Func([ApproveAllRequest], [Result_3], []),\n removeApproval: IDL.Func([ApproveRequest], [Result_3], []),\n removePool: IDL.Func([IDL.Text], [], []),\n setLogo: IDL.Func([IDL.Text], [Result_3], []),\n setMinter: IDL.Func([IDL.Principal], [], []),\n setTradeCanisterId: IDL.Func([IDL.Opt(IDL.Text)], [Result_3], []),\n spenderRemoveApproval: IDL.Func([TokenIdentifier], [Result_3], []),\n supply: IDL.Func([TokenIdentifier], [Result_2], [\"query\"]),\n tokenURI: IDL.Func([IDL.Nat], [Result_1], []),\n tokens_ext: IDL.Func([AccountIdentifier], [Result], [\"query\"]),\n transfer: IDL.Func([TransferRequest], [TransferResponse], [])\n });\n return SwapNFT;\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Passcode = IDL.Record({\n fee: IDL.Nat,\n token0: IDL.Principal,\n token1: IDL.Principal,\n });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result_1 = IDL.Variant({ ok: IDL.Null, err: Error });\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const CreatePoolArgs = IDL.Record({\n fee: IDL.Nat,\n sqrtPriceX96: IDL.Text,\n token0: Token,\n token1: Token,\n });\n const PoolData = IDL.Record({\n fee: IDL.Nat,\n key: IDL.Text,\n tickSpacing: IDL.Int,\n token0: Token,\n token1: Token,\n canisterId: IDL.Principal,\n });\n const Result_4 = IDL.Variant({ ok: PoolData, err: Error });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Result_7 = IDL.Variant({ ok: CycleInfo, err: Error });\n const Result_6 = IDL.Variant({\n ok: IDL.Opt(IDL.Principal),\n err: Error,\n });\n const Result_5 = IDL.Variant({ ok: IDL.Vec(Passcode), err: Error });\n const GetPoolArgs = IDL.Record({\n fee: IDL.Nat,\n token0: Token,\n token1: Token,\n });\n const Result_2 = IDL.Variant({ ok: IDL.Vec(PoolData), err: Error });\n const Result_3 = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Vec(Passcode))),\n err: Error,\n });\n const Result = IDL.Variant({ ok: IDL.Text, err: Error });\n return IDL.Service({\n addPasscode: IDL.Func([IDL.Principal, Passcode], [Result_1], []),\n addPoolControllers: IDL.Func(\n [IDL.Principal, IDL.Vec(IDL.Principal)],\n [],\n []\n ),\n batchAddPoolControllers: IDL.Func(\n [IDL.Vec(IDL.Principal), IDL.Vec(IDL.Principal)],\n [],\n []\n ),\n batchRemovePoolControllers: IDL.Func(\n [IDL.Vec(IDL.Principal), IDL.Vec(IDL.Principal)],\n [],\n []\n ),\n batchSetPoolAdmins: IDL.Func(\n [IDL.Vec(IDL.Principal), IDL.Vec(IDL.Principal)],\n [],\n []\n ),\n clearRemovedPool: IDL.Func([IDL.Principal], [IDL.Text], []),\n createPool: IDL.Func([CreatePoolArgs], [Result_4], []),\n deletePasscode: IDL.Func([IDL.Principal, Passcode], [Result_1], []),\n getCycleInfo: IDL.Func([], [Result_7], []),\n getGovernanceCid: IDL.Func([], [Result_6], [\"query\"]),\n getPasscodesByPrincipal: IDL.Func([IDL.Principal], [Result_5], [\"query\"]),\n getPool: IDL.Func([GetPoolArgs], [Result_4], [\"query\"]),\n getPools: IDL.Func([], [Result_2], [\"query\"]),\n getPrincipalPasscodes: IDL.Func([], [Result_3], [\"query\"]),\n getRemovedPools: IDL.Func([], [Result_2], [\"query\"]),\n getVersion: IDL.Func([], [IDL.Text], [\"query\"]),\n removePool: IDL.Func([GetPoolArgs], [IDL.Text], []),\n removePoolControllers: IDL.Func(\n [IDL.Principal, IDL.Vec(IDL.Principal)],\n [],\n []\n ),\n removePoolWithdrawErrorLog: IDL.Func(\n [IDL.Principal, IDL.Nat, IDL.Bool],\n [Result_1],\n []\n ),\n restorePool: IDL.Func([IDL.Principal], [IDL.Text], []),\n setPoolAdmins: IDL.Func([IDL.Principal, IDL.Vec(IDL.Principal)], [], []),\n upgradePoolTokenStandard: IDL.Func(\n [IDL.Principal, IDL.Principal],\n [Result],\n []\n ),\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const AccountBalance = IDL.Record({\n balance0: IDL.Nat,\n balance1: IDL.Nat,\n });\n const Page_5 = IDL.Record({\n content: IDL.Vec(IDL.Tuple(IDL.Principal, AccountBalance)),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result_26 = IDL.Variant({ ok: Page_5, err: Error });\n const Result_2 = IDL.Variant({ ok: IDL.Bool, err: Error });\n const Result_25 = IDL.Variant({\n ok: IDL.Record({\n tokenIncome: IDL.Vec(\n IDL.Tuple(\n IDL.Nat,\n IDL.Record({ tokensOwed0: IDL.Nat, tokensOwed1: IDL.Nat })\n )\n ),\n totalTokensOwed0: IDL.Nat,\n totalTokensOwed1: IDL.Nat,\n }),\n err: Error,\n });\n const ClaimArgs = IDL.Record({ positionId: IDL.Nat });\n const Result_24 = IDL.Variant({\n ok: IDL.Record({ amount0: IDL.Nat, amount1: IDL.Nat }),\n err: Error,\n });\n const DecreaseLiquidityArgs = IDL.Record({\n liquidity: IDL.Text,\n positionId: IDL.Nat,\n });\n const DepositArgs = IDL.Record({\n fee: IDL.Nat,\n token: IDL.Text,\n amount: IDL.Nat,\n });\n const Result = IDL.Variant({ ok: IDL.Nat, err: Error });\n const DepositAndMintArgs = IDL.Record({\n tickUpper: IDL.Int,\n fee0: IDL.Nat,\n fee1: IDL.Nat,\n amount0: IDL.Nat,\n amount1: IDL.Nat,\n positionOwner: IDL.Principal,\n amount0Desired: IDL.Text,\n amount1Desired: IDL.Text,\n tickLower: IDL.Int,\n });\n const Result_23 = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Principal)),\n err: Error,\n });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Result_22 = IDL.Variant({ ok: CycleInfo, err: Error });\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const GetPositionArgs = IDL.Record({\n tickUpper: IDL.Int,\n tickLower: IDL.Int,\n });\n const PositionInfo = IDL.Record({\n tokensOwed0: IDL.Nat,\n tokensOwed1: IDL.Nat,\n feeGrowthInside1LastX128: IDL.Nat,\n liquidity: IDL.Nat,\n feeGrowthInside0LastX128: IDL.Nat,\n });\n const Result_21 = IDL.Variant({ ok: PositionInfo, err: Error });\n const PositionInfoWithId = IDL.Record({\n id: IDL.Text,\n tokensOwed0: IDL.Nat,\n tokensOwed1: IDL.Nat,\n feeGrowthInside1LastX128: IDL.Nat,\n liquidity: IDL.Nat,\n feeGrowthInside0LastX128: IDL.Nat,\n });\n const Page_4 = IDL.Record({\n content: IDL.Vec(PositionInfoWithId),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_20 = IDL.Variant({ ok: Page_4, err: Error });\n const Result_19 = IDL.Variant({ ok: IDL.Principal, err: Error });\n const TransactionType = IDL.Variant({\n decreaseLiquidity: IDL.Null,\n claim: IDL.Null,\n swap: IDL.Null,\n addLiquidity: IDL.Null,\n increaseLiquidity: IDL.Null,\n });\n const SwapRecordInfo = IDL.Record({\n to: IDL.Text,\n feeAmount: IDL.Int,\n action: TransactionType,\n feeAmountTotal: IDL.Int,\n token0Id: IDL.Text,\n token1Id: IDL.Text,\n token0AmountTotal: IDL.Nat,\n liquidityTotal: IDL.Nat,\n from: IDL.Text,\n tick: IDL.Int,\n feeTire: IDL.Nat,\n recipient: IDL.Text,\n token0ChangeAmount: IDL.Nat,\n token1AmountTotal: IDL.Nat,\n liquidityChange: IDL.Nat,\n token1Standard: IDL.Text,\n TVLToken0: IDL.Int,\n TVLToken1: IDL.Int,\n token0Fee: IDL.Nat,\n token1Fee: IDL.Nat,\n timestamp: IDL.Int,\n token1ChangeAmount: IDL.Nat,\n token0Standard: IDL.Text,\n price: IDL.Nat,\n poolId: IDL.Text,\n });\n const PushError = IDL.Record({ time: IDL.Int, message: IDL.Text });\n const Result_18 = IDL.Variant({\n ok: IDL.Record({\n infoCid: IDL.Text,\n records: IDL.Vec(SwapRecordInfo),\n errors: IDL.Vec(PushError),\n retryCount: IDL.Nat,\n }),\n err: Error,\n });\n const TickLiquidityInfo = IDL.Record({\n tickIndex: IDL.Int,\n price0Decimal: IDL.Nat,\n liquidityNet: IDL.Int,\n price0: IDL.Nat,\n price1: IDL.Nat,\n liquidityGross: IDL.Nat,\n price1Decimal: IDL.Nat,\n });\n const Page_3 = IDL.Record({\n content: IDL.Vec(TickLiquidityInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_17 = IDL.Variant({ ok: Page_3, err: Error });\n const TickInfoWithId = IDL.Record({\n id: IDL.Text,\n initialized: IDL.Bool,\n feeGrowthOutside1X128: IDL.Nat,\n secondsPerLiquidityOutsideX128: IDL.Nat,\n liquidityNet: IDL.Int,\n secondsOutside: IDL.Nat,\n liquidityGross: IDL.Nat,\n feeGrowthOutside0X128: IDL.Nat,\n tickCumulativeOutside: IDL.Int,\n });\n const Page_2 = IDL.Record({\n content: IDL.Vec(TickInfoWithId),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_16 = IDL.Variant({ ok: Page_2, err: Error });\n const Result_15 = IDL.Variant({\n ok: IDL.Record({\n swapFee0Repurchase: IDL.Nat,\n token0Amount: IDL.Nat,\n swapFeeReceiver: IDL.Text,\n token1Amount: IDL.Nat,\n swapFee1Repurchase: IDL.Nat,\n }),\n err: Error,\n });\n const Value = IDL.Variant({\n Int: IDL.Int,\n Nat: IDL.Nat,\n Blob: IDL.Vec(IDL.Nat8),\n Text: IDL.Text,\n });\n const TransferLog = IDL.Record({\n to: IDL.Principal,\n fee: IDL.Nat,\n result: IDL.Text,\n token: Token,\n action: IDL.Text,\n daysFrom19700101: IDL.Nat,\n owner: IDL.Principal,\n from: IDL.Principal,\n fromSubaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n timestamp: IDL.Nat,\n index: IDL.Nat,\n amount: IDL.Nat,\n errorMsg: IDL.Text,\n });\n const Result_14 = IDL.Variant({ ok: IDL.Vec(TransferLog), err: Error });\n const Result_1 = IDL.Variant({ ok: IDL.Text, err: Error });\n const UserPositionInfo = IDL.Record({\n tickUpper: IDL.Int,\n tokensOwed0: IDL.Nat,\n tokensOwed1: IDL.Nat,\n feeGrowthInside1LastX128: IDL.Nat,\n liquidity: IDL.Nat,\n feeGrowthInside0LastX128: IDL.Nat,\n tickLower: IDL.Int,\n });\n const Result_13 = IDL.Variant({ ok: UserPositionInfo, err: Error });\n const Result_12 = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(IDL.Text, IDL.Vec(IDL.Nat))),\n err: Error,\n });\n const Result_11 = IDL.Variant({ ok: IDL.Vec(IDL.Nat), err: Error });\n const UserPositionInfoWithTokenAmount = IDL.Record({\n id: IDL.Nat,\n tickUpper: IDL.Int,\n tokensOwed0: IDL.Nat,\n tokensOwed1: IDL.Nat,\n feeGrowthInside1LastX128: IDL.Nat,\n liquidity: IDL.Nat,\n feeGrowthInside0LastX128: IDL.Nat,\n token0Amount: IDL.Nat,\n token1Amount: IDL.Nat,\n tickLower: IDL.Int,\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(UserPositionInfoWithTokenAmount),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_10 = IDL.Variant({ ok: Page_1, err: Error });\n const UserPositionInfoWithId = IDL.Record({\n id: IDL.Nat,\n tickUpper: IDL.Int,\n tokensOwed0: IDL.Nat,\n tokensOwed1: IDL.Nat,\n feeGrowthInside1LastX128: IDL.Nat,\n liquidity: IDL.Nat,\n feeGrowthInside0LastX128: IDL.Nat,\n tickLower: IDL.Int,\n });\n const Page = IDL.Record({\n content: IDL.Vec(UserPositionInfoWithId),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_9 = IDL.Variant({ ok: Page, err: Error });\n const Result_8 = IDL.Variant({\n ok: IDL.Vec(UserPositionInfoWithId),\n err: Error,\n });\n const Result_7 = IDL.Variant({\n ok: IDL.Record({ balance0: IDL.Nat, balance1: IDL.Nat }),\n err: Error,\n });\n const WithdrawErrorLog = IDL.Record({\n token: Token,\n time: IDL.Int,\n user: IDL.Principal,\n amount: IDL.Nat,\n });\n const Result_6 = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(IDL.Nat, WithdrawErrorLog)),\n err: Error,\n });\n const IncreaseLiquidityArgs = IDL.Record({\n positionId: IDL.Nat,\n amount0Desired: IDL.Text,\n amount1Desired: IDL.Text,\n });\n const PoolMetadata = IDL.Record({\n fee: IDL.Nat,\n key: IDL.Text,\n sqrtPriceX96: IDL.Nat,\n tick: IDL.Int,\n liquidity: IDL.Nat,\n token0: Token,\n token1: Token,\n maxLiquidityPerTick: IDL.Nat,\n nextPositionId: IDL.Nat,\n });\n const Result_5 = IDL.Variant({ ok: PoolMetadata, err: Error });\n const MintArgs = IDL.Record({\n fee: IDL.Nat,\n tickUpper: IDL.Int,\n token0: IDL.Text,\n token1: IDL.Text,\n amount0Desired: IDL.Text,\n amount1Desired: IDL.Text,\n tickLower: IDL.Int,\n });\n const SwapArgs = IDL.Record({\n amountIn: IDL.Text,\n zeroForOne: IDL.Bool,\n amountOutMinimum: IDL.Text,\n });\n const Result_4 = IDL.Variant({\n ok: IDL.Record({ tokensOwed0: IDL.Nat, tokensOwed1: IDL.Nat }),\n err: Error,\n });\n const Result_3 = IDL.Variant({ ok: IDL.Int, err: Error });\n const WithdrawArgs = IDL.Record({\n fee: IDL.Nat,\n token: IDL.Text,\n amount: IDL.Nat,\n });\n return IDL.Service({\n allTokenBalance: IDL.Func([IDL.Nat, IDL.Nat], [Result_26], [\"query\"]),\n approvePosition: IDL.Func([IDL.Principal, IDL.Nat], [Result_2], []),\n batchRefreshIncome: IDL.Func([IDL.Vec(IDL.Nat)], [Result_25], [\"query\"]),\n checkOwnerOfUserPosition: IDL.Func(\n [IDL.Principal, IDL.Nat],\n [Result_2],\n [\"query\"]\n ),\n claim: IDL.Func([ClaimArgs], [Result_24], []),\n decreaseLiquidity: IDL.Func([DecreaseLiquidityArgs], [Result_24], []),\n deposit: IDL.Func([DepositArgs], [Result], []),\n depositAllAndMint: IDL.Func([DepositAndMintArgs], [Result], []),\n depositFrom: IDL.Func([DepositArgs], [Result], []),\n getAddressPrincipals: IDL.Func([], [Result_23], [\"query\"]),\n getAdmins: IDL.Func([], [IDL.Vec(IDL.Principal)], [\"query\"]),\n getAvailabilityState: IDL.Func(\n [],\n [\n IDL.Record({\n whiteList: IDL.Vec(IDL.Principal),\n available: IDL.Bool,\n }),\n ],\n [\"query\"]\n ),\n getClaimLog: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"]),\n getCycleInfo: IDL.Func([], [Result_22], []),\n getMistransferBalance: IDL.Func([Token], [Result], []),\n getPosition: IDL.Func([GetPositionArgs], [Result_21], [\"query\"]),\n getPositions: IDL.Func([IDL.Nat, IDL.Nat], [Result_20], [\"query\"]),\n getPrincipal: IDL.Func([IDL.Text], [Result_19], [\"query\"]),\n getSwapRecordState: IDL.Func([], [Result_18], [\"query\"]),\n getTickInfos: IDL.Func([IDL.Nat, IDL.Nat], [Result_17], [\"query\"]),\n getTicks: IDL.Func([IDL.Nat, IDL.Nat], [Result_16], [\"query\"]),\n getTokenAmountState: IDL.Func([], [Result_15], [\"query\"]),\n getTokenBalance: IDL.Func(\n [],\n [IDL.Record({ token0: IDL.Nat, token1: IDL.Nat })],\n []\n ),\n getTokenMeta: IDL.Func(\n [],\n [\n IDL.Record({\n token0: IDL.Vec(IDL.Tuple(IDL.Text, Value)),\n token1: IDL.Vec(IDL.Tuple(IDL.Text, Value)),\n }),\n ],\n []\n ),\n getTransferLogs: IDL.Func([], [Result_14], [\"query\"]),\n getUserByPositionId: IDL.Func([IDL.Nat], [Result_1], [\"query\"]),\n getUserPosition: IDL.Func([IDL.Nat], [Result_13], [\"query\"]),\n getUserPositionIds: IDL.Func([], [Result_12], [\"query\"]),\n getUserPositionIdsByPrincipal: IDL.Func(\n [IDL.Principal],\n [Result_11],\n [\"query\"]\n ),\n getUserPositionWithTokenAmount: IDL.Func(\n [IDL.Nat, IDL.Nat],\n [Result_10],\n [\"query\"]\n ),\n getUserPositions: IDL.Func([IDL.Nat, IDL.Nat], [Result_9], [\"query\"]),\n getUserPositionsByPrincipal: IDL.Func(\n [IDL.Principal],\n [Result_8],\n [\"query\"]\n ),\n getUserUnusedBalance: IDL.Func([IDL.Principal], [Result_7], [\"query\"]),\n getVersion: IDL.Func([], [IDL.Text], [\"query\"]),\n getWithdrawErrorLog: IDL.Func([], [Result_6], [\"query\"]),\n increaseLiquidity: IDL.Func([IncreaseLiquidityArgs], [Result], []),\n init: IDL.Func([IDL.Nat, IDL.Int, IDL.Nat], [], []),\n metadata: IDL.Func([], [Result_5], [\"query\"]),\n mint: IDL.Func([MintArgs], [Result], []),\n quote: IDL.Func([SwapArgs], [Result], [\"query\"]),\n quoteForAll: IDL.Func([SwapArgs], [Result], [\"query\"]),\n refreshIncome: IDL.Func([IDL.Nat], [Result_4], [\"query\"]),\n removeErrorTransferLog: IDL.Func([IDL.Nat, IDL.Bool], [], []),\n removeWithdrawErrorLog: IDL.Func([IDL.Nat, IDL.Bool], [], []),\n resetTokenAmountState: IDL.Func(\n [IDL.Nat, IDL.Nat, IDL.Nat, IDL.Nat],\n [],\n []\n ),\n setAdmins: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n setAvailable: IDL.Func([IDL.Bool], [], []),\n setWhiteList: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n sumTick: IDL.Func([], [Result_3], [\"query\"]),\n swap: IDL.Func([SwapArgs], [Result], []),\n transferPosition: IDL.Func(\n [IDL.Principal, IDL.Principal, IDL.Nat],\n [Result_2],\n []\n ),\n upgradeTokenStandard: IDL.Func([IDL.Principal], [Result_1], []),\n withdraw: IDL.Func([WithdrawArgs], [Result], []),\n withdrawMistransferBalance: IDL.Func([Token], [Result], []),\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result = IDL.Variant({ ok: IDL.Bool, err: Error });\n const Result_3 = IDL.Variant({\n ok: IDL.Vec(IDL.Principal),\n err: Error,\n });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Result_2 = IDL.Variant({ ok: CycleInfo, err: Error });\n const Result_1 = IDL.Variant({ ok: IDL.Vec(IDL.Text), err: Error });\n const PositionIndex = IDL.Service({\n addPoolId: IDL.Func([IDL.Text], [Result], []),\n getControllers: IDL.Func([], [Result_3], [\"query\"]),\n getCycleInfo: IDL.Func([], [Result_2], []),\n getPools: IDL.Func([], [Result_1], [\"query\"]),\n getUserPools: IDL.Func([IDL.Text], [Result_1], [\"query\"]),\n initUserPoolMap: IDL.Func([IDL.Vec(IDL.Tuple(IDL.Text, IDL.Vec(IDL.Text)))], [], []),\n removePoolId: IDL.Func([IDL.Text], [Result], []),\n removePoolIdWithoutCheck: IDL.Func([IDL.Text], [Result], []),\n setOwners: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n updatePoolIds: IDL.Func([], [], []),\n });\n return PositionIndex;\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Result_11 = IDL.Variant({\n ok: IDL.Vec(IDL.Principal),\n err: IDL.Text,\n });\n const PoolAprIndex = IDL.Record({\n aprAvg1D: IDL.Float64,\n aprAvg7D: IDL.Float64,\n pool: IDL.Principal,\n aprAvg30D: IDL.Float64,\n });\n const Result_10 = IDL.Variant({ ok: PoolAprIndex, err: IDL.Text });\n const PositionDataIndex = IDL.Record({\n apr: IDL.Float64,\n snapshotTime: IDL.Nat,\n token0FeeAmount: IDL.Nat,\n value: IDL.Float64,\n token1FeeDayAmount: IDL.Nat,\n fees: IDL.Float64,\n pool: IDL.Principal,\n positionId: IDL.Nat,\n token0Amount: IDL.Nat,\n token1USDPrice: IDL.Float64,\n dayId: IDL.Nat,\n token1Amount: IDL.Nat,\n token1FeeAmount: IDL.Nat,\n token0FeeDayAmount: IDL.Nat,\n token0USDPrice: IDL.Float64,\n });\n const Result_9 = IDL.Variant({\n ok: IDL.Vec(PositionDataIndex),\n err: IDL.Text,\n });\n const PriceIndex = IDL.Record({\n priceLow7D: IDL.Float64,\n pool: IDL.Principal,\n priceHigh24H: IDL.Float64,\n priceHigh30D: IDL.Float64,\n priceHigh7D: IDL.Float64,\n priceLow24H: IDL.Float64,\n priceLow30D: IDL.Float64,\n });\n const Result_8 = IDL.Variant({ ok: PriceIndex, err: IDL.Text });\n const TaskPositionStatus = IDL.Record({\n lastSyncDay4Position: IDL.Nat,\n syncErrorMsgs: IDL.Vec(IDL.Text),\n syncPoolSize: IDL.Nat,\n taskStatus: IDL.Bool,\n currentSyncPool: IDL.Text,\n pendingSyncPoolSize: IDL.Nat,\n step1: IDL.Text,\n step2: IDL.Text,\n step3: IDL.Text,\n step4: IDL.Text,\n step5: IDL.Text,\n currentPoolPositionSize: IDL.Nat,\n currentDay: IDL.Nat,\n syncPositionDataLock: IDL.Bool,\n nowTime: IDL.Nat,\n });\n const TaskPriceStatus = IDL.Record({\n syncErrorMsgs: IDL.Vec(IDL.Text),\n syncPoolSize: IDL.Nat,\n taskStatus: IDL.Bool,\n currentSyncPool: IDL.Text,\n pendingSyncPoolSize: IDL.Nat,\n currentHour: IDL.Nat,\n step1: IDL.Text,\n step2: IDL.Text,\n step3: IDL.Text,\n step4: IDL.Text,\n lastSyncHour4PoolPrice: IDL.Nat,\n currentDay: IDL.Nat,\n syncPoolPriceLock: IDL.Bool,\n nowTime: IDL.Nat,\n });\n const TaskStatus = IDL.Record({\n lastSyncDay4Position: IDL.Nat,\n lastSyncDay4PoolData: IDL.Nat,\n totalPoolSize: IDL.Nat,\n taskStatus: IDL.Bool,\n currentHour: IDL.Nat,\n syncPoolDataLock: IDL.Bool,\n pendingSyncPriceSize: IDL.Nat,\n totalTokenListSize: IDL.Nat,\n lastSyncHour4PoolPrice: IDL.Nat,\n currentDay: IDL.Nat,\n pendingSyncPoolDataSize: IDL.Nat,\n syncPositionDataLock: IDL.Bool,\n pendingSyncPositionSize: IDL.Nat,\n syncPoolPriceLock: IDL.Bool,\n nowTime: IDL.Nat,\n });\n const Result_7 = IDL.Variant({\n ok: IDL.Vec(\n IDL.Record({\n apr: IDL.Float64,\n snapshotTime: IDL.Nat,\n dayId: IDL.Nat,\n poolId: IDL.Text,\n }),\n ),\n err: IDL.Text,\n });\n const ICPSwapPoolDataIndex = IDL.Record({\n low: IDL.Float64,\n snapshotTime: IDL.Nat,\n volumeToken0: IDL.Float64,\n volumeToken1: IDL.Float64,\n sqrtPrice: IDL.Float64,\n high: IDL.Float64,\n close: IDL.Float64,\n open: IDL.Float64,\n token1Price: IDL.Float64,\n volumeUSD: IDL.Float64,\n feesUSD: IDL.Float64,\n tvlUSD: IDL.Float64,\n token0LockedAmount: IDL.Float64,\n txCount: IDL.Int,\n token1LedgerId: IDL.Text,\n dayId: IDL.Nat,\n token0LedgerId: IDL.Text,\n token1LockedAmount: IDL.Float64,\n token0Price: IDL.Float64,\n poolId: IDL.Text,\n });\n const Page_2 = IDL.Record({\n content: IDL.Vec(ICPSwapPoolDataIndex),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_6 = IDL.Variant({ ok: Page_2, err: IDL.Text });\n const Result_5 = IDL.Variant({\n ok: IDL.Vec(\n IDL.Record({\n snapshotTime: IDL.Nat,\n price: IDL.Float64,\n hourId: IDL.Nat,\n dayId: IDL.Nat,\n poolId: IDL.Principal,\n }),\n ),\n err: IDL.Text,\n });\n const Result_4 = IDL.Variant({\n ok: IDL.Vec(\n IDL.Record({\n apr: IDL.Float64,\n snapshotTime: IDL.Nat,\n positionId: IDL.Nat,\n dayId: IDL.Nat,\n poolId: IDL.Principal,\n }),\n ),\n err: IDL.Text,\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(PositionDataIndex),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_3 = IDL.Variant({ ok: Page_1, err: IDL.Text });\n const Result_2 = IDL.Variant({\n ok: IDL.Vec(\n IDL.Record({\n snapshotTime: IDL.Nat,\n fees: IDL.Float64,\n positionId: IDL.Nat,\n dayId: IDL.Nat,\n poolId: IDL.Principal,\n }),\n ),\n err: IDL.Text,\n });\n const Result_1 = IDL.Variant({\n ok: IDL.Vec(\n IDL.Record({\n snapshotTime: IDL.Nat,\n value: IDL.Float64,\n positionId: IDL.Nat,\n dayId: IDL.Nat,\n poolId: IDL.Principal,\n }),\n ),\n err: IDL.Text,\n });\n const Page = IDL.Record({\n content: IDL.Vec(PriceIndex),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result = IDL.Variant({ ok: Page, err: IDL.Text });\n return IDL.Service({\n cycleBalance: IDL.Func([], [IDL.Nat], []),\n getAdmins: IDL.Func([], [Result_11], [\"query\"]),\n getPoolAprIndex: IDL.Func([IDL.Principal], [Result_10], [\"query\"]),\n getPositionIndexs: IDL.Func([IDL.Principal, IDL.Nat], [Result_9], [\"query\"]),\n getPriceIndex: IDL.Func([IDL.Principal], [Result_8], [\"query\"]),\n getStat: IDL.Func([], [TaskPositionStatus], [\"query\"]),\n getStatPrice: IDL.Func([], [TaskPriceStatus], [\"query\"]),\n getStatus: IDL.Func([], [TaskStatus], [\"query\"]),\n getTaskState: IDL.Func([], [IDL.Bool], [\"query\"]),\n queryPoolAprLine: IDL.Func([IDL.Principal], [Result_7], [\"query\"]),\n queryPoolDataIndexPage: IDL.Func([IDL.Nat, IDL.Nat], [Result_6], [\"query\"]),\n queryPoolPriceLine: IDL.Func([IDL.Principal], [Result_5], [\"query\"]),\n queryPositionAprLine: IDL.Func([IDL.Principal, IDL.Nat], [Result_4], [\"query\"]),\n queryPositionDataIndexPage: IDL.Func([IDL.Opt(IDL.Text), IDL.Nat, IDL.Nat], [Result_3], [\"query\"]),\n queryPositionFeesLine: IDL.Func([IDL.Principal, IDL.Nat], [Result_2], [\"query\"]),\n queryPositionValueLine: IDL.Func([IDL.Principal, IDL.Nat], [Result_1], [\"query\"]),\n queryPriceIndexPage: IDL.Func([IDL.Nat, IDL.Nat], [Result], [\"query\"]),\n setAdmins: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n setTaskState: IDL.Func([IDL.Bool], [IDL.Bool], []),\n syncPoolAndTokenList: IDL.Func([], [], []),\n syncPoolPriceData: IDL.Func([], [], []),\n syncPositionData: IDL.Func([], [], []),\n });\n};\n","import { ActorIdentity } from \"@icpswap/types\";\nimport {\n SwapFactory,\n SwapFactoryInterfaceFactory,\n SwapNFT,\n SwapNFTInterfaceFactory,\n SwapPool,\n SwapPoolInterfaceFactory,\n TICKET_SERVICE,\n TicketInterfaceFactory,\n PositionIndex,\n PositionIndexInterfaceFactory,\n PositionChartsService,\n PositionChartsFactory,\n} from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\nimport { ActorName } from \"../ActorName\";\n\nexport const swapNFT = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.SwapNFTCanister,\n identity,\n idlFactory: SwapNFTInterfaceFactory,\n });\n\nexport const swapFactory = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.SwapFactory,\n identity,\n idlFactory: SwapFactoryInterfaceFactory,\n });\n\nexport const swapPool = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n identity,\n canisterId,\n idlFactory: SwapPoolInterfaceFactory,\n });\n\nexport const swapTicket = () =>\n actor.create({\n actorName: ActorName.SwapTicket,\n idlFactory: TicketInterfaceFactory,\n });\n\nexport const swapPosition = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.Position,\n idlFactory: PositionIndexInterfaceFactory,\n identity,\n });\n\nexport const positionCharts = () =>\n actor.create({\n actorName: ActorName.PositionCharts,\n idlFactory: PositionChartsFactory,\n });\n","import {\n PassCodeManagerService,\n PassCodeManagerInterfaceFactory,\n} from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\nimport { ActorName } from \"../ActorName\";\n\nexport const passCodeManager = async (identity?: true) =>\n actor.create({\n identity,\n idlFactory: PassCodeManagerInterfaceFactory,\n actorName: ActorName.PassCodeManager,\n });\n\nexport * from \"./global\";\n","export const idlFactory = ({ IDL }: any) => {\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const CreateFarmArgs = IDL.Record({\n startTime: IDL.Nat,\n secondPerCycle: IDL.Nat,\n rewardToken: Token,\n endTime: IDL.Nat,\n rewardAmount: IDL.Nat,\n pool: IDL.Principal,\n refunder: IDL.Principal,\n priceInsideLimit: IDL.Bool,\n token0AmountLimit: IDL.Nat,\n token1AmountLimit: IDL.Nat,\n });\n const Result_4 = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result_3 = IDL.Variant({\n ok: IDL.Vec(IDL.Principal),\n err: Error,\n });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Result_2 = IDL.Variant({ ok: CycleInfo, err: Error });\n const Result_1 = IDL.Variant({ ok: IDL.Nat, err: Error });\n const Result = IDL.Variant({\n ok: IDL.Record({\n farmIndexCid: IDL.Principal,\n governanceCid: IDL.Opt(IDL.Principal),\n feeReceiverCid: IDL.Principal,\n }),\n err: Error,\n });\n return IDL.Service({\n addFarmControllers: IDL.Func([IDL.Principal, IDL.Vec(IDL.Principal)], [], []),\n create: IDL.Func([CreateFarmArgs], [Result_4], []),\n getAdmins: IDL.Func([], [Result_3], [\"query\"]),\n getAllFarms: IDL.Func([], [Result_3], [\"query\"]),\n getCycleInfo: IDL.Func([], [Result_2], []),\n getFee: IDL.Func([], [Result_1], [\"query\"]),\n getInitArgs: IDL.Func([], [Result], [\"query\"]),\n getVersion: IDL.Func([], [IDL.Text], [\"query\"]),\n removeFarmControllers: IDL.Func([IDL.Principal, IDL.Vec(IDL.Principal)], [], []),\n setAdmins: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n setFarmAdmins: IDL.Func([IDL.Principal, IDL.Vec(IDL.Principal)], [], []),\n setFee: IDL.Func([IDL.Nat], [], []),\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result = IDL.Variant({ ok: IDL.Text, err: Error });\n const Result_21 = IDL.Variant({\n ok: IDL.Record({\n token0DecimalsConst: IDL.Float64,\n token1DecimalsConst: IDL.Float64,\n rewardTokenDecimalsConst: IDL.Float64,\n timeConst: IDL.Float64,\n }),\n err: Error,\n });\n const Result_20 = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(IDL.Nat, IDL.Float64)),\n err: Error,\n });\n const Result_19 = IDL.Variant({\n ok: IDL.Vec(IDL.Principal),\n err: Error,\n });\n const Result_18 = IDL.Variant({ ok: IDL.Float64, err: Error });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Result_17 = IDL.Variant({ ok: CycleInfo, err: Error });\n const Deposit = IDL.Record({\n tickUpper: IDL.Int,\n rewardAmount: IDL.Nat,\n owner: IDL.Principal,\n liquidity: IDL.Nat,\n initTime: IDL.Nat,\n lastDistributeTime: IDL.Nat,\n positionId: IDL.Nat,\n token0Amount: IDL.Int,\n holder: IDL.Principal,\n token1Amount: IDL.Int,\n tickLower: IDL.Int,\n });\n const Result_16 = IDL.Variant({ ok: Deposit, err: Error });\n const DistributeRecord = IDL.Record({\n rewardTotal: IDL.Nat,\n owner: IDL.Principal,\n positionId: IDL.Nat,\n timestamp: IDL.Nat,\n rewardGained: IDL.Nat,\n });\n const Page_2 = IDL.Record({\n content: IDL.Vec(DistributeRecord),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_15 = IDL.Variant({ ok: Page_2, err: IDL.Text });\n const FarmStatus = IDL.Variant({\n LIVE: IDL.Null,\n NOT_STARTED: IDL.Null,\n CLOSED: IDL.Null,\n FINISHED: IDL.Null,\n });\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const FarmInfo = IDL.Record({\n startTime: IDL.Nat,\n status: FarmStatus,\n creator: IDL.Principal,\n totalRewardHarvested: IDL.Nat,\n numberOfStakes: IDL.Nat,\n rewardToken: Token,\n endTime: IDL.Nat,\n totalRewardBalance: IDL.Nat,\n pool: IDL.Principal,\n refunder: IDL.Principal,\n poolToken0: Token,\n poolToken1: Token,\n poolFee: IDL.Nat,\n totalRewardUnharvested: IDL.Nat,\n totalReward: IDL.Nat,\n userNumberOfStakes: IDL.Nat,\n positionIds: IDL.Vec(IDL.Nat),\n });\n const Result_14 = IDL.Variant({ ok: FarmInfo, err: Error });\n const InitFarmArgs = IDL.Record({\n fee: IDL.Nat,\n startTime: IDL.Nat,\n status: FarmStatus,\n secondPerCycle: IDL.Nat,\n creator: IDL.Principal,\n nodeIndexCid: IDL.Principal,\n farmIndexCid: IDL.Principal,\n rewardToken: Token,\n endTime: IDL.Nat,\n pool: IDL.Principal,\n refunder: IDL.Principal,\n governanceCid: IDL.Opt(IDL.Principal),\n priceInsideLimit: IDL.Bool,\n token0AmountLimit: IDL.Nat,\n token1AmountLimit: IDL.Nat,\n totalReward: IDL.Nat,\n farmFactoryCid: IDL.Principal,\n feeReceiverCid: IDL.Principal,\n });\n const Result_13 = IDL.Variant({ ok: InitFarmArgs, err: Error });\n const Result_12 = IDL.Variant({\n ok: IDL.Record({\n priceInsideLimit: IDL.Bool,\n positionNumLimit: IDL.Nat,\n token0AmountLimit: IDL.Nat,\n token1AmountLimit: IDL.Nat,\n }),\n err: Error,\n });\n const Result_11 = IDL.Variant({\n ok: IDL.Record({\n poolToken0Amount: IDL.Nat,\n totalLiquidity: IDL.Nat,\n poolToken1Amount: IDL.Nat,\n }),\n err: Error,\n });\n const Result_10 = IDL.Variant({\n ok: IDL.Record({\n poolToken0Symbol: IDL.Text,\n poolToken1Symbol: IDL.Text,\n poolToken1Decimals: IDL.Nat,\n poolToken0Decimals: IDL.Nat,\n poolToken0: IDL.Record({\n address: IDL.Text,\n standard: IDL.Text,\n }),\n poolToken1: IDL.Record({\n address: IDL.Text,\n standard: IDL.Text,\n }),\n }),\n err: Error,\n });\n const Result_9 = IDL.Variant({ ok: IDL.Vec(IDL.Nat), err: Error });\n const Result_1 = IDL.Variant({ ok: IDL.Nat, err: Error });\n const Result_8 = IDL.Variant({\n ok: IDL.Record({\n secondPerCycle: IDL.Nat,\n totalRewardHarvested: IDL.Nat,\n totalRewardBalance: IDL.Nat,\n totalRewardFee: IDL.Nat,\n rewardPerCycle: IDL.Nat,\n rewardTokenFee: IDL.Nat,\n totalCycleCount: IDL.Nat,\n totalRewardUnharvested: IDL.Nat,\n currentCycleCount: IDL.Nat,\n totalReward: IDL.Nat,\n rewardTokenDecimals: IDL.Nat,\n }),\n err: Error,\n });\n const TransType = IDL.Variant({\n withdraw: IDL.Null,\n distribute: IDL.Null,\n unstake: IDL.Null,\n stake: IDL.Null,\n harvest: IDL.Null,\n });\n const StakeRecord = IDL.Record({\n to: IDL.Principal,\n transType: TransType,\n from: IDL.Principal,\n liquidity: IDL.Nat,\n positionId: IDL.Nat,\n timestamp: IDL.Nat,\n amount: IDL.Nat,\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(StakeRecord),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_7 = IDL.Variant({ ok: Page_1, err: IDL.Text });\n const TokenAmount = IDL.Record({\n address: IDL.Text,\n amount: IDL.Nat,\n standard: IDL.Text,\n });\n const TVL = IDL.Record({\n poolToken0: TokenAmount,\n poolToken1: TokenAmount,\n });\n const Result_6 = IDL.Variant({ ok: TVL, err: Error });\n const TransferLog = IDL.Record({\n to: IDL.Principal,\n fee: IDL.Nat,\n result: IDL.Text,\n token: Token,\n action: IDL.Text,\n daysFrom19700101: IDL.Nat,\n owner: IDL.Principal,\n from: IDL.Principal,\n fromSubaccount: IDL.Opt(IDL.Vec(IDL.Nat8)),\n timestamp: IDL.Nat,\n index: IDL.Nat,\n amount: IDL.Nat,\n errorMsg: IDL.Text,\n });\n const Result_5 = IDL.Variant({ ok: IDL.Vec(TransferLog), err: Error });\n const Result_4 = IDL.Variant({ ok: IDL.Vec(Deposit), err: Error });\n const Page = IDL.Record({\n content: IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Nat)),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_3 = IDL.Variant({ ok: Page, err: Error });\n const Result_2 = IDL.Variant({\n ok: IDL.Record({\n poolToken0: TokenAmount,\n poolToken1: TokenAmount,\n }),\n err: Error,\n });\n return IDL.Service({\n clearErrorLog: IDL.Func([], [], []),\n close: IDL.Func([], [Result], []),\n finishManually: IDL.Func([], [Result], []),\n getAPRConst: IDL.Func([], [Result_21], [\"query\"]),\n getAPRRecord: IDL.Func([], [Result_20], [\"query\"]),\n getAdmins: IDL.Func([], [Result_19], [\"query\"]),\n getAvgAPR: IDL.Func([], [Result_18], [\"query\"]),\n getCycleInfo: IDL.Func([], [Result_17], []),\n getDeposit: IDL.Func([IDL.Nat], [Result_16], [\"query\"]),\n getDistributeRecord: IDL.Func([IDL.Nat, IDL.Nat, IDL.Text], [Result_15], [\"query\"]),\n getErrorLog: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"]),\n getFarmInfo: IDL.Func([IDL.Text], [Result_14], [\"query\"]),\n getInitArgs: IDL.Func([], [Result_13], [\"query\"]),\n getLimitInfo: IDL.Func([], [Result_12], [\"query\"]),\n getLiquidityInfo: IDL.Func([], [Result_11], [\"query\"]),\n getPoolMeta: IDL.Func([], [IDL.Record({ sqrtPriceX96: IDL.Nat, tick: IDL.Int })], []),\n getPoolTokenMeta: IDL.Func([], [Result_10], [\"query\"]),\n getPositionIds: IDL.Func([], [Result_9], [\"query\"]),\n getRewardInfo: IDL.Func([IDL.Vec(IDL.Nat)], [Result_1], [\"query\"]),\n getRewardMeta: IDL.Func([], [Result_8], [\"query\"]),\n getRewardTokenBalance: IDL.Func([], [IDL.Nat], []),\n getStakeRecord: IDL.Func([IDL.Nat, IDL.Nat, IDL.Text], [Result_7], [\"query\"]),\n getTVL: IDL.Func([], [Result_6], [\"query\"]),\n getTransferLogs: IDL.Func([], [Result_5], [\"query\"]),\n getUserDeposits: IDL.Func([IDL.Principal], [Result_4], [\"query\"]),\n getUserRewardBalance: IDL.Func([IDL.Principal], [Result_1], [\"query\"]),\n getUserRewardBalances: IDL.Func([IDL.Nat, IDL.Nat], [Result_3], [\"query\"]),\n getUserTVL: IDL.Func([IDL.Principal], [Result_2], [\"query\"]),\n getVersion: IDL.Func([], [IDL.Text], [\"query\"]),\n init: IDL.Func([], [], []),\n removeErrorTransferLog: IDL.Func([IDL.Nat, IDL.Bool], [], []),\n restartManually: IDL.Func([], [Result], []),\n sendRewardManually: IDL.Func([], [Result], []),\n setAdmins: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n setLimitInfo: IDL.Func([IDL.Nat, IDL.Nat, IDL.Nat, IDL.Bool], [], []),\n stake: IDL.Func([IDL.Nat], [Result], []),\n unstake: IDL.Func([IDL.Nat], [Result], []),\n withdraw: IDL.Func([], [Result_1], []),\n withdrawRewardFee: IDL.Func([], [Result], []),\n });\n};\nexport const init = ({ IDL }) => {\n return [];\n};\n","export const idlFactory = ({ IDL }) => {\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const AddFarmIndexArgs = IDL.Record({\n rewardToken: Token,\n farmCid: IDL.Principal,\n poolToken0: Token,\n poolToken1: Token,\n poolCid: IDL.Principal,\n totalReward: IDL.Nat,\n });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result_8 = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Vec(IDL.Principal))),\n err: Error,\n });\n const Result_9 = IDL.Variant({\n ok: IDL.Record({\n LIVE: IDL.Vec(IDL.Principal),\n NOT_STARTED: IDL.Vec(IDL.Principal),\n CLOSED: IDL.Vec(IDL.Principal),\n FINISHED: IDL.Vec(IDL.Principal),\n }),\n err: IDL.Text,\n });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Result_7 = IDL.Variant({ ok: CycleInfo, err: Error });\n const FarmRewardInfo = IDL.Record({\n poolToken0TVL: IDL.Record({\n address: IDL.Principal,\n amount: IDL.Nat,\n standard: IDL.Text,\n }),\n poolToken1TVL: IDL.Record({\n address: IDL.Principal,\n amount: IDL.Nat,\n standard: IDL.Text,\n }),\n pool: IDL.Principal,\n initTime: IDL.Nat,\n totalReward: IDL.Record({\n address: IDL.Principal,\n amount: IDL.Nat,\n standard: IDL.Text,\n }),\n });\n const Result_6 = IDL.Variant({ ok: FarmRewardInfo, err: Error });\n const FarmStatus = IDL.Variant({\n LIVE: IDL.Null,\n NOT_STARTED: IDL.Null,\n CLOSED: IDL.Null,\n FINISHED: IDL.Null,\n });\n const Result_5 = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(IDL.Principal, FarmRewardInfo)),\n err: Error,\n });\n const Result = IDL.Variant({ ok: IDL.Vec(IDL.Principal), err: Error });\n const Result_4 = IDL.Variant({\n ok: IDL.Vec(IDL.Principal),\n err: IDL.Text,\n });\n const SearchCondition = IDL.Record({\n status: IDL.Opt(IDL.Vec(FarmStatus)),\n rewardToken: IDL.Opt(IDL.Principal),\n pool: IDL.Opt(IDL.Principal),\n user: IDL.Opt(IDL.Principal),\n });\n const Result_3 = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(IDL.Principal, IDL.Principal)),\n err: Error,\n });\n const Result_2 = IDL.Variant({\n ok: IDL.Vec(FarmRewardInfo),\n err: Error,\n });\n const Result_1 = IDL.Variant({\n ok: IDL.Record({ farmAmount: IDL.Nat, principalAmount: IDL.Nat }),\n err: Error,\n });\n const TokenAmount = IDL.Record({\n address: IDL.Text,\n amount: IDL.Nat,\n standard: IDL.Text,\n });\n const TVL = IDL.Record({\n poolToken0: TokenAmount,\n poolToken1: TokenAmount,\n });\n return IDL.Service({\n addFarmIndex: IDL.Func([AddFarmIndexArgs], [], []),\n getAllFarmUsers: IDL.Func([], [Result_8], [\"query\"]),\n getAllFarms: IDL.Func([], [Result_9], [\"query\"]),\n getAllPoolFarms: IDL.Func([], [Result_8], [\"query\"]),\n getAllRewardTokenFarms: IDL.Func([], [Result_8], [\"query\"]),\n getAllUserFarms: IDL.Func([], [Result_8], [\"query\"]),\n getCycleInfo: IDL.Func([], [Result_7], []),\n getFarmRewardTokenInfo: IDL.Func([IDL.Principal], [Result_6], [\"query\"]),\n getFarmRewardTokenInfos: IDL.Func([IDL.Opt(FarmStatus)], [Result_5], [\"query\"]),\n getFarmUsers: IDL.Func([IDL.Principal], [Result], [\"query\"]),\n getFarms: IDL.Func([IDL.Opt(FarmStatus)], [Result_4], [\"query\"]),\n getFarmsByConditions: IDL.Func([SearchCondition], [Result], [\"query\"]),\n getFarmsByPool: IDL.Func([IDL.Principal], [Result], [\"query\"]),\n getFarmsByRewardToken: IDL.Func([IDL.Principal], [Result], [\"query\"]),\n getLiveFarmsByPools: IDL.Func([IDL.Vec(IDL.Principal)], [Result_3], [\"query\"]),\n getPrincipalRecord: IDL.Func([], [Result], [\"query\"]),\n getRewardInfoByStatus: IDL.Func([FarmStatus], [Result_2], [\"query\"]),\n getTotalAmount: IDL.Func([], [Result_1], [\"query\"]),\n getUserFarms: IDL.Func([IDL.Principal], [Result], [\"query\"]),\n getVersion: IDL.Func([], [IDL.Text], [\"query\"]),\n syncHisData: IDL.Func([IDL.Principal, IDL.Nat], [IDL.Text], []),\n updateFarmStatus: IDL.Func([FarmStatus], [], []),\n updateFarmTVL: IDL.Func([TVL], [], []),\n updateUserInfo: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n });\n};\n","import { ActorIdentity } from \"@icpswap/types\";\nimport {\n Farm,\n FarmInterfaceFactory,\n FarmController,\n FarmControllerInterfaceFactory,\n FarmStorage,\n FarmStorageInterfaceFactory,\n FarmIndex,\n FarmIndexInterfaceFactory,\n} from \"@icpswap/candid\";\nimport { actor } from \"../actor\";\nimport { ActorName } from \"../ActorName\";\n\nexport const farmController = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.FarmController,\n identity,\n idlFactory: FarmControllerInterfaceFactory,\n });\n\nexport const farm = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.Farm,\n canisterId,\n identity,\n idlFactory: FarmInterfaceFactory,\n });\n\nexport const farmStorage = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.FarmStorage,\n canisterId,\n identity,\n idlFactory: FarmStorageInterfaceFactory,\n });\n\nexport const farmIndex = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.FarmIndex,\n identity,\n idlFactory: FarmIndexInterfaceFactory,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const InitRequest = IDL.Record({\n stakingTokenSymbol: IDL.Text,\n startTime: IDL.Nat,\n rewardTokenSymbol: IDL.Text,\n stakingToken: Token,\n rewardToken: Token,\n rewardPerTime: IDL.Nat,\n name: IDL.Text,\n stakingTokenFee: IDL.Nat,\n rewardTokenFee: IDL.Nat,\n stakingTokenDecimals: IDL.Nat,\n bonusEndTime: IDL.Nat,\n rewardTokenDecimals: IDL.Nat,\n });\n const Result_11 = IDL.Variant({ ok: IDL.Principal, err: IDL.Text });\n const Result_2 = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const TokenGlobalDataInfo = IDL.Record({\n rewardAmount: IDL.Float64,\n stakingAmount: IDL.Float64,\n rewardTokenPrice: IDL.Float64,\n rewardTokenCanisterId: IDL.Text,\n stakingTokenCanisterId: IDL.Text,\n stakingTokenPrice: IDL.Float64,\n stakingTokenAmount: IDL.Nat,\n rewardTokenAmount: IDL.Nat,\n });\n const Result_10 = IDL.Variant({\n ok: IDL.Vec(TokenGlobalDataInfo),\n err: IDL.Text,\n });\n const StakingPoolInfo = IDL.Record({\n stakingTokenSymbol: IDL.Text,\n startTime: IDL.Nat,\n rewardTokenSymbol: IDL.Text,\n creator: IDL.Principal,\n stakingToken: Token,\n rewardToken: Token,\n rewardPerTime: IDL.Nat,\n name: IDL.Text,\n createTime: IDL.Nat,\n stakingTokenFee: IDL.Nat,\n rewardTokenFee: IDL.Nat,\n stakingTokenDecimals: IDL.Nat,\n bonusEndTime: IDL.Nat,\n rewardTokenDecimals: IDL.Nat,\n canisterId: IDL.Principal,\n });\n const Page = IDL.Record({\n content: IDL.Vec(StakingPoolInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_9 = IDL.Variant({ ok: Page, err: Page });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result_8 = IDL.Variant({\n ok: IDL.Vec(IDL.Principal),\n err: Error,\n });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Result_7 = IDL.Variant({ ok: CycleInfo, err: Error });\n const GlobalDataInfo = IDL.Record({\n valueOfStaking: IDL.Float64,\n valueOfRewarded: IDL.Float64,\n totalStaker: IDL.Nat,\n valueOfRewardsInProgress: IDL.Float64,\n totalPools: IDL.Nat,\n });\n const Result_6 = IDL.Variant({ ok: GlobalDataInfo, err: IDL.Text });\n const Result_5 = IDL.Variant({\n ok: IDL.Record({\n governanceCid: IDL.Opt(IDL.Principal),\n userIndexCid: IDL.Principal,\n feeReceiverCid: IDL.Principal,\n }),\n err: Error,\n });\n const Result_4 = IDL.Variant({\n ok: IDL.Tuple(IDL.Text, IDL.Text, IDL.Nat, IDL.Nat, IDL.Bool),\n err: IDL.Text,\n });\n const Result_3 = IDL.Variant({\n ok: TokenGlobalDataInfo,\n err: IDL.Text,\n });\n const Result_1 = IDL.Variant({ ok: StakingPoolInfo, err: IDL.Text });\n const Result = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n return IDL.Service({\n addStakingPoolControllers: IDL.Func([IDL.Principal, IDL.Vec(IDL.Principal)], [], []),\n createStakingPool: IDL.Func([InitRequest], [Result_11], []),\n deleteStakingPool: IDL.Func([IDL.Principal], [Result_2], []),\n findPoolStatInfo: IDL.Func([], [Result_10], [\"query\"]),\n findStakingPoolPage: IDL.Func([IDL.Opt(IDL.Nat), IDL.Nat, IDL.Nat], [Result_9], [\"query\"]),\n findStakingPoolPageV2: IDL.Func(\n [IDL.Opt(IDL.Nat), IDL.Nat, IDL.Nat, IDL.Opt(IDL.Text), IDL.Opt(IDL.Text)],\n [Result_9],\n [\"query\"],\n ),\n getAdmins: IDL.Func([], [Result_8], [\"query\"]),\n getCycleInfo: IDL.Func([], [Result_7], []),\n getGlobalData: IDL.Func([], [Result_6], [\"query\"]),\n getInitArgs: IDL.Func([], [Result_5], [\"query\"]),\n getOperationInfo: IDL.Func([], [Result_4], [\"query\"]),\n getPoolStatInfo: IDL.Func([IDL.Principal], [Result_3], [\"query\"]),\n getStakingPool: IDL.Func([IDL.Principal], [Result_1], [\"query\"]),\n getVersion: IDL.Func([], [IDL.Text], [\"query\"]),\n removeStakingPoolControllers: IDL.Func([IDL.Principal, IDL.Vec(IDL.Principal)], [], []),\n setAdmins: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n setRewardFee: IDL.Func([IDL.Nat], [Result_2], []),\n setStakingPoolAdmins: IDL.Func([IDL.Principal, IDL.Vec(IDL.Principal)], [], []),\n setStakingPoolTime: IDL.Func([IDL.Principal, IDL.Nat, IDL.Nat], [Result_1], []),\n setUpdateGlobalDataState: IDL.Func([IDL.Bool], [Result_2], []),\n setUserIndexCanister: IDL.Func([IDL.Principal], [Result_2], []),\n stopStakingPool: IDL.Func([IDL.Principal], [Result_1], []),\n stopTimer: IDL.Func([], [], []),\n unclaimdRewardFee: IDL.Func([IDL.Principal], [Result], []),\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Result = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n const TransType = IDL.Variant({\n withdraw: IDL.Null,\n liquidate: IDL.Null,\n deposit: IDL.Null,\n unstake: IDL.Null,\n stake: IDL.Null,\n harvest: IDL.Null,\n });\n const TransTokenType = IDL.Variant({\n stakeToken: IDL.Null,\n rewardToken: IDL.Null,\n });\n const Record = IDL.Record({\n to: IDL.Principal,\n stakingTokenSymbol: IDL.Text,\n result: IDL.Text,\n rewardTokenSymbol: IDL.Text,\n stakingToken: IDL.Text,\n rewardToken: IDL.Text,\n stakingStandard: IDL.Text,\n transType: TransType,\n from: IDL.Principal,\n transTokenType: TransTokenType,\n errMsg: IDL.Text,\n rewardStandard: IDL.Text,\n timestamp: IDL.Nat,\n stakingTokenDecimals: IDL.Nat,\n amount: IDL.Nat,\n rewardTokenDecimals: IDL.Nat,\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(Record),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_9 = IDL.Variant({ ok: Page_1, err: IDL.Text });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result_8 = IDL.Variant({\n ok: IDL.Vec(IDL.Tuple(IDL.Nat, Record)),\n err: Error,\n });\n const PublicUserInfo = IDL.Record({\n pendingReward: IDL.Nat,\n lastRewardTime: IDL.Nat,\n stakeAmount: IDL.Nat,\n rewardTokenBalance: IDL.Nat,\n rewardDebt: IDL.Nat,\n lastStakeTime: IDL.Nat,\n stakeTokenBalance: IDL.Nat,\n });\n const Page = IDL.Record({\n content: IDL.Vec(IDL.Tuple(IDL.Principal, PublicUserInfo)),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_7 = IDL.Variant({ ok: Page, err: IDL.Text });\n const Result_6 = IDL.Variant({\n ok: IDL.Vec(IDL.Principal),\n err: Error,\n });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Result_5 = IDL.Variant({ ok: CycleInfo, err: Error });\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const LiquidationStatus = IDL.Variant({\n pending: IDL.Null,\n liquidation: IDL.Null,\n liquidated: IDL.Null,\n });\n const PublicStakingPoolInfo = IDL.Record({\n stakingTokenSymbol: IDL.Text,\n startTime: IDL.Nat,\n lastRewardTime: IDL.Nat,\n totalDeposit: IDL.Nat,\n rewardTokenSymbol: IDL.Text,\n creator: IDL.Principal,\n stakingToken: Token,\n rewardToken: Token,\n totalUnstaked: IDL.Float64,\n rewardPerTime: IDL.Nat,\n totalHarvest: IDL.Float64,\n name: IDL.Text,\n liquidationStatus: LiquidationStatus,\n createTime: IDL.Nat,\n stakingTokenFee: IDL.Nat,\n rewardFee: IDL.Nat,\n rewardDebt: IDL.Nat,\n rewardTokenFee: IDL.Nat,\n accPerShare: IDL.Nat,\n stakingTokenDecimals: IDL.Nat,\n bonusEndTime: IDL.Nat,\n totalStaked: IDL.Float64,\n rewardTokenDecimals: IDL.Nat,\n feeReceiverCid: IDL.Principal,\n });\n const Result_1 = IDL.Variant({\n ok: PublicStakingPoolInfo,\n err: IDL.Text,\n });\n const Result_4 = IDL.Variant({ ok: PublicUserInfo, err: IDL.Text });\n const Result_2 = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const Result_3 = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const UpdateStakingPool = IDL.Record({\n startTime: IDL.Nat,\n rewardPerTime: IDL.Nat,\n bonusEndTime: IDL.Nat,\n });\n return IDL.Service({\n claim: IDL.Func([], [Result], []),\n deposit: IDL.Func([], [Result], []),\n depositFrom: IDL.Func([IDL.Nat], [Result], []),\n findRewardRecordPage: IDL.Func([IDL.Opt(IDL.Principal), IDL.Nat, IDL.Nat], [Result_9], [\"query\"]),\n findStakingRecordPage: IDL.Func([IDL.Opt(IDL.Principal), IDL.Nat, IDL.Nat], [Result_9], [\"query\"]),\n findTransferRecord: IDL.Func([], [Result_8], [\"query\"]),\n findUserInfo: IDL.Func([IDL.Nat, IDL.Nat], [Result_7], [\"query\"]),\n getAdmins: IDL.Func([], [Result_6], [\"query\"]),\n getCycleInfo: IDL.Func([], [Result_5], []),\n getPoolInfo: IDL.Func([], [Result_1], [\"query\"]),\n getUserInfo: IDL.Func([IDL.Principal], [Result_4], [\"query\"]),\n getVersion: IDL.Func([], [IDL.Text], [\"query\"]),\n harvest: IDL.Func([], [Result_2], []),\n liquidation: IDL.Func([], [Result], []),\n pendingReward: IDL.Func([IDL.Principal], [Result_2], [\"query\"]),\n refundRewardToken: IDL.Func([], [Result], []),\n refundUserToken: IDL.Func([], [Result], []),\n removeTransferRecord: IDL.Func([IDL.Nat, IDL.Bool], [Result_3], []),\n setAdmins: IDL.Func([IDL.Vec(IDL.Principal)], [], []),\n stake: IDL.Func([], [Result_2], []),\n stop: IDL.Func([], [Result_1], []),\n unclaimdRewardFee: IDL.Func([], [Result_2], [\"query\"]),\n unstake: IDL.Func([IDL.Nat], [Result_2], []),\n updateStakingPool: IDL.Func([UpdateStakingPool], [Result_1], []),\n withdraw: IDL.Func([IDL.Bool, IDL.Nat], [Result], []),\n withdrawRewardFee: IDL.Func([], [Result], []),\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Result_1 = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const CycleInfo = IDL.Record({ balance: IDL.Nat, available: IDL.Nat });\n const Error = IDL.Variant({\n CommonError: IDL.Null,\n InternalError: IDL.Text,\n UnsupportedToken: IDL.Text,\n InsufficientFunds: IDL.Null,\n });\n const Result_6 = IDL.Variant({ ok: CycleInfo, err: Error });\n const APRInfo = IDL.Record({\n apr: IDL.Float64,\n day: IDL.Nat,\n rewardPerTime: IDL.Nat,\n time: IDL.Nat,\n stakingPool: IDL.Principal,\n stakingTokenPriceUSD: IDL.Float64,\n rewardTokenPriceUSD: IDL.Float64,\n stakingTokenDecimals: IDL.Nat,\n stakingTokenAmount: IDL.Float64,\n rewardTokenDecimals: IDL.Nat,\n });\n const Result_5 = IDL.Variant({ ok: IDL.Vec(APRInfo), err: IDL.Text });\n const Result_4 = IDL.Variant({\n ok: IDL.Tuple(IDL.Nat, IDL.Nat, IDL.Principal),\n err: IDL.Text,\n });\n const PublicUserInfo = IDL.Record({\n pendingReward: IDL.Nat,\n lastRewardTime: IDL.Nat,\n stakeAmount: IDL.Nat,\n rewardTokenBalance: IDL.Nat,\n rewardDebt: IDL.Nat,\n lastStakeTime: IDL.Nat,\n stakeTokenBalance: IDL.Nat,\n });\n const Token = IDL.Record({ address: IDL.Text, standard: IDL.Text });\n const UserPool = IDL.Record({\n userInfo: PublicUserInfo,\n stakingToken: Token,\n rewardToken: Token,\n owner: IDL.Principal,\n stakingPool: IDL.Principal,\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(UserPool),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_3 = IDL.Variant({ ok: Page_1, err: Page_1 });\n const StakingPoolInfo = IDL.Record({\n stakingTokenSymbol: IDL.Text,\n startTime: IDL.Nat,\n rewardTokenSymbol: IDL.Text,\n creator: IDL.Principal,\n stakingToken: Token,\n rewardToken: Token,\n rewardPerTime: IDL.Nat,\n name: IDL.Text,\n createTime: IDL.Nat,\n stakingTokenFee: IDL.Nat,\n rewardTokenFee: IDL.Nat,\n stakingTokenDecimals: IDL.Nat,\n bonusEndTime: IDL.Nat,\n rewardTokenDecimals: IDL.Nat,\n canisterId: IDL.Principal,\n });\n const Page = IDL.Record({\n content: IDL.Vec(StakingPoolInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat,\n });\n const Result_2 = IDL.Variant({ ok: Page, err: IDL.Text });\n const UserStakedToken = IDL.Record({\n ledgerId: IDL.Principal,\n value: IDL.Float64,\n price: IDL.Float64,\n amount: IDL.Float64,\n poolId: IDL.Principal,\n });\n const Result = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n return IDL.Service({\n computeStakingPool: IDL.Func([], [Result_1], []),\n getCycleInfo: IDL.Func([], [Result_6], []),\n getUSDPrice: IDL.Func([IDL.Text], [IDL.Float64], []),\n getVersion: IDL.Func([], [IDL.Text], [\"query\"]),\n queryAPR: IDL.Func([IDL.Principal, IDL.Nat, IDL.Nat], [Result_5], [\"query\"]),\n queryIndexInfo: IDL.Func([], [Result_4], [\"query\"]),\n queryPool: IDL.Func([IDL.Principal, IDL.Nat, IDL.Nat, IDL.Opt(IDL.Text), IDL.Opt(IDL.Text)], [Result_3], [\"query\"]),\n queryStakingPool: IDL.Func([IDL.Nat, IDL.Nat], [Result_2], [\"query\"]),\n queryUserStakedTokens: IDL.Func([IDL.Principal], [IDL.Vec(UserStakedToken)], [\"query\"]),\n syncStakingPool: IDL.Func([], [Result_1], []),\n updateUser: IDL.Func([IDL.Principal, PublicUserInfo], [Result], []),\n });\n};\n","import { ActorIdentity } from \"@icpswap/types\";\nimport {\n TokenPool,\n StakingPoolController,\n StakingPoolControllerInterfaceFactory,\n TokenPoolInterfaceFactory,\n StakeIndex,\n StakeIndexInterfaceFactor,\n} from \"@icpswap/candid\";\n\nimport { actor } from \"../actor\";\nimport { ActorName } from \"../ActorName\";\n\nexport const stakingPoolController = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.StakingTokenController,\n identity,\n idlFactory: StakingPoolControllerInterfaceFactory,\n });\n\nexport const stakingPool = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n canisterId,\n actorName: ActorName.TokenPool,\n identity,\n idlFactory: TokenPoolInterfaceFactory,\n });\n\nexport const stakeIndex = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.StakeIndex,\n identity,\n idlFactory: StakeIndexInterfaceFactor,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const BoolResult = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const ClaimEventInfo = IDL.Record({\n claimEventCreator: IDL.Principal,\n tokenCid: IDL.Text,\n tokenStandard: IDL.Text,\n claimedTokenAmount: IDL.Nat,\n claimEventId: IDL.Text,\n tokenDecimals: IDL.Nat8,\n claimEventStatus: IDL.Nat,\n tokenSymbol: IDL.Text,\n totalUserAmount: IDL.Nat,\n totalTokenAmount: IDL.Nat,\n claimedUserAmount: IDL.Nat,\n tokenName: IDL.Text,\n claimCanisterId: IDL.Text,\n claimEventName: IDL.Text\n });\n const TextResult = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const Page = IDL.Record({\n content: IDL.Vec(ClaimEventInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_2 = IDL.Variant({ ok: Page, err: IDL.Text });\n const User__1 = IDL.Variant({\n principal: IDL.Principal,\n address: IDL.Text\n });\n const ClaimRecordInfo = IDL.Record({\n claimAmount: IDL.Nat,\n tokenCid: IDL.Text,\n tokenStandard: IDL.Text,\n claimStatus: IDL.Nat,\n claimEventId: IDL.Text,\n tokenDecimals: IDL.Nat8,\n claimTime: IDL.Opt(IDL.Int),\n claimUser: User__1,\n tokenSymbol: IDL.Text,\n tokenName: IDL.Text,\n claimEventName: IDL.Text\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(ClaimRecordInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_3 = IDL.Variant({ ok: Page_1, err: IDL.Text });\n const ResponseResult_1 = IDL.Variant({\n ok: IDL.Vec(IDL.Text),\n err: IDL.Text\n });\n const ResponseResult = IDL.Variant({\n ok: ClaimEventInfo,\n err: IDL.Text\n });\n const User = IDL.Variant({\n principal: IDL.Principal,\n address: IDL.Text\n });\n const ClaimQuota = IDL.Record({ user: User, quota: IDL.Nat });\n return IDL.Service({\n addAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n claim: IDL.Func([IDL.Text], [BoolResult], []),\n create: IDL.Func([ClaimEventInfo], [TextResult], []),\n cycleAvailable: IDL.Func([], [NatResult], [\"query\"]),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n delete: IDL.Func([IDL.Text], [BoolResult], []),\n findAllEvents: IDL.Func([IDL.Nat, IDL.Nat], [ResponseResult_2], [\"query\"]),\n findCreateEvents: IDL.Func([IDL.Principal, IDL.Nat, IDL.Nat], [ResponseResult_2], [\"query\"]),\n findEventRecords: IDL.Func([IDL.Text, IDL.Opt(IDL.Nat), IDL.Nat, IDL.Nat], [ResponseResult_3], []),\n findUserEventRecords: IDL.Func(\n [IDL.Principal, IDL.Opt(IDL.Text), IDL.Opt(IDL.Nat), IDL.Nat, IDL.Nat],\n [ResponseResult_3],\n []\n ),\n findUserEvents: IDL.Func([IDL.Principal, IDL.Nat, IDL.Nat], [ResponseResult_2], [\"query\"]),\n getAdminList: IDL.Func([], [ResponseResult_1], [\"query\"]),\n getControllerAddress: IDL.Func([], [TextResult], [\"query\"]),\n getEvent: IDL.Func([IDL.Text], [ResponseResult], [\"query\"]),\n getStorageCanister: IDL.Func([], [TextResult], [\"query\"]),\n importQuota: IDL.Func([IDL.Text, IDL.Vec(ClaimQuota)], [BoolResult], []),\n ready: IDL.Func([IDL.Text], [BoolResult], []),\n removeAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n setStatus: IDL.Func([IDL.Text, IDL.Bool], [BoolResult], []),\n setStorageCanister: IDL.Func([IDL.Text], [BoolResult], []),\n unlock: IDL.Func([IDL.Principal], [BoolResult], []),\n updateEvent: IDL.Func([ClaimEventInfo], [BoolResult], [])\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const BoolResult = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const ClaimEventInfo = IDL.Record({\n claimEventCreator: IDL.Principal,\n tokenCid: IDL.Text,\n tokenStandard: IDL.Text,\n claimedTokenAmount: IDL.Nat,\n claimEventId: IDL.Text,\n tokenDecimals: IDL.Nat8,\n claimEventStatus: IDL.Nat,\n tokenSymbol: IDL.Text,\n totalUserAmount: IDL.Nat,\n totalTokenAmount: IDL.Nat,\n claimedUserAmount: IDL.Nat,\n tokenName: IDL.Text,\n claimCanisterId: IDL.Text,\n claimEventName: IDL.Text\n });\n const User__1 = IDL.Variant({\n principal: IDL.Principal,\n address: IDL.Text\n });\n const ClaimRecordInfo = IDL.Record({\n claimAmount: IDL.Nat,\n tokenCid: IDL.Text,\n tokenStandard: IDL.Text,\n claimStatus: IDL.Nat,\n claimEventId: IDL.Text,\n tokenDecimals: IDL.Nat8,\n claimTime: IDL.Opt(IDL.Int),\n claimUser: User__1,\n tokenSymbol: IDL.Text,\n tokenName: IDL.Text,\n claimEventName: IDL.Text\n });\n const ResponseResult = IDL.Variant({\n ok: ClaimEventInfo,\n err: IDL.Text\n });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const Page = IDL.Record({\n content: IDL.Vec(ClaimRecordInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_3 = IDL.Variant({ ok: Page, err: IDL.Text });\n const Page_1 = IDL.Record({\n content: IDL.Vec(ClaimEventInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_4 = IDL.Variant({ ok: Page_1, err: IDL.Text });\n const User = IDL.Variant({\n principal: IDL.Principal,\n address: IDL.Text\n });\n const ResponseResult_2 = IDL.Variant({\n ok: IDL.Vec(IDL.Text),\n err: IDL.Text\n });\n const ResponseResult_1 = IDL.Variant({\n ok: IDL.Tuple(User, IDL.Text),\n err: IDL.Text\n });\n return IDL.Service({\n addAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n addEvent: IDL.Func([ClaimEventInfo], [BoolResult], []),\n addEventRecords: IDL.Func([IDL.Text, IDL.Vec(ClaimRecordInfo)], [BoolResult], []),\n claim: IDL.Func([IDL.Text, IDL.Principal], [ResponseResult], []),\n cycleAvailable: IDL.Func([], [NatResult], [\"query\"]),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n deleteEvent: IDL.Func([IDL.Text], [BoolResult], []),\n findAllEventRecords: IDL.Func([IDL.Opt(IDL.Nat), IDL.Nat, IDL.Nat], [ResponseResult_3], [\"query\"]),\n findAllEvents: IDL.Func([IDL.Opt(IDL.Nat), IDL.Nat, IDL.Nat], [ResponseResult_4], [\"query\"]),\n findEventRecords: IDL.Func([IDL.Text, IDL.Opt(IDL.Nat), IDL.Nat, IDL.Nat], [ResponseResult_3], [\"query\"]),\n findUserEventRecords: IDL.Func(\n [User, IDL.Opt(IDL.Text), IDL.Opt(IDL.Nat), IDL.Nat, IDL.Nat],\n [ResponseResult_3],\n [\"query\"]\n ),\n getAdminList: IDL.Func([], [ResponseResult_2], [\"query\"]),\n getCanisterPrincipal: IDL.Func([], [ResponseResult_1], [\"query\"]),\n getEvent: IDL.Func([IDL.Text], [ResponseResult], [\"query\"]),\n ready: IDL.Func([IDL.Text], [BoolResult], []),\n removeAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n setStatus: IDL.Func([IDL.Text, IDL.Bool], [BoolResult], []),\n userClaim: IDL.Func([IDL.Text], [ResponseResult], [])\n });\n};\n","import { actor } from \"./actor\";\nimport { ActorIdentity } from \"@icpswap/types\";\nimport { ActorName } from \"./ActorName\";\nimport {\n ClaimController,\n ClaimControllerInterfaceFactory,\n ClaimStorage,\n ClaimStorageInterfaceFactory,\n} from \"@icpswap/candid\";\n\nexport const tokenClaimController = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.ClaimController,\n identity,\n idlFactory: ClaimControllerInterfaceFactory,\n });\n\nexport const tokenClaimStorage = (\n canisterId: string,\n identity?: ActorIdentity\n) =>\n actor.create({\n identity,\n canisterId,\n idlFactory: ClaimStorageInterfaceFactory,\n });\n","export const idlFactory = ({ IDL }: any) => {\n const User = IDL.Variant({\n principal: IDL.Principal,\n address: IDL.Text\n });\n const ProjectInfo = IDL.Record({\n tokenCid: IDL.Text,\n logo: IDL.Text,\n name: IDL.Text,\n projectCid: IDL.Text,\n managerAddress: User,\n tokenStand: IDL.Text\n });\n const BoolResult = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const Page = IDL.Record({\n content: IDL.Vec(ProjectInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_2 = IDL.Variant({ ok: Page, err: IDL.Text });\n const ResponseResult_1 = IDL.Variant({\n ok: IDL.Vec(IDL.Text),\n err: IDL.Text\n });\n const TextResult = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n const ResponseResult = IDL.Variant({ ok: ProjectInfo, err: IDL.Text });\n return IDL.Service({\n add: IDL.Func([ProjectInfo], [BoolResult], []),\n addAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n create: IDL.Func([ProjectInfo], [BoolResult], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], []),\n delete: IDL.Func([IDL.Text], [BoolResult], []),\n findProjectPage: IDL.Func([IDL.Nat, IDL.Nat], [ResponseResult_2], [\"query\"]),\n getAdminList: IDL.Func([], [ResponseResult_1], [\"query\"]),\n getFileCanister: IDL.Func([], [TextResult], [\"query\"]),\n getProject: IDL.Func([IDL.Text], [ResponseResult], [\"query\"]),\n removeAdmin: IDL.Func([IDL.Text], [BoolResult], []),\n setFileCanister: IDL.Func([IDL.Text], [BoolResult], [])\n });\n};\n","export const idlFactory = ({ IDL }: any) => {\n const BoolResult = IDL.Variant({ ok: IDL.Bool, err: IDL.Text });\n const KVPair = IDL.Record({ k: IDL.Text, v: IDL.Nat });\n const ProposalCreateInfo = IDL.Record({\n title: IDL.Text,\n content: IDL.Text,\n endTime: IDL.Int,\n createUser: IDL.Text,\n beginTime: IDL.Int,\n userAmount: IDL.Nat,\n options: IDL.Vec(KVPair)\n });\n const TextResult = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const User = IDL.Variant({\n principal: IDL.Principal,\n address: IDL.Text\n });\n const ProjectInfo = IDL.Record({\n tokenCid: IDL.Text,\n logo: IDL.Text,\n name: IDL.Text,\n projectCid: IDL.Text,\n managerAddress: User,\n tokenStand: IDL.Text\n });\n const ProposalInfo = IDL.Record({\n id: IDL.Text,\n storageCanisterId: IDL.Text,\n title: IDL.Text,\n content: IDL.Text,\n endTime: IDL.Int,\n createTime: IDL.Int,\n createUser: IDL.Text,\n state: IDL.Nat,\n createAddress: User,\n beginTime: IDL.Int,\n userAmount: IDL.Nat,\n options: IDL.Vec(KVPair),\n project: ProjectInfo\n });\n const Page_3 = IDL.Record({\n content: IDL.Vec(ProposalInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_5 = IDL.Variant({ ok: Page_3, err: IDL.Text });\n const UserVoteRecord = IDL.Record({\n voteTime: IDL.Int,\n address: User,\n usedProof: IDL.Nat,\n options: IDL.Vec(KVPair)\n });\n const Page_2 = IDL.Record({\n content: IDL.Vec(UserVoteRecord),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_4 = IDL.Variant({ ok: Page_2, err: IDL.Text });\n const UserVotePowersInfo = IDL.Record({\n availablePowers: IDL.Nat,\n address: User,\n usedPowers: IDL.Nat\n });\n const Page_1 = IDL.Record({\n content: IDL.Vec(UserVotePowersInfo),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_3 = IDL.Variant({ ok: Page_1, err: IDL.Text });\n const Page = IDL.Record({\n content: IDL.Vec(IDL.Principal),\n offset: IDL.Nat,\n limit: IDL.Nat,\n totalElements: IDL.Nat\n });\n const ResponseResult_2 = IDL.Variant({ ok: Page, err: IDL.Text });\n const ProjectInfo__1 = IDL.Record({\n tokenCid: IDL.Text,\n logo: IDL.Text,\n name: IDL.Text,\n projectCid: IDL.Text,\n managerAddress: User,\n tokenStand: IDL.Text\n });\n const ResponseResult_1 = IDL.Variant({\n ok: ProjectInfo__1,\n err: IDL.Text\n });\n const ResponseResult = IDL.Variant({ ok: ProposalInfo, err: IDL.Text });\n const VoteProjectCanister = IDL.Service({\n addAdmin: IDL.Func([IDL.Principal], [BoolResult], []),\n create: IDL.Func([ProposalCreateInfo], [TextResult], []),\n cycleAvailable: IDL.Func([], [NatResult], []),\n cycleBalance: IDL.Func([], [NatResult], []),\n deleteAdmin: IDL.Func([IDL.Principal], [BoolResult], []),\n deleteProposal: IDL.Func([IDL.Text], [BoolResult], []),\n findPage: IDL.Func([IDL.Opt(IDL.Text), IDL.Opt(IDL.Nat), IDL.Nat, IDL.Nat], [ResponseResult_5], [\"query\"]),\n findRecordPage: IDL.Func([IDL.Text, IDL.Nat, IDL.Nat], [ResponseResult_4], [\"query\"]),\n findVotePower: IDL.Func([IDL.Opt(IDL.Text), IDL.Opt(IDL.Text), IDL.Nat, IDL.Nat], [ResponseResult_3], [\"query\"]),\n getAdminList: IDL.Func([IDL.Nat, IDL.Nat], [ResponseResult_2], [\"query\"]),\n getProject: IDL.Func([], [ResponseResult_1], [\"query\"]),\n getProposal: IDL.Func([IDL.Text], [ResponseResult], [\"query\"]),\n getVotePowerCount: IDL.Func([], [IDL.Nat], [\"query\"]),\n isProjectAdmin: IDL.Func([IDL.Principal], [IDL.Bool], [\"query\"]),\n setOwner: IDL.Func([IDL.Principal], [BoolResult], []),\n setProject: IDL.Func([ProjectInfo__1, IDL.Text], [BoolResult], []),\n setState: IDL.Func([IDL.Text, IDL.Nat], [BoolResult], []),\n setVotePower: IDL.Func([IDL.Text, IDL.Vec(UserVotePowersInfo)], [BoolResult], []),\n updateProposal: IDL.Func([ProposalInfo], [BoolResult], []),\n vote: IDL.Func([IDL.Text, IDL.Text, IDL.Nat], [BoolResult], [])\n });\n return VoteProjectCanister;\n};\n","export const idlFactory = ({ IDL }: any) => {\n const Chunk = IDL.Record({\n content: IDL.Vec(IDL.Nat8),\n batch_id: IDL.Nat\n });\n const NatResult = IDL.Variant({ ok: IDL.Nat, err: IDL.Text });\n const HeaderField = IDL.Tuple(IDL.Text, IDL.Text);\n const HttpRequest = IDL.Record({\n url: IDL.Text,\n method: IDL.Text,\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(HeaderField)\n });\n const StreamingCallbackToken = IDL.Record({\n key: IDL.Text,\n index: IDL.Nat,\n content_encoding: IDL.Text\n });\n const StreamingStrategy = IDL.Variant({\n Callback: IDL.Record({\n token: StreamingCallbackToken,\n callback: IDL.Func([], [], [])\n })\n });\n const HttpResponse = IDL.Record({\n body: IDL.Vec(IDL.Nat8),\n headers: IDL.Vec(HeaderField),\n streaming_strategy: IDL.Opt(StreamingStrategy),\n status_code: IDL.Nat16\n });\n const StreamingCallbackHttpResponse = IDL.Record({\n token: IDL.Opt(StreamingCallbackToken),\n body: IDL.Vec(IDL.Nat8)\n });\n const TextResult = IDL.Variant({ ok: IDL.Text, err: IDL.Text });\n const FileCanister = IDL.Service({\n addAdmin: IDL.Func([IDL.Text], [IDL.Bool], []),\n chunkSize: IDL.Func([], [IDL.Nat], [\"query\"]),\n clearChunk: IDL.Func([], [IDL.Bool], []),\n commit_batch: IDL.Func(\n [\n IDL.Record({\n batch_id: IDL.Nat,\n content_type: IDL.Text,\n chunk_ids: IDL.Vec(IDL.Nat)\n }),\n IDL.Text\n ],\n [],\n []\n ),\n create_batch: IDL.Func([IDL.Text], [IDL.Record({ batch_id: IDL.Nat })], []),\n create_chunk: IDL.Func([Chunk, IDL.Text], [IDL.Record({ chunk_id: IDL.Nat })], []),\n cycleAvailable: IDL.Func([], [NatResult], [\"query\"]),\n cycleBalance: IDL.Func([], [NatResult], [\"query\"]),\n getAdminList: IDL.Func([], [IDL.Vec(IDL.Text)], [\"query\"]),\n http_request: IDL.Func([HttpRequest], [HttpResponse], [\"query\"]),\n http_request_streaming_callback: IDL.Func([StreamingCallbackToken], [StreamingCallbackHttpResponse], [\"query\"]),\n maxFileSize: IDL.Func([IDL.Nat], [TextResult], []),\n removeAdmin: IDL.Func([IDL.Text], [IDL.Bool], [])\n });\n return FileCanister;\n};\n","import { actor } from \"./actor\";\nimport { ActorName } from \"./ActorName\";\nimport { ActorIdentity } from \"@icpswap/types\";\n\nimport {\n VoteController,\n VoteControllerInterfaceFactory,\n VoteFile,\n VoteFileInterfaceFactory,\n VoteProject,\n VoteProjectInterfaceFactory,\n} from \"@icpswap/candid\";\n\nexport const votingController = (identity?: ActorIdentity) =>\n actor.create({\n actorName: ActorName.VotingController,\n idlFactory: VoteControllerInterfaceFactory,\n identity,\n });\n\nexport const votingCanister = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n canisterId,\n identity,\n idlFactory: VoteProjectInterfaceFactory,\n });\n\nexport const votingFile = (canisterId: string, identity?: ActorIdentity) =>\n actor.create({\n canisterId,\n identity,\n idlFactory: VoteFileInterfaceFactory,\n });\n","export const LEDGER_CANISTER_ID = \"ryjl3-tyaaa-aaaaa-aaaba-cai\";\n\nexport const GOVERNANCE_CANISTER_ID = \"rrkah-fqaaa-aaaaa-aaaaq-cai\";\n\nexport const WICP_CANISTER_ID = \"5xnja-6aaaa-aaaan-qad4a-cai\";\n\nexport const ICS_CANISTER_ID = \"ca6gz-lqaaa-aaaaq-aacwa-cai\";\n","export enum ChainId {\n MAINNET = 1,\n GOERLI = 5,\n SEPOLIA = 11155111,\n OPTIMISM = 10,\n OPTIMISM_GOERLI = 420,\n OPTIMISM_SEPOLIA = 11155420,\n ARBITRUM_ONE = 42161,\n ARBITRUM_GOERLI = 421613,\n ARBITRUM_SEPOLIA = 421614,\n POLYGON = 137,\n POLYGON_MUMBAI = 80001,\n CELO = 42220,\n CELO_ALFAJORES = 44787,\n GNOSIS = 100,\n MOONBEAM = 1284,\n BNB = 56,\n AVALANCHE = 43114,\n BASE_GOERLI = 84531,\n BASE = 8453,\n ZORA = 7777777,\n ZORA_SEPOLIA = 999999999,\n ROOTSTOCK = 30,\n BLAST = 81457,\n}\n\nexport const SUPPORTED_CHAINS = [\n ChainId.MAINNET,\n ChainId.OPTIMISM,\n ChainId.OPTIMISM_GOERLI,\n ChainId.OPTIMISM_SEPOLIA,\n ChainId.ARBITRUM_ONE,\n ChainId.ARBITRUM_GOERLI,\n ChainId.ARBITRUM_SEPOLIA,\n ChainId.POLYGON,\n ChainId.POLYGON_MUMBAI,\n ChainId.GOERLI,\n ChainId.SEPOLIA,\n ChainId.CELO_ALFAJORES,\n ChainId.CELO,\n ChainId.BNB,\n ChainId.AVALANCHE,\n ChainId.BASE,\n ChainId.BASE_GOERLI,\n ChainId.ZORA,\n ChainId.ZORA_SEPOLIA,\n ChainId.ROOTSTOCK,\n ChainId.BLAST,\n] as const;\nexport type SupportedChainsType = (typeof SUPPORTED_CHAINS)[number];\n\nexport enum NativeCurrencyName {\n // Strings match input for CLI\n ETHER = \"ETH\",\n MATIC = \"MATIC\",\n CELO = \"CELO\",\n GNOSIS = \"XDAI\",\n MOONBEAM = \"GLMR\",\n BNB = \"BNB\",\n AVAX = \"AVAX\",\n ROOTSTOCK = \"RBTC\",\n}\n","export enum TOKEN_STANDARD {\n EXT = \"EXT\",\n DIP20 = \"DIP20\",\n ICP = \"ICP\",\n DIP20_WICP = \"DIP20-WICP\",\n DIP20_XTC = \"DIP20-XTC\",\n ICRC1 = \"ICRC1\",\n ICRC2 = \"ICRC2\",\n}\n","export enum TradeType {\n EXACT_INPUT = 0,\n EXACT_OUTPUT = 1,\n}\n\nexport enum Bound {\n LOWER = \"LOWER\",\n UPPER = \"UPPER\",\n}\n","import { useCallback } from \"react\";\nimport { resultFormat } from \"@icpswap/utils\";\nimport { node_index } from \"@icpswap/actor\";\nimport { PublicPoolOverView, PublicTokenOverview } from \"@icpswap/types\";\nimport { useCallsData } from \"../useCallData\";\n\nexport async function getNodeInfoAllPools() {\n return resultFormat(await (await node_index()).getAllPools()).data;\n}\n\nexport function useNodeInfoAllPools() {\n return useCallsData(\n useCallback(async () => {\n return await getNodeInfoAllPools();\n }, []),\n );\n}\n\nexport async function getNodeInfoAllTokens() {\n return resultFormat(await (await node_index()).getAllTokens()).data;\n}\n\nexport function useNodeInfoAllTokens() {\n return useCallsData(\n useCallback(async () => {\n return await getNodeInfoAllTokens();\n }, []),\n );\n}\n\nexport async function getInfoPoolStorageIds(pool: string) {\n return resultFormat(await (await node_index()).poolStorage(pool)).data;\n}\n\nexport function useInfoPoolStorageIds(pool: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!pool) return undefined;\n return await getInfoPoolStorageIds(pool!);\n }, [pool]),\n );\n}\n\nexport async function getInfoTokenStorageIds(token: string) {\n return resultFormat(await (await node_index()).tokenStorage(token)).data;\n}\n\nexport function useInfoTokenStorageIds(token: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!token) return undefined;\n return await getInfoTokenStorageIds(token!);\n }, [token]),\n );\n}\n\nexport async function getInfoUserStorageIds(principal: string) {\n return resultFormat(await (await node_index()).userStorage(principal)).data;\n}\n\nexport function useInfoUserStorageIds(principal: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!principal) return undefined;\n return await getInfoUserStorageIds(principal!);\n }, [principal]),\n );\n}\n","import { useMemo } from \"react\";\nimport useSwr from \"swr\";\nimport useSWRImmutable from \"swr/immutable\";\nimport type { PublicTokenOverview } from \"@icpswap/types\";\nimport { ckUSDC } from \"@icpswap/tokens\";\n\nimport { getNodeInfoAllTokens } from \"./node\";\n\nexport function useFetchInfoAllTokens() {\n const { data } = useSwr(\n [\"info_all_tokens\"],\n async () => {\n return await getNodeInfoAllTokens();\n },\n {\n refreshInterval: 300000,\n },\n );\n\n return data;\n}\n\nexport function useInfoAllTokens() {\n const { data } = useSWRImmutable([\"info_all_tokens\"]);\n return useMemo(() => data, data);\n}\n\nexport function useInfoToken(tokenId: string | undefined): PublicTokenOverview | undefined {\n const { data } = useSWRImmutable([\"info_all_tokens\"]);\n\n return useMemo(() => {\n const info = data?.find((e) => e.address === tokenId);\n // Make ckUSDC price USD is 1\n if (tokenId === ckUSDC.address && info) return { ...info, priceUSD: 1 } as PublicTokenOverview;\n\n return info;\n }, [data, tokenId]);\n}\n","import { resultFormat } from \"@icpswap/utils\";\nimport { sns_wasm } from \"@icpswap/actor\";\nimport type { ListDeployedSnsesResponse } from \"@icpswap/candid\";\nimport { useCallback, useEffect, useMemo, useState } from \"react\";\nimport type { SnsTokensInfo } from \"@icpswap/types\";\nimport { useCallsData } from \"../useCallData\";\n\nexport async function getListDeployedSNSs() {\n return resultFormat(await (await sns_wasm()).list_deployed_snses({})).data;\n}\n\nexport function useListDeployedSNSs() {\n return useCallsData(\n useCallback(async () => {\n return await getListDeployedSNSs();\n }, []),\n );\n}\n\nexport async function getSnsTokensInfo(page: number): Promise {\n let result: any;\n\n try {\n result = await fetch(`https://3r4gx-wqaaa-aaaaq-aaaia-cai.icp0.io/v1/sns/list/page/${page}/slow.json`).catch(\n () => undefined,\n );\n } catch (error) {\n console.log(error);\n }\n\n if (!result || result.ok === false) return undefined;\n\n return (await result.json()) as SnsTokensInfo[];\n}\n\nconst sns_all_tokens_info_call_rounds = 5;\n\nexport async function getSnsAllTokensInfo(): Promise {\n let fetch_index = 0;\n let fetch_done = false;\n\n let data: SnsTokensInfo[] = [];\n\n const fetch = async (index: number) => {\n fetch_index += 1;\n\n const allResults: (SnsTokensInfo | undefined)[] = (\n await Promise.all(\n Array.from({ length: sns_all_tokens_info_call_rounds }, (_, i) => i).map(async (call_index) => {\n const page = call_index + index * sns_all_tokens_info_call_rounds;\n const result = await getSnsTokensInfo(page);\n\n if (!result) return undefined;\n\n data = data.concat(result);\n\n if (result.length < 10) {\n fetch_done = true;\n }\n\n return result;\n }),\n )\n ).flat();\n\n // If happened network error, make is fetch_done = true when have two or more undefined result\n if (allResults.filter((e) => !e).length >= 2) {\n fetch_done = true;\n }\n\n if (!fetch_done) {\n await fetch(fetch_index);\n }\n };\n\n await fetch(fetch_index);\n\n return data\n .sort((a, b) => {\n if (a.index < b.index) return -1;\n if (a.index > b.index) return 1;\n return 0;\n })\n .map((e) => ({ ...e, meta: { ...e.meta, logo: `https://3r4gx-wqaaa-aaaaq-aaaia-cai.icp0.io${e.meta.logo}` } }));\n}\n\nexport function useSnsAllTokensInfo() {\n const [snsAllTokensInfo, setSnsAllTokensInfo] = useState(undefined);\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n async function call() {\n setLoading(true);\n const data = await getSnsAllTokensInfo();\n setSnsAllTokensInfo(data);\n setLoading(false);\n }\n\n call();\n }, []);\n\n return useMemo(\n () => ({\n loading,\n result: snsAllTokensInfo,\n }),\n [loading, snsAllTokensInfo],\n );\n}\n","import { useCallback } from \"react\";\nimport { resultFormat, isAvailablePageArgs, availableArgsNull } from \"@icpswap/utils\";\nimport { stakingPoolController, stakingPool } from \"@icpswap/actor\";\nimport type {\n CreateStakingPoolArgs,\n StakingPoolInfo,\n StakingPoolControllerPoolInfo,\n StakingPoolTransaction,\n StakingPoolUserInfo,\n StakingPoolCycle,\n StakingPoolGlobalData,\n PaginationResult,\n StakeGlobalDataInfo,\n} from \"@icpswap/types\";\nimport { Principal } from \"@dfinity/principal\";\nimport { useCallsData } from \"../useCallData\";\n\n/* token controller */\nexport async function createStakingPool(args: CreateStakingPoolArgs) {\n return resultFormat(await (await stakingPoolController(true)).createStakingPool(args));\n}\n\nexport async function getStakingPools(state: bigint | undefined, offset: number, limit: number) {\n return resultFormat>(\n await (\n await stakingPoolController()\n ).findStakingPoolPage(availableArgsNull(state), BigInt(offset), BigInt(limit)),\n ).data;\n}\n\nexport function useStakingPools(state: bigint | undefined, offset: number, limit: number) {\n return useCallsData(\n useCallback(async () => {\n if (!isAvailablePageArgs(offset, limit)) return undefined;\n return await getStakingPools(state, offset, limit);\n }, [offset, limit, state]),\n );\n}\n\nexport interface GetStakePoolsProps {\n state: bigint | undefined;\n offset: number;\n limit: number;\n rewardTokenId?: string | null;\n stakeTokenId?: string | null;\n}\n\nexport async function getStakePools({ state, offset, limit, rewardTokenId, stakeTokenId }: GetStakePoolsProps) {\n return resultFormat>(\n await (\n await stakingPoolController()\n ).findStakingPoolPageV2(\n availableArgsNull(state),\n BigInt(offset),\n BigInt(limit),\n availableArgsNull(stakeTokenId),\n availableArgsNull(rewardTokenId),\n ),\n ).data;\n}\n\nexport interface UseStakePoolsProps {\n state: bigint | undefined;\n offset: number;\n limit: number;\n rewardTokenId?: string | null;\n stakeTokenId?: string | null;\n}\n\nexport function useStakePools({ state, offset, limit, rewardTokenId, stakeTokenId }: UseStakePoolsProps) {\n return useCallsData(\n useCallback(async () => {\n if (!isAvailablePageArgs(offset, limit)) return undefined;\n return await getStakePools({ state, offset, limit, rewardTokenId, stakeTokenId });\n }, [offset, limit, state, rewardTokenId, stakeTokenId]),\n );\n}\n\nexport async function getStakingPoolGlobalData() {\n return resultFormat(await (await stakingPoolController()).getGlobalData()).data;\n}\n\nexport function useStakingPoolGlobalData(reload?: boolean) {\n return useCallsData(\n useCallback(async () => {\n return await getStakingPoolGlobalData();\n }, []),\n reload,\n );\n}\n\nexport async function getStakingPoolFromController(canisterId: string) {\n return resultFormat(\n await (await stakingPoolController()).getStakingPool(Principal.fromText(canisterId)),\n ).data;\n}\n\nexport function useStakingPoolInfoFromController(canisterId: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getStakingPoolFromController(canisterId);\n }, [canisterId]),\n );\n}\n\n/* token pool */\nexport async function getStakingTokenPool(canisterId: string) {\n return resultFormat(await (await stakingPool(canisterId)).getPoolInfo()).data;\n}\n\nexport function useStakingTokenPool(canisterId: string | undefined, reload?: boolean) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getStakingTokenPool(canisterId);\n }, [canisterId]),\n reload,\n );\n}\n\nexport async function getStakingTokenUserInfo(canisterId: string, principal: Principal) {\n return resultFormat(await (await stakingPool(canisterId)).getUserInfo(principal)).data;\n}\n\nexport function useStakingTokenUserInfo(\n canisterId: string | undefined,\n principal: Principal | undefined,\n reload?: boolean,\n) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || !principal) return undefined;\n return await getStakingTokenUserInfo(canisterId, principal);\n }, [canisterId, principal]),\n reload,\n );\n}\n\n// export async function getStakingPoolAllUserInfo(canisterId: string, offset: number, limit: number) {\n// return resultFormat(\n// await (await stakingPool(canisterId)).findAllUserInfo(BigInt(offset), BigInt(limit)),\n// ).data;\n// }\n\n// export function useStakingPoolAllUserInfo(\n// canisterId: string | undefined,\n// offset: number,\n// limit: number,\n// reload?: boolean,\n// ) {\n// return useCallsData(\n// useCallback(async () => {\n// if (!canisterId || !isAvailablePageArgs(offset, limit)) return undefined;\n// return await getStakingPoolAllUserInfo(canisterId!, offset, limit);\n// }, [canisterId, offset, limit]),\n// reload,\n// );\n// }\n\nexport async function getStakingPoolCycles(canisterId: string) {\n return resultFormat(await (await stakingPool(canisterId)).getCycleInfo()).data;\n}\n\nexport function useStakingPoolCycles(canisterId: string | undefined, reload?: boolean) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getStakingPoolCycles(canisterId);\n }, [canisterId]),\n reload,\n );\n}\n\n/**\n * @description claim the failed deposit token\n * @param canisterId - pool canister id\n * @returns\n */\nexport async function stakingPoolClaim(canisterId: string) {\n return resultFormat(await (await stakingPool(canisterId, true)).claim());\n}\n\nexport async function stakingPoolDeposit(canisterId: string) {\n return resultFormat(await (await stakingPool(canisterId, true)).deposit());\n}\n\nexport async function stakingPoolDepositFrom(canisterId: string, amount: bigint) {\n return resultFormat(await (await stakingPool(canisterId, true)).depositFrom(amount));\n}\n\nexport async function stakingPoolHarvest(canisterId: string) {\n return resultFormat(await (await stakingPool(canisterId, true)).harvest());\n}\n\nexport async function stakingTokenStake(canisterId: string) {\n return resultFormat(await (await stakingPool(canisterId, true)).stake());\n}\n\n/**\n * @description withdraw the token for staked token and reward token\n * @export\n * @param {string} canisterId - pool canister id\n * @param {boolean} isStakeToken - staked token is true, reward token is false\n * @param {bigint} amount - withdraw amount\n * @return {*}\n */\nexport async function stakingPoolWithdraw(canisterId: string, isStakeToken: boolean, amount: bigint) {\n return resultFormat(await (await stakingPool(canisterId, true)).withdraw(isStakeToken, amount));\n}\n\nexport async function stakingPoolUnstake(canisterId: string, amount: bigint) {\n return resultFormat(await (await stakingPool(canisterId, true)).unstake(amount));\n}\n\n/* records */\nexport async function getStakingPoolTransactions(\n canisterId: string,\n principal: Principal | undefined,\n offset: number,\n limit: number,\n) {\n return resultFormat>(\n await (\n await stakingPool(canisterId)\n ).findStakingRecordPage(availableArgsNull(principal), BigInt(offset), BigInt(limit)),\n ).data;\n}\n\nexport function useStakingPoolTransactions(\n canisterId: string | undefined,\n principal: Principal | undefined,\n offset: number,\n limit: number,\n reload?: boolean,\n) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || !isAvailablePageArgs(offset, limit)) return undefined;\n return await getStakingPoolTransactions(canisterId, principal, offset, limit);\n }, [canisterId, offset, limit, principal]),\n reload,\n );\n}\n\nexport async function getStakingPoolClaimTransactions(\n canisterId: string,\n principal: Principal | undefined,\n offset: number,\n limit: number,\n) {\n return resultFormat>(\n await (\n await stakingPool(canisterId)\n ).findRewardRecordPage(availableArgsNull(principal), BigInt(offset), BigInt(limit)),\n ).data;\n}\n\nexport function useStakingPoolClaimTransactions(\n canisterId: string | undefined,\n principal: Principal | undefined,\n offset: number,\n limit: number,\n reload?: boolean,\n) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || !isAvailablePageArgs(offset, limit)) return undefined;\n return await getStakingPoolClaimTransactions(canisterId!, principal, offset, limit);\n }, [canisterId, offset, limit, principal]),\n reload,\n );\n}\n\nexport async function stakingPoolClaimRewards(canisterId: string, owner: Principal | undefined) {\n if (!owner) return resultFormat({ err: \"Principal is undefined\" });\n\n return resultFormat(await (await stakingPool(canisterId, true)).claim());\n}\n\nexport async function getStakePoolStatInfo(principal: string) {\n return resultFormat(\n await (await stakingPoolController()).getPoolStatInfo(Principal.fromText(principal)),\n ).data;\n}\n\nexport function useStakePoolStatInfo(canisterId: string | undefined, reload?: boolean) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getStakePoolStatInfo(canisterId);\n }, [canisterId]),\n reload,\n );\n}\n","import { useCallback } from \"react\";\nimport { resultFormat, isAvailablePageArgs, isNullArgs, availableArgsNull } from \"@icpswap/utils\";\nimport { stakeIndex } from \"@icpswap/actor\";\nimport type { PaginationResult, StakeIndexPoolInfo, StakeAprInfo, StakeUserStakeInfo } from \"@icpswap/types\";\nimport { Principal } from \"@dfinity/principal\";\n\nimport { useCallsData } from \"../useCallData\";\n\nexport async function getUserStakePools(\n principal: string,\n offset: number,\n limit: number,\n stakeTokenId?: string | undefined | null,\n rewardTokenId?: string | undefined | null,\n) {\n return resultFormat>(\n await (\n await stakeIndex()\n ).queryPool(\n Principal.fromText(principal),\n BigInt(offset),\n BigInt(limit),\n availableArgsNull(stakeTokenId),\n availableArgsNull(rewardTokenId),\n ),\n ).data;\n}\n\nexport function useUserStakePools(principal: string | undefined, offset: number, limit: number) {\n return useCallsData(\n useCallback(async () => {\n if (!isAvailablePageArgs(offset, limit)) return undefined;\n return await getUserStakePools(principal, offset, limit);\n }, [offset, limit, principal]),\n );\n}\n\nexport async function getStakeAprChartData(principal: string, start_time: number, end_time: number) {\n return resultFormat>(\n await (await stakeIndex()).queryAPR(Principal.fromText(principal), BigInt(start_time), BigInt(end_time)),\n ).data;\n}\n\nexport function useStakeAprChartData(\n principal: string | undefined,\n start_time: number | undefined,\n end_time: number | undefined,\n) {\n return useCallsData(\n useCallback(async () => {\n if (isNullArgs(start_time) || isNullArgs(principal) || isNullArgs(end_time)) return undefined;\n return await getStakeAprChartData(principal, start_time, end_time);\n }, [start_time, end_time, principal]),\n );\n}\n\nexport async function getUserStakedTokens(principal: string) {\n return resultFormat>(\n await (await stakeIndex()).queryUserStakedTokens(Principal.fromText(principal)),\n ).data;\n}\n\nexport function useUserStakedTokens(principal: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (isNullArgs(principal)) return undefined;\n\n return await getUserStakedTokens(principal);\n }, [principal]),\n );\n}\n","import { useCallback } from \"react\";\nimport { swapFactory, swapPool, swapNFT, swapPosition } from \"@icpswap/actor\";\nimport type {\n SwapPoolData,\n TickLiquidityInfo,\n PoolMetadata,\n GetPoolArgs,\n CreatePoolArgs,\n MintArgs,\n UserPositionInfo,\n DecreaseLiquidityArgs,\n IncreaseLiquidityArgs,\n SwapArgs,\n ClaimArgs,\n NFTTokenMetadata,\n UserPositionInfoWithTokenAmount,\n UserPositionInfoWithId,\n PositionInfoWithId,\n TickInfoWithId,\n ActorIdentity,\n PaginationResult,\n} from \"@icpswap/types\";\nimport { resultFormat, isAvailablePageArgs } from \"@icpswap/utils\";\nimport { Principal } from \"@dfinity/principal\";\n\nimport { useCallsData, getPaginationAllData, usePaginationAllData, getPaginationAllDataLimit } from \"../useCallData\";\n\nexport async function createSwapPool(args: CreatePoolArgs) {\n return resultFormat(await (await swapFactory(true)).createPool(args));\n}\n\nexport async function getSwapPool(args: GetPoolArgs) {\n return resultFormat(await (await swapFactory()).getPool(args)).data;\n}\n\nexport function useSwapPool(args: GetPoolArgs | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!args) return undefined;\n return await getSwapPool(args);\n }, [args]),\n );\n}\n\nexport async function getSwapPools() {\n return resultFormat(await (await swapFactory()).getPools()).data;\n}\n\nexport function useSwapPools() {\n return useCallsData(\n useCallback(async () => {\n return await getSwapPools();\n }, []),\n );\n}\n\nexport async function getSwapPoolMetadata(canisterId: string) {\n return resultFormat(await (await swapPool(canisterId)).metadata()).data;\n}\n\nexport function useSwapPoolMetadata(canisterId: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getSwapPoolMetadata(canisterId);\n }, [canisterId]),\n );\n}\n\nexport async function getSwapTickInfos(canisterId: string, offset: number, limit: number) {\n return resultFormat>(\n await (await swapPool(canisterId)).getTickInfos(BigInt(offset), BigInt(limit)),\n ).data;\n}\n\nexport async function getSwapPoolAllTickInfos(poolId: string, limit = 500) {\n const callback = async (offset: number, limit: number) => {\n return await getSwapTickInfos(poolId, offset, limit);\n };\n\n return await getPaginationAllData(callback, limit);\n}\n\nexport function useLiquidityTickInfos(canisterId: string | undefined, limit?: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getSwapPoolAllTickInfos(canisterId, limit);\n }, [canisterId, limit]),\n );\n}\n\nexport async function deposit(canisterId: string, token: string, amount: bigint, fee: bigint) {\n return resultFormat(await (await swapPool(canisterId, true)).deposit({ token, amount, fee }));\n}\n\nexport async function depositFrom(canisterId: string, token: string, amount: bigint, fee: bigint) {\n return resultFormat(await (await swapPool(canisterId, true)).depositFrom({ token, amount, fee }));\n}\n\nexport async function mint(canisterId: string, args: MintArgs) {\n return resultFormat(await (await swapPool(canisterId, true)).mint(args));\n}\n\nexport async function increaseLiquidity(poolId: string, args: IncreaseLiquidityArgs) {\n return resultFormat(await (await swapPool(poolId, true)).increaseLiquidity(args));\n}\n\nexport async function decreaseLiquidity(poolId: string, args: DecreaseLiquidityArgs) {\n return resultFormat<{ amount0: bigint; amount1: bigint }>(\n await (await swapPool(poolId, true)).decreaseLiquidity(args),\n );\n}\n\nexport async function withdraw(poolId: string, token: string, fee: bigint, amount: bigint) {\n return resultFormat(await (await swapPool(poolId, true)).withdraw({ token, fee, amount }));\n}\n\nexport async function quote(poolId: string, args: SwapArgs) {\n return resultFormat(await (await swapPool(poolId)).quote(args)).data;\n}\n\nexport async function swap(poolId: string, args: SwapArgs) {\n return resultFormat(await (await swapPool(poolId, true)).swap(args));\n}\n\nexport async function collect(poolId: string, args: ClaimArgs) {\n return resultFormat<{ amount0: bigint; amount1: bigint }>(await (await swapPool(poolId, true)).claim(args));\n}\n\nexport async function getUserUnusedBalance(canisterId: string, user: Principal) {\n return resultFormat<{ balance0: bigint; balance1: bigint }>(\n await (await swapPool(canisterId)).getUserUnusedBalance(user),\n ).data;\n}\n\nexport function useUserUnusedBalance(\n canisterId: string | undefined,\n user: Principal | undefined,\n refresh?: number | boolean,\n) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || !user) return undefined;\n return await getUserUnusedBalance(canisterId, user);\n }, [canisterId, user]),\n refresh,\n );\n}\n\nexport async function getSwapPosition(canisterId: string, tokenId: bigint) {\n return resultFormat(await (await swapPool(canisterId)).getUserPosition(tokenId)).data;\n}\n\nexport function useSwapPosition(canisterId: string | undefined, positionId: bigint | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || (!positionId && positionId !== BigInt(0))) return undefined;\n return await getSwapPosition(canisterId, positionId);\n }, [canisterId, positionId]),\n );\n}\n\nexport async function getPositionFee(canisterId: string, positionId: bigint) {\n return resultFormat<{ tokensOwed0: bigint; tokensOwed1: bigint }>(\n await (await swapPool(canisterId)).refreshIncome(positionId),\n ).data;\n}\n\nexport function usePositionFee(\n canisterId: string | undefined,\n positionId: bigint | undefined,\n refresh?: number | boolean,\n) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || (!positionId && positionId === BigInt(0))) return undefined;\n return await getPositionFee(canisterId, positionId);\n }, [canisterId, positionId]),\n refresh,\n );\n}\n\nexport type SwapPoolAllBalance = [Principal, { balance0: bigint; balance1: bigint }];\n\nexport async function getSwapPoolAllBalance(canisterId: string, offset: number, limit: number) {\n return resultFormat>(\n await (await swapPool(canisterId)).allTokenBalance(BigInt(offset), BigInt(limit)),\n ).data;\n}\n\nexport function useSwapPoolAllBalance(canisterId: string | undefined, offset: number, limit: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getSwapPoolAllBalance(canisterId, offset, limit);\n }, [canisterId, offset, limit]),\n );\n}\n\nexport async function _getSwapPoolAllBalance(poolId: string, limit = 1000) {\n const callback = async (offset: number, limit: number) => {\n return await getSwapPoolAllBalance(poolId, offset, limit);\n };\n\n return await getPaginationAllData(callback, limit);\n}\n\nexport function _useSwapPoolAllBalance(canisterId: string | undefined, limit?: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await _getSwapPoolAllBalance(canisterId, limit);\n }, [canisterId, limit]),\n );\n}\n\n/* swap nft */\n\nexport async function getUserSwapNFTs(principal: string, offset: number, limit: number) {\n return resultFormat>(\n await (await swapNFT()).findTokenList({ principal: Principal.fromText(principal) }, BigInt(offset), BigInt(limit)),\n ).data;\n}\n\nexport function useUserSwapNFTs(principal: string | undefined, offset: number, limit: number) {\n return useCallsData(\n useCallback(async () => {\n if (!principal || !isAvailablePageArgs(offset, limit)) return undefined;\n return await getUserSwapNFTs(principal, offset, limit);\n }, [principal, offset, limit]),\n );\n}\n\nexport function useUserAllNFTs(principal: string | undefined) {\n const callback = useCallback(\n async (offset: number, limit: number) => {\n if (!principal) return undefined;\n return await getUserSwapNFTs(principal, offset, limit);\n },\n [principal],\n );\n\n return usePaginationAllData(callback, 2000);\n}\n\nexport async function getSwapNFTTokenURI(tokenId: bigint | number) {\n const data = resultFormat(await (await swapNFT()).tokenURI(BigInt(tokenId))).data;\n return JSON.parse(data ?? \"\") as { image: string; [key: string]: any };\n}\n\nexport function useSwapNFTTokenURI(tokenId: bigint | number | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (tokenId === undefined) return undefined;\n return await getSwapNFTTokenURI(tokenId);\n }, [tokenId]),\n );\n}\n\nexport async function getPositionNFTId(poolId: string, positionId: string) {\n return resultFormat(await (await swapNFT()).getTokenId(poolId, positionId)).data;\n}\n\nexport function usePositionNFTId(poolId: string | undefined, positionId: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (poolId === undefined || positionId === undefined) return undefined;\n\n return await getPositionNFTId(poolId, positionId);\n }, [poolId, positionId]),\n );\n}\n\n/* swap nft */\n\n/* swap records */\n\nexport async function getSwapUserPositionWithAmount(canisterId: string, offset: number, limit: number) {\n return resultFormat>(\n await (await swapPool(canisterId)).getUserPositionWithTokenAmount(BigInt(offset), BigInt(limit)),\n ).data;\n}\n\nexport function useSwapUserPositionWithAmount(canisterId: string | undefined, offset: number, limit: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || !isAvailablePageArgs(offset, limit)) return undefined;\n return await getSwapUserPositionWithAmount(canisterId, offset, limit);\n }, [canisterId, offset, limit]),\n );\n}\n\nexport async function _getSwapUserPositionsWithAmount(poolId: string, limit = 1000) {\n const callback = async (offset: number, limit: number) => {\n return await getSwapUserPositionWithAmount(poolId, offset, limit);\n };\n\n return await getPaginationAllData(callback, limit);\n}\n\nexport function _useSwapUserPositionsWithAmount(canisterId: string | undefined, limit?: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await _getSwapUserPositionsWithAmount(canisterId, limit);\n }, [canisterId, limit]),\n );\n}\n\nexport async function getSwapPositions(canisterId: string, offset: number, limit: number) {\n return resultFormat>(\n await (await swapPool(canisterId)).getUserPositions(BigInt(offset), BigInt(limit)),\n ).data;\n}\n\nexport function useSwapPositions(canisterId: string | undefined, offset: number, limit: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || !isAvailablePageArgs(offset, limit)) return undefined;\n return await getSwapPositions(canisterId, offset, limit);\n }, [canisterId, offset, limit]),\n );\n}\n\nexport async function getSwapAllUserPositions(poolId: string, limit = 2000) {\n const callback = async (offset: number, limit: number) => {\n return await getSwapPositions(poolId, offset, limit);\n };\n\n return await getPaginationAllData(callback, limit);\n}\n\nexport function useSwapAllUserPositions(canisterId: string | undefined, limit?: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getSwapAllUserPositions(canisterId, limit);\n }, [canisterId, limit]),\n );\n}\n\nexport async function getSwapPoolPositions(canisterId: string, offset: number, limit: number) {\n return resultFormat>(\n await (await swapPool(canisterId)).getPositions(BigInt(offset), BigInt(limit)),\n ).data;\n}\n\nexport function useSwapPoolPositions(canisterId: string | undefined, offset: number, limit: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId || !isAvailablePageArgs(offset, limit)) return undefined;\n return await getSwapPoolPositions(canisterId, offset, limit);\n }, [canisterId, offset, limit]),\n );\n}\n\nexport async function getSwapPoolAllPositions(poolId: string, limit = 1000) {\n const callback = async (offset: number, limit: number) => {\n return await getSwapPoolPositions(poolId, offset, limit);\n };\n\n return await getPaginationAllData(callback, limit);\n}\n\nexport function useSwapPoolAllPositions(canisterId: string | undefined, limit?: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getSwapPoolAllPositions(canisterId, limit);\n }, [canisterId, limit]),\n );\n}\n\nexport async function getSwapTicks(canisterId: string, offset: number, limit: number) {\n const result = await (await swapPool(canisterId)).getTicks(BigInt(offset), BigInt(limit));\n return resultFormat>(result).data;\n}\n\nexport async function getSwapAllTicks(canisterId: string, limit = 1000) {\n const callback = async (offset: number, limit: number) => {\n return await getSwapTicks(canisterId, offset, limit);\n };\n\n return await getPaginationAllDataLimit(callback, limit);\n}\n\nexport function useSwapAllTicks(canisterId: string | undefined, limit?: number) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getSwapAllTicks(canisterId, limit);\n }, [canisterId, limit]),\n );\n}\n\nexport async function getSwapCyclesInfo(canisterId: string) {\n return resultFormat<{ balance: bigint; available: bigint }>(await (await swapPool(canisterId)).getCycleInfo()).data;\n}\n\nexport function useSwapCyclesInfo(canisterId: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getSwapCyclesInfo(canisterId);\n }, [canisterId]),\n );\n}\n\nexport async function getSwapTokenAmountState(canisterId: string) {\n return resultFormat<{\n swapFee0Repurchase: bigint;\n token0Amount: bigint;\n token1Amount: bigint;\n swapFee1Repurchase: bigint;\n }>(await (await swapPool(canisterId)).getTokenAmountState()).data;\n}\n\nexport function useSwapTokenAmountState(canisterId: string | undefined) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n return await getSwapTokenAmountState(canisterId);\n }, [canisterId]),\n );\n}\n\n/* swap records */\n\n/* swap positions */\nexport async function updateUserPositionPoolId(poolId: string, identity?: ActorIdentity) {\n return resultFormat(await (await swapPosition(identity)).addPoolId(poolId));\n}\n\nexport async function getUserPositionsPools(account: string) {\n return resultFormat(await (await swapPosition()).getUserPools(account)).data;\n}\n\nexport function useUserPositionPools(account: string | undefined | null) {\n return useCallsData(\n useCallback(async () => {\n if (!account) return undefined;\n return await getUserPositionsPools(account);\n }, [account]),\n );\n}\n\nexport async function getSwapUserPositions(poolId: string, principal: string) {\n return resultFormat(\n await (await swapPool(poolId)).getUserPositionsByPrincipal(Principal.fromText(principal)),\n ).data;\n}\n\nexport function useSwapUserPositions(\n poolId: string | undefined,\n principal: string | undefined,\n refresh?: boolean | number,\n) {\n return useCallsData(\n useCallback(async () => {\n if (!principal || !poolId) return undefined;\n return await getSwapUserPositions(poolId, principal);\n }, [principal, poolId]),\n refresh,\n );\n}\n\nexport async function approvePosition(poolId: string, spender: string, index: number | bigint) {\n return resultFormat(\n await (await swapPool(poolId, true)).approvePosition(Principal.fromText(spender), BigInt(index)),\n );\n}\n\nexport async function getSwapPositionOwner(poolId: string, positionIndex: number | bigint) {\n return resultFormat(await (await swapPool(poolId)).getUserByPositionId(BigInt(positionIndex))).data;\n}\n\nexport function useSwapPositionOwner(\n poolId: string | undefined,\n positionIndex: number | bigint | undefined,\n refresh?: number,\n) {\n return useCallsData(\n useCallback(async () => {\n if (!poolId || positionIndex === undefined) return undefined;\n return await getSwapPositionOwner(poolId, positionIndex);\n }, [positionIndex, poolId]),\n refresh,\n );\n}\n\n/* swap positions */\n","import { useCallback } from \"react\";\nimport { swapFactory } from \"@icpswap/actor\";\nimport { resultFormat } from \"@icpswap/utils\";\nimport { Principal } from \"@dfinity/principal\";\nimport type { PassCode } from \"@icpswap/candid\";\nimport { useCallsData } from \"../useCallData\";\n\nexport async function getPassCode(principal: string) {\n return resultFormat(await (await swapFactory()).getPasscodesByPrincipal(Principal.fromText(principal)))\n .data;\n}\n\nexport function usePassCode(principal: string | undefined, reload?: number | boolean) {\n return useCallsData(\n useCallback(async () => {\n if (!principal) return undefined;\n return getPassCode(principal);\n }, [principal]),\n reload,\n );\n}\n","import { useCallback } from \"react\";\nimport { passCodeManager } from \"@icpswap/actor\";\nimport { resultFormat } from \"@icpswap/utils\";\nimport { Principal } from \"@dfinity/principal\";\nimport { useCallsData } from \"../useCallData\";\n\nexport function usePCMMetadata() {\n return useCallsData(\n useCallback(async () => {\n return resultFormat<{\n passcodePrice: bigint;\n tokenCid: Principal;\n factoryCid: Principal;\n }>(await (await passCodeManager()).metadata()).data;\n }, []),\n );\n}\n\nexport async function requestPassCode(token0: Principal, token1: Principal, fee: bigint) {\n const result = await (await passCodeManager(true)).requestPasscode(token0, token1, fee);\n\n return resultFormat(result);\n}\n\nexport async function withdrawPCMBalance(amount: bigint, fee: bigint) {\n const result = await (await passCodeManager(true)).withdraw({ fee, amount });\n return resultFormat(result);\n}\n\nexport async function destroyPassCode(token0: string, token1: string, fee: bigint) {\n const result = await (\n await passCodeManager(true)\n ).destoryPasscode(Principal.fromText(token0), Principal.fromText(token1), fee);\n\n return resultFormat(result);\n}\n\nexport function useUserPCMBalance(principal: Principal | undefined, reload?: number) {\n return useCallsData(\n useCallback(async () => {\n if (!principal) return undefined;\n return resultFormat(await (await passCodeManager()).balanceOf(principal)).data;\n }, [principal]),\n reload,\n );\n}\n","import { useCallback } from \"react\";\nimport { tokenClaimController, tokenClaimStorage } from \"@icpswap/actor\";\nimport { useCallsData } from \"../useCallData\";\nimport {\n resultFormat,\n isAvailablePageArgs,\n availableArgsNull,\n} from \"@icpswap/utils\";\nimport type { ActorIdentity, PaginationResult } from \"@icpswap/types\";\nimport type {\n ClaimEventInfo,\n ClaimQuota,\n ClaimTransaction,\n} from \"@icpswap/types\";\nimport { Principal } from \"@dfinity/principal\";\n\nexport async function getEvent(eventId: string) {\n return resultFormat(\n await (await tokenClaimController()).getEvent(eventId)\n ).data;\n}\n\nexport function useEvent(eventId: string | undefined, reload?: boolean) {\n return useCallsData(\n useCallback(async () => {\n if (!eventId) return undefined;\n return await getEvent(eventId!);\n }, [eventId]),\n reload\n );\n}\n\nexport async function claimToken(\n eventId: string,\n storageId: string,\n identity: ActorIdentity\n) {\n return resultFormat(\n await (await tokenClaimStorage(storageId, identity)).userClaim(eventId)\n );\n}\n\nexport async function createClaimEvent(\n args: ClaimEventInfo,\n identity: ActorIdentity\n) {\n return resultFormat(\n await (await tokenClaimController(identity)).create(args)\n );\n}\n\nexport async function setClaimEventReady(id: string, identity: ActorIdentity) {\n return resultFormat(\n await (await tokenClaimController(identity)).ready(id)\n );\n}\n\nexport async function setClaimEventState(\n id: string,\n state: boolean,\n identity: ActorIdentity\n) {\n return resultFormat(\n await (await tokenClaimController(identity)).setStatus(id, state)\n );\n}\n\nexport async function setClaimEventData(\n id: string,\n args: ClaimQuota[],\n identity: ActorIdentity\n) {\n return resultFormat(\n await (await tokenClaimController(identity)).importQuota(id, args)\n );\n}\n\nexport async function getClaimEvents(offset: number, limit: number) {\n return resultFormat>(\n await (\n await tokenClaimController()\n ).findAllEvents(BigInt(offset), BigInt(limit))\n ).data;\n}\n\nexport function useClaimEvents(\n offset: number,\n limit: number,\n reload?: boolean\n) {\n return useCallsData(\n useCallback(async () => {\n if (!isAvailablePageArgs(offset, limit)) return undefined;\n return await getClaimEvents(offset, limit);\n }, [offset, limit]),\n reload\n );\n}\n\nexport async function getUserCreatedClaimEvents(\n user: string,\n offset: number,\n limit: number\n) {\n return resultFormat>(\n await (\n await tokenClaimController()\n ).findCreateEvents(Principal.fromText(user), BigInt(offset), BigInt(limit))\n ).data;\n}\n\nexport function useUserCreatedClaimEvents(\n user: string | undefined,\n offset: number,\n limit: number,\n reload?: boolean\n) {\n return useCallsData(\n useCallback(async () => {\n if (!user || !isAvailablePageArgs(offset, limit)) return undefined;\n return await getUserCreatedClaimEvents(user!, offset, limit);\n }, [user, offset, limit]),\n reload\n );\n}\n\nexport async function getUserClaimEvents(\n user: string,\n offset: number,\n limit: number\n) {\n return resultFormat>(\n await (\n await tokenClaimController()\n ).findUserEvents(Principal.fromText(user), BigInt(offset), BigInt(limit))\n ).data;\n}\n\nexport function useUserClaimEvents(\n user: string | undefined,\n offset: number,\n limit: number,\n reload?: boolean\n) {\n return useCallsData(\n useCallback(async () => {\n if (!user || !isAvailablePageArgs(offset, limit)) return undefined;\n return await getUserClaimEvents(user!, offset, limit);\n }, [user, offset, limit]),\n\n reload\n );\n}\n\nexport async function getClaimEventTransactions(\n id: string,\n state: number | undefined,\n offset: number,\n limit: number\n) {\n return resultFormat>(\n await (\n await tokenClaimController()\n ).findEventRecords(\n id,\n state === undefined ? [] : availableArgsNull(BigInt(state)),\n BigInt(offset),\n BigInt(limit)\n )\n ).data;\n}\n\nexport function useClaimEventTransactions(\n id: string | undefined,\n state: number | undefined,\n offset: number,\n limit: number,\n reload?: boolean\n) {\n return useCallsData(\n useCallback(async () => {\n if (!id || !isAvailablePageArgs(offset, limit)) return undefined;\n return await getClaimEventTransactions(id!, state, offset, limit);\n }, [id, state, offset, limit]),\n reload\n );\n}\n\nexport async function getUserClaimEventTransactions(\n user: string,\n id: string | undefined,\n state: number | undefined,\n offset: number,\n limit: number\n) {\n return resultFormat>(\n await (\n await tokenClaimController()\n ).findUserEventRecords(\n Principal.fromText(user),\n id === undefined ? [] : availableArgsNull(id),\n state === undefined ? [] : availableArgsNull(BigInt(state)),\n BigInt(offset),\n BigInt(limit)\n )\n ).data;\n}\n\nexport function useUserClaimEventTransactions(\n user: string | undefined,\n id: string | undefined,\n state: number | undefined,\n offset: number,\n limit: number,\n reload?: boolean\n) {\n return useCallsData(\n useCallback(async () => {\n if (!user || !isAvailablePageArgs(offset, limit)) return undefined;\n\n return await getUserClaimEventTransactions(\n user!,\n id,\n state,\n offset,\n limit\n );\n }, [user, state, offset, limit]),\n reload\n );\n}\n","import { tokenList, allTokenOfSwap } from \"@icpswap/actor\";\nimport type { TokenListMetadata, AllTokenOfSwapTokenInfo, PaginationResult } from \"@icpswap/types\";\nimport { useCallback } from \"react\";\nimport { resultFormat } from \"@icpswap/utils\";\nimport { useCallsData } from \"../useCallData\";\nimport { getLimitedInfinityCall } from \"../useLimitedInfinityCall\";\n\nexport async function getTokensFromList() {\n return resultFormat(await (await tokenList()).getList()).data;\n}\n\nexport function useTokensFromList() {\n return useCallsData(\n useCallback(async () => {\n return await getTokensFromList();\n }, []),\n );\n}\n\nexport function useTokenListTokenInfo(canisterId: string | undefined | null) {\n return useCallsData(\n useCallback(async () => {\n if (!canisterId) return undefined;\n const info = resultFormat(await (await tokenList()).get(canisterId)).data;\n return info ? info[0] : undefined;\n }, [canisterId]),\n );\n}\n\nexport async function getAllTokensOfSwap(offset: number, limit: number) {\n return resultFormat>(\n await (await allTokenOfSwap()).get_token_list(BigInt(offset), BigInt(limit), []),\n ).data;\n}\n\nexport function useAllTokensOfSwap() {\n const call = async (offset: number, limit: number) => {\n const result = resultFormat>(\n await (await allTokenOfSwap()).get_token_list(BigInt(offset), BigInt(limit), []),\n ).data;\n\n return result?.content;\n };\n\n return useCallsData(\n useCallback(async () => {\n return getLimitedInfinityCall(call, 1000, 2);\n }, []),\n );\n}\n","import { useCallback } from \"react\";\nimport { isPrincipal, isValidPrincipal } from \"@icpswap/utils\";\nimport { tokenAdapter } from \"@icpswap/token-adapter\";\nimport { Principal } from \"@dfinity/principal\";\nimport BigNumber from \"bignumber.js\";\nimport { useLatestDataCall } from \"../useCallData\";\n\nexport interface GetTokenBalanceArgs {\n canisterId: string;\n address: string | Principal;\n sub?: Uint8Array;\n}\n\nexport async function getTokenBalance({ canisterId, address, sub }: GetTokenBalanceArgs) {\n const result = await tokenAdapter.balance({\n canisterId,\n params: {\n user: isPrincipal(address)\n ? { principal: address }\n : isValidPrincipal(address)\n ? {\n principal: Principal.fromText(address),\n }\n : { address },\n token: \"\",\n subaccount: sub ? [...sub] : undefined,\n },\n });\n\n return result.data;\n}\n\nexport interface UserTokenBalanceArgs {\n canisterId: string | undefined;\n address: string | Principal | undefined;\n sub?: Uint8Array;\n refresh?: boolean | number;\n}\n\nexport function useTokenBalance({ canisterId, address, sub, refresh }: UserTokenBalanceArgs): {\n result: BigNumber | undefined;\n loading: boolean;\n} {\n return useLatestDataCall(\n useCallback(async () => {\n if (!address || !canisterId) return undefined;\n const balance = await getTokenBalance({ canisterId, sub, address });\n return balance === undefined ? undefined : new BigNumber(balance.toString());\n }, [address, canisterId, sub]),\n refresh,\n );\n}\n","import { useState, useMemo, useEffect, useRef } from \"react\";\nimport type { ApiResult, CallResult, PaginationResult } from \"@icpswap/types\";\nimport { pageArgsFormat, sleep } from \"@icpswap/utils\";\n\nexport type Call = () => Promise>;\n\nexport function useCallsData(fn: Call, reload?: number | string | boolean): CallResult {\n const result = useRef(undefined);\n const [loading, setLoading] = useState(false);\n\n useEffect(() => {\n if (fn) {\n result.current = undefined;\n setLoading(true);\n fn().then((res) => {\n result.current = res;\n setLoading(false);\n });\n }\n }, [fn, reload]);\n\n return useMemo(\n () => ({\n result: result.current,\n loading,\n }),\n [result, loading],\n );\n}\n\nexport function useLatestDataCall(fn: Call, refresh?: number | string | boolean) {\n const [loading, setLoading] = useState(false);\n\n const indexRef = useRef(0);\n const resultsRef = useRef<{ [key: string]: T | undefined }>({});\n\n useEffect(() => {\n if (fn) {\n setLoading(true);\n\n indexRef.current += 1;\n const index = indexRef.current;\n\n fn().then((result) => {\n resultsRef.current = {\n ...resultsRef.current,\n [String(index)]: result as T,\n };\n\n setLoading(false);\n });\n }\n }, [fn, refresh]);\n\n return useMemo(() => {\n return {\n result: resultsRef.current[indexRef.current] as T | undefined,\n loading,\n };\n }, [resultsRef.current, indexRef.current, loading]);\n}\n\nexport function usePaginationAllData(\n callback: (offset: number, limit: number) => Promise | undefined>,\n limit: number,\n reload = false,\n) {\n const [loading, setLoading] = useState(false);\n const [list, setList] = useState([]);\n\n const fetch = async (offset: number, limit: number) => {\n return await callback(offset, limit).then((result) => {\n if (result) {\n const content = result.content;\n if (content && content.length > 0) {\n return content;\n }\n return [];\n }\n return [];\n });\n };\n\n const fetchDone = async (_list: { [k: string]: T[] }) => {\n let data: T[] = [];\n Object.keys(_list).forEach((key) => {\n data = data.concat(_list[key]);\n });\n setList(data);\n };\n\n useEffect(() => {\n async function getTotalElements() {\n if (callback) {\n const result = await callback(0, 1);\n if (result) {\n return result.totalElements;\n }\n return BigInt(0);\n }\n\n return BigInt(0);\n }\n\n async function call() {\n const totalElements = await getTotalElements();\n\n if (Number(totalElements) !== 0) {\n const num = Number(totalElements) % limit;\n const totalPage =\n num === 0 ? Number(totalElements) / limit : parseInt(String(Number(totalElements) / limit)) + 1;\n\n setLoading(true);\n\n const _list: { [k: string]: T[] } = {};\n\n for (let i = 0; i < totalPage; i++) {\n const [offset] = pageArgsFormat(i + 1, limit);\n\n if (totalPage % 80 === 0) {\n await sleep(2000);\n }\n\n const _fetch = () => {\n fetch(offset, limit)\n .then(async (content) => {\n if (content && content.length > 0) {\n _list[`${i + 1}`] = content;\n if (Object.keys(_list).length === totalPage) {\n await fetchDone(_list);\n setLoading(false);\n }\n }\n })\n .catch((error) => {\n console.log(error);\n _fetch();\n });\n };\n\n _fetch();\n }\n } else {\n setList([]);\n setLoading(false);\n }\n }\n\n call();\n }, [reload, callback]);\n\n return useMemo(\n () => ({\n result: list,\n loading,\n }),\n [list, loading],\n );\n}\n\nexport async function getPaginationAllData(\n callback: (offset: number, limit: number) => Promise | undefined>,\n limit: number,\n) {\n const fetch = async (offset: number, limit: number) => {\n return await callback(offset, limit);\n };\n\n const _result = await fetch(0, 1);\n const totalElements = Number(_result?.totalElements ?? 0);\n const totalPage =\n totalElements % limit === 0 ? parseInt(String(totalElements / limit)) : parseInt(String(totalElements / limit)) + 1;\n\n const promise: Promise | undefined>[] = [];\n\n for (let i = 1; i < totalPage + 1; i++) {\n const [offset] = pageArgsFormat(i, limit);\n promise.push(fetch(offset, limit));\n }\n\n const result = await Promise.all(promise);\n\n return result\n .filter((res) => !!res)\n .reduce((prev, curr) => {\n return prev.concat(curr?.content ?? []);\n }, [] as T[]);\n}\n\nexport async function getPaginationAllDataLimit(\n callback: (offset: number, limit: number) => Promise | undefined>,\n limit: number,\n) {\n const fetch = async (offset: number, limit: number) => {\n return await callback(offset, limit);\n };\n\n const __result = await fetch(0, limit);\n const totalElements = Number(__result?.totalElements ?? 0);\n const totalPage =\n totalElements % limit === 0 ? parseInt(String(totalElements / limit)) : parseInt(String(totalElements / limit)) + 1;\n\n const promise: Promise | undefined>[] = [];\n\n for (let i = 2; i < totalPage + 1; i++) {\n const [offset] = pageArgsFormat(i, limit);\n promise.push(fetch(offset, limit));\n }\n\n const result = await Promise.all(promise);\n\n return result\n .filter((res) => !!res)\n .reduce(\n (prev, curr) => {\n return prev.concat(curr?.content ?? []);\n },\n __result.content ?? ([] as T[]),\n );\n}\n","import { useCallback, useEffect, useRef, useState } from \"react\";\n\nexport function useDebouncedChangeHandler(\n value: T,\n onChange: (newValue: T) => void,\n debouncedMs = 100,\n): [T, (value: T) => void] {\n const [inner, setInner] = useState(() => value);\n const timer = useRef>();\n\n const onChangeInner = useCallback(\n (newValue: T) => {\n setInner(newValue);\n if (timer.current) {\n clearTimeout(timer.current);\n }\n timer.current = setTimeout(() => {\n onChange(newValue);\n timer.current = undefined;\n }, debouncedMs);\n },\n [debouncedMs, onChange],\n );\n\n useEffect(() => {\n if (timer.current) {\n clearTimeout(timer.current);\n timer.current = undefined;\n }\n setInner(value);\n }, [value]);\n\n return [inner, onChangeInner];\n}\n","import { useState, useEffect, useMemo } from \"react\";\n\nexport function useInterval(\n callback: (() => Promise) | (() => void) | undefined,\n force: boolean | number = false,\n interval = 5000,\n): T | undefined {\n const [data, setData] = useState(undefined);\n const [tick, setTick] = useState(0);\n\n useEffect(() => {\n async function __callback() {\n if (callback) {\n const result = await callback();\n\n if (result) {\n setData(result);\n }\n }\n }\n\n __callback();\n }, [tick, callback, force]);\n\n useEffect(() => {\n const timer = setInterval(() => {\n if (callback) {\n setTick((prevState) => prevState + 1);\n }\n }, interval);\n\n return () => {\n clearInterval(timer);\n };\n }, [interval, callback]);\n\n return useMemo(() => data, [data]);\n}\n","import { useState, useMemo, useEffect } from \"react\";\n\nexport function useLimitedInfinityCall(\n callback: (offset: number, limit: number) => Promise,\n limit: number,\n reload = false,\n) {\n const [loading, setLoading] = useState(false);\n const [list, setList] = useState([]);\n\n useEffect(() => {\n async function call() {\n setLoading(true);\n const result = await getLimitedInfinityCall(callback, limit, 5);\n setList(result);\n }\n\n call();\n }, [reload, callback, limit]);\n\n return useMemo(\n () => ({\n result: list,\n loading,\n }),\n [list, loading],\n );\n}\n\ntype Callback = (offset: number, limit: number) => Promise;\n\nexport async function fetch_data(start: number, limit: number, callback: Callback) {\n const result = await callback(start, limit);\n return result;\n}\n\n/**\n * @description getLimitedInfinityCall\n * @param callback The call to fetch the data\n * @param limit The data length in each call\n * @param call_rounds Number of call\n */\nexport async function getLimitedInfinityCall(\n callback: (offset: number, limit: number) => Promise,\n limit: number,\n call_rounds = 10,\n start_index?: number,\n) {\n let data: T[] = [];\n let fetch_index = 0;\n let fetch_done = false;\n\n const fetch = async (index: number) => {\n fetch_index += 1;\n\n await Promise.all(\n Array.from({ length: call_rounds }, (_, i) => i).map(async (call_index) => {\n const start = (start_index ?? 0) + call_index * limit + index * limit * call_rounds;\n\n const result = await fetch_data(start, limit, callback);\n\n if (!result) {\n return undefined;\n } \n data = data.concat(result);\n\n if (result.length < limit) {\n fetch_done = true;\n }\n \n\n return undefined;\n }),\n );\n\n if (!fetch_done) {\n await fetch(fetch_index);\n }\n };\n\n await fetch(fetch_index);\n\n return data;\n}\n","import { parse, ParsedQs } from \"qs\";\nimport { useMemo } from \"react\";\nimport { useLocation } from \"react-router-dom\";\n\nexport function parsedQueryString(search?: string): ParsedQs {\n let string: string = search ?? \"\";\n\n if (!search) {\n // react-router-dom places search string in the hash\n const { hash } = window.location;\n string = hash.substr(hash.indexOf(\"?\"));\n }\n\n return string && string.length > 1 ? parse(string, { parseArrays: false, ignoreQueryPrefix: true }) : {};\n}\n\nexport function useParsedQueryString(): ParsedQs {\n const { search } = useLocation();\n return useMemo(() => parsedQueryString(search), [search]);\n}\n","export const ADDRESS_ZERO = \"0x0000000000000000000000000000000000000000\";\n\n/**\n * The default factory enabled fee amounts, denominated in hundredths of bips.\n */\nexport enum FeeAmount {\n LOWEST = 100,\n LOW = 500,\n MEDIUM = 3000,\n HIGH = 10000\n}\n\n/**\n * The default factory tick spacings by fee amount.\n */\nexport const TICK_SPACINGS: { [amount in FeeAmount]: number } = {\n [FeeAmount.LOWEST]: 1,\n [FeeAmount.LOW]: 10,\n [FeeAmount.MEDIUM]: 60,\n [FeeAmount.HIGH]: 200\n};\n","import JSBI from \"jsbi\";\n\n// exports for external consumption\nexport type BigintIsh = JSBI | string | number;\n\nexport enum TradeType {\n EXACT_INPUT,\n EXACT_OUTPUT\n}\n\nexport enum Rounding {\n ROUND_DOWN,\n ROUND_HALF_UP,\n ROUND_UP\n}\n\nexport const MaxUint256 = JSBI.BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n","/* eslint-disable @typescript-eslint/prefer-as-const */\n\nimport invariant from \"tiny-invariant\";\nimport { validateAndParseERC20Address } from \"../utils/validateAndParseAddress\";\n\ninterface ConstructorArgs {\n address: string;\n decimals: number;\n symbol: string;\n name: string;\n logo?: string;\n transFee?: number;\n}\n\n/**\n * Represents an ERC20 token with a unique address and some metadata.\n */\nexport class ERC20Token {\n public readonly isNative: false = false;\n\n public readonly isToken: true = true;\n\n /**\n * The decimals used in representing currency amounts\n */\n public readonly decimals: number;\n\n /**\n * The symbol of the currency, i.e. a short textual non-unique identifier\n */\n public readonly symbol: string;\n\n /**\n * The name of the currency, i.e. a descriptive textual non-unique identifier\n */\n public readonly name: string;\n\n public readonly logo: string;\n\n public readonly transFee: number;\n\n public readonly standard: string;\n\n /**\n * The contract address on the chain on which this token lives\n */\n public readonly address: string;\n\n public constructor({ address, decimals, symbol, name, logo, transFee }: ConstructorArgs) {\n invariant(decimals >= 0 && decimals < 255 && Number.isInteger(decimals), \"DECIMALS\");\n\n this.decimals = decimals;\n this.symbol = symbol;\n this.name = name ?? \"\";\n this.logo = logo ?? \"\";\n this.transFee = transFee;\n this.address = validateAndParseERC20Address(address);\n }\n\n /**\n * Returns true if the two tokens are equivalent, i.e. have the same address.\n * @param other other token to compare\n */\n public equals(other: ERC20Token): boolean {\n return other.isToken && this.address === other.address;\n }\n\n /**\n * Returns true if the address of this token sorts before the address of the other token\n * @param other other token to compare\n * @throws if the tokens have the same address\n * @throws if the tokens are on different chains\n */\n public sortsBefore(other: ERC20Token): boolean {\n invariant(this.address !== other.address, \"ADDRESSES\");\n return this.address.toLowerCase() < other.address.toLowerCase();\n }\n}\n","import invariant from \"tiny-invariant\";\nimport JSBI from \"jsbi\";\nimport _Big from \"big.js\";\nimport toFormat from \"toformat\";\nimport { Token } from \"../token\";\nimport { Fraction } from \"./fraction\";\nimport { BigintIsh, Rounding, MaxUint256 } from \"../../constants\";\n\nconst Big = toFormat(_Big);\n\nexport class CurrencyAmount extends Fraction {\n public readonly currency: T;\n\n public readonly decimalScale: JSBI;\n\n /**\n * Returns a new currency amount instance from the unitless amount of token, i.e. the raw amount\n * @param currency the currency in the amount\n * @param rawAmount the raw token or ether amount\n */\n public static fromRawAmount(currency: T, rawAmount: BigintIsh): CurrencyAmount {\n return new CurrencyAmount(currency, rawAmount);\n }\n\n /**\n * Construct a currency amount with a denominator that is not equal to 1\n * @param currency the currency\n * @param numerator the numerator of the fractional token amount\n * @param denominator the denominator of the fractional token amount\n */\n public static fromFractionalAmount(\n currency: T,\n numerator: BigintIsh,\n denominator: BigintIsh,\n ): CurrencyAmount {\n return new CurrencyAmount(currency, numerator, denominator);\n }\n\n protected constructor(currency: T, numerator: BigintIsh, denominator?: BigintIsh) {\n super(numerator, denominator);\n invariant(JSBI.lessThanOrEqual(this.quotient, MaxUint256), \"AMOUNT\");\n this.currency = currency;\n this.decimalScale = JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(currency.decimals));\n }\n\n public add(other: CurrencyAmount): CurrencyAmount {\n invariant(this.currency.equals(other.currency), \"CURRENCY\");\n const added = super.add(other);\n return CurrencyAmount.fromFractionalAmount(this.currency, added.numerator, added.denominator);\n }\n\n public subtract(other: CurrencyAmount): CurrencyAmount {\n invariant(this.currency.equals(other.currency), \"CURRENCY\");\n const subtracted = super.subtract(other);\n return CurrencyAmount.fromFractionalAmount(this.currency, subtracted.numerator, subtracted.denominator);\n }\n\n public multiply(other: Fraction | BigintIsh): CurrencyAmount {\n const multiplied = super.multiply(other);\n return CurrencyAmount.fromFractionalAmount(this.currency, multiplied.numerator, multiplied.denominator);\n }\n\n public divide(other: Fraction | BigintIsh): CurrencyAmount {\n const divided = super.divide(other);\n return CurrencyAmount.fromFractionalAmount(this.currency, divided.numerator, divided.denominator);\n }\n\n public toSignificant(significantDigits = 6, format?: object, rounding: Rounding = Rounding.ROUND_DOWN): string {\n return super.divide(this.decimalScale).toSignificant(significantDigits, format, rounding);\n }\n\n public toFixed(\n decimalPlaces: number = this.currency.decimals,\n format?: object,\n rounding: Rounding = Rounding.ROUND_DOWN,\n ): string {\n invariant(decimalPlaces <= this.currency.decimals, \"DECIMALS\");\n return super.divide(this.decimalScale).toFixed(decimalPlaces, format, rounding);\n }\n\n public toExact(format: object = { groupSeparator: \"\" }): string {\n Big.DP = this.currency.decimals;\n return new Big(this.quotient.toString()).div(this.decimalScale.toString()).toFormat(format);\n }\n\n public get wrapped(): CurrencyAmount {\n if (this.currency.isToken) return this as CurrencyAmount;\n return CurrencyAmount.fromFractionalAmount(this.currency.wrapped, this.numerator, this.denominator);\n }\n}\n","import JSBI from \"jsbi\";\nimport invariant from \"tiny-invariant\";\nimport _Decimal from \"decimal.js-light\";\nimport _Big from \"big.js\";\nimport toFormat from \"toformat\";\n\nimport { BigintIsh, Rounding } from \"../../constants\";\n\nconst Decimal = toFormat(_Decimal);\nconst Big = toFormat(_Big);\n\nconst toSignificantRounding = {\n [Rounding.ROUND_DOWN]: Decimal.ROUND_DOWN,\n [Rounding.ROUND_HALF_UP]: Decimal.ROUND_HALF_UP,\n [Rounding.ROUND_UP]: Decimal.ROUND_UP,\n};\n\nconst enum RoundingMode {\n /**\n * Rounds towards zero.\n * I.e. truncate, no rounding.\n */\n RoundDown = 0,\n /**\n * Rounds towards nearest neighbour.\n * If equidistant, rounds away from zero.\n */\n RoundHalfUp = 1,\n /**\n * Rounds towards nearest neighbour.\n * If equidistant, rounds towards even neighbour.\n */\n RoundHalfEven = 2,\n /**\n * Rounds away from zero.\n */\n RoundUp = 3,\n}\n\nconst toFixedRounding = {\n [Rounding.ROUND_DOWN]: RoundingMode.RoundDown,\n [Rounding.ROUND_HALF_UP]: RoundingMode.RoundHalfUp,\n [Rounding.ROUND_UP]: RoundingMode.RoundUp,\n};\n\nexport class Fraction {\n public readonly numerator: JSBI;\n public readonly denominator: JSBI;\n\n public constructor(\n numerator: BigintIsh,\n denominator: BigintIsh = JSBI.BigInt(1)\n ) {\n this.numerator = JSBI.BigInt(numerator);\n this.denominator = JSBI.BigInt(denominator);\n }\n\n private static tryParseFraction(fractionish: BigintIsh | Fraction): Fraction {\n if (\n fractionish instanceof JSBI ||\n typeof fractionish === \"number\" ||\n typeof fractionish === \"string\"\n )\n return new Fraction(fractionish);\n\n if (\"numerator\" in fractionish && \"denominator\" in fractionish)\n return fractionish;\n throw new Error(\"Could not parse fraction\");\n }\n\n // performs floor division\n public get quotient(): JSBI {\n return JSBI.divide(this.numerator, this.denominator);\n }\n\n // remainder after floor division\n public get remainder(): Fraction {\n return new Fraction(\n JSBI.remainder(this.numerator, this.denominator),\n this.denominator\n );\n }\n\n public invert(): Fraction {\n return new Fraction(this.denominator, this.numerator);\n }\n\n public add(other: Fraction | BigintIsh): Fraction {\n const otherParsed = Fraction.tryParseFraction(other);\n if (JSBI.equal(this.denominator, otherParsed.denominator)) {\n return new Fraction(\n JSBI.add(this.numerator, otherParsed.numerator),\n this.denominator\n );\n }\n return new Fraction(\n JSBI.add(\n JSBI.multiply(this.numerator, otherParsed.denominator),\n JSBI.multiply(otherParsed.numerator, this.denominator)\n ),\n JSBI.multiply(this.denominator, otherParsed.denominator)\n );\n }\n\n public subtract(other: Fraction | BigintIsh): Fraction {\n const otherParsed = Fraction.tryParseFraction(other);\n if (JSBI.equal(this.denominator, otherParsed.denominator)) {\n return new Fraction(\n JSBI.subtract(this.numerator, otherParsed.numerator),\n this.denominator\n );\n }\n return new Fraction(\n JSBI.subtract(\n JSBI.multiply(this.numerator, otherParsed.denominator),\n JSBI.multiply(otherParsed.numerator, this.denominator)\n ),\n JSBI.multiply(this.denominator, otherParsed.denominator)\n );\n }\n\n public lessThan(other: Fraction | BigintIsh): boolean {\n const otherParsed = Fraction.tryParseFraction(other);\n return JSBI.lessThan(\n JSBI.multiply(this.numerator, otherParsed.denominator),\n JSBI.multiply(otherParsed.numerator, this.denominator)\n );\n }\n\n public equalTo(other: Fraction | BigintIsh): boolean {\n const otherParsed = Fraction.tryParseFraction(other);\n return JSBI.equal(\n JSBI.multiply(this.numerator, otherParsed.denominator),\n JSBI.multiply(otherParsed.numerator, this.denominator)\n );\n }\n\n public greaterThan(other: Fraction | BigintIsh): boolean {\n const otherParsed = Fraction.tryParseFraction(other);\n return JSBI.greaterThan(\n JSBI.multiply(this.numerator, otherParsed.denominator),\n JSBI.multiply(otherParsed.numerator, this.denominator)\n );\n }\n\n public multiply(other: Fraction | BigintIsh): Fraction {\n const otherParsed = Fraction.tryParseFraction(other);\n return new Fraction(\n JSBI.multiply(this.numerator, otherParsed.numerator),\n JSBI.multiply(this.denominator, otherParsed.denominator)\n );\n }\n\n public divide(other: Fraction | BigintIsh): Fraction {\n const otherParsed = Fraction.tryParseFraction(other);\n return new Fraction(\n JSBI.multiply(this.numerator, otherParsed.denominator),\n JSBI.multiply(this.denominator, otherParsed.numerator)\n );\n }\n\n public toSignificant(\n significantDigits: number,\n format: object = { groupSeparator: \"\" },\n rounding: Rounding = Rounding.ROUND_HALF_UP\n ): string {\n invariant(\n Number.isInteger(significantDigits),\n `${significantDigits} is not an integer.`\n );\n invariant(significantDigits > 0, `${significantDigits} is not positive.`);\n\n Decimal.set({\n precision: significantDigits + 1,\n rounding: toSignificantRounding[rounding],\n });\n const quotient = new Decimal(this.numerator.toString())\n .div(this.denominator.toString())\n .toSignificantDigits(significantDigits);\n return quotient.toFormat(quotient.decimalPlaces(), format);\n }\n\n public toFixed(\n decimalPlaces: number,\n format: object = { groupSeparator: \"\" },\n rounding: Rounding = Rounding.ROUND_HALF_UP\n ): string {\n invariant(\n Number.isInteger(decimalPlaces),\n `${decimalPlaces} is not an integer.`\n );\n invariant(decimalPlaces >= 0, `${decimalPlaces} is negative.`);\n\n Big.DP = decimalPlaces;\n Big.RM = toFixedRounding[rounding];\n return new Big(this.numerator.toString())\n .div(this.denominator.toString())\n .toFormat(decimalPlaces, format);\n }\n\n /**\n * Helper method for converting any super class back to a fraction\n */\n public get asFraction(): Fraction {\n return new Fraction(this.numerator, this.denominator);\n }\n}\n","import JSBI from \"jsbi\";\nimport { BigintIsh, Rounding } from \"../../constants\";\nimport { Fraction } from \"./fraction\";\n\nconst ONE_HUNDRED = new Fraction(JSBI.BigInt(100));\n\n/**\n * Converts a fraction to a percent\n * @param fraction the fraction to convert\n */\nfunction toPercent(fraction: Fraction): Percent {\n return new Percent(fraction.numerator, fraction.denominator);\n}\n\nexport class Percent extends Fraction {\n /**\n * This boolean prevents a fraction from being interpreted as a Percent\n */\n public readonly isPercent: true = true;\n\n add(other: Fraction | BigintIsh): Percent {\n return toPercent(super.add(other));\n }\n\n subtract(other: Fraction | BigintIsh): Percent {\n return toPercent(super.subtract(other));\n }\n\n multiply(other: Fraction | BigintIsh): Percent {\n return toPercent(super.multiply(other));\n }\n\n divide(other: Fraction | BigintIsh): Percent {\n return toPercent(super.divide(other));\n }\n\n public toSignificant(significantDigits: number = 5, format?: object, rounding?: Rounding): string {\n return super.multiply(ONE_HUNDRED).toSignificant(significantDigits, format, rounding);\n }\n\n public toFixed(decimalPlaces: number = 2, format?: object, rounding?: Rounding): string {\n return super.multiply(ONE_HUNDRED).toFixed(decimalPlaces, format, rounding);\n }\n}\n","import JSBI from \"jsbi\";\nimport invariant from \"tiny-invariant\";\n\nimport { BigintIsh, Rounding } from \"../../constants\";\nimport { Token } from \"../token\";\nimport { Fraction } from \"./fraction\";\nimport { CurrencyAmount } from \"./currencyAmount\";\n\nexport class Price extends Fraction {\n public readonly baseCurrency: TBase; // input i.e. denominator\n\n public readonly quoteCurrency: TQuote; // output i.e. numerator\n\n public readonly scalar: Fraction; // used to adjust the raw fraction w/r/t the decimals of the {base,quote}Token\n\n /**\n * Construct a price, either with the base and quote currency amount, or the\n * @param args\n */\n public constructor(\n ...args:\n | [TBase, TQuote, BigintIsh, BigintIsh]\n | [\n {\n baseAmount: CurrencyAmount;\n quoteAmount: CurrencyAmount;\n },\n ]\n ) {\n let baseCurrency: TBase; let quoteCurrency: TQuote; let denominator: BigintIsh; let numerator: BigintIsh;\n\n if (args.length === 4) {\n [baseCurrency, quoteCurrency, denominator, numerator] = args;\n } else {\n const result = args[0].quoteAmount.divide(args[0].baseAmount);\n [baseCurrency, quoteCurrency, denominator, numerator] = [\n args[0].baseAmount.currency,\n args[0].quoteAmount.currency,\n result.denominator,\n result.numerator,\n ];\n }\n super(numerator, denominator);\n\n this.baseCurrency = baseCurrency;\n this.quoteCurrency = quoteCurrency;\n this.scalar = new Fraction(\n JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(baseCurrency.decimals)),\n JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(quoteCurrency.decimals)),\n );\n }\n\n /**\n * Flip the price, switching the base and quote currency\n */\n public invert(): Price {\n return new Price(this.quoteCurrency, this.baseCurrency, this.numerator, this.denominator);\n }\n\n /**\n * Multiply the price by another price, returning a new price. The other price must have the same base currency as this price's quote currency\n * @param other the other price\n */\n public multiply(other: Price): Price {\n invariant(this.quoteCurrency.equals(other.baseCurrency), \"TOKEN\");\n const fraction = super.multiply(other);\n return new Price(this.baseCurrency, other.quoteCurrency, fraction.denominator, fraction.numerator);\n }\n\n /**\n * Return the amount of quote currency corresponding to a given amount of the base currency\n * @param currencyAmount the amount of base currency to quote against the price\n */\n public quote(currencyAmount: CurrencyAmount): CurrencyAmount {\n invariant(currencyAmount.currency.equals(this.baseCurrency), \"TOKEN\");\n const result = super.multiply(currencyAmount);\n return CurrencyAmount.fromFractionalAmount(this.quoteCurrency, result.numerator, result.denominator);\n }\n\n /**\n * Get the value scaled by decimals for formatting\n * @private\n */\n private get adjustedForDecimals(): Fraction {\n return super.multiply(this.scalar);\n }\n\n public toSignificant(significantDigits = 6, format?: object, rounding?: Rounding): string {\n return this.adjustedForDecimals.toSignificant(significantDigits, format, rounding);\n }\n\n public toFixed(decimalPlaces = 4, format?: object, rounding?: Rounding): string {\n return this.adjustedForDecimals.toFixed(decimalPlaces, format, rounding);\n }\n}\n","import invariant from \"tiny-invariant\";\n\n/**\n * A currency is any fungible financial instrument, including Ether, all ERC20 tokens, and other chain-native currencies\n */\nexport abstract class BaseCurrency {\n /**\n * Returns whether the currency is native to the chain and must be wrapped (e.g. Ether)\n */\n public abstract readonly isNative: boolean;\n\n /**\n * Returns whether the currency is a token that is usable without wrapping\n */\n public abstract readonly isToken: boolean;\n\n /**\n * The decimals used in representing currency amounts\n */\n public readonly decimals: number;\n\n /**\n * The symbol of the currency, i.e. a short textual non-unique identifier\n */\n public readonly symbol: string;\n\n /**\n * The name of the currency, i.e. a descriptive textual non-unique identifier\n */\n public readonly name: string;\n\n public readonly logo: string;\n\n public readonly transFee: number;\n\n public readonly standard: string;\n\n /**\n * Constructs an instance of the base class `BaseCurrency`.\n * @param decimals decimals of the currency\n * @param symbol symbol of the currency\n * @param name of the currency\n */\n protected constructor({\n decimals,\n symbol,\n name,\n logo,\n transFee,\n standard,\n }: {\n decimals: number;\n symbol: string;\n name: string;\n logo?: string;\n transFee?: number;\n standard: string;\n }) {\n invariant(decimals >= 0 && decimals < 255 && Number.isInteger(decimals), \"DECIMALS\");\n\n this.decimals = decimals;\n this.symbol = symbol;\n this.name = name ?? \"\";\n this.logo = logo ?? \"\";\n this.transFee = transFee ?? 0;\n this.standard = standard;\n }\n\n /**\n * Returns whether this currency is functionally equivalent to the other currency\n * @param other the other currency\n */\n public abstract equals(other: BaseCurrency): boolean;\n}\n","/* eslint-disable @typescript-eslint/prefer-as-const */\n\nimport invariant from \"tiny-invariant\";\nimport { validateAndParseAddress } from \"../utils/validateAndParseAddress\";\nimport { BaseCurrency } from \"./baseCurrency\";\n\ninterface ConstructorArgs {\n address: string;\n decimals: number;\n symbol: string;\n name: string;\n logo?: string;\n transFee?: number;\n standard: string;\n}\n\n/**\n * Represents an ICP token with a unique address and some metadata.\n */\nexport class Token extends BaseCurrency {\n public readonly isNative: false = false;\n\n public readonly isToken: true = true;\n\n /**\n * The contract address on the chain on which this token lives\n */\n public readonly address: string;\n\n public constructor({ address, decimals, symbol, name, logo, transFee, standard }: ConstructorArgs) {\n super({\n decimals,\n symbol,\n name,\n logo,\n transFee,\n standard,\n });\n\n this.address = validateAndParseAddress(address);\n }\n\n /**\n * Returns true if the two tokens are equivalent, i.e. have the same address.\n * @param other other token to compare\n */\n public equals(other: Token): boolean {\n return other.isToken && this.address === other.address;\n }\n\n /**\n * Returns true if the address of this token sorts before the address of the other token\n * @param other other token to compare\n * @throws if the tokens have the same address\n * @throws if the tokens are on different chains\n */\n public sortsBefore(other: Token): boolean {\n invariant(this.address !== other.address, \"ADDRESSES\");\n return this.address.toLowerCase() < other.address.toLowerCase();\n }\n\n /**\n * Return this token, which does not need to be wrapped\n */\n public get wrapped(): Token {\n return this;\n }\n}\n","import { isValidPrincipal } from \"@icpswap/utils\";\nimport { getAddress } from \"@ethersproject/address\";\n\n/**\n * Validates an address and returns the address\n * @param address the principal address\n */\nexport function validateAndParseAddress(address: string): string {\n if (isValidPrincipal(address)) return address;\n throw new Error(`${address} is not a valid address.`);\n}\n\nexport function validateAndParseERC20Address(address: string): string {\n try {\n return getAddress(address);\n } catch (error) {\n throw new Error(`${address} is not a valid address.`);\n }\n}\n","import JSBI from \"jsbi\";\nimport { NEGATIVE_ONE, ZERO } from \"../internalConstants\";\n\nexport abstract class LiquidityMath {\n /**\n * Cannot be constructed.\n */\n private constructor() {}\n\n public static addDelta(x: JSBI, y: JSBI): JSBI {\n if (JSBI.lessThan(y, ZERO)) {\n return JSBI.subtract(x, JSBI.multiply(y, NEGATIVE_ONE));\n } else {\n return JSBI.add(x, y);\n }\n }\n}\n","import JSBI from \"jsbi\";\nimport { FeeAmount } from \"../constants\";\nimport { NEGATIVE_ONE, ZERO } from \"../internalConstants\";\nimport { FullMath } from \"./fullMath\";\nimport { SqrtPriceMath } from \"./sqrtPriceMath\";\n\nconst MAX_FEE = JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(6));\n\nexport abstract class SwapMath {\n /**\n * Cannot be constructed.\n */\n private constructor() {}\n\n public static computeSwapStep(\n sqrtRatioCurrentX96: JSBI,\n sqrtRatioTargetX96: JSBI,\n liquidity: JSBI,\n amountRemaining: JSBI,\n feePips: FeeAmount\n ): [JSBI, JSBI, JSBI, JSBI] {\n const returnValues: Partial<{\n sqrtRatioNextX96: JSBI;\n amountIn: JSBI;\n amountOut: JSBI;\n feeAmount: JSBI;\n }> = {};\n\n const zeroForOne = JSBI.greaterThanOrEqual(sqrtRatioCurrentX96, sqrtRatioTargetX96);\n const exactIn = JSBI.greaterThanOrEqual(amountRemaining, ZERO);\n\n if (exactIn) {\n const amountRemainingLessFee = JSBI.divide(\n JSBI.multiply(amountRemaining, JSBI.subtract(MAX_FEE, JSBI.BigInt(feePips))),\n MAX_FEE\n );\n returnValues.amountIn = zeroForOne\n ? SqrtPriceMath.getAmount0Delta(sqrtRatioTargetX96, sqrtRatioCurrentX96, liquidity, true)\n : SqrtPriceMath.getAmount1Delta(sqrtRatioCurrentX96, sqrtRatioTargetX96, liquidity, true);\n if (JSBI.greaterThanOrEqual(amountRemainingLessFee, returnValues.amountIn!)) {\n returnValues.sqrtRatioNextX96 = sqrtRatioTargetX96;\n } else {\n returnValues.sqrtRatioNextX96 = SqrtPriceMath.getNextSqrtPriceFromInput(\n sqrtRatioCurrentX96,\n liquidity,\n amountRemainingLessFee,\n zeroForOne\n );\n }\n } else {\n returnValues.amountOut = zeroForOne\n ? SqrtPriceMath.getAmount1Delta(sqrtRatioTargetX96, sqrtRatioCurrentX96, liquidity, false)\n : SqrtPriceMath.getAmount0Delta(sqrtRatioCurrentX96, sqrtRatioTargetX96, liquidity, false);\n if (JSBI.greaterThanOrEqual(JSBI.multiply(amountRemaining, NEGATIVE_ONE), returnValues.amountOut)) {\n returnValues.sqrtRatioNextX96 = sqrtRatioTargetX96;\n } else {\n returnValues.sqrtRatioNextX96 = SqrtPriceMath.getNextSqrtPriceFromOutput(\n sqrtRatioCurrentX96,\n liquidity,\n JSBI.multiply(amountRemaining, NEGATIVE_ONE),\n zeroForOne\n );\n }\n }\n\n const max = JSBI.equal(sqrtRatioTargetX96, returnValues.sqrtRatioNextX96);\n\n if (zeroForOne) {\n returnValues.amountIn =\n max && exactIn\n ? returnValues.amountIn\n : SqrtPriceMath.getAmount0Delta(returnValues.sqrtRatioNextX96, sqrtRatioCurrentX96, liquidity, true);\n returnValues.amountOut =\n max && !exactIn\n ? returnValues.amountOut\n : SqrtPriceMath.getAmount1Delta(returnValues.sqrtRatioNextX96, sqrtRatioCurrentX96, liquidity, false);\n } else {\n returnValues.amountIn =\n max && exactIn\n ? returnValues.amountIn\n : SqrtPriceMath.getAmount1Delta(sqrtRatioCurrentX96, returnValues.sqrtRatioNextX96, liquidity, true);\n returnValues.amountOut =\n max && !exactIn\n ? returnValues.amountOut\n : SqrtPriceMath.getAmount0Delta(sqrtRatioCurrentX96, returnValues.sqrtRatioNextX96, liquidity, false);\n }\n\n if (!exactIn && JSBI.greaterThan(returnValues.amountOut!, JSBI.multiply(amountRemaining, NEGATIVE_ONE))) {\n returnValues.amountOut = JSBI.multiply(amountRemaining, NEGATIVE_ONE);\n }\n\n if (exactIn && JSBI.notEqual(returnValues.sqrtRatioNextX96, sqrtRatioTargetX96)) {\n // we didn't reach the target, so take the remainder of the maximum input as fee\n returnValues.feeAmount = JSBI.subtract(amountRemaining, returnValues.amountIn!);\n } else {\n returnValues.feeAmount = FullMath.mulDivRoundingUp(\n returnValues.amountIn!,\n JSBI.BigInt(feePips),\n JSBI.subtract(MAX_FEE, JSBI.BigInt(feePips))\n );\n }\n\n return [returnValues.sqrtRatioNextX96!, returnValues.amountIn!, returnValues.amountOut!, returnValues.feeAmount!];\n }\n}\n","import { BigintIsh } from \"../core\";\n\n/**\n * Provides information about ticks\n */\nexport interface TickDataProvider {\n /**\n * Return information corresponding to a specific tick\n * @param tick the tick to load\n */\n getTick(tick: number): Promise<{ liquidityNet: BigintIsh }>;\n\n /**\n * Return the next tick that is initialized within a single word\n * @param tick The current tick\n * @param lte Whether the next tick should be lte the current tick\n * @param tickSpacing The tick spacing of the pool\n */\n nextInitializedTickWithinOneWord(\n tick: number,\n lte: boolean,\n tickSpacing: number\n ): Promise<[number, boolean]>;\n}\n\n/**\n * This tick data provider does not know how to fetch any tick data. It throws whenever it is required. Useful if you\n * do not need to load tick data for your use case.\n */\nexport class NoTickDataProvider implements TickDataProvider {\n private static ERROR_MESSAGE = \"No tick data provider was given\";\n async getTick(_tick: number): Promise<{ liquidityNet: BigintIsh }> {\n throw new Error(NoTickDataProvider.ERROR_MESSAGE);\n }\n\n async nextInitializedTickWithinOneWord(\n _tick: number,\n _lte: boolean,\n _tickSpacing: number\n ): Promise<[number, boolean]> {\n throw new Error(NoTickDataProvider.ERROR_MESSAGE);\n }\n}\n","import JSBI from \"jsbi\";\nimport invariant from \"tiny-invariant\";\nimport { Tick } from \"../entities/tick\";\nimport { ZERO } from \"../internalConstants\";\nimport { isSorted } from \"./isSorted\";\n\nfunction tickComparator(a: Tick, b: Tick) {\n return a.index - b.index;\n}\n\n/**\n * Utility methods for interacting with sorted lists of ticks\n */\nexport abstract class TickList {\n /**\n * Cannot be constructed\n */\n private constructor() {}\n\n public static validateList(ticks: Tick[], tickSpacing: number) {\n invariant(tickSpacing > 0, \"TICK_SPACING_NONZERO\");\n // ensure ticks are spaced appropriately\n invariant(\n ticks.every(({ index }) => Math.abs(index) % tickSpacing === 0),\n \"TICK_SPACING\"\n );\n\n // ensure tick liquidity deltas sum to 0\n invariant(\n JSBI.equal(\n ticks.reduce((accumulator, { liquidityNet }) => JSBI.add(accumulator, liquidityNet), ZERO),\n ZERO\n ),\n \"ZERO_NET\"\n );\n\n invariant(isSorted(ticks, tickComparator), \"SORTED\");\n }\n\n public static isBelowSmallest(ticks: readonly Tick[], tick: number): boolean {\n invariant(ticks.length > 0, \"LENGTH\");\n return tick < ticks[0].index;\n }\n\n public static isAtOrAboveLargest(ticks: readonly Tick[], tick: number): boolean {\n invariant(ticks.length > 0, \"LENGTH\");\n return tick >= ticks[ticks.length - 1].index;\n }\n\n public static getTick(ticks: readonly Tick[], index: number): Tick {\n const tick = ticks[this.binarySearch(ticks, index)];\n invariant(tick.index === index, \"NOT_CONTAINED\");\n return tick;\n }\n\n /**\n * Finds the largest tick in the list of ticks that is less than or equal to tick\n * @param ticks list of ticks\n * @param tick tick to find the largest tick that is less than or equal to tick\n * @private\n */\n private static binarySearch(ticks: readonly Tick[], tick: number): number {\n invariant(!this.isBelowSmallest(ticks, tick), \"BELOW_SMALLEST\");\n\n let l = 0;\n let r = ticks.length - 1;\n let i;\n while (true) {\n i = Math.floor((l + r) / 2);\n\n if (ticks[i].index <= tick && (i === ticks.length - 1 || ticks[i + 1].index > tick)) {\n return i;\n }\n\n if (ticks[i].index < tick) {\n l = i + 1;\n } else {\n r = i - 1;\n }\n }\n }\n\n public static nextInitializedTick(ticks: readonly Tick[], tick: number, lte: boolean): Tick {\n if (lte) {\n invariant(!TickList.isBelowSmallest(ticks, tick), \"BELOW_SMALLEST\");\n if (TickList.isAtOrAboveLargest(ticks, tick)) {\n return ticks[ticks.length - 1];\n }\n const index = this.binarySearch(ticks, tick);\n return ticks[index];\n } else {\n invariant(!this.isAtOrAboveLargest(ticks, tick), \"AT_OR_ABOVE_LARGEST\");\n if (this.isBelowSmallest(ticks, tick)) {\n return ticks[0];\n }\n const index = this.binarySearch(ticks, tick);\n return ticks[index + 1];\n }\n }\n\n public static nextInitializedTickWithinOneWord(\n ticks: readonly Tick[],\n tick: number,\n lte: boolean,\n tickSpacing: number\n ): [number, boolean] {\n const compressed = Math.floor(tick / tickSpacing); // matches rounding in the code\n\n if (lte) {\n const wordPos = compressed >> 8;\n const minimum = (wordPos << 8) * tickSpacing;\n\n if (TickList.isBelowSmallest(ticks, tick)) {\n return [minimum, false];\n }\n\n const index = TickList.nextInitializedTick(ticks, tick, lte).index;\n const nextInitializedTick = Math.max(minimum, index);\n return [nextInitializedTick, nextInitializedTick === index];\n } else {\n const wordPos = (compressed + 1) >> 8;\n const maximum = (((wordPos + 1) << 8) - 1) * tickSpacing;\n\n if (this.isAtOrAboveLargest(ticks, tick)) {\n return [maximum, false];\n }\n\n const index = this.nextInitializedTick(ticks, tick, lte).index;\n const nextInitializedTick = Math.min(maximum, index);\n return [nextInitializedTick, nextInitializedTick === index];\n }\n }\n}\n","/**\n * Determines if a tick list is sorted\n * @param list The tick list\n * @param comparator The comparator\n * @returns true if sorted\n */\nexport function isSorted(list: Array, comparator: (a: T, b: T) => number): boolean {\n for (let i = 0; i < list.length - 1; i++) {\n if (comparator(list[i], list[i + 1]) > 0) {\n return false;\n }\n }\n return true;\n}\n","import JSBI from \"jsbi\";\nimport invariant from \"tiny-invariant\";\nimport { BigintIsh } from \"../core\";\nimport { TickMath } from \"../utils/tickMath\";\n\nexport interface TickConstructorArgs {\n index: number;\n liquidityGross: BigintIsh;\n liquidityNet: BigintIsh;\n}\n\nexport class Tick {\n public readonly index: number;\n\n public readonly liquidityGross: JSBI;\n\n public readonly liquidityNet: JSBI;\n\n constructor({ index, liquidityGross, liquidityNet }: TickConstructorArgs) {\n invariant(index >= TickMath.MIN_TICK && index <= TickMath.MAX_TICK, \"TICK\");\n this.index = index;\n this.liquidityGross = JSBI.BigInt(liquidityGross);\n this.liquidityNet = JSBI.BigInt(liquidityNet);\n }\n}\n","import { BigintIsh } from \"../core\";\nimport { TickList } from \"../utils/tickList\";\nimport { Tick, TickConstructorArgs } from \"./tick\";\nimport { TickDataProvider } from \"./tickDataProvider\";\n\n/**\n * A data provider for ticks that is backed by an in-memory array of ticks.\n */\nexport class TickListDataProvider implements TickDataProvider {\n private ticks: readonly Tick[];\n\n constructor(ticks: (Tick | TickConstructorArgs)[], tickSpacing: number) {\n const ticksMapped: Tick[] = ticks.map((t) =>\n t instanceof Tick ? t : new Tick(t)\n );\n TickList.validateList(ticksMapped, tickSpacing);\n this.ticks = ticksMapped;\n }\n\n async getTick(\n tick: number\n ): Promise<{ liquidityNet: BigintIsh; liquidityGross: BigintIsh }> {\n return TickList.getTick(this.ticks, tick);\n }\n\n async nextInitializedTickWithinOneWord(\n tick: number,\n lte: boolean,\n tickSpacing: number\n ): Promise<[number, boolean]> {\n return TickList.nextInitializedTickWithinOneWord(\n this.ticks,\n tick,\n lte,\n tickSpacing\n );\n }\n}\n","import JSBI from \"jsbi\";\nimport invariant from \"tiny-invariant\";\nimport { BigintIsh, Price, Token, CurrencyAmount } from \"../core\";\nimport { FeeAmount, TICK_SPACINGS } from \"../constants\";\nimport { NEGATIVE_ONE, ONE, Q192, ZERO } from \"../internalConstants\";\nimport { computePoolAddress } from \"../utils/computePoolAddress\";\nimport { LiquidityMath } from \"../utils/liquidityMath\";\nimport { SwapMath } from \"../utils/swapMath\";\nimport { TickMath } from \"../utils/tickMath\";\nimport { Tick, TickConstructorArgs } from \"./tick\";\nimport { NoTickDataProvider, TickDataProvider } from \"./tickDataProvider\";\nimport { TickListDataProvider } from \"./tickListDataProvider\";\n\ninterface StepComputations {\n sqrtPriceStartX96: JSBI;\n tickNext: number;\n initialized: boolean;\n sqrtPriceNextX96: JSBI;\n amountIn: JSBI;\n amountOut: JSBI;\n feeAmount: JSBI;\n}\n\n/**\n * By default, pools will not allow operations that require ticks.\n */\nconst NO_TICK_DATA_PROVIDER_DEFAULT = new NoTickDataProvider();\n\n/**\n * Represents a V3 pool\n */\nexport class Pool {\n public readonly id: string;\n\n public readonly token0: Token;\n\n public readonly token1: Token;\n\n public readonly fee: FeeAmount;\n\n public readonly sqrtRatioX96: JSBI;\n\n public readonly liquidity: JSBI;\n\n public readonly tickCurrent: number;\n\n public readonly tickDataProvider: TickDataProvider;\n\n private _token0Price?: Price;\n\n private _token1Price?: Price;\n\n public static getAddress(tokenA: Token, tokenB: Token, fee: FeeAmount): string {\n return computePoolAddress({\n fee,\n tokenA,\n tokenB,\n });\n }\n\n /**\n * Construct a pool\n * @param tokenA One of the tokens in the pool\n * @param tokenB The other token in the pool\n * @param fee The fee in hundredths of a bips of the input amount of every swap that is collected by the pool\n * @param sqrtRatioX96 The sqrt of the current ratio of amounts of token1 to token0\n * @param liquidity The current value of in range liquidity\n * @param tickCurrent The current tick of the pool\n * @param ticks The current state of the pool ticks or a data provider that can return tick data\n */\n public constructor(\n id: string,\n tokenA: Token,\n tokenB: Token,\n fee: FeeAmount,\n sqrtRatioX96: BigintIsh,\n liquidity: BigintIsh,\n tickCurrent: number,\n ticks: TickDataProvider | (Tick | TickConstructorArgs)[] = NO_TICK_DATA_PROVIDER_DEFAULT,\n ) {\n invariant(Number.isInteger(fee) && fee < 1_000_000, \"FEE\");\n\n // const tickCurrentSqrtRatioX96 = TickMath.getSqrtRatioAtTick(tickCurrent);\n // const nextTickSqrtRatioX96 = TickMath.getSqrtRatioAtTick(tickCurrent + 1);\n\n // invariant(\n // JSBI.greaterThanOrEqual(\n // JSBI.BigInt(sqrtRatioX96),\n // tickCurrentSqrtRatioX96\n // ) &&\n // JSBI.lessThanOrEqual(JSBI.BigInt(sqrtRatioX96), nextTickSqrtRatioX96),\n // \"PRICE_BOUNDS\"\n // );\n // always create a copy of the list since we want the pool's tick list to be immutable\n [this.token0, this.token1] = tokenA.sortsBefore(tokenB) ? [tokenA, tokenB] : [tokenB, tokenA];\n this.id = id;\n this.fee = fee;\n this.sqrtRatioX96 = JSBI.BigInt(sqrtRatioX96);\n this.liquidity = JSBI.BigInt(liquidity);\n this.tickCurrent = tickCurrent;\n this.tickDataProvider = Array.isArray(ticks) ? new TickListDataProvider(ticks, TICK_SPACINGS[fee]) : ticks;\n }\n\n /**\n * Returns true if the token is either token0 or token1\n * @param token The token to check\n * @returns True if token is either token0 or token\n */\n public involvesToken(token: Token): boolean {\n return token.equals(this.token0) || token.equals(this.token1);\n }\n\n /**\n * Returns the current mid price of the pool in terms of token0, i.e. the ratio of token1 over token0\n */\n public get token0Price(): Price {\n if (!this._token0Price) {\n this._token0Price = new Price(\n this.token0,\n this.token1,\n Q192,\n JSBI.multiply(this.sqrtRatioX96, this.sqrtRatioX96),\n );\n }\n\n return this._token0Price;\n }\n\n /**\n * Returns the current mid price of the pool in terms of token1, i.e. the ratio of token0 over token1\n */\n public get token1Price(): Price {\n if (!this._token1Price) {\n this._token1Price = new Price(\n this.token1,\n this.token0,\n JSBI.multiply(this.sqrtRatioX96, this.sqrtRatioX96),\n Q192,\n );\n }\n\n return this._token1Price;\n }\n\n /**\n * Return the price of the given token in terms of the other token in the pool.\n * @param token The token to return price of\n * @returns The price of the given token, in terms of the other.\n */\n public priceOf(token: Token): Price {\n invariant(this.involvesToken(token), \"TOKEN\");\n return token.equals(this.token0) ? this.token0Price : this.token1Price;\n }\n\n /**\n * Given an input amount of a token, return the computed output amount, and a pool with state updated after the trade\n * @param inputAmount The input amount for which to quote the output amount\n * @param sqrtPriceLimitX96 The Q64.96 sqrt price limit\n * @returns The output amount and the pool with updated state\n */\n public async getOutputAmount(\n inputAmount: CurrencyAmount,\n sqrtPriceLimitX96?: JSBI,\n ): Promise<[CurrencyAmount, Pool]> {\n invariant(this.involvesToken(inputAmount.currency), \"TOKEN\");\n\n const zeroForOne = inputAmount.currency.equals(this.token0);\n\n const {\n amountCalculated: outputAmount,\n sqrtRatioX96,\n liquidity,\n tickCurrent,\n } = await this.swap(zeroForOne, inputAmount.quotient, sqrtPriceLimitX96);\n const outputToken = zeroForOne ? this.token1 : this.token0;\n return [\n CurrencyAmount.fromRawAmount(outputToken, JSBI.multiply(outputAmount, NEGATIVE_ONE)),\n new Pool(\n this.id,\n this.token0,\n this.token1,\n this.fee,\n sqrtRatioX96,\n liquidity,\n tickCurrent,\n this.tickDataProvider,\n ),\n ];\n }\n\n /**\n * Given a desired output amount of a token, return the computed input amount and a pool with state updated after the trade\n * @param outputAmount the output amount for which to quote the input amount\n * @param sqrtPriceLimitX96 The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this value after the swap. If one for zero, the price cannot be greater than this value after the swap\n * @returns The input amount and the pool with updated state\n */\n public async getInputAmount(\n outputAmount: CurrencyAmount,\n sqrtPriceLimitX96?: JSBI,\n ): Promise<[CurrencyAmount, Pool]> {\n invariant(outputAmount.currency.isToken && this.involvesToken(outputAmount.currency), \"TOKEN\");\n\n const zeroForOne = outputAmount.currency.equals(this.token1);\n\n const {\n amountCalculated: inputAmount,\n sqrtRatioX96,\n liquidity,\n tickCurrent,\n } = await this.swap(zeroForOne, JSBI.multiply(outputAmount.quotient, NEGATIVE_ONE), sqrtPriceLimitX96);\n const inputToken = zeroForOne ? this.token0 : this.token1;\n return [\n CurrencyAmount.fromRawAmount(inputToken, inputAmount),\n new Pool(\n this.id,\n this.token0,\n this.token1,\n this.fee,\n sqrtRatioX96,\n liquidity,\n tickCurrent,\n this.tickDataProvider,\n ),\n ];\n }\n\n /**\n * Executes a swap\n * @param zeroForOne Whether the amount in is token0 or token1\n * @param amountSpecified The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\n * @param sqrtPriceLimitX96 The Q64.96 sqrt price limit. If zero for one, the price cannot be less than this value after the swap. If one for zero, the price cannot be greater than this value after the swap\n * @returns amountCalculated\n * @returns sqrtRatioX96\n * @returns liquidity\n * @returns tickCurrent\n */\n private async swap(\n zeroForOne: boolean,\n amountSpecified: JSBI,\n _sqrtPriceLimitX96?: JSBI,\n ): Promise<{\n amountCalculated: JSBI;\n sqrtRatioX96: JSBI;\n liquidity: JSBI;\n tickCurrent: number;\n }> {\n let sqrtPriceLimitX96 = _sqrtPriceLimitX96;\n\n if (!sqrtPriceLimitX96)\n sqrtPriceLimitX96 = zeroForOne\n ? JSBI.add(TickMath.MIN_SQRT_RATIO, ONE)\n : JSBI.subtract(TickMath.MAX_SQRT_RATIO, ONE);\n\n if (zeroForOne) {\n invariant(JSBI.greaterThan(sqrtPriceLimitX96, TickMath.MIN_SQRT_RATIO), \"RATIO_MIN\");\n invariant(JSBI.lessThan(sqrtPriceLimitX96, this.sqrtRatioX96), \"RATIO_CURRENT\");\n } else {\n invariant(JSBI.lessThan(sqrtPriceLimitX96, TickMath.MAX_SQRT_RATIO), \"RATIO_MAX\");\n invariant(JSBI.greaterThan(sqrtPriceLimitX96, this.sqrtRatioX96), \"RATIO_CURRENT\");\n }\n\n const exactInput = JSBI.greaterThanOrEqual(amountSpecified, ZERO);\n\n // keep track of swap state\n\n const state = {\n amountSpecifiedRemaining: amountSpecified,\n amountCalculated: ZERO,\n sqrtPriceX96: this.sqrtRatioX96,\n tick: this.tickCurrent,\n liquidity: this.liquidity,\n };\n\n // start swap while loop\n while (JSBI.notEqual(state.amountSpecifiedRemaining, ZERO) && state.sqrtPriceX96 !== sqrtPriceLimitX96) {\n const step: Partial = {};\n step.sqrtPriceStartX96 = state.sqrtPriceX96;\n\n // because each iteration of the while loop rounds, we can't optimize this code (relative to the smart contract)\n // by simply traversing to the next available tick, we instead need to exactly replicate\n // tickBitmap.nextInitializedTickWithinOneWord\n [step.tickNext, step.initialized] = await this.tickDataProvider.nextInitializedTickWithinOneWord(\n state.tick,\n zeroForOne,\n this.tickSpacing,\n );\n\n if (step.tickNext < TickMath.MIN_TICK) {\n step.tickNext = TickMath.MIN_TICK;\n } else if (step.tickNext > TickMath.MAX_TICK) {\n step.tickNext = TickMath.MAX_TICK;\n }\n\n step.sqrtPriceNextX96 = TickMath.getSqrtRatioAtTick(step.tickNext);\n [state.sqrtPriceX96, step.amountIn, step.amountOut, step.feeAmount] = SwapMath.computeSwapStep(\n state.sqrtPriceX96,\n (\n zeroForOne\n ? JSBI.lessThan(step.sqrtPriceNextX96, sqrtPriceLimitX96)\n : JSBI.greaterThan(step.sqrtPriceNextX96, sqrtPriceLimitX96)\n )\n ? sqrtPriceLimitX96\n : step.sqrtPriceNextX96,\n state.liquidity,\n state.amountSpecifiedRemaining,\n this.fee,\n );\n\n if (exactInput) {\n state.amountSpecifiedRemaining = JSBI.subtract(\n state.amountSpecifiedRemaining,\n JSBI.add(step.amountIn, step.feeAmount),\n );\n state.amountCalculated = JSBI.subtract(state.amountCalculated, step.amountOut);\n } else {\n state.amountSpecifiedRemaining = JSBI.add(state.amountSpecifiedRemaining, step.amountOut);\n state.amountCalculated = JSBI.add(state.amountCalculated, JSBI.add(step.amountIn, step.feeAmount));\n }\n\n // TODO\n if (JSBI.equal(state.sqrtPriceX96, step.sqrtPriceNextX96)) {\n // if the tick is initialized, run the tick transition\n if (step.initialized) {\n let liquidityNet = JSBI.BigInt((await this.tickDataProvider.getTick(step.tickNext)).liquidityNet);\n // if we're moving leftward, we interpret liquidityNet as the opposite sign\n // safe because liquidityNet cannot be type(int128).min\n if (zeroForOne) liquidityNet = JSBI.multiply(liquidityNet, NEGATIVE_ONE);\n\n state.liquidity = LiquidityMath.addDelta(state.liquidity, liquidityNet);\n }\n\n state.tick = zeroForOne ? step.tickNext - 1 : step.tickNext;\n } else if (state.sqrtPriceX96 !== step.sqrtPriceStartX96) {\n // recompute unless we're on a lower tick boundary (i.e. already transitioned ticks), and haven't moved\n state.tick = TickMath.getTickAtSqrtRatio(state.sqrtPriceX96);\n }\n }\n\n return {\n amountCalculated: state.amountCalculated,\n sqrtRatioX96: state.sqrtPriceX96,\n liquidity: state.liquidity,\n tickCurrent: state.tick,\n };\n }\n\n public get tickSpacing(): number {\n return TICK_SPACINGS[this.fee];\n }\n}\n","import { Token } from \"../core\";\nimport { FeeAmount } from \"../constants\";\n\n/**\n * Computes a pool address\n * @param token0 The first token of the pair, irrespective of sort order\n * @param token1 The second token of the pair, irrespective of sort order\n * @param fee The fee tier of the pool\n * @returns The pool address\n */\nexport function computePoolAddress({\n tokenA,\n tokenB,\n fee,\n}: {\n tokenA: Token;\n tokenB: Token;\n fee: FeeAmount;\n}): string {\n const [token0, token1] = tokenA.sortsBefore(tokenB)\n ? [tokenA, tokenB]\n : [tokenB, tokenA]; // does safety checks\n\n return `${token0.address}_${token1.address}_${fee}`;\n}\n\nexport function computePoolAddressFromTokenAddress(\n token0Address: string,\n token1Address: string,\n fee: number\n): string | undefined {\n if (!token0Address || !token1Address || !fee) return undefined;\n return `${token0Address}_${token1Address}_${fee}`;\n}\n","import { BigintIsh } from \"../core\";\nimport JSBI from \"jsbi\";\nimport { Q96 } from \"../internalConstants\";\n\n/**\n * Returns an imprecise maximum amount of liquidity received for a given amount of token 0.\n * This function is available to accommodate LiquidityAmounts#getLiquidityForAmount0 in the v3 periphery,\n * which could be more precise by at least 32 bits by dividing by Q64 instead of Q96 in the intermediate step,\n * and shifting the subtracted ratio left by 32 bits. This imprecise calculation will likely be replaced in a future\n * v3 router contract.\n * @param sqrtRatioAX96 The price at the lower boundary\n * @param sqrtRatioBX96 The price at the upper boundary\n * @param amount0 The token0 amount\n * @returns liquidity for amount0, imprecise\n */\nfunction maxLiquidityForAmount0Imprecise(\n sqrtRatioAX96: JSBI,\n sqrtRatioBX96: JSBI,\n amount0: BigintIsh\n): JSBI {\n if (JSBI.greaterThan(sqrtRatioAX96, sqrtRatioBX96)) {\n [sqrtRatioAX96, sqrtRatioBX96] = [sqrtRatioBX96, sqrtRatioAX96];\n }\n const intermediate = JSBI.divide(\n JSBI.multiply(sqrtRatioAX96, sqrtRatioBX96),\n Q96\n );\n return JSBI.divide(\n JSBI.multiply(JSBI.BigInt(amount0), intermediate),\n JSBI.subtract(sqrtRatioBX96, sqrtRatioAX96)\n );\n}\n\n/**\n * Returns a precise maximum amount of liquidity received for a given amount of token 0 by dividing by Q64 instead of Q96 in the intermediate step,\n * and shifting the subtracted ratio left by 32 bits.\n * @param sqrtRatioAX96 The price at the lower boundary\n * @param sqrtRatioBX96 The price at the upper boundary\n * @param amount0 The token0 amount\n * @returns liquidity for amount0, precise\n */\nfunction maxLiquidityForAmount0Precise(\n sqrtRatioAX96: JSBI,\n sqrtRatioBX96: JSBI,\n amount0: BigintIsh\n): JSBI {\n if (JSBI.greaterThan(sqrtRatioAX96, sqrtRatioBX96)) {\n [sqrtRatioAX96, sqrtRatioBX96] = [sqrtRatioBX96, sqrtRatioAX96];\n }\n\n const numerator = JSBI.multiply(\n JSBI.multiply(JSBI.BigInt(amount0), sqrtRatioAX96),\n sqrtRatioBX96\n );\n const denominator = JSBI.multiply(\n Q96,\n JSBI.subtract(sqrtRatioBX96, sqrtRatioAX96)\n );\n\n return JSBI.divide(numerator, denominator);\n}\n\n/**\n * Computes the maximum amount of liquidity received for a given amount of token1\n * @param sqrtRatioAX96 The price at the lower tick boundary\n * @param sqrtRatioBX96 The price at the upper tick boundary\n * @param amount1 The token1 amount\n * @returns liquidity for amount1\n */\nfunction maxLiquidityForAmount1(\n sqrtRatioAX96: JSBI,\n sqrtRatioBX96: JSBI,\n amount1: BigintIsh\n): JSBI {\n if (JSBI.greaterThan(sqrtRatioAX96, sqrtRatioBX96)) {\n [sqrtRatioAX96, sqrtRatioBX96] = [sqrtRatioBX96, sqrtRatioAX96];\n }\n return JSBI.divide(\n JSBI.multiply(JSBI.BigInt(amount1), Q96),\n JSBI.subtract(sqrtRatioBX96, sqrtRatioAX96)\n );\n}\n\n/**\n * Computes the maximum amount of liquidity received for a given amount of token0, token1,\n * and the prices at the tick boundaries.\n * @param sqrtRatioCurrentX96 the current price\n * @param sqrtRatioAX96 price at lower boundary\n * @param sqrtRatioBX96 price at upper boundary\n * @param amount0 token0 amount\n * @param amount1 token1 amount\n * @param useFullPrecision if false, liquidity will be maximized according to what the router can calculate,\n * not what core can theoretically support\n */\nexport function maxLiquidityForAmounts(\n sqrtRatioCurrentX96: JSBI,\n sqrtRatioAX96: JSBI,\n sqrtRatioBX96: JSBI,\n amount0: BigintIsh,\n amount1: BigintIsh,\n useFullPrecision: boolean\n): JSBI {\n if (JSBI.greaterThan(sqrtRatioAX96, sqrtRatioBX96)) {\n [sqrtRatioAX96, sqrtRatioBX96] = [sqrtRatioBX96, sqrtRatioAX96];\n }\n\n const maxLiquidityForAmount0 = useFullPrecision\n ? maxLiquidityForAmount0Precise\n : maxLiquidityForAmount0Imprecise;\n\n if (JSBI.lessThanOrEqual(sqrtRatioCurrentX96, sqrtRatioAX96)) {\n return maxLiquidityForAmount0(sqrtRatioAX96, sqrtRatioBX96, amount0);\n } else if (JSBI.lessThan(sqrtRatioCurrentX96, sqrtRatioBX96)) {\n const liquidity0 = maxLiquidityForAmount0(\n sqrtRatioCurrentX96,\n sqrtRatioBX96,\n amount0\n );\n const liquidity1 = maxLiquidityForAmount1(\n sqrtRatioAX96,\n sqrtRatioCurrentX96,\n amount1\n );\n return JSBI.lessThan(liquidity0, liquidity1) ? liquidity0 : liquidity1;\n } else {\n return maxLiquidityForAmount1(sqrtRatioAX96, sqrtRatioBX96, amount1);\n }\n}\n","import JSBI from \"jsbi\";\nimport invariant from \"tiny-invariant\";\nimport { BigintIsh, MaxUint256, Percent, Price, CurrencyAmount, Token } from \"../core\";\nimport { ZERO } from \"../internalConstants\";\nimport { maxLiquidityForAmounts } from \"../utils/maxLiquidityForAmounts\";\nimport { tickToPrice } from \"../utils/priceTickConversions\";\nimport { SqrtPriceMath } from \"../utils/sqrtPriceMath\";\nimport { TickMath } from \"../utils/tickMath\";\nimport { encodeSqrtRatioX96 } from \"../utils/encodeSqrtRatioX96\";\nimport { Pool } from \"./pool\";\n\ninterface PositionConstructorArgs {\n pool: Pool;\n tickLower: number;\n tickUpper: number;\n liquidity: BigintIsh;\n}\n\n/**\n * Represents a position on a ICPSwap V3 Pool\n */\nexport class Position {\n public readonly pool: Pool;\n\n public readonly tickLower: number;\n\n public readonly tickUpper: number;\n\n public readonly liquidity: JSBI;\n\n // cached resuts for the getters\n private _token0Amount: CurrencyAmount | null = null;\n\n private _token1Amount: CurrencyAmount | null = null;\n\n private _mintAmounts: Readonly<{ amount0: JSBI; amount1: JSBI }> | null = null;\n\n /**\n * Constructs a position for a given pool with the given liquidity\n * @param pool For which pool the liquidity is assigned\n * @param liquidity The amount of liquidity that is in the position\n * @param tickLower The lower tick of the position\n * @param tickUpper The upper tick of the position\n */\n public constructor({ pool, liquidity, tickLower, tickUpper }: PositionConstructorArgs) {\n invariant(tickLower < tickUpper, \"TICK_ORDER\");\n invariant(tickLower >= TickMath.MIN_TICK && tickLower % pool.tickSpacing === 0, \"TICK_LOWER\");\n invariant(tickUpper <= TickMath.MAX_TICK && tickUpper % pool.tickSpacing === 0, \"TICK_UPPER\");\n\n this.pool = pool;\n this.tickLower = tickLower;\n this.tickUpper = tickUpper;\n this.liquidity = JSBI.BigInt(liquidity);\n }\n\n /**\n * Returns the price of token0 at the lower tick\n */\n public get token0PriceLower(): Price {\n return tickToPrice(this.pool.token0, this.pool.token1, this.tickLower);\n }\n\n /**\n * Returns the price of token0 at the upper tick\n */\n public get token0PriceUpper(): Price {\n return tickToPrice(this.pool.token0, this.pool.token1, this.tickUpper);\n }\n\n /**\n * Returns the amount of token0 that this position's liquidity could be burned for at the current pool price\n */\n public get amount0(): CurrencyAmount {\n if (this._token0Amount === null) {\n if (this.pool.tickCurrent < this.tickLower) {\n this._token0Amount = CurrencyAmount.fromRawAmount(\n this.pool.token0,\n SqrtPriceMath.getAmount0Delta(\n TickMath.getSqrtRatioAtTick(this.tickLower),\n TickMath.getSqrtRatioAtTick(this.tickUpper),\n this.liquidity,\n false,\n ),\n );\n } else if (this.pool.tickCurrent < this.tickUpper) {\n this._token0Amount = CurrencyAmount.fromRawAmount(\n this.pool.token0,\n SqrtPriceMath.getAmount0Delta(\n this.pool.sqrtRatioX96,\n TickMath.getSqrtRatioAtTick(this.tickUpper),\n this.liquidity,\n false,\n ),\n );\n } else {\n this._token0Amount = CurrencyAmount.fromRawAmount(this.pool.token0, ZERO);\n }\n }\n return this._token0Amount;\n }\n\n /**\n * Returns the amount of token1 that this position's liquidity could be burned for at the current pool price\n */\n public get amount1(): CurrencyAmount {\n if (this._token1Amount === null) {\n if (this.pool.tickCurrent < this.tickLower) {\n this._token1Amount = CurrencyAmount.fromRawAmount(this.pool.token1, ZERO);\n } else if (this.pool.tickCurrent < this.tickUpper) {\n this._token1Amount = CurrencyAmount.fromRawAmount(\n this.pool.token1,\n SqrtPriceMath.getAmount1Delta(\n TickMath.getSqrtRatioAtTick(this.tickLower),\n this.pool.sqrtRatioX96,\n this.liquidity,\n false,\n ),\n );\n } else {\n this._token1Amount = CurrencyAmount.fromRawAmount(\n this.pool.token1,\n SqrtPriceMath.getAmount1Delta(\n TickMath.getSqrtRatioAtTick(this.tickLower),\n TickMath.getSqrtRatioAtTick(this.tickUpper),\n this.liquidity,\n false,\n ),\n );\n }\n }\n return this._token1Amount;\n }\n\n /**\n * Returns the lower and upper sqrt ratios if the price 'slips' up to slippage tolerance percentage\n * @param slippageTolerance The amount by which the price can 'slip' before the transaction will revert\n * @returns The sqrt ratios after slippage\n */\n private ratiosAfterSlippage(slippageTolerance: Percent): {\n sqrtRatioX96Lower: JSBI;\n sqrtRatioX96Upper: JSBI;\n } {\n const priceLower = this.pool.token0Price.asFraction.multiply(new Percent(1).subtract(slippageTolerance));\n const priceUpper = this.pool.token0Price.asFraction.multiply(slippageTolerance.add(1));\n let sqrtRatioX96Lower = encodeSqrtRatioX96(priceLower.numerator, priceLower.denominator);\n if (JSBI.lessThanOrEqual(sqrtRatioX96Lower, TickMath.MIN_SQRT_RATIO)) {\n sqrtRatioX96Lower = JSBI.add(TickMath.MIN_SQRT_RATIO, JSBI.BigInt(1));\n }\n let sqrtRatioX96Upper = encodeSqrtRatioX96(priceUpper.numerator, priceUpper.denominator);\n if (JSBI.greaterThanOrEqual(sqrtRatioX96Upper, TickMath.MAX_SQRT_RATIO)) {\n sqrtRatioX96Upper = JSBI.subtract(TickMath.MAX_SQRT_RATIO, JSBI.BigInt(1));\n }\n return {\n sqrtRatioX96Lower,\n sqrtRatioX96Upper,\n };\n }\n\n /**\n * Returns the minimum amounts that must be sent in order to safely mint the amount of liquidity held by the position\n * with the given slippage tolerance\n * @param slippageTolerance Tolerance of unfavorable slippage from the current price\n * @returns The amounts, with slippage\n */\n public mintAmountsWithSlippage(slippageTolerance: Percent): Readonly<{ amount0: JSBI; amount1: JSBI }> {\n // get lower/upper prices\n const { sqrtRatioX96Upper, sqrtRatioX96Lower } = this.ratiosAfterSlippage(slippageTolerance);\n\n // construct counterfactual pools\n const poolLower = new Pool(\n this.pool.id,\n this.pool.token0,\n this.pool.token1,\n this.pool.fee,\n sqrtRatioX96Lower,\n 0 /* liquidity doesn't matter */,\n TickMath.getTickAtSqrtRatio(sqrtRatioX96Lower),\n );\n const poolUpper = new Pool(\n this.pool.id,\n this.pool.token0,\n this.pool.token1,\n this.pool.fee,\n sqrtRatioX96Upper,\n 0 /* liquidity doesn't matter */,\n TickMath.getTickAtSqrtRatio(sqrtRatioX96Upper),\n );\n\n // because the router is imprecise, we need to calculate the position that will be created (assuming no slippage)\n const positionThatWillBeCreated = Position.fromAmounts({\n pool: this.pool,\n tickLower: this.tickLower,\n tickUpper: this.tickUpper,\n ...this.mintAmounts, // the mint amounts are what will be passed as calldata\n useFullPrecision: false,\n });\n\n // we want the smaller amounts...\n // ...which occurs at the upper price for amount0...\n const { amount0 } = new Position({\n pool: poolUpper,\n liquidity: positionThatWillBeCreated.liquidity,\n tickLower: this.tickLower,\n tickUpper: this.tickUpper,\n }).mintAmounts;\n // ...and the lower for amount1\n const { amount1 } = new Position({\n pool: poolLower,\n liquidity: positionThatWillBeCreated.liquidity,\n tickLower: this.tickLower,\n tickUpper: this.tickUpper,\n }).mintAmounts;\n\n return { amount0, amount1 };\n }\n\n /**\n * Returns the minimum amounts that should be requested in order to safely burn the amount of liquidity held by the\n * position with the given slippage tolerance\n * @param slippageTolerance tolerance of unfavorable slippage from the current price\n * @returns The amounts, with slippage\n */\n public burnAmountsWithSlippage(slippageTolerance: Percent): Readonly<{ amount0: JSBI; amount1: JSBI }> {\n // get lower/upper prices\n const { sqrtRatioX96Upper, sqrtRatioX96Lower } = this.ratiosAfterSlippage(slippageTolerance);\n\n // construct counterfactual pools\n const poolLower = new Pool(\n this.pool.id,\n this.pool.token0,\n this.pool.token1,\n this.pool.fee,\n sqrtRatioX96Lower,\n 0 /* liquidity doesn't matter */,\n TickMath.getTickAtSqrtRatio(sqrtRatioX96Lower),\n );\n const poolUpper = new Pool(\n this.pool.id,\n this.pool.token0,\n this.pool.token1,\n this.pool.fee,\n sqrtRatioX96Upper,\n 0 /* liquidity doesn't matter */,\n TickMath.getTickAtSqrtRatio(sqrtRatioX96Upper),\n );\n\n // we want the smaller amounts...\n // ...which occurs at the upper price for amount0...\n const amount0 = new Position({\n pool: poolUpper,\n liquidity: this.liquidity,\n tickLower: this.tickLower,\n tickUpper: this.tickUpper,\n }).amount0;\n // ...and the lower for amount1\n const amount1 = new Position({\n pool: poolLower,\n liquidity: this.liquidity,\n tickLower: this.tickLower,\n tickUpper: this.tickUpper,\n }).amount1;\n\n return { amount0: amount0.quotient, amount1: amount1.quotient };\n }\n\n /**\n * Returns the minimum amounts that must be sent in order to mint the amount of liquidity held by the position at\n * the current price for the pool\n */\n public get mintAmounts(): Readonly<{ amount0: JSBI; amount1: JSBI }> {\n if (this._mintAmounts === null) {\n if (this.pool.tickCurrent < this.tickLower) {\n return {\n amount0: SqrtPriceMath.getAmount0Delta(\n TickMath.getSqrtRatioAtTick(this.tickLower),\n TickMath.getSqrtRatioAtTick(this.tickUpper),\n this.liquidity,\n true,\n ),\n amount1: ZERO,\n };\n } if (this.pool.tickCurrent < this.tickUpper) {\n return {\n amount0: SqrtPriceMath.getAmount0Delta(\n this.pool.sqrtRatioX96,\n TickMath.getSqrtRatioAtTick(this.tickUpper),\n this.liquidity,\n true,\n ),\n amount1: SqrtPriceMath.getAmount1Delta(\n TickMath.getSqrtRatioAtTick(this.tickLower),\n this.pool.sqrtRatioX96,\n this.liquidity,\n true,\n ),\n };\n } \n return {\n amount0: ZERO,\n amount1: SqrtPriceMath.getAmount1Delta(\n TickMath.getSqrtRatioAtTick(this.tickLower),\n TickMath.getSqrtRatioAtTick(this.tickUpper),\n this.liquidity,\n true,\n ),\n };\n \n }\n return this._mintAmounts;\n }\n\n /**\n * Computes the maximum amount of liquidity received for a given amount of token0, token1,\n * and the prices at the tick boundaries.\n * @param pool The pool for which the position should be created\n * @param tickLower The lower tick of the position\n * @param tickUpper The upper tick of the position\n * @param amount0 token0 amount\n * @param amount1 token1 amount\n * @param useFullPrecision If false, liquidity will be maximized according to what the router can calculate,\n * not what core can theoretically support\n * @returns The amount of liquidity for the position\n */\n public static fromAmounts({\n pool,\n tickLower,\n tickUpper,\n amount0,\n amount1,\n useFullPrecision,\n }: {\n pool: Pool;\n tickLower: number;\n tickUpper: number;\n amount0: BigintIsh;\n amount1: BigintIsh;\n useFullPrecision: boolean;\n }) {\n const sqrtRatioAX96 = TickMath.getSqrtRatioAtTick(tickLower);\n const sqrtRatioBX96 = TickMath.getSqrtRatioAtTick(tickUpper);\n return new Position({\n pool,\n tickLower,\n tickUpper,\n liquidity: maxLiquidityForAmounts(\n pool.sqrtRatioX96,\n sqrtRatioAX96,\n sqrtRatioBX96,\n amount0,\n amount1,\n useFullPrecision,\n ),\n });\n }\n\n /**\n * Computes a position with the maximum amount of liquidity received for a given amount of token0, assuming an unlimited amount of token1\n * @param pool The pool for which the position is created\n * @param tickLower The lower tick\n * @param tickUpper The upper tick\n * @param amount0 The desired amount of token0\n * @param useFullPrecision If true, liquidity will be maximized according to what the router can calculate,\n * not what core can theoretically support\n * @returns The position\n */\n public static fromAmount0({\n pool,\n tickLower,\n tickUpper,\n amount0,\n useFullPrecision,\n }: {\n pool: Pool;\n tickLower: number;\n tickUpper: number;\n amount0: BigintIsh;\n useFullPrecision: boolean;\n }) {\n return Position.fromAmounts({\n pool,\n tickLower,\n tickUpper,\n amount0,\n amount1: MaxUint256,\n useFullPrecision,\n });\n }\n\n /**\n * Computes a position with the maximum amount of liquidity received for a given amount of token1, assuming an unlimited amount of token0\n * @param pool The pool for which the position is created\n * @param tickLower The lower tick\n * @param tickUpper The upper tick\n * @param amount1 The desired amount of token1\n * @returns The position\n */\n public static fromAmount1({\n pool,\n tickLower,\n tickUpper,\n amount1,\n }: {\n pool: Pool;\n tickLower: number;\n tickUpper: number;\n amount1: BigintIsh;\n }) {\n // this function always uses full precision,\n return Position.fromAmounts({\n pool,\n tickLower,\n tickUpper,\n amount0: MaxUint256,\n amount1,\n useFullPrecision: true,\n });\n }\n}\n","import JSBI from \"jsbi\";\n\n// constants used internally but not expected to be used externally\nexport const NEGATIVE_ONE = JSBI.BigInt(-1);\nexport const ZERO = JSBI.BigInt(0);\nexport const ONE = JSBI.BigInt(1);\n\n// used in liquidity amount math\nexport const Q96 = JSBI.exponentiate(JSBI.BigInt(2), JSBI.BigInt(96));\nexport const Q192 = JSBI.exponentiate(Q96, JSBI.BigInt(2));\n","import JSBI from \"jsbi\";\nimport invariant from \"tiny-invariant\";\n\nexport const MAX_SAFE_INTEGER = JSBI.BigInt(Number.MAX_SAFE_INTEGER);\n\nconst ZERO = JSBI.BigInt(0);\nconst ONE = JSBI.BigInt(1);\nconst TWO = JSBI.BigInt(2);\n\n/**\n * Computes floor(sqrt(value))\n * @param value the value for which to compute the square root, rounded down\n */\nexport function sqrt(value: JSBI): JSBI {\n invariant(JSBI.greaterThanOrEqual(value, ZERO), \"NEGATIVE\");\n\n // rely on built in sqrt if possible\n if (JSBI.lessThan(value, MAX_SAFE_INTEGER)) {\n return JSBI.BigInt(Math.floor(Math.sqrt(JSBI.toNumber(value))));\n }\n\n let z: JSBI;\n let x: JSBI;\n z = value;\n x = JSBI.add(JSBI.divide(value, TWO), ONE);\n while (JSBI.lessThan(x, z)) {\n z = x;\n x = JSBI.divide(JSBI.add(JSBI.divide(value, x), x), TWO);\n }\n return z;\n}\n","import JSBI from \"jsbi\";\nimport { BigintIsh, sqrt } from \"../core\";\n\n/**\n * Returns the sqrt ratio as a Q64.96 corresponding to a given ratio of amount1 and amount0\n * @param amount1 The numerator amount i.e., the amount of token1\n * @param amount0 The denominator amount i.e., the amount of token0\n * @returns The sqrt ratio\n */\n\nexport function encodeSqrtRatioX96(\n amount1: BigintIsh,\n amount0: BigintIsh\n): JSBI {\n const numerator = JSBI.leftShift(JSBI.BigInt(amount1), JSBI.BigInt(192));\n const denominator = JSBI.BigInt(amount0);\n const ratioX192 = JSBI.divide(numerator, denominator);\n return sqrt(ratioX192);\n}\n","import JSBI from \"jsbi\";\nimport { ONE, ZERO } from \"../internalConstants\";\n\nexport abstract class FullMath {\n /**\n * Cannot be constructed.\n */\n private constructor() {}\n\n public static mulDivRoundingUp(a: JSBI, b: JSBI, denominator: JSBI): JSBI {\n const product = JSBI.multiply(a, b);\n let result = JSBI.divide(product, denominator);\n if (JSBI.notEqual(JSBI.remainder(product, denominator), ZERO)) result = JSBI.add(result, ONE);\n return result;\n }\n}\n","import invariant from \"tiny-invariant\";\nimport { TickMath } from \"./tickMath\";\n\n/**\n * Returns the closest tick that is nearest a given tick and usable for the given tick spacing\n * @param tick the target tick\n * @param tickSpacing the spacing of the pool\n */\nexport function nearestUsableTick(tick: number, tickSpacing: number) {\n invariant(Number.isInteger(tick) && Number.isInteger(tickSpacing), \"INTEGERS\");\n invariant(tickSpacing > 0, \"TICK_SPACING\");\n invariant(tick >= TickMath.MIN_TICK && tick <= TickMath.MAX_TICK, \"TICK_BOUND\");\n const rounded = Math.round(tick / tickSpacing) * tickSpacing;\n if (rounded < TickMath.MIN_TICK) return rounded + tickSpacing;\n else if (rounded > TickMath.MAX_TICK) return rounded - tickSpacing;\n else return rounded;\n}\n","import { Price, Token } from \"../core\";\nimport JSBI from \"jsbi\";\nimport { Q192 } from \"../internalConstants\";\nimport { encodeSqrtRatioX96 } from \"./encodeSqrtRatioX96\";\nimport { TickMath } from \"./tickMath\";\n\n/**\n * Returns a price object corresponding to the input tick and the base/quote token\n * Inputs must be tokens because the address order is used to interpret the price represented by the tick\n * @param baseToken the base token of the price\n * @param quoteToken the quote token of the price\n * @param tick the tick for which to return the price\n */\nexport function tickToPrice(\n baseToken: Token,\n quoteToken: Token,\n tick: number\n): Price {\n const sqrtRatioX96 = TickMath.getSqrtRatioAtTick(tick);\n\n const ratioX192 = JSBI.multiply(sqrtRatioX96, sqrtRatioX96);\n\n return baseToken.sortsBefore(quoteToken)\n ? new Price(baseToken, quoteToken, Q192, ratioX192)\n : new Price(baseToken, quoteToken, ratioX192, Q192);\n}\n\n/**\n * Returns the first tick for which the given price is greater than or equal to the tick price\n * @param price for which to return the closest tick that represents a price less than or equal to the input price,\n * i.e. the price of the returned tick is less than or equal to the input price\n */\nexport function priceToClosestTick(price: Price): number {\n const sorted = price.baseCurrency.sortsBefore(price.quoteCurrency);\n\n const sqrtRatioX96 = sorted\n ? encodeSqrtRatioX96(price.numerator, price.denominator)\n : encodeSqrtRatioX96(price.denominator, price.numerator);\n\n let tick = TickMath.getTickAtSqrtRatio(sqrtRatioX96);\n const nextTickPrice = tickToPrice(\n price.baseCurrency,\n price.quoteCurrency,\n tick + 1\n );\n if (sorted) {\n if (!price.lessThan(nextTickPrice)) {\n tick++;\n }\n } else {\n if (!price.greaterThan(nextTickPrice)) {\n tick++;\n }\n }\n return tick;\n}\n","import { MaxUint256 } from \"../core/constants\";\nimport JSBI from \"jsbi\";\nimport invariant from \"tiny-invariant\";\nimport { ONE, ZERO, Q96 } from \"../internalConstants\";\nimport { FullMath } from \"./fullMath\";\n\nconst MaxUint160 = JSBI.subtract(\n JSBI.exponentiate(JSBI.BigInt(2), JSBI.BigInt(160)),\n ONE\n);\n\nfunction multiplyIn256(x: JSBI, y: JSBI): JSBI {\n const product = JSBI.multiply(x, y);\n return JSBI.bitwiseAnd(product, MaxUint256);\n}\n\nfunction addIn256(x: JSBI, y: JSBI): JSBI {\n const sum = JSBI.add(x, y);\n return JSBI.bitwiseAnd(sum, MaxUint256);\n}\n\nexport abstract class SqrtPriceMath {\n /**\n * Cannot be constructed.\n */\n private constructor() {}\n\n public static getAmount0Delta(\n sqrtRatioAX96: JSBI,\n sqrtRatioBX96: JSBI,\n liquidity: JSBI,\n roundUp: boolean\n ): JSBI {\n if (JSBI.greaterThan(sqrtRatioAX96, sqrtRatioBX96)) {\n [sqrtRatioAX96, sqrtRatioBX96] = [sqrtRatioBX96, sqrtRatioAX96];\n }\n\n const numerator1 = JSBI.leftShift(liquidity, JSBI.BigInt(96));\n const numerator2 = JSBI.subtract(sqrtRatioBX96, sqrtRatioAX96);\n\n return roundUp\n ? FullMath.mulDivRoundingUp(\n FullMath.mulDivRoundingUp(numerator1, numerator2, sqrtRatioBX96),\n ONE,\n sqrtRatioAX96\n )\n : JSBI.divide(\n JSBI.divide(JSBI.multiply(numerator1, numerator2), sqrtRatioBX96),\n sqrtRatioAX96\n );\n }\n\n public static getAmount1Delta(\n sqrtRatioAX96: JSBI,\n sqrtRatioBX96: JSBI,\n liquidity: JSBI,\n roundUp: boolean\n ): JSBI {\n if (JSBI.greaterThan(sqrtRatioAX96, sqrtRatioBX96)) {\n [sqrtRatioAX96, sqrtRatioBX96] = [sqrtRatioBX96, sqrtRatioAX96];\n }\n\n return roundUp\n ? FullMath.mulDivRoundingUp(\n liquidity,\n JSBI.subtract(sqrtRatioBX96, sqrtRatioAX96),\n Q96\n )\n : JSBI.divide(\n JSBI.multiply(liquidity, JSBI.subtract(sqrtRatioBX96, sqrtRatioAX96)),\n Q96\n );\n }\n\n public static getNextSqrtPriceFromInput(\n sqrtPX96: JSBI,\n liquidity: JSBI,\n amountIn: JSBI,\n zeroForOne: boolean\n ): JSBI {\n invariant(\n JSBI.greaterThan(sqrtPX96, ZERO),\n \"Get Next Sqrt Price From Input\"\n );\n invariant(\n JSBI.greaterThan(liquidity, ZERO),\n \"Get Next Sqrt Price From Input\"\n );\n\n return zeroForOne\n ? this.getNextSqrtPriceFromAmount0RoundingUp(\n sqrtPX96,\n liquidity,\n amountIn,\n true\n )\n : this.getNextSqrtPriceFromAmount1RoundingDown(\n sqrtPX96,\n liquidity,\n amountIn,\n true\n );\n }\n\n public static getNextSqrtPriceFromOutput(\n sqrtPX96: JSBI,\n liquidity: JSBI,\n amountOut: JSBI,\n zeroForOne: boolean\n ): JSBI {\n invariant(JSBI.greaterThan(sqrtPX96, ZERO), \"getNextSqrtPriceFromOutput\");\n invariant(JSBI.greaterThan(liquidity, ZERO), \"getNextSqrtPriceFromOutput\");\n\n return zeroForOne\n ? this.getNextSqrtPriceFromAmount1RoundingDown(\n sqrtPX96,\n liquidity,\n amountOut,\n false\n )\n : this.getNextSqrtPriceFromAmount0RoundingUp(\n sqrtPX96,\n liquidity,\n amountOut,\n false\n );\n }\n\n private static getNextSqrtPriceFromAmount0RoundingUp(\n sqrtPX96: JSBI,\n liquidity: JSBI,\n amount: JSBI,\n add: boolean\n ): JSBI {\n if (JSBI.equal(amount, ZERO)) return sqrtPX96;\n const numerator1 = JSBI.leftShift(liquidity, JSBI.BigInt(96));\n\n if (add) {\n let product = multiplyIn256(amount, sqrtPX96);\n if (JSBI.equal(JSBI.divide(product, amount), sqrtPX96)) {\n const denominator = addIn256(numerator1, product);\n if (JSBI.greaterThanOrEqual(denominator, numerator1)) {\n return FullMath.mulDivRoundingUp(numerator1, sqrtPX96, denominator);\n }\n }\n\n return FullMath.mulDivRoundingUp(\n numerator1,\n ONE,\n JSBI.add(JSBI.divide(numerator1, sqrtPX96), amount)\n );\n } else {\n let product = multiplyIn256(amount, sqrtPX96);\n\n invariant(\n JSBI.equal(JSBI.divide(product, amount), sqrtPX96),\n \"getNextSqrtPriceFromAmount0RoundingUp\"\n );\n invariant(\n JSBI.greaterThan(numerator1, product),\n \"getNextSqrtPriceFromAmount0RoundingUp\"\n );\n const denominator = JSBI.subtract(numerator1, product);\n return FullMath.mulDivRoundingUp(numerator1, sqrtPX96, denominator);\n }\n }\n\n private static getNextSqrtPriceFromAmount1RoundingDown(\n sqrtPX96: JSBI,\n liquidity: JSBI,\n amount: JSBI,\n add: boolean\n ): JSBI {\n if (add) {\n const quotient = JSBI.lessThanOrEqual(amount, MaxUint160)\n ? JSBI.divide(JSBI.leftShift(amount, JSBI.BigInt(96)), liquidity)\n : JSBI.divide(JSBI.multiply(amount, Q96), liquidity);\n\n return JSBI.add(sqrtPX96, quotient);\n } else {\n const quotient = FullMath.mulDivRoundingUp(amount, Q96, liquidity);\n\n invariant(\n JSBI.greaterThan(sqrtPX96, quotient),\n \"getNextSqrtPriceFromAmount1RoundingDown\"\n );\n return JSBI.subtract(sqrtPX96, quotient);\n }\n }\n}\n","import { MaxUint256 } from \"../core/constants\";\nimport JSBI from \"jsbi\";\nimport invariant from \"tiny-invariant\";\nimport { ZERO } from \"../internalConstants\";\n\nconst TWO = JSBI.BigInt(2);\nconst POWERS_OF_2 = [128, 64, 32, 16, 8, 4, 2, 1].map(\n (pow: number): [number, JSBI] => [\n pow,\n JSBI.exponentiate(TWO, JSBI.BigInt(pow)),\n ]\n);\n\nexport function mostSignificantBit(x: JSBI): number {\n invariant(JSBI.greaterThan(x, ZERO), \"ZERO\");\n invariant(JSBI.lessThanOrEqual(x, MaxUint256), \"MAX\");\n\n let msb: number = 0;\n for (const [power, min] of POWERS_OF_2) {\n if (JSBI.greaterThanOrEqual(x, min)) {\n x = JSBI.signedRightShift(x, JSBI.BigInt(power));\n msb += power;\n }\n }\n return msb;\n}\n","import { MaxUint256 } from \"../core/constants\";\nimport JSBI from \"jsbi\";\nimport invariant from \"tiny-invariant\";\nimport { ONE, ZERO } from \"../internalConstants\";\nimport { mostSignificantBit } from \"./mostSignificantBit\";\n\nfunction mulShift(val: JSBI, mulBy: string): JSBI {\n return JSBI.signedRightShift(\n JSBI.multiply(val, JSBI.BigInt(mulBy)),\n JSBI.BigInt(128)\n );\n}\n\nconst Q32 = JSBI.exponentiate(JSBI.BigInt(2), JSBI.BigInt(32));\n\nexport abstract class TickMath {\n /**\n * Cannot be constructed.\n */\n private constructor() {}\n\n /**\n * The minimum tick that can be used on any pool.\n */\n public static MIN_TICK: number = -887272;\n /**\n * The maximum tick that can be used on any pool.\n */\n public static MAX_TICK: number = -TickMath.MIN_TICK;\n\n /**\n * The sqrt ratio corresponding to the minimum tick that could be used on any pool.\n */\n public static MIN_SQRT_RATIO: JSBI = JSBI.BigInt(\"4295128739\");\n /**\n * The sqrt ratio corresponding to the maximum tick that could be used on any pool.\n */\n public static MAX_SQRT_RATIO: JSBI = JSBI.BigInt(\n \"1461446703485210103287273052203988822378723970342\"\n );\n\n /**\n * Returns the sqrt ratio as a Q64.96 for the given tick. The sqrt ratio is computed as sqrt(1.0001)^tick\n * @param tick the tick for which to compute the sqrt ratio\n */\n public static getSqrtRatioAtTick(tick: number): JSBI {\n invariant(\n tick >= TickMath.MIN_TICK &&\n tick <= TickMath.MAX_TICK &&\n Number.isInteger(tick),\n \"TICK\"\n );\n const absTick: number = tick < 0 ? tick * -1 : tick;\n\n let ratio: JSBI =\n (absTick & 0x1) != 0\n ? JSBI.BigInt(\"0xfffcb933bd6fad37aa2d162d1a594001\")\n : JSBI.BigInt(\"0x100000000000000000000000000000000\");\n if ((absTick & 0x2) != 0)\n ratio = mulShift(ratio, \"0xfff97272373d413259a46990580e213a\");\n if ((absTick & 0x4) != 0)\n ratio = mulShift(ratio, \"0xfff2e50f5f656932ef12357cf3c7fdcc\");\n if ((absTick & 0x8) != 0)\n ratio = mulShift(ratio, \"0xffe5caca7e10e4e61c3624eaa0941cd0\");\n if ((absTick & 0x10) != 0)\n ratio = mulShift(ratio, \"0xffcb9843d60f6159c9db58835c926644\");\n if ((absTick & 0x20) != 0)\n ratio = mulShift(ratio, \"0xff973b41fa98c081472e6896dfb254c0\");\n if ((absTick & 0x40) != 0)\n ratio = mulShift(ratio, \"0xff2ea16466c96a3843ec78b326b52861\");\n if ((absTick & 0x80) != 0)\n ratio = mulShift(ratio, \"0xfe5dee046a99a2a811c461f1969c3053\");\n if ((absTick & 0x100) != 0)\n ratio = mulShift(ratio, \"0xfcbe86c7900a88aedcffc83b479aa3a4\");\n if ((absTick & 0x200) != 0)\n ratio = mulShift(ratio, \"0xf987a7253ac413176f2b074cf7815e54\");\n if ((absTick & 0x400) != 0)\n ratio = mulShift(ratio, \"0xf3392b0822b70005940c7a398e4b70f3\");\n if ((absTick & 0x800) != 0)\n ratio = mulShift(ratio, \"0xe7159475a2c29b7443b29c7fa6e889d9\");\n if ((absTick & 0x1000) != 0)\n ratio = mulShift(ratio, \"0xd097f3bdfd2022b8845ad8f792aa5825\");\n if ((absTick & 0x2000) != 0)\n ratio = mulShift(ratio, \"0xa9f746462d870fdf8a65dc1f90e061e5\");\n if ((absTick & 0x4000) != 0)\n ratio = mulShift(ratio, \"0x70d869a156d2a1b890bb3df62baf32f7\");\n if ((absTick & 0x8000) != 0)\n ratio = mulShift(ratio, \"0x31be135f97d08fd981231505542fcfa6\");\n if ((absTick & 0x10000) != 0)\n ratio = mulShift(ratio, \"0x9aa508b5b7a84e1c677de54f3e99bc9\");\n if ((absTick & 0x20000) != 0)\n ratio = mulShift(ratio, \"0x5d6af8dedb81196699c329225ee604\");\n if ((absTick & 0x40000) != 0)\n ratio = mulShift(ratio, \"0x2216e584f5fa1ea926041bedfe98\");\n if ((absTick & 0x80000) != 0)\n ratio = mulShift(ratio, \"0x48a170391f7dc42444e8fa2\");\n\n if (tick > 0) ratio = JSBI.divide(MaxUint256, ratio);\n\n // back to Q96\n return JSBI.greaterThan(JSBI.remainder(ratio, Q32), ZERO)\n ? JSBI.add(JSBI.divide(ratio, Q32), ONE)\n : JSBI.divide(ratio, Q32);\n }\n\n /**\n * Returns the tick corresponding to a given sqrt ratio, s.t. #getSqrtRatioAtTick(tick) <= sqrtRatioX96\n * and #getSqrtRatioAtTick(tick + 1) > sqrtRatioX96\n * @param sqrtRatioX96 the sqrt ratio as a Q64.96 for which to compute the tick\n */\n public static getTickAtSqrtRatio(sqrtRatioX96: JSBI): number {\n invariant(\n JSBI.greaterThanOrEqual(sqrtRatioX96, TickMath.MIN_SQRT_RATIO) &&\n JSBI.lessThan(sqrtRatioX96, TickMath.MAX_SQRT_RATIO),\n \"SQRT_RATIO\"\n );\n\n const sqrtRatioX128 = JSBI.leftShift(sqrtRatioX96, JSBI.BigInt(32));\n\n const msb = mostSignificantBit(sqrtRatioX128);\n\n let r: JSBI;\n if (JSBI.greaterThanOrEqual(JSBI.BigInt(msb), JSBI.BigInt(128))) {\n r = JSBI.signedRightShift(sqrtRatioX128, JSBI.BigInt(msb - 127));\n } else {\n r = JSBI.leftShift(sqrtRatioX128, JSBI.BigInt(127 - msb));\n }\n\n let log_2: JSBI = JSBI.leftShift(\n JSBI.subtract(JSBI.BigInt(msb), JSBI.BigInt(128)),\n JSBI.BigInt(64)\n );\n\n for (let i = 0; i < 14; i++) {\n r = JSBI.signedRightShift(JSBI.multiply(r, r), JSBI.BigInt(127));\n const f = JSBI.signedRightShift(r, JSBI.BigInt(128));\n log_2 = JSBI.bitwiseOr(log_2, JSBI.leftShift(f, JSBI.BigInt(63 - i)));\n r = JSBI.signedRightShift(r, f);\n }\n\n const log_sqrt10001 = JSBI.multiply(\n log_2,\n JSBI.BigInt(\"255738958999603826347141\")\n );\n\n const tickLow = JSBI.toNumber(\n JSBI.signedRightShift(\n JSBI.subtract(\n log_sqrt10001,\n JSBI.BigInt(\"3402992956809132418596140100660247210\")\n ),\n JSBI.BigInt(128)\n )\n );\n const tickHigh = JSBI.toNumber(\n JSBI.signedRightShift(\n JSBI.add(\n log_sqrt10001,\n JSBI.BigInt(\"291339464771989622907027621153398088495\")\n ),\n JSBI.BigInt(128)\n )\n );\n\n return tickLow === tickHigh\n ? tickLow\n : JSBI.lessThanOrEqual(\n TickMath.getSqrtRatioAtTick(tickHigh),\n sqrtRatioX96\n )\n ? tickHigh\n : tickLow;\n }\n}\n","import { BigNumber } from \"bignumber.js\";\nimport { Override, ActorIdentity, StatusResult, PaginationResult } from \"@icpswap/types\";\nimport { ActorSubclass } from \"@dfinity/agent\";\nimport { Principal } from \"@dfinity/principal\";\nimport type { TokenTransaction } from \"@icpswap/types\";\nimport {\n TokenHolder,\n BalanceRequest as _BalanceRequest,\n TokenTransferRequest as _TransferRequest,\n SetFeeToRequest as _SetFeeToRequest,\n TransactionRequest as _TransactionRequest,\n Transaction,\n TokenAllowanceRequest,\n TokenApproveRequest,\n Metadata,\n} from \"./types\";\n\nexport type BaseTokenRequestNoParams = {\n canisterId: string;\n};\n\nexport type BaseTokenRequest = {\n canisterId: string;\n params: T;\n};\n\nexport type BaseTokenIdentityRequest = {\n canisterId: string;\n params: T;\n identity: ActorIdentity;\n};\n\nexport type BaseTokenResult = Promise>;\n\nexport interface TotalHoldersRequest {\n canisterId: string;\n}\n\nexport type TotalHoldersResult = BaseTokenResult;\n\nexport type HoldersRequest = BaseTokenRequest<{\n offset: bigint;\n limit: bigint;\n}>;\nexport type HoldersResult = BaseTokenResult>;\n\nexport type SupplyRequest = { canisterId: string };\nexport type SupplyResult = Promise>;\n\nexport type BalanceRequest = BaseTokenRequest<_BalanceRequest>;\nexport type BalanceResult = Promise>;\n\nexport type TransferRequest = BaseTokenIdentityRequest<_TransferRequest>;\nexport type TransferResult = BaseTokenResult;\n\nexport type GetFeeRequest = BaseTokenRequestNoParams;\nexport type GetFeeResult = BaseTokenResult;\nexport type SetFeeRequest = BaseTokenIdentityRequest;\nexport type SetFeeResult = BaseTokenResult;\nexport type SetFeeToRequest = BaseTokenIdentityRequest<_SetFeeToRequest>;\nexport type SetFeeToResult = BaseTokenResult;\n\nexport type TransactionRequest = BaseTokenRequest<\n Override<\n _TransactionRequest,\n {\n capId?: string;\n getCapRootId?: (canisterId: string) => Promise;\n getCapUserTransactions?: (\n canisterId: string,\n principal: Principal,\n witness: boolean,\n offset: number,\n ) => Promise<{\n totalElements: number;\n offset: number;\n limit: number;\n content: TokenTransaction[];\n }>;\n getCapTransactions?: (\n canisterId: string,\n witness: boolean,\n offset: number,\n ) => Promise<{\n totalElements: number;\n offset: number;\n limit: number;\n content: TokenTransaction[];\n }>;\n witness?: boolean;\n }\n >\n>;\nexport type TransactionResult = BaseTokenResult>;\n\nexport type ApproveRequest = BaseTokenIdentityRequest;\nexport type ApproveResult = BaseTokenResult;\nexport type AllowanceRequest = BaseTokenRequest;\nexport type AllowanceResult = BaseTokenResult;\n\nexport type MetadataRequest = BaseTokenRequestNoParams;\nexport type MetadataResult = BaseTokenResult;\n\nexport type SetLogoRequest = BaseTokenIdentityRequest;\nexport type SetLogoResult = BaseTokenResult;\nexport type LogoRequest = BaseTokenRequestNoParams;\nexport type LogoResult = BaseTokenResult;\n\nexport type ActualReceivedByTransferRequest = {\n amount: BigNumber;\n fee: BigNumber;\n canisterId: string;\n};\nexport type ActualReceivedByTransferResult = BigNumber;\n\nexport abstract class BaseTokenAdapter {\n public readonly actor: (canister?: string, identity?: ActorIdentity) => Promise>;\n\n constructor({ actor }: { actor: (canister?: string, identity?: ActorIdentity) => Promise> }) {\n this.actor = actor;\n }\n\n public abstract totalHolders({ canisterId }: TotalHoldersRequest): TotalHoldersResult;\n\n public abstract holders({ canisterId, params }: HoldersRequest): HoldersResult;\n\n public abstract supply({ canisterId }: SupplyRequest): SupplyResult;\n\n public abstract balance({ canisterId, params }: BalanceRequest): BalanceResult;\n\n public abstract transfer(request: TransferRequest): TransferResult;\n\n public abstract setFee(request: SetFeeRequest): SetFeeResult;\n\n public abstract setFeeTo(request: SetFeeToRequest): SetFeeToResult;\n\n public abstract transactions(request: TransactionRequest): TransactionResult;\n\n public abstract approve(request: ApproveRequest): ApproveResult;\n\n public abstract allowance(request: AllowanceRequest): AllowanceResult;\n\n public abstract metadata(request: MetadataRequest): MetadataResult;\n\n public abstract setLogo(request: SetLogoRequest): SetLogoResult;\n\n public abstract actualReceivedByTransfer(request: ActualReceivedByTransferRequest): ActualReceivedByTransferResult;\n\n public abstract getMintingAccount({\n canisterId,\n }: {\n canisterId: string;\n }): BaseTokenResult<{ owner: string; sub: number[] | undefined }>;\n}\n","import { resultFormat } from \"@icpswap/utils\";\nimport { PaginationResult, ResultStatus } from \"@icpswap/types\";\nimport { dip20, dip20BalanceActor, dip20SupplyActor } from \"@icpswap/actor\";\nimport { Principal } from \"@dfinity/principal\";\nimport { DIP20, type DIP20TokenInfo } from \"@icpswap/candid\";\nimport { TokenHolder, Transaction, DIP20Metadata, Metadata } from \"./types\";\nimport {\n BaseTokenAdapter,\n HoldersRequest,\n TotalHoldersRequest,\n SupplyRequest,\n BalanceRequest,\n TransferRequest,\n SetFeeRequest,\n SetFeeToRequest,\n GetFeeRequest,\n TransactionRequest,\n ApproveRequest,\n AllowanceRequest,\n MetadataRequest,\n SetLogoRequest,\n ActualReceivedByTransferRequest,\n BaseTokenResult,\n} from \"./BaseTokenAdapter\";\n\nexport class DIP20TokenAdapter extends BaseTokenAdapter {\n public async holders({ canisterId, params }: HoldersRequest) {\n const totalHolder = (await this.totalHolders({ canisterId })).data;\n\n if (totalHolder) {\n const _holders = (await (await this.actor(canisterId)).getHolders(params.offset, params.limit)) as Array<\n [Principal, bigint]\n >;\n\n const holders = _holders.map((holder) => {\n return {\n balance: holder[1],\n account: holder[0].toString(),\n };\n }) as TokenHolder[];\n\n return {\n status: ResultStatus.OK,\n message: \"\",\n data: {\n content: holders,\n totalElements: Number(totalHolder),\n limit: Number(params.limit),\n offset: Number(params.offset),\n } as PaginationResult,\n };\n }\n\n return {\n status: ResultStatus.OK,\n data: {\n content: [] as TokenHolder[],\n totalElements: 0,\n limit: 10,\n offset: 0,\n } as PaginationResult,\n message: \"\",\n };\n }\n\n public async totalHolders({ canisterId }: TotalHoldersRequest) {\n let tokenInfo: null | DIP20TokenInfo = null;\n\n try {\n tokenInfo = (await (await this.actor(canisterId)).getTokenInfo()) as DIP20TokenInfo;\n return resultFormat(tokenInfo.holderNumber);\n } catch (error) {\n console.error(error);\n }\n\n return resultFormat(undefined);\n }\n\n public async supply({ canisterId }: SupplyRequest) {\n try {\n return resultFormat(await (await this.actor(canisterId)).totalSupply());\n } catch (error) {\n console.error(error);\n return resultFormat(await (await dip20SupplyActor(canisterId)).totalSupply());\n }\n }\n\n public async balance({ canisterId, params }: BalanceRequest) {\n if (params.user.principal) {\n // DIP20 not support subaccount balance\n if (params.subaccount) {\n return resultFormat(BigInt(0));\n }\n\n let balance = BigInt(0);\n\n try {\n balance = (await (await this.actor(canisterId)).balanceOf(params.user.principal)) as bigint;\n } catch (error) {\n console.error(error);\n balance = (await (await dip20BalanceActor(canisterId)).balanceOf(params.user.principal)) as bigint;\n }\n\n return resultFormat(balance);\n }\n\n return resultFormat(BigInt(0));\n }\n\n public async transfer({ canisterId, identity, params }: TransferRequest) {\n if (!params.to.principal) throw Error(\"no user principal\");\n\n const result = await (await this.actor(canisterId, identity)).transfer(params.to.principal, params.amount);\n return resultFormat(result);\n }\n\n public async getFee({ canisterId }: GetFeeRequest) {\n const metadata = await (await this.actor(canisterId)).getMetadata();\n return resultFormat(metadata.fee);\n }\n\n public async setFee({ canisterId, identity, params }: SetFeeRequest) {\n return resultFormat(await (await this.actor(canisterId, identity)).setFee(params));\n }\n\n public async setFeeTo({ canisterId, identity, params }: SetFeeToRequest) {\n if (!params.principal) throw Error(\"no principal\");\n return resultFormat(await (await this.actor(canisterId, identity)).setFeeTo(params.principal));\n }\n\n public async transactions({ canisterId, params }: TransactionRequest) {\n return resultFormat>({\n Ok: {\n content: [],\n totalElements: BigInt(0),\n offset: BigInt(0),\n limit: BigInt(10),\n },\n });\n }\n\n public async approve({ canisterId, params, identity }: ApproveRequest) {\n // 10 times approve amount to fix dip20 insufficient allowance amount\n // TODO: A better way to fix it\n return resultFormat(\n await (await this.actor(canisterId, identity)).approve(params.spender, params.allowance * BigInt(10)),\n );\n }\n\n public async allowance({ canisterId, params }: AllowanceRequest) {\n if (!params.owner.principal) {\n throw Error(\"no principal\");\n }\n\n return resultFormat(await (await this.actor(canisterId)).allowance(params.owner.principal, params.spender));\n }\n\n public async metadata({ canisterId }: MetadataRequest) {\n const metadata = (await (await this.actor(canisterId)).getMetadata()) as DIP20Metadata;\n\n return {\n status: ResultStatus.OK,\n data: {\n decimals: metadata.decimals,\n metadata: [],\n name: metadata.name,\n symbol: metadata.symbol,\n logo: metadata.logo,\n fee: metadata.fee,\n } as Metadata,\n message: \"\",\n };\n }\n\n public async setLogo({ canisterId, params, identity }: SetLogoRequest) {\n return resultFormat(await (await this.actor(canisterId, identity)).setLogo(params));\n }\n\n public actualReceivedByTransfer({ amount }: ActualReceivedByTransferRequest) {\n return amount;\n }\n\n public async getMintingAccount({\n canisterId,\n }: {\n canisterId: string;\n }): BaseTokenResult<{ owner: string; sub: number[] | undefined }> {\n return {\n status: ResultStatus.OK,\n data: undefined,\n message: \"\",\n };\n }\n}\n\nexport const DIP20Adapter = new DIP20TokenAdapter({\n actor: dip20,\n});\n","import { dip20 } from \"@icpswap/actor\";\nimport { DIP20TokenAdapter } from \"./DIP20Adapter\";\n\nexport class DIP20WICPTokenAdapter extends DIP20TokenAdapter {}\n\nexport const DIP20WICPAdapter = new DIP20WICPTokenAdapter({\n actor: dip20,\n});\n","import { dip20 } from \"@icpswap/actor\";\nimport { DIP20TokenAdapter } from \"./DIP20Adapter\";\n\nexport class DIP20XTCTokenAdapter extends DIP20TokenAdapter {}\n\nexport const DIP20XTCAdapter = new DIP20XTCTokenAdapter({\n actor: dip20,\n});\n","import { resultFormat, availableArgsNull, principalToAccount, isOkSubAccount, isBigIntMemo } from \"@icpswap/utils\";\nimport { SubAccount } from \"@dfinity/ledger-icp\";\nimport { PaginationResult, ResultStatus } from \"@icpswap/types\";\nimport { ext } from \"@icpswap/actor\";\nimport { EXTToken, TokenUser } from \"@icpswap/candid\";\nimport { TokenHolder, Transaction, Metadata } from \"./types\";\nimport {\n BaseTokenAdapter,\n HoldersRequest,\n TotalHoldersRequest,\n SupplyRequest,\n BalanceRequest,\n TransferRequest,\n SetFeeRequest,\n SetFeeToRequest,\n TransactionRequest,\n ApproveRequest,\n AllowanceRequest,\n MetadataRequest,\n SetLogoRequest,\n ActualReceivedByTransferRequest,\n BaseTokenResult,\n} from \"./BaseTokenAdapter\";\n\nexport class EXTTokenAdapter extends BaseTokenAdapter {\n public async holders({ canisterId, params }: HoldersRequest) {\n return resultFormat>(\n await (\n await this.actor(canisterId)\n ).holders({\n offset: [params.offset],\n limit: [params.limit],\n }),\n );\n }\n\n public async totalHolders({ canisterId }: TotalHoldersRequest) {\n return resultFormat(await (await this.actor(canisterId)).totalHolders());\n }\n\n public async supply({ canisterId }: SupplyRequest) {\n return resultFormat(await (await this.actor(canisterId)).supply());\n }\n\n public async balance({ canisterId, params }: BalanceRequest) {\n if (!params.user.address && !params.user.principal) throw Error(\"no user address or principal\");\n\n let address = \"\";\n\n if (params.user.principal) {\n const sub = params.subaccount ? SubAccount.fromBytes(Uint8Array.from(params.subaccount)) : undefined;\n address = principalToAccount(params.user.principal.toString(), isOkSubAccount(sub) ? sub : undefined);\n } else if (params.user.address) {\n address = params.user.address;\n }\n\n return resultFormat(\n await (\n await this.actor(canisterId)\n ).balance({\n token: params.token,\n user: { address },\n }),\n );\n }\n\n public async transfer({ canisterId, identity, params }: TransferRequest) {\n if (!params.to.address && !params.to.principal) throw Error(\"No to address or principal\");\n if (!params.from.address && !params.from.principal) throw Error(\"No from address or principal\");\n if (isBigIntMemo(params.memo)) throw Error(\"Can't support bigint (memo)\");\n\n const subaccount = params.subaccount ? SubAccount.fromBytes(Uint8Array.from(params.subaccount)) : undefined;\n\n return resultFormat(\n await (\n await this.actor(canisterId, identity)\n ).transfer({\n token: params.token ?? \"\",\n to: params.to.principal\n ? params.subaccount\n ? {\n address: principalToAccount(\n params.to.principal.toString(),\n isOkSubAccount(subaccount) ? subaccount : undefined,\n ),\n }\n : { address: principalToAccount(params.to.principal.toString()) }\n : { address: params.to.address as string },\n from: params.from.principal\n ? { address: principalToAccount(params.from.principal.toString()) }\n : { address: params.from.address as string },\n memo: params.memo ? params.memo : [],\n subaccount: availableArgsNull(undefined),\n nonce: availableArgsNull(params.nonce),\n amount: params.amount,\n notify: params.notify ?? true,\n }),\n );\n }\n\n public async setFee({ canisterId, identity, params }: SetFeeRequest) {\n return resultFormat(await (await this.actor(canisterId, identity)).setFee(params));\n }\n\n public async setFeeTo({ canisterId, identity, params }: SetFeeToRequest) {\n if (!params.address) throw Error(\"no user address\");\n\n return resultFormat(await (await this.actor(canisterId, identity)).setFeeTo({ address: params.address }));\n }\n\n public async transactions({ canisterId, params }: TransactionRequest) {\n let cap_id = params.capId;\n\n if (!cap_id) {\n const extensions = await this.extensions({ canisterId });\n\n if (extensions.includes(\"@ext/cap\")) {\n cap_id = (await params.getCapRootId(canisterId))?.toString();\n }\n }\n\n if (cap_id) {\n if (!params.offset && params.offset !== 0) throw Error(\"no cap offset\");\n\n if (params.user?.principal) {\n return resultFormat>(\n await params.getCapUserTransactions(cap_id, params.user?.principal, params.witness ?? false, params.offset),\n );\n }\n\n return resultFormat>(\n await params.getCapTransactions(cap_id, params.witness ?? false, params.offset),\n );\n }\n\n return resultFormat>(\n await (\n await this.actor(canisterId)\n ).transactions({\n hash: availableArgsNull(params.hash),\n user: availableArgsNull(params.user?.address ? { address: params.user.address } : undefined),\n offset: availableArgsNull(params.offset ? BigInt(params.offset) : null),\n limit: availableArgsNull(params.limit ? BigInt(params.limit) : null),\n index: availableArgsNull(params.index ? BigInt(params.index) : null),\n }),\n );\n }\n\n public async approve({ canisterId, params, identity }: ApproveRequest) {\n return resultFormat(\n await (\n await this.actor(canisterId, identity)\n ).approve({\n subaccount: params.subaccount ? [Array.from(params.subaccount)] : [],\n spender: params.spender,\n allowance: BigInt(Number.MAX_VALUE),\n }),\n );\n }\n\n public async allowance({ canisterId, params }: AllowanceRequest) {\n if (!params.owner.address && !params.owner.principal) throw Error(\"no owner address or principal\");\n\n return resultFormat(\n await (\n await this.actor(canisterId)\n ).allowance({\n owner: params.owner.address ? { address: params.owner.address } : { principal: params.owner.principal! },\n subaccount: params.subaccount ? [Array.from(params.subaccount)] : [],\n spender: params.spender,\n }),\n );\n }\n\n public async metadata({ canisterId }: MetadataRequest) {\n const metadata = resultFormat<{\n fungible: Metadata;\n }>(await (await this.actor(canisterId)).metadata()).data?.fungible;\n const logo = resultFormat(await (await this.actor(canisterId)).logo()).data;\n const fee = resultFormat(await (await this.actor(canisterId)).getFee()).data;\n\n return {\n status: ResultStatus.OK,\n data: {\n ...metadata,\n logo,\n fee,\n } as Metadata,\n message: \"\",\n };\n }\n\n public async setLogo({ canisterId, params, identity }: SetLogoRequest) {\n return resultFormat(await (await this.actor(canisterId, identity)).setLogo(params));\n }\n\n public actualReceivedByTransfer({ amount }: ActualReceivedByTransferRequest) {\n return amount;\n }\n\n public async extensions({ canisterId }: { canisterId: string }) {\n return await (await this.actor(canisterId)).extensions();\n }\n\n public async getMintingAccount({\n canisterId,\n }: {\n canisterId: string;\n }): BaseTokenResult<{ owner: string; sub: number[] | undefined }> {\n return {\n status: ResultStatus.OK,\n data: undefined,\n message: \"\",\n };\n }\n}\n\nexport const EXTAdapter = new EXTTokenAdapter({\n actor: ext,\n});\n","import { resultFormat, availableArgsNull, isBigIntMemo } from \"@icpswap/utils\";\nimport { ledgerService } from \"@icpswap/actor\";\nimport { Ledger } from \"@icpswap/candid\";\nimport { ActorIdentity, PaginationResult, ResultStatus } from \"@icpswap/types\";\nimport { TokenHolder, Transaction, Metadata } from \"./types\";\nimport {\n BaseTokenAdapter,\n BalanceRequest,\n TransferRequest,\n MetadataRequest,\n ActualReceivedByTransferRequest,\n} from \"./BaseTokenAdapter\";\nimport { icrc1Adapter } from \"./ICRC1\";\n\nexport class ICPAdapter extends BaseTokenAdapter {\n public async holders() {\n return {\n status: ResultStatus.OK,\n data: {\n content: [] as TokenHolder[],\n totalElements: 0,\n limit: 10,\n offset: 0,\n } as PaginationResult,\n message: \"\",\n };\n }\n\n public async totalHolders() {\n return resultFormat(undefined);\n }\n\n public async supply() {\n return resultFormat(await (await this.actor()).icrc1_total_supply());\n }\n\n public async balance({ params }: BalanceRequest) {\n if (params.user.address) {\n return resultFormat(\n (\n await (\n await this.actor()\n ).account_balance({\n account: Array.from(Uint8Array.from(Buffer.from(params.user.address, \"hex\"))),\n })\n ).e8s,\n );\n }\n if (params.user.principal) {\n return resultFormat(\n await (\n await this.actor()\n ).icrc1_balance_of({\n owner: params.user.principal,\n subaccount: availableArgsNull>(params.subaccount ? params.subaccount : undefined),\n }),\n );\n }\n\n return resultFormat(BigInt(0));\n }\n\n public async transfer({ canisterId, identity, params }: TransferRequest) {\n if (!params.to.address && !params.to.principal) throw Error(\"No transfer to\");\n\n if (params.to.address) {\n if (params.memo && !isBigIntMemo(params.memo)) throw Error(\"Only bigint support (memo)\");\n\n const result = await (\n await this.actor(canisterId, identity)\n ).transfer({\n to: Array.from(Uint8Array.from(Buffer.from(params.to.address, \"hex\"))),\n memo: (params.memo as bigint) ?? BigInt(0),\n amount: { e8s: params.amount },\n created_at_time: availableArgsNull<{ timestamp_nanos: bigint }>(\n params.create_at_time ? { timestamp_nanos: params.create_at_time } : undefined,\n ),\n from_subaccount: availableArgsNull(params.from_sub_account),\n fee: { e8s: BigInt(10000) },\n });\n\n return resultFormat(result);\n }\n if (params.to.principal) {\n const result = await (\n await this.actor(canisterId, identity)\n ).icrc1_transfer({\n to: {\n owner: params.to.principal,\n subaccount: availableArgsNull>(params.subaccount ? params.subaccount : undefined),\n },\n memo: typeof params.memo === \"bigint\" ? [] : availableArgsNull(params.memo),\n amount: params.amount,\n created_at_time: availableArgsNull(params.create_at_time),\n from_subaccount: availableArgsNull>(\n params.from_sub_account ? params.from_sub_account : undefined,\n ),\n fee: availableArgsNull(null),\n });\n\n return resultFormat(result);\n }\n\n return resultFormat(undefined);\n }\n\n public async getFee() {\n return resultFormat(await (await (await this.actor()).transfer_fee({})).transfer_fee.e8s);\n }\n\n public async setFee() {\n return resultFormat({ err: \"no setFee\" });\n }\n\n public async setFeeTo() {\n return resultFormat({ err: \"no setFeeTo\" });\n }\n\n public async transactions() {\n return resultFormat>({\n content: [],\n totalElements: BigInt(0),\n offset: BigInt(0),\n limit: BigInt(10),\n });\n }\n\n public async approve() {\n return resultFormat({ err: \"no approve\" });\n }\n\n public async allowance() {\n return resultFormat({ err: \"no allowance\" });\n }\n\n public async metadata({ canisterId }: MetadataRequest) {\n const symbol = (await (await this.actor(canisterId)).symbol()).symbol;\n const decimals = (await (await this.actor()).decimals()).decimals;\n const name = \"Internet Computer\";\n const fee = resultFormat(await (await (await this.actor()).transfer_fee({})).transfer_fee.e8s).data;\n\n return {\n status: ResultStatus.OK,\n data: {\n decimals,\n metadata: [],\n name,\n symbol,\n fee: fee ?? BigInt(1000),\n logo: \"\",\n } as Metadata,\n message: \"\",\n };\n }\n\n public async setLogo() {\n return resultFormat({ err: \"no approve\" });\n }\n\n public actualReceivedByTransfer({ amount }: ActualReceivedByTransferRequest) {\n return amount;\n }\n\n public async getMintingAccount({ canisterId }: { canisterId: string }) {\n return await icrc1Adapter.getMintingAccount({ canisterId });\n }\n}\n\nexport const icpAdapter = new ICPAdapter({\n // @ts-ignore\n actor: async (canisterId?: string, identity?: ActorIdentity) => await ledgerService(identity),\n});\n","import { resultFormat, availableArgsNull, isBigIntMemo } from \"@icpswap/utils\";\nimport { PaginationResult, ResultStatus } from \"@icpswap/types\";\nimport { icrc1, icrcArchive } from \"@icpswap/actor\";\nimport { ICRC1_SERVICE, MetadataValue, GetTransactionsResponse, ArchivedTransaction } from \"@icpswap/candid\";\nimport { Principal } from \"@dfinity/principal\";\n\nimport { TokenHolder, Transaction, Metadata } from \"./types\";\nimport {\n BaseTokenAdapter,\n SupplyRequest,\n BalanceRequest,\n TransferRequest,\n GetFeeRequest,\n TransactionRequest,\n MetadataRequest,\n ActualReceivedByTransferRequest,\n} from \"./BaseTokenAdapter\";\nimport { icrcTransactionFormat } from \"./utils\";\n\nexport class ICRC1Adapter extends BaseTokenAdapter {\n public async holders() {\n return {\n status: ResultStatus.OK,\n data: {\n content: [] as TokenHolder[],\n totalElements: 0,\n limit: 10,\n offset: 0,\n } as PaginationResult,\n message: \"\",\n };\n }\n\n public async totalHolders() {\n return resultFormat(undefined);\n }\n\n public async supply({ canisterId }: SupplyRequest) {\n return resultFormat(await (await this.actor(canisterId)).icrc1_total_supply());\n }\n\n public async balance({ canisterId, params }: BalanceRequest) {\n if (params.user.principal) {\n return resultFormat(\n await (\n await this.actor(canisterId)\n ).icrc1_balance_of({\n owner: params.user.principal,\n subaccount: availableArgsNull>(params.subaccount ? params.subaccount : undefined),\n }),\n );\n }\n\n return resultFormat(BigInt(0));\n }\n\n public async transfer({ canisterId, identity, params }: TransferRequest) {\n if (!params.to.principal) throw Error(\"no user principal address\");\n if (isBigIntMemo(params.memo)) throw Error(\"Can't support bigint (memo)\");\n\n const result = await (\n await this.actor(canisterId, identity)\n ).icrc1_transfer({\n to: {\n owner: params.to.principal,\n subaccount: availableArgsNull>(params.subaccount ? params.subaccount : undefined),\n },\n memo: availableArgsNull(params.memo),\n amount: params.amount,\n created_at_time: availableArgsNull(params.create_at_time),\n from_subaccount: availableArgsNull>(params.from_sub_account ? params.from_sub_account : undefined),\n fee: availableArgsNull(params.fee),\n });\n\n return resultFormat(result);\n }\n\n public async getFee({ canisterId }: GetFeeRequest) {\n return resultFormat(await (await this.actor(canisterId)).icrc1_fee());\n }\n\n public async setFee() {\n return resultFormat({ err: \"no setFee\" });\n }\n\n public async setFeeTo() {\n return resultFormat({ err: \"no setFeeTo\" });\n }\n\n public async transactions({ canisterId, params }: TransactionRequest) {\n if (params.offset === undefined || params.limit === undefined) throw Error(\"no offset or limit\");\n\n // To get the total length\n const init_result = resultFormat(\n await (await this.actor(canisterId)).get_transactions({ start: BigInt(0), length: BigInt(10) }),\n ).data;\n\n if (init_result) {\n const { log_length } = init_result;\n\n // The start index of the transactions\n let start_index = Number(log_length) - 1 - params.offset - params.limit;\n\n if (start_index < 0) start_index = 0;\n\n const _result = resultFormat(\n await (\n await this.actor(canisterId)\n ).get_transactions({\n start: BigInt(start_index),\n length: BigInt(params.limit),\n }),\n ).data;\n\n if (_result) {\n const { archived_transactions, transactions: token_canister_transactions } = _result;\n\n let archivedTransactions: ArchivedTransaction[] = [];\n\n if (archived_transactions.length > 0) {\n archivedTransactions = (\n await Promise.all(\n archived_transactions.map(async (ele) => {\n return (\n await (\n await icrcArchive(ele.callback[0].toString())\n ).get_transactions({\n start: ele.start,\n length: ele.length,\n })\n ).transactions;\n }),\n )\n )\n .flat()\n .sort((a, b) => {\n if (a.timestamp < b.timestamp) return -1;\n if (a.timestamp > b.timestamp) return 1;\n return 0;\n });\n }\n\n const transactions = archivedTransactions\n .concat(token_canister_transactions)\n .sort((a, b) => {\n if (a.timestamp < b.timestamp) return -1;\n if (a.timestamp > b.timestamp) return 1;\n return 0;\n })\n .map((ele, index) =>\n // @ts-ignore\n icrcTransactionFormat(ele, BigInt(start_index) + BigInt(index)),\n );\n\n return resultFormat>({\n content: transactions.reverse(),\n totalElements: log_length,\n offset: BigInt(params.offset),\n limit: BigInt(params.limit),\n });\n }\n }\n\n return resultFormat>(undefined);\n }\n\n public async approve() {\n return resultFormat({ err: \"no approve\" });\n }\n\n public async allowance() {\n return resultFormat({ err: \"no allowance\" });\n }\n\n public async metadata({ canisterId }: MetadataRequest) {\n const metadata = resultFormat>(\n await (await this.actor(canisterId)).icrc1_metadata(),\n ).data;\n\n if (!metadata) {\n return {\n status: ResultStatus.ERROR,\n data: undefined,\n message: \"\",\n };\n }\n\n let name = \"\";\n let symbol = \"\";\n let decimals = BigInt(0);\n let fee = BigInt(0);\n let logo = \"\";\n\n for (let i = 0; i < metadata.length; i++) {\n const ele = metadata[i];\n if (ele[0] === \"icrc1:name\") {\n const val = ele[1] as { Text: string };\n name = val.Text;\n } else if (ele[0] === \"icrc1:symbol\") {\n const val = ele[1] as { Text: string };\n symbol = val.Text;\n } else if (ele[0] === \"icrc1:decimals\") {\n const val = ele[1] as { Nat: bigint };\n decimals = val.Nat;\n } else if (ele[0] === \"icrc1:fee\") {\n const val = ele[1] as { Nat: bigint };\n fee = val.Nat;\n } else if (ele[0] === \"icrc1:logo\") {\n const val = ele[1] as { Text: string };\n logo = val.Text;\n }\n }\n\n return {\n status: ResultStatus.OK,\n data: {\n decimals: Number(decimals),\n name,\n symbol,\n fee,\n logo,\n } as Metadata,\n message: \"\",\n };\n }\n\n public async setLogo() {\n return resultFormat({ err: \"no approve\" });\n }\n\n public actualReceivedByTransfer({ amount }: ActualReceivedByTransferRequest) {\n return amount;\n }\n\n public async getMintingAccount({ canisterId }: { canisterId: string }) {\n const result = (await (await this.actor(canisterId)).icrc1_minting_account())[0];\n return resultFormat<{ owner: string; sub: number[] | undefined }>(\n result\n ? { owner: result.owner.toString(), sub: result.subaccount[0] ? [...result.subaccount[0]] : undefined }\n : undefined,\n );\n }\n}\n\nexport const icrc1Adapter = new ICRC1Adapter({\n actor: icrc1,\n});\n","import { enumToString, isOkSubAccount } from \"@icpswap/utils\";\nimport { ICRCTransaction } from \"@icpswap/candid\";\nimport { AccountIdentifier, SubAccount } from \"@dfinity/ledger-icp\";\nimport { Transaction as TokenTransaction } from \"./types\";\n\nexport function icrcTransactionFormat(transaction: ICRCTransaction, index: bigint) {\n const memo = transaction.transfer[0]?.memo.length\n ? transaction.transfer[0]?.memo\n : transaction.burn[0]?.memo.length\n ? transaction.burn[0]?.memo\n : transaction.mint[0]?.memo.length\n ? transaction.mint[0]?.memo\n : undefined;\n\n const from_owner = transaction.transfer[0]?.from.owner ?? transaction.burn[0]?.from.owner;\n const _from_sub = transaction.transfer[0]?.from.subaccount[0] ?? transaction.burn[0]?.from.subaccount[0];\n const to_owner = transaction.transfer[0]?.to.owner ?? transaction.mint[0]?.to.owner;\n const _to_sub = transaction.transfer[0]?.to.subaccount[0] ?? transaction.mint[0]?.to.subaccount[0];\n\n const from_sub = _from_sub ? SubAccount.fromBytes(Uint8Array.from(_from_sub)) : undefined;\n const from_account = from_owner\n ? AccountIdentifier.fromPrincipal({\n principal: from_owner,\n subAccount: isOkSubAccount(from_sub) ? from_sub : undefined,\n })\n : undefined;\n\n const to_sub = _to_sub ? SubAccount.fromBytes(Uint8Array.from(_to_sub)) : undefined;\n const to_account = to_owner\n ? AccountIdentifier.fromPrincipal({\n principal: to_owner,\n subAccount: isOkSubAccount(to_sub) ? to_sub : undefined,\n })\n : undefined;\n\n const feeArray = transaction.transfer[0]?.fee;\n\n return {\n timestamp: transaction.timestamp,\n hash: \"\",\n fee: feeArray ? feeArray[0] : undefined,\n from_owner: from_owner?.toString() ?? \"\",\n from_sub: _from_sub,\n from_account: from_account?.toHex() ?? \"\",\n to_owner: to_owner?.toString() ?? \"\",\n to_sub: _to_sub,\n to_account: to_account?.toHex() ?? \"\",\n transType: enumToString(\n transaction.transfer[0]\n ? { Transfer: null }\n : transaction.burn[0]\n ? { Burn: null }\n : transaction.mint[0]\n ? { Mint: null }\n : { Approve: null },\n ),\n amount: transaction.transfer[0]?.amount ?? transaction.burn[0]?.amount ?? transaction.mint[0]?.amount,\n index,\n memo: memo ? [...memo[0]] : [],\n status: \"\",\n } as TokenTransaction;\n}\n","import { resultFormat, availableArgsNull, isBigIntMemo } from \"@icpswap/utils\";\nimport { PaginationResult, ResultStatus } from \"@icpswap/types\";\nimport { icrc2 } from \"@icpswap/actor\";\nimport { ICRC2 } from \"@icpswap/candid\";\nimport {\n BaseTokenAdapter,\n SupplyRequest,\n BalanceRequest,\n TransferRequest,\n GetFeeRequest,\n TransactionRequest,\n ApproveRequest,\n AllowanceRequest,\n MetadataRequest,\n ActualReceivedByTransferRequest,\n} from \"./BaseTokenAdapter\";\nimport { TokenHolder } from \"./types\";\nimport { icrc1Adapter } from \"./ICRC1\";\n\nexport class ICRC2Adapter extends BaseTokenAdapter {\n public async holders() {\n return {\n status: ResultStatus.OK,\n data: {\n content: [] as TokenHolder[],\n totalElements: 0,\n limit: 10,\n offset: 0,\n } as PaginationResult,\n message: \"\",\n };\n }\n\n public async totalHolders() {\n return resultFormat(undefined);\n }\n\n public async supply({ canisterId }: SupplyRequest) {\n return resultFormat(await (await this.actor(canisterId)).icrc1_total_supply());\n }\n\n public async balance({ canisterId, params }: BalanceRequest) {\n if (params.user.principal) {\n return await icrc1Adapter.balance({ canisterId, params });\n }\n\n return resultFormat(BigInt(0));\n }\n\n public async transfer({ canisterId, identity, params }: TransferRequest) {\n if (!params.to.principal) throw Error(\"no user principal address\");\n if (isBigIntMemo(params.memo)) throw Error(\"Can't support bigint (memo)\");\n\n return await icrc1Adapter.transfer({\n canisterId,\n identity,\n params,\n });\n }\n\n public async getFee({ canisterId }: GetFeeRequest) {\n return await icrc1Adapter.getFee({ canisterId });\n }\n\n public async setFee() {\n return resultFormat({ err: \"no setFee\" });\n }\n\n public async setFeeTo() {\n return resultFormat({ err: \"no setFeeTo\" });\n }\n\n public async transactions({ canisterId, params }: TransactionRequest) {\n return await icrc1Adapter.transactions({ canisterId, params });\n }\n\n public async approve({ canisterId, params, identity }: ApproveRequest) {\n return resultFormat(\n await (\n await this.actor(canisterId, identity)\n ).icrc2_approve({\n spender: {\n owner: params.spender,\n subaccount: availableArgsNull(params.spenderSub ? params.spenderSub : undefined),\n },\n fee: availableArgsNull(params.fee),\n created_at_time: [],\n amount: params.allowance,\n memo: [],\n expected_allowance: availableArgsNull(params.expected_allowance),\n expires_at: availableArgsNull(params.expires_at),\n from_subaccount: availableArgsNull(params.subaccount ? params.subaccount : undefined),\n }),\n );\n }\n\n public async allowance({ canisterId, params }: AllowanceRequest) {\n if (!params.owner.principal) throw Error(\"no principal\");\n\n const result = await (\n await this.actor(canisterId)\n ).icrc2_allowance({\n spender: {\n owner: params.spender,\n subaccount: availableArgsNull>(params.spenderSub ? params.spenderSub : undefined),\n },\n account: {\n owner: params.owner.principal,\n subaccount: availableArgsNull>(params.subaccount ? params.subaccount : undefined),\n },\n });\n\n return resultFormat(result.allowance);\n }\n\n public async metadata({ canisterId }: MetadataRequest) {\n return await icrc1Adapter.metadata({ canisterId });\n }\n\n public async setLogo() {\n return resultFormat({ err: \"no approve\" });\n }\n\n public actualReceivedByTransfer({ amount }: ActualReceivedByTransferRequest) {\n return amount;\n }\n\n public async getMintingAccount({ canisterId }: { canisterId: string }) {\n return await icrc1Adapter.getMintingAccount({ canisterId });\n }\n}\n\nexport const icrc2Adapter = new ICRC2Adapter({\n actor: icrc2,\n});\n","import { ActorIdentity, Override } from \"@icpswap/types\";\nimport {\n HoldersRequest,\n TotalHoldersRequest,\n SupplyRequest,\n BalanceRequest,\n TransferRequest,\n SetFeeRequest,\n SetFeeToRequest,\n TransactionRequest,\n ApproveRequest,\n AllowanceRequest,\n MetadataRequest,\n SetLogoRequest,\n ActualReceivedByTransferRequest,\n} from \"./BaseTokenAdapter\";\nimport { EXTAdapter, EXTTokenAdapter } from \"./EXTAdapter\";\nimport { DIP20Adapter, DIP20TokenAdapter } from \"./DIP20Adapter\";\nimport { DIP20WICPAdapter, DIP20WICPTokenAdapter } from \"./DIP20WICPAdapter\";\nimport { DIP20XTCAdapter, DIP20XTCTokenAdapter } from \"./DIP20XTCAdapter\";\nimport { icrc1Adapter, ICRC1Adapter } from \"./ICRC1\";\nimport { icrc2Adapter, ICRC2Adapter } from \"./ICRC2\";\nimport { icpAdapter, ICPAdapter } from \"./ICP\";\nimport { TOKEN_STANDARD } from \"./types\";\n\nexport type AdapterRequest = T;\n\nexport type AdapterIdentityRequest = Override;\n\nexport type RegisterProps = { canisterId: string; standard: TOKEN_STANDARD }[];\n\nexport class TokenAdapter {\n public canisterAdapters = new Map();\n\n public adapters = new Map<\n TOKEN_STANDARD,\n | DIP20XTCTokenAdapter\n | DIP20WICPTokenAdapter\n | DIP20TokenAdapter\n | EXTTokenAdapter\n | ICRC1Adapter\n | ICRC2Adapter\n | ICPAdapter\n >();\n\n public initialAdapter(\n name: TOKEN_STANDARD,\n adapter:\n | DIP20XTCTokenAdapter\n | DIP20WICPTokenAdapter\n | DIP20TokenAdapter\n | EXTTokenAdapter\n | ICRC1Adapter\n | ICRC2Adapter\n | ICPAdapter,\n ) {\n if (this.adapters.get(name)) throw Error(\"This adapter is already initialed\");\n this.adapters.set(name, adapter);\n }\n\n public register(standards: RegisterProps) {\n standards.forEach(({ standard, canisterId }) => {\n this.canisterAdapters.set(canisterId, standard);\n });\n }\n\n public getAll() {\n return this.canisterAdapters;\n }\n\n public getAdapter(canisterId: string) {\n let standard = this.canisterAdapters.get(canisterId);\n if (!standard) {\n console.error(`Can't not found adapter ===> ${canisterId}`);\n standard = TOKEN_STANDARD.EXT;\n }\n return this.getAdapterByName(standard);\n }\n\n public getAdapterByName(adapterName: TOKEN_STANDARD | undefined) {\n if (!adapterName || !this.adapters.get(adapterName)) throw Error(`Can't not found adapter ${adapterName}`);\n return this.adapters.get(adapterName);\n }\n\n public async totalHolders({ canisterId }: AdapterRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.totalHolders({ canisterId });\n }\n\n public async holders({ params, canisterId }: AdapterRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.holders({\n canisterId,\n params,\n });\n }\n\n public async supply({ canisterId }: AdapterRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.supply({\n canisterId,\n });\n }\n\n public async balance({ canisterId, params }: AdapterRequest) {\n const adapter = this.getAdapter(canisterId);\n\n return await adapter!.balance({\n canisterId,\n params,\n });\n }\n\n public async transfer({ canisterId, params, identity }: AdapterIdentityRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.transfer({\n canisterId,\n params,\n identity,\n });\n }\n\n public async setFee({ canisterId, identity, params }: AdapterIdentityRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.setFee({\n canisterId,\n identity,\n params,\n });\n }\n\n public async setFeeTo({ canisterId, identity, params }: AdapterIdentityRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.setFeeTo({\n canisterId,\n identity,\n params,\n });\n }\n\n public async transactions({ canisterId, params }: AdapterRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.transactions({\n canisterId,\n params,\n });\n }\n\n public async approve({ canisterId, identity, params }: AdapterRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.approve({\n canisterId,\n params,\n identity,\n });\n }\n\n public async allowance({ canisterId, params }: AdapterRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.allowance({\n canisterId,\n params,\n });\n }\n\n public async metadata({ canisterId }: AdapterRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.metadata({\n canisterId,\n });\n }\n\n public async setLogo({ canisterId, identity, params }: AdapterIdentityRequest) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.setLogo({\n canisterId,\n params,\n identity,\n });\n }\n\n public actualReceivedByTransfer(request: ActualReceivedByTransferRequest) {\n const adapter = this.getAdapter(request.canisterId);\n return adapter!.actualReceivedByTransfer(request);\n }\n\n public async getMintingAccount({ canisterId }: { canisterId: string }) {\n const adapter = this.getAdapter(canisterId);\n return await adapter!.getMintingAccount({\n canisterId,\n });\n }\n}\n\nexport const tokenAdapter = new TokenAdapter();\n\nexport const registerTokens = (standards: RegisterProps) => tokenAdapter.register(standards);\n\ntokenAdapter.initialAdapter(TOKEN_STANDARD.EXT, EXTAdapter);\ntokenAdapter.initialAdapter(TOKEN_STANDARD.DIP20, DIP20Adapter);\ntokenAdapter.initialAdapter(TOKEN_STANDARD.DIP20_XTC, DIP20XTCAdapter);\ntokenAdapter.initialAdapter(TOKEN_STANDARD.DIP20_WICP, DIP20WICPAdapter);\ntokenAdapter.initialAdapter(TOKEN_STANDARD.ICRC1, icrc1Adapter);\ntokenAdapter.initialAdapter(TOKEN_STANDARD.ICRC2, icrc2Adapter);\ntokenAdapter.initialAdapter(TOKEN_STANDARD.ICP, icpAdapter);\n\nexport {\n EXTAdapter,\n DIP20Adapter,\n DIP20XTCAdapter,\n DIP20WICPAdapter,\n ICRC1Adapter,\n ICRC2Adapter,\n icrc1Adapter,\n icrc2Adapter,\n icpAdapter,\n ICPAdapter,\n TOKEN_STANDARD,\n};\n\nexport * from \"./token-standard-verification\";\nexport * from \"./utils\";\n","import type { Principal } from \"@dfinity/principal\";\nimport { Null, Override } from \"@icpswap/types\";\n\nexport type { TokenHolder, TokenHolderArgs } from \"@icpswap/candid\";\n\nexport interface Transaction {\n fee: bigint | undefined;\n status: string;\n transType: string;\n from_owner: string;\n from_sub: number[] | undefined;\n from_account: string;\n to_owner: string;\n to_sub: number[] | undefined;\n to_account: string;\n hash: string;\n memo: [] | [Array];\n timestamp: bigint;\n index: bigint;\n amount: bigint;\n}\n\nexport type TransactionRequest = {\n hash?: string;\n user?: User;\n offset?: number;\n limit?: number;\n index?: number;\n};\n\nexport type User = { principal?: Principal; address?: string };\n\nexport type SetFeeToRequest = User;\n\nexport type BalanceRequest = {\n token: string;\n user: User;\n subaccount?: number[];\n};\n\nexport type TransferRequest = {\n to: User;\n token?: string;\n notify?: boolean;\n from: User;\n memo?: number[] | bigint;\n subaccount?: number[];\n nonce?: bigint;\n amount: bigint;\n create_at_time?: bigint;\n from_sub_account?: number[];\n fee?: bigint;\n};\n\nexport type TokenTransferRequest = TransferRequest;\n\nexport type TokenAllowanceRequest = {\n owner: User;\n subaccount?: number[] | Null;\n spender: Principal;\n spenderSub?: number[] | Null;\n};\n\nexport type Metadata = {\n decimals: number;\n name: string;\n symbol: string;\n logo: string;\n fee: bigint;\n};\n\nexport type ApproveRequest = {\n subaccount?: number[];\n allowance: bigint;\n spender: Principal;\n spenderSub?: number[];\n fee?: bigint;\n expires_at?: bigint;\n expected_allowance?: bigint;\n};\n\nexport type TokenApproveRequest = Override;\n\nexport type { DIP20Metadata } from \"@icpswap/candid\";\n\nexport enum TOKEN_STANDARD {\n EXT = \"EXT\",\n DIP20 = \"DIP20\",\n ICP = \"ICP\",\n DIP20_WICP = \"DIP20-WICP\",\n DIP20_XTC = \"DIP20-XTC\",\n ICRC1 = \"ICRC1\",\n ICRC2 = \"ICRC2\",\n}\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { TokenInfo } from \"@icpswap/types\";\nimport { TOKEN_STANDARD, WICP_CANISTER_ID } from \"@icpswap/constants\";\n\nexport const WRAPPED_ICP_TOKEN_INFO: TokenInfo = {\n standardType: TOKEN_STANDARD.EXT,\n name: \"Wrapped ICP\",\n decimals: 8,\n symbol: \"WICP\",\n canisterId: WICP_CANISTER_ID,\n totalSupply: BigInt(100000000000000000),\n transFee: BigInt(0),\n logo: `/images/tokens/${WICP_CANISTER_ID}.jpeg`,\n};\n\nexport const WRAPPED_ICP = new Token({\n address: WRAPPED_ICP_TOKEN_INFO.canisterId,\n decimals: WRAPPED_ICP_TOKEN_INFO.decimals,\n symbol: WRAPPED_ICP_TOKEN_INFO.symbol,\n name: WRAPPED_ICP_TOKEN_INFO.name,\n logo: WRAPPED_ICP_TOKEN_INFO.logo,\n standard: TOKEN_STANDARD.EXT,\n transFee: Number(WRAPPED_ICP_TOKEN_INFO.transFee),\n});\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { TokenInfo } from \"@icpswap/types\";\nimport { TOKEN_STANDARD, LEDGER_CANISTER_ID } from \"@icpswap/constants\";\n\nexport const ICP_TOKEN_INFO: TokenInfo = {\n symbol: \"ICP\",\n name: \"Internet Computer\",\n decimals: 8,\n canisterId: LEDGER_CANISTER_ID,\n transFee: BigInt(10000),\n totalSupply: BigInt(200000000000000),\n standardType: TOKEN_STANDARD.ICRC2,\n logo: `/images/tokens/${LEDGER_CANISTER_ID}.svg`,\n};\n\nexport const ICP = new Token({\n address: ICP_TOKEN_INFO.canisterId,\n decimals: ICP_TOKEN_INFO.decimals,\n symbol: ICP_TOKEN_INFO.symbol,\n name: ICP_TOKEN_INFO.name,\n logo: ICP_TOKEN_INFO.logo,\n standard: TOKEN_STANDARD.ICRC2,\n transFee: Number(ICP_TOKEN_INFO.transFee),\n});\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { TokenInfo } from \"@icpswap/types\";\nimport { TOKEN_STANDARD, ICS_CANISTER_ID } from \"@icpswap/constants\";\n\nexport const ICS_TOKEN_INFO: TokenInfo = {\n symbol: \"ICS\",\n name: \"ICPSwap Token\",\n decimals: 8,\n canisterId: ICS_CANISTER_ID,\n transFee: BigInt(1000000),\n totalSupply: BigInt(200000000000000),\n standardType: TOKEN_STANDARD.ICRC1,\n logo: `/images/tokens/${ICS_CANISTER_ID}.png`,\n};\n\nexport const ICS = new Token({\n address: ICS_TOKEN_INFO.canisterId,\n decimals: ICS_TOKEN_INFO.decimals,\n symbol: ICS_TOKEN_INFO.symbol,\n name: ICS_TOKEN_INFO.name,\n logo: ICS_TOKEN_INFO.logo,\n standard: TOKEN_STANDARD.ICRC1,\n transFee: Number(ICS_TOKEN_INFO.transFee),\n});\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { TokenInfo } from \"@icpswap/types\";\nimport { TOKEN_STANDARD } from \"@icpswap/constants\";\n\nexport const GHOST_TOKEN_ID = \"4c4fd-caaaa-aaaaq-aaa3a-cai\";\n\nexport const GHOST_TOKEN_INFO: TokenInfo = {\n standardType: TOKEN_STANDARD.ICRC1,\n name: \"GHOST\",\n decimals: 8,\n symbol: \"GHOST\",\n canisterId: GHOST_TOKEN_ID,\n totalSupply: BigInt(100000000000000000),\n transFee: BigInt(100000000),\n logo: `/images/tokens/${GHOST_TOKEN_ID}.png`,\n};\n\nexport const GHOST = new Token({\n address: GHOST_TOKEN_INFO.canisterId,\n decimals: GHOST_TOKEN_INFO.decimals,\n symbol: GHOST_TOKEN_INFO.symbol,\n name: GHOST_TOKEN_INFO.name,\n logo: GHOST_TOKEN_INFO.logo,\n standard: TOKEN_STANDARD.ICRC1,\n transFee: Number(GHOST_TOKEN_INFO.transFee),\n});\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { TokenInfo } from \"@icpswap/types\";\nimport { TOKEN_STANDARD } from \"@icpswap/constants\";\n\nexport const ck_BTC_TOKEN_INFO: TokenInfo = {\n standardType: TOKEN_STANDARD.ICRC2,\n name: \"ckBTC\",\n decimals: 8,\n symbol: \"ckBTC\",\n canisterId: \"mxzaz-hqaaa-aaaar-qaada-cai\",\n totalSupply: BigInt(0),\n transFee: BigInt(10),\n logo: \"/images/tokens/mxzaz-hqaaa-aaaar-qaada-cai.svg\",\n};\n\nexport const ckBTC = new Token({\n address: ck_BTC_TOKEN_INFO.canisterId,\n decimals: ck_BTC_TOKEN_INFO.decimals,\n symbol: ck_BTC_TOKEN_INFO.symbol,\n name: ck_BTC_TOKEN_INFO.name,\n logo: ck_BTC_TOKEN_INFO.logo,\n standard: TOKEN_STANDARD.ICRC1,\n transFee: Number(ck_BTC_TOKEN_INFO.transFee),\n});\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { TokenInfo } from \"@icpswap/types\";\nimport { TOKEN_STANDARD } from \"@icpswap/constants\";\n\nexport const ckUSDCTokenInfo: TokenInfo = {\n standardType: TOKEN_STANDARD.ICRC2,\n name: \"ckUSDC\",\n decimals: 6,\n symbol: \"ckUSDC\",\n canisterId: \"xevnm-gaaaa-aaaar-qafnq-cai\",\n totalSupply: BigInt(0),\n transFee: BigInt(10),\n logo: `/images/tokens/xevnm-gaaaa-aaaar-qafnq-cai.svg`,\n};\n\nexport const ckUSDC = new Token({\n address: ckUSDCTokenInfo.canisterId,\n decimals: ckUSDCTokenInfo.decimals,\n symbol: ckUSDCTokenInfo.symbol,\n name: ckUSDCTokenInfo.name,\n logo: ckUSDCTokenInfo.logo,\n standard: TOKEN_STANDARD.ICRC2,\n transFee: Number(ckUSDCTokenInfo.transFee),\n});\n\nexport const ckSepoliaUSDCTokenInfo: TokenInfo = {\n standardType: TOKEN_STANDARD.ICRC2,\n name: \"Chain key Sepolia USD\",\n decimals: 6,\n symbol: \"ckSepoliaUSDC\",\n canisterId: \"yfumr-cyaaa-aaaar-qaela-cai\",\n totalSupply: BigInt(0),\n transFee: BigInt(4000),\n logo: `/images/tokens/yfumr-cyaaa-aaaar-qaela-cai.png`,\n};\n\nexport const ckSepoliaUSDC = new Token({\n address: ckSepoliaUSDCTokenInfo.canisterId,\n decimals: ckSepoliaUSDCTokenInfo.decimals,\n symbol: ckSepoliaUSDCTokenInfo.symbol,\n name: ckSepoliaUSDCTokenInfo.name,\n logo: ckSepoliaUSDCTokenInfo.logo,\n standard: ckSepoliaUSDCTokenInfo.standardType,\n transFee: Number(ckSepoliaUSDCTokenInfo.transFee),\n});\n","import { ERC20Token } from \"@icpswap/swap-sdk\";\n\nexport const USDC = new ERC20Token({\n address: \"0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48\",\n name: \"USDC\",\n symbol: \"USDC\",\n decimals: 6,\n logo: \"/images/tokens/yfumr-cyaaa-aaaar-qaela-cai-erc20.png\",\n});\n\nexport const SepoliaUSDC = new ERC20Token({\n address: \"0x1c7D4B196Cb0C7B01d743Fbc6116a902379C7238\",\n name: \"USDC(Sepolia)\",\n symbol: \"USDC(Sepolia)\",\n decimals: 6,\n logo: \"/images/tokens/yfumr-cyaaa-aaaar-qaela-cai-erc20.png\",\n});\n","import { ERC20Token } from \"@icpswap/swap-sdk\";\n\nexport const LINK = new ERC20Token({\n address: \"0x514910771AF9Ca656af840dff83E8264EcF986CA\",\n name: \"LINK\",\n symbol: \"LINK\",\n decimals: 18,\n logo: \"/images/tokens/g4tto-rqaaa-aaaar-qageq-cai-erc20.png\",\n});\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { TokenInfo } from \"@icpswap/types\";\nimport { TOKEN_STANDARD } from \"@icpswap/constants\";\n\nexport const ckETHTokenInfo: TokenInfo = {\n standardType: TOKEN_STANDARD.ICRC2,\n name: \"Chain key Ethereum\",\n decimals: 18,\n symbol: \"ckETH\",\n canisterId: \"ss2fx-dyaaa-aaaar-qacoq-cai\",\n totalSupply: BigInt(0),\n transFee: BigInt(10_000_000_000),\n logo: `/images/tokens/ss2fx-dyaaa-aaaar-qacoq-cai.svg`,\n};\n\nexport const ckETH = new Token({\n address: ckETHTokenInfo.canisterId,\n decimals: ckETHTokenInfo.decimals,\n symbol: ckETHTokenInfo.symbol,\n name: ckETHTokenInfo.name,\n logo: ckETHTokenInfo.logo,\n standard: TOKEN_STANDARD.ICRC2,\n transFee: Number(ckETHTokenInfo.transFee),\n});\n\nexport const ckSepoliaETHTokenInfo: TokenInfo = {\n standardType: TOKEN_STANDARD.ICRC2,\n name: \"Chain key Sepolia Ethereum\",\n decimals: 18,\n symbol: \"ckSepoliaETH\",\n canisterId: \"apia6-jaaaa-aaaar-qabma-cai\",\n totalSupply: BigInt(0),\n transFee: BigInt(10_000_000_000),\n logo: `/images/tokens/apia6-jaaaa-aaaar-qabma-cai.png`,\n};\n\nexport const ckSepoliaETH = new Token({\n address: ckSepoliaETHTokenInfo.canisterId,\n decimals: ckSepoliaETHTokenInfo.decimals,\n symbol: ckSepoliaETHTokenInfo.symbol,\n name: ckSepoliaETHTokenInfo.name,\n logo: ckSepoliaETHTokenInfo.logo,\n standard: ckSepoliaETHTokenInfo.standardType,\n transFee: Number(ckSepoliaETHTokenInfo.transFee),\n});\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { TokenInfo } from \"@icpswap/types\";\nimport { TOKEN_STANDARD } from \"@icpswap/constants\";\n\nexport const ckLinkTokenInfo: TokenInfo = {\n standardType: TOKEN_STANDARD.ICRC2,\n name: \"ckLINK\",\n decimals: 18,\n symbol: \"ckLINK\",\n canisterId: \"g4tto-rqaaa-aaaar-qageq-cai\",\n totalSupply: BigInt(0),\n transFee: BigInt(100000000000000),\n logo: `/images/tokens/g4tto-rqaaa-aaaar-qageq-cai.png`,\n};\n\nexport const ckLink = new Token({\n address: ckLinkTokenInfo.canisterId,\n decimals: ckLinkTokenInfo.decimals,\n symbol: ckLinkTokenInfo.symbol,\n name: ckLinkTokenInfo.name,\n logo: ckLinkTokenInfo.logo,\n standard: TOKEN_STANDARD.ICRC2,\n transFee: Number(ckLinkTokenInfo.transFee),\n});\n","import { Token } from \"@icpswap/swap-sdk\";\nimport { TOKEN_STANDARD } from \"@icpswap/constants\";\n\nexport const BOB = new Token({\n address: \"7pail-xaaaa-aaaas-aabmq-cai\",\n decimals: 8,\n symbol: \"BOB\",\n name: \"BOB\",\n logo: \"/images/tokens/7pail-xaaaa-aaaas-aabmq-cai.png\",\n standard: TOKEN_STANDARD.ICRC2,\n transFee: 1000000,\n});\n","export enum ResultStatus {\n ERROR = \"err\",\n OK = \"ok\",\n}\n\nexport type ApiResult = undefined | T;\n\nexport type Null = null | undefined;\n\nexport type Override = Omit & S;\n\nexport type ActorIdentity = true;\n\nexport type StatusResult = {\n readonly status: ResultStatus;\n readonly data?: T;\n readonly message: string;\n};\n\nexport type CallResult = {\n readonly result: ApiResult;\n readonly loading: boolean;\n};\n\nexport type PaginationResult = {\n totalElements: number;\n offset: number;\n limit: number;\n content: T[];\n};\n","export type {\n CreateStakingPoolArgs,\n StakingPoolInfo,\n StakingPoolCycle,\n StakingPoolUserInfo,\n StakingPoolTransaction,\n StakingPoolGlobalData,\n StakingPoolControllerPoolInfo,\n StakeIndexPoolInfo,\n StakeAprInfo,\n StakeUserStakeInfo,\n StakeGlobalDataInfo,\n} from \"@icpswap/candid\";\n\nexport enum StakingState {\n LIVE = \"LIVE\",\n NOT_STARTED = \"NOT_STARTED\",\n FINISHED = \"FINISHED\",\n}\n","export enum TOKEN_STANDARD {\n EXT = \"EXT\",\n DIP20 = \"DIP20\",\n ICP = \"ICP\",\n DIP20_WICP = \"DIP20-WICP\",\n DIP20_XTC = \"DIP20-XTC\",\n ICRC1 = \"ICRC1\",\n ICRC2 = \"ICRC2\",\n}\n\nexport interface TokenTransaction {\n fee: bigint | undefined;\n status: string;\n transType: string;\n from_owner: string;\n from_sub: number[] | undefined;\n from_account: string;\n to_owner: string;\n to_sub: number[] | undefined;\n to_account: string;\n hash: string;\n memo: [] | [Array];\n timestamp: bigint;\n index: bigint;\n amount: bigint;\n}\n\nexport type TokenTransType = { burn: null } | { mint: null } | { approve: null } | { transfer: null };\n\nexport type {\n WrapUser,\n WrapTransaction,\n WrapMintArgs,\n WrapWithdrawArgs,\n TokenApproveArgs,\n TokenHolder,\n TokenHolderArgs,\n TokenTransactionArgs,\n TokenTransferArgs,\n TokenTransferResult,\n TokenTransaction as CandidTokenTransaction,\n} from \"@icpswap/candid\";\n\nexport type TokenInfo = {\n decimals: number;\n name: string;\n standardType: TOKEN_STANDARD;\n symbol: string;\n canisterId: string;\n logo: string;\n totalSupply: bigint;\n transFee: bigint;\n};\n\nexport type StorageTokenInfo = {\n decimals: number;\n name: string;\n standardType: TOKEN_STANDARD;\n symbol: string;\n canisterId: string;\n logo: string;\n totalSupply: string;\n transFee: string;\n};\n","import { ReactNode } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport Typography from \"@mui/material/Typography\";\nimport Box from \"@mui/material/Box\";\nimport { ChevronRight } from \"react-feather\";\n\nexport interface BreadcrumbsProps {\n prevLink: string;\n prevLabel: ReactNode;\n currentLabel: ReactNode;\n fontSize?: string;\n}\n\nexport function Breadcrumbs({ prevLabel, currentLabel, prevLink, fontSize = \"12px\" }: BreadcrumbsProps) {\n const history = useHistory();\n\n const handleClick = () => {\n if (prevLink === \"back\") {\n history.goBack();\n return;\n }\n history.push(prevLink);\n };\n\n return (\n \n \n {prevLabel}\n \n\n \n\n \n {currentLabel}\n \n \n );\n}\n","import { Box, BoxProps } from \"@mui/material\";\nimport { ReactNode } from \"react\";\n\nexport interface FlexProps {\n width?: string;\n align?: BoxProps[\"alignItems\"];\n justify?: BoxProps[\"justifyContent\"];\n padding?: string;\n border?: string;\n borderRadius?: string;\n children: ReactNode;\n margin?: string;\n gap?: BoxProps[\"gap\"];\n vertical?: boolean;\n sx?: BoxProps[\"sx\"];\n fullWidth?: boolean;\n className?: string;\n wrap?: BoxProps[\"flexWrap\"];\n onClick?: BoxProps[\"onClick\"];\n onMouseEnter?: BoxProps[\"onMouseEnter\"];\n onMouseLeave?: BoxProps[\"onMouseLeave\"];\n}\n\nexport function Flex({\n vertical,\n gap,\n children,\n width,\n align,\n justify,\n padding,\n border,\n borderRadius,\n margin,\n sx,\n fullWidth,\n className,\n wrap,\n onClick,\n onMouseEnter,\n onMouseLeave,\n}: FlexProps) {\n return (\n \n {children}\n \n );\n}\n","import { ReactNode } from \"react\";\nimport { keyframes } from \"@mui/material\";\n\nimport { Box, useTheme } from \"../Mui\";\n\nconst loadingAnimation = keyframes`\n 0% {\n background-position: 100% 50%;\n }\n 100% {\n background-position: 0% 50%;\n }\n`;\n\nexport function LoadingSingleRow() {\n const theme = useTheme();\n\n return (\n div\": {\n animation: `${loadingAnimation} 1.5s infinite`,\n animationFillMode: \"both\",\n background: `linear-gradient(\n to left,\n ${theme.palette.background.level2} 25%,\n ${theme.palette.background.level3} 50%,\n ${theme.palette.background.level4} 75%\n )`,\n backgroundSize: \"400%\",\n borderRadius: \"12px\",\n height: \" 2.4em\",\n willChange: \"background-position\",\n },\n \"& > div:nth-of-type(4n + 1)\": {\n gridColumn: \"1 / 3\",\n },\n \" & > div:nth-of-type(4n)\": {\n gridColumn: \"3 / 4\",\n marginBottom: \"16px\",\n },\n }}\n >\n
\n
\n \n );\n}\n\nexport interface LoadingRowProps {\n children: ReactNode;\n}\n\nexport function LoadingRow({ children }: LoadingRowProps) {\n const theme = useTheme();\n\n return (\n div\": {\n animation: `${loadingAnimation} 1.5s infinite`,\n animationFillMode: \"both\",\n background: `linear-gradient(\n to left,\n ${theme.palette.background.level2} 25%,\n ${theme.palette.background.level3} 50%,\n ${theme.palette.background.level4} 75%\n )`,\n backgroundSize: \"400%\",\n borderRadius: \"12px\",\n height: \" 2.4em\",\n willChange: \"background-position\",\n },\n \"& > div:nth-of-type(4n + 1)\": {\n gridColumn: \"1 / 3\",\n },\n \" & > div:nth-of-type(4n)\": {\n gridColumn: \"3 / 4\",\n marginBottom: \"16px\",\n },\n }}\n >\n {children}\n \n );\n}\n","import React, { useMemo } from \"react\";\n\nimport { Box, BoxProps, useTheme } from \"./Mui\";\n\nexport type MainCardBorder = \"level1\" | \"level2\" | \"level3\" | \"level4\";\n\nexport interface MainCardProps {\n border?: MainCardBorder;\n children: React.ReactNode;\n level?: number;\n onClick?: (event: any) => void;\n padding?: string;\n sx?: BoxProps[\"sx\"];\n borderRadius?: string;\n className?: string;\n}\n\nexport function MainCard({ border, level, onClick, padding, children, sx, borderRadius, className }: MainCardProps) {\n const theme = useTheme();\n\n const cardStyles = useMemo(() => {\n const _border =\n border === \"level1\"\n ? theme.palette.background.level1\n : border === \"level2\"\n ? theme.palette.background.level2\n : border === \"level3\"\n ? theme.palette.background.level3\n : border === \"level4\"\n ? theme.palette.background.level4\n : undefined;\n\n switch (level) {\n case 1:\n return {\n background: theme.palette.background.level1,\n ...(_border ? { border: `1px solid ${_border}` } : {}),\n };\n case 2:\n return {\n background: theme.palette.background.level2,\n ...(border ? { border: \"2px solid rgba(255, 255, 255, 0.04)\" } : {}),\n };\n case 3:\n return {\n background: theme.palette.background.level3,\n ...(_border ? { border: `1px solid ${_border}` } : {}),\n };\n case 4:\n return {\n background: theme.palette.background.level4,\n ...(_border ? { border: `1px solid ${_border}` } : {}),\n };\n case 5:\n return {\n background: \"#273051\",\n border: \"0.5px solid #404558\",\n };\n default:\n return {\n background: theme.palette.background.level3,\n ...(_border ? { border: `1px solid ${_border}` } : {}),\n };\n }\n }, [level, border]);\n\n return (\n \n {children}\n \n );\n}\n","import { Theme } from \"@mui/material/styles\";\nimport useMuiTheme from \"@mui/styles/useTheme\";\n\nexport { default as Box, type BoxProps } from \"@mui/material/Box\";\nexport { default as Typography, type TypographyProps } from \"@mui/material/Typography\";\nexport { default as Grid, type GridProps } from \"@mui/material/Grid\";\nexport { default as SvgIcon, type SvgIconProps } from \"@mui/material/SvgIcon\";\nexport { default as Button, type ButtonProps } from \"@mui/material/Button\";\nexport { default as TextField, type TextFieldProps } from \"@mui/material/TextField\";\nexport { default as Fade, type FadeProps } from \"@mui/material/Fade\";\nexport { default as Collapse, type CollapseProps } from \"@mui/material/Collapse\";\nexport { default as Checkbox, type CheckboxProps } from \"@mui/material/Checkbox\";\nexport { default as MenuList, type MenuListProps } from \"@mui/material/MenuList\";\nexport { default as MenuItem } from \"@mui/material/MenuItem\";\nexport { default as Popper } from \"@mui/material/Popper\";\nexport { default as useMediaQuery } from \"@mui/material/useMediaQuery\";\nexport { default as CircularProgress } from \"@mui/material/CircularProgress\";\nexport { default as InputAdornment } from \"@mui/material/InputAdornment\";\nexport { default as Avatar, type AvatarProps } from \"@mui/material/Avatar\";\nexport { default as Link } from \"@mui/material/Link\";\nexport { default as makeStyles } from \"@mui/styles/makeStyles\";\nexport { default as Tooltip } from \"@mui/material/Tooltip\";\nexport { default as Chip } from \"@mui/material/Chip\";\nexport { default as Menu } from \"@mui/material/Menu\";\n\nexport function useTheme() {\n return useMuiTheme() as Theme;\n}\n\nexport type { Theme };\n","import { SvgIcon, SvgIconProps } from \"@mui/material\";\n\nexport default function NoDataIcon(props: SvgIconProps) {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import { Box, Typography } from \"@mui/material\";\nimport NoDataIcon from \"../assets/icons/NoData\";\n\nexport interface NoDataProps {\n tip?: string;\n}\n\nexport function NoData({ tip }: NoDataProps) {\n return (\n \n \n {tip ? (\n \n {tip}\n \n ) : null}\n \n );\n}\n","import React, { useState } from \"react\";\nimport { ClickAwayListener } from \"@mui/base\";\nimport { Search } from \"react-feather\";\n\nimport { MenuProps } from \"./types\";\nimport { Theme, useTheme, Box, Checkbox, Popper, TextField, InputAdornment } from \"../Mui\";\nimport { NoData } from \"../NoData\";\n\nexport interface DropDownMenuProps {\n value?: any;\n onChange?: (value: any) => void;\n required?: boolean;\n menus: MenuProps[];\n CustomNoData?: React.ReactNode;\n multiple?: boolean;\n menuMaxHeight?: string;\n search?: boolean;\n onSearch?: (search: string | undefined) => void;\n customLabel?: boolean;\n menuFilter?: (menu: MenuProps) => boolean;\n minMenuWidth?: string;\n anchor: any | undefined;\n onClose: () => void;\n onMenuClick: () => void;\n menuWidth?: number;\n}\n\nexport function DropDownMenu({\n value,\n onChange,\n menus,\n CustomNoData,\n multiple = false,\n menuMaxHeight,\n onSearch,\n search: hasSearch,\n customLabel,\n menuFilter,\n minMenuWidth = \"120px\",\n onClose,\n menuWidth,\n onMenuClick,\n anchor,\n}: DropDownMenuProps) {\n const theme = useTheme() as Theme;\n const [search, setSearch] = useState(undefined);\n\n const handleClose = () => {\n setSearch(undefined);\n onClose();\n if (onSearch) onSearch(undefined);\n };\n\n const handleMenuItemClick = (menu: MenuProps) => {\n if (!multiple) {\n setSearch(undefined);\n onMenuClick();\n if (onSearch) onSearch(undefined);\n if (onChange) onChange(menu.value);\n } else {\n const oldSelected = value ? [...value] : [];\n\n if (value?.includes(menu.value)) {\n const index = oldSelected.findIndex((item) => item === menu.value);\n\n if (index !== -1) {\n oldSelected.splice(index, 1);\n if (onChange) onChange(oldSelected);\n }\n } else {\n const newSelected = [...oldSelected, menu.value];\n if (onChange) onChange(newSelected);\n }\n }\n };\n\n const handleCheckboxChange = (checked: boolean, selectedValue: any) => {\n if (onChange) {\n const oldSelected = value ? [...value] : [];\n\n if (checked) {\n const newSelected = [...oldSelected, selectedValue];\n onChange(newSelected);\n } else {\n const index = oldSelected.findIndex((item) => item === selectedValue);\n\n if (index !== -1) {\n oldSelected.splice(index, 1);\n onChange(oldSelected);\n }\n }\n }\n };\n\n const handleSearchChange = (value: string) => {\n setSearch(value);\n if (onSearch) onSearch(value);\n };\n\n return (\n \n \n \n {hasSearch ? (\n \n handleSearchChange(value)}\n value={search}\n InputProps={{\n disableUnderline: true,\n startAdornment: (\n \n \n \n ),\n }}\n fullWidth\n />\n \n ) : null}\n\n \n {menus.map((menu, index) => {\n const isFiltered = menuFilter && menuFilter(menu);\n\n return customLabel ? (\n handleMenuItemClick(menu)}\n sx={{ ...(isFiltered ? { display: \"none\" } : {}) }}\n >\n {menu.label}\n \n ) : (\n handleMenuItemClick(menu)}\n >\n {multiple && (\n \n , checked: boolean) =>\n handleCheckboxChange(checked, menu.value)\n }\n checked={value?.includes(menu.value)}\n />\n \n )}\n\n {menu.label}\n \n );\n })}\n\n {menus.length === 0 ? CustomNoData || : null}\n \n \n \n \n );\n}\n","import React, { useState, useRef, ReactNode } from \"react\";\nimport KeyboardArrowDownIcon from \"@mui/icons-material/KeyboardArrowDown\";\nimport CloseIcon from \"@mui/icons-material/Close\";\nimport { nonNullArgs } from \"@icpswap/utils\";\n\nimport { makeStyles, Theme, Typography, Box } from \"../Mui\";\n\nimport { MenuProps } from \"./types\";\n\ninterface StyleProps {\n contained: boolean;\n fullHeight?: boolean;\n filled?: boolean;\n padding?: string;\n}\n\nconst useStyles = ({ contained, fullHeight, filled, padding }: StyleProps) => {\n return makeStyles((theme: Theme) => {\n return {\n inputBox: {\n display: \"flex\",\n alignItems: \"center\",\n background: filled ? theme.palette.background.level4 : theme.palette.background.level1,\n borderRadius: filled ? \"8px\" : \"12px\",\n padding: padding !== undefined ? padding : contained ? `9px 16px` : `${fullHeight ? \"0px\" : \"12px\"} 16px`,\n width: \"100%\",\n \"& input\": {\n color: theme.palette.text.primary,\n },\n \"&.none-background\": {\n background: \"transparent\",\n },\n },\n };\n });\n};\n\nexport interface PanelProps {\n label?: string;\n value?: any;\n onChange?: (value: any) => void;\n required?: boolean;\n maxWidth?: number;\n fullHeight?: boolean;\n contained?: boolean;\n placeholder?: string;\n filled?: boolean;\n showClean?: boolean;\n showBackground?: boolean;\n minMenuWidth?: string;\n valueColor?: string;\n padding?: string;\n menu: MenuProps | undefined | null;\n onClick?: (event: any) => void;\n open: boolean;\n panel?: (menu: MenuProps | null | undefined) => ReactNode;\n}\n\nexport function SelectPanel({\n label,\n value,\n onChange,\n required,\n maxWidth,\n fullHeight,\n contained = true,\n filled,\n showClean = true,\n showBackground = true,\n valueColor,\n padding,\n menu,\n placeholder,\n onClick,\n open,\n panel,\n}: PanelProps) {\n const classes = useStyles({ contained, fullHeight, filled, padding })();\n const outerBoxRef = useRef(null);\n\n const [showClose, setShowClose] = useState(false);\n\n const handleMouseEnter = () => {\n if (showClean === false) return;\n setShowClose(true);\n };\n\n const handleMouseLeave = () => {\n setShowClose(false);\n };\n\n const handleEmptyValue = (event: React.MouseEvent) => {\n event.stopPropagation();\n if (onChange) onChange(undefined);\n };\n\n return (\n \n {contained && label && (\n \n {required && (\n \n *\n \n )}\n\n \n {label}\n \n \n )}\n\n \n \n {nonNullArgs(value) || panel ? (\n \n {panel ? panel(menu) : menu?.selectLabel ?? menu?.label}\n \n ) : (\n {placeholder}\n )}\n \n\n \n {showClose && !!value ? (\n \n ) : (\n \n )}\n \n \n \n );\n}\n","import React, { useEffect, useState, useRef, useMemo, ReactNode } from \"react\";\n\nimport { Box } from \"../Mui\";\nimport { SelectPanel } from \"./Panel\";\nimport { DropDownMenu } from \"./DropDownMenu\";\nimport { MenuProps } from \"./types\";\n\nexport interface SelectProps {\n label?: string;\n value?: any;\n onChange?: (value: any) => void;\n required?: boolean;\n menus?: MenuProps[];\n maxWidth?: number;\n fullHeight?: boolean;\n disabled?: boolean;\n contained?: boolean;\n CustomNoData?: React.ReactNode;\n placeholder?: string;\n multiple?: boolean;\n menuMaxHeight?: string;\n search?: boolean;\n onSearch?: (search: string | undefined) => void;\n customLabel?: boolean;\n border?: boolean;\n menuFilter?: (menu: MenuProps) => boolean;\n filled?: boolean;\n showClean?: boolean;\n showBackground?: boolean;\n minMenuWidth?: string;\n valueColor?: string;\n panelPadding?: string;\n panel?: (menu: MenuProps | null | undefined) => ReactNode;\n}\n\nexport function Select({\n label,\n value,\n onChange,\n required,\n menus = [],\n maxWidth,\n fullHeight,\n disabled,\n contained = true,\n CustomNoData,\n multiple = false,\n menuMaxHeight,\n onSearch,\n search: hasSearch,\n customLabel,\n menuFilter,\n filled,\n showClean = true,\n showBackground = true,\n minMenuWidth = \"120px\",\n valueColor,\n placeholder,\n panelPadding,\n panel,\n}: SelectProps) {\n const [anchorEl, setAnchorEl] = useState(null);\n const wrapperRef = useRef(null);\n const [menuWidth, setMenuWidth] = useState(undefined);\n\n useEffect(() => {\n const width = wrapperRef?.current?.clientWidth;\n setMenuWidth(width ?? undefined);\n }, [wrapperRef]);\n\n const handleOuterBoxClick = (event: any) => {\n if (disabled) return;\n setAnchorEl(event.currentTarget);\n };\n\n const handleClose = () => {\n setAnchorEl(null);\n };\n\n const selectedMenu = useMemo(() => {\n return menus.filter((menu) => menu.value === value)[0];\n }, [menus, value]);\n\n return (\n <>\n \n \n \n\n \n \n );\n}\n","import { ReactNode } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { mockALinkAndOpen } from \"@icpswap/utils\";\n\nimport { Typography, Box } from \"./Mui\";\n\nexport interface ALinkProps {\n children: ReactNode;\n link: string | undefined;\n color?: string;\n textDecorationColor?: \"primary\" | \"secondary\" | \"text.secondary\" | \"text.primary\";\n fontSize?: string;\n align?: \"right\";\n text?: boolean;\n}\n\nexport function ALink({\n children,\n link,\n textDecorationColor = \"text.secondary\",\n color = \"\",\n fontSize = \"14px\",\n align,\n text = true,\n}: ALinkProps) {\n return (\n \n {text ? (\n \n {children}\n \n ) : (\n children\n )}\n \n );\n}\n\nfunction ArrowIcon() {\n return (\n \n \n \n );\n}\n\nexport interface TextButtonProps {\n children: ReactNode;\n onClick?: () => void;\n disabled?: boolean;\n link?: string;\n to?: string;\n sx?: any;\n arrow?: boolean;\n color?: \"primary\" | \"white\" | \"secondary\";\n textDecoration?: \"underline\" | \"none\";\n}\n\nexport function TextButton({\n children,\n onClick,\n disabled,\n link,\n to,\n sx,\n arrow,\n color = \"secondary\",\n textDecoration = \"none\",\n}: TextButtonProps) {\n const history = useHistory();\n\n const handleClick = () => {\n if (link) {\n mockALinkAndOpen(link, \"text-button-open-new-window\");\n return;\n }\n\n if (to) {\n history.push(to);\n return;\n }\n\n if (onClick) onClick();\n };\n\n return (\n {\n if (disabled) return;\n handleClick();\n }}\n >\n {children}\n\n {arrow && (\n \n \n \n )}\n \n );\n}\n","import { ReactNode, ReactElement } from \"react\";\nimport { HelpCircle } from \"react-feather\";\n\nimport { Typography, Tooltip as MuiToolTip } from \"./Mui\";\n\nexport interface TooltipProps {\n background?: string;\n tips: ReactNode;\n iconSize?: string;\n iconColor?: string;\n maxWidth?: string;\n children?: ReactElement;\n}\n\nexport function Tooltip({\n tips,\n background,\n maxWidth,\n iconSize = \"16px\",\n children,\n iconColor = \"#8492C4\",\n}: TooltipProps) {\n return (\n \n {tips}\n \n }\n arrow\n >\n {children || }\n \n );\n}\n","import React from \"react\";\n\nimport { Typography, TypographyProps } from \"../Mui\";\n\nexport interface SmallButtonProps {\n children: React.ReactNode;\n onClick: TypographyProps[\"onClick\"];\n background?: string;\n color?: string;\n fontWeight?: number;\n}\n\nexport function SmallButton({ children, onClick, background, color, fontWeight }: SmallButtonProps) {\n return (\n \n {children}\n \n );\n}\n","import { TypographyProps } from \"../Mui\";\nimport { SmallButton } from \"./SmallButton\";\n\nexport interface MaxButtonProps {\n onClick: TypographyProps[\"onClick\"];\n background?: string;\n color?: string;\n}\n\nexport function MaxButton({ onClick, background, color }: MaxButtonProps) {\n return (\n \n MAX\n \n );\n}\n","import { ClickAwayListener } from \"@mui/base\";\nimport { ReactNode } from \"react\";\n\nimport { useTheme, Box, Popper, makeStyles } from \"../Mui\";\n\nconst useStyles = makeStyles(() => {\n return {\n popper: {\n zIndex: 1101,\n },\n };\n});\n\nexport interface MenuWrapperProps {\n open: boolean;\n onClickAway: () => void;\n anchor: any;\n placement?:\n | \"top-start\"\n | \"top-end\"\n | \"bottom-start\"\n | \"bottom-end\"\n | \"right-start\"\n | \"right-end\"\n | \"left-start\"\n | \"left-end\";\n children: ReactNode;\n border?: string;\n padding?: string;\n menuWidth?: string;\n}\n\nexport function MenuWrapper({\n open,\n menuWidth,\n onClickAway,\n border,\n padding,\n anchor,\n placement,\n children,\n}: MenuWrapperProps) {\n const classes = useStyles();\n const theme = useTheme();\n\n return (\n \n \n \n {children}\n \n \n \n );\n}\n","export function availableArgsNull(value: T | null | undefined): [T] | [] {\n return value ? [value] : [];\n}\n","export function enumToString(type: any): string {\n if (typeof type === \"string\") return type;\n\n if (typeof type === \"object\") {\n if (type) {\n return Object.keys(type)[0];\n }\n }\n\n return type as string;\n}\n","import { principalToAccount } from \"./principalToAccount\";\n\nexport function explorerLink(address: string) {\n if (address.length > 27) {\n const account = principalToAccount(address);\n return `https://dashboard.internetcomputer.org/account/${account}`;\n }\n\n return `https://dashboard.internetcomputer.org/canister/${address}`;\n}\n","import { type NumberType } from \"@icpswap/types\";\nimport BigNumber from \"bignumber.js\";\nimport { parseTokenAmount } from \"./tokenAmount\";\nimport { Principal } from \"@dfinity/principal\";\n\nexport function transactionsTypeFormat(type: any): string {\n if (typeof type === \"string\") return type;\n if (typeof type === \"object\") {\n if (type) {\n return Object.keys(type)[0];\n }\n }\n return type;\n}\n\nexport function openBase64ImageInNewWindow(base64String: string) {\n var image = new Image();\n image.src = base64String;\n\n var win = window.open(\"\");\n win?.document.write(image.outerHTML);\n}\n\nexport function cycleValueFormat(value: NumberType, noUnit?: boolean): string {\n if (value === 0 || !value) return noUnit ? `0` : `0 T`;\n\n return `${new BigNumber(parseTokenAmount(value, 12).toFixed(4)).toFormat()}${\n noUnit ? \"\" : \" T\"\n }`;\n}\n\nexport type User = { principal: Principal } | { address: string };\n\nexport function isPrincipalUser(user: User): user is { principal: Principal } {\n if (user.hasOwnProperty(\"principal\")) return true;\n return false;\n}\n\nexport function isAddressUser(user: User): user is { address: string } {\n if (user.hasOwnProperty(\"address\")) return true;\n return false;\n}\n\nexport function stringToArrayBuffer(string: string): Uint8Array {\n return new TextEncoder().encode(string);\n}\n\nexport function arrayBufferToString(arrayBuffer: Uint8Array): string {\n return new TextDecoder(\"utf-8\").decode(arrayBuffer);\n}\n\nexport function arrayBufferToHex(arrayBuffer: Uint8Array) {\n return Array.from([...arrayBuffer], function (byte) {\n return (\"0\" + (byte & 0xff).toString(16)).slice(-2);\n }).join(\"\");\n}\n\nexport function arrayBufferFromHex(hex: string) {\n if (hex.substr(0, 2) === \"0x\") hex = hex.substr(2);\n for (var bytes: number[] = [], c = 0; c < hex.length; c += 2)\n bytes.push(parseInt(hex.substr(c, 2), 16));\n return Uint8Array.from(bytes);\n}\n\nexport function valueofUser(user: User) {\n if (isPrincipalUser(user)) {\n return user.principal;\n } else {\n return user.address;\n }\n}\n\nexport function splitArr(arr: T[], length: number) {\n const total_length = arr.length;\n\n if (length >= total_length) {\n return [arr];\n }\n\n const resultLength = Math.ceil(total_length / length);\n let result: Array = [];\n\n for (let i = 0; i < resultLength; i++) {\n result.push(arr.slice(i * length, i * length + length));\n }\n\n return result;\n}\n","import { SubAccount } from \"@dfinity/ledger-icp\";\n\n// TODO\nexport function isOkSubAccount(\n sub: SubAccount | Error | undefined\n): sub is SubAccount | undefined {\n if (sub && sub instanceof Error) return false;\n return true;\n}\n\nexport function isSubAccount(sub: any): sub is SubAccount {\n if (sub && sub instanceof SubAccount) return true;\n return false;\n}\n","export function isAvailablePageArgs(offset: number, limit: number): boolean {\n return (!!offset || offset === 0) && !!limit;\n}\n","export function isBigIntMemo(\n memo: bigint | number[] | undefined\n): memo is bigint {\n if (typeof memo === \"bigint\") return true;\n return false;\n}\n","/** Is null or undefined */\nexport function isNullArgs(argument: T | undefined | null): argument is undefined | null {\n return argument === null || argument === undefined;\n}\n\n/** Not null and not undefined */\nexport function nonNullArgs(argument: T | undefined | null): argument is T {\n return !isNullArgs(argument);\n}\n","import { Principal } from \"@dfinity/principal\";\n\nexport function isPrincipal(principal: any): principal is Principal {\n return !!principal && principal._isPrincipal;\n}\n","import { Principal } from \"@dfinity/principal\";\n\nexport function isValidPrincipal(principal: string): boolean {\n try {\n return principal === Principal.fromText(principal).toText();\n } catch (e) {\n return false;\n }\n}\n","export function mockALinkAndOpen(url: string, id: string): void {\n let a = document.createElement(\"a\");\n a.setAttribute(\"href\", url);\n a.setAttribute(\"target\", \"_blank\");\n a.setAttribute(\"id\", id);\n if (!document.getElementById(id)) {\n document.body.appendChild(a);\n }\n a.click();\n}\n","import numbro from \"numbro\";\n\nimport { BigNumber } from \"./bignumber\";\nimport { toSignificant, toSignificantWithGroupSeparator } from \"./toSignificant\";\nimport { nonNullArgs } from \"./isNullArgs\";\n\n// using a currency library here in case we want to add more in future\nexport const formatDollarAmount = (num: number | string | undefined, digits = 3, ab?: number) => {\n const _num = num;\n if (_num === 0 || _num === \"0\") return \"$0.00\";\n if (!_num) return \"-\";\n\n if (new BigNumber(_num).isLessThan(0.01)) {\n if (nonNullArgs(ab) && new BigNumber(_num).isLessThan(ab)) return `<$${ab}`;\n return `$${toSignificant(_num, digits)}`;\n }\n\n if (new BigNumber(_num).isLessThan(1)) {\n return `$${toSignificant(_num, digits)}`;\n }\n\n return numbro(_num).formatCurrency({\n average: true,\n mantissa: Number(_num) > 1000 ? 2 : digits,\n abbreviations: {\n million: \"M\",\n billion: \"B\",\n },\n });\n};\n\n// using a currency library here in case we want to add more in future\nexport const formatDollarTokenPrice = ({\n num,\n digits = 3,\n ab,\n}: {\n num: number | string | undefined;\n digits?: number;\n ab?: number;\n}) => {\n const _num = num;\n if (_num === 0 || _num === \"0\") return \"$0.00\";\n if (!_num) return \"-\";\n\n if (nonNullArgs(ab) && new BigNumber(_num).isLessThan(ab)) {\n return `<$${ab}`;\n }\n\n if (new BigNumber(_num).isLessThan(1)) {\n return `$${toSignificant(_num, digits)}`;\n }\n\n return `$${new BigNumber(new BigNumber(_num).toFixed(2)).toFormat()}`;\n};\n\n// using a currency library here in case we want to add more in future\nexport const formatAmount = (num: number | string | undefined, digits = 2) => {\n if (num === 0 || num === \"0\") return \"0\";\n\n if (!num) return \"-\";\n\n if (new BigNumber(num).isLessThan(0.0001)) {\n return \"<0.0001\";\n }\n\n if (new BigNumber(num).isLessThan(0.001)) {\n return toSignificantWithGroupSeparator(num, 4);\n }\n\n return numbro(num).format({\n average: true,\n mantissa: Number(num) > 1000 ? 2 : digits,\n abbreviations: {\n million: \"M\",\n billion: \"B\",\n },\n });\n};\n\nexport function percentToNum(val: string) {\n return new BigNumber(val.replace(\"%\", \"\")).dividedBy(100).toNumber();\n}\n\nexport function numToPercent(num: string | number | BigNumber, digits?: number) {\n return digits || digits === 0\n ? `${new BigNumber(num).multipliedBy(100).toFixed(digits)}%`\n : `${new BigNumber(num).multipliedBy(100).toString()}%`;\n}\n","import BigNumber from \"bignumber.js\";\n\nexport function numberToString(num: number | bigint | BigNumber): string {\n if (num === 0 || num === BigInt(0)) return \"0\";\n if (num)\n return new BigNumber(typeof num === \"bigint\" ? String(num) : num).toFormat({\n groupSeparator: \"\",\n });\n return \"\";\n}\n\n/** Only Integer number */\nexport function bigNumberToString(num: BigNumber): string {\n return num.toFormat({\n groupSeparator: \"\",\n });\n}\n","import invariant from \"tiny-invariant\";\n\nexport function pageArgsFormat(\n pageNum: number,\n pageSize: number\n): [number, number] {\n invariant(pageNum > 0, \"Invalid pageNum\");\n invariant(pageSize > 0, \"Invalid pageSize\");\n\n const pageStart = (pageNum - 1) * pageSize;\n const pageEnd = pageStart + pageSize;\n return [pageStart, pageEnd];\n}\n","import { AccountIdentifier, SubAccount } from \"@dfinity/ledger-icp\";\nimport { Principal } from \"@dfinity/principal\";\nimport { isSubAccount } from \"./ic\";\nimport { isValidPrincipal } from \"./isValidPrincipal\";\n\nexport function principalToAccount(\n principal: string,\n subAccount?: SubAccount | string\n): string {\n if (!principal) return principal;\n\n if (\n subAccount &&\n !isSubAccount(subAccount) &&\n !isValidPrincipal(subAccount)\n ) {\n throw Error(\"Wrong sub account\");\n }\n\n const sub = subAccount\n ? isSubAccount(subAccount)\n ? subAccount\n : isValidPrincipal(subAccount)\n ? SubAccount.fromPrincipal(Principal.fromText(subAccount))\n : undefined\n : undefined;\n\n return AccountIdentifier.fromPrincipal({\n principal: Principal.fromText(principal),\n subAccount: sub,\n }).toHex();\n}\n","import { StatusResult, ResultStatus } from \"@icpswap/types\";\nimport isObject from \"lodash/isObject\";\n\nexport function isResultKey(key: string) {\n return isResultErrKey(key) || isResultOkKey(key);\n}\n\nexport function isResultErrKey(key: string) {\n return key === ResultStatus.ERROR || key === \"Err\";\n}\n\nexport function isResultOkKey(key: string) {\n return key === ResultStatus.OK || key === \"Ok\";\n}\n\nexport function resultFormat(result: any): StatusResult {\n if (result === null || result === undefined) {\n return {\n status: ResultStatus.ERROR,\n message: \"\",\n data: undefined,\n };\n }\n\n const key = Object.keys(result);\n\n if (\n result &&\n isObject(result as object) &&\n key &&\n key[0] &&\n isResultKey(key[0])\n ) {\n let message = \"\";\n\n if (isResultErrKey(key[0]) && isObject(result[key[0]])) {\n const messageKey = Object.keys(result[key[0]])[0];\n const value = result[key[0]][messageKey];\n\n // TODO: for token\n if (messageKey === \"Other\") {\n message = value;\n } else {\n if (typeof value === \"object\") {\n message = `${messageKey}: ${JSON.stringify(value).replace(\n /\\\"/g,\n \"\"\n )}`;\n } else {\n message = `${messageKey}: ${value}`;\n }\n }\n } else if (typeof result[key[0]] === \"string\") {\n message = result[key[0]];\n }\n\n return {\n status: isResultErrKey(key[0]) ? ResultStatus.ERROR : ResultStatus.OK,\n data: isResultOkKey(key[0]) ? (result[key[0]] as T) : undefined,\n message,\n };\n }\n\n return {\n status: ResultStatus.OK,\n data: result as T,\n message: \"\",\n };\n}\n","export function shorten(str = \"\", length = 4) {\n if (str.length <= length * 2) return `${str.slice(0, length)}...`;\n return `${str.slice(0, length)}...${str.slice(str.length - length)}`;\n}\n\nexport function shortenString(str: string, limit?: number): string {\n if (!str) return str;\n if (limit) {\n return str.length > limit ? `${str.slice(0, limit).trim()}...` : str;\n }\n return shorten(str);\n}\n","import _Decimal from \"decimal.js-light\";\nimport _Big from \"big.js\";\nimport toFormat from \"toformat\";\n\nenum Rounding {\n ROUND_DOWN,\n ROUND_HALF_UP,\n ROUND_UP,\n}\n\nconst Decimal = toFormat(_Decimal);\n\nconst toSignificantRounding = {\n [Rounding.ROUND_DOWN]: Decimal.ROUND_DOWN,\n [Rounding.ROUND_HALF_UP]: Decimal.ROUND_HALF_UP,\n [Rounding.ROUND_UP]: Decimal.ROUND_UP,\n};\n\nexport function toSignificant(\n num: number | string,\n significantDigits = 6,\n format: object = { groupSeparator: \"\" },\n rounding: Rounding = Rounding.ROUND_DOWN,\n): string {\n Decimal.set({\n precision: significantDigits + 1,\n rounding: toSignificantRounding[rounding],\n });\n\n const quotient = new Decimal(num).toSignificantDigits(significantDigits);\n return quotient.toFormat(quotient.decimalPlaces(), format);\n}\n\nexport function toSignificantWithGroupSeparator(num: number | string, significantDigits = 6): string {\n Decimal.set({\n precision: significantDigits + 1,\n rounding: toSignificantRounding[Rounding.ROUND_DOWN],\n });\n\n const quotient = new Decimal(num).toSignificantDigits(significantDigits);\n return quotient.toFormat(quotient.decimalPlaces(), { groupSeparator: \",\" });\n}\n","import BigNumber from \"bignumber.js\";\nimport type { NumberType } from \"@icpswap/types\";\n\nexport function formatTokenAmount(\n amount: NumberType | null | undefined,\n decimals: number | bigint = 8\n): BigNumber {\n let _amount = amount;\n let _decimals = decimals;\n\n if (_amount !== 0 && !_amount) return new BigNumber(0);\n if (typeof _amount === \"bigint\") _amount = Number(_amount);\n if (typeof decimals === \"bigint\") _decimals = Number(_decimals);\n if (Number.isNaN(Number(amount))) return new BigNumber(_amount);\n return new BigNumber(_amount).multipliedBy(10 ** Number(_decimals));\n}\n\nexport function parseTokenAmount(\n amount: NumberType | null | undefined,\n decimals: number | bigint = 8\n): BigNumber {\n if (amount !== 0 && !amount) return new BigNumber(0);\n if (typeof amount === \"bigint\") amount = Number(amount);\n if (typeof decimals === \"bigint\") decimals = Number(decimals);\n if (Number.isNaN(Number(amount))) return new BigNumber(String(amount));\n return new BigNumber(String(amount)).dividedBy(10 ** Number(decimals));\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","__webpack_require__.amdO = {};","var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + {\"10\":\"07f579c0\",\"17\":\"9fee19eb\",\"58\":\"d3fa5cc9\",\"433\":\"73e7d12f\",\"570\":\"0d4118f5\",\"594\":\"2690bad1\",\"770\":\"edf60ec6\",\"1126\":\"f0cfd6cb\",\"1514\":\"3a2ece0c\",\"1661\":\"7e3265d0\",\"1833\":\"bbd19596\",\"1889\":\"d8cb945b\",\"2084\":\"f72ac661\",\"2114\":\"b229b90f\",\"2288\":\"e7059b6a\",\"2495\":\"7bbc56d8\",\"2603\":\"03a2ab69\",\"2627\":\"75046134\",\"2873\":\"131771e8\",\"3012\":\"708a91b8\",\"3332\":\"7eb6979c\",\"3423\":\"87e7f5ae\",\"3433\":\"bd92b0ac\",\"3512\":\"ad4e0424\",\"3774\":\"6aee1162\",\"3811\":\"55ac0bbf\",\"4259\":\"e4a59db8\",\"4270\":\"efc986c0\",\"4404\":\"05124999\",\"4413\":\"1bdf688d\",\"4558\":\"6bc1ae92\",\"4608\":\"f27b3fae\",\"4680\":\"7bb00c8b\",\"4694\":\"00dc4231\",\"4721\":\"88e4480e\",\"4958\":\"bfe38c49\",\"4982\":\"019151b0\",\"5058\":\"d75f0f07\",\"5348\":\"4bd9c0a9\",\"5472\":\"729ef79b\",\"5692\":\"acb7d74d\",\"5918\":\"d92355f4\",\"6009\":\"eed15c42\",\"6010\":\"e32fda56\",\"6053\":\"9fa16aa0\",\"6190\":\"4b8e3cba\",\"6283\":\"e8e33b50\",\"6307\":\"3f41ba50\",\"6506\":\"87e9947b\",\"6800\":\"539cca63\",\"6933\":\"6c456344\",\"6948\":\"01c53dca\",\"7348\":\"62b98e14\",\"7356\":\"5f258dda\",\"7553\":\"8a47bea6\",\"7717\":\"67db8e05\",\"7772\":\"504ff1bd\",\"7801\":\"aa003001\",\"7868\":\"90c1acb9\",\"7953\":\"f41b1de1\",\"8067\":\"69513146\",\"8087\":\"42bf2a82\",\"8132\":\"2e050cda\",\"8256\":\"fa983285\",\"8316\":\"81551a0a\",\"8432\":\"fa12bb4f\",\"8923\":\"0f660f40\",\"8953\":\"3722541a\",\"8970\":\"ff4785fb\",\"8984\":\"c01c425a\",\"9137\":\"02ba3959\",\"9296\":\"2bc50d13\",\"9363\":\"c4ddc21c\",\"9529\":\"1071498a\",\"9658\":\"b643f99e\",\"9704\":\"959a8f89\",\"9747\":\"3a1cd4db\"}[chunkId] + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/css/\" + chunkId + \".\" + {\"570\":\"4832a2bb\",\"4558\":\"4832a2bb\",\"8256\":\"4832a2bb\"}[chunkId] + \".chunk.css\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.hmd = (module) => {\n\tmodule = Object.create(module);\n\tif (!module.children) module.children = [];\n\tObject.defineProperty(module, 'exports', {\n\t\tenumerable: true,\n\t\tset: () => {\n\t\t\tthrow new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);\n\t\t}\n\t});\n\treturn module;\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"@icpswap/swap:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.p = \"/\";","(() => {\n if (typeof __webpack_require__ !== 'undefined') {\n var oldGetScript = __webpack_require__.u;\n var oldLoadScript = __webpack_require__.e;\n var queryMap = {};\n var countMap = {};\n var getRetryDelay = function (retryAttempt) {\n return 2 ** (retryAttempt - 1) * 500;\n };\n __webpack_require__.u = function (chunkId) {\n var result = oldGetScript(chunkId);\n return (\n result +\n (queryMap.hasOwnProperty(chunkId) ? '?' + queryMap[chunkId] : '')\n );\n };\n __webpack_require__.e = function (chunkId) {\n var result = oldLoadScript(chunkId);\n return result.catch(function (error) {\n var retries = countMap.hasOwnProperty(chunkId) ? countMap[chunkId] : 3;\n if (retries < 1) {\n var realSrc = oldGetScript(chunkId);\n error.message =\n 'Loading chunk ' +\n chunkId +\n ' failed after 3 retries.\\n(' +\n realSrc +\n ')';\n error.request = realSrc;\n throw error;\n }\n return new Promise(function (resolve) {\n var retryAttempt = 3 - retries + 1;\n setTimeout(function () {\n var retryAttemptString = '&retry-attempt=' + retryAttempt;\n var cacheBust = (function () {\n return 'cache-bust=' + Date.now();\n })();\n +retryAttemptString;\n queryMap[chunkId] = cacheBust;\n countMap[chunkId] = retries - 1;\n resolve(__webpack_require__.e(chunkId));\n }, getRetryDelay(retryAttempt));\n });\n });\n };\n }\n})();\n","if (typeof document === \"undefined\") return;\nvar createStylesheet = (chunkId, fullhref, oldTag, resolve, reject) => {\n\tvar linkTag = document.createElement(\"link\");\n\n\tlinkTag.rel = \"stylesheet\";\n\tlinkTag.type = \"text/css\";\n\tif (__webpack_require__.nc) {\n\t\tlinkTag.nonce = __webpack_require__.nc;\n\t}\n\tvar onLinkComplete = (event) => {\n\t\t// avoid mem leaks.\n\t\tlinkTag.onerror = linkTag.onload = null;\n\t\tif (event.type === 'load') {\n\t\t\tresolve();\n\t\t} else {\n\t\t\tvar errorType = event && event.type;\n\t\t\tvar realHref = event && event.target && event.target.href || fullhref;\n\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + errorType + \": \" + realHref + \")\");\n\t\t\terr.name = \"ChunkLoadError\";\n\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n\t\t\terr.type = errorType;\n\t\t\terr.request = realHref;\n\t\t\tif (linkTag.parentNode) linkTag.parentNode.removeChild(linkTag)\n\t\t\treject(err);\n\t\t}\n\t}\n\tlinkTag.onerror = linkTag.onload = onLinkComplete;\n\tlinkTag.href = fullhref;\n\n\n\tif (oldTag) {\n\t\toldTag.parentNode.insertBefore(linkTag, oldTag.nextSibling);\n\t} else {\n\t\tdocument.head.appendChild(linkTag);\n\t}\n\treturn linkTag;\n};\nvar findStylesheet = (href, fullhref) => {\n\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n\tfor(var i = 0; i < existingLinkTags.length; i++) {\n\t\tvar tag = existingLinkTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return tag;\n\t}\n\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n\tfor(var i = 0; i < existingStyleTags.length; i++) {\n\t\tvar tag = existingStyleTags[i];\n\t\tvar dataHref = tag.getAttribute(\"data-href\");\n\t\tif(dataHref === href || dataHref === fullhref) return tag;\n\t}\n};\nvar loadStylesheet = (chunkId) => {\n\treturn new Promise((resolve, reject) => {\n\t\tvar href = __webpack_require__.miniCssF(chunkId);\n\t\tvar fullhref = __webpack_require__.p + href;\n\t\tif(findStylesheet(href, fullhref)) return resolve();\n\t\tcreateStylesheet(chunkId, fullhref, null, resolve, reject);\n\t});\n}\n// object to store loaded CSS chunks\nvar installedCssChunks = {\n\t8792: 0\n};\n\n__webpack_require__.f.miniCss = (chunkId, promises) => {\n\tvar cssChunks = {\"570\":1,\"4558\":1,\"8256\":1};\n\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n\t\tpromises.push(installedCssChunks[chunkId] = loadStylesheet(chunkId).then(() => {\n\t\t\tinstalledCssChunks[chunkId] = 0;\n\t\t}, (e) => {\n\t\t\tdelete installedCssChunks[chunkId];\n\t\t\tthrow e;\n\t\t}));\n\t}\n};\n\n// no hmr\n\n// no prefetching\n\n// no preloaded","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t8792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunk_icpswap_swap\"] = self[\"webpackChunk_icpswap_swap\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [6781,6639,1285,3929,8339], () => (__webpack_require__(63609)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["map","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","e","Error","code","ids","id","t","keys","Object","module","exports","idlFactory","_ref","IDL","Token","Record","address","Text","standard","CreatePoolArgs","fee","Nat","sqrtPriceX96","token0","token1","PoolData","key","tickSpacing","Int","canisterId","Principal","Variant","CommonError","Null","InternalError","UnsupportedToken","InsufficientFunds","Result_1","ok","err","CycleInfo","balance","available","Result_2","GetPoolArgs","Result","Vec","Service","createPool","Func","deletePool","getAccessControlState","owners","clients","getAvailabilityState","whiteList","Bool","getCycleInfo","getPool","getPools","getRemovedPools","removePool","setAvailable","setClients","setOwnerToPool","setOwners","setWhiteList","swapFactory_update_call","actor","create","actorName","ActorName","SwapFactory","SwapFactoryInterfaceFactory_update_call","DialogCloseIcon","props","_jsxs","SvgIcon","viewBox","children","_jsx","opacity","d","SmallButton","onClick","background","theme","useTheme","Typography","sx","padding","cursor","borderRadius","backgroundColor","colors","secondaryMain","color","fontSize","MinButton","Trans","useStyles","makeStyles","copy","display","forwardRef","ref","content","hide","classes","openTips","useTips","copyToClipboard","TIP_SUCCESS","useImperativeHandle","Box","className","TokenItem","onUpdateTokenAdditional","searchWord","showBalance","onTokenHide","isActive","isDisabled","hidden","principal","useAccountPrincipal","matchDownSM","useMediaQuery","breakpoints","down","getBalanceId","useMemo","result","tokenInfo","useTokenInfo","loading","useTokenBalance","interfacePrice","useUSDPriceById","taggedTokens","updateTaggedTokens","deleteTaggedTokens","useTaggedTokenManager","tokenBalanceAmount","undefined","toSignificantWithGroupSeparator","parseTokenAmount","decimals","toString","useEffect","isTagged","includes","isHidden","isValidPrincipal","symbol","toLocaleLowerCase","name","height","gridTemplateColumns","gap","alignItems","palette","level4","handleItemClick","concat","Grid","container","TokenImage","logo","size","tokenId","item","xs","overflow","width","whiteSpace","textOverflow","fontWeight","margin","TokenStandardLabel","standardType","justifyContent","DotLoading","align","maxWidth","formatDollarAmount","BigNumber","multipliedBy","PlusCircle","themeOption","textSecondary","event","stopPropagation","BASE_TOKENS","ICP","ICS","ckUSDC","ckBTC","ckETH","BOB","BaseToken","token","onTokenClick","handleClick","useCallback","Flex","border","level3","BaseTokens","_ref2","wrap","base_token","wrapper","Selector","open","onChange","onClose","disabledCurrencyIds","activeCurrencyIds","isDark","isDarkTheme","searchKeyword","setSearchKeyword","useState","importTokenCanceled","setImportTokenCanceled","hiddenCanisterIds","setHiddenCanisterIds","snsAllTokensInfo","useFetchSnsAllTokensInfo","globalTokenList","useGlobalTokenList","yourTokens","Set","DEFAULT_DISPLAYED_TOKENS","snsTokens","noneSnsTokens","filter","forEach","snsTokenInfo","find","canister_ids","ledger_canister_id","root_canister_id","push","handleTokenClick","handleSearchToken","value","debouncedSearch","useDebouncedChangeHandler","showImportToken","handleTokenHidden","index","indexOf","prevState","newCanisterIds","splice","allTokenCanisterIds","noData","length","_Fragment","SwapModal","title","i18n","_","dialogProps","level2","lightGray200","position","lineHeight","FilledTextField","contained","level1","placeholderSize","fullWidth","placeholder","InputProps","startAdornment","InputAdornment","SearchIcon","maxLength","NoData","ImportToken","onCancel","mt","AvatarImage","_props$sx","Avatar","SnsIcon","assign","x","y","xlinkHref","sns","src","top","left","useSNSTokenRootId","UITokenImage","Image","ConnectorIcon","Connector","IC","ME","ICPSwap","INFINITY","Metamask","NFID","PLUG","STOIC","ConnectorImage","connector","useConnectorType","button","ImportTokenTip","onOk","updateTokenStandard","useUpdateTokenStandard","noStandard","setNoStandard","setLoading","handleImport","async","getTokenStandard","isNullArgs","registerTokens","textAlign","CircularProgress","WarningIcon","fill","xmlns","clipPath","transform","ConfirmImport","_token$logo","onImportSuccessfully","riskWarning","setRiskWarning","openSuccessTip","useSuccessTip","useToken","error","Modal","marginRight","vertical","component","TextButton","link","INFO_URL","Checkbox","checked","target","Button","variant","disabled","handleConfirm","step","setStep","onNo","FilledTextFieldLabel","label","required","labelSize","Value","_ref3","_menus$filter$0$label","_menus$filter$","select","menus","helperText","menu","marginTop","_ref4","_props$fontSize","_props$fontSize2","_props$placeholderSiz","_props$placeholderSiz2","fullHeight","CustomNoData","menuDisabled","multiline","onFocus","inputPadding","inputBox","normal","border0","minHeight","text","primary","borderColor","anchorEl","setAnchorEl","inputRef","useRef","outerBoxRef","menuWidth","setMenuWidth","focus","_inputRef$current2","current","_outerBoxRef$current","clientWidth","_inputRef$current","currentTarget","flex","justify","TextField","_ref6","disableUnderline","autoComplete","spellCheck","KeyboardArrowDownIcon","Boolean","Menu","handleClose","anchorOrigin","horizontal","PaperProps","style","MenuItem","_ref5","handleMenuItemClick","loadingContainer","paddingTop","mask","ListLoading","maskBackground","alignContent","zIndex","LoadingImage","alt","circularSize","maskBorderRadius","Maintenance","flexDirection","MaintenanceSVG","wordBreak","useMuiTheme","ReclaimTips","message","onReclaimClick","tipKey","poolId","history","useHistory","closeStep","useCloseStep","to","msg","replace","isTokenHide","search","ledger_id","TokenMenuItem","panel","generateLogoUrl","SelectToken","onTokenChange","hasSearch","filled","showBackground","showClean","panelPadding","defaultPanel","setValue","setSearch","allTokensOfSwap","useAllTokensOfSwap","additional","JSON","stringify","Select","minMenuWidth","menuMaxHeight","onSearch","menuFilter","parse","fromText","__principal__","minWidth","maxHeight","StepViewButton","useStepManager","ButtonConnector","manager","useWalletConnectorManager","isConnected","useConnectorStateConnected","startIcon","dot","animationDuration","animationIterationCount","dot1","animationName","dot2","dot3","root","spacing","backdrop","FullscreenLoading","maskClosable","onMaskClick","dispatch","useAppDispatch","setOpen","loadingInitial","useAppSelector","state","Backdrop","closeLoading","Wrapper","ViewMore","secondary","AddIcon","fillRule","clipRule","ArrowIcon","SelectedToken","selectedTokenIds","setToken","selectorOpen","setSelectorOpen","handleSelectToken","CurrencySelector","FindPositionsModal","openTip","setError","tokenA","setTokenA","tokenB","setTokenB","ele","updateStoreUserPositionPool","useUpdateUserPositionPools","poolData","positionIds","getUserPositionIds","updateUserPositionPoolId","TextFieldNumberComponent","other","NumericFormat","type","inputMode","getInputRef","onValueChange","values","NumberTextField","_textFiledProps$Input","numericProps","textFiledProps","slotProps","input","inputComponent","inputProps","decimalScale","allowNegative","thousandSeparator","NumberFilledTextField","_textFieldProps$Input","_numericProps$allowNe","_numericProps$thousan","textFieldProps","TabPanel","tabs","active","fontNormal","activeWithSearch","bg0","bg1","location","useLocation","activeButtonKey","setActiveButtonKey","tab","path","pathname","darkLevel1","mockALinkAndOpen","loadPage","textPrimary","darkLevel3","CollapseText","description","AlertCircle","handleToggle","Collapse","appear","in","trackBorder","customization","mode","darkTextSecondary","trackActiveBorder","darkSecondaryMain","switchBase","dark","light","lightPrimaryMain","thumb","boxShadow","track","transition","transitions","focusVisible","_Switch","Switch","focusVisibleClassName","disableRipple","textDecoration","userSelect","Link","ReactLink","href","rel","primaryMain","titleContainer","detailItem","marginBottom","closeButton","right","closeButton1","confirmText","cancelText","onConfirm","showConfirm","showCancel","showClose","confirmDisabled","contentPadding","matchDownMD","down760","Dialog","isElement","DialogTitle","DialogContent","_props$dialogProps","NoDataIcon","noDataContainer","React","capitalise","charAt","toUpperCase","slice","originKeyExtractor","anchor","isDefined","focusable","flexShrink","CheckIcon","ErrorIcon","InfoIcon","default","success","warning","info","TransitionStatus","Transition","constructor","super","initialStatus","this","appearStatus","EXITED","ENTERING","ENTERED","unmountOnExit","mountOnEnter","UNMOUNTED","status","nextCallback","getDerivedStateFromProps","nextIn","componentDidMount","updateStatus","componentDidUpdate","prevProps","nextStatus","EXITING","componentWillUnmount","cancelNextCallback","getTimeouts","timeout","enter","exit","mounting","arguments","performEnter","performExit","setState","node","nodeRef","isAppearing","timeouts","onEnter","safeSetState","onEntering","onTransitionEnd","onEntered","onExit","onExiting","onExited","cancel","nextState","callback","setNextCallback","handler","doesNotHaveTimeoutOrListener","addEndListener","setTimeout","render","_id","_in","_mountOnEnter","_unmountOnExit","_appear","_enter","_exit","_timeout","_addEndListener","_onEnter","_onEntering","_onEntered","_onExit","_onExiting","_onExited","_nodeRef","childProps","noop","defaultProps","setRef","useForkRef","refA","refB","refValue","getTransitionProps","_style$transitionDura","duration","transitionDuration","easing","transitionTimingFunction","delay","transitionDelay","defaultEasing","easeInOut","easeOut","easeIn","sharp","formatMs","milliseconds","Math","round","createTransition","options","Array","isArray","animatedProp","formattedDuration","formattedDelay","join","ownerWindow","doc","ownerDocument","document","defaultView","window","setTranslateValue","direction","rect","getBoundingClientRect","containerWindow","fakeTransform","computedStyle","getComputedStyle","getPropertyValue","offsetX","offsetY","transformValues","split","parseInt","innerWidth","innerHeight","getTranslateValue","webkitTransform","Slide","inProp","handleRefIntermediary","handleRef","updatePosition","handleResize","func","wait","debounced","_len","args","_key","clearTimeout","later","apply","clear","debounce","addEventListener","removeEventListener","TransitionComponent","handleEnter","snackId","scrollTop","reflow","transitionProps","webkitTransition","handleExit","handleExited","visibility","defaults","maxSnack","persist","hideIconVariant","disableWindowBlurListener","autoHideDuration","iconVariant","defaultIconVariants","merge","getAutoHideDuration","optionsDuration","propsDuration","isNumberOrNull","numberish","getTransitionDuration","is","types","some","getAutoHeightDuration","constant","ComponentClasses","entered","collapsedSize","timer","wrapperRef","autoTransitionDuration","getWrapperSize","clientHeight","handleEntered","wrapperSize","duration2","next","clsx","pointerEvents","bottom","toSnackbarAnchorOrigin","createChainedFunction","funcs","reduce","acc","argums","useEnhancedEffect","useEventCallback","fn","SnackbarProps","timerAutoHide","setAutoHideTimer","autoHideDurationParam","handlePause","handleResume","ClickAwayListener","onClickAway","onMouseEnter","onMouseLeave","flexWrap","flexGrow","letterSpacing","paddingRight","iconWrapper","messageContent","extraContent","paddingLeft","action","marginLeft","close","line","successDark","danger","MaterialDesignContent","forwardedRef","componentOrFunctionAction","tick","setTick","icon","isLoading","SnackbarContent","role","memo","wrappedRoot","SnackbarItem","styles","collapsed","setCollapsed","snack","handleExitedScreen","col","allClasses","Component","containerClasses","containerRoot","containerAnchorOriginTopCenter","containerAnchorOriginBottomCenter","containerAnchorOriginTopRight","containerAnchorOriginBottomRight","containerAnchorOriginTopLeft","containerAnchorOriginBottomLeft","obj","keepSnackbarClassKeys","TransitionProps","componentOrFunctionContent","otherSnack","callbacks","cbName","Snackbar","requestClose","indents","dense","collapseWrapper","boxSizing","xsWidthMargin","rootDense","center","SnackbarContainer","combinedClassname","SnackbarProvider","_this","enqueueSnackbar","opts","preventDuplicate","hasSpecifiedKey","Date","getTime","random","merger","compareFunction","inQueue","queue","findIndex","inView","snacks","handleDisplaySnack","handleDismissOldest","processQueue","popped","ignore","handleEnteredSnack","handleCloseSnack","reason","shouldCloseAll","closeSnackbar","toBeClosed","handleExitedSnack","newState","contextValue","domRoot","Components","categ","category","existingOfCategory","snackbars","origin","nomineeSnack","SnackbarContext","Provider","createPortal","useContext","PageSizeList","count","onPageChange","onPageSizeChange","defaultPageSize","flexEnd","showPageSize","pageNum","setPageNum","pageSize","setPageSize","MainCard","level","PaginationComponent","ceil","Number","page","shape","paginationChange","ExpandMoreRoundedIcon","keepMounted","transformOrigin","pageSizeChange","StandardText","TOKEN_STANDARD","DIP20","DIP20_WICP","DIP20_XTC","EXT","ICRC1","ICRC2","StandardLabelBg","CanisterIdsJson","require","temp_canister_ids","console","canisterIds","canister","network","getCanisterId","canisterName","CANISTER_NAMES","TOKEN_CANISTER_CONTROLLER","TOKEN_SERVICE","SWAP_POSITION_MANAGER","WICP","NETWORK","FILE","NFTCanisterController","SwapNFTCanister","V3NFTCanister","V3TradeStat","NFTTrade","FileCanister","V1StakingController","SingleSmartChef","SwapStaker","VOTE","FileActor","SwapRecord","SwapGraphPool","TokenList","V3SwapFactory","V3SwapPool","V3SwapNFT","PassCodeManager","ClaimStorage","VotingFileCanister","FarmController","StakingTokenController","StakeIndex","NodeIndex","GlobalIndex","fileCanisterId","WICPCanisterId","NFTTradeTokenCanisterId","V3SwapNFTCanisterId","VotingFileCanisterId","FarmControllerId","PassCodeManagerId","Actor","setActorCanisterIds","setHost","host","ALL_CANISTER_IDS","ckBTC_ID","ckBTC_MINTER_ID","ckBTC_DASHBOARD","DISSOLVE_FEE","MINTER_ID","ChainId","MAINNET","SEPOLIA","MINTER_CANISTER_ID","chain","ckERC20LedgerDashboardLink","getMinterDashboard","EXPLORER_TX_LINK","EXPLORER_TX_LINKS","EXPLORER_ADDRESS_LINK","EXPLORER_BLOCK_LINKS","EXPLORER_MAPS","WithdrawalState","API_LINKS","LEDGER_ID","DASHBOARD","CANISTER","ETH_MINT_CONTRACTS","ckETH_MINTER_ID","ckETH_MINTER_CONTRACT","EXPLORER_BLOCK_LINK","MIN_WITHDRAW_AMOUNT","ckETHToken","ckSepoliaETH","CYCLES_MINTING_CANISTER_ID","ResultStatus","NONE_PRICE_SYMBOL","DEFAULT_PERCENT_SYMBOL","NONE_TOKEN_SYMBOL","REACT_GA_TRACKING_ID","NFT_UPLOAD_FILES","CurrencyAmountFormatDecimals","APP_URL","DAYJS_FORMAT","AnonymousPrincipal","SAFE_INTEGER_LENGTH","MAX_VALUE","SAFE_DECIMALS_LENGTH","MAX_SWAP_INPUT_LENGTH","SUPPORTED_LOCALES","DEFAULT_LOCALE","Bound","FIELD","DEFAULT_FEE","FeeAmount","LOW","MEDIUM","HIGH","BURN_FIELD","DEFAULT_SWAP_SLIPPAGE","DEFAULT_MINT_SLIPPAGE","DEFAULT_BURN_SLIPPAGE","SLIPPAGE_TOLERANCE","MAX_SLIPPAGE_TOLERANCE","getDefaultSlippageTolerance","_SLIPPAGE_TOLERANCE$f","slippageToPercent","slippage","Percent","DEFAULT_TRANSACTIONS_DEADLINE","DEFAULT_MULTIPLE_APPROVE","ZOOM_LEVEL_INITIAL_MIN_MAX","min","max","ADD_LIQUIDITY_REFRESH_KEY","INCREASE_LIQUIDITY_REFRESH_KEY","OFFICIAL_CANISTER_IDS","V2Ids","OLD_CANISTER_IDS","SOCIAL_LINKS","NFTTradeFee","MAX_NFT_MINT_SUPPLY","hostMap","LOCAL","process","isIC","SWAP_FIELD","DEFAULT_SWAP_INPUT_ID","WRAPPED_ICP","DEFAULT_SWAP_OUTPUT_ID","SWAP_REFRESH_KEY","LIQUIDITY_OWNER_REFRESH_KEY","SWAP_CHART_CURRENT_PRICE_COLOR","SWAP_CHART_RANGE_PRICE_COLOR","SWAP_CHART_RANGE_LEFT_COLOR","SWAP_CHART_RANGE_RIGHT_COLOR","SWAP_CHART_RANGE_AREA_COLOR","WRAPPED_ICP_METADATA","metadata","WRAPPED_ICP_TOKEN_INFO","transFee","BigInt","totalSupply","XTC","CAT","MOD","BoomDAO","DISPLAY_IN_WALLET_FOREVER","NO_HIDDEN_TOKENS","DEFAULT_CHAIN_ID","SUPPORTED_CHAINS","chainIdToNetwork","getExplorerAddress","minterId","getIcDashboard","COLORS","NOT_START","LIVE","FINISHED","CLOSED","DEFAULT","useStateColors","usePools","filterState","stakeTokenId","rewardTokenId","offset","limit","pools","setPools","isAvailablePageArgs","getStateValueByFilterState","FilterState","YOUR","_poolsResult$content","poolsResult","getUserStakePools","infos","all","getStakingPoolFromController","pool","stakingPool","flat","getStakePools","call","useUserUnusedTokenByPool","stakingTokenId","reload","data","setData","getTokenBalance","SubAccount","fromPrincipal","toUint8Array","getAllTokenPools","getPaginationAllData","getStakingPools","useIntervalUserPoolInfo","refresh","getStakingTokenUserInfo","useIntervalFetch","useIntervalStakingPoolInfo","forceUpdate","setForceUpdate","update","getStakingTokenPool","useInterval","useSwapApprove","openErrorTip","useErrorTip","multipleApprove","useMultipleApproveManager","amount","allowedBalance","allowance","owner","spender","multipleApproveAmount","approve","account","usePositionsValuesByInfos","allTokenInfos","useInfoAllTokens","positions","tokenIds","tokens","useTokens","poolKeys","_e$","_e$2","arg","_pools$index","positionInfos","Position","liquidity","tickLower","tickUpper","useMultiplePositions","_totalValue2","totalValue","_allTokenInfos$find","_allTokenInfos$find2","token0Amount","amount0","toExact","token1Amount","amount1","token0Price","priceUSD","token1Price","_totalValue","plus","usePositionsValueByInfos","useWithdrawPCMBalanceCallback","closeTip","__amount","tokenTransFee","loadingKey","toFormat","MessageTypes","destroyPassCode","OK","withdrawPCMBalance","_result$message","useSortedPositions","sort","feesValue","positionValue","PositionSort","Default","FeesValue","a","b","allKeys","keyA","keyB","valueA","valueB","isGreaterThan","PositionValue","getTokenInsufficient","subAccountBalance","unusedBalance","formatTokenAmount","isLessThan","isUseTransfer","useSwapPositionsMultipleFarm","farms","setPositions","prev","curr","positionId","farm","getSwapPosition","useUserPassCodes","usePassCode","useSwapTokenFeeCost","tokenBalance","tokenInsufficient","useLiquidityLocksImage","principalId","governanceId","allSnsTokensInfo","useStateSnsAllTokensInfo","governance_canister_id","useSnsTokenInfoByGovernance","useSwapWithdraw","openExternalTip","withdraw","0","useSwapWithdrawByTokenId","tokenFee","getTokenActualTransferRawAmount","rawAmount","getTokenActualDepositRawAmount","usePoolCanisterId","token0CanisterId","token1CanisterId","String","updatePoolCanisterId","usePoolCanisterIdManager","getPoolCanisterId","useSwapDeposit","useTransfer","isUseTransferByStandard","ERROR","_status","_message","deposit","depositFrom","useSwapTransfer","_principal$toString","tokenTransfer","from","subaccount","usePoolBalanceMaxSpend","subBalance","isEqualTo","CurrencyAmount","fromRawAmount","minus","useBalanceMaxSpend","__allowance","useAccountPrincipalString","allowanceCanisterId","nonNullArgs","useAllowance","innerAllowance","useAllBalanceMaxSpend","maxBalanceSpend","maxPoolBalanceSpent","currency","equals","add","PoolState","transformedKeyToKey","transformedKey","withoutVerify","transformedPoolKeys","currencyA","currencyB","feeAmount","wrapped","sortsBefore","element","poolMetadata","getSwapPoolMetadata","ticks","getPool_update_call","INVALID","LOADING","NOT_EXISTS","__token0","__token1","EXISTS","NOT_CHECK","Pool","numberToString","usePool","useTokenSwapPools","allPools","useSwapPools","useTokensHasPairWithBaseToken","tokenPools","hasPairWithBaseToken","useReclaimCallback","closeAllSteps","useCloseAllSteps","sortedInsert","items","maxSize","comparator","invariant","isFull","lo","hi","mid","pop","Route","output","_midPrice","wrappedInput","involvesToken","tokenPath","i","entries","currentInputToken","nextToken","midPrice","price","nextInput","multiply","Price","denominator","numerator","tradeComparator","inputAmount","outputAmount","equalTo","swaps","total","cur","route","lessThan","Trade","_inputAmount","inputCurrency","totalInputFromRoutes","_outputAmount","outputCurrency","totalOutputFromRoutes","executionPrice","_executionPrice","quotient","priceImpact","_priceImpact","spotOutputAmount","quote","subtract","divide","exactIn","amountIn","fromRoute","TradeType","EXACT_INPUT","exactOut","amountOut","EXACT_OUTPUT","tradeType","amounts","getOutputAmount","fromFractionalAmount","getInputAmount","routes","fromRoutes","populatedRoutes","createUncheckedTrade","constructorArguments","createUncheckedTradeWithMultipleRoutes","every","numPools","poolAddressSet","getAddress","minimumAmountOut","slippageTolerance","ZERO","slippageAdjustedAmountOut","Fraction","ONE","invert","maximumAmountIn","slippageAdjustedAmountIn","worstExecutionPrice","bestTradeExactIn","pools_1","currencyAmountIn_1","currencyOut_1","currencyAmountIn","currencyOut","maxNumResults","maxHops","currentPools","nextAmountIn","bestTrades","tokenOut","isInsufficientInputAmountError","isToken","poolsExcludingThisPool","bestTradeExactOut","currencyIn_1","currencyAmountOut_1","currencyIn","currencyAmountOut","nextAmountOut","tokenIn","isInsufficientReservesError","allCurrencyCombinations","t0","t1","allCurrencyCombinationsWithAllFees","list","tuple","noLiquidity","computeAllRoutes","currentPath","allPaths","startCurrencyIn","pathPool","poolEquals","poolA","poolB","outputToken","useAllRoutes","poolsLoading","singleHopOnly","useIsSingleHop","TradeState","useBestTrade","typedValue","actualSwapValue","routesLoading","zeroForOne","tradePoolId","_routes$","_routes$$pools$","params","greaterThan","_route$pools$","_route$input","_route$input$wrapped","_route$output","_route$output$wrapped","_route$input2","_route$pools$2","useSwapPoolAvailable","exactInputLoading","_quotesResults","useQuoteExactInput","quotesResults","trade","bestRoute","currentBest","tryParseAmount","VALID","NO_ROUTE_FOUND","resultFormat","swapPool","getUserPositionIdsByPrincipal","sortedToken","sortToken","getSwapPool","getSwapTokenArgs","_token0","_token1","createSwapPool","usePositionDetailsFromId","useCallsData","tokensOwed0","tokensOwed1","feeGrowthInside0LastX128","feeGrowthInside1LastX128","getPositionDetailsFromId","_args","amountOutMinimum","useStateCallsData","token0Id","token1Id","getPoolTokenAmounts","_getSwapPoolAllBalance","balance0","balance1","usePoolIdsFromKey","setIds","queries","usePoolsTokenAmountsFromKey","setAmounts","results","useUserSwapTransactions","storageIds","useInfoUserStorageIds","storageId","getInfoUserStorageIds","userStorage","get","getSwapPoolAvailable","icpAdapter","transfer","identity","tokenAdapter","new_message","useTokenSupply","supply","getTokenSupply","getTokenMetadata","getTokenListLogo","tokenList","getLogo","isICRCToken","tokenStandard","getTokenInfo","_getTokenStandard","TokenDefaultLogo","useERC20TokenByChainKeyId","chainKeyMinterInfo","tokenAddress","supported_ckerc20_tokens","chainKeyInfo","erc20_contract_address","useTokenFromActiveNetwork","icrc_standard","icrc1Adapter","icrc1","icrc1_supported_standards","getIcrcStandard","dip20_standard","DIP20Adapter","getDIP20Standard","ext_standard","EXTAdapter","getExtStandard","standards","store","getState","tokenCache","ICP_TOKEN_INFO","spenderSub","ownerSub","getAdapterByName","useApprove","TxReceipt","Ok","Err","InsufficientAllowance","InsufficientBalance","ErrorOperationStyle","Unauthorized","LedgerTrap","ErrorTo","Other","BlockUsed","AmountTooSmall","Metadata","Nat8","TokenInfo","holderNumber","Nat64","deployTime","historySize","cycles","feeTo","balanceOf","cleanOutOldAllowances","filterAllowancesArray","Tuple","getASize","getAgeAllowanceLimit","getAllowanceSize","getAllowancesArray","getMaxAllowances","getMetadata","getResultArrayIndex","getSpendersSize","getTokenFee","getUserApprovals","setAgeAllowanceLimit","setFee","setLogo","setMaxAllowances","setName","setOwner","transferFrom","ORG_ID","ogy","OGY_IDL","BALANCE_ADAPTER_IDS","isNeedBalanceAdapter","subAccount","isPrincipal","balanceAdapter","sub","fromBytes","isOkSubAccount","AccountIdentifier","toHex","principalToAccount","user","useLatestDataCall","_result$data$toString","_result$data","useCurrencyBalance","toNumber","useStoreTokenBalance","storeResult","setStoreResult","isNaN","IdbKeyVal","dbName","storeName","version","db","_openDbStore","__awaiter","openDB","upgrade","database","oldVersion","newVersion","transaction","createObjectStore","objectStoreNames","contains","objectStore","catch","isLessThanCurrentVersion","deleteDB","_db","_storeName","set","put","_setValue","_a","_getValue","remove","delete","_removeValue","getAll","_getAllValues","getPromisesAwait","calls_1","calls","__calls","splitArr","res","warn","loadTokens","STORAGE_TIME_KEY","STORAGE_EXPIRE_TIME","storage","DB_VERSION","initializedDb","getStorageTokenInfo","storageInfo","setStorageTokenInfo","updateTokenStorageTime","time","val","localStorage","getItem","new_val","setItem","isNeedUpdateTokenInfo","storage_time","_tokenId","getTokenStorageTime","isStorageInfoValid","_getTokenInfo","baseTokenInfo","TokenInfoState","useTokensInfo","tokenInfos","setTokenInfos","loadings","setLoadings","localTokens","fetch_token_info","tokeInfo","localToken","getStorageInfoErrored","useTokenLogo","useCallKeysIndexManager","callKey","callAllIndex","callKeys","_updateCallKeyIndex","callIndex","updateCallKeys","stateCallIndex","valid","useOldData","_useCallResult","callResults","updateCallResult","useUpdateCallResult","callKeyIndex","updateCallKeyIndex","stateIndex","getCallIndex","UseCurrencyState","queryLoading","_getTokenStandard2","GlobalContext","createContext","useGlobalContext","useRefreshTrigger","refreshTriggers","useRefreshTriggerManager","setRefreshTriggers","force","interval","_call","setInterval","clearInterval","stepKey","newStepKey","useStepCalls","updateCallStep","useUpdateCallStep","_calls","reset","retry","_err","currentStep","errorStep","TipTypes","TIP_ERROR","TIP_LOADING","useSnackbar","messageKey","openCallback","closeCallback","useLoadingTip","useFullscreenLoading","isOpen","openLoading","useICPPrice","ICPPriceList","global","useUSDPrice","_currency","graphToken","useInfoToken","baseToken","icpPriceNumber","baseTokenPrice","toFixed","useUSDValue","currencyAmount","useCurrentBlockTimestamp","multicall","useInterfaceMulticall","supportedActiveChain","useSupportedActiveChain","getCurrentBlockTimestamp","useActiveChain","chainId","useWeb3React","useETHBalance","setBalance","web3","Web3","givenProvider","eth","getBalance","useWeb3CallsData","useERC20Balance","contractAddress","contract","useERC20Contract","useFetchBlockNumber","useSwr","blockNumber","getBlockNumber","refreshInterval","useBlockNumber","useSWRImmutable","useFetchFinalizedBlock","block","getBlock","number","useFinalizedBlockNumber","DEFAULT_NETWORKS","GOERLI","constructSameAddressMap","additionalNetworks","OPTIMISM","ARBITRUM_ONE","POLYGON","POLYGON_MUMBAI","AVALANCHE","BASE","BNB","CELO","BLAST","DEFAULT_ADDRESSES","v3CoreFactoryAddress","multicallAddress","quoterAddress","v3MigratorAddress","nonfungiblePositionManagerAddress","MAINNET_ADDRESSES","v1MixedRouteQuoterAddress","GOERLI_ADDRESSES","OPTIMISM_ADDRESSES","ARBITRUM_ONE_ADDRESSES","tickLensAddress","POLYGON_ADDRESSES","CELO_ADDRESSES","CHAIN_TO_ADDRESSES_MAP","CELO_ALFAJORES","swapRouter02Address","OPTIMISM_GOERLI","OPTIMISM_SEPOLIA","ARBITRUM_GOERLI","ARBITRUM_SEPOLIA","BASE_GOERLI","ZORA","ZORA_SEPOLIA","ROOTSTOCK","MULTICALL_ADDRESSES","providers","WeakMap","useEthersWeb3Provider","client","useClient","transport","provider","Web3Provider","mainnet","clientToWeb3js","abi","MulticallABI","UniswapInterfaceMulticallJson","useContract","addressOrAddressMap","ABI","withSignerIfPossible","ethersProvider","_provider$network","_provider$network2","getContract","useEthMinterContract","ERC20ABI","useERC20MinterHelperContract","ERC20HelperAbi","useERC20TokenAllowance","tokenAllowance","isSyncing","ApprovalState","useApproval","amountToApprove","useIsPendingApproval","approvalState","pendingApproval","PENDING","NOT_APPROVED","APPROVED","UNKNOWN","useApprovalStateForSpender","tokenContract","logFailure","useExact","estimatedGas","estimateGas","MaxUint256","gasLimit","calculateGasMargin","response","spenderAddress","useTokenName","useTokenSymbol","useTokenDecimals","ERC20Token","hostname","match","GoogleAnalytics","ReactGA","RISK_WARNING_INDEX","RISK_STORAGE_NAME","RiskStatementModal","onRead","isRead","setIsRead","components","handleRead","setRiskStorage","RiskStatement","riskStatementShow","setRickStatementShow","storageRisk","getRiskStorage","ErrorImage","xmlnsXlink","maskUnits","patternContentUnits","CloseIcon","GlobalTips","Background","V3Event","handleToTwitter","Logo","logoDark","LogoSection","ButtonBase","AddressSection","copyRef","handleCopy","_copyRef$current","shorten","Copy","handleToExplorer","AccountSection","explorerLink","ProfileSection","lg","main","LogoutConfirmModal","disableElevation","LogOutSection","onLogout","logoutConfirmOpen","setLogoutConfirmOpen","logout","useUserLogout","BalanceAndValue","infoToken","anchorRef","prevOpen","connectorType","walletManager","handleToWallet","ChevronDown","strokeWidth","Popper","placement","disablePortal","popperOptions","modifiers","Fade","Paper","MAX_NUMBER","MOBILE_MAX_NUMBER","subMenus","rx","cx","cy","r","onMenuClick","SubMenuPopper","_route$subMenus","subMenuKey","pathName","MenuWrapper","subRoute","Icon","ExceedRoutesPopper","subMenuOpenKey","setSubMenuOpenKey","subMenuTarget","setSubMenuTarget","handleSubMenuMouseLeave","handleSubMenuClose","handleMenuClick","_route$path","handleSubMenuMouseEnter","navItem","more","ExceedRoutes","handleMouseEnter","handleMouseLeave","Routes","handleMenuMouseLeave","handleRouteClick","_route$path2","_route$path3","handleMenuMouseEnter","NavBar","bind","n","hasOwnProperty","SvgLogo1","svgRef","titleId","x1","y1","x2","y2","gradientUnits","stopColor","SvgArrowDown","onRouteClick","collapseKey","setCollapseKey","borderBottom","ArrowDownIcon","MobileNavbar","exceedOpen","setExceedOpen","_route$link","noExceedRoutes","exceedRoutes","XCircle","customizeBreakPoints","createTheme","md","Header","drawerOpen","setDrawerOpen","DensityMediumIcon","handleToggleDrawer","Navbar","Drawer","SnsTips","borderBottomLeftRadius","borderBottomRightRadius","leavingScreen","mainContent","SMALL_PADDING_PATH","MainLayout","show","setShow","globalTipShow","setGlobalTipShow","snsTipShow","setSnsTipShow","isSmallPadding","Layout","Fallback","eventId","errorString","test","handleCopyError","_error$toString","ErrorBoundary","Sentry","fallback","loadingWrapper","animation","ConnectorComponent","walletConnectorManager","selfConnector","setSelfConnector","WalletConnector","init","_window$ic","_window$ic2","ic","infinityWallet","ConnectorType","plug","connect","walletBox","walletWrapper","walletComingSoon","Wallets","1","wallet","LinearLoader","LinearProgress","getAllClaimEvents","getClaimEvents","Tokens","ckSepoliaUSDC","GreenCircleLoading","thickness","Arrow","SuccessIcon","filterUnits","colorInterpolationFilters","floodOpacity","stdDeviation","in2","operator","ActionIcon","activeStep","showErrorHint","_StepDetails","openedSteps","setOpenedSteps","isStepOpened","skipError","borderTopLeftRadius","borderTopRightRadius","newOpenedSteps","handleStepClick","borderLeft","borderRight","ele1","errorMessage","errorActions","StepItem","useStepDetails","StepDetails","GlobalSteps","useOpenedSteps","INTERVAL","timeOfMessages","useHandleActorError","onError","last_time","now","isNewMessage","useActorSubmit","onSubmit","auth","walletType","getPrincipal","isCurrentAccount","waitRandom","ms","CanceledError","RetryableError","RETRY_OPTIONS_BY_CHAIN_ID","minWait","maxWait","DEFAULT_RETRY_OPTIONS","Updater","pendingTransactions","onCheck","onReceipt","lastBlockNumber","removeTransaction","useTransactionRemover","blockTimestamp","getReceipt","hash","_RETRY_OPTIONS_BY_CHA","rejectCancelled","completed","promise","reject","getTransactionReceipt","receipt","tx","deadline","addedTime","cancels","lastCheckedBlockNumber","blocksSinceCheck","minutesPending","shouldCheck","toSerializableReceipt","blockHash","transactionHash","transactionIndex","transactions","isPendingTx","checkedTransaction","finalizeTransaction","LibUpdater","wagmiConfig","createConfig","chains","sepolia","transports","http","DisableIframe","sameOrigin","setSameOrigin","_top","self","CONNECTIONS","injectedConnection","getConnection","c","connection","SELECTABLE_WALLETS","ConnectionType","COINBASE_WALLET","WALLET_CONNECT","INJECTED","_metamask$connectEage","_metamask$activate","metamask","connectEagerly","isMobile","activate","connectors","orderedConnectionTypes","web3Connectors","hooks","Web3ReactProvider","snackbarInitial","snackbar","MuiSnackbar","Alert","severity","alertSeverity","bgcolor","IconButton","handleClickClose","withRouter","scrollTo","behavior","paper","primaryLight","primary200","primaryDark","primary800","secondaryLight","secondary200","secondaryDark","secondary800","successLight","success200","successMain","errorLight","errorMain","orangeLight","orangeMain","orangeDark","warningLight","warningMain","warningDark","grey50","grey100","grey200","grey300","grey500","grey600","grey700","grey900","darkPaper","darkBackground","darkLevel2","darkLevel4","darkLevel5","darkTextPrimary","darkTextTertiary","darkTextFourth","darkTextFifth","disable","lightTextTitle","lightTextPrimary","lightTextSecondary","lightTextTertiary","lightTextFourth","lightTextFifth","lightLevel2","lightLevel4","lightLevel5","lightGray50","lightGray200BorderColor","darkPrimaryLight","darkPrimaryMain","darkPrimaryDark","darkPrimary200","darkPrimary800","darkPrimary400","darkSecondaryLight","darkSecondaryDark","darkSecondary200","darkSecondary800","defaultGradientStart","defaultGradientEnd","border1","apr","MuiTheme","componentStyleOverrides","globalButtonBackground","defaultGradient","menuHoverBackground","menuSelectedBack","CircularProgressKeyframes0","keyframes","_templateObject","_taggedTemplateLiteral","CircularProgressKeyframes1","_templateObject2","MuiTypography","styleOverrides","MuiButton","textTransform","containedPrimary","containedSecondary","MuiPaper","elevation","backgroundImage","rounded","MuiCardHeader","textDark","MuiCardContent","paddingBottom","MuiCardActions","MuiAlert","outlined","MuiButtonBase","menuBackground","menuSelected","MuiListItemIcon","MuiListItemText","MuiInputBase","MuiOutlinedInput","inputAdornedStart","notchedOutline","MuiSlider","mark","valueLabel","MuiAutocomplete","popper","MuiDivider","divider","MuiSelect","MuiCheckbox","MuiAvatar","MuiChip","MuiTimelineContent","MuiTreeItem","MuiTimelineDot","MuiInternalDateTimePickerTabs","MuiTabs","flexContainer","MuiDialog","MuiTable","MuiTableCell","textTertiary","MuiTooltip","tooltip","MuiPagination","nav","MuiTableContainer","MuiStepper","MuiBreadcrumbs","MuiSwitch","MuiGrid","MuiPopover","MuiList","MuiCircularProgress","themePalette","common","black","orange","grey","heading","tertiary","textLight","orangeWarning","theme_primary","theme_secondary","backgroundDefault","level5","gray200","avatar","gray200BgColor","themeTypography","fontFamily","h6","h5","h4","h3","h2","h1","subtitle1","subtitle2","caption","body1","body2","customInput","menuCaption","subMenuCaption","commonAvatar","smallAvatar","mediumAvatar","largeAvatar","sm","Radius","rtlLayout","mixins","overflowEllipsis","overflowEllipsis2","typography","radius","PageNotFound","Loadable","Suspense","Loader","Wallet","lazy","Farms","Farm","CreateFarm","Staking","StakingDetails","StakingTokenCreate","Swap","SwapPro","Liquidity","AddLiquidity","IncreaseLiquidity","DecreaseLiquidity","SwapReclaim","SwapFindMisTransferToken","SwapRevokeApprove","PCMReclaim","NFTView","WalletNFTView","NFTMint","Console","ConsoleBurn","NFTCanisterList","NFTCanisterCreate","NFTCanisterDetails","NFTCollectMarket","NFTMarketCollections","Voting","VotingProject","VotingProposal","VotingCreateProposal","VoteCreateProject","TokenClaimIndex","TokenClaimTransactions","CreateTokenClaim","LiquidityV2","DecreaseLiquidityV2","Wrap","SNSLaunches","SNSLaunch","routeConfigs","maintenancePages","MainRoutes","allPath","exact","Redirect","AuthRoutes","App","useFetchXDR2USD","useFetchICPPrices","useFetchInfoAllTokens","useFetchAllSwapTokens","useConnectManager","walletConnectorOpen","fetchGlobalTokensLoading","useFetchGlobalTokenList","isInitialStandardLoading","AllPools","tokensLoading","setTokensLoading","updated","setUpdated","setAllPools","getSwapPools","_allSwapPools$map","_allTokenPools$map","allSwapPools","allTokenPools","allClaimEvents","allTokenStandards","stakingToken","rewardToken","tokenCid","updateCanisters","tokenStandards","useTokenStandards","allStandards","useInitialTokenStandard","queryClient","QueryClient","handleRefreshTriggers","_refreshTriggers$key","WagmiProvider","config","QueryClientProvider","StyledEngineProvider","injectFirst","TransactionsUpdater","ThemeProvider","ActorInitial","CssBaseline","NavigationScroll","anonymizeIp","customBrowserType","testMode","debug","parseLocale","maybeSupportedLocale","lowerMaybeSupportedLocale","toLowerCase","locale","useActiveLocale","_useAppSelector","userLocale","navigator","language","region","_parseLocale","navigatorLocale","LanguageProvider","loaded","setLoaded","messages","loadLocaleData","plurals","load","dynamicActivate","I18nProvider","isStagingEnv","REACT_APP_STAGING","dsn","environment","enabled","tracesSampleRate","_process$env$REACT_AP","REACT_APP_SENTRY_TRACES_SAMPLE_RATE","beforeSend","_error$message","_error$message2","_error$message3","_error$message4","stack","DOMException","shouldRejectError","integrations","BrowserTracing","startTransactionOnLocationChange","startTransactionOnPageLoad","onerror","url","row","_error","getElementById","createRoot","PersistGate","persistor","BrowserRouter","serviceWorker","ready","registration","unregister","TokenLocales","insufficient_cycles_balance","invalid_value","has_been_initialized","no_sufficient_balance","unsupported_operator","no_balance","no_enough_balance","permission_deined","not_mint_token_list","max_tokens_limit","token_exists","invaild_token_symbol","insufficient_ics_balance","mint_token_error","handling_fee_error","SwapLocales","NFTLocals","NFT_claim_paused","NFT_claim_email_code_error","NFT_was_claimed","NFT_claim_exceeded","NFT_token_not_exist","permission_denied","can_not_find_token","StakingLocals","WICPLocales","error_to_address","amount_too_small","used_block_height","block_error","insufficient_funds","unexpected_error","VoteMessages","XTCMessages","InvalidTokenContract","NotSufficientLiquidity","MessageMaps","getLocaleMessage","KEY","getAllCanisters","allCanisters","storageAllCanisters","setAllCanisters","login","createAction","updateConnected","updateWalletConnector","getConnectorType","isMeWebview","isUnLocked","session","getStoreWalletUnlocked","updateAuth","getConnectorPrincipal","mnemonic","STOIC_MNEMONIC","password","_updateLockStatus","updateLockStatus","locked","icConnector","disconnect","connectorStateConnected","new_connector","expired","getConnectorIsConnected","connectToConnector","setConnector","setActorHttpAgent","useAccount","manage","updateCallIndex","changeTheme","updateLocal","updateHideUnavailableClaim","updateXDR2USD","updateICPPriceList","updateUserLocale","updateTokenList","updateAllSwapTokens","getExchangeRate","pair","exchangeRate","get_exchange_rate","useXDR2USD","rate","getXDR2USD","use100ICPPriceInfo","start","fetch_result","fetch","json","icp_xdr_conversion_rates","get100ICPPriceInfo","useICPPriceList","useICPAmountUSDValue","ICPPrice","useICP2CyclesManager","_ICPPriceList$xdr","_ICPPriceList","xdr","xdr_usd","xdr_usdt","icpPrices","priceList","dividedBy","times","timestamp","useTokensFromList","allTokensFromList","rank","useTokenIsInTokenList","allSwapTokens","getAllTokensOfSwap","getLimitedInfinityCall","useDispatch","useSelector","createReducer","hideUnavailableClaim","builder","addCase","payload","initialState","actionButton","openSnackbar","ckBTCAddresses","retrieveState","sortBalance","SortBalanceEnum","ALL","newTaggedTokens","updateCK_BTCAddresses","updateRetrieveState","states","block_index","old_state","unshift","txid","_states","updateWalletSortType","updateSortBalance","hasBeenClaimTestToken","swapTokenList","poolStandardUpdated","INPUT","currencyId","OUTPUT","independentField","poolCanisterIds","swapOutAmount","decreaseLiquidityAmount","typeInput","field","selectCurrency","otherField","switchCurrencies","clearSwapState","updatePoolCanisterIds","updateSwapOutAmount","updateDecreaseLiquidityAmount","leftRangeValue","rightRangeValue","startPrice","CURRENCY_A","updateFiled","updateFullRange","updateLeftRange","updateRightRange","updateStartPrice","resetMintState","userExpertMode","userSingleHop","userSelectedToken","userSlippage","swap","mint","burn","userTransactionsDeadline","showClosedPosition","userPositionPools","swapProAutoRefresh","keepTokenInPools","updateUserExpertMode","updateUserSelectedToken","updateUserSingleHop","updateUserTransactionsDeadline","updateUserSlippage","removeTaggedTokens","_ref7","_token","updateShowClosedPosition","_ref8","updateUserPositionPools","_ref9","allPoolIds","updateUserMultipleApprove","_ref10","updateSwapProAutoRefresh","_ref11","updateKeepTokenInPools","_ref12","LIQUIDITY_PERCENT","updateTypedInput","resetBurnState","userSelectedCanisters","importedNFTs","updateUserSelectedCanisters","deleteUserSelectedCanisters","importNFT","deleteNFT","allTokenIds","updateTokenStandards","updateAllTokenIds","steps","opened","closeAll","updateStepDetails","updateKey","updateData","updateSnsAllTokensInfo","userPositions","updateUserPositions","withdrawTx","erc20Transactions","updateTX","allTx","updateWithdrawTX","_payload$tx$hash","otherStates","newStates","updateErc20TX","customizationReducer","snackbarReducer","loadingReducer","walletReducer","globalReducer","SwapReducer","swapCache","SwapCacheReducer","swapLiquidity","SwapLiquidityReducer","swapBurn","SwapBurn","nft","NFTReducer","AuthReducer","callReducer","StepReducer","tokenCacheReducer","TransactionsReducer","swapV2Cache","SwapV2CacheReducer","swapV2Liquidity","SwapV2LiquidityReducer","swapV2Burn","SwapV2Burn","SnsReducer","rootPersistConfig","stateReconciler","autoMergeLevel2","blacklist","migrate","_state$_persist","_state$_persist2","_state$_persist3","_persist","SessionPersistConfig","sessionStorage","rootReducer","combineReducers","allReducer","persistReducer","sessionReducer","PersistReducer","configureStore","reducer","middleware","getDefaultMiddleware","thunk","serializableCheck","persistStore","allTokensInfo","getSnsAllTokensInfo","getStepDetails","openCall","closeCall","useStepContentManager","_getStepDetails","_prevStep$activeStep","prevStep","_getStepDetails2","getStepData","useUpdateStepData","useExpertModeManager","expertMode","toggleSetExpertMode","updateMultipleApprove","useSlippageManager","useSlippageToleranceToPercent","percentSlippage","useClosedPositionManager","bool","useStoreUserPositionPools","poolIds","useInitialUserPositionPools","storeUserPositionPools","updateStoreUserPositionPools","initialLoading","setInitialLoading","positionPools","useUserPositionPools","useSwapProAutoRefreshManager","autoRefresh","useSwapKeepTokenInPools","useSwapKeepTokenInPoolsManager","useSwapHandlers","onCurrencySelection","onSwitchTokens","debouncedSwitchTokens","onUserInput","useSwapState","useCleanSwapState","useSwapInfo","_Trade$state","userSlippageTolerance","inputCurrencyId","outputCurrencyId","inputCurrencyState","inputToken","outputCurrencyState","isExactIn","inputCurrencyBalance","outputCurrencyBalance","currencyBalances","parsedAmount","currencies","otherCurrency","debouncedTypedValue","debouncedValue","setDebouncedValue","useDebounce","__inputTokenSubBalance","__outputTokenSubBalance","inputTokenSubBalance","outputTokenSubBalance","useUserUnusedBalance","inputTokenUnusedBalance","outputTokenUnusedBalance","allowanceTokenId","maxInputAmount","inputError","inputNumberCheck","inputTokenBalance","outputTokenBalance","useLoadDefaultParams","useParsedQueryString","getSwapOutAmount","useUpdateSwapOutAmount","getDecreaseLiquidityAmount","useUpdateDecreaseLiquidityAmount","__standards","useTransactionAdder","nonce","addTransaction","useAllTransactions","_state$chainId","cancelled","isTransactionRecent","usePendingApprovalAmount","allTransactions","txHash","TransactionType","APPROVAL","useHasPendingApproval","_usePendingApprovalAm","_usePendingApprovalAm2","gt","transactionSlice","createSlice","reducers","_transactions$chainId","_transactions$chainId2","txs","clearAllTransactions","_transactions$chainId3","_transactions$chainId4","confirmedTime","cancelTransaction","_transactions$chainId5","cancelHash","_transactions$chainId6","actions","useUpdateTaggedTokenCallback","useDeleteTaggedTokenCallback","useUserBTCDepositAddress","useUpdateUserBTCDepositAddress","useUpdateUserTx","_Object$values$","txIdString","byteArray","reverse","byte","useUserTxs","useWalletSortManager","sortType","useSortBalanceManager","PositionFilterState","APP_META","NFID_ORIGIN","NF_ID_AUTH_URL","NF_ID_LOGIN_CONFIG","maxTimeToLive","identityProvider","windowOpenerFeatures","screen","NF_IDConnector","whitelist","providerUrl","dev","AuthClient","LocalStorage","idleOptions","idleTimeout","disableIdle","disableDefaultIdleCallback","_this$identity","getIdentity","_this$client","isAuthenticated","createActor","interfaceFactory","agent","HttpAgent","fetchRootKey","_this$client3","_this$client2","onSuccess","_this$client4","PROVIDER_URL","URL","NFIDRequestTransfer","requestTransfer","windowFeatures","defaultWindowFeatures","LEDGER_CANISTER_ID","getDelegationIds","stateCanisterIds","delegationIds","InternetIdentityConnector","iiExpireTime","StoicConnector","StoicIdentity","toText","PlugConnector","requestConnect","ICPSwapConnector","keyType","EXPIRE_TIME","InfinityConnector","EXPIRE_TIME_STORAGE_NAME","MetamaskConnector","isAuthorized","MsqClient","requestLogin","requestLogout","httpAgent","expireTime","MeConnector","isConnectedSuccessfully","_this$connector","_this$connector2","astrox_webview","astrox","AstroXWebViewHandler","_astrox$identity2","_astrox$identity","boolean","delegationTargets","customDomain","useFrame","body","signerProviderUrl","walletProviderUrl","MeExpireTime","_this$identity3","_this$identity2","meExpireTime","prototype","toJSON","EXPONENTIAL_AT","ROUNDING_MODE","ROUND_DOWN","isICPSwapOfficial","stringToArrayBuffer","string","TextEncoder","encode","arrayBufferToString","arrayBuffer","TextDecoder","decode","toDoubleNumber","newString","counter","diff","hour","sec","timeParser","date","seconds","getSeconds","BaseNFTAdapter","ICPSwapAdapter","NFTCanister","NFTs","canisterAdapters","Map","adapters","initialAdapter","adapter","register","getAdapter","adapterName","AdapterName","BaseNFTsTradeAdapter","ICPSwapTradeAdapter","buy","sale","revoke","NFTTradeCanister","TradeAdapterName","NFTsTrade","from32bits","to32bits","num","ArrayBuffer","DataView","setUint32","Uint8Array","toHexString","encodeTokenIdentifier","Buffer","array","fromUint8Array","decodeTokenId","tid","p","getStateValue","StakingState","NOT_STARTED","__state","maxAmountFormat","encodePositionKey","decodePositionKey","arr","positionIndex","token0Fee","token1Fee","PositionState","getStateColor","OutOfRange","InRange","LEVEL0","LEVEL1","typedValueParsed","groupSeparator","feeAmountToPercentage","div","integer","decimal","tryParseTick","quoteToken","_fraction$length","whole","fraction","withoutDecimals","JSBI","tryParsePrice","sqrtRatioX96","encodeSqrtRatioX96","TickMath","MAX_SQRT_RATIO","MAX_TICK","MIN_SQRT_RATIO","MIN_TICK","priceToClosestTick","nearestUsableTick","TICK_SPACINGS","actualAmountToPool","mul","initializeConnector","MetaMask","isAddress","AddressZero","Contract","getSigner","connectUnchecked","getProviderOrSigner","Config","Media","mediaType","TokenMetadata","configs","Nat32","mediaLinks","introduction","BoolResult","NatResult","Result_3","Opt","addAdmin","cycleAvailable","cycleBalance","edit","getAdminList","getList","removeAdmin","updateLogo","Subaccount","Account","minting_account","min_burn_amount","max_supply","total_supply","Page","totalElements","get_logo","get_task_state","get_token_list","set_task_state","set_token_index","set_token_logo","ic_host","cachedCanisterIds","errorCallbacks","log","_host","serviceClass","createActorError","actorOptions","createBaseActor","AnonymousAgent","_actor","_fields","beforeSubmit","checkResult","method","_b","_c","trim","_d","createAgent","setAgent","setLog","TokenListInterfaceFactory","allTokenOfSwap","AllTokenOfSwapInterfaceFactory","allowed_principals","access_controls_enabled","sns_subnet_ids","SnsWasm","wasm","canister_type","Int32","AddWasmRequest","SnsWasmError","Hash","AddWasmResponse","NeuronBasketConstructionParameters","dissolve_delay_interval_seconds","Canister","DappCanisters","canisters","LinearScalingCoefficient","slope_numerator","intercept_icp_e8s","from_direct_participation_icp_e8s","slope_denominator","to_direct_participation_icp_e8s","IdealMatchedParticipationFunction","serialized_representation","NeuronsFundParticipationConstraints","coefficient_intervals","max_neurons_fund_participation_icp_e8s","min_direct_participation_threshold_icp_e8s","ideal_matched_participation_function","CfNeuron","has_created_neuron_recipes","nns_neuron_id","amount_icp_e8s","CfParticipant","hotkey_principal","cf_neurons","NeuronsFundParticipants","participants","TreasuryDistribution","total_e8s","NeuronDistribution","controller","dissolve_delay_seconds","stake_e8s","vesting_period_seconds","DeveloperDistribution","developer_neurons","AirdropDistribution","airdrop_neurons","SwapDistribution","initial_swap_amount_e8s","FractionalDeveloperVotingPower","treasury_distribution","developer_distribution","airdrop_distribution","swap_distribution","InitialTokenDistribution","Countries","iso_codes","SnsInitPayload","max_dissolve_delay_seconds","max_dissolve_delay_bonus_percentage","nns_proposal_id","neurons_fund_participation","min_participant_icp_e8s","neuron_basket_construction_parameters","fallback_controller_principal_ids","token_symbol","final_reward_rate_basis_points","max_icp_e8s","neuron_minimum_stake_e8s","confirmation_text","swap_start_timestamp_seconds","swap_due_timestamp_seconds","initial_voting_period_seconds","neuron_minimum_dissolve_delay_to_vote_seconds","max_neuron_age_seconds_for_age_bonus","min_participants","initial_reward_rate_basis_points","wait_for_quiet_deadline_increase_seconds","transaction_fee_e8s","dapp_canisters","neurons_fund_participation_constraints","neurons_fund_participants","max_age_bonus_percentage","initial_token_distribution","reward_rate_transition_duration_seconds","token_logo","token_name","max_participant_icp_e8s","min_direct_participation_icp_e8s","proposal_reject_cost_e8s","restricted_countries","min_icp_e8s","max_direct_participation_icp_e8s","DeployNewSnsRequest","sns_init_payload","DappCanistersTransferResult","restored_dapp_canisters","nns_controlled_dapp_canisters","sns_controlled_dapp_canisters","SnsCanisterIds","ledger","governance","DeployNewSnsResponse","dapp_canisters_transfer_result","subnet_id","GetAllowedPrincipalsResponse","GetDeployedSnsByProposalIdRequest","proposal_id","DeployedSns","index_canister_id","swap_canister_id","GetDeployedSnsByProposalIdResult","GetDeployedSnsByProposalIdResponse","get_deployed_sns_by_proposal_id_result","SnsVersion","archive_wasm_hash","root_wasm_hash","swap_wasm_hash","ledger_wasm_hash","governance_wasm_hash","index_wasm_hash","GetNextSnsVersionRequest","current_version","GetNextSnsVersionResponse","next_version","GetSnsSubnetIdsResponse","GetWasmRequest","GetWasmResponse","SnsUpgrade","InsertUpgradePathEntriesRequest","upgrade_path","sns_governance_canister_id","InsertUpgradePathEntriesResponse","ListDeployedSnsesResponse","instances","ListUpgradeStepsRequest","starting_at","PrettySnsVersion","ListUpgradeStep","pretty_version","ListUpgradeStepsResponse","UpdateAllowedPrincipalsRequest","added_principals","removed_principals","UpdateAllowedPrincipalsResult","AllowedPrincipals","UpdateAllowedPrincipalsResponse","update_allowed_principals_result","UpdateSnsSubnetListRequest","sns_subnet_ids_to_add","sns_subnet_ids_to_remove","UpdateSnsSubnetListResponse","add_wasm","deploy_new_sns","get_allowed_principals","get_deployed_sns_by_proposal_id","get_latest_sns_version_pretty","get_next_sns_version","get_sns_subnet_ids","get_wasm","insert_upgrade_path_entries","list_deployed_snses","list_upgrade_steps","update_allowed_principals","update_sns_subnet_list","sns_wasm","SNS_WASM_INTERFACE_FACTORY","cf_participants","Init","sns_root_canister_id","sns_token_e8s","nns_governance_canister_id","icp_ledger_canister_id","sns_ledger_canister_id","should_auto_finalize","ErrorRefundIcpRequest","source_principal_id","block_height","error_type","ErrorRefundIcpResponse","CanisterCallError","FailedUpdate","dapp_canister_id","SetDappControllersResponse","failed_updates","Possibility","SetDappControllersCallResult","possibility","SweepResult","failure","skipped","invalid","global_failures","GovernanceError","error_message","Response","governance_error","Possibility_1","SettleCommunityFundParticipationResult","Ok_1","neurons_fund_participation_icp_e8s","neurons_fund_neurons_count","Possibility_2","SettleNeuronsFundParticipationResult","Possibility_3","SetModeCallResult","FinalizeSwapResponse","set_dapp_controllers_call_result","create_sns_neuron_recipes_result","settle_community_fund_participation_result","settle_neurons_fund_participation_result","set_mode_call_result","sweep_icp_result","claim_neuron_result","sweep_sns_result","GetAutoFinalizationStatusResponse","auto_finalize_swap_response","has_auto_finalize_been_attempted","is_auto_finalize_enabled","GetBuyerStateRequest","principal_id","TransferableAmount","transfer_fee_paid_e8s","transfer_start_timestamp_seconds","amount_e8s","amount_transferred_e8s","transfer_success_timestamp_seconds","BuyerState","icp","GetBuyerStateResponse","buyer_state","GetBuyersTotalResponse","buyers_total","CanisterStatusType","stopped","stopping","running","DefiniteCanisterSettingsArgs","freezing_threshold","controllers","memory_allocation","compute_allocation","CanisterStatusResultV2","memory_size","settings","idle_cycles_burned_per_day","module_hash","GetDerivedStateResponse","sns_tokens_per_icp","Float64","buyer_total_icp_e8s","cf_participant_count","direct_participation_icp_e8s","direct_participant_count","cf_neuron_count","GetInitResponse","GetLifecycleResponse","decentralization_sale_open_timestamp_seconds","lifecycle","decentralization_swap_termination_timestamp_seconds","Icrc1Account","Ticket","creation_time","ticket_id","Ok_2","ticket","Err_1","GetOpenTicketResponse","Params","sale_delay_seconds","GetSaleParametersResponse","NeuronId","NeuronAttributes","followees","CfInvestment","DirectInvestment","buyer_principal","Investor","CommunityFund","Direct","SnsNeuronRecipe","claimed_status","neuron_attributes","investor","neuron_recipes","next_ticket_id","finalize_swap_in_progress","already_tried_to_auto_finalize","purge_old_tickets_last_completion_timestamp_nanoseconds","purge_old_tickets_next_principal","buyers","open_sns_token_swap_proposal_id","DerivedState","Float32","GetStateResponse","derived","ListCommunityFundParticipantsRequest","ListDirectParticipantsRequest","Participant","participation","participant_id","ListDirectParticipantsResponse","ListSnsNeuronRecipesRequest","ListSnsNeuronRecipesResponse","sns_neuron_recipes","NewSaleTicketRequest","InvalidUserAmount","min_amount_icp_e8s_included","max_amount_icp_e8s_included","Err_2","invalid_user_amount","existing_ticket","NewSaleTicketResponse","OpenRequest","RefreshBuyerTokensRequest","buyer","RefreshBuyerTokensResponse","icp_accepted_participation_e8s","icp_ledger_account_balance_e8s","error_refund_icp","finalize_swap","get_auto_finalization_status","get_buyer_state","get_buyers_total","get_canister_status","get_derived_state","get_init","get_lifecycle","get_open_ticket","get_sale_parameters","get_state","list_community_fund_participants","list_direct_participants","list_sns_neuron_recipes","new_sale_ticket","notify_payment_failure","refresh_buyer_tokens","restore_dapp_controllers","sns_swap","SNS_SWAP_INTERFACE_FACTORY","GenericNervousSystemFunction","validator_canister_id","target_canister_id","validator_method_name","target_method_name","FunctionType","NativeNervousSystemFunction","NervousSystemFunction","function_type","GovernanceCachedMetrics","not_dissolving_neurons_e8s_buckets","garbage_collectable_neurons_count","neurons_with_invalid_stake_count","not_dissolving_neurons_count_buckets","neurons_with_less_than_6_months_dissolve_delay_count","dissolved_neurons_count","total_staked_e8s","total_supply_governance_tokens","not_dissolving_neurons_count","dissolved_neurons_e8s","neurons_with_less_than_6_months_dissolve_delay_e8s","dissolving_neurons_count_buckets","dissolving_neurons_count","dissolving_neurons_e8s_buckets","timestamp_seconds","MaturityModulation","current_basis_points","updated_at_timestamp_seconds","Followees","DefaultFollowees","NeuronPermissionList","permissions","VotingRewardsParameters","round_duration_seconds","NervousSystemParameters","default_followees","max_followees_per_function","neuron_claimer_permissions","max_neuron_age_for_age_bonus","reject_cost_e8s","max_proposals_to_keep_per_action","max_number_of_neurons","max_number_of_proposals_with_ballots","neuron_grantable_permissions","voting_rewards_parameters","maturity_modulation_disabled","max_number_of_principals_per_neuron","Version","ProposalId","RewardEvent","rounds_since_last_distribution","actual_timestamp_seconds","end_timestamp_seconds","distributed_e8s_equivalent","settled_proposals","UpgradeInProgress","mark_failed_at_seconds","checking_upgrade_lock","target_version","Ballot","vote","cast_timestamp_seconds","voting_power","Percentage","basis_points","Tally","no","yes","ManageDappCanisterSettings","reserved_cycles_limit","log_visibility","RegisterDappCanisters","TransferSnsTreasuryFunds","from_treasury","to_principal","to_subaccount","UpgradeSnsControlledCanister","new_canister_wasm","canister_id","canister_upgrade_arg","DeregisterDappCanisters","new_controllers","MintSnsTokens","ManageSnsMetadata","ExecuteGenericNervousSystemFunction","function_id","ManageLedgerParameters","transfer_fee","Motion","motion_text","Action","ManageNervousSystemParameters","AddGenericNervousSystemFunction","RemoveGenericNervousSystemFunction","UpgradeSnsToNextVersion","Unspecified","Proposal","summary","WaitForQuietState","current_deadline_timestamp_seconds","ProposalData","payload_text_rendering","failure_reason","ballots","minimum_yes_proportion_of_total","reward_event_round","failed_timestamp_seconds","reward_event_end_timestamp_seconds","proposal_creation_timestamp_seconds","latest_tally","decided_timestamp_seconds","proposal","proposer","wait_for_quiet_state","minimum_yes_proportion_of_exercised","is_eligible_for_rewards","executed_timestamp_seconds","Split","Follow","DisburseMaturity","to_account","percentage_to_disburse","ChangeAutoStakeMaturity","requested_setting_for_auto_stake_maturity","IncreaseDissolveDelay","additional_dissolve_delay_seconds","SetDissolveTimestamp","dissolve_timestamp_seconds","Operation","StopDissolving","StartDissolving","Configure","operation","RegisterVote","FinalizeDisburseMaturity","amount_to_be_disbursed_e8s","MemoAndController","By","ClaimOrRefresh","by","RemoveNeuronPermissions","permissions_to_remove","AddNeuronPermissions","permissions_to_add","MergeMaturity","percentage_to_merge","Amount","e8s","Disburse","Command_2","SyncCommand","MakeProposal","ClaimOrRefreshNeuron","NeuronInFlightCommand","command","NeuronPermission","permission_type","DissolveState","DissolveDelaySeconds","WhenDissolvedTimestampSeconds","DisburseMaturityInProgress","timestamp_of_disbursement_seconds","account_to_disburse_to","finalize_disbursement_timestamp_seconds","Neuron","staked_maturity_e8s_equivalent","maturity_e8s_equivalent","cached_neuron_stake_e8s","created_timestamp_seconds","source_nns_neuron_id","auto_stake_maturity","aging_since_timestamp_seconds","dissolve_state","voting_power_percentage_multiplier","disburse_maturity_in_progress","neuron_fees_e8s","NeuronParameters","id_to_nervous_system_functions","metrics","maturity_modulation","parameters","is_finalizing_disburse_maturity","deployed_version","sns_initialization_parameters","latest_reward_event","pending_version","proposals","in_flight_commands","sns_metadata","neurons","genesis_timestamp_seconds","hotkey","neuron_id","ClaimSwapNeuronsRequest","neuron_parameters","SwapNeuron","ClaimedSwapNeurons","swap_neurons","ClaimSwapNeuronsResult","ClaimSwapNeuronsResponse","claim_swap_neurons_result","GetMaturityModulationResponse","GetMetadataResponse","GetModeResponse","GetNeuron","GetNeuronResponse","GetProposal","GetProposalResponse","GetRunningSnsVersionResponse","GetSnsInitializationParametersResponse","ListNervousSystemFunctionsResponse","reserved_ids","functions","ListNeurons","of_principal","start_page_at","ListNeuronsResponse","ListProposals","include_reward_status","before_proposal","exclude_type","include_status","ListProposalsResponse","StakeMaturity","percentage_to_stake","Command","ManageNeuron","SplitResponse","created_neuron_id","DisburseMaturityResponse","amount_disbursed_e8s","amount_deducted_e8s","ClaimOrRefreshResponse","refreshed_neuron_id","StakeMaturityResponse","maturity_e8s","staked_maturity_e8s","MergeMaturityResponse","merged_maturity_e8s","new_stake_e8s","DisburseResponse","transfer_block_height","Command_1","RemoveNeuronPermission","AddNeuronPermission","ManageNeuronResponse","SetMode","claim_swap_neurons","fail_stuck_upgrade_in_progress","get_build_metadata","get_latest_reward_event","get_maturity_modulation","get_metadata","get_mode","get_nervous_system_parameters","get_neuron","get_proposal","get_root_canister_status","get_running_sns_version","get_sns_initialization_parameters","list_nervous_system_functions","list_neurons","list_proposals","manage_neuron","set_mode","sns_governance","SNS_GOVERNANCE_INTERFACE_FACTORY","decreaseLiquidity","claim","addLiquidity","increaseLiquidity","Transaction","liquidityTotal","recipient","token0ChangeAmount","sender","liquidityChange","token1Standard","token1ChangeAmount","token1Decimals","token0Standard","amountUSD","amountToken0","amountToken1","poolFee","token0Symbol","token0Decimals","token1Symbol","PublicPoolOverView","token0TotalVolume","volumeUSD1d","volumeUSD7d","token1Volume24H","totalVolumeUSD","sqrtPrice","feeTier","token1TotalVolume","volumeUSD","feesUSD","token0Volume24H","txCount","PublicTokenOverview","priceUSDChange","Address","addOwner","addQuoteToken","allPoolStorage","allTokenStorage","allUserStorage","batchInsert","clean","getAllPools","getAllTokens","getControllers","getDataQueueSize","getLastDataTime","getOwners","getPoolQueueSize","getPoolsForToken","getQuoteTokens","getSyncLock","getSyncStatus","getTokenQueueSize","getTotalVolumeAndUser","getUserQueueSize","insert","poolMapping","poolStorage","setPoolSyncStatus","setQuoteTokens","setTokenSyncStatus","setUserSyncStatus","syncOverview","tokenMapping","tokenStorage","userMapping","node_index","NodeIndexInterfaceFactory","SwapRecordInfo","feeAmountTotal","token0AmountTotal","feeTire","token1AmountTotal","baseLastStorage","baseStorage","batchPush","getAllowTokens","getEnableSync","getPoolLastPrice","getSyncError","getSyncOffset","priceCanister","setEnableSync","setPriceCanister","syncOldDataToLast","RecordPage","addOwners","getBaseRecord","getByPool","getByToken","getTxCount","baseIndex","BaseIndexInterfaceFactory","BaseIndex","BaseStorageInterfaceFactory","TvlOverview","tvlUSD","tvlUSDChange","PublicProtocolData","getAllPoolTvl","getAllTokenTvl","getPoolLastTvl","getProtocolData","getSyncState","getSyncTime","getTokenLastTvl","getTvlSyncState","globalLastStorageCanister","globalStorageCanister","syncGlobal","syncTvl","syncTvlStatus","tvlLastStorageCanister","tvlStorageCanister","NatResult__2","TvlChartDayData","getPoolChartTvl","getTokenChartTvl","globalIndex","GlobalIndexInterfaceFactory","globalTVL","GlobalTVLInterfaceFactory","PublicPoolChartDayData","getPoolChartData","getPoolTransactions","PoolStorageInterfaceFactory","PoolInfo","PublicTokenChartDayData","PublicTokenPricesData","low","high","getToken","getTokenChartData","getTokenPricesData","getTokenTransactions","TokenStorageInterfaceFactory","UserStorageInterfaceFactory","Rec","Blob","Block","created_at_time","kind","append_blocks","get_blocks","blocks","get_transaction","get_transactions","remaining_capacity","Memo","Timestamp","TxIndex","TransferError","GenericError","error_code","TemporarilyUnavailable","BadBurn","Duplicate","duplicate_of","BadFee","expected_fee","CreatedInFuture","ledger_time","TooOld","TransferResult","GetTransactionsRequest","Burn","Mint","Transfer","ArchivedTransactionRange","GetTransactionsResponse","first_index","log_length","archived_transactions","icrc1_balance_of","icrc1_decimals","icrc1_fee","icrc1_metadata","icrc1_minting_account","icrc1_name","icrc1_symbol","icrc1_total_supply","icrc1_logo","icrc1_transfer","from_subaccount","MetadataValue","ChangeFeeCollector","SetTo","Unset","FeatureFlags","icrc2","UpgradeArgs","maximum_number_of_accounts","accounts_overflow_trim_quantity","change_fee_collector","max_memo_length","Nat16","feature_flags","ArchiveOptions","num_blocks_to_archive","max_transactions_per_response","trigger_threshold","max_message_size_bytes","cycles_for_archive_creation","node_max_memory_size_bytes","controller_id","InitArgs","initial_balances","fee_collector_account","archive_options","GetBlocksRequest","Upgrade","BlockRange","ArchivedRange","GetBlocksResponse","certificate","chain_length","archived_blocks","DataCertificate","hash_tree","Approve","expected_allowance","expires_at","TransactionRange","ArchivedRange_1","StandardRecord","TransferArg","AllowanceArgs","Allowance","ApproveArgs","ApproveError","AllowanceChanged","current_allowance","Expired","TransferFromArgs","spender_subaccount","TransferFromError","get_data_certificate","icrc2_allowance","icrc2_approve","icrc2_transfer_from","icrcArchive","ICRCArchiveInterfaceFactory","ICRC1InterfaceFactory","ICRC2InterfaceFactory","TxError","TransactionId","BurnError","BurnResult","TransactionStatus","FAILED","SUCCEEDED","EventDetail","CanisterCreated","CanisterCalled","method_name","TransferFrom","caller","Event","EventsConnection","next_offset","next_canister_id","canisterCalled","canisterCreated","Time","TxRecord","op","MintError","MintResult","Stats","transfers_count","mints_count","transfers_from_count","canisters_created_count","burns_count","approvals_count","proxy_calls_count","history_events","ResultCall","return","CreateResult","ResultSend","events","getTransaction","getTransactions","halt","nameErc20","stats","transferErc20","wallet_balance","wallet_call","wallet_create_canister","wallet_create_wallet","wallet_send","getHolders","setFeeTo","xtc","XTCInterfaceFactory","dip20","DIP20InterfaceFactory","dip20BalanceActor","DIP20BalanceInterfaceFactory","dip20SupplyActor","DIP20SupplyInterfaceFactory","Balance","User","AllowanceRequest","Balance__1","TokenIdentifier","CommonError__1","InvalidToken","ApproveRequest","BalanceRequest","BalanceResponse","Result_7","Extension","HoldersRequest","Holder","Page_1","Result_6","Result_5","fungible","ownerAccount","nonfungible","Result_4","MintRequest","TransferResponse","CannotNotify","Rejected","AccountIdentifier__1","User__1","TransactionRequest","TransType","transType","TransferRequest","notify","extensions","getFee","holders","registry","totalHolders","Result_10","Page_2","Result_9","Result_8","BlockHeight","blockHeight","WithdrawRequest","BlockHeight__1","WrapRequest","WrapType","unwrap","WrapRecord","wrapType","wrappedTx","ext","EXTTokenInterfaceFactory","wrapICP","WrapICPInterfaceFactory","Duration","secs","nanos","send_whitelist","transaction_window","initial_values","BinaryAccountBalanceArgs","AccountBalanceArgs","ArchiveInfo","Archives","archives","Decimals","Name","GetBlocksArgs","TimeStamp","timestamp_nanos","CandidOperation","allowance_e8s","CandidTransaction","icrc1_memo","CandidBlock","parent_hash","GetBlocksError","BadFirstBlockIndex","requested_index","first_valid_index","ArchivedBlocksRange","QueryBlocksResponse","first_block_index","ArchivedEncodedBlocksRange","QueryEncodedBlocksResponse","SendArgs","Symbol","TransferArgs","TransferError_1","TxTooOld","allowed_window_nanos","TxDuplicate","TxCreatedInFuture","TransferFee","account_balance","account_balance_dfx","query_blocks","query_encoded_blocks","send_dfx","ledgerService","LedgerInterfaceFactory","KVPair","k","v","CanisterInfo","cid","creator","linkMap","ownerName","createTime","mintSupply","royalties","image","ResponseResult_5","CanisterRequest","TextResult","ResponseResult","PageResponse","ResponseResult_2","ResponseResult_4","ResponseResult_3","ResponseResult_1","canisterInfo","deleteTradeStatCanister","feeInfo","findCanister","findCanisterConfig","findTop5Canister","findUserCanister","initLogo","setCanisterConfig","setFeeInfo","ApproveAllRequest","TokenIdentifier__1","AccountIdentifier__2","KVPair__1","ResponseResult_6","TokenIndex","Chunk","TokenIndex__1","IcsMetadata","Remark","TransferRecord","HeaderField","HttpRequest","StreamingCallbackToken__1","StreamingStrategy","HttpResponse","StreamingCallbackToken","StreamingCallbackHttpResponse","IcsMintRequest","IcsMintRequests","Listing","BuyRequest","nftCid","tokenIndex","OrderInfo","minter","filePath","fileType","seller","artistName","TxInfoResponse","txFee","settleAmountStatus","royaltiesFeeStatus","royaltiesFee","txFeeStatus","txStatus","settleAmount","StatResponse","totalVolume","listSize","totalTurnover","avgPrice","maxPrice","minPrice","RevokeRequest","SaleRequest","cancelOrder","checkPayment","findCanisterId","findCanisterRecommend","findOrderPage","findRecommend","findTokenOrderPage","findTokenTxPage","findTxPage","findUserTxPage","getOrder","getStat","getTradeState","removeList","setCanisterId","setTradeState","unlock","TradeStatResp","AssetHandle","SubAccount__1","AssetId","ChunkId","AssetType","direct","ListRequest","nat","blob","nat8","MetadataContainer","thumbnail","asset","PaymentType","nfts","Payment","expires","payer","purchase","SalePricingGroup","end","pricing","SaleRemaining","retain","send","Sale","groups","quantity","remaining","SaleDetailGroup","SaleDetails","SaleTransaction","MetadataLegacy","headers","HttpStreamingCallbackToken","sha256","content_encoding","HttpStreamingCallbackResponse","HttpStreamingStrategy","Callback","streaming_strategy","status_code","SaleSettings","startTime","totalToSell","sold","bulkPricing","whitelistTime","salePrice","acceptCycles","addAsset","addThumbnail","adminKillHeartbeat","adminRefund","adminStartHeartbeat","allSettlements","availableCycles","bearer","details","ext_addAssetCanister","ext_admin","ext_assetAdd","ext_assetExists","ext_assetFits","ext_assetStream","ext_balance","ext_bearer","ext_capInit","ext_expired","ext_extensions","ext_marketplaceList","ext_marketplaceListings","ext_marketplacePurchase","ext_marketplaceSettle","ext_marketplaceStats","ext_marketplaceTransactions","ext_metadata","ext_mint","ext_payments","ext_removeAdmin","ext_saleClose","ext_saleCurrent","ext_saleEnd","ext_saleOpen","ext_salePause","ext_salePurchase","ext_saleResume","ext_saleSettings","ext_saleSettle","ext_saleTransactions","ext_saleUpdate","ext_setAdmin","ext_setCollectionMetadata","ext_setMarketplaceOpen","ext_setOwner","ext_setRoyalty","ext_transfer","extdata_supply","failedSales","getMinter","getRegistry","getTokens","heartbeat_assetCanisters","heartbeat_capEvents","heartbeat_disbursements","heartbeat_external","heartbeat_isRunning","heartbeat_paymentSettlements","heartbeat_pending","heartbeat_start","heartbeat_stop","http_request","http_request_streaming_callback","http_request_update","isHeartbeatRunning","listings","lock","reserve","retreive","saleTransactions","salesSettings","setMinter","settle","settlements","tokens_ext","V3NFTCanisterControllerInterfaceFactory","NFTCanisterInterfaceFactory","V3TradeCanisterInterfaceFactory","NFTTradeStat","V3TradeStatInterfaceFactory","ext_nft","ExtNFTInterfaceFactory","AssetClass","Cryptocurrency","FiatCurrency","Asset","class","ExchangeRateError","AnonymousPrincipalNotAllowed","CryptoQuoteAssetNotFound","FailedToAcceptCycles","ForexBaseAssetNotFound","CryptoBaseAssetNotFound","StablecoinRateTooFewRates","ForexAssetsNotFound","InconsistentRatesReceived","RateLimited","StablecoinRateZeroRate","ForexInvalidTimestamp","NotEnoughCycles","ForexQuoteAssetNotFound","StablecoinRateNotFound","Pending","ExchangeRate__1","quote_symbol","quote_class","base_symbol","base_class","add_asset","force_update_rate","get_assets","get_exchange_rates","ExchangeRateInterfaceFactory","BlockTag","Safe","Finalized","Latest","UpgradeArg","next_transaction_nonce","ledger_suite_orchestrator_id","erc20_helper_contract_address","last_erc20_scraped_block_number","ethereum_contract_address","minimum_withdrawal_amount","ethereum_block_height","EthereumNetwork","Mainnet","Sepolia","InitArg","ethereum_network","last_scraped_block_number","ecdsa_key_name","AddCkErc20Token","ckerc20_ledger_id","chain_id","ckerc20_token_symbol","Eip1559TransactionPrice","max_priority_fee_per_gas","max_fee_per_gas","max_transaction_fee","gas_limit","DefiniteCanisterSettings","QueryStats","response_payload_bytes_total","num_instructions_total","num_calls_total","request_payload_bytes_total","CanisterStatusResponse","query_stats","reserved_cycles","EventSource","transaction_hash","log_index","UnsignedTransaction","destination","access_list","storage_keys","ReimbursementIndex","CkErc20","cketh_ledger_burn_index","ckerc20_ledger_burn_index","CkEth","ledger_burn_index","TransactionReceipt","effective_gas_price","Success","Failure","block_hash","block_number","gas_used","SkippedBlock","AcceptedErc20Deposit","from_address","SignedTransaction","raw_transaction","withdrawal_id","AddedCkErc20Token","QuarantinedDeposit","event_source","SyncedToBlock","AcceptedDeposit","ReplacedTransaction","QuarantinedReimbursement","MintedCkEth","mint_block_index","ReimbursedEthWithdrawal","reimbursed_amount","reimbursed_in_block","FailedErc20WithdrawalRequest","ReimbursedErc20Withdrawal","burn_in_block","MintedCkErc20","CreatedTransaction","InvalidDeposit","SyncedErc20ToBlock","AcceptedErc20WithdrawalRequest","withdrawal_amount","created_at","AcceptedEthWithdrawalRequest","FinalizedTransaction","transaction_receipt","CkErc20Token","GasFeeEstimate","MinterInfo","eth_balance","eth_helper_contract_address","last_observed_block_number","last_gas_fee_estimate","smart_contract_address","last_eth_scraped_block_number","erc20_balances","minter_address","EthTransaction","TxFinalizedStatus","effective_transaction_fee","Reimbursed","PendingReimbursement","RetrieveEthStatus","NotFound","TxFinalized","TxSent","TxCreated","WithdrawErc20Arg","RetrieveErc20Request","ckerc20_block_index","cketh_block_index","LedgerError","failed_burn_amount","AmountTooLow","minimum_burn_amount","WithdrawErc20Error","TokenNotSupported","supported_tokens","CkErc20LedgerError","CkEthLedgerError","RecipientAddressBlocked","WithdrawalArg","RetrieveEthRequest","WithdrawalError","min_withdrawal_amount","WithdrawalSearchParameter","ByRecipient","BySenderAccount","ByWithdrawalId","WithdrawalStatus","WithdrawalDetail","recipient_address","add_ckerc20_token","eip_1559_transaction_price","get_events","total_event_count","get_minter_info","is_address_blocked","retrieve_eth_status","withdraw_erc20","withdraw_eth","withdrawal_status","erc20Minter","Erc20MinterInterfaceFactory","AliasResult","is_public","alias","governance_id","addPrincipalAlias","addSharedPrincipal","getAdmins","getAllPrincipalAliases","getPrincipalAlias","getPrincipalAliasByLedger","getPrincipalAliasByLedgers","queryPrincipalAliasPage","setAdmins","syncSNSProject","liquidityLocks","LiquidityLocks","LiquidityLocksInterfaceFactory","TokenBalance","WalletBalance","totalBalance","UserWalletInfo","UserWallet","UploadRequests","userWallets","getUSDPrice","getUserTokens","queryUserTokens","uploadUserWallet","userTokenHelper","ToolInterfaceFactory","DepositArgs","WithdrawArgs","destoryPasscode","getFactoryCid","getTokenCid","passcodePrice","factoryCid","requestPasscode","Result_17","approved","Result_16","batch_id","cId","mintTime","attributes","nftType","Result_15","remark","tokenName","txType","Result_14","Result_13","Result_12","Result_11","QueryPositionResult","approveForAll","checkOperator","chunkSize","clearChunk","commit_batch","content_type","chunk_ids","create_batch","create_chunk","chunk_id","findRemovedTokenList","findTokenList","findTokenListByPool","findTokenMarket","findTokenTxRecord","findTxRecord","getAllowances","getCanisterInfo","getNftStat","getTokenId","getTradeCanisterId","icsMetadata","initNFTCanisterInfo","isApproveForAll","isApproveForToken","maxFileSize","ownerNFTCount","removeAllApproval","removeApproval","setTradeCanisterId","spenderRemoveApproval","tokenURI","Passcode","addPasscode","addPoolControllers","batchAddPoolControllers","batchRemovePoolControllers","batchSetPoolAdmins","clearRemovedPool","deletePasscode","getGovernanceCid","getPasscodesByPrincipal","getPrincipalPasscodes","getVersion","removePoolControllers","removePoolWithdrawErrorLog","restorePool","setPoolAdmins","upgradePoolTokenStandard","AccountBalance","Page_5","Result_26","Result_25","tokenIncome","totalTokensOwed0","totalTokensOwed1","ClaimArgs","Result_24","DecreaseLiquidityArgs","DepositAndMintArgs","fee0","fee1","positionOwner","amount0Desired","amount1Desired","Result_23","Result_22","GetPositionArgs","PositionInfo","Result_21","PositionInfoWithId","Page_4","Result_20","Result_19","TVLToken0","TVLToken1","PushError","Result_18","infoCid","records","errors","retryCount","TickLiquidityInfo","tickIndex","price0Decimal","liquidityNet","price0","price1","liquidityGross","price1Decimal","Page_3","TickInfoWithId","initialized","feeGrowthOutside1X128","secondsPerLiquidityOutsideX128","secondsOutside","feeGrowthOutside0X128","tickCumulativeOutside","swapFee0Repurchase","swapFeeReceiver","swapFee1Repurchase","TransferLog","daysFrom19700101","fromSubaccount","errorMsg","UserPositionInfo","UserPositionInfoWithTokenAmount","UserPositionInfoWithId","WithdrawErrorLog","IncreaseLiquidityArgs","PoolMetadata","maxLiquidityPerTick","nextPositionId","MintArgs","SwapArgs","allTokenBalance","approvePosition","batchRefreshIncome","checkOwnerOfUserPosition","depositAllAndMint","getAddressPrincipals","getClaimLog","getMistransferBalance","getPosition","getPositions","getSwapRecordState","getTickInfos","getTicks","getTokenAmountState","getTokenMeta","getTransferLogs","getUserByPositionId","getUserPosition","getUserPositionWithTokenAmount","getUserPositions","getUserPositionsByPrincipal","getUserUnusedBalance","getWithdrawErrorLog","quoteForAll","refreshIncome","removeErrorTransferLog","removeWithdrawErrorLog","resetTokenAmountState","sumTick","transferPosition","upgradeTokenStandard","withdrawMistransferBalance","addPoolId","getUserPools","initUserPoolMap","removePoolId","removePoolIdWithoutCheck","updatePoolIds","PoolAprIndex","aprAvg1D","aprAvg7D","aprAvg30D","PositionDataIndex","snapshotTime","token0FeeAmount","token1FeeDayAmount","fees","token1USDPrice","dayId","token1FeeAmount","token0FeeDayAmount","token0USDPrice","PriceIndex","priceLow7D","priceHigh24H","priceHigh30D","priceHigh7D","priceLow24H","priceLow30D","TaskPositionStatus","lastSyncDay4Position","syncErrorMsgs","syncPoolSize","taskStatus","currentSyncPool","pendingSyncPoolSize","step1","step2","step3","step4","step5","currentPoolPositionSize","currentDay","syncPositionDataLock","nowTime","TaskPriceStatus","currentHour","lastSyncHour4PoolPrice","syncPoolPriceLock","TaskStatus","lastSyncDay4PoolData","totalPoolSize","syncPoolDataLock","pendingSyncPriceSize","totalTokenListSize","pendingSyncPoolDataSize","pendingSyncPositionSize","ICPSwapPoolDataIndex","volumeToken0","volumeToken1","token0LockedAmount","token1LedgerId","token0LedgerId","token1LockedAmount","hourId","getPoolAprIndex","getPositionIndexs","getPriceIndex","getStatPrice","getStatus","getTaskState","queryPoolAprLine","queryPoolDataIndexPage","queryPoolPriceLine","queryPositionAprLine","queryPositionDataIndexPage","queryPositionFeesLine","queryPositionValueLine","queryPriceIndexPage","setTaskState","syncPoolAndTokenList","syncPoolPriceData","syncPositionData","swapNFT","SwapNFTInterfaceFactory","swapFactory","SwapFactoryInterfaceFactory","SwapPoolInterfaceFactory","swapPosition","PositionIndexInterfaceFactory","positionCharts","PositionCharts","PositionChartsFactory","passCodeManager","PassCodeManagerInterfaceFactory","CreateFarmArgs","secondPerCycle","endTime","rewardAmount","refunder","priceInsideLimit","token0AmountLimit","token1AmountLimit","farmIndexCid","governanceCid","feeReceiverCid","addFarmControllers","getAllFarms","getInitArgs","removeFarmControllers","setFarmAdmins","token0DecimalsConst","token1DecimalsConst","rewardTokenDecimalsConst","timeConst","Deposit","initTime","lastDistributeTime","holder","DistributeRecord","rewardTotal","rewardGained","FarmStatus","FarmInfo","totalRewardHarvested","numberOfStakes","totalRewardBalance","poolToken0","poolToken1","totalRewardUnharvested","totalReward","userNumberOfStakes","InitFarmArgs","nodeIndexCid","farmFactoryCid","positionNumLimit","poolToken0Amount","totalLiquidity","poolToken1Amount","poolToken0Symbol","poolToken1Symbol","poolToken1Decimals","poolToken0Decimals","totalRewardFee","rewardPerCycle","rewardTokenFee","totalCycleCount","currentCycleCount","rewardTokenDecimals","distribute","unstake","stake","harvest","StakeRecord","TokenAmount","TVL","clearErrorLog","finishManually","getAPRConst","getAPRRecord","getAvgAPR","getDeposit","getDistributeRecord","getErrorLog","getFarmInfo","getLimitInfo","getLiquidityInfo","getPoolMeta","getPoolTokenMeta","getPositionIds","getRewardInfo","getRewardMeta","getRewardTokenBalance","getStakeRecord","getTVL","getUserDeposits","getUserRewardBalance","getUserRewardBalances","getUserTVL","restartManually","sendRewardManually","setLimitInfo","withdrawRewardFee","AddFarmIndexArgs","farmCid","poolCid","FarmRewardInfo","poolToken0TVL","poolToken1TVL","SearchCondition","farmAmount","principalAmount","addFarmIndex","getAllFarmUsers","getAllPoolFarms","getAllRewardTokenFarms","getAllUserFarms","getFarmRewardTokenInfo","getFarmRewardTokenInfos","getFarmUsers","getFarms","getFarmsByConditions","getFarmsByPool","getFarmsByRewardToken","getLiveFarmsByPools","getPrincipalRecord","getRewardInfoByStatus","getTotalAmount","getUserFarms","syncHisData","updateFarmStatus","updateFarmTVL","updateUserInfo","farmController","FarmControllerInterfaceFactory","FarmInterfaceFactory","farmIndex","FarmIndex","FarmIndexInterfaceFactory","InitRequest","stakingTokenSymbol","rewardTokenSymbol","rewardPerTime","stakingTokenFee","stakingTokenDecimals","bonusEndTime","TokenGlobalDataInfo","stakingAmount","rewardTokenPrice","rewardTokenCanisterId","stakingTokenCanisterId","stakingTokenPrice","stakingTokenAmount","rewardTokenAmount","StakingPoolInfo","GlobalDataInfo","valueOfStaking","valueOfRewarded","totalStaker","valueOfRewardsInProgress","totalPools","userIndexCid","addStakingPoolControllers","createStakingPool","deleteStakingPool","findPoolStatInfo","findStakingPoolPage","findStakingPoolPageV2","getGlobalData","getOperationInfo","getPoolStatInfo","getStakingPool","removeStakingPoolControllers","setRewardFee","setStakingPoolAdmins","setStakingPoolTime","setUpdateGlobalDataState","setUserIndexCanister","stopStakingPool","stopTimer","unclaimdRewardFee","liquidate","TransTokenType","stakeToken","stakingStandard","transTokenType","errMsg","rewardStandard","PublicUserInfo","pendingReward","lastRewardTime","stakeAmount","rewardTokenBalance","rewardDebt","lastStakeTime","stakeTokenBalance","LiquidationStatus","pending","liquidation","liquidated","PublicStakingPoolInfo","totalDeposit","totalUnstaked","totalHarvest","liquidationStatus","rewardFee","accPerShare","totalStaked","UpdateStakingPool","findRewardRecordPage","findStakingRecordPage","findTransferRecord","findUserInfo","getPoolInfo","getUserInfo","refundRewardToken","refundUserToken","removeTransferRecord","stop","updateStakingPool","APRInfo","day","stakingTokenPriceUSD","rewardTokenPriceUSD","UserPool","userInfo","UserStakedToken","ledgerId","computeStakingPool","queryAPR","queryIndexInfo","queryPool","queryStakingPool","queryUserStakedTokens","syncStakingPool","updateUser","stakingPoolController","StakingPoolControllerInterfaceFactory","TokenPool","TokenPoolInterfaceFactory","stakeIndex","StakeIndexInterfaceFactor","ClaimEventInfo","claimEventCreator","claimedTokenAmount","claimEventId","tokenDecimals","claimEventStatus","tokenSymbol","totalUserAmount","totalTokenAmount","claimedUserAmount","claimCanisterId","claimEventName","ClaimRecordInfo","claimAmount","claimStatus","claimTime","claimUser","ClaimQuota","quota","findAllEvents","findCreateEvents","findEventRecords","findUserEventRecords","findUserEvents","getControllerAddress","getEvent","getStorageCanister","importQuota","setStatus","setStorageCanister","updateEvent","addEvent","addEventRecords","deleteEvent","findAllEventRecords","getCanisterPrincipal","userClaim","tokenClaimController","ClaimController","ClaimControllerInterfaceFactory","tokenClaimStorage","ClaimStorageInterfaceFactory","ProjectInfo","projectCid","managerAddress","tokenStand","findProjectPage","getFileCanister","getProject","setFileCanister","ProposalCreateInfo","createUser","beginTime","userAmount","ProposalInfo","storageCanisterId","createAddress","project","UserVoteRecord","voteTime","usedProof","UserVotePowersInfo","availablePowers","usedPowers","ProjectInfo__1","deleteAdmin","deleteProposal","findPage","findRecordPage","findVotePower","getProposal","getVotePowerCount","isProjectAdmin","setProject","setVotePower","updateProposal","votingController","VotingController","VoteControllerInterfaceFactory","votingCanister","VoteProjectInterfaceFactory","votingFile","VoteFileInterfaceFactory","WICP_CANISTER_ID","ICS_CANISTER_ID","NativeCurrencyName","useNodeInfoAllPools","getNodeInfoAllPools","getNodeInfoAllTokens","useInfoPoolStorageIds","getInfoPoolStorageIds","getInfoTokenStorageIds","useInfoTokenStorageIds","useListDeployedSNSs","getListDeployedSNSs","getSnsTokensInfo","sns_all_tokens_info_call_rounds","fetch_index","fetch_done","call_index","meta","availableArgsNull","useStakingPools","useStakePools","getStakingPoolGlobalData","useStakingPoolCycles","getStakingPoolCycles","stakingPoolClaim","stakingPoolDeposit","stakingPoolDepositFrom","stakingPoolHarvest","stakingTokenStake","stakingPoolWithdraw","isStakeToken","stakingPoolUnstake","useStakePoolStatInfo","getStakePoolStatInfo","useStakeAprChartData","start_time","end_time","getStakeAprChartData","useUserStakedTokens","getUserStakedTokens","useSwapPool","useSwapPoolMetadata","getSwapPoolAllTickInfos","poolId_1","getSwapTickInfos","useLiquidityTickInfos","collect","usePositionFee","getPositionFee","getSwapPoolAllBalance","_this2","getSwapNFTTokenURI","getSwapAllTicks","canisterId_1","_this6","getPaginationAllDataLimit","getSwapTicks","useSwapAllTicks","getUserPositionsPools","getSwapUserPositions","useSwapUserPositions","useSwapPositionOwner","getSwapPositionOwner","getPassCode","usePCMMetadata","requestPassCode","useUserPCMBalance","useEvent","claimToken","createClaimEvent","setClaimEventReady","setClaimEventState","setClaimEventData","useClaimEvents","getUserClaimEvents","useUserClaimEvents","useUserClaimEventTransactions","getUserClaimEventTransactions","getTokensFromList","useTokenListTokenInfo","indexRef","resultsRef","_result","totalPage","pageArgsFormat","__result","debouncedMs","inner","setInner","onChangeInner","newValue","__callback","callback_1","limit_1","call_rounds","start_index","fetch_data","substr","parseArrays","ignoreQueryPrefix","parsedQueryString","LOWEST","Rounding","isNative","isInteger","validateAndParseERC20Address","Big","_Big","added","subtracted","multiplied","divided","toSignificant","significantDigits","format","rounding","decimalPlaces","DP","Decimal","_Decimal","toSignificantRounding","ROUND_HALF_UP","ROUND_UP","RoundingMode","toFixedRounding","RoundDown","RoundHalfUp","RoundUp","tryParseFraction","fractionish","remainder","otherParsed","precision","toSignificantDigits","RM","asFraction","ONE_HUNDRED","toPercent","isPercent","baseCurrency","quoteCurrency","quoteAmount","baseAmount","scalar","adjustedForDecimals","BaseCurrency","validateAndParseAddress","LiquidityMath","addDelta","NEGATIVE_ONE","MAX_FEE","SwapMath","computeSwapStep","sqrtRatioCurrentX96","sqrtRatioTargetX96","amountRemaining","feePips","returnValues","amountRemainingLessFee","SqrtPriceMath","getAmount0Delta","getAmount1Delta","sqrtRatioNextX96","getNextSqrtPriceFromInput","getNextSqrtPriceFromOutput","FullMath","mulDivRoundingUp","NoTickDataProvider","getTick","_tick","ERROR_MESSAGE","nextInitializedTickWithinOneWord","_lte","_tickSpacing","tickComparator","TickList","validateList","abs","accumulator","isSorted","isBelowSmallest","isAtOrAboveLargest","binarySearch","l","floor","nextInitializedTick","lte","compressed","minimum","maximum","Tick","TickListDataProvider","ticksMapped","NO_TICK_DATA_PROVIDER_DEFAULT","computePoolAddress","tickCurrent","tickDataProvider","_token0Price","Q192","_token1Price","priceOf","sqrtPriceLimitX96","amountCalculated","amountSpecified","_sqrtPriceLimitX96","exactInput","amountSpecifiedRemaining","sqrtPriceStartX96","tickNext","sqrtPriceNextX96","getSqrtRatioAtTick","getTickAtSqrtRatio","maxLiquidityForAmount0Imprecise","sqrtRatioAX96","sqrtRatioBX96","intermediate","Q96","maxLiquidityForAmount0Precise","maxLiquidityForAmount1","maxLiquidityForAmounts","useFullPrecision","maxLiquidityForAmount0","liquidity0","liquidity1","_token0Amount","_token1Amount","_mintAmounts","token0PriceLower","tickToPrice","token0PriceUpper","ratiosAfterSlippage","priceLower","priceUpper","sqrtRatioX96Lower","sqrtRatioX96Upper","mintAmountsWithSlippage","poolLower","poolUpper","positionThatWillBeCreated","fromAmounts","mintAmounts","burnAmountsWithSlippage","fromAmount0","fromAmount1","MAX_SAFE_INTEGER","TWO","sqrt","z","product","ratioX192","sorted","nextTickPrice","MaxUint160","multiplyIn256","roundUp","numerator1","numerator2","sqrtPX96","getNextSqrtPriceFromAmount0RoundingUp","getNextSqrtPriceFromAmount1RoundingDown","sum","addIn256","POWERS_OF_2","pow","mulShift","mulBy","Q32","absTick","ratio","sqrtRatioX128","msb","power","mostSignificantBit","log_2","f","log_sqrt10001","tickLow","tickHigh","BaseTokenAdapter","DIP20TokenAdapter","totalHolder","_this3","_this4","_this5","_this7","_this8","_this9","_this10","_this11","_ref13","_this12","actualReceivedByTransfer","_ref14","getMintingAccount","_ref15","DIP20WICPTokenAdapter","DIP20WICPAdapter","DIP20XTCTokenAdapter","DIP20XTCAdapter","EXTTokenAdapter","isBigIntMemo","cap_id","capId","getCapRootId","getCapUserTransactions","_e","witness","getCapTransactions","_f","_g","_this13","ICPAdapter","create_at_time","from_sub_account","ICRC1Adapter","init_result","token_canister_transactions","archivedTransactions","from_owner","_h","_j","_from_sub","_l","_k","_m","to_owner","_p","_o","_q","_to_sub","_s","_r","_t","from_sub","from_account","to_sub","feeArray","_u","_v","_w","_x","_y","enumToString","_2","_0","_z","_1","_3","icrcTransactionFormat","ICRC2Adapter","icrc2Adapter","request","ICS_TOKEN_INFO","GHOST_TOKEN_ID","GHOST_TOKEN_INFO","ck_BTC_TOKEN_INFO","ckUSDCTokenInfo","ckSepoliaUSDCTokenInfo","ckETHTokenInfo","ckSepoliaETHTokenInfo","ckLinkTokenInfo","Breadcrumbs","prevLabel","currentLabel","prevLink","goBack","ChevronRight","gridAutoRows","loadingAnimation","LoadingRow","gridColumnGap","gridRowGap","animationFillMode","backgroundSize","willChange","gridColumn","cardStyles","_border","tip","DropDownMenu","multiple","customLabel","oldSelected","newSelected","handleSearchChange","Search","isFiltered","handleCheckboxChange","selectedValue","SelectPanel","valueColor","setShowClose","selectLabel","rotate","selectedMenu","ALink","textDecorationColor","arrow","Tooltip","tips","iconSize","iconColor","MuiToolTip","PopperProps","HelpCircle","MaxButton","cycleValueFormat","noUnit","valueofUser","isPrincipalUser","total_length","resultLength","isSubAccount","argument","_isPrincipal","createElement","setAttribute","appendChild","click","digits","ab","_num","numbro","formatCurrency","average","mantissa","abbreviations","million","billion","formatDollarTokenPrice","formatAmount","percentToNum","numToPercent","pageStart","isResultErrKey","isResultOkKey","isObject","isResultKey","str","shortenString","_amount","_decimals","__webpack_module_cache__","moduleId","cachedModule","__webpack_modules__","m","amdO","deferred","O","chunkIds","priority","notFulfilled","Infinity","fulfilled","j","getter","__esModule","leafPrototypes","getProto","getPrototypeOf","ns","def","getOwnPropertyNames","definition","defineProperty","enumerable","chunkId","promises","u","miniCssF","g","globalThis","Function","hmd","prop","inProgress","dataWebpackPrefix","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","charset","nc","onScriptComplete","onload","doneFns","parentNode","removeChild","head","toStringTag","nmd","paths","oldGetScript","oldLoadScript","queryMap","countMap","retries","realSrc","retryAttempt","cacheBust","getRetryDelay","loadStylesheet","fullhref","existingLinkTags","dataHref","tag","existingStyleTags","findStylesheet","oldTag","linkTag","errorType","realHref","insertBefore","nextSibling","createStylesheet","installedCssChunks","miniCss","installedChunks","installedChunkData","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""}