{"version":3,"file":"new-home.js","mappings":";;;;;;;;;;;CAEA;;AACA,IAAMC,WAAW,GAAG,qBAApB;AACA,IAAMC,SAAS,GAAG,GAAlB;AACA,IAAMC,UAAU,GAAG,EAAnB;AACA,IAAMC,cAAc,GAAG,SAAvB;AACA,IAAMC,aAAa,GAAG,mCAAtB;;AAEA,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAACC,KAAD;EAAA,OAAWC,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYD,IAAI,CAACE,GAAL,CAAS,CAAT,EAAYH,KAAZ,CAAZ,CAAX;AAAA,CAApB,EAEA;AACA;;;AACO,IAAMI,aAAa,GAAG,SAAhBA,aAAgB,CAACC,YAAD,EAAeC,YAAf,EAAgC;EAC3D,IAAMC,KAAK,GAAGd,6CAAC,CAACY,YAAD,CAAf;EACA,IAAMG,KAAK,GAAGD,KAAK,CAACE,IAAN,CAAWH,YAAX,EAAyBI,GAAzB,EAAd;EACA,IAAI,CAACF,KAAK,CAACG,MAAX,EAAmB;EAEnB,IAAMC,UAAU,GAAGC,MAAM,CAACC,UAAP,CAAkBpB,WAAlB,CAAnB;EACA,IAAIqB,OAAO,GAAG,CAAd;EACA,IAAIC,aAAa,GAAG,KAApB;EACA,IAAIC,UAAU,GAAG,KAAjB;;EAEA,IAAMC,MAAM,GAAG,SAATA,MAAS,GAAM;IACnBH,OAAO,GAAG,CAAV;IACA,IAAMI,cAAc,GAAGN,MAAM,CAACO,WAA9B;IACA,IAAMC,QAAQ,GAAGb,KAAK,CAACc,GAAN,CAAU,UAACC,IAAD,EAAOC,KAAP,EAAiB;MAC1C,IAAMC,QAAQ,GAAG9B,SAAS,GAAG6B,KAAK,GAAG5B,UAArC;MACA,IAAM8B,QAAQ,GAAGP,cAAc,GAAGI,IAAI,CAACI,qBAAL,GAA6BC,GAA/D;MACA,OAAO7B,WAAW,CAAC2B,QAAQ,GAAGzB,IAAI,CAACE,GAAL,CAAS,CAAT,EAAYgB,cAAc,GAAGM,QAA7B,CAAZ,CAAlB;IACD,CAJgB,CAAjB;IAKAjB,KAAK,CAACqB,OAAN,CAAc,UAACN,IAAD,EAAOC,KAAP,EAAiB;MAC7B,IAAMM,KAAK,GAAGT,QAAQ,CAACU,KAAT,CAAeP,KAAK,GAAG,CAAvB,EAA0BQ,MAA1B,CAAiC,UAACC,GAAD,EAAMjC,KAAN;QAAA,OAAgBiC,GAAG,GAAGjC,KAAtB;MAAA,CAAjC,EAA8D,CAA9D,CAAd;MACAuB,IAAI,CAACW,KAAL,CAAWC,WAAX,CAAuBtC,cAAvB,EAAuCiC,KAAK,CAACM,OAAN,CAAc,CAAd,CAAvC;IACD,CAHD;EAID,CAZD;;EAcA,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,GAAM;IAC3B,IAAI,CAACtB,OAAL,EAAcA,OAAO,GAAGuB,qBAAqB,CAACpB,MAAD,CAA/B;EACf,CAFD;;EAIA,IAAMqB,YAAY,GAAG,SAAfA,YAAe,GAAM;IACzB,IAAMC,WAAW,GAAGxB,aAAa,IAAIJ,UAAU,CAAC6B,OAAhD;IACA,IAAID,WAAW,KAAKvB,UAApB,EAAgC;IAChCA,UAAU,GAAGuB,WAAb;;IACA,IAAIA,WAAJ,EAAiB;MACf/C,6CAAC,CAACoB,MAAD,CAAD,CAAU6B,EAAV,CAAa5C,aAAb,EAA4BuC,cAA5B;MACAnB,MAAM;IACP,CAHD,MAGO;MACLzB,6CAAC,CAACoB,MAAD,CAAD,CAAU8B,GAAV,CAAc7C,aAAd;MACA,IAAI,CAACc,UAAU,CAAC6B,OAAhB,EAAyBjC,KAAK,CAACqB,OAAN,CAAc,UAACN,IAAD;QAAA,OAAUA,IAAI,CAACW,KAAL,CAAWU,cAAX,CAA0B/C,cAA1B,CAAV;MAAA,CAAd;IAC1B;EACF,CAXD;;EAaAe,UAAU,CAACiC,gBAAX,CAA4B,QAA5B,EAAsCN,YAAtC;EACA,IAAIO,oBAAJ,CAAyB,UAACC,OAAD,EAAa;IACpC/B,aAAa,GAAG+B,OAAO,CAAC,CAAD,CAAP,CAAWC,cAA3B;IACAT,YAAY;EACb,CAHD,EAGGU,OAHH,CAGW1C,KAAK,CAAC,CAAD,CAHhB;AAID,CA9CM;;;;;;;;;;;;ACbP;AAEA,IAAM2C,kBAAkB,GAAG,eAA3B;AACA,IAAMC,kBAAkB,GAAG,eAA3B,EAEA;;AACO,IAAMC,OAAO,GAAG,SAAVA,OAAU,CAACC,cAAD,EAAoB;EACzC,IAAMC,QAAQ,GAAG7D,6CAAC,CAAC4D,cAAD,CAAlB;;EACA,IAAME,QAAQ,GAAG,SAAXA,QAAW,CAACC,OAAD;IAAA,OAAa/D,6CAAC,YAAK+D,OAAO,CAACC,IAAR,CAAaN,kBAAb,CAAL,EAAd;EAAA,CAAjB;;EACA,IAAMO,MAAM,GAAG,SAATA,MAAS,CAACF,OAAD;IAAA,OAAaA,OAAO,CAACC,IAAR,CAAaP,kBAAb,MAAqC,MAAlD;EAAA,CAAf;;EAEAI,QAAQ,CAACZ,EAAT,CAAY,OAAZ,EAAqB,YAAY;IAC/B,IAAMiB,QAAQ,GAAGlE,6CAAC,CAAC,IAAD,CAAlB;IACA,IAAMmE,OAAO,GAAGF,MAAM,CAACC,QAAD,CAAtB;IAEAL,QAAQ,CAACO,IAAT,CAAc,UAACC,CAAD,EAAIC,MAAJ,EAAe;MAC3B,IAAMP,OAAO,GAAG/D,6CAAC,CAACsE,MAAD,CAAjB;MACA,IAAI,CAACL,MAAM,CAACF,OAAD,CAAX,EAAsB;MACtBA,OAAO,CAACC,IAAR,CAAaP,kBAAb,EAAiC,OAAjC;MACAK,QAAQ,CAACC,OAAD,CAAR,CAAkBQ,IAAlB,GAAyBC,OAAzB;IACD,CALD;;IAOA,IAAI,CAACL,OAAL,EAAc;MACZD,QAAQ,CAACF,IAAT,CAAcP,kBAAd,EAAkC,MAAlC;MACAK,QAAQ,CAACI,QAAD,CAAR,CAAmBK,IAAnB,GAA0BE,SAA1B;IACD;EACF,CAfD;AAgBD,CArBM;;;;;;;;;;;;ACNP;AAEA,IAAMC,mBAAmB,GAAG,EAA5B;AACA,IAAMC,YAAY,GAAG,EAArB;AACA,IAAMC,aAAa,GAAG,OAAtB,EACA;;AACA,IAAMC,UAAU,GAAG,GAAnB;AACA,IAAMC,aAAa,GAAG1D,MAAM,CAACC,UAAP,CAAkB,kCAAlB,EAAsD2B,OAA5E,EAEA;AACA;;AACO,IAAM+B,eAAe,GAAG,SAAlBA,eAAkB,CAACC,eAAD,EAAkBC,aAAlB,EAAoC;EACjE,IAAMC,QAAQ,GAAGlF,6CAAC,CAACgF,eAAD,CAAlB;EACA,IAAMG,KAAK,GAAGD,QAAQ,CAAClE,IAAT,CAAciE,aAAd,EAA6B,CAA7B,CAAd;EACA,IAAI,CAACE,KAAD,IAAUL,aAAd,EAA6B;EAE7B,IAAIM,MAAM,GAAG,CAAb;EACA,IAAIC,QAAQ,GAAG,CAAf;EACA,IAAI/D,OAAO,GAAG,CAAd,CAPiE,CAQjE;;EACA,IAAIgE,SAAS,GAAG,KAAhB;EACA,IAAIC,MAAM,GAAG,KAAb;EACA,IAAIC,WAAW,GAAG,KAAlB;EACA,IAAIC,SAAS,GAAG,KAAhB;EACA,IAAIC,SAAS,GAAGP,KAAK,CAACQ,WAAN,GAAoB,CAApC;;EAEA,IAAMC,IAAI,GAAG,SAAPA,IAAO,CAACC,GAAD,EAAS;IACpB,IAAMC,SAAS,GAAGtF,IAAI,CAACC,GAAL,CAASkE,YAAT,EAAuBkB,GAAG,GAAGR,QAA7B,CAAlB;IACAA,QAAQ,GAAGQ,GAAX;IACAT,MAAM,IAAKV,mBAAmB,GAAGoB,SAAvB,GAAoC,IAA9C;IACA,IAAIJ,SAAS,IAAI,CAACN,MAAD,IAAWM,SAA5B,EAAuCN,MAAM,IAAIM,SAAV;IACvCP,KAAK,CAAC1C,KAAN,CAAYsD,SAAZ,wBAAsCX,MAAtC;IACA9D,OAAO,GAAGuB,qBAAqB,CAAC+C,IAAD,CAA/B;EACD,CAPD;;EASA,IAAMI,YAAY,GAAG,SAAfA,YAAe,GAAM;IACzB,IAAMC,SAAS,GAAGR,SAAS,IAAI,CAACH,SAAd,IAA2B,CAACC,MAA5B,IAAsC,CAACC,WAAvC,IAAsD,CAACU,QAAQ,CAACC,MAAlF;;IACA,IAAIF,SAAS,IAAI,CAAC3E,OAAlB,EAA2B;MACzB+D,QAAQ,GAAGe,WAAW,CAACP,GAAZ,EAAX;MACAvE,OAAO,GAAGuB,qBAAqB,CAAC+C,IAAD,CAA/B;IACD,CAHD,MAGO,IAAI,CAACK,SAAD,IAAc3E,OAAlB,EAA2B;MAChC+E,oBAAoB,CAAC/E,OAAD,CAApB;MACAA,OAAO,GAAG,CAAV;IACD;EACF,CATD,CAxBiE,CAmCjE;;;EACA,IAAMgF,UAAU,GAAG,SAAbA,UAAa,CAACC,OAAD;IAAA,OAAa,UAACC,KAAD,EAAW;MACzC,IAAIA,KAAK,CAACC,aAAN,CAAoBC,WAApB,KAAoC9B,aAAxC,EAAuD;MACvDU,SAAS,GAAGiB,OAAZ;MACAP,YAAY;IACb,CAJkB;EAAA,CAAnB;;EAKAd,QAAQ,CAACjC,EAAT,CAAY,cAAZ,EAA4BqD,UAAU,CAAC,IAAD,CAAtC;EACApB,QAAQ,CAACjC,EAAT,CAAY,cAAZ,EAA4BqD,UAAU,CAAC,KAAD,CAAtC,EA1CiE,CA4CjE;EACA;EACA;;EACA,IAAIK,eAAe,GAAG/B,aAAtB;EACA,IAAIgC,UAAU,GAAG,CAAjB;;EACA,IAAMC,OAAO,GAAG,SAAVA,OAAU,GAAM;IACpBtB,MAAM,GAAG,KAAT;IACAS,YAAY;EACb,CAHD;;EAIAd,QAAQ,CAACjC,EAAT,CAAY,aAAZ,EAA2B,UAACuD,KAAD,EAAW;IACpCG,eAAe,GAAGH,KAAK,CAACC,aAAN,CAAoBC,WAAtC;IACA,IAAIC,eAAe,KAAK/B,aAAxB,EAAuC;IACvCgC,UAAU,GAAGR,WAAW,CAACP,GAAZ,EAAb;IACAN,MAAM,GAAG,IAAT;IACAS,YAAY;EACb,CAND;EAOAd,QAAQ,CAACjC,EAAT,CAAY,yBAAZ,EAAuC4D,OAAvC;EACA3B,QAAQ,CAACjC,EAAT,CAAY,OAAZ,EAAqB,YAAM;IACzB,IAAI0D,eAAe,KAAK/B,aAApB,IAAqCwB,WAAW,CAACP,GAAZ,KAAoBe,UAApB,GAAiC/B,UAA1E,EAAsF;IACtFW,WAAW,GAAG,CAACA,WAAf;IACAQ,YAAY;EACb,CAJD,EA7DiE,CAkEjE;;EACAd,QAAQ,CAACjC,EAAT,CAAY,aAAZ,EAA2B,UAACuD,KAAD,EAAW;IACpC,IAAIG,eAAe,KAAK/B,aAAxB,EAAuC4B,KAAK,CAACM,cAAN;EACxC,CAFD;EAGA9G,6CAAC,CAACkG,QAAD,CAAD,CAAYjD,EAAZ,CAAe,kBAAf,EAAmC+C,YAAnC;EACA,IAAIe,cAAJ,CAAmB,YAAM;IAAErB,SAAS,GAAGP,KAAK,CAACQ,WAAN,GAAoB,CAAhC;EAAoC,CAA/D,EAAiEnC,OAAjE,CAAyE2B,KAAzE;EACA,IAAI9B,oBAAJ,CAAyB,UAACC,OAAD,EAAa;IACpCmC,SAAS,GAAGnC,OAAO,CAAC,CAAD,CAAP,CAAWC,cAAvB;IACAyC,YAAY;EACb,CAHD,EAGGxC,OAHH,CAGW0B,QAAQ,CAAC,CAAD,CAHnB;AAID,CA5EM;;;;;;;;;;;;ACXP;AAEA,IAAM8B,UAAU,GAAG,kBAAnB;AACA,IAAMC,WAAW,GAAG,aAApB;AACA,IAAMC,YAAY,GAAG,GAArB;AACA,IAAMpC,aAAa,GAAG1D,MAAM,CAACC,UAAP,CAAkB,kCAAlB,EAAsD2B,OAA5E,EAEA;AACA;AACA;;AACA,IAAMmE,OAAO,GAAG,SAAVA,OAAU,CAACC,MAAD,EAASC,MAAT,EAAiBC,MAAjB,EAAyBC,UAAzB,EAAwC;EACtDH,MAAM,CAAChD,IAAP,CAAY,UAACrC,KAAD,EAAQD,IAAR,EAAiB;IAC3B9B,6CAAC,CAAC8B,IAAD,CAAD,CACG0F,QADH,CACYR,UADZ,EAEGS,GAFH,CAEO;MACH,4BAAqBJ,MAAM,GAAG7G,IAAI,CAACC,GAAL,CAASsB,KAAK,GAAGuF,MAAjB,EAAyBJ,YAAzB,CAA9B,OADG;MAEH,+BAAwBK,UAAxB;IAFG,CAFP;EAMD,CAPD;AAQD,CATD;;AAWO,IAAMG,UAAU,GAAG,SAAbA,UAAa,OAAyD;EAAA,IAAtDC,gBAAsD,QAAtDA,gBAAsD;EAAA,IAApCC,YAAoC,QAApCA,YAAoC;EAAA,IAAtBC,eAAsB,QAAtBA,eAAsB;EACjF,IAAI/C,aAAa,IAAI,EAAE,0BAA0B1D,MAA5B,CAArB,EAA0D;EAE1D,IAAM0G,MAAM,GAAG,EAAf;;EACA,IAAMC,SAAS,GAAG,SAAZA,SAAY,CAACC,QAAD,EAAWC,QAAX,EAAqBZ,MAArB,EAA6BC,MAA7B,EAAqCC,UAArC,EAAoD;IACpEvH,6CAAC,CAACgI,QAAD,CAAD,CAAY5D,IAAZ,CAAiB,UAACC,CAAD,EAAI6D,IAAJ,EAAa;MAC5B,IAAMd,MAAM,GAAGa,QAAQ,CAACjI,6CAAC,CAACkI,IAAD,CAAF,CAAvB;MACAf,OAAO,CAACC,MAAD,EAASC,MAAT,EAAiBC,MAAjB,EAAyBC,UAAzB,CAAP;MACAO,MAAM,CAACK,IAAP,CAAY;QAAED,IAAI,EAAJA,IAAF;QAAQd,MAAM,EAANA;MAAR,CAAZ;IACD,CAJD;EAKD,CAND;;EAOAW,SAAS,CAACJ,gBAAD,EAAmB,UAACS,KAAD;IAAA,OAAWA,KAAK,CAACC,QAAN,EAAX;EAAA,CAAnB,EAAgD,CAAhD,EAAmD,GAAnD,EAAwD,EAAxD,CAAT;EACAN,SAAS,CAACH,YAAD,EAAe,UAACQ,KAAD;IAAA,OAAWA,KAAX;EAAA,CAAf,EAAiC,CAAjC,EAAoC,CAApC,EAAuC,EAAvC,CAAT;EACAL,SAAS,CAACF,eAAD,EAAkB,UAACO,KAAD;IAAA,OAAWA,KAAK,CAACC,QAAN,EAAX;EAAA,CAAlB,EAA+C,GAA/C,EAAoD,EAApD,EAAwD,EAAxD,CAAT,CAbiF,CAejF;;EACAP,MAAM,CAACQ,IAAP,CAAY,UAACC,KAAD,EAAQC,MAAR;IAAA,OAAoBD,KAAK,CAACL,IAAN,CAAWO,uBAAX,CAAmCD,MAAM,CAACN,IAA1C,IAAkDQ,IAAI,CAACC,2BAAvD,GAAqF,CAAC,CAAtF,GAA0F,CAA9G;EAAA,CAAZ;EAEA,IAAMC,QAAQ,GAAG,IAAIvF,oBAAJ,CAAyB,UAACC,OAAD,EAAa;IACrDA,OAAO,CAAClB,OAAR,CAAgB,UAACyG,KAAD,EAAW;MACzB,IAAMC,MAAM,GAAGD,KAAK,CAACE,kBAAN,CAAyBC,MAAzB,GAAkC,CAAjD;MACA,IAAI,CAACH,KAAK,CAACtF,cAAP,IAAyB,CAACuF,MAA9B,EAAsC;MACtC,IAAMG,SAAS,GAAGnB,MAAM,CAACoB,SAAP,CAAiB,UAACC,KAAD;QAAA,OAAWA,KAAK,CAACjB,IAAN,KAAeW,KAAK,CAACO,MAAhC;MAAA,CAAjB,CAAlB;MACAtB,MAAM,CAACxF,KAAP,CAAa,CAAb,EAAgB2G,SAAS,GAAG,CAA5B,EAA+B7G,OAA/B,CAAuC,UAAC+G,KAAD,EAAW;QAChD,IAAIA,KAAK,CAACE,KAAV,EAAiB;QACjBF,KAAK,CAACE,KAAN,GAAc,IAAd;QACAF,KAAK,CAAC/B,MAAN,CAAaI,QAAb,CAAsBP,WAAtB;QACA2B,QAAQ,CAACU,SAAT,CAAmBH,KAAK,CAACjB,IAAzB;MACD,CALD;IAMD,CAVD;EAWD,CAZgB,EAYd;IAAEqB,SAAS,EAAE,IAAb;IAAmBC,UAAU,EAAE;EAA/B,CAZc,CAAjB;EAcA1B,MAAM,CAAC1F,OAAP,CAAe,UAAC+G,KAAD;IAAA,OAAWP,QAAQ,CAACpF,OAAT,CAAiB2F,KAAK,CAACjB,IAAvB,CAAX;EAAA,CAAf;AACD,CAjCM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACrBP;AACA;AACA,IAAMuB,aAAa,GAAG,YAAtB;AACA,IAAMC,aAAa,GAAG,kBAAtB;AACA,IAAMC,aAAa,GAAG,kBAAtB;AACA,IAAMC,YAAY,GAAG,sBAArB;AACA,IAAMC,eAAe,GAAG,sBAAxB;AACA,IAAMC,oBAAoB,GAAG,cAA7B,EACA;;AACA,IAAMC,YAAY,GAAG,oBAArB,EACA;;AACA,IAAMC,UAAU,aAAMD,YAAN,4CAAhB,EACA;;AACA,IAAME,qBAAqB,GAAG,IAA9B;AACA,IAAMC,eAAe,GAAG,IAAxB,EACA;;AACA,IAAMtF,aAAa,GAAG,OAAtB;AACA,IAAMuF,cAAc,GAAG,KAAvB;AACA,IAAMC,cAAc,GAAG,IAAvB;AACA,IAAMC,eAAe,GAAG,GAAxB;AACA,IAAMC,QAAQ,GAAG,IAAjB,EACA;;AACA,IAAMC,SAAS,GAAG,IAAlB,EACA;;AACA,IAAMC,cAAc,GAAG,CAAvB;AACA,IAAMC,WAAW,GAAG,CAAC,IAArB;AACA,IAAMC,mBAAmB,GAAG,CAA5B;AACA,IAAMC,MAAM,GAAGnK,IAAI,CAACoK,EAAL,GAAU,CAAzB;AAEA,IAAMC,UAAU,GAAG,CACjB,+JADiB,EAEjB,oIAFiB,EAGjB,4LAHiB,CAAnB;AAKA,IAAMC,QAAQ,GAAG;EAAEC,CAAC,EAAE,IAAL;EAAWC,CAAC,EAAE,IAAd;EAAoBC,KAAK,EAAE,IAA3B;EAAiCC,MAAM,EAAE;AAAzC,CAAjB;AACA,IAAMC,WAAW,GAAGL,QAAQ,CAACG,KAAT,GAAiBH,QAAQ,CAACI,MAA9C;AACA,IAAME,aAAa,GAAG,GAAtB;AACA,IAAMC,aAAa,GAAG,CAAtB;AACA,IAAMC,YAAY,GAAG,CAArB;AACA,IAAMC,aAAa,GAAG,CAAtB;AACA,IAAMC,aAAa,GAAG,CAAtB;AACA,IAAM1G,aAAa,GAAG1D,MAAM,CAACC,UAAP,CAAkB,kCAAlB,EAAsD2B,OAA5E;;AAEA,IAAMyI,KAAK,GAAG,SAARA,KAAQ,CAAClL,KAAD;EAAA,IAAQE,GAAR,uEAAc,CAAd;EAAA,IAAiBC,GAAjB,uEAAuB,CAAvB;EAAA,OAA6BF,IAAI,CAACC,GAAL,CAASC,GAAT,EAAcF,IAAI,CAACE,GAAL,CAASD,GAAT,EAAcF,KAAd,CAAd,CAA7B;AAAA,CAAd;;AACA,IAAMmL,cAAc,GAAG,SAAjBA,cAAiB,CAACC,QAAD;EAAA,OAAeA,QAAQ,GAAG,GAAX,GAAiB,aAAIA,QAAJ,EAAgB,CAAhB,CAAjB,GAAqC,IAAI,SAAE,CAAC,CAAD,GAAKA,QAAL,GAAgB,CAAlB,EAAwB,CAAxB,IAA6B,CAArF;AAAA,CAAvB;;AACA,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAACD,QAAD;EAAA,OAAc,aAAK,IAAIA,QAAT,EAAsB,CAAtB,CAAd;AAAA,CAArB,EAEA;;;AACA,IAAIE,eAAe,GAAG,IAAtB;;AACA,IAAMC,aAAa,GAAG,SAAhBA,aAAgB,GAAM;EAC1B,IAAID,eAAJ,EAAqB,OAAOA,eAAP;EACrB,IAAME,KAAK,GAAG,EAAd;EACA,IAAMd,KAAK,GAAGzK,IAAI,CAACwL,IAAL,CAAUlB,QAAQ,CAACG,KAAT,GAAiBc,KAA3B,IAAoC,CAAlD;EACA,IAAMb,MAAM,GAAG1K,IAAI,CAACwL,IAAL,CAAUlB,QAAQ,CAACI,MAAT,GAAkBa,KAA5B,IAAqC,CAApD;EACA,IAAME,MAAM,GAAG/F,QAAQ,CAACgG,aAAT,CAAuB,QAAvB,CAAf;EACAD,MAAM,CAAChB,KAAP,GAAeA,KAAf;EACAgB,MAAM,CAACf,MAAP,GAAgBA,MAAhB;EACA,IAAMiB,OAAO,GAAGF,MAAM,CAACG,UAAP,CAAkB,IAAlB,CAAhB;EACAD,OAAO,CAACE,YAAR,CAAqBN,KAArB,EAA4B,CAA5B,EAA+B,CAA/B,EAAkCA,KAAlC,EAAyC,CAACjB,QAAQ,CAACC,CAAV,GAAcgB,KAAd,GAAsB,CAA/D,EAAkE,CAACjB,QAAQ,CAACE,CAAV,GAAce,KAAd,GAAsB,CAAxF;EACAlB,UAAU,CAACzI,OAAX,CAAmB,UAACkK,IAAD;IAAA,OAAUH,OAAO,CAACI,IAAR,CAAa,IAAIC,MAAJ,CAAWF,IAAX,CAAb,CAAV;EAAA,CAAnB;EACA,IAAMG,MAAM,GAAGN,OAAO,CAACO,YAAR,CAAqB,CAArB,EAAwB,CAAxB,EAA2BzB,KAA3B,EAAkCC,MAAlC,EAA0CyB,IAAzD;;EACA,IAAMC,QAAQ,GAAG,SAAXA,QAAW,CAACC,MAAD,EAASC,GAAT;IAAA,OAAiBD,MAAM,IAAI,CAAV,IAAeC,GAAG,IAAI,CAAtB,IAA2BD,MAAM,GAAG5B,KAApC,IAA6C6B,GAAG,GAAG5B,MAAnD,IAC7BuB,MAAM,CAAC,CAACK,GAAG,GAAG7B,KAAN,GAAc4B,MAAf,IAAyB,CAAzB,GAA6B,CAA9B,CAAN,IAA0C,GAD9B;EAAA,CAAjB;;EAEA,IAAMN,IAAI,GAAG,EAAb;EACA,IAAMQ,GAAG,GAAG,EAAZ;;EACA,KAAK,IAAID,GAAG,GAAG,CAAf,EAAkBA,GAAG,GAAG5B,MAAxB,EAAgC4B,GAAG,EAAnC,EAAuC;IACrC,KAAK,IAAID,MAAM,GAAG,CAAlB,EAAqBA,MAAM,GAAG5B,KAA9B,EAAqC4B,MAAM,EAA3C,EAA+C;MAC7C,IAAI,CAACD,QAAQ,CAACC,MAAD,EAASC,GAAT,CAAb,EAA4B;MAC5BP,IAAI,CAACpE,IAAL,CAAU0E,MAAM,GAAG5B,KAAnB,EAA0B6B,GAAG,GAAG5B,MAAhC;MACA,IAAM8B,MAAM,GAAG,CAACJ,QAAQ,CAACC,MAAM,GAAG,CAAV,EAAaC,GAAb,CAAT,IAA8B,CAACF,QAAQ,CAACC,MAAM,GAAG,CAAV,EAAaC,GAAb,CAAvC,IAA4D,CAACF,QAAQ,CAACC,MAAD,EAASC,GAAG,GAAG,CAAf,CAArE,IAA0F,CAACF,QAAQ,CAACC,MAAD,EAASC,GAAG,GAAG,CAAf,CAAlH;MACA,IAAIE,MAAJ,EAAYD,GAAG,CAAC5E,IAAJ,CAAS0E,MAAM,GAAG5B,KAAlB,EAAyB6B,GAAG,GAAG5B,MAA/B;IACb;EACF;;EACDW,eAAe,GAAG;IAAEU,IAAI,EAAJA,IAAF;IAAQQ,GAAG,EAAHA,GAAR;IAAa9B,KAAK,EAALA,KAAb;IAAoBC,MAAM,EAANA;EAApB,CAAlB;EACA,OAAOW,eAAP;AACD,CA1BD;;AA4BA,IAAMoB,aAAa,GAAG,SAAhBA,aAAgB,CAACC,EAAD,EAAKC,YAAL,EAAmBC,cAAnB,EAAsC;EAC1D,IAAMC,OAAO,GAAG,SAAVA,OAAU,CAACC,IAAD,EAAOC,MAAP,EAAkB;IAChC,IAAMC,MAAM,GAAGN,EAAE,CAACO,YAAH,CAAgBH,IAAhB,CAAf;IACAJ,EAAE,CAACQ,YAAH,CAAgBF,MAAhB,EAAwBD,MAAxB;IACAL,EAAE,CAACS,aAAH,CAAiBH,MAAjB;IACA,OAAOA,MAAP;EACD,CALD;;EAMA,IAAMI,OAAO,GAAGV,EAAE,CAACD,aAAH,EAAhB;EACAC,EAAE,CAACW,YAAH,CAAgBD,OAAhB,EAAyBP,OAAO,CAACH,EAAE,CAACY,aAAJ,EAAmBX,YAAnB,CAAhC;EACAD,EAAE,CAACW,YAAH,CAAgBD,OAAhB,EAAyBP,OAAO,CAACH,EAAE,CAACa,eAAJ,EAAqBX,cAArB,CAAhC;EACAF,EAAE,CAACc,WAAH,CAAeJ,OAAf;EACA,IAAMK,QAAQ,GAAG,EAAjB;EACA,IAAMC,YAAY,GAAGhB,EAAE,CAACiB,mBAAH,CAAuBP,OAAvB,EAAgCV,EAAE,CAACkB,eAAnC,CAArB;;EACA,KAAK,IAAIrM,KAAK,GAAG,CAAjB,EAAoBA,KAAK,GAAGmM,YAA5B,EAA0CnM,KAAK,EAA/C,EAAmD;IACjD,2BAAiBmL,EAAE,CAACmB,gBAAH,CAAoBT,OAApB,EAA6B7L,KAA7B,CAAjB;IAAA,IAAQuM,IAAR,wBAAQA,IAAR;;IACAL,QAAQ,CAACK,IAAD,CAAR,GAAiBpB,EAAE,CAACqB,kBAAH,CAAsBX,OAAtB,EAA+BU,IAA/B,CAAjB;EACD;;EACD,OAAO;IAAEV,OAAO,EAAPA,OAAF;IAAWK,QAAQ,EAARA;EAAX,CAAP;AACD,CAlBD;;AAoBA,IAAMO,sBAAsB,ueAA5B;AAKA,IAAMC,wBAAwB,02BAA9B;AAQA,IAAMC,kBAAkB,GAAG,8DAA3B;AACA,IAAMC,oBAAoB,GAAG,gGAA7B;AACA,IAAMC,mBAAmB,GAAG,CAC1B;EAAEN,IAAI,EAAE,MAAR;EAAgBO,IAAI,EAAE,CAAtB;EAAyBzJ,MAAM,EAAE;AAAjC,CAD0B,EAE1B;EAAEkJ,IAAI,EAAE,OAAR;EAAiBO,IAAI,EAAE,CAAvB;EAA0BzJ,MAAM,EAAE;AAAlC,CAF0B,EAG1B;EAAEkJ,IAAI,EAAE,MAAR;EAAgBO,IAAI,EAAE,CAAtB;EAAyBzJ,MAAM,EAAE;AAAjC,CAH0B,EAI1B;EAAEkJ,IAAI,EAAE,MAAR;EAAgBO,IAAI,EAAE,CAAtB;EAAyBzJ,MAAM,EAAE;AAAjC,CAJ0B,EAK1B;EAAEkJ,IAAI,EAAE,MAAR;EAAgBO,IAAI,EAAE,CAAtB;EAAyBzJ,MAAM,EAAE;AAAjC,CAL0B,CAA5B;;IAQM0J;;;;;;;;;;;;;WACJ,6BAAoB;MAAA;;MAClB,IAAI,KAAK7C,MAAT,EAAiB;MACjB,IAAMA,MAAM,GAAG/F,QAAQ,CAACgG,aAAT,CAAuB,QAAvB,CAAf;MACAD,MAAM,CAAC8C,SAAP,GAAmBnF,YAAnB;MACA,KAAKoF,WAAL,CAAiB/C,MAAjB;MACA,KAAKA,MAAL,GAAcA,MAAd;MACA,IAAMiB,EAAE,GAAGjB,MAAM,CAACG,UAAP,CAAkB,OAAlB,EAA2B;QAAE6C,KAAK,EAAE,IAAT;QAAeC,kBAAkB,EAAE,IAAnC;QAAyCC,SAAS,EAAE,KAApD;QAA2DC,qBAAqB,EAAE;MAAlF,CAA3B,CAAX;MACA,IAAI,CAAClC,EAAL,EAAS;MACT,KAAKA,EAAL,GAAUA,EAAV;MACA,KAAKmC,OAAL,GAAe;QAAEtE,CAAC,EAAEN,WAAL;QAAkBO,CAAC,EAAEP,WAArB;QAAkC6E,MAAM,EAAE,KAA1C;QAAiDC,OAAO,EAAE,CAA1D;QAA6DC,OAAO,EAAE;MAAtE,CAAf;MACA,KAAKC,eAAL,GAAuB;QAAEF,OAAO,EAAE,CAAX;QAAcC,OAAO,EAAE;MAAvB,CAAvB;MACA,KAAK/J,SAAL,GAAiB,IAAjB;MACA,KAAKiK,IAAL,GAAY,CAAZ;MACA,KAAKC,IAAL,GAAY,KAAKC,OAAL,CAAanG,aAAb,KAA+B,IAA3C;MAEA,KAAKoG,MAAL,GAAczO,MAAM,CAACC,UAAP,CAAkB2I,UAAlB,EAA8BhH,OAA5C;MACA,KAAK2D,eAAL,GAAuB/B,aAAvB;;MAEA,KAAKkL,aAAL,GAAqB,UAACtJ,KAAD,EAAW;QAC9B,KAAI,CAACG,eAAL,GAAuBH,KAAK,CAACE,WAA7B;MACD,CAFD;;MAGA,KAAKqJ,aAAL,GAAqB,UAACvJ,KAAD,EAAW;QAC9B,IAAIA,KAAK,CAACE,WAAN,KAAsB9B,aAA1B,EAAyC;QACzC,IAAMoL,IAAI,GAAG/D,MAAM,CAAC/J,qBAAP,EAAb;QACA,IAAM6J,KAAK,GAAGE,MAAM,CAACgE,WAAP,IAAsBD,IAAI,CAAC/E,KAAL,IAAc,CAApC,CAAd;QACA,IAAQoE,OAAR,GAAoB,KAApB,CAAQA,OAAR;QACAA,OAAO,CAACtE,CAAR,GAAY,CAACvE,KAAK,CAAC0J,OAAN,GAAgBF,IAAI,CAACG,IAAtB,IAA8BpE,KAA1C;QACAsD,OAAO,CAACrE,CAAR,GAAY,CAACxE,KAAK,CAAC4J,OAAN,GAAgBJ,IAAI,CAAC7N,GAAtB,IAA6B4J,KAAzC;QACAsD,OAAO,CAACC,MAAR,GAAiB,IAAjB;QACAD,OAAO,CAACE,OAAR,GAAkB9D,KAAK,CAAE4D,OAAO,CAACtE,CAAR,GAAY,KAAI,CAACE,KAAlB,GAA2B,CAA3B,GAA+B,CAAhC,EAAmC,CAAC,GAApC,EAAyC,GAAzC,CAAvB;QACAoE,OAAO,CAACG,OAAR,GAAkB/D,KAAK,CAAE4D,OAAO,CAACrE,CAAR,GAAY,KAAI,CAACE,MAAlB,GAA4B,CAA5B,GAAgC,CAAjC,EAAoC,CAAC,GAArC,EAA0C,GAA1C,CAAvB;;QACA,KAAI,CAACmF,UAAL;MACD,CAXD;;MAYA,KAAKC,cAAL,GAAsB,UAAC9J,KAAD,EAAW;QAC/B,IAAIA,KAAK,CAACE,WAAN,KAAsB9B,aAA1B,EAAyC;QACzC2L,MAAM,CAACC,MAAP,CAAc,KAAI,CAACnB,OAAnB,EAA4B;UAAEtE,CAAC,EAAEN,WAAL;UAAkBO,CAAC,EAAEP,WAArB;UAAkC6E,MAAM,EAAE,KAA1C;UAAiDC,OAAO,EAAE,CAA1D;UAA6DC,OAAO,EAAE;QAAtE,CAA5B;;QACA,KAAI,CAACa,UAAL;MACD,CAJD,CAjCkB,CAsClB;;;MACA,KAAKI,OAAL,GAAe,YAAM;QACnB,IAAI,KAAI,CAAC9J,eAAL,KAAyB/B,aAA7B,EAA4C;;QAC5C,KAAI,CAAC8L,QAAL,CAAc,KAAd;;QACA,KAAI,CAACL,UAAL;MACD,CAJD;;MAKA,KAAKM,kBAAL,GAA0B;QAAA,OAAM,KAAI,CAACC,IAAL,EAAN;MAAA,CAA1B;;MAEA,KAAKC,WAAL,GAAmBzK,WAAW,CAACP,GAAZ,MAAqB,KAAKgK,MAAL,GAAc3F,eAAd,GAAgCI,QAArD,CAAnB;MACA,KAAKqF,IAAL,CAAUvM,gBAAV,CAA2B,aAA3B,EAA0C,KAAK0M,aAA/C;MACA,KAAKH,IAAL,CAAUvM,gBAAV,CAA2B,aAA3B,EAA0C,KAAK2M,aAA/C;MACA,KAAKJ,IAAL,CAAUvM,gBAAV,CAA2B,cAA3B,EAA2C,KAAKkN,cAAhD;MACA,KAAKX,IAAL,CAAUvM,gBAAV,CAA2B,OAA3B,EAAoC,KAAKqN,OAAzC;MACA,KAAKK,cAAL,GAAsB,IAAI/J,cAAJ,CAAmB;QAAA,OAAM,KAAI,CAACgK,MAAL,EAAN;MAAA,CAAnB,CAAtB;MACA,KAAKD,cAAL,CAAoBtN,OAApB,CAA4B,IAA5B;MACA,KAAKwN,gBAAL,GAAwB,IAAI3N,oBAAJ,CAAyB,UAACC,OAAD,EAAa;QAC5D,KAAI,CAACmC,SAAL,GAAiBnC,OAAO,CAAC,CAAD,CAAP,CAAWC,cAA5B;;QACA,KAAI,CAACqN,IAAL;MACD,CAHuB,CAAxB;MAIA,KAAKI,gBAAL,CAAsBxN,OAAtB,CAA8B,IAA9B;MACA0C,QAAQ,CAAC9C,gBAAT,CAA0B,kBAA1B,EAA8C,KAAKuN,kBAAnD;MAEA,KAAKM,IAAL;MACA,KAAKF,MAAL;MACA,KAAKH,IAAL;;MACA,IAAI1K,QAAQ,CAACgL,KAAb,EAAoB;QAClBhL,QAAQ,CAACgL,KAAT,CAAeC,KAAf,CAAqBC,IAArB,CAA0B,YAAM;UAC9B,IAAI,CAAC,KAAI,CAACnF,MAAV,EAAkB;UAClB,KAAI,CAACoF,cAAL,GAAsB,IAAtB;;UACA,KAAI,CAACN,MAAL;QACD,CAJD;MAKD;IACF;;;WAED,gCAAuB;MACrB1K,oBAAoB,CAAC,KAAK/E,OAAN,CAApB;MACA,KAAKA,OAAL,GAAe,CAAf;MACA,IAAI,KAAKwP,cAAT,EAAyB,KAAKA,cAAL,CAAoBQ,UAApB;MACzB,IAAI,KAAKN,gBAAT,EAA2B,KAAKA,gBAAL,CAAsBM,UAAtB;MAC3BpL,QAAQ,CAACqL,mBAAT,CAA6B,kBAA7B,EAAiD,KAAKZ,kBAAtD;;MACA,IAAI,KAAKhB,IAAT,EAAe;QACb,KAAKA,IAAL,CAAU4B,mBAAV,CAA8B,aAA9B,EAA6C,KAAKzB,aAAlD;QACA,KAAKH,IAAL,CAAU4B,mBAAV,CAA8B,aAA9B,EAA6C,KAAKxB,aAAlD;QACA,KAAKJ,IAAL,CAAU4B,mBAAV,CAA8B,cAA9B,EAA8C,KAAKjB,cAAnD;QACA,KAAKX,IAAL,CAAU4B,mBAAV,CAA8B,OAA9B,EAAuC,KAAKd,OAA5C;MACD;;MACD,IAAI,KAAKxE,MAAT,EAAiB,KAAKA,MAAL,CAAYuF,MAAZ;MACjB,KAAKvF,MAAL,GAAc,IAAd;IACD;;;WAED,gBAAO;MAAA;;MACL,IAAQiB,EAAR,GAAe,IAAf,CAAQA,EAAR;MACA,KAAKuE,eAAL,GAAuBxE,aAAa,CAACC,EAAD,EAAKsB,sBAAL,EAA6BC,wBAA7B,CAApC;MACA,KAAKiD,WAAL,GAAmBzE,aAAa,CAACC,EAAD,EAAKwB,kBAAL,EAAyBC,oBAAzB,CAAhC;MACA,KAAKgD,oBAAL,GAA4BzE,EAAE,CAAC0E,iBAAH,CAAqB,KAAKF,WAAL,CAAiB9D,OAAtC,EAA+C,IAA/C,CAA5B;MACA,KAAKiE,UAAL,GAAkB3E,EAAE,CAAC4E,YAAH,EAAlB;MACA5E,EAAE,CAAC6E,UAAH,CAAc7E,EAAE,CAAC8E,YAAjB,EAA+B,KAAKH,UAApC;MACA3E,EAAE,CAAC+E,UAAH,CAAc/E,EAAE,CAAC8E,YAAjB,EAA+B,IAAIE,YAAJ,CAAiB,CAAC,CAAC,CAAF,EAAK,CAAC,CAAN,EAAS,CAAT,EAAY,CAAC,CAAb,EAAgB,CAAC,CAAjB,EAAoB,CAApB,EAAuB,CAAvB,EAA0B,CAA1B,CAAjB,CAA/B,EAA+EhF,EAAE,CAACiF,WAAlF;;MAEA,qBAA4DrG,aAAa,EAAzE;MAAA,IAAQS,IAAR,kBAAQA,IAAR;MAAA,IAAcQ,GAAd,kBAAcA,GAAd;MAAA,IAA0BqF,SAA1B,kBAAmBnH,KAAnB;MAAA,IAA6CoH,UAA7C,kBAAqCnH,MAArC;;MACA,IAAMoH,KAAK,GAAG,KAAKzC,MAAL,GAAc5F,qBAAd,GAAsC,CAApD;MACA,IAAMsI,SAAS,GAAG/R,IAAI,CAACgS,KAAL,CAAWrI,cAAc,GAAGmI,KAA5B,CAAlB;MACA,IAAMG,SAAS,GAAGjS,IAAI,CAACgS,KAAL,CAAWpI,cAAc,GAAGkI,KAA5B,CAAlB;MACA,IAAMI,UAAU,GAAGH,SAAS,GAAGE,SAA/B;MACA,KAAKF,SAAL,GAAiBA,SAAjB;MACA,KAAKG,UAAL,GAAkBA,UAAlB;;MACA,IAAMC,MAAM,GAAG,SAATA,MAAS;QAAA,OAAM,IAAIT,YAAJ,CAAiBQ,UAAjB,CAAN;MAAA,CAAf,CAhBK,CAiBL;;;MACAnC,MAAM,CAACC,MAAP,CAAc,IAAd,EAAoB;QAClBoC,KAAK,EAAED,MAAM,EADK;QACDE,KAAK,EAAEF,MAAM,EADZ;QACgBG,KAAK,EAAEH,MAAM,EAD7B;QACiCI,IAAI,EAAE,IAAIC,UAAJ,CAAeN,UAAf,CADvC;QAElBO,MAAM,EAAEN,MAAM,EAFI;QAEAO,KAAK,EAAEP,MAAM,EAFb;QAEiBQ,KAAK,EAAER,MAAM,EAF9B;QAGlBS,QAAQ,EAAET,MAAM,EAHE;QAGEU,QAAQ,EAAEV,MAAM,EAHlB;QAGsBW,KAAK,EAAEX,MAAM,EAHnC;QAGuCY,KAAK,EAAEZ,MAAM,EAHpD;QAGwDa,MAAM,EAAEb,MAAM,EAHtE;QAG0Ec,MAAM,EAAEd,MAAM,EAHxF;QAIlBe,OAAO,EAAEf,MAAM,EAJG;QAICgB,OAAO,EAAEhB,MAAM,EAJhB;QAIoBiB,SAAS,EAAEjB,MAAM,EAJrC;QAIyCkB,SAAS,EAAElB,MAAM,EAJ1D;QAKlBmB,UAAU,EAAE,IAAI5B,YAAJ,CAAiBQ,UAAU,GAAGhI,mBAA9B;MALM,CAApB;MAQA,IAAMqJ,UAAU,GAAGxH,IAAI,CAACrL,MAAL,GAAc,CAAjC;MACA,IAAM8S,SAAS,GAAGjH,GAAG,CAAC7L,MAAJ,GAAa,CAA/B;MACA,IAAM+S,KAAK,GAAG,IAAd;;MACA,KAAK,IAAIlS,KAAK,GAAG,CAAjB,EAAoBA,KAAK,GAAGwQ,SAA5B,EAAuCxQ,KAAK,EAA5C,EAAgD;QAC9C,IAAMmS,IAAI,GAAG1T,IAAI,CAAC2T,MAAL,EAAb;QACA,IAAIC,MAAM,SAAV;QACA,IAAIC,MAAM,SAAV;QACA,IAAIC,KAAK,SAAT;QACA,IAAIvB,IAAI,SAAR;;QACA,IAAImB,IAAI,GAAG,IAAX,EAAiB;UACf,IAAMK,KAAK,GAAG,CAAE/T,IAAI,CAAC2T,MAAL,KAAgBJ,UAAjB,GAA+B,CAAhC,IAAqC,CAAnD;UACAK,MAAM,GAAG7H,IAAI,CAACgI,KAAD,CAAJ,GAAc/T,IAAI,CAAC2T,MAAL,KAAgB/B,SAAvC;UACAiC,MAAM,GAAG9H,IAAI,CAACgI,KAAK,GAAG,CAAT,CAAJ,GAAkB/T,IAAI,CAAC2T,MAAL,KAAgB9B,UAA3C;UACAiC,KAAK,GAAGJ,IAAI,GAAG,IAAP,GAAc,CAAd,GAAkB,CAA1B;UACAnB,IAAI,GAAGmB,IAAI,GAAG,IAAP,GAAc7I,aAAd,GAA8BE,aAArC;QACD,CAND,MAMO;UACL,IAAMgJ,MAAK,GAAG,CAAE/T,IAAI,CAAC2T,MAAL,KAAgBH,SAAjB,GAA8B,CAA/B,IAAoC,CAAlD;;UACAI,MAAM,GAAGrH,GAAG,CAACwH,MAAD,CAAH,GAAa,MAAMnC,SAA5B;UACAiC,MAAM,GAAGtH,GAAG,CAACwH,MAAK,GAAG,CAAT,CAAH,GAAiB,MAAMlC,UAAhC;UACAiC,KAAK,GAAG9T,IAAI,CAAC2T,MAAL,EAAR;UACApB,IAAI,GAAGzH,YAAP;QACD;;QACD,KAAKsH,KAAL,CAAW7Q,KAAX,IAAoB,CAACqS,MAAM,GAAG,GAAV,IAAiBjJ,WAArC;QACA,KAAK0H,KAAL,CAAW9Q,KAAX,IAAoBsS,MAAM,GAAG,GAA7B;QACA,KAAKvB,KAAL,CAAW/Q,KAAX,IAAoB,CAACuS,KAAK,GAAG,GAAT,IAAgBL,KAApC;QACA,KAAKlB,IAAL,CAAUhR,KAAV,IAAmBgR,IAAnB;QACA,KAAKE,MAAL,CAAYlR,KAAZ,IAAqB0J,KAAK,CAAC2I,MAAM,GAAG,IAAT,GAAgBC,MAAM,GAAG,IAA1B,CAA1B;QACA,KAAKnB,KAAL,CAAWnR,KAAX,IAAoBvB,IAAI,CAAC2T,MAAL,KAAgBxJ,MAApC;QACA,KAAKwI,KAAL,CAAWpR,KAAX,IAAoBvB,IAAI,CAAC2T,MAAL,KAAgB,GAAhB,GAAsB,CAAC,IAAIC,MAAL,IAAe,IAArC,GAA4CC,MAAM,GAAG,IAAzE;MACD;;MACD,KAAK,IAAItS,MAAK,GAAGwQ,SAAjB,EAA4BxQ,MAAK,GAAG2Q,UAApC,EAAgD3Q,MAAK,EAArD,EAAyD;QACvD,KAAKgR,IAAL,CAAUhR,MAAV,IAAmByJ,aAAnB;QACA,KAAKoH,KAAL,CAAW7Q,MAAX,IAAoBvB,IAAI,CAAC2T,MAAL,EAApB;QACA,KAAKtB,KAAL,CAAW9Q,MAAX,IAAoBvB,IAAI,CAAC2T,MAAL,EAApB;QACA,KAAKrB,KAAL,CAAW/Q,MAAX,IAAoBvB,IAAI,CAAC2T,MAAL,EAApB;QACA,KAAKlB,MAAL,CAAYlR,MAAZ,IAAqBvB,IAAI,CAAC2T,MAAL,EAArB;QACA,KAAKjB,KAAL,CAAWnR,MAAX,IAAoBvB,IAAI,CAAC2T,MAAL,KAAgBxJ,MAApC;MACD;;MAED,KAAK6J,cAAL,GAAsBtH,EAAE,CAAC4E,YAAH,EAAtB;MACA5E,EAAE,CAAC6E,UAAH,CAAc7E,EAAE,CAAC8E,YAAjB,EAA+B,KAAKwC,cAApC;MACAtH,EAAE,CAAC+E,UAAH,CAAc/E,EAAE,CAAC8E,YAAjB,EAA+B,KAAK8B,UAAL,CAAgBW,UAA/C,EAA2DvH,EAAE,CAACwH,YAA9D;MACA,KAAKC,kBAAL,GAA0B/F,mBAAmB,CAAC/M,GAApB,CAAwB;QAAA,IAAGyM,IAAH,QAAGA,IAAH;QAAA,OAAcpB,EAAE,CAAC0E,iBAAH,CAAqB,MAAI,CAACH,eAAL,CAAqB7D,OAA1C,EAAmDU,IAAnD,CAAd;MAAA,CAAxB,CAA1B;MACA,KAAKsG,YAAL,GAAoB,IAApB;MACA,KAAKC,SAAL,GAAiB,KAAjB;IACD,EAED;;;;WACA,kBAAS;MACP,IAAI,CAAC,KAAK3H,EAAV,EAAc;MACd,IAAM4H,UAAU,GAAGtU,IAAI,CAACC,GAAL,CAAS4J,eAAT,EAA0BjJ,MAAM,CAAC2T,gBAAP,IAA2B,CAArD,CAAnB;MACA,IAAM9J,KAAK,GAAG,KAAKgF,WAAL,IAAoB,GAAlC;MACA,IAAM/E,MAAM,GAAG,KAAK8J,YAAL,IAAqB,GAApC;MACA,IAAI/J,KAAK,KAAK,KAAKA,KAAf,IAAwBC,MAAM,KAAK,KAAKA,MAAxC,IAAkD,CAAC,KAAKmG,cAA5D,EAA4E;MAC5E,KAAKA,cAAL,GAAsB,KAAtB;MACA,KAAKyD,UAAL,GAAkBA,UAAlB;MACA,KAAK7J,KAAL,GAAaA,KAAb;MACA,KAAKC,MAAL,GAAcA,MAAd;MACA,KAAKe,MAAL,CAAYhB,KAAZ,GAAoBzK,IAAI,CAACgS,KAAL,CAAWvH,KAAK,GAAG6J,UAAnB,CAApB;MACA,KAAK7I,MAAL,CAAYf,MAAZ,GAAqB1K,IAAI,CAACgS,KAAL,CAAWtH,MAAM,GAAG4J,UAApB,CAArB;MAEA,IAAIjG,IAAI,GAAG3D,MAAM,GAAG,GAApB;MACA,IAAI+J,OAAO,GAAGhK,KAAK,GAAG,IAAtB;MACA,IAAIiK,OAAO,GAAGhK,MAAM,GAAG,IAAvB;MACA,IAAMiK,OAAO,GAAG,KAAKjT,qBAAL,EAAhB;MACA,IAAM6J,KAAK,GAAGd,KAAK,IAAIkK,OAAO,CAAClK,KAAR,IAAiBA,KAArB,CAAnB;MACA,IAAMmK,IAAI,GAAG,KAAKzF,IAAL,CAAU0F,aAAV,CAAwB3L,aAAxB,CAAb;;MACA,IAAItI,MAAM,CAACC,UAAP,CAAkB0I,YAAlB,EAAgC/G,OAApC,EAA6C;QAC3C6L,IAAI,GAAGrO,IAAI,CAACC,GAAL,CAAS2K,aAAT,EAAwBF,MAAM,GAAG,GAAjC,CAAP;QACA+J,OAAO,GAAGhK,KAAK,GAAG,CAAlB;QACA,IAAImK,IAAJ,EAAUF,OAAO,GAAG1U,IAAI,CAACE,GAAL,CAASmO,IAAI,GAAG,CAAP,GAAW,EAApB,EAAwB,CAAC,KAAK,CAACuG,IAAI,CAAClT,qBAAL,GAA6BC,GAA7B,GAAmCgT,OAAO,CAAChT,GAA5C,IAAmD4J,KAAzD,IAAkE,CAA1F,CAAV;MACX,CAJD,MAIO;QACL,IAAMuJ,IAAI,GAAG,KAAK3F,IAAL,CAAU0F,aAAV,CAAwB1L,aAAxB,CAAb;;QACA,IAAI2L,IAAJ,EAAU;UACR,IAAMC,SAAS,GAAG,CAACD,IAAI,CAACpT,qBAAL,GAA6BsT,KAA7B,GAAqCL,OAAO,CAAChF,IAA9C,IAAsDpE,KAAxE;UACA,IAAM0J,SAAS,GAAGxK,KAAK,GAAGsK,SAAR,GAAoB,EAAtC;;UACA,IAAIE,SAAS,GAAGtK,WAAZ,IAA2BD,MAAM,GAAG,GAAxC,EAA6C;YAC3C2D,IAAI,GAAGrO,IAAI,CAACC,GAAL,CAASoO,IAAT,EAAe4G,SAAS,GAAGtK,WAA3B,CAAP;YACA8J,OAAO,GAAGzU,IAAI,CAACE,GAAL,CAASuU,OAAT,EAAkBM,SAAS,GAAG,EAAZ,GAAkB1G,IAAI,GAAG1D,WAAR,GAAuB,CAA1D,CAAV;YACA8J,OAAO,GAAGzU,IAAI,CAACC,GAAL,CAASwU,OAAT,EAAkBhK,KAAK,GAAI4D,IAAI,GAAG1D,WAAR,GAAuB,CAA/B,GAAmC,EAArD,CAAV;UACD,CAJD,MAIO;YACL;YACA0D,IAAI,GAAGrO,IAAI,CAACE,GAAL,CAAS0K,aAAT,EAAwB5K,IAAI,CAACC,GAAL,CAASoO,IAAT,EAAe3D,MAAM,GAAG,GAAxB,EAA6BuK,SAAS,GAAGtK,WAAzC,CAAxB,CAAP;YACA8J,OAAO,GAAGzU,IAAI,CAACC,GAAL,CAAS8U,SAAS,GAAG,EAAZ,GAAkB1G,IAAI,GAAG1D,WAAR,GAAuB,CAAjD,EAAoDF,KAAK,GAAI4D,IAAI,GAAG1D,WAAR,GAAuB,CAA/B,GAAmC,EAAvF,CAAV;UACD;QACF;;QACD,IAAIiK,IAAJ,EAAU;UACR,IAAMM,QAAQ,GAAGN,IAAI,CAAClT,qBAAL,EAAjB;UACA,IAAMyT,SAAS,GAAG,CAACD,QAAQ,CAACF,KAAT,GAAiBL,OAAO,CAAChF,IAA1B,IAAkCpE,KAApD;UACA,IAAM6J,UAAU,GAAG,CAACF,QAAQ,CAAC1M,MAAT,GAAkBmM,OAAO,CAAChT,GAA3B,IAAkC4J,KAArD;;UACA,IAAIkJ,OAAO,GAAIpG,IAAI,GAAG1D,WAAR,GAAuB,CAAjC,GAAqCwK,SAAS,GAAGnL,cAArD,EAAqE;YACnE0K,OAAO,GAAG1U,IAAI,CAACE,GAAL,CAASwU,OAAT,EAAkBU,UAAU,GAAG,EAAb,GAAkB/G,IAAI,GAAG,CAA3C,CAAV;;YACA,IAAIqG,OAAO,GAAGrG,IAAI,GAAG,CAAjB,GAAqB3D,MAAM,GAAG,EAAlC,EAAsC;cACpC2D,IAAI,GAAGrO,IAAI,CAACE,GAAL,CAASwK,MAAM,GAAG,GAAlB,EAAuBA,MAAM,GAAG,EAAT,GAAc0K,UAAd,GAA2B,EAAlD,CAAP;cACAV,OAAO,GAAGU,UAAU,GAAG,EAAb,GAAkB/G,IAAI,GAAG,CAAnC;YACD;UACF;QACF;MACF;;MACD,KAAKA,IAAL,GAAYA,IAAZ;MACA,KAAKoG,OAAL,GAAeA,OAAf;MACA,KAAKC,OAAL,GAAeA,OAAf;MACA,KAAKhI,EAAL,CAAQ2I,QAAR,CAAiB,CAAjB,EAAoB,CAApB,EAAuB,KAAK5J,MAAL,CAAYhB,KAAnC,EAA0C,KAAKgB,MAAL,CAAYf,MAAtD;;MACA,IAAI,CAAC,KAAK2J,SAAV,EAAqB;QACnB,KAAKA,SAAL,GAAiB,IAAjB;QACA,KAAKnE,QAAL,CAAc,IAAd;MACD,CA1DM,CA2DP;;;MACA,KAAKE,IAAL;IACD;;;WAED,sBAAa;MACX,KAAKC,WAAL,GAAmBrQ,IAAI,CAACE,GAAL,CAAS,KAAKmQ,WAAd,EAA2BzK,WAAW,CAACP,GAAZ,KAAoB0E,SAA/C,CAAnB;MACA,KAAKqG,IAAL;IACD,EAED;;;;WACA,gBAAO;MAAA;;MACL,IAAI,KAAKtP,OAAL,IAAgB,CAAC,KAAK2K,MAAtB,IAAgC,CAAC,KAAKiB,EAAtC,IAA4C,CAAC,KAAKzH,SAAlD,IAA+DS,QAAQ,CAACC,MAA5E,EAAoF;;MACpF,IAAMP,IAAI,GAAG,SAAPA,IAAO,CAACC,GAAD,EAAS;QACpB,MAAI,CAACvE,OAAL,GAAe,CAAf;QACA,IAAI,CAAC,MAAI,CAAC2K,MAAN,IAAgB,CAAC,MAAI,CAACxG,SAAtB,IAAmCS,QAAQ,CAACC,MAAhD,EAAwD;QACxD,IAAM2P,cAAc,GAAGtV,IAAI,CAACC,GAAL,CAAS,IAAT,EAAe,CAACoF,GAAG,GAAG,MAAI,CAACkQ,WAAZ,IAA2B,IAA1C,CAAvB;QACA,MAAI,CAACA,WAAL,GAAmBlQ,GAAnB;QACA,MAAI,CAAC4J,eAAL,CAAqBF,OAArB,IAAgC,CAAC,MAAI,CAACF,OAAL,CAAaE,OAAb,GAAuB,MAAI,CAACE,eAAL,CAAqBF,OAA7C,IAAwD,IAAxF;QACA,MAAI,CAACE,eAAL,CAAqBD,OAArB,IAAgC,CAAC,MAAI,CAACH,OAAL,CAAaG,OAAb,GAAuB,MAAI,CAACC,eAAL,CAAqBD,OAA7C,IAAwD,IAAxF;;QACA,MAAI,CAACwG,KAAL,CAAWF,cAAX,EAA2BjQ,GAA3B;;QACA,IAAIA,GAAG,GAAG,MAAI,CAACgL,WAAf,EAA4B,MAAI,CAACvP,OAAL,GAAeuB,qBAAqB,CAAC+C,IAAD,CAApC;MAC7B,CATD;;MAUA,KAAKmQ,WAAL,GAAmB3P,WAAW,CAACP,GAAZ,EAAnB;MACA,KAAKvE,OAAL,GAAeuB,qBAAqB,CAAC+C,IAAD,CAApC;IACD;;;WAED,4BAAmB;MACjB,IAAMqQ,KAAK,GAAGzV,IAAI,CAAC2T,MAAL,KAAgBxJ,MAA9B;MACA,IAAMuL,MAAM,GAAG,CAAC,OAAO1V,IAAI,CAAC2T,MAAL,KAAgB,GAAxB,IAA+B3T,IAAI,CAACE,GAAL,CAAS,KAAKuK,KAAd,EAAqB,KAAKC,MAA1B,CAA/B,GAAmE,IAAlF;MACA,OAAO,CAAC,KAAK+J,OAAL,GAAezU,IAAI,CAAC2V,GAAL,CAASF,KAAT,IAAkBC,MAAlC,EAA0C,KAAKhB,OAAL,GAAe1U,IAAI,CAAC4V,GAAL,CAASH,KAAT,IAAkBC,MAAlB,GAA2B,IAApF,CAAP;IACD,EAED;;;;WACA,kBAASG,SAAT,EAAoB;MAClB,KAAKC,WAAL,GAAmBlQ,WAAW,CAACP,GAAZ,EAAnB;MACA,KAAK0Q,cAAL,GAAsBF,SAAS,GAAG,CAAH,GAAO,IAAtC;MACA,IAAIvR,aAAJ,EAAmB,KAAKwR,WAAL,IAAoB,KAApB;;MACnB,KAAK,IAAIvU,KAAK,GAAG,CAAjB,EAAoBA,KAAK,GAAG,KAAKwQ,SAAjC,EAA4CxQ,KAAK,EAAjD,EAAqD;QACnD,4BAAyB,KAAKyU,gBAAL,EAAzB;QAAA;QAAA,IAAOC,MAAP;QAAA,IAAeC,MAAf;;QACA,IAAIL,SAAJ,EAAe;UACb,KAAK/C,KAAL,CAAWvR,KAAX,IAAoB,KAAKyR,MAAL,CAAYzR,KAAZ,IAAqB,KAAKqR,QAAL,CAAcrR,KAAd,IAAuB0U,MAAhE;UACA,KAAKlD,KAAL,CAAWxR,KAAX,IAAoB,KAAK0R,MAAL,CAAY1R,KAAZ,IAAqB,KAAKsR,QAAL,CAActR,KAAd,IAAuB2U,MAAhE;QACD,CAHD,MAGO;UACL,KAAKpD,KAAL,CAAWvR,KAAX,IAAoB,KAAKqR,QAAL,CAAcrR,KAAd,CAApB;UACA,KAAKwR,KAAL,CAAWxR,KAAX,IAAoB,KAAKsR,QAAL,CAActR,KAAd,CAApB;UACA,KAAKyR,MAAL,CAAYzR,KAAZ,IAAqB0U,MAArB;UACA,KAAKhD,MAAL,CAAY1R,KAAZ,IAAqB2U,MAArB;QACD;MACF;IACF;;;WAED,eAAMZ,cAAN,EAAsBjQ,GAAtB,EAA2B;MAAA;;MACzB,IAAQqH,EAAR,GAA6C,IAA7C,CAAQA,EAAR;MAAA,IAAYmC,OAAZ,GAA6C,IAA7C,CAAYA,OAAZ;MAAA,IAAqBR,IAArB,GAA6C,IAA7C,CAAqBA,IAArB;MAAA,IAA2B5D,KAA3B,GAA6C,IAA7C,CAA2BA,KAA3B;MAAA,IAAkCC,MAAlC,GAA6C,IAA7C,CAAkCA,MAAlC;MACA,KAAKwE,IAAL,IAAaoG,cAAb;MACA,IAAQpG,IAAR,GAAiB,IAAjB,CAAQA,IAAR;MACA,IAAMiH,GAAG,GAAG,CAAC,IAAD,GAAQ,KAAKlH,eAAL,CAAqBF,OAArB,GAA+B,IAAvC,GAA8C/O,IAAI,CAAC4V,GAAL,CAAS1G,IAAI,GAAG,IAAhB,IAAwB,IAAlF;MACA,IAAMkH,KAAK,GAAG,CAAC,GAAD,GAAO,KAAKnH,eAAL,CAAqBD,OAArB,GAA+B,GAAtC,GAA4ChP,IAAI,CAAC2V,GAAL,CAASzG,IAAI,GAAG,IAAhB,IAAwB,IAAlF;MACA,IAAMmH,MAAM,GAAGrW,IAAI,CAAC2V,GAAL,CAASQ,GAAT,CAAf;MACA,IAAMG,MAAM,GAAGtW,IAAI,CAAC4V,GAAL,CAASO,GAAT,CAAf;MACA,IAAMI,QAAQ,GAAGvW,IAAI,CAAC2V,GAAL,CAASS,KAAT,CAAjB;MACA,IAAMI,QAAQ,GAAGxW,IAAI,CAAC4V,GAAL,CAASQ,KAAT,CAAjB;MACA,IAAMK,GAAG,GAAG,CAACpR,GAAG,GAAG,KAAKyQ,WAAZ,IAA2B,IAAvC;MACA,IAAMC,cAAc,GAAG,KAAKA,cAA5B;MACA,IAAMW,aAAa,GAAG,IAAtB;;MAEA,IAAI,KAAKtC,YAAL,KAAsB,IAAtB,IAA8B,CAACvF,OAAO,CAACC,MAA3C,EAAmD;QACjD,KAAKsF,YAAL,GAAoBvF,OAAO,CAACtE,CAA5B;QACA,KAAKoM,YAAL,GAAoB9H,OAAO,CAACrE,CAA5B;MACD;;MACD,IAAIoM,KAAK,GAAG/H,OAAO,CAACC,MAAR,GAAiBD,OAAO,CAACtE,CAAR,GAAY,KAAK6J,YAAlC,GAAiD,CAA7D;MACA,IAAIyC,KAAK,GAAGhI,OAAO,CAACC,MAAR,GAAiBD,OAAO,CAACrE,CAAR,GAAY,KAAKmM,YAAlC,GAAiD,CAA7D;MACA,KAAKvC,YAAL,GAAoBvF,OAAO,CAACtE,CAA5B;MACA,KAAKoM,YAAL,GAAoB9H,OAAO,CAACrE,CAA5B;MACA,IAAMsM,UAAU,GAAG9W,IAAI,CAAC+W,KAAL,CAAWH,KAAX,EAAkBC,KAAlB,CAAnB;;MACA,IAAIC,UAAU,GAAG,EAAjB,EAAqB;QACnBF,KAAK,IAAI,KAAKE,UAAd;QACAD,KAAK,IAAI,KAAKC,UAAd;MACD;;MACD,IAAME,SAAS,GAAGhX,IAAI,CAACC,GAAL,CAAS,EAAT,EAAa6W,UAAb,CAAlB;MACA,IAAMG,UAAU,GAAG5I,IAAI,GAAG,GAA1B;MACA,IAAM6I,iBAAiB,GAAGD,UAAU,GAAGA,UAAvC;MACA,IAAME,SAAS,GAAGtI,OAAO,CAACC,MAAR,IAAkB,CAACxK,aAArC;MACA,IAAM8S,QAAQ,GAAG,KAAK9D,UAAtB;;MAEA,KAAK,IAAI/R,KAAK,GAAG,CAAjB,EAAoBA,KAAK,GAAG,KAAKwQ,SAAjC,EAA4CxQ,KAAK,EAAjD,EAAqD;QACnD,IAAM6Q,KAAK,GAAG,KAAKA,KAAL,CAAW7Q,KAAX,CAAd;QACA,IAAM8Q,KAAK,GAAG,KAAKA,KAAL,CAAW9Q,KAAX,CAAd;QACA,IAAM+Q,KAAK,GAAG,KAAKA,KAAL,CAAW/Q,KAAX,CAAd;QACA,IAAM8V,QAAQ,GAAGjF,KAAK,GAAGiE,MAAR,GAAiB/D,KAAK,GAAGgE,MAA1C;QACA,IAAMgB,IAAI,GAAGlF,KAAK,GAAGkE,MAAR,GAAiBhE,KAAK,GAAG+D,MAAtC;QACA,IAAMkB,QAAQ,GAAGlF,KAAK,GAAGkE,QAAR,GAAmBe,IAAI,GAAGd,QAA3C;QACA,IAAMgB,QAAQ,GAAGnF,KAAK,GAAGmE,QAAR,GAAmBc,IAAI,GAAGf,QAA3C;QACA,IAAMkB,WAAW,GAAG,KAAK,IAAID,QAAQ,GAAG,IAApB,CAApB;QACA,IAAM9E,KAAK,GAAG,KAAKA,KAAL,CAAWnR,KAAX,CAAd;QACA,IAAMmW,OAAO,GAAG,KAAKjD,OAAL,GAAe4C,QAAQ,GAAGhJ,IAAX,GAAkBoJ,WAAjC,GAA+CzX,IAAI,CAAC4V,GAAL,CAAS1G,IAAI,GAAG,GAAP,GAAawD,KAAtB,IAA+B,GAA9F;QACA,IAAMiF,OAAO,GAAG,KAAKjD,OAAL,GAAe6C,QAAQ,GAAGlJ,IAAX,GAAkBoJ,WAAjC,GAA+CzX,IAAI,CAAC2V,GAAL,CAASzG,IAAI,GAAG,GAAP,GAAawD,KAAtB,IAA+B,GAA9F;QAEA,IAAIkF,KAAK,SAAT;QACA,IAAIC,KAAK,SAAT;;QACA,IAAIpB,GAAG,GAAGV,cAAV,EAA0B;UACxB,IAAM5K,QAAQ,GAAGC,YAAY,CAACqL,GAAG,GAAGV,cAAP,CAA7B;UACA6B,KAAK,GAAG,KAAK9E,KAAL,CAAWvR,KAAX,IAAoB,CAAC,KAAKyR,MAAL,CAAYzR,KAAZ,IAAqB,KAAKuR,KAAL,CAAWvR,KAAX,CAAtB,IAA2C4J,QAAvE;UACA0M,KAAK,GAAG,KAAK9E,KAAL,CAAWxR,KAAX,IAAoB,CAAC,KAAK0R,MAAL,CAAY1R,KAAZ,IAAqB,KAAKwR,KAAL,CAAWxR,KAAX,CAAtB,IAA2C4J,QAAvE;QACD,CAJD,MAIO;UACL,IAAMA,SAAQ,GAAGD,cAAc,CAACD,KAAK,CAAC,CAACwL,GAAG,GAAGV,cAAN,GAAuB,KAAKpD,KAAL,CAAWpR,KAAX,CAAxB,IAA6CmV,aAA9C,CAAN,CAA/B;;UACAkB,KAAK,GAAG,KAAK5E,MAAL,CAAYzR,KAAZ,IAAqB,CAACmW,OAAO,GAAG,KAAK1E,MAAL,CAAYzR,KAAZ,CAAX,IAAiC4J,SAA9D;UACA0M,KAAK,GAAG,KAAK5E,MAAL,CAAY1R,KAAZ,IAAqB,CAACoW,OAAO,GAAG,KAAK1E,MAAL,CAAY1R,KAAZ,CAAX,IAAiC4J,SAA9D;QACD;;QAED,IAAIiI,SAAS,GAAG,KAAKA,SAAL,CAAe7R,KAAf,CAAhB;QACA,IAAI8R,SAAS,GAAG,KAAKA,SAAL,CAAe9R,KAAf,CAAhB;QACA,IAAI2R,OAAO,GAAG,KAAKA,OAAL,CAAa3R,KAAb,CAAd;QACA,IAAI4R,OAAO,GAAG,KAAKA,OAAL,CAAa5R,KAAb,CAAd;;QACA,IAAI4V,SAAJ,EAAe;UACb,IAAMW,MAAM,GAAGF,KAAK,GAAG1E,OAAR,GAAkBrE,OAAO,CAACtE,CAAzC;UACA,IAAMwN,MAAM,GAAGF,KAAK,GAAG1E,OAAR,GAAkBtE,OAAO,CAACrE,CAAzC;UACA,IAAMwN,eAAe,GAAGF,MAAM,GAAGA,MAAT,GAAkBC,MAAM,GAAGA,MAAnD;;UACA,IAAIC,eAAe,GAAGd,iBAAlB,IAAuCc,eAAe,GAAG,IAA7D,EAAmE;YACjE,IAAMvW,QAAQ,GAAGzB,IAAI,CAACiY,IAAL,CAAUD,eAAV,CAAjB;YACA,IAAME,OAAO,GAAG,IAAIzW,QAAQ,GAAGwV,UAA/B;YACA,IAAMkB,MAAM,GAAG,MAAQzF,KAAK,GAAG,IAAT,GAAiB,CAAvC;YACA,IAAM0F,OAAO,GAAGF,OAAO,GAAGA,OAAV,IAAqB,OAAOlB,SAAS,GAAG,IAAxC,IAAgDmB,MAAhE;YACA,IAAME,KAAK,GAAGH,OAAO,GAAGlB,SAAV,GAAsB,IAApC;YACA5D,SAAS,IAAK0E,MAAM,GAAGrW,QAAV,GAAsB2W,OAAtB,GAAgCxB,KAAK,GAAGsB,OAAR,GAAkB,IAAlB,GAAyBC,MAAzD,GAAmEJ,MAAM,GAAGtW,QAAV,GAAsB4W,KAArG;YACAhF,SAAS,IAAK0E,MAAM,GAAGtW,QAAV,GAAsB2W,OAAtB,GAAgCvB,KAAK,GAAGqB,OAAR,GAAkB,IAAlB,GAAyBC,MAAzD,GAAmEL,MAAM,GAAGrW,QAAV,GAAsB4W,KAArG;UACD;QACF;;QACD,IAAMC,KAAK,GAAGtY,IAAI,CAACuY,GAAL,CAASnF,SAAT,IAAsBpT,IAAI,CAACuY,GAAL,CAASlF,SAAT,CAApC;;QACA,IAAIiF,KAAK,GAAG,GAAZ,EAAiB;UACf,IAAME,SAAS,GAAGxY,IAAI,CAAC4V,GAAL,CAAS,CAACgC,KAAK,GAAG1E,OAAT,IAAoB,KAApB,GAA4BhE,IAArC,IAA6C,GAA7C,GAAmDlP,IAAI,CAAC2V,GAAL,CAAS,CAACkC,KAAK,GAAG1E,OAAT,IAAoB,KAApB,GAA4BjE,IAAI,GAAG,GAA5C,IAAmD,GAAxH;UACAkE,SAAS,IAAIpT,IAAI,CAAC2V,GAAL,CAAS6C,SAAT,IAAsBF,KAAtB,GAA8B,IAA3C;UACAjF,SAAS,IAAIrT,IAAI,CAAC4V,GAAL,CAAS4C,SAAT,IAAsBF,KAAtB,GAA8B,IAA3C;QACD;;QACDlF,SAAS,IAAI,IAAb;QACAC,SAAS,IAAI,IAAb;QACAH,OAAO,GAAG,CAACA,OAAO,GAAGE,SAAX,IAAwB,KAAlC;QACAD,OAAO,GAAG,CAACA,OAAO,GAAGE,SAAX,IAAwB,KAAlC;QACA,KAAKD,SAAL,CAAe7R,KAAf,IAAwB6R,SAAxB;QACA,KAAKC,SAAL,CAAe9R,KAAf,IAAwB8R,SAAxB;QACA,KAAKH,OAAL,CAAa3R,KAAb,IAAsB2R,OAAtB;QACA,KAAKC,OAAL,CAAa5R,KAAb,IAAsB4R,OAAtB;QAEA,IAAM5I,CAAC,GAAGqN,KAAK,GAAG1E,OAAlB;QACA,IAAM1I,CAAC,GAAGqN,KAAK,GAAG1E,OAAlB;QACA,KAAKP,QAAL,CAAcrR,KAAd,IAAuBgJ,CAAvB;QACA,KAAKsI,QAAL,CAActR,KAAd,IAAuBiJ,CAAvB;QACA,IAAM+H,IAAI,GAAG,KAAKA,IAAL,CAAUhR,KAAV,CAAb;QACA,IAAMkX,UAAU,GAAGxN,KAAK,CAAC,IAAI,CAACuM,QAAQ,GAAG,GAAZ,IAAmB,GAAxB,EAA6B,IAA7B,EAAmC,IAAnC,CAAxB;QACA,IAAMkB,cAAc,GAAGnG,IAAI,KAAK1H,aAAT,GAAyB,IAAzB,GAAgC0H,IAAI,KAAKzH,YAAT,GAAwB,GAAxB,GAA8B,IAArF;QACA,IAAM6N,QAAQ,GAAGpG,IAAI,KAAK1H,aAAT,GAAyB,GAAzB,GAA+B0H,IAAI,KAAKzH,YAAT,GAAwB,GAAxB,GAA8B,GAA9E;QACA,IAAM8N,IAAI,GAAGN,KAAK,GAAG,GAArB;QACA,IAAM1T,MAAM,GAAGrD,KAAK,GAAG2I,mBAAvB;QACAkN,QAAQ,CAACxS,MAAD,CAAR,GAAmB2F,CAAnB;QACA6M,QAAQ,CAACxS,MAAM,GAAG,CAAV,CAAR,GAAuB4F,CAAvB;QACA4M,QAAQ,CAACxS,MAAM,GAAG,CAAV,CAAR,GAAuB+T,QAAQ,GAAGlB,WAAX,GAAyBzX,IAAI,CAACC,GAAL,CAAS,GAAT,EAAc2Y,IAAI,GAAG,IAArB,CAAhD;QACAxB,QAAQ,CAACxS,MAAM,GAAG,CAAV,CAAR,GAAuB8T,cAAc,GAAGD,UAAjB,GAA8BzY,IAAI,CAACC,GAAL,CAAS,IAAT,EAAe2Y,IAAI,GAAG,IAAtB,CAArD;QACAxB,QAAQ,CAACxS,MAAM,GAAG,CAAV,CAAR,GAAuB,KAAK6N,MAAL,CAAYlR,KAAZ,CAAvB;QACA6V,QAAQ,CAACxS,MAAM,GAAG,CAAV,CAAR,GAAuBgU,IAAvB;MACD;;MAED,KAAK,IAAIrX,OAAK,GAAG,KAAKwQ,SAAtB,EAAiCxQ,OAAK,GAAG,KAAK2Q,UAA9C,EAA0D3Q,OAAK,EAA/D,EAAmE;QACjE,IAAMuS,KAAK,GAAG,KAAKxB,KAAL,CAAW/Q,OAAX,CAAd;;QACA,IAAMqD,OAAM,GAAGrD,OAAK,GAAG2I,mBAAvB;;QACAkN,QAAQ,CAACxS,OAAD,CAAR,GAAmB,CAAE,CAAC,KAAKwN,KAAL,CAAW7Q,OAAX,IAAoBkJ,KAApB,GAA4B,KAAKwE,eAAL,CAAqBF,OAArB,GAA+B,EAA/B,GAAoC+E,KAAjE,IAA0ErJ,KAA3E,GAAoFA,KAArF,IAA8FA,KAAjH;QACA2M,QAAQ,CAACxS,OAAM,GAAG,CAAV,CAAR,GAAuB,CAAE,CAAC,KAAKyN,KAAL,CAAW9Q,OAAX,IAAoBmJ,MAApB,GAA6B,KAAKuE,eAAL,CAAqBD,OAArB,GAA+B,EAA/B,GAAoC8E,KAAjE,GAAyE5E,IAAI,GAAG,CAAP,GAAW4E,KAArF,IAA8FpJ,MAA/F,GAAyGA,MAA1G,IAAoHA,MAA3I;QACA0M,QAAQ,CAACxS,OAAM,GAAG,CAAV,CAAR,GAAuB,IAAIkP,KAAK,GAAG,GAAnC;QACAsD,QAAQ,CAACxS,OAAM,GAAG,CAAV,CAAR,GAAuB,CAAC,OAAO,OAAOkP,KAAf,KAAyB,MAAM,MAAM9T,IAAI,CAAC4V,GAAL,CAAS1G,IAAI,IAAI,MAAM4E,KAAV,CAAJ,GAAuB,KAAKpB,KAAL,CAAWnR,OAAX,CAAhC,CAArC,CAAvB;QACA6V,QAAQ,CAACxS,OAAM,GAAG,CAAV,CAAR,GAAuB,KAAK6N,MAAL,CAAYlR,OAAZ,CAAvB;QACA6V,QAAQ,CAACxS,OAAM,GAAG,CAAV,CAAR,GAAuB,CAAvB;MACD,CAtHwB,CAwHzB;;;MACA8H,EAAE,CAACmM,MAAH,CAAUnM,EAAE,CAACoM,KAAb;MACApM,EAAE,CAACqM,UAAH,CAAc,KAAK7H,WAAL,CAAiB9D,OAA/B;MACAV,EAAE,CAAC6E,UAAH,CAAc7E,EAAE,CAAC8E,YAAjB,EAA+B,KAAKH,UAApC;MACA3E,EAAE,CAACsM,uBAAH,CAA2B,KAAK7H,oBAAhC;MACAzE,EAAE,CAACuM,mBAAH,CAAuB,KAAK9H,oBAA5B,EAAkD,CAAlD,EAAqDzE,EAAE,CAACwM,KAAxD,EAA+D,KAA/D,EAAsE,CAAtE,EAAyE,CAAzE;MACAxM,EAAE,CAACyM,SAAH,CAAazM,EAAE,CAAC0M,IAAhB,EAAsB1M,EAAE,CAAC2M,mBAAzB;MACA3M,EAAE,CAAC4M,SAAH,CAAa,KAAKpI,WAAL,CAAiBzD,QAAjB,CAA0B8L,KAAvC,EAA8CjV,aAAa,GAAG,CAAH,GAAO,IAAlE;MACAoI,EAAE,CAAC8M,UAAH,CAAc9M,EAAE,CAAC+M,cAAjB,EAAiC,CAAjC,EAAoC,CAApC;MACA/M,EAAE,CAACgN,wBAAH,CAA4B,KAAKvI,oBAAjC;MAEA,IAAQ1D,QAAR,GAAqB,KAAKwD,eAA1B,CAAQxD,QAAR;MACAf,EAAE,CAACqM,UAAH,CAAc,KAAK9H,eAAL,CAAqB7D,OAAnC;MACAV,EAAE,CAAC6E,UAAH,CAAc7E,EAAE,CAAC8E,YAAjB,EAA+B,KAAKwC,cAApC;MACAtH,EAAE,CAACiN,aAAH,CAAiBjN,EAAE,CAAC8E,YAApB,EAAkC,CAAlC,EAAqC4F,QAArC;MACA,IAAMwC,MAAM,GAAG1P,mBAAmB,GAAGwH,YAAY,CAACmI,iBAAlD;MACAzL,mBAAmB,CAACxM,OAApB,CAA4B,iBAAkCkY,cAAlC,EAAqD;QAAA,IAA5CC,aAA4C,SAAlD1L,IAAkD;QAAA,IAA7BzJ,MAA6B,SAA7BA,MAA6B;QAC/E,IAAMoV,QAAQ,GAAG,MAAI,CAAC7F,kBAAL,CAAwB2F,cAAxB,CAAjB;QACApN,EAAE,CAACsM,uBAAH,CAA2BgB,QAA3B;QACAtN,EAAE,CAACuM,mBAAH,CAAuBe,QAAvB,EAAiCD,aAAjC,EAAgDrN,EAAE,CAACwM,KAAnD,EAA0D,KAA1D,EAAiEU,MAAjE,EAAyEhV,MAAM,GAAG8M,YAAY,CAACmI,iBAA/F;MACD,CAJD;MAKAnN,EAAE,CAACuN,SAAH,CAAaxM,QAAQ,CAACyM,IAAtB,EAA4BzP,KAA5B,EAAmCC,MAAnC;MACAgC,EAAE,CAAC4M,SAAH,CAAa7L,QAAQ,CAAC0M,IAAtB,EAA4B,KAAK7F,UAAjC;MACA,IAAI7G,QAAQ,CAAC2M,KAAb,EAAoB1N,EAAE,CAAC4M,SAAH,CAAa7L,QAAQ,CAAC2M,KAAtB,EAA6BlL,IAA7B;MACpBxC,EAAE,CAACyM,SAAH,CAAazM,EAAE,CAAC2N,GAAhB,EAAqB3N,EAAE,CAAC2M,mBAAxB;MACA3M,EAAE,CAAC4M,SAAH,CAAa7L,QAAQ,CAAC6M,KAAtB,EAA6B,CAA7B;MACA5N,EAAE,CAAC8M,UAAH,CAAc9M,EAAE,CAAC6N,MAAjB,EAAyB,CAAzB,EAA4B,KAAKrI,UAAjC,EAlJyB,CAmJzB;;MACA,IAAI,KAAK7C,MAAT,EAAiB;MACjB3C,EAAE,CAACyM,SAAH,CAAazM,EAAE,CAAC2N,GAAhB,EAAqB3N,EAAE,CAAC2N,GAAxB;MACA3N,EAAE,CAAC4M,SAAH,CAAa7L,QAAQ,CAAC6M,KAAtB,EAA6B,CAA7B;MACA5N,EAAE,CAAC8M,UAAH,CAAc9M,EAAE,CAAC6N,MAAjB,EAAyB,CAAzB,EAA4B,KAAKxI,SAAjC;IACD;;;;iCAzayByI,eA4a5B;;;AACA,IAAMC,UAAU,GAAG,CACjB;EAAEC,KAAK,EAAE,CAAC,CAAC,EAAF,EAAM,EAAN,CAAT;EAAoBC,OAAO,EAAE;AAA7B,CADiB,EAEjB;EAAED,KAAK,EAAE,CAAC,EAAD,EAAK,CAAC,EAAN,CAAT;EAAoBC,OAAO,EAAE;AAA7B,CAFiB,EAGjB;EAAED,KAAK,EAAE,CAAC,CAAC,EAAF,EAAM,EAAN,CAAT;EAAoBC,OAAO,EAAE;AAA7B,CAHiB,EAIjB;EAAED,KAAK,EAAE,CAAC,EAAD,EAAK,CAAC,EAAN,CAAT;EAAoBC,OAAO,EAAE;AAA7B,CAJiB,CAAnB;AAMA,IAAMC,eAAe,GAAG,CAAxB;AACA,IAAMC,gBAAgB,GAAG,IAAzB;AACA,IAAMC,mBAAmB,GAAG,IAA5B;;IAEMC;;;;;;;;;;;;;WACJ,6BAAoB;MAAA;;MAClB,IAAI,KAAKC,UAAT,EAAqB;MACrB,KAAKA,UAAL,GAAkBP,UAAU,CAACpZ,GAAX,CAAe,iBAA0C;QAAA,uCAAvCqZ,KAAuC;QAAA,IAA/BO,MAA+B;QAAA,IAAvBC,MAAuB;QAAA,IAAdP,OAAc,SAAdA,OAAc;;QACzE,IAAMQ,IAAI,GAAGzV,QAAQ,CAACgG,aAAT,CAAuB,KAAvB,CAAb;QACAyP,IAAI,CAAC5M,SAAL,GAAiBlF,eAAjB;;QACA,MAAI,CAACmF,WAAL,CAAiB2M,IAAjB;;QACA,IAAI7W,aAAJ,EAAmB,OAAO,IAAP;QACnB,OAAO6W,IAAI,CAACC,OAAL,CAAa,CAClB;UAAE7V,SAAS,EAAE;QAAb,CADkB,EAElB;UAAEA,SAAS,sBAAe0V,MAAf,gBAA2BC,MAA3B;QAAX,CAFkB,EAGlB;UAAE3V,SAAS,sBAAe,CAAC0V,MAAD,GAAU,IAAzB,gBAAmC,CAACC,MAAD,GAAU,IAA7C;QAAX,CAHkB,EAIlB;UAAE3V,SAAS,EAAE;QAAb,CAJkB,CAAb,EAKJ;UAAE8V,QAAQ,EAAEV,OAAO,GAAG,IAAtB;UAA4BW,UAAU,EAAEC,QAAxC;UAAkDC,MAAM,EAAE;QAA1D,CALI,CAAP;MAMD,CAXiB,EAWfC,MAXe,CAWRC,OAXQ,CAAlB;MAYA,KAAKC,IAAL,GAAY,CAAZ;MACA,KAAKC,UAAL,GAAkB,CAAlB;MACA,KAAKzM,IAAL,GAAY,KAAKC,OAAL,CAAanG,aAAb,KAA+B,KAAK4S,aAAhD;;MACA,KAAKC,cAAL,GAAsB;QAAA,OAAM,MAAI,CAACC,OAAL,CAAanB,eAAb,CAAN;MAAA,CAAtB;;MACA,KAAK9K,cAAL,GAAsB;QAAA,OAAM,MAAI,CAACiM,OAAL,CAAa,CAAb,CAAN;MAAA,CAAtB;;MACA,KAAK5M,IAAL,CAAUvM,gBAAV,CAA2B,cAA3B,EAA2C,KAAKkZ,cAAhD;MACA,KAAK3M,IAAL,CAAUvM,gBAAV,CAA2B,cAA3B,EAA2C,KAAKkN,cAAhD,EApBkB,CAqBlB;;MACA,KAAKU,gBAAL,GAAwB,IAAI3N,oBAAJ,CAAyB,UAACC,OAAD,EAAa;QAC5D,IAAMmC,SAAS,GAAGnC,OAAO,CAAC,CAAD,CAAP,CAAWC,cAA7B;;QACA,MAAI,CAACoM,IAAL,CAAU6M,SAAV,CAAoBlY,MAApB,CAA2BwF,oBAA3B,EAAiD,CAACrE,SAAlD;;QACA,MAAI,CAAC+V,UAAL,CAAgBpZ,OAAhB,CAAwB,UAACqa,SAAD;UAAA,OAAgBhX,SAAS,GAAGgX,SAAS,CAACC,IAAV,EAAH,GAAsBD,SAAS,CAACE,KAAV,EAA/C;QAAA,CAAxB;MACD,CAJuB,CAAxB;MAKA,KAAK3L,gBAAL,CAAsBxN,OAAtB,CAA8B,KAAKmM,IAAnC;IACD;;;WAED,iBAAQyM,UAAR,EAAoB;MAAA;;MAClB,KAAKA,UAAL,GAAkBA,UAAlB;MACA,IAAI,KAAK9a,OAAL,IAAgB,CAAC,KAAKka,UAAL,CAAgBta,MAArC,EAA6C;;MAC7C,IAAM0E,IAAI,GAAG,SAAPA,IAAO,GAAM;QACjB,MAAI,CAACuW,IAAL,IAAa,CAAC,MAAI,CAACC,UAAL,GAAkB,MAAI,CAACD,IAAxB,IAAgCd,gBAA7C;QACA,IAAI7a,IAAI,CAACuY,GAAL,CAAS,MAAI,CAACqD,UAAL,GAAkB,MAAI,CAACD,IAAhC,IAAwCb,mBAA5C,EAAiE,MAAI,CAACa,IAAL,GAAY,MAAI,CAACC,UAAjB;;QACjE,MAAI,CAACZ,UAAL,CAAgBpZ,OAAhB,CAAwB,UAACqa,SAAD,EAAe;UAAEA,SAAS,CAACG,YAAV,GAAyB,MAAI,CAACT,IAA9B;QAAqC,CAA9E;;QACA,MAAI,CAAC7a,OAAL,GAAe,MAAI,CAAC6a,IAAL,KAAc,MAAI,CAACC,UAAnB,GAAgC,CAAhC,GAAoCvZ,qBAAqB,CAAC+C,IAAD,CAAxE;MACD,CALD;;MAMA,KAAKtE,OAAL,GAAeuB,qBAAqB,CAAC+C,IAAD,CAApC;IACD;;;WAED,gCAAuB;MACrBS,oBAAoB,CAAC,KAAK/E,OAAN,CAApB;MACA,KAAKA,OAAL,GAAe,CAAf;MACA,IAAI,KAAK0P,gBAAT,EAA2B,KAAKA,gBAAL,CAAsBM,UAAtB;MAC3B,IAAI,KAAKkK,UAAT,EAAqB,KAAKA,UAAL,CAAgBpZ,OAAhB,CAAwB,UAACqa,SAAD;QAAA,OAAeA,SAAS,CAACI,MAAV,EAAf;MAAA,CAAxB;MACrB,KAAKrB,UAAL,GAAkB,IAAlB;MACA,KAAKsB,eAAL;;MACA,IAAI,KAAKnN,IAAT,EAAe;QACb,KAAKA,IAAL,CAAU4B,mBAAV,CAA8B,cAA9B,EAA8C,KAAK+K,cAAnD;QACA,KAAK3M,IAAL,CAAU4B,mBAAV,CAA8B,cAA9B,EAA8C,KAAKjB,cAAnD;MACD;IACF;;;;iCAtDkB0K;;AAyDd,IAAM+B,UAAU,GAAG,SAAbA,UAAa,GAAM;EAC9B,IAAI,CAACC,cAAc,CAAC/b,GAAf,CAAmB,SAAnB,CAAL,EAAoC+b,cAAc,CAACC,MAAf,CAAsB,SAAtB,EAAiC1B,MAAjC;EACpC,IAAI,CAACyB,cAAc,CAAC/b,GAAf,CAAmB,iBAAnB,CAAL,EAA4C+b,cAAc,CAACC,MAAf,CAAsB,iBAAtB,EAAyCnO,aAAzC;AAC7C,CAHM;;;;;;;;ACxmBP;AAEA,IAAMoO,YAAY,GAAG,CAArB;AACA,IAAMC,eAAe,GAAG,UAAxB;AACA,IAAMC,eAAe,GAAG,UAAxB,EAEA;;AACO,IAAMC,YAAY,GAAG,SAAfA,YAAe,CAACC,YAAD,EAAkB;EAC5C,IAAI,CAAClc,MAAM,CAACC,UAAP,CAAkB,gBAAlB,EAAoC2B,OAAzC,EAAkD;EAElDhD,gBAAC,CAACsd,YAAD,CAAD,CACGra,EADH,CACM,WADN,EACmB,UAAUuD,KAAV,EAAiB;IAChC,IAAM+W,QAAQ,GAAG,KAAKrb,qBAAL,EAAjB;IACA,IAAMsb,QAAQ,GAAG,CAAChX,KAAK,CAAC0J,OAAN,GAAgBqN,QAAQ,CAACpN,IAA1B,IAAkCoN,QAAQ,CAACtS,KAA5D;IACA,IAAMwS,QAAQ,GAAG,CAACjX,KAAK,CAAC4J,OAAN,GAAgBmN,QAAQ,CAACpb,GAA1B,IAAiCob,QAAQ,CAACrS,MAA3D;IACA,KAAKzI,KAAL,CAAWC,WAAX,CAAuBya,eAAvB,YAA2C,CAAC,CAAC,MAAMM,QAAP,IAAmBP,YAApB,EAAkCva,OAAlC,CAA0C,CAA1C,CAA3C;IACA,KAAKF,KAAL,CAAWC,WAAX,CAAuB0a,eAAvB,YAA2C,CAAC,CAACI,QAAQ,GAAG,GAAZ,IAAmBN,YAApB,EAAkCva,OAAlC,CAA0C,CAA1C,CAA3C;EACD,CAPH,EAQGM,EARH,CAQM,YARN,EAQoB,YAAY;IAC5B,KAAKR,KAAL,CAAWU,cAAX,CAA0Bga,eAA1B;IACA,KAAK1a,KAAL,CAAWU,cAAX,CAA0Bia,eAA1B;EACD,CAXH;AAYD,CAfM;;ACPP;AACA,IAAMM,eAAe,GAAG,EAAxB,EACA;;AACA,IAAMC,oBAAoB,GAAG,GAA7B,EACA;;AACA,IAAMC,aAAa,GAAG,GAAtB,EAEA;AACA;AACA;AACA;;AACO,IAAMC,cAAc,GAAG,SAAjBA,cAAiB,CAACC,QAAD,EAAWC,OAAX,EAA+C;EAAA,IAA3BC,SAA2B,uEAAf;IAAA,OAAM,IAAN;EAAA,CAAe;EAC3E,IAAI/b,QAAQ,GAAG,CAAf;EACA,IAAIgc,YAAY,GAAG,CAAnB;EACA,IAAIC,aAAa,GAAG,KAApB;EACA,IAAIC,WAAW,GAAG,CAAlB;EACA,IAAIC,YAAY,GAAG,CAAnB;EAEAN,QAAQ,CAAC7a,EAAT,CAAY,OAAZ,EAAqB,UAACuD,KAAD,EAAW;IAC9B,2BAA2BA,KAAK,CAACC,aAAjC;IAAA,IAAQ6R,MAAR,wBAAQA,MAAR;IAAA,IAAgBC,MAAhB,wBAAgBA,MAAhB;IACA,IAAI/X,IAAI,CAACuY,GAAL,CAAST,MAAT,KAAoB9X,IAAI,CAACuY,GAAL,CAASR,MAAT,CAApB,IAAwC,CAACyF,SAAS,EAAtD,EAA0D,OAF5B,CAG9B;;IACAxX,KAAK,CAACM,cAAN;IAEA,IAAMuX,QAAQ,GAAG7d,IAAI,CAACuY,GAAL,CAAST,MAAT,CAAjB;IACA,IAAMgG,SAAS,GAAGD,QAAQ,GAAGJ,YAA7B;IACAA,YAAY,GAAGI,QAAf;IACAE,YAAY,CAACH,YAAD,CAAZ;IACAA,YAAY,GAAGI,UAAU,CAAC,YAAM;MAC9Bvc,QAAQ,GAAG,CAAX;MACAgc,YAAY,GAAG,CAAf;MACAC,aAAa,GAAG,KAAhB;IACD,CAJwB,EAItBP,oBAJsB,CAAzB;;IAMA,IAAIO,aAAJ,EAAmB;MACjB,IAAI,CAACI,SAAD,IAAclY,WAAW,CAACP,GAAZ,KAAoBsY,WAAtC,EAAmD;MACnDD,aAAa,GAAG,KAAhB;MACAjc,QAAQ,GAAG,CAAX;IACD;;IACDA,QAAQ,IAAIqW,MAAZ;IACA,IAAI9X,IAAI,CAACuY,GAAL,CAAS9W,QAAT,IAAqByb,eAAzB,EAA0C;IAC1CQ,aAAa,GAAG,IAAhB;IACAC,WAAW,GAAG/X,WAAW,CAACP,GAAZ,KAAoB+X,aAAlC;IACAG,OAAO,CAACvd,IAAI,CAACie,IAAL,CAAUxc,QAAV,CAAD,CAAP;EACD,CA1BD;AA2BD,CAlCM;;;;;;;;;;;;;;ACXP;CAGA;;AACA,IAAMyc,YAAY,GAAG,oBAArB;AAEA,IAAMC,YAAY,GAAG,WAArB;AACA,IAAMC,eAAe,GAAG,kBAAxB;AACA,IAAMC,iBAAiB,GAAG,oBAA1B,EACA;;AACA,IAAMC,eAAe,GAAG;EACtBC,SAAS,EAAE,sBADW;EAEtBC,eAAe,EAAE,6BAFK;EAGtBC,GAAG,EAAE;AAHiB,CAAxB;AAKA,IAAMC,KAAK,GAAG,sBAAd;AACA,IAAMC,IAAI,GAAG,qBAAb;AACA,IAAMC,SAAS,GAAG,2BAAlB;AACA,IAAMC,IAAI,GAAG,0BAAb;AACA,IAAMC,IAAI,GAAG,0BAAb;AACA,IAAMC,IAAI,GAAG,qBAAb;AACA,IAAMC,QAAQ,GAAG,8BAAjB;AACA,IAAMC,QAAQ,GAAG,yBAAjB;;AAEA,IAAMC,GAAG,GAAG,SAANA,GAAM,CAACC,MAAD;EAAA,OAAYC,MAAM,CAACD,MAAD,CAAN,CAAeE,QAAf,CAAwB,CAAxB,EAA2B,GAA3B,CAAZ;AAAA,CAAZ,EAEA;AACA;;;AACO,IAAMC,WAAW,GAAG,SAAdA,WAAc,CAACC,eAAD,EAAqB;EAC9C,IAAMC,QAAQ,GAAGhgB,gBAAC,CAAC+f,eAAD,CAAlB;EACA,IAAME,MAAM,GAAGD,QAAQ,CAAChf,IAAT,CAAcke,KAAd,CAAf;EACA,IAAMgB,MAAM,GAAGD,MAAM,CAACjf,IAAP,CAAYme,IAAZ,CAAf;EACA,IAAI,CAACe,MAAM,CAAChf,MAAZ,EAAoB;EAEpB,IAAMif,KAAK,GAAGH,QAAQ,CAAChf,IAAT,CAAcqe,IAAd,CAAd;EACA,IAAMe,KAAK,GAAGJ,QAAQ,CAAChf,IAAT,CAAcse,IAAd,CAAd;EACA,IAAMe,KAAK,GAAGL,QAAQ,CAAChf,IAAT,CAAcue,IAAd,CAAd;EACA,IAAMe,SAAS,GAAGN,QAAQ,CAAChf,IAAT,CAAcye,QAAd,CAAlB;EACA,IAAM9T,QAAQ,GAAGqU,QAAQ,CAAChf,IAAT,CAAcwe,QAAd,EAAwB,CAAxB,CAAjB;EACA,IAAMra,KAAK,GAAG8a,MAAM,CAAC,CAAD,CAApB;EACA,IAAMhX,SAAS,GAAGiX,MAAM,CAAChf,MAAP,GAAgB,CAAlC;EACA,IAAMqf,WAAW,GAAGnf,MAAM,CAACC,UAAP,CAAkBqd,YAAlB,CAApB;EACA,IAAI8B,WAAW,GAAG,CAAlB;EACA,IAAIC,aAAa,GAAG,CAApB;EACA,IAAIC,KAAK,GAAG,EAAZ;;EAEA,IAAMC,SAAS,GAAG,SAAZA,SAAY,GAAM;IACtB,IAAMle,KAAK,GAAGme,gBAAgB,CAACZ,QAAQ,CAAC,CAAD,CAAT,CAA9B;IACAU,KAAK,GAAGnQ,MAAM,CAACsQ,WAAP,CAAmBtQ,MAAM,CAACjN,OAAP,CAAewb,eAAf,EACxBjd,GADwB,CACpB;MAAA;MAAA,IAAEyM,IAAF;MAAA,IAAQwS,QAAR;;MAAA,OAAsB,CAACxS,IAAD,EAAOyS,UAAU,CAACte,KAAK,CAACue,gBAAN,CAAuBF,QAAvB,CAAD,CAAjB,CAAtB;IAAA,CADoB,CAAnB,CAAR;EAED,CAJD,CAlB8C,CAwB9C;;;EACA,IAAMG,YAAY,GAAG,SAAfA,YAAe,GAAM;IACzB,IAAMC,WAAW,GAAGH,UAAU,CAACH,gBAAgB,CAACzb,KAAD,CAAhB,CAAwBgc,WAAzB,CAA9B;IACA,IAAMC,YAAY,GAAGF,WAAW,GAAGV,WAAW,IAAIE,KAAK,CAAC3B,SAAN,GAAkB2B,KAAK,CAACzB,GAA5B,CAAzB,GAA4DyB,KAAK,CAAC1B,eAAN,GAAwB,CAAzG;IACA,OAAOxe,IAAI,CAACgS,KAAL,CAAWpR,MAAM,CAACigB,UAAP,GAAoB,CAApB,GAAwBD,YAAnC,CAAP;EACD,CAJD;;EAMA,IAAME,MAAM,GAAG,SAATA,MAAS,GAAM;IACnBpB,MAAM,CAACqB,WAAP,CAAmB5C,YAAnB,EAAiC6C,EAAjC,CAAoChB,WAApC,EAAiDhZ,QAAjD,CAA0DmX,YAA1D;IACA0B,KAAK,CAAC/K,IAAN,CAAWoK,GAAG,CAACc,WAAW,GAAG,CAAf,CAAd;IACAF,SAAS,CAAChL,IAAV,iBAAwBkL,WAAW,GAAG,CAAtC,iBAA8CN,MAAM,CAAChf,MAArD;IACAyK,QAAQ,CAAClJ,KAAT,CAAeC,WAAf,CAA2Bmc,iBAA3B,EAA8C,CAAC2B,WAAW,GAAG,CAAf,IAAoBN,MAAM,CAAChf,MAAzE;IACAif,KAAK,CAACsB,IAAN,CAAW,UAAX,EAAuBjB,WAAW,KAAK,CAAvC;IACAJ,KAAK,CAACqB,IAAN,CAAW,UAAX,EAAuBjB,WAAW,KAAKvX,SAAvC;IACA,IAAIsX,WAAW,CAACvd,OAAhB,EAAyBmC,KAAK,CAAC1C,KAAN,CAAYU,cAAZ,CAA2Byb,eAA3B,EAAzB,KACKzZ,KAAK,CAAC1C,KAAN,CAAYC,WAAZ,CAAwBkc,eAAxB,YAA4CqC,YAAY,EAAxD;EACN,CATD;;EAWA,IAAMS,YAAY,GAAG,SAAfA,YAAe,CAAC3f,KAAD,EAAW;IAC9BoD,KAAK,CAACwc,QAAN,CAAe;MAAExR,IAAI,EAAE+P,MAAM,CAACne,KAAD,CAAN,CAAc6f,UAAd,GAA2B1B,MAAM,CAAC,CAAD,CAAN,CAAU0B,UAA7C;MAAyDC,QAAQ,EAAE;IAAnE,CAAf;EACD,CAFD;;EAIA,IAAMC,IAAI,GAAG,SAAPA,IAAO,CAAC/f,KAAD,EAAmC;IAAA,gFAAP,EAAO;IAAA,yBAAzBggB,MAAyB;IAAA,IAAzBA,MAAyB,6BAAhB,IAAgB;;IAC9CvB,WAAW,GAAGhgB,IAAI,CAACE,GAAL,CAAS,CAAT,EAAYF,IAAI,CAACC,GAAL,CAASwI,SAAT,EAAoBlH,KAApB,CAAZ,CAAd;IACAuf,MAAM;IACN,IAAIS,MAAM,IAAIxB,WAAW,CAACvd,OAA1B,EAAmC0e,YAAY,CAAClB,WAAD,CAAZ;EACpC,CAJD;;EAMAL,KAAK,CAACld,EAAN,CAAS,OAAT,EAAkB;IAAA,OAAM6e,IAAI,CAACtB,WAAW,GAAG,CAAf,CAAV;EAAA,CAAlB;EACAJ,KAAK,CAACnd,EAAN,CAAS,OAAT,EAAkB;IAAA,OAAM6e,IAAI,CAACtB,WAAW,GAAG,CAAf,CAAV;EAAA,CAAlB,EArD8C,CAuD9C;EACA;;EACA3C,cAAc,CAACmC,QAAD,EAAW,UAACgC,SAAD;IAAA,OAAeF,IAAI,CAACtB,WAAW,GAAGwB,SAAf,CAAnB;EAAA,CAAX,EAAyD;IAAA,OAAM,CAACzB,WAAW,CAACvd,OAAnB;EAAA,CAAzD,CAAd;EAEAkd,MAAM,CAACjd,EAAP,CAAU,OAAV,EAAmB,UAAUuD,KAAV,EAAiB;IAClC,IAAI+Z,WAAW,CAACvd,OAAZ,IAAuBhD,gBAAC,CAACwG,KAAK,CAAC4C,MAAP,CAAD,CAAgBwG,OAAhB,CAAwBwP,SAAxB,EAAmCle,MAA9D,EAAsE;IACtE4gB,IAAI,CAAC5B,MAAM,CAACne,KAAP,CAAa,IAAb,CAAD,EAAqB;MAAEggB,MAAM,EAAE;IAAV,CAArB,CAAJ;EACD,CAHD;EAKA9B,MAAM,CAAChd,EAAP,CAAU,QAAV,EAAoB,YAAM;IACxB,IAAI,CAACsd,WAAW,CAACvd,OAAb,IAAwByd,aAA5B,EAA2C;IAC3CA,aAAa,GAAG5d,qBAAqB,CAAC,YAAM;MAC1C4d,aAAa,GAAG,CAAhB;MACA,IAAIP,MAAM,CAAChf,MAAP,GAAgB,CAApB,EAAuB;MACvB,IAAM+gB,IAAI,GAAG/B,MAAM,CAAC,CAAD,CAAN,CAAU0B,UAAV,GAAuB1B,MAAM,CAAC,CAAD,CAAN,CAAU0B,UAA9C;MACA,IAAM7f,KAAK,GAAGvB,IAAI,CAACgS,KAAL,CAAWrN,KAAK,CAAC+c,UAAN,GAAmBD,IAA9B,CAAd;MACA,IAAIlgB,KAAK,KAAKye,WAAd,EAA2BsB,IAAI,CAAC/f,KAAD,EAAQ;QAAEggB,MAAM,EAAE;MAAV,CAAR,CAAJ;IAC5B,CANoC,CAArC;EAOD,CATD;EAWA/hB,gBAAC,CAACoB,MAAD,CAAD,CAAU6B,EAAV,CAAa,QAAb,EAAuBqe,MAAvB;EACAX,SAAS;EACTW,MAAM;AACP,CA9EM;;AC5BP;AAEA,IAAMa,aAAa,GAAG,YAAtB;AACA,IAAMjD,UAAK,GAAG,mBAAd;AACA,IAAMG,SAAI,GAAG,yBAAb;AACA,IAAMC,SAAI,GAAG,yBAAb,EACA;;AACA,IAAM8C,OAAO,GAAG,CAAhB,EAEA;;AACO,IAAMC,QAAQ,GAAG,SAAXA,QAAW,CAACC,YAAD,EAAkB;EACxCtiB,gBAAC,CAACsiB,YAAD,CAAD,CAAgBle,IAAhB,CAAqB,UAACC,CAAD,EAAIke,IAAJ,EAAa;IAChC,IAAMC,KAAK,GAAGxiB,gBAAC,CAACuiB,IAAD,CAAf;IACA,IAAMpC,KAAK,GAAGqC,KAAK,CAACxhB,IAAN,CAAWqe,SAAX,CAAd;IACA,IAAMe,KAAK,GAAGoC,KAAK,CAACxhB,IAAN,CAAWse,SAAX,CAAd;IACA,IAAMna,KAAK,GAAGqd,KAAK,CAACxhB,IAAN,CAAWke,UAAX,EAAkB,CAAlB,CAAd;IACA,IAAI,CAAC/Z,KAAD,IAAUA,KAAK,CAACkD,QAAN,CAAenH,MAAf,GAAwB,CAAtC,EAAyC;;IAEzC,IAAMuhB,YAAY,GAAG,SAAfA,YAAe,GAAM;MACzB,IAAQP,UAAR,GAAiD/c,KAAjD,CAAQ+c,UAAR;MAAA,IAAoBjS,WAApB,GAAiD9K,KAAjD,CAAoB8K,WAApB;MAAA,IAAiCtK,WAAjC,GAAiDR,KAAjD,CAAiCQ,WAAjC;MACA,IAAM+c,OAAO,GAAGR,UAAU,GAAGE,OAA7B;MACA,IAAMO,OAAO,GAAGT,UAAU,GAAGjS,WAAb,GAA2BtK,WAAW,GAAGyc,OAAzD,CAHyB,CAIzB;;MACAjC,KAAK,CAACyC,WAAN,CAAkBT,aAAlB,EAAiCO,OAAjC,EAA0CjB,IAA1C,CAA+C,UAA/C,EAA2D,CAACiB,OAA5D;MACAtC,KAAK,CAACwC,WAAN,CAAkBT,aAAlB,EAAiCQ,OAAjC,EAA0ClB,IAA1C,CAA+C,UAA/C,EAA2D,CAACkB,OAA5D;IACD,CAPD;;IASA,IAAME,YAAY,GAAG,SAAfA,YAAe,CAACb,SAAD,EAAe;MAClC,IAAMC,IAAI,GAAG9c,KAAK,CAACkD,QAAN,CAAe,CAAf,EAAkBuZ,UAAlB,GAA+Bzc,KAAK,CAACkD,QAAN,CAAe,CAAf,EAAkBuZ,UAA9D;MACA,IAAM7f,KAAK,GAAGvB,IAAI,CAACgS,KAAL,CAAWrN,KAAK,CAAC+c,UAAN,GAAmBD,IAA9B,IAAsCD,SAApD;MACA7c,KAAK,CAACwc,QAAN,CAAe;QAAExR,IAAI,EAAE3P,IAAI,CAACE,GAAL,CAAS,CAAT,EAAYqB,KAAK,GAAGkgB,IAApB,CAAR;QAAmCJ,QAAQ,EAAE;MAA7C,CAAf;IACD,CAJD;;IAMA1B,KAAK,CAACld,EAAN,CAAS,OAAT,EAAkB;MAAA,OAAM4f,YAAY,CAAC,CAAC,CAAF,CAAlB;IAAA,CAAlB;IACAzC,KAAK,CAACnd,EAAN,CAAS,OAAT,EAAkB;MAAA,OAAM4f,YAAY,CAAC,CAAD,CAAlB;IAAA,CAAlB;IACA7iB,gBAAC,CAACmF,KAAD,CAAD,CAASlC,EAAT,CAAY,QAAZ,EAAsBwf,YAAtB;IACAziB,gBAAC,CAACoB,MAAD,CAAD,CAAU6B,EAAV,CAAa,QAAb,EAAuBwf,YAAvB;IACAA,YAAY;EACb,CA3BD;AA4BD,CA7BM;;;;ACVP;CAGA;;AACA,IAAM/D,oBAAY,GAAG,oBAArB;AACA,IAAMC,oBAAY,GAAG,WAArB;AACA,IAAMmE,KAAK,GAAG,gDAAd;;AACA,IAAMpD,WAAG,GAAG,SAANA,GAAM,CAACC,MAAD;EAAA,OAAYC,MAAM,CAACD,MAAD,CAAN,CAAeE,QAAf,CAAwB,CAAxB,EAA2B,GAA3B,CAAZ;AAAA,CAAZ,EAEA;AACA;AACA;;;AACO,IAAMkD,WAAW,GAAG,SAAdA,WAAc,CAAC/a,QAAD,EAAc;EACvChI,gBAAC,CAACgI,QAAD,CAAD,CAAY5D,IAAZ,CAAiB,UAACC,CAAD,EAAI2e,OAAJ,EAAgB;IAC/B,IAAMhD,QAAQ,GAAGhgB,gBAAC,CAACgjB,OAAD,CAAlB;IACA,IAAM/C,MAAM,GAAGD,QAAQ,CAAChf,IAAT,CAAc,sBAAd,CAAf;IACA,IAAMkf,MAAM,GAAGD,MAAM,CAAC5X,QAAP,CAAgB,qBAAhB,CAAf;IACA,IAAMnE,QAAQ,GAAG8b,QAAQ,CAAChf,IAAT,CAAc,wBAAd,CAAjB;IACA,IAAMiiB,IAAI,GAAGjD,QAAQ,CAAChf,IAAT,CAAc,6BAAd,CAAb;IACA,IAAMmE,KAAK,GAAG8a,MAAM,CAAC,CAAD,CAApB;IACA,IAAMiD,KAAK,GAAGhD,MAAM,CAAChf,MAArB;IACA,IAAMqf,WAAW,GAAGnf,MAAM,CAACC,UAAP,CAAkBqd,oBAAlB,CAApB;IACA,IAAI3c,KAAK,GAAG,CAAZ;IACA,IAAI0e,aAAa,GAAG,CAApB;IAEA,IAAI,CAACyC,KAAL,EAAY;;IAEZ,IAAMC,IAAI,GAAG,SAAPA,IAAO,CAACC,SAAD,EAAuC;MAAA,+EAAP,EAAO;MAAA,uBAAzBrB,MAAyB;MAAA,IAAzBA,MAAyB,4BAAhB,IAAgB;;MAClDhgB,KAAK,GAAG,CAACqhB,SAAS,GAAGF,KAAb,IAAsBA,KAA9B;MACAjD,MAAM,CAACxY,GAAP,CAAW,iBAAX,EAA8B1F,KAA9B;MACAme,MAAM,CAAC9b,IAAP,CAAY,UAACif,SAAD,EAAYC,IAAZ,EAAqB;QAC/B,IAAMC,QAAQ,GAAGF,SAAS,KAAKthB,KAA/B;QACA/B,gBAAC,CAACsjB,IAAD,CAAD,CACGV,WADH,CACejE,oBADf,EAC6B4E,QAD7B,EAEGvf,IAFH,CAEQ,aAFR,EAEuB4b,MAAM,CAAC,CAAC2D,QAAF,CAF7B,EAGGviB,IAHH,CAGQ8hB,KAHR,EAIG9e,IAJH,CAIQ,UAJR,EAIoBuf,QAAQ,GAAG,IAAH,GAAU,IAJtC;MAKD,CAPD;MAQArf,QAAQ,CAACoR,IAAT,CAAcoK,WAAG,CAAC3d,KAAK,GAAG,CAAT,CAAjB;MACAkhB,IAAI,CAACxb,GAAL,CAAS,OAAT,YAAsB,CAAC1F,KAAK,GAAG,CAAT,IAAcmhB,KAAf,GAAwB,GAA7C;;MACA,IAAInB,MAAM,IAAIxB,WAAW,CAACvd,OAA1B,EAAmC;QACjCmC,KAAK,CAACwc,QAAN,CAAe;UAAExR,IAAI,EAAE+P,MAAM,CAACne,KAAD,CAAN,CAAc6f,UAAd,GAA2B1B,MAAM,CAAC,CAAD,CAAN,CAAU0B,UAA7C;UAAyDC,QAAQ,EAAE;QAAnE,CAAf;MACD;IACF,CAhBD,CAd+B,CAgC/B;;;IACAhE,cAAc,CAACmC,QAAQ,CAAChf,IAAT,CAAc,yBAAd,CAAD,EAA2C,UAACghB,SAAD;MAAA,OAAemB,IAAI,CAACphB,KAAK,GAAGigB,SAAT,CAAnB;IAAA,CAA3C,EAAmF;MAAA,OAAM,CAACzB,WAAW,CAACvd,OAAnB;IAAA,CAAnF,CAAd;IAEAid,MAAM,CAAChd,EAAP,CAAU,QAAV,EAAoB,YAAM;MACxB,IAAI,CAACsd,WAAW,CAACvd,OAAb,IAAwByd,aAAxB,IAAyCyC,KAAK,GAAG,CAArD,EAAwD;MACxDzC,aAAa,GAAG5d,qBAAqB,CAAC,YAAM;QAC1C4d,aAAa,GAAG,CAAhB;QACA,IAAMwB,IAAI,GAAG/B,MAAM,CAAC,CAAD,CAAN,CAAU0B,UAAV,GAAuB1B,MAAM,CAAC,CAAD,CAAN,CAAU0B,UAA9C,CAF0C,CAG1C;;QACA,IAAM4B,OAAO,GAAGre,KAAK,CAAC+c,UAAN,IAAoB/c,KAAK,CAACQ,WAAN,GAAoBR,KAAK,CAAC8K,WAA1B,GAAwC,CAA5E;QACA,IAAMwT,aAAa,GAAGD,OAAO,GAAGN,KAAK,GAAG,CAAX,GAAe1iB,IAAI,CAACgS,KAAL,CAAWrN,KAAK,CAAC+c,UAAN,GAAmBD,IAA9B,CAA5C;QACA,IAAIwB,aAAa,KAAK1hB,KAAtB,EAA6BohB,IAAI,CAACM,aAAD,EAAgB;UAAE1B,MAAM,EAAE;QAAV,CAAhB,CAAJ;MAC9B,CAPoC,CAArC;IAQD,CAVD;IAYA/B,QAAQ,CAAChf,IAAT,CAAc,sBAAd,EAAsCsU,IAAtC,CAA2CoK,WAAG,CAACwD,KAAD,CAA9C;IACAlD,QAAQ,CAAChf,IAAT,CAAc,0BAAd,EAA0CiC,EAA1C,CAA6C,OAA7C,EAAsD;MAAA,OAAMkgB,IAAI,CAACphB,KAAK,GAAG,CAAT,CAAV;IAAA,CAAtD;IACAie,QAAQ,CAAChf,IAAT,CAAc,0BAAd,EAA0CiC,EAA1C,CAA6C,OAA7C,EAAsD;MAAA,OAAMkgB,IAAI,CAACphB,KAAK,GAAG,CAAT,CAAV;IAAA,CAAtD;IACAme,MAAM,CAACjd,EAAP,CAAU,OAAV,EAAmB,YAAY;MAC7B,IAAIsd,WAAW,CAACvd,OAAhB,EAAyB;MACzB,IAAMqgB,SAAS,GAAGnD,MAAM,CAACne,KAAP,CAAa,IAAb,CAAlB;MACA,IAAIshB,SAAS,KAAKthB,KAAlB,EAAyBohB,IAAI,CAACE,SAAD,CAAJ;IAC1B,CAJD;IAMAF,IAAI,CAAC,CAAD,EAAI;MAAEpB,MAAM,EAAE;IAAV,CAAJ,CAAJ;EACD,CAzDD;AA0DD,CA3DM;;ACZP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,IAAM2B,iBAAiB,GAAG,MAA1B;AAGA1jB,gBAAC,CAAC,YAAM;EACJ+c,UAAU;EACVhY,uCAAe,CAAC,sBAAD,EAAyB,oBAAzB,CAAf;EACA2C,4BAAU,CAAC;IAAEC,gBAAgB,EAAE,cAApB;IAAoCC,YAAY,EAAE,mBAAlD;IAAuEC,eAAe,EAAE;EAAxF,CAAD,CAAV;EACAlH,mCAAa,CAAC,mBAAD,EAAsB,mBAAtB,CAAb;EACA0c,YAAY,CAAC,2CAAD,CAAZ;EACAyC,WAAW,CAAC,eAAD,CAAX;EACAuC,QAAQ,CAAC,YAAD,CAAR;EACA1e,sBAAO,CAAC,mBAAD,CAAP;EACAof,WAAW,CAAC,eAAD,CAAX;EAEA,IAAMY,OAAO,GAAG3jB,gBAAC,CAACoB,MAAD,CAAjB;EACA,IAAMwiB,OAAO,GAAG5jB,gBAAC,CAAC,SAAD,CAAjB;EACA,IAAM6jB,YAAY,GAAGD,OAAO,CAACE,WAAR,EAArB;EACA,IAAMC,UAAU,GAAG/jB,gBAAC,CAAC,YAAD,CAApB;EACA,IAAMgkB,WAAW,GAAGhkB,gBAAC,CAAC,kEAAD,CAArB;EAEA4jB,OAAO,CAACpc,QAAR,CAAiBkc,iBAAjB;EAEAC,OAAO,CAAC1gB,EAAR,CAAW,eAAX,EAA4B,YAAW;IACnC,IAAMghB,eAAe,GAAGjkB,gBAAC,CAAC,IAAD,CAAD,CAAQkkB,SAAR,EAAxB;IACA,IAAMC,WAAW,GAAGF,eAAe,GAAGF,UAAU,CAACD,WAAX,EAAtC;IACA,IAAMM,WAAW,GAAGJ,WAAW,CAACK,OAAZ,GAAsBC,IAAtB,CAA2B,UAACC,KAAD,EAAW;MACtD,IAAMC,QAAQ,GAAGxkB,gBAAC,CAACukB,KAAD,CAAD,CAASnf,MAAT,GAAkBjD,GAAlB,GAAwB0hB,YAAzC;MACA,OAAOI,eAAe,IAAIO,QAAnB,IAA+BP,eAAe,IAAIO,QAAQ,GAAGxkB,gBAAC,CAACukB,KAAD,CAAD,CAAST,WAAT,EAApE;IACH,CAHmB,CAApB;IAKAF,OAAO,CAAChB,WAAR,CAAoBc,iBAApB,EAAuCS,WAAW,IAAIC,WAAtD;EACH,CATD;AAUH,CA7BA,CAAD;;ACdA","sources":["webpack://flyaps/./js/new-home/case-stack.js","webpack://flyaps/./js/new-home/faq.js","webpack://flyaps/./js/new-home/logo-marquee.js","webpack://flyaps/./js/new-home/reveal.js","webpack://flyaps/./js/new-home/hero-fx.js","webpack://flyaps/./js/new-home/card-tilt.js","webpack://flyaps/./js/new-home/wheel-swipe.js","webpack://flyaps/./js/new-home/process.js","webpack://flyaps/./js/new-home/rail.js","webpack://flyaps/./js/new-home/reviews.js","webpack://flyaps/./js/new-home.js","webpack://flyaps/./new-home.js"],"sourcesContent":["import $ from 'jquery';\r\n\r\n// Keep in sync with $cases-stack-* in stylus/blocks/new-home/cases.styl\r\nconst STACK_MEDIA = '(min-width: 1100px)';\r\nconst STACK_TOP = 110;\r\nconst STACK_STEP = 18;\r\nconst STACK_PROPERTY = '--stack';\r\nconst SCROLL_EVENTS = 'scroll.caseStack resize.caseStack';\r\n\r\nconst clampToUnit = (value) => Math.min(1, Math.max(0, value));\r\n\r\n// Each sticky card shrinks and fades by how far the cards after it have slid up over it.\r\n// Scroll is only tracked while the list is on screen and the stack layout is active.\r\nexport const initCaseStack = (listSelector, itemSelector) => {\r\n  const $list = $(listSelector);\r\n  const items = $list.find(itemSelector).get();\r\n  if (!items.length) return;\r\n\r\n  const stackMedia = window.matchMedia(STACK_MEDIA);\r\n  let frameId = 0;\r\n  let isListVisible = false;\r\n  let isTracking = false;\r\n\r\n  const update = () => {\r\n    frameId = 0;\r\n    const viewportHeight = window.innerHeight;\r\n    const coverage = items.map((item, index) => {\r\n      const stickTop = STACK_TOP + index * STACK_STEP;\r\n      const distance = viewportHeight - item.getBoundingClientRect().top;\r\n      return clampToUnit(distance / Math.max(1, viewportHeight - stickTop));\r\n    });\r\n    items.forEach((item, index) => {\r\n      const stack = coverage.slice(index + 1).reduce((sum, value) => sum + value, 0);\r\n      item.style.setProperty(STACK_PROPERTY, stack.toFixed(3));\r\n    });\r\n  };\r\n\r\n  const scheduleUpdate = () => {\r\n    if (!frameId) frameId = requestAnimationFrame(update);\r\n  };\r\n\r\n  const syncTracking = () => {\r\n    const shouldTrack = isListVisible && stackMedia.matches;\r\n    if (shouldTrack === isTracking) return;\r\n    isTracking = shouldTrack;\r\n    if (shouldTrack) {\r\n      $(window).on(SCROLL_EVENTS, scheduleUpdate);\r\n      update();\r\n    } else {\r\n      $(window).off(SCROLL_EVENTS);\r\n      if (!stackMedia.matches) items.forEach((item) => item.style.removeProperty(STACK_PROPERTY));\r\n    }\r\n  };\r\n\r\n  stackMedia.addEventListener('change', syncTracking);\r\n  new IntersectionObserver((entries) => {\r\n    isListVisible = entries[0].isIntersecting;\r\n    syncTracking();\r\n  }).observe($list[0]);\r\n};\r\n","import $ from 'jquery';\r\n\r\nconst EXPANDED_ATTRIBUTE = 'aria-expanded';\r\nconst CONTROLS_ATTRIBUTE = 'aria-controls';\r\n\r\n// Same behaviour as the FAQ on inner pages: one answer open at a time, a second click closes it\r\nexport const initFaq = (toggleSelector) => {\r\n  const $toggles = $(toggleSelector);\r\n  const answerOf = ($toggle) => $(`#${$toggle.attr(CONTROLS_ATTRIBUTE)}`);\r\n  const isOpen = ($toggle) => $toggle.attr(EXPANDED_ATTRIBUTE) === 'true';\r\n\r\n  $toggles.on('click', function () {\r\n    const $current = $(this);\r\n    const wasOpen = isOpen($current);\r\n\r\n    $toggles.each((_, toggle) => {\r\n      const $toggle = $(toggle);\r\n      if (!isOpen($toggle)) return;\r\n      $toggle.attr(EXPANDED_ATTRIBUTE, 'false');\r\n      answerOf($toggle).stop().slideUp();\r\n    });\r\n\r\n    if (!wasOpen) {\r\n      $current.attr(EXPANDED_ATTRIBUTE, 'true');\r\n      answerOf($current).stop().slideDown();\r\n    }\r\n  });\r\n};\r\n","import $ from 'jquery';\r\n\r\nconst SPEED_PX_PER_SECOND = 40;\r\nconst MAX_FRAME_MS = 64;\r\nconst POINTER_MOUSE = 'mouse';\r\n// A press longer than this is a hold, not a tap\r\nconst TAP_MAX_MS = 400;\r\nconst REDUCE_MOTION = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n\r\n// Endless right-to-left strip: the track holds the logo list twice and wraps after one copy.\r\n// With reduced motion it stays still and logos.styl lays the list out in rows.\r\nexport const initLogoMarquee = (marqueeSelector, trackSelector) => {\r\n  const $marquee = $(marqueeSelector);\r\n  const track = $marquee.find(trackSelector)[0];\r\n  if (!track || REDUCE_MOTION) return;\r\n\r\n  let offset = 0;\r\n  let lastTime = 0;\r\n  let frameId = 0;\r\n  // Mouse hover, a finger held on the strip, a tap toggle\r\n  let isHovered = false;\r\n  let isHeld = false;\r\n  let isTapPaused = false;\r\n  let isVisible = false;\r\n  let copyWidth = track.scrollWidth / 2;\r\n\r\n  const tick = (now) => {\r\n    const elapsedMs = Math.min(MAX_FRAME_MS, now - lastTime);\r\n    lastTime = now;\r\n    offset -= (SPEED_PX_PER_SECOND * elapsedMs) / 1000;\r\n    if (copyWidth && -offset >= copyWidth) offset += copyWidth;\r\n    track.style.transform = `translateX(${offset}px)`;\r\n    frameId = requestAnimationFrame(tick);\r\n  };\r\n\r\n  const syncPlayback = () => {\r\n    const shouldRun = isVisible && !isHovered && !isHeld && !isTapPaused && !document.hidden;\r\n    if (shouldRun && !frameId) {\r\n      lastTime = performance.now();\r\n      frameId = requestAnimationFrame(tick);\r\n    } else if (!shouldRun && frameId) {\r\n      cancelAnimationFrame(frameId);\r\n      frameId = 0;\r\n    }\r\n  };\r\n\r\n  // Hover pause is for mouse only: touch has no leave event to resume the strip\r\n  const setHovered = (hovered) => (event) => {\r\n    if (event.originalEvent.pointerType !== POINTER_MOUSE) return;\r\n    isHovered = hovered;\r\n    syncPlayback();\r\n  };\r\n  $marquee.on('pointerenter', setHovered(true));\r\n  $marquee.on('pointerleave', setHovered(false));\r\n\r\n  // Touch: the strip stands while a finger is on it; a short tap stops it until the next tap.\r\n  // A vertical swipe ends in pointercancel, so scrolling the page does not stop it.\r\n  // The pointer type comes from pointerdown because older Safari leaves it out of click.\r\n  let lastPointerType = POINTER_MOUSE;\r\n  let pressStart = 0;\r\n  const release = () => {\r\n    isHeld = false;\r\n    syncPlayback();\r\n  };\r\n  $marquee.on('pointerdown', (event) => {\r\n    lastPointerType = event.originalEvent.pointerType;\r\n    if (lastPointerType === POINTER_MOUSE) return;\r\n    pressStart = performance.now();\r\n    isHeld = true;\r\n    syncPlayback();\r\n  });\r\n  $marquee.on('pointerup pointercancel', release);\r\n  $marquee.on('click', () => {\r\n    if (lastPointerType === POINTER_MOUSE || performance.now() - pressStart > TAP_MAX_MS) return;\r\n    isTapPaused = !isTapPaused;\r\n    syncPlayback();\r\n  });\r\n  // No \"save image\" menu on a long press over a logo\r\n  $marquee.on('contextmenu', (event) => {\r\n    if (lastPointerType !== POINTER_MOUSE) event.preventDefault();\r\n  });\r\n  $(document).on('visibilitychange', syncPlayback);\r\n  new ResizeObserver(() => { copyWidth = track.scrollWidth / 2; }).observe(track);\r\n  new IntersectionObserver((entries) => {\r\n    isVisible = entries[0].isIntersecting;\r\n    syncPlayback();\r\n  }).observe($marquee[0]);\r\n};\r\n","import $ from 'jquery';\r\n\r\nconst ITEM_CLASS = 'home-reveal-item';\r\nconst SHOWN_CLASS = 'is-revealed';\r\nconst MAX_DELAY_MS = 540;\r\nconst REDUCE_MOTION = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n\r\n// Fade-up on scroll, three kinds of groups:\r\n// children: a heading row, its children appear one after another;\r\n// self: the block appears as a whole; stagger: cards appear one after another with a longer offset.\r\nconst prepare = ($items, baseMs, stepMs, distancePx) => {\r\n  $items.each((index, item) => {\r\n    $(item)\r\n      .addClass(ITEM_CLASS)\r\n      .css({\r\n        '--reveal-delay': `${baseMs + Math.min(index * stepMs, MAX_DELAY_MS)}ms`,\r\n        '--reveal-distance': `${distancePx}px`,\r\n      });\r\n  });\r\n};\r\n\r\nexport const initReveal = ({ childrenSelector, selfSelector, staggerSelector }) => {\r\n  if (REDUCE_MOTION || !('IntersectionObserver' in window)) return;\r\n\r\n  const groups = [];\r\n  const addGroups = (selector, getItems, baseMs, stepMs, distancePx) => {\r\n    $(selector).each((_, host) => {\r\n      const $items = getItems($(host));\r\n      prepare($items, baseMs, stepMs, distancePx);\r\n      groups.push({ host, $items });\r\n    });\r\n  };\r\n  addGroups(childrenSelector, ($host) => $host.children(), 0, 120, 24);\r\n  addGroups(selfSelector, ($host) => $host, 0, 0, 36);\r\n  addGroups(staggerSelector, ($host) => $host.children(), 120, 90, 40);\r\n\r\n  // Document order, so a jump past several groups (anchor link, restored scroll) shows them all\r\n  groups.sort((first, second) => (first.host.compareDocumentPosition(second.host) & Node.DOCUMENT_POSITION_FOLLOWING ? -1 : 1));\r\n\r\n  const observer = new IntersectionObserver((entries) => {\r\n    entries.forEach((entry) => {\r\n      const passed = entry.boundingClientRect.bottom < 0;\r\n      if (!entry.isIntersecting && !passed) return;\r\n      const lastIndex = groups.findIndex((group) => group.host === entry.target);\r\n      groups.slice(0, lastIndex + 1).forEach((group) => {\r\n        if (group.shown) return;\r\n        group.shown = true;\r\n        group.$items.addClass(SHOWN_CLASS);\r\n        observer.unobserve(group.host);\r\n      });\r\n    });\r\n  }, { threshold: 0.15, rootMargin: '0px 0px -6% 0px' });\r\n\r\n  groups.forEach((group) => observer.observe(group.host));\r\n};\r\n","// Hero background effects: <fx-particles-gl> draws the Flyaps mark from WebGL particles,\r\n// <fx-mesh> drifts blurred colour blobs. Both react to the pointer over the hero.\r\nconst ZONE_SELECTOR = '.home-hero';\r\nconst HEAD_SELECTOR = '.home-hero__head';\r\nconst TEXT_SELECTOR = '.home-hero__text';\r\nconst CLASS_CANVAS = 'home-hero__fx-canvas';\r\nconst CLASS_MESH_BLOB = 'home-hero__mesh-blob';\r\nconst CLASS_HERO_OFFSCREEN = 'is-offscreen';\r\n// Same breakpoint as less-tablet in variables.styl, where the hero switches to the mobile layout\r\nconst MOBILE_QUERY = '(max-width: 767px)';\r\n// Phones in landscape are wider than that but still get the lighter mark\r\nconst LITE_QUERY = `${MOBILE_QUERY}, (hover: none) and (max-height: 500px)`;\r\n// Phones get a lighter mark: fewer particles, a shorter intro and no glow pass\r\nconst MOBILE_PARTICLE_SHARE = 0.12;\r\nconst MOBILE_INTRO_MS = 2500;\r\n// Only a mouse moves or scatters the particles: a finger on the hero is mostly the start of a scroll\r\nconst POINTER_MOUSE = 'mouse';\r\nconst MARK_PARTICLES = 46000;\r\nconst DUST_PARTICLES = 1600;\r\nconst MAX_PIXEL_RATIO = 1.5;\r\nconst INTRO_MS = 4500;\r\n// Keep animating this long after the last pointer move, leave or click, then idle\r\nconst ACTIVE_MS = 3000;\r\n// Min gap between the mark and the heading; the reference used 24px without a scrollbar\r\nconst HEAD_CLEARANCE = 8;\r\nconst POINTER_OFF = -9999;\r\nconst FLOATS_PER_PARTICLE = 6;\r\nconst TWO_PI = Math.PI * 2;\r\n\r\nconst MARK_PATHS = [\r\n  'M31.798 0.885185C30.3575 3.08397 29.06 5.3736 27.9138 7.73981C24.452 14.8686 22.5908 22.102 22.2683 28.5151L25.5677 35.4692L32.8419 0.394179L31.798 0.885185Z',\r\n  'M31.9261 4.81142L32.8425 0.393882L0.468712 15.6097L5.89309 16.7672C13.332 16.2627 22.8705 12.0259 31.9261 4.81107L31.9261 4.81142Z',\r\n  'M19.9081 16.7983C15.8496 13.5883 10.5352 12.6031 4.84162 13.5537L0.467828 15.6097L17.9113 19.3331L25.5678 35.4689L26.5499 30.7305C26.1547 24.9618 23.9666 20.0098 19.9081 16.7983V16.7983Z',\r\n];\r\nconst MARK_BOX = { x: 0.46, y: 0.39, width: 32.4, height: 35.1 };\r\nconst MARK_ASPECT = MARK_BOX.width / MARK_BOX.height;\r\nconst MARK_MIN_SIZE = 140;\r\nconst PARTICLE_FILL = 0;\r\nconst PARTICLE_RIM = 1;\r\nconst PARTICLE_BACK = 2;\r\nconst PARTICLE_DUST = 3;\r\nconst REDUCE_MOTION = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n\r\nconst clamp = (value, min = 0, max = 1) => Math.min(max, Math.max(min, value));\r\nconst easeInOutCubic = (progress) => (progress < 0.5 ? 4 * progress ** 3 : 1 - ((-2 * progress + 2) ** 3) / 2);\r\nconst easeOutCubic = (progress) => 1 - (1 - progress) ** 3;\r\n\r\n// Rasterises the mark once and returns normalised points of its body and its outline\r\nlet markPointsCache = null;\r\nconst getMarkPoints = () => {\r\n  if (markPointsCache) return markPointsCache;\r\n  const scale = 24;\r\n  const width = Math.ceil(MARK_BOX.width * scale) + 4;\r\n  const height = Math.ceil(MARK_BOX.height * scale) + 4;\r\n  const canvas = document.createElement('canvas');\r\n  canvas.width = width;\r\n  canvas.height = height;\r\n  const context = canvas.getContext('2d');\r\n  context.setTransform(scale, 0, 0, scale, -MARK_BOX.x * scale + 2, -MARK_BOX.y * scale + 2);\r\n  MARK_PATHS.forEach((path) => context.fill(new Path2D(path)));\r\n  const pixels = context.getImageData(0, 0, width, height).data;\r\n  const isInside = (column, row) => column >= 0 && row >= 0 && column < width && row < height\r\n    && pixels[(row * width + column) * 4 + 3] >= 128;\r\n  const fill = [];\r\n  const rim = [];\r\n  for (let row = 0; row < height; row++) {\r\n    for (let column = 0; column < width; column++) {\r\n      if (!isInside(column, row)) continue;\r\n      fill.push(column / width, row / height);\r\n      const onEdge = !isInside(column - 1, row) || !isInside(column + 1, row) || !isInside(column, row - 1) || !isInside(column, row + 1);\r\n      if (onEdge) rim.push(column / width, row / height);\r\n    }\r\n  }\r\n  markPointsCache = { fill, rim, width, height };\r\n  return markPointsCache;\r\n};\r\n\r\nconst createProgram = (gl, vertexSource, fragmentSource) => {\r\n  const compile = (type, source) => {\r\n    const shader = gl.createShader(type);\r\n    gl.shaderSource(shader, source);\r\n    gl.compileShader(shader);\r\n    return shader;\r\n  };\r\n  const program = gl.createProgram();\r\n  gl.attachShader(program, compile(gl.VERTEX_SHADER, vertexSource));\r\n  gl.attachShader(program, compile(gl.FRAGMENT_SHADER, fragmentSource));\r\n  gl.linkProgram(program);\r\n  const uniforms = {};\r\n  const uniformCount = gl.getProgramParameter(program, gl.ACTIVE_UNIFORMS);\r\n  for (let index = 0; index < uniformCount; index++) {\r\n    const { name } = gl.getActiveUniform(program, index);\r\n    uniforms[name] = gl.getUniformLocation(program, name);\r\n  }\r\n  return { program, uniforms };\r\n};\r\n\r\nconst PARTICLE_VERTEX_SHADER = `attribute vec2 aPos;attribute float aSize;attribute float aBri;attribute float aCol;attribute float aSpd;\r\nuniform vec2 uRes;uniform float uDpr;uniform float uHalo;varying float vBri;varying float vCol;varying float vSpd;varying vec2 vP;\r\nvoid main(){vec2 c=aPos/uRes*2.0-1.0;c.y=-c.y;gl_Position=vec4(c,0.0,1.0);float s=aSize;float b=aBri;\r\nif(uHalo>0.5){float k=smoothstep(2.0,9.0,aSpd);s=aSize*(3.0+aSpd*0.3)*k;b=0.07*k;}\r\ngl_PointSize=s*uDpr;vBri=b;vCol=aCol;vSpd=aSpd;vP=aPos;}`;\r\nconst PARTICLE_FRAGMENT_SHADER = `precision highp float;varying float vBri;varying float vCol;varying float vSpd;varying vec2 vP;uniform float uHalo;uniform float uTime;\r\nvec3 iri(float x){x=fract(x);vec3 a=vec3(0.17,0.75,0.80),b=vec3(0.55,0.96,1.0),c=vec3(0.36,0.40,0.90),d=vec3(0.30,0.55,0.98);\r\nreturn x<0.25?mix(a,b,x*4.0):x<0.5?mix(b,d,(x-0.25)*4.0):x<0.75?mix(d,c,(x-0.5)*4.0):mix(c,a,(x-0.75)*4.0);}\r\nvoid main(){float d=length(gl_PointCoord-0.5);float a=uHalo>0.5?exp(-d*d*16.0):smoothstep(0.5,0.12,d);if(a<0.01||vBri<0.005)discard;\r\nvec3 c1=vec3(0.30,0.77,0.81),c2=vec3(0.06,0.55,0.70),c3=vec3(0.36,0.40,0.86);\r\nvec3 c=vCol<0.5?mix(c1,c2,vCol*2.0):mix(c2,c3,(vCol-0.5)*2.0);\r\nfloat k=smoothstep(0.4,3.5,vSpd);c=mix(c,iri(vCol*1.3+(vP.x+vP.y)*0.0015-uTime*0.35),k);c=mix(c,vec3(0.86,1.0,1.0),0.42*smoothstep(2.5,9.0,vSpd));\r\nfloat al=a*min(vBri,0.95)*mix(1.0,0.62,k);gl_FragColor=vec4(c*al,al);}`;\r\nconst FADE_VERTEX_SHADER = 'attribute vec2 aP;void main(){gl_Position=vec4(aP,0.0,1.0);}';\r\nconst FADE_FRAGMENT_SHADER = 'precision mediump float;uniform float uFade;void main(){gl_FragColor=vec4(0.0,0.0,0.0,uFade);}';\r\nconst PARTICLE_ATTRIBUTES = [\r\n  { name: 'aPos', size: 2, offset: 0 },\r\n  { name: 'aSize', size: 1, offset: 2 },\r\n  { name: 'aBri', size: 1, offset: 3 },\r\n  { name: 'aCol', size: 1, offset: 4 },\r\n  { name: 'aSpd', size: 1, offset: 5 },\r\n];\r\n\r\nclass FxParticlesGL extends HTMLElement {\r\n  connectedCallback() {\r\n    if (this.canvas) return;\r\n    const canvas = document.createElement('canvas');\r\n    canvas.className = CLASS_CANVAS;\r\n    this.appendChild(canvas);\r\n    this.canvas = canvas;\r\n    const gl = canvas.getContext('webgl', { alpha: true, premultipliedAlpha: true, antialias: false, preserveDrawingBuffer: true });\r\n    if (!gl) return;\r\n    this.gl = gl;\r\n    this.pointer = { x: POINTER_OFF, y: POINTER_OFF, isOver: false, normalX: 0, normalY: 0 };\r\n    this.smoothedPointer = { normalX: 0, normalY: 0 };\r\n    this.isVisible = true;\r\n    this.time = 0;\r\n    this.zone = this.closest(ZONE_SELECTOR) || this;\r\n\r\n    this.isLite = window.matchMedia(LITE_QUERY).matches;\r\n    this.lastPointerType = POINTER_MOUSE;\r\n\r\n    this.onPointerDown = (event) => {\r\n      this.lastPointerType = event.pointerType;\r\n    };\r\n    this.onPointerMove = (event) => {\r\n      if (event.pointerType !== POINTER_MOUSE) return;\r\n      const rect = canvas.getBoundingClientRect();\r\n      const scale = canvas.clientWidth / (rect.width || 1);\r\n      const { pointer } = this;\r\n      pointer.x = (event.clientX - rect.left) * scale;\r\n      pointer.y = (event.clientY - rect.top) * scale;\r\n      pointer.isOver = true;\r\n      pointer.normalX = clamp((pointer.x / this.width) * 2 - 1, -1.2, 1.2);\r\n      pointer.normalY = clamp((pointer.y / this.height) * 2 - 1, -1.2, 1.2);\r\n      this.keepActive();\r\n    };\r\n    this.onPointerLeave = (event) => {\r\n      if (event.pointerType !== POINTER_MOUSE) return;\r\n      Object.assign(this.pointer, { x: POINTER_OFF, y: POINTER_OFF, isOver: false, normalX: 0, normalY: 0 });\r\n      this.keepActive();\r\n    };\r\n    // Older Safari leaves the pointer type out of click, so it comes from pointerdown\r\n    this.onClick = () => {\r\n      if (this.lastPointerType !== POINTER_MOUSE) return;\r\n      this.assemble(false);\r\n      this.keepActive();\r\n    };\r\n    this.onVisibilityChange = () => this.loop();\r\n\r\n    this.activeUntil = performance.now() + (this.isLite ? MOBILE_INTRO_MS : INTRO_MS);\r\n    this.zone.addEventListener('pointerdown', this.onPointerDown);\r\n    this.zone.addEventListener('pointermove', this.onPointerMove);\r\n    this.zone.addEventListener('pointerleave', this.onPointerLeave);\r\n    this.zone.addEventListener('click', this.onClick);\r\n    this.resizeObserver = new ResizeObserver(() => this.resize());\r\n    this.resizeObserver.observe(this);\r\n    this.viewportObserver = new IntersectionObserver((entries) => {\r\n      this.isVisible = entries[0].isIntersecting;\r\n      this.loop();\r\n    });\r\n    this.viewportObserver.observe(this);\r\n    document.addEventListener('visibilitychange', this.onVisibilityChange);\r\n\r\n    this.init();\r\n    this.resize();\r\n    this.loop();\r\n    if (document.fonts) {\r\n      document.fonts.ready.then(() => {\r\n        if (!this.canvas) return;\r\n        this.isResizeForced = true;\r\n        this.resize();\r\n      });\r\n    }\r\n  }\r\n\r\n  disconnectedCallback() {\r\n    cancelAnimationFrame(this.frameId);\r\n    this.frameId = 0;\r\n    if (this.resizeObserver) this.resizeObserver.disconnect();\r\n    if (this.viewportObserver) this.viewportObserver.disconnect();\r\n    document.removeEventListener('visibilitychange', this.onVisibilityChange);\r\n    if (this.zone) {\r\n      this.zone.removeEventListener('pointerdown', this.onPointerDown);\r\n      this.zone.removeEventListener('pointermove', this.onPointerMove);\r\n      this.zone.removeEventListener('pointerleave', this.onPointerLeave);\r\n      this.zone.removeEventListener('click', this.onClick);\r\n    }\r\n    if (this.canvas) this.canvas.remove();\r\n    this.canvas = null;\r\n  }\r\n\r\n  init() {\r\n    const { gl } = this;\r\n    this.particleProgram = createProgram(gl, PARTICLE_VERTEX_SHADER, PARTICLE_FRAGMENT_SHADER);\r\n    this.fadeProgram = createProgram(gl, FADE_VERTEX_SHADER, FADE_FRAGMENT_SHADER);\r\n    this.fadePositionLocation = gl.getAttribLocation(this.fadeProgram.program, 'aP');\r\n    this.quadBuffer = gl.createBuffer();\r\n    gl.bindBuffer(gl.ARRAY_BUFFER, this.quadBuffer);\r\n    gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([-1, -1, 1, -1, -1, 1, 1, 1]), gl.STATIC_DRAW);\r\n\r\n    const { fill, rim, width: gridWidth, height: gridHeight } = getMarkPoints();\r\n    const share = this.isLite ? MOBILE_PARTICLE_SHARE : 1;\r\n    const markCount = Math.round(MARK_PARTICLES * share);\r\n    const dustCount = Math.round(DUST_PARTICLES * share);\r\n    const totalCount = markCount + dustCount;\r\n    this.markCount = markCount;\r\n    this.totalCount = totalCount;\r\n    const floats = () => new Float32Array(totalCount);\r\n    // Per particle: home point on the mark (x, y, z), kind, colour, phase, delay, then animation state\r\n    Object.assign(this, {\r\n      homeX: floats(), homeY: floats(), homeZ: floats(), kind: new Uint8Array(totalCount),\r\n      colour: floats(), phase: floats(), delay: floats(),\r\n      currentX: floats(), currentY: floats(), fromX: floats(), fromY: floats(), startX: floats(), startY: floats(),\r\n      offsetX: floats(), offsetY: floats(), velocityX: floats(), velocityY: floats(),\r\n      vertexData: new Float32Array(totalCount * FLOATS_PER_PARTICLE),\r\n    });\r\n\r\n    const fillPoints = fill.length / 2;\r\n    const rimPoints = rim.length / 2;\r\n    const depth = 0.13;\r\n    for (let index = 0; index < markCount; index++) {\r\n      const roll = Math.random();\r\n      let pointX;\r\n      let pointY;\r\n      let layer;\r\n      let kind;\r\n      if (roll < 0.72) {\r\n        const point = ((Math.random() * fillPoints) | 0) * 2;\r\n        pointX = fill[point] + Math.random() / gridWidth;\r\n        pointY = fill[point + 1] + Math.random() / gridHeight;\r\n        layer = roll < 0.58 ? 0 : 1;\r\n        kind = roll < 0.58 ? PARTICLE_FILL : PARTICLE_BACK;\r\n      } else {\r\n        const point = ((Math.random() * rimPoints) | 0) * 2;\r\n        pointX = rim[point] + 0.5 / gridWidth;\r\n        pointY = rim[point + 1] + 0.5 / gridHeight;\r\n        layer = Math.random();\r\n        kind = PARTICLE_RIM;\r\n      }\r\n      this.homeX[index] = (pointX - 0.5) * MARK_ASPECT;\r\n      this.homeY[index] = pointY - 0.5;\r\n      this.homeZ[index] = (layer - 0.5) * depth;\r\n      this.kind[index] = kind;\r\n      this.colour[index] = clamp(pointX * 0.72 + pointY * 0.28);\r\n      this.phase[index] = Math.random() * TWO_PI;\r\n      this.delay[index] = Math.random() * 0.3 + (1 - pointX) * 0.22 + pointY * 0.12;\r\n    }\r\n    for (let index = markCount; index < totalCount; index++) {\r\n      this.kind[index] = PARTICLE_DUST;\r\n      this.homeX[index] = Math.random();\r\n      this.homeY[index] = Math.random();\r\n      this.homeZ[index] = Math.random();\r\n      this.colour[index] = Math.random();\r\n      this.phase[index] = Math.random() * TWO_PI;\r\n    }\r\n\r\n    this.particleBuffer = gl.createBuffer();\r\n    gl.bindBuffer(gl.ARRAY_BUFFER, this.particleBuffer);\r\n    gl.bufferData(gl.ARRAY_BUFFER, this.vertexData.byteLength, gl.DYNAMIC_DRAW);\r\n    this.attributeLocations = PARTICLE_ATTRIBUTES.map(({ name }) => gl.getAttribLocation(this.particleProgram.program, name));\r\n    this.lastPointerX = null;\r\n    this.isStarted = false;\r\n  }\r\n\r\n  // Places the mark next to the hero copy; on mobile it sits centred above the heading\r\n  resize() {\r\n    if (!this.gl) return;\r\n    const pixelRatio = Math.min(MAX_PIXEL_RATIO, window.devicePixelRatio || 1);\r\n    const width = this.clientWidth || 800;\r\n    const height = this.clientHeight || 600;\r\n    if (width === this.width && height === this.height && !this.isResizeForced) return;\r\n    this.isResizeForced = false;\r\n    this.pixelRatio = pixelRatio;\r\n    this.width = width;\r\n    this.height = height;\r\n    this.canvas.width = Math.round(width * pixelRatio);\r\n    this.canvas.height = Math.round(height * pixelRatio);\r\n\r\n    let size = height * 0.6;\r\n    let centerX = width * 0.72;\r\n    let centerY = height * 0.54;\r\n    const ownRect = this.getBoundingClientRect();\r\n    const scale = width / (ownRect.width || width);\r\n    const head = this.zone.querySelector(HEAD_SELECTOR);\r\n    if (window.matchMedia(MOBILE_QUERY).matches) {\r\n      size = Math.min(MARK_MIN_SIZE, height * 0.2);\r\n      centerX = width / 2;\r\n      if (head) centerY = Math.max(size / 2 + 70, (64 + (head.getBoundingClientRect().top - ownRect.top) * scale) / 2);\r\n    } else {\r\n      const text = this.zone.querySelector(TEXT_SELECTOR);\r\n      if (text) {\r\n        const textRight = (text.getBoundingClientRect().right - ownRect.left) * scale;\r\n        const freeWidth = width - textRight - 56;\r\n        if (freeWidth / MARK_ASPECT >= height * 0.4) {\r\n          size = Math.min(size, freeWidth / MARK_ASPECT);\r\n          centerX = Math.max(centerX, textRight + 32 + (size * MARK_ASPECT) / 2);\r\n          centerX = Math.min(centerX, width - (size * MARK_ASPECT) / 2 - 24);\r\n        } else {\r\n          // Tablets: the mark shrinks into the space right of the copy and stays inside the hero\r\n          size = Math.max(MARK_MIN_SIZE, Math.min(size, height * 0.5, freeWidth / MARK_ASPECT));\r\n          centerX = Math.min(textRight + 32 + (size * MARK_ASPECT) / 2, width - (size * MARK_ASPECT) / 2 - 24);\r\n        }\r\n      }\r\n      if (head) {\r\n        const headRect = head.getBoundingClientRect();\r\n        const headRight = (headRect.right - ownRect.left) * scale;\r\n        const headBottom = (headRect.bottom - ownRect.top) * scale;\r\n        if (centerX - (size * MARK_ASPECT) / 2 < headRight + HEAD_CLEARANCE) {\r\n          centerY = Math.max(centerY, headBottom + 24 + size / 2);\r\n          if (centerY + size / 2 > height - 12) {\r\n            size = Math.max(height * 0.3, height - 12 - headBottom - 24);\r\n            centerY = headBottom + 24 + size / 2;\r\n          }\r\n        }\r\n      }\r\n    }\r\n    this.size = size;\r\n    this.centerX = centerX;\r\n    this.centerY = centerY;\r\n    this.gl.viewport(0, 0, this.canvas.width, this.canvas.height);\r\n    if (!this.isStarted) {\r\n      this.isStarted = true;\r\n      this.assemble(true);\r\n    }\r\n    // Resizing the canvas clears it, so draw again even when the loop is idle\r\n    this.loop();\r\n  }\r\n\r\n  keepActive() {\r\n    this.activeUntil = Math.max(this.activeUntil, performance.now() + ACTIVE_MS);\r\n    this.loop();\r\n  }\r\n\r\n  // Idles once the intro has settled and the pointer is gone\r\n  loop() {\r\n    if (this.frameId || !this.canvas || !this.gl || !this.isVisible || document.hidden) return;\r\n    const tick = (now) => {\r\n      this.frameId = 0;\r\n      if (!this.canvas || !this.isVisible || document.hidden) return;\r\n      const elapsedSeconds = Math.min(0.05, (now - this.lastFrameAt) / 1000);\r\n      this.lastFrameAt = now;\r\n      this.smoothedPointer.normalX += (this.pointer.normalX - this.smoothedPointer.normalX) * 0.05;\r\n      this.smoothedPointer.normalY += (this.pointer.normalY - this.smoothedPointer.normalY) * 0.05;\r\n      this.frame(elapsedSeconds, now);\r\n      if (now < this.activeUntil) this.frameId = requestAnimationFrame(tick);\r\n    };\r\n    this.lastFrameAt = performance.now();\r\n    this.frameId = requestAnimationFrame(tick);\r\n  }\r\n\r\n  randomCloudPoint() {\r\n    const angle = Math.random() * TWO_PI;\r\n    const radius = (0.25 + Math.random() * 0.9) * Math.max(this.width, this.height) * 0.55;\r\n    return [this.centerX + Math.cos(angle) * radius, this.centerY + Math.sin(angle) * radius * 0.75];\r\n  }\r\n\r\n  // Sends particles to a random cloud and back onto the mark; a click scatters them from where they are\r\n  assemble(fromCloud) {\r\n    this.assembledAt = performance.now();\r\n    this.scatterSeconds = fromCloud ? 0 : 0.45;\r\n    if (REDUCE_MOTION) this.assembledAt -= 10000;\r\n    for (let index = 0; index < this.markCount; index++) {\r\n      const [cloudX, cloudY] = this.randomCloudPoint();\r\n      if (fromCloud) {\r\n        this.fromX[index] = this.startX[index] = this.currentX[index] = cloudX;\r\n        this.fromY[index] = this.startY[index] = this.currentY[index] = cloudY;\r\n      } else {\r\n        this.fromX[index] = this.currentX[index];\r\n        this.fromY[index] = this.currentY[index];\r\n        this.startX[index] = cloudX;\r\n        this.startY[index] = cloudY;\r\n      }\r\n    }\r\n  }\r\n\r\n  frame(elapsedSeconds, now) {\r\n    const { gl, pointer, size, width, height } = this;\r\n    this.time += elapsedSeconds;\r\n    const { time } = this;\r\n    const yaw = -0.42 + this.smoothedPointer.normalX * 0.32 + Math.sin(time * 0.25) * 0.05;\r\n    const pitch = -0.3 + this.smoothedPointer.normalY * 0.2 + Math.cos(time * 0.21) * 0.03;\r\n    const cosYaw = Math.cos(yaw);\r\n    const sinYaw = Math.sin(yaw);\r\n    const cosPitch = Math.cos(pitch);\r\n    const sinPitch = Math.sin(pitch);\r\n    const age = (now - this.assembledAt) / 1000;\r\n    const scatterSeconds = this.scatterSeconds;\r\n    const gatherSeconds = 1.15;\r\n\r\n    if (this.lastPointerX === null || !pointer.isOver) {\r\n      this.lastPointerX = pointer.x;\r\n      this.lastPointerY = pointer.y;\r\n    }\r\n    let moveX = pointer.isOver ? pointer.x - this.lastPointerX : 0;\r\n    let moveY = pointer.isOver ? pointer.y - this.lastPointerY : 0;\r\n    this.lastPointerX = pointer.x;\r\n    this.lastPointerY = pointer.y;\r\n    const moveLength = Math.hypot(moveX, moveY);\r\n    if (moveLength > 50) {\r\n      moveX *= 50 / moveLength;\r\n      moveY *= 50 / moveLength;\r\n    }\r\n    const moveSpeed = Math.min(50, moveLength);\r\n    const pushRadius = size * 0.2;\r\n    const pushRadiusSquared = pushRadius * pushRadius;\r\n    const isPushing = pointer.isOver && !REDUCE_MOTION;\r\n    const vertices = this.vertexData;\r\n\r\n    for (let index = 0; index < this.markCount; index++) {\r\n      const homeX = this.homeX[index];\r\n      const homeY = this.homeY[index];\r\n      const homeZ = this.homeZ[index];\r\n      const rotatedX = homeX * cosYaw - homeZ * sinYaw;\r\n      const yawZ = homeX * sinYaw + homeZ * cosYaw;\r\n      const rotatedY = homeY * cosPitch - yawZ * sinPitch;\r\n      const rotatedZ = homeY * sinPitch + yawZ * cosPitch;\r\n      const perspective = 1 / (1 + rotatedZ * 0.45);\r\n      const phase = this.phase[index];\r\n      const targetX = this.centerX + rotatedX * size * perspective + Math.sin(time * 0.8 + phase) * 0.5;\r\n      const targetY = this.centerY + rotatedY * size * perspective + Math.cos(time * 0.7 + phase) * 0.5;\r\n\r\n      let baseX;\r\n      let baseY;\r\n      if (age < scatterSeconds) {\r\n        const progress = easeOutCubic(age / scatterSeconds);\r\n        baseX = this.fromX[index] + (this.startX[index] - this.fromX[index]) * progress;\r\n        baseY = this.fromY[index] + (this.startY[index] - this.fromY[index]) * progress;\r\n      } else {\r\n        const progress = easeInOutCubic(clamp((age - scatterSeconds - this.delay[index]) / gatherSeconds));\r\n        baseX = this.startX[index] + (targetX - this.startX[index]) * progress;\r\n        baseY = this.startY[index] + (targetY - this.startY[index]) * progress;\r\n      }\r\n\r\n      let velocityX = this.velocityX[index];\r\n      let velocityY = this.velocityY[index];\r\n      let offsetX = this.offsetX[index];\r\n      let offsetY = this.offsetY[index];\r\n      if (isPushing) {\r\n        const deltaX = baseX + offsetX - pointer.x;\r\n        const deltaY = baseY + offsetY - pointer.y;\r\n        const distanceSquared = deltaX * deltaX + deltaY * deltaY;\r\n        if (distanceSquared < pushRadiusSquared && distanceSquared > 0.01) {\r\n          const distance = Math.sqrt(distanceSquared);\r\n          const falloff = 1 - distance / pushRadius;\r\n          const jitter = 0.5 + ((phase * 7.31) % 1);\r\n          const impulse = falloff * falloff * (0.25 + moveSpeed * 0.14) * jitter;\r\n          const swirl = falloff * moveSpeed * 0.03;\r\n          velocityX += (deltaX / distance) * impulse + moveX * falloff * 0.06 * jitter - (deltaY / distance) * swirl;\r\n          velocityY += (deltaY / distance) * impulse + moveY * falloff * 0.06 * jitter + (deltaX / distance) * swirl;\r\n        }\r\n      }\r\n      const speed = Math.abs(velocityX) + Math.abs(velocityY);\r\n      if (speed > 0.3) {\r\n        const flowAngle = Math.sin((baseX + offsetX) * 0.013 + time) * 2.5 + Math.cos((baseY + offsetY) * 0.011 - time * 0.8) * 2.5;\r\n        velocityX += Math.cos(flowAngle) * speed * 0.05;\r\n        velocityY += Math.sin(flowAngle) * speed * 0.05;\r\n      }\r\n      velocityX *= 0.91;\r\n      velocityY *= 0.91;\r\n      offsetX = (offsetX + velocityX) * 0.955;\r\n      offsetY = (offsetY + velocityY) * 0.955;\r\n      this.velocityX[index] = velocityX;\r\n      this.velocityY[index] = velocityY;\r\n      this.offsetX[index] = offsetX;\r\n      this.offsetY[index] = offsetY;\r\n\r\n      const x = baseX + offsetX;\r\n      const y = baseY + offsetY;\r\n      this.currentX[index] = x;\r\n      this.currentY[index] = y;\r\n      const kind = this.kind[index];\r\n      const depthShade = clamp(1 - (rotatedZ + 0.1) * 2.2, 0.35, 1.15);\r\n      const baseBrightness = kind === PARTICLE_FILL ? 0.62 : kind === PARTICLE_RIM ? 0.5 : 0.26;\r\n      const baseSize = kind === PARTICLE_FILL ? 1.9 : kind === PARTICLE_RIM ? 1.6 : 1.4;\r\n      const glow = speed * 1.4;\r\n      const offset = index * FLOATS_PER_PARTICLE;\r\n      vertices[offset] = x;\r\n      vertices[offset + 1] = y;\r\n      vertices[offset + 2] = baseSize * perspective + Math.min(0.6, glow * 0.06);\r\n      vertices[offset + 3] = baseBrightness * depthShade + Math.min(0.35, glow * 0.05);\r\n      vertices[offset + 4] = this.colour[index];\r\n      vertices[offset + 5] = glow;\r\n    }\r\n\r\n    for (let index = this.markCount; index < this.totalCount; index++) {\r\n      const layer = this.homeZ[index];\r\n      const offset = index * FLOATS_PER_PARTICLE;\r\n      vertices[offset] = (((this.homeX[index] * width - this.smoothedPointer.normalX * 18 * layer) % width) + width) % width;\r\n      vertices[offset + 1] = (((this.homeY[index] * height - this.smoothedPointer.normalY * 12 * layer + time * 3 * layer) % height) + height) % height;\r\n      vertices[offset + 2] = 1 + layer * 1.3;\r\n      vertices[offset + 3] = (0.12 + 0.18 * layer) * (0.6 + 0.4 * Math.sin(time * (0.6 + layer) + this.phase[index]));\r\n      vertices[offset + 4] = this.colour[index];\r\n      vertices[offset + 5] = 0;\r\n    }\r\n\r\n    // Fade the previous frame instead of clearing it: that leaves the motion trails\r\n    gl.enable(gl.BLEND);\r\n    gl.useProgram(this.fadeProgram.program);\r\n    gl.bindBuffer(gl.ARRAY_BUFFER, this.quadBuffer);\r\n    gl.enableVertexAttribArray(this.fadePositionLocation);\r\n    gl.vertexAttribPointer(this.fadePositionLocation, 2, gl.FLOAT, false, 0, 0);\r\n    gl.blendFunc(gl.ZERO, gl.ONE_MINUS_SRC_ALPHA);\r\n    gl.uniform1f(this.fadeProgram.uniforms.uFade, REDUCE_MOTION ? 1 : 0.62);\r\n    gl.drawArrays(gl.TRIANGLE_STRIP, 0, 4);\r\n    gl.disableVertexAttribArray(this.fadePositionLocation);\r\n\r\n    const { uniforms } = this.particleProgram;\r\n    gl.useProgram(this.particleProgram.program);\r\n    gl.bindBuffer(gl.ARRAY_BUFFER, this.particleBuffer);\r\n    gl.bufferSubData(gl.ARRAY_BUFFER, 0, vertices);\r\n    const stride = FLOATS_PER_PARTICLE * Float32Array.BYTES_PER_ELEMENT;\r\n    PARTICLE_ATTRIBUTES.forEach(({ size: attributeSize, offset }, attributeIndex) => {\r\n      const location = this.attributeLocations[attributeIndex];\r\n      gl.enableVertexAttribArray(location);\r\n      gl.vertexAttribPointer(location, attributeSize, gl.FLOAT, false, stride, offset * Float32Array.BYTES_PER_ELEMENT);\r\n    });\r\n    gl.uniform2f(uniforms.uRes, width, height);\r\n    gl.uniform1f(uniforms.uDpr, this.pixelRatio);\r\n    if (uniforms.uTime) gl.uniform1f(uniforms.uTime, time);\r\n    gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);\r\n    gl.uniform1f(uniforms.uHalo, 0);\r\n    gl.drawArrays(gl.POINTS, 0, this.totalCount);\r\n    // Glow around fast particles, skipped on phones\r\n    if (this.isLite) return;\r\n    gl.blendFunc(gl.ONE, gl.ONE);\r\n    gl.uniform1f(uniforms.uHalo, 1);\r\n    gl.drawArrays(gl.POINTS, 0, this.markCount);\r\n  }\r\n}\r\n\r\n// Blobs are styled in hero.styl; here they only drift, faster while the pointer is over the hero\r\nconst MESH_BLOBS = [\r\n  { shift: [-18, 12], seconds: 24 },\r\n  { shift: [18, -12], seconds: 29 },\r\n  { shift: [-18, 12], seconds: 21 },\r\n  { shift: [18, -12], seconds: 33 },\r\n];\r\nconst MESH_RATE_HOVER = 4;\r\nconst MESH_RATE_EASING = 0.04;\r\nconst MESH_RATE_PRECISION = 0.01;\r\n\r\nclass FxMesh extends HTMLElement {\r\n  connectedCallback() {\r\n    if (this.animations) return;\r\n    this.animations = MESH_BLOBS.map(({ shift: [shiftX, shiftY], seconds }) => {\r\n      const blob = document.createElement('div');\r\n      blob.className = CLASS_MESH_BLOB;\r\n      this.appendChild(blob);\r\n      if (REDUCE_MOTION) return null;\r\n      return blob.animate([\r\n        { transform: 'translate(0,0) scale(1)' },\r\n        { transform: `translate(${shiftX}%, ${shiftY}%) scale(1.15)` },\r\n        { transform: `translate(${-shiftX * 0.55}%, ${-shiftY * 1.33}%) scale(.9)` },\r\n        { transform: 'translate(0,0) scale(1)' },\r\n      ], { duration: seconds * 1000, iterations: Infinity, easing: 'ease-in-out' });\r\n    }).filter(Boolean);\r\n    this.rate = 1;\r\n    this.targetRate = 1;\r\n    this.zone = this.closest(ZONE_SELECTOR) || this.parentElement;\r\n    this.onPointerEnter = () => this.setRate(MESH_RATE_HOVER);\r\n    this.onPointerLeave = () => this.setRate(1);\r\n    this.zone.addEventListener('pointerenter', this.onPointerEnter);\r\n    this.zone.addEventListener('pointerleave', this.onPointerLeave);\r\n    // The blobs and the title gradient stand still while the hero is scrolled away\r\n    this.viewportObserver = new IntersectionObserver((entries) => {\r\n      const isVisible = entries[0].isIntersecting;\r\n      this.zone.classList.toggle(CLASS_HERO_OFFSCREEN, !isVisible);\r\n      this.animations.forEach((animation) => (isVisible ? animation.play() : animation.pause()));\r\n    });\r\n    this.viewportObserver.observe(this.zone);\r\n  }\r\n\r\n  setRate(targetRate) {\r\n    this.targetRate = targetRate;\r\n    if (this.frameId || !this.animations.length) return;\r\n    const tick = () => {\r\n      this.rate += (this.targetRate - this.rate) * MESH_RATE_EASING;\r\n      if (Math.abs(this.targetRate - this.rate) < MESH_RATE_PRECISION) this.rate = this.targetRate;\r\n      this.animations.forEach((animation) => { animation.playbackRate = this.rate; });\r\n      this.frameId = this.rate === this.targetRate ? 0 : requestAnimationFrame(tick);\r\n    };\r\n    this.frameId = requestAnimationFrame(tick);\r\n  }\r\n\r\n  disconnectedCallback() {\r\n    cancelAnimationFrame(this.frameId);\r\n    this.frameId = 0;\r\n    if (this.viewportObserver) this.viewportObserver.disconnect();\r\n    if (this.animations) this.animations.forEach((animation) => animation.cancel());\r\n    this.animations = null;\r\n    this.replaceChildren();\r\n    if (this.zone) {\r\n      this.zone.removeEventListener('pointerenter', this.onPointerEnter);\r\n      this.zone.removeEventListener('pointerleave', this.onPointerLeave);\r\n    }\r\n  }\r\n}\r\n\r\nexport const initHeroFx = () => {\r\n  if (!customElements.get('fx-mesh')) customElements.define('fx-mesh', FxMesh);\r\n  if (!customElements.get('fx-particles-gl')) customElements.define('fx-particles-gl', FxParticlesGL);\r\n};\r\n","import $ from 'jquery';\r\n\r\nconst TILT_DEGREES = 5;\r\nconst TILT_X_PROPERTY = '--tilt-x';\r\nconst TILT_Y_PROPERTY = '--tilt-y';\r\n\r\n// Tilts a card towards the pointer through --tilt-x / --tilt-y (used by services.styl and process.styl)\r\nexport const initCardTilt = (cardSelector) => {\r\n  if (!window.matchMedia('(hover: hover)').matches) return;\r\n\r\n  $(cardSelector)\r\n    .on('mousemove', function (event) {\r\n      const cardRect = this.getBoundingClientRect();\r\n      const pointerX = (event.clientX - cardRect.left) / cardRect.width;\r\n      const pointerY = (event.clientY - cardRect.top) / cardRect.height;\r\n      this.style.setProperty(TILT_X_PROPERTY, `${((0.5 - pointerY) * TILT_DEGREES).toFixed(2)}deg`);\r\n      this.style.setProperty(TILT_Y_PROPERTY, `${((pointerX - 0.5) * TILT_DEGREES).toFixed(2)}deg`);\r\n    })\r\n    .on('mouseleave', function () {\r\n      this.style.removeProperty(TILT_X_PROPERTY);\r\n      this.style.removeProperty(TILT_Y_PROPERTY);\r\n    });\r\n};\r\n","// A two-finger horizontal swipe on a touchpad moves one step per gesture\r\nconst WHEEL_THRESHOLD = 40;\r\n// Wheel events stop for this long between gestures when there is no inertia\r\nconst WHEEL_GESTURE_END_MS = 200;\r\n// No second step sooner than this, about the length of the slide transition\r\nconst WHEEL_LOCK_MS = 450;\r\n\r\n// Calls onSwipe(1) or onSwipe(-1) once per horizontal touchpad gesture over $element.\r\n// isEnabled lets a carousel skip layouts where the element scrolls natively.\r\n// After a swipe the touchpad keeps sending fading inertia events, often right into the next gesture,\r\n// so a new gesture is recognised by events getting stronger again, not only by a pause.\r\nexport const initWheelSwipe = ($element, onSwipe, isEnabled = () => true) => {\r\n  let distance = 0;\r\n  let lastStrength = 0;\r\n  let isGestureUsed = false;\r\n  let lockedUntil = 0;\r\n  let gestureTimer = 0;\r\n\r\n  $element.on('wheel', (event) => {\r\n    const { deltaX, deltaY } = event.originalEvent;\r\n    if (Math.abs(deltaX) <= Math.abs(deltaY) || !isEnabled()) return;\r\n    // The swipe stays in the carousel instead of the browser's back and forward\r\n    event.preventDefault();\r\n\r\n    const strength = Math.abs(deltaX);\r\n    const isNewPush = strength > lastStrength;\r\n    lastStrength = strength;\r\n    clearTimeout(gestureTimer);\r\n    gestureTimer = setTimeout(() => {\r\n      distance = 0;\r\n      lastStrength = 0;\r\n      isGestureUsed = false;\r\n    }, WHEEL_GESTURE_END_MS);\r\n\r\n    if (isGestureUsed) {\r\n      if (!isNewPush || performance.now() < lockedUntil) return;\r\n      isGestureUsed = false;\r\n      distance = 0;\r\n    }\r\n    distance += deltaX;\r\n    if (Math.abs(distance) < WHEEL_THRESHOLD) return;\r\n    isGestureUsed = true;\r\n    lockedUntil = performance.now() + WHEEL_LOCK_MS;\r\n    onSwipe(Math.sign(distance));\r\n  });\r\n};\r\n","import $ from 'jquery';\r\nimport { initWheelSwipe } from './wheel-swipe';\r\n\r\n// Same breakpoint as `less-tablet` in variables.styl\r\nconst MOBILE_MEDIA = '(max-width: 767px)';\r\n\r\nconst CLASS_ACTIVE = 'is-active';\r\nconst OFFSET_PROPERTY = '--process-offset';\r\nconst PROGRESS_PROPERTY = '--process-progress';\r\n// Card sizes are defined once in process.styl and read from these custom properties\r\nconst SIZE_PROPERTIES = {\r\n  cardWidth: '--process-card-width',\r\n  activeCardWidth: '--process-card-width-active',\r\n  gap: '--process-gap',\r\n};\r\nconst TRACK = '.home-process__track';\r\nconst CARD = '.home-process__card';\r\nconst CHIP_LINK = '.home-process__chip--link';\r\nconst PREV = '.home-process__nav--prev';\r\nconst NEXT = '.home-process__nav--next';\r\nconst STEP = '.home-process__step';\r\nconst PROGRESS = '.home-process__progress-fill';\r\nconst ANNOUNCE = '.home-process__announce';\r\n\r\nconst pad = (number) => String(number).padStart(2, '0');\r\n\r\n// Desktop: the active phase widens and the track slides it to the centre.\r\n// Mobile: cards scroll in a swipe row; the arrows scroll to a card and the scroll position picks the phase.\r\nexport const initProcess = (sectionSelector) => {\r\n  const $section = $(sectionSelector);\r\n  const $track = $section.find(TRACK);\r\n  const $cards = $track.find(CARD);\r\n  if (!$cards.length) return;\r\n\r\n  const $prev = $section.find(PREV);\r\n  const $next = $section.find(NEXT);\r\n  const $step = $section.find(STEP);\r\n  const $announce = $section.find(ANNOUNCE);\r\n  const progress = $section.find(PROGRESS)[0];\r\n  const track = $track[0];\r\n  const lastIndex = $cards.length - 1;\r\n  const mobileMedia = window.matchMedia(MOBILE_MEDIA);\r\n  let activeIndex = 0;\r\n  let scrollFrameId = 0;\r\n  let sizes = {};\r\n\r\n  const readSizes = () => {\r\n    const style = getComputedStyle($section[0]);\r\n    sizes = Object.fromEntries(Object.entries(SIZE_PROPERTIES)\r\n      .map(([name, property]) => [name, parseFloat(style.getPropertyValue(property))]));\r\n  };\r\n\r\n  // The track's left padding lines the first card up with the container; the CSS computes it\r\n  const centreOffset = () => {\r\n    const leftPadding = parseFloat(getComputedStyle(track).paddingLeft);\r\n    const activeCentre = leftPadding + activeIndex * (sizes.cardWidth + sizes.gap) + sizes.activeCardWidth / 2;\r\n    return Math.round(window.innerWidth / 2 - activeCentre);\r\n  };\r\n\r\n  const render = () => {\r\n    $cards.removeClass(CLASS_ACTIVE).eq(activeIndex).addClass(CLASS_ACTIVE);\r\n    $step.text(pad(activeIndex + 1));\r\n    $announce.text(`Phase ${activeIndex + 1} of ${$cards.length}`);\r\n    progress.style.setProperty(PROGRESS_PROPERTY, (activeIndex + 1) / $cards.length);\r\n    $prev.prop('disabled', activeIndex === 0);\r\n    $next.prop('disabled', activeIndex === lastIndex);\r\n    if (mobileMedia.matches) track.style.removeProperty(OFFSET_PROPERTY);\r\n    else track.style.setProperty(OFFSET_PROPERTY, `${centreOffset()}px`);\r\n  };\r\n\r\n  const scrollToCard = (index) => {\r\n    track.scrollTo({ left: $cards[index].offsetLeft - $cards[0].offsetLeft, behavior: 'smooth' });\r\n  };\r\n\r\n  const goTo = (index, { scroll = true } = {}) => {\r\n    activeIndex = Math.max(0, Math.min(lastIndex, index));\r\n    render();\r\n    if (scroll && mobileMedia.matches) scrollToCard(activeIndex);\r\n  };\r\n\r\n  $prev.on('click', () => goTo(activeIndex - 1));\r\n  $next.on('click', () => goTo(activeIndex + 1));\r\n\r\n  // On phones the track scrolls natively, the touchpad swipe is for the desktop slider.\r\n  // It listens on the section: the track itself slides away from under the pointer.\r\n  initWheelSwipe($section, (direction) => goTo(activeIndex + direction), () => !mobileMedia.matches);\r\n\r\n  $cards.on('click', function (event) {\r\n    if (mobileMedia.matches || $(event.target).closest(CHIP_LINK).length) return;\r\n    goTo($cards.index(this), { scroll: false });\r\n  });\r\n\r\n  $track.on('scroll', () => {\r\n    if (!mobileMedia.matches || scrollFrameId) return;\r\n    scrollFrameId = requestAnimationFrame(() => {\r\n      scrollFrameId = 0;\r\n      if ($cards.length < 2) return;\r\n      const step = $cards[1].offsetLeft - $cards[0].offsetLeft;\r\n      const index = Math.round(track.scrollLeft / step);\r\n      if (index !== activeIndex) goTo(index, { scroll: false });\r\n    });\r\n  });\r\n\r\n  $(window).on('resize', render);\r\n  readSizes();\r\n  render();\r\n};\r\n","import $ from 'jquery';\r\n\r\nconst CLASS_VISIBLE = 'is-visible';\r\nconst TRACK = '.home-rail__track';\r\nconst PREV = '.home-rail__arrow--prev';\r\nconst NEXT = '.home-rail__arrow--next';\r\n// Ignore sub-pixel leftovers at both ends of the scroll\r\nconst EDGE_PX = 4;\r\n\r\n// Card rails: an arrow shows while there is more to scroll that way, a click moves by one card\r\nexport const initRail = (railSelector) => {\r\n  $(railSelector).each((_, rail) => {\r\n    const $rail = $(rail);\r\n    const $prev = $rail.find(PREV);\r\n    const $next = $rail.find(NEXT);\r\n    const track = $rail.find(TRACK)[0];\r\n    if (!track || track.children.length < 2) return;\r\n\r\n    const updateArrows = () => {\r\n      const { scrollLeft, clientWidth, scrollWidth } = track;\r\n      const hasPrev = scrollLeft > EDGE_PX;\r\n      const hasNext = scrollLeft + clientWidth < scrollWidth - EDGE_PX;\r\n      // A hidden arrow is disabled so it drops out of the tab order\r\n      $prev.toggleClass(CLASS_VISIBLE, hasPrev).prop('disabled', !hasPrev);\r\n      $next.toggleClass(CLASS_VISIBLE, hasNext).prop('disabled', !hasNext);\r\n    };\r\n\r\n    const scrollByCard = (direction) => {\r\n      const step = track.children[1].offsetLeft - track.children[0].offsetLeft;\r\n      const index = Math.round(track.scrollLeft / step) + direction;\r\n      track.scrollTo({ left: Math.max(0, index * step), behavior: 'smooth' });\r\n    };\r\n\r\n    $prev.on('click', () => scrollByCard(-1));\r\n    $next.on('click', () => scrollByCard(1));\r\n    $(track).on('scroll', updateArrows);\r\n    $(window).on('resize', updateArrows);\r\n    updateArrows();\r\n  });\r\n};\r\n","import $ from 'jquery';\r\nimport { initWheelSwipe } from './wheel-swipe';\r\n\r\n// Same breakpoint as `less-tablet` in variables.styl\r\nconst MOBILE_MEDIA = '(max-width: 767px)';\r\nconst CLASS_ACTIVE = 'is-active';\r\nconst LINKS = '.home-reviews__clutch, .home-reviews__linkedin';\r\nconst pad = (number) => String(number).padStart(2, '0');\r\n\r\n// One review in focus, neighbours peek at the sides: arrows loop through the list,\r\n// a click on a dimmed neighbour brings it into focus. The slide offset is CSS (--reviews-index).\r\n// Phones: the cards scroll in a native swipe row, the arrows scroll to a card and the scroll position picks the review.\r\nexport const initReviews = (selector) => {\r\n  $(selector).each((_, section) => {\r\n    const $section = $(section);\r\n    const $track = $section.find('.home-reviews__track');\r\n    const $cards = $track.children('.home-reviews__card');\r\n    const $current = $section.find('.home-reviews__current');\r\n    const $bar = $section.find('.home-reviews__progress-bar');\r\n    const track = $track[0];\r\n    const total = $cards.length;\r\n    const mobileMedia = window.matchMedia(MOBILE_MEDIA);\r\n    let index = 0;\r\n    let scrollFrameId = 0;\r\n\r\n    if (!total) return;\r\n\r\n    const show = (nextIndex, { scroll = true } = {}) => {\r\n      index = (nextIndex + total) % total;\r\n      $track.css('--reviews-index', index);\r\n      $cards.each((cardIndex, card) => {\r\n        const isActive = cardIndex === index;\r\n        $(card)\r\n          .toggleClass(CLASS_ACTIVE, isActive)\r\n          .attr('aria-hidden', String(!isActive))\r\n          .find(LINKS)\r\n          .attr('tabindex', isActive ? null : '-1');\r\n      });\r\n      $current.text(pad(index + 1));\r\n      $bar.css('width', `${((index + 1) / total) * 100}%`);\r\n      if (scroll && mobileMedia.matches) {\r\n        track.scrollTo({ left: $cards[index].offsetLeft - $cards[0].offsetLeft, behavior: 'smooth' });\r\n      }\r\n    };\r\n\r\n    // On phones the row scrolls natively, the touchpad swipe is for the desktop slider\r\n    initWheelSwipe($section.find('.home-reviews__carousel'), (direction) => show(index + direction), () => !mobileMedia.matches);\r\n\r\n    $track.on('scroll', () => {\r\n      if (!mobileMedia.matches || scrollFrameId || total < 2) return;\r\n      scrollFrameId = requestAnimationFrame(() => {\r\n        scrollFrameId = 0;\r\n        const step = $cards[1].offsetLeft - $cards[0].offsetLeft;\r\n        // The last card cannot reach the snap point, the end of the row stands for it\r\n        const isAtEnd = track.scrollLeft >= track.scrollWidth - track.clientWidth - 2;\r\n        const scrolledIndex = isAtEnd ? total - 1 : Math.round(track.scrollLeft / step);\r\n        if (scrolledIndex !== index) show(scrolledIndex, { scroll: false });\r\n      });\r\n    });\r\n\r\n    $section.find('.home-reviews__total').text(pad(total));\r\n    $section.find('.home-reviews__nav--prev').on('click', () => show(index - 1));\r\n    $section.find('.home-reviews__nav--next').on('click', () => show(index + 1));\r\n    $cards.on('click', function () {\r\n      if (mobileMedia.matches) return;\r\n      const cardIndex = $cards.index(this);\r\n      if (cardIndex !== index) show(cardIndex);\r\n    });\r\n\r\n    show(0, { scroll: false });\r\n  });\r\n};\r\n","import $ from 'jquery';\r\nimport { initHeroFx } from './new-home/hero-fx';\r\nimport { initLogoMarquee } from './new-home/logo-marquee';\r\nimport { initReveal } from './new-home/reveal';\r\nimport { initCaseStack } from './new-home/case-stack';\r\nimport { initCardTilt } from './new-home/card-tilt';\r\nimport { initProcess } from './new-home/process';\r\nimport { initRail } from './new-home/rail';\r\nimport { initFaq } from './new-home/faq';\r\nimport { initReviews } from './new-home/reviews';\r\n\r\nconst CLASS_HEADER_DARK = 'dark';\r\n\r\n\r\n$(() => {\r\n    initHeroFx();\r\n    initLogoMarquee('.home-logos__marquee', '.home-logos__track');\r\n    initReveal({ childrenSelector: '.home-reveal', selfSelector: '.home-reveal-self', staggerSelector: '.home-reveal-stagger' });\r\n    initCaseStack('.home-cases__list', '.home-cases__item');\r\n    initCardTilt('.home-services__card, .home-process__card');\r\n    initProcess('.home-process');\r\n    initRail('.home-rail');\r\n    initFaq('.home-faq__toggle');\r\n    initReviews('.home-reviews');\r\n\r\n    const $window = $(window);\r\n    const $header = $('.header');\r\n    const headerHeight = $header.outerHeight();\r\n    const $mainBlock = $('.home-hero');\r\n    const $darkBlocks = $('.home-quote__card, .home-cta, .home-contact__card, .footer__main');\r\n\r\n    $header.addClass(CLASS_HEADER_DARK);\r\n\r\n    $window.on('scroll resize', function() {\r\n        const currentPosition = $(this).scrollTop();\r\n        const onMainBlock = currentPosition < $mainBlock.outerHeight();\r\n        const onDarkBlock = $darkBlocks.toArray().some((block) => {\r\n            const blockTop = $(block).offset().top - headerHeight;\r\n            return currentPosition >= blockTop && currentPosition <= blockTop + $(block).outerHeight();\r\n        });\r\n\r\n        $header.toggleClass(CLASS_HEADER_DARK, onMainBlock || onDarkBlock);\r\n    });\r\n});\r\n","import './stylus/new-home.styl'\r\nimport './js/new-home'\r\n"],"names":["$","STACK_MEDIA","STACK_TOP","STACK_STEP","STACK_PROPERTY","SCROLL_EVENTS","clampToUnit","value","Math","min","max","initCaseStack","listSelector","itemSelector","$list","items","find","get","length","stackMedia","window","matchMedia","frameId","isListVisible","isTracking","update","viewportHeight","innerHeight","coverage","map","item","index","stickTop","distance","getBoundingClientRect","top","forEach","stack","slice","reduce","sum","style","setProperty","toFixed","scheduleUpdate","requestAnimationFrame","syncTracking","shouldTrack","matches","on","off","removeProperty","addEventListener","IntersectionObserver","entries","isIntersecting","observe","EXPANDED_ATTRIBUTE","CONTROLS_ATTRIBUTE","initFaq","toggleSelector","$toggles","answerOf","$toggle","attr","isOpen","$current","wasOpen","each","_","toggle","stop","slideUp","slideDown","SPEED_PX_PER_SECOND","MAX_FRAME_MS","POINTER_MOUSE","TAP_MAX_MS","REDUCE_MOTION","initLogoMarquee","marqueeSelector","trackSelector","$marquee","track","offset","lastTime","isHovered","isHeld","isTapPaused","isVisible","copyWidth","scrollWidth","tick","now","elapsedMs","transform","syncPlayback","shouldRun","document","hidden","performance","cancelAnimationFrame","setHovered","hovered","event","originalEvent","pointerType","lastPointerType","pressStart","release","preventDefault","ResizeObserver","ITEM_CLASS","SHOWN_CLASS","MAX_DELAY_MS","prepare","$items","baseMs","stepMs","distancePx","addClass","css","initReveal","childrenSelector","selfSelector","staggerSelector","groups","addGroups","selector","getItems","host","push","$host","children","sort","first","second","compareDocumentPosition","Node","DOCUMENT_POSITION_FOLLOWING","observer","entry","passed","boundingClientRect","bottom","lastIndex","findIndex","group","target","shown","unobserve","threshold","rootMargin","ZONE_SELECTOR","HEAD_SELECTOR","TEXT_SELECTOR","CLASS_CANVAS","CLASS_MESH_BLOB","CLASS_HERO_OFFSCREEN","MOBILE_QUERY","LITE_QUERY","MOBILE_PARTICLE_SHARE","MOBILE_INTRO_MS","MARK_PARTICLES","DUST_PARTICLES","MAX_PIXEL_RATIO","INTRO_MS","ACTIVE_MS","HEAD_CLEARANCE","POINTER_OFF","FLOATS_PER_PARTICLE","TWO_PI","PI","MARK_PATHS","MARK_BOX","x","y","width","height","MARK_ASPECT","MARK_MIN_SIZE","PARTICLE_FILL","PARTICLE_RIM","PARTICLE_BACK","PARTICLE_DUST","clamp","easeInOutCubic","progress","easeOutCubic","markPointsCache","getMarkPoints","scale","ceil","canvas","createElement","context","getContext","setTransform","path","fill","Path2D","pixels","getImageData","data","isInside","column","row","rim","onEdge","createProgram","gl","vertexSource","fragmentSource","compile","type","source","shader","createShader","shaderSource","compileShader","program","attachShader","VERTEX_SHADER","FRAGMENT_SHADER","linkProgram","uniforms","uniformCount","getProgramParameter","ACTIVE_UNIFORMS","getActiveUniform","name","getUniformLocation","PARTICLE_VERTEX_SHADER","PARTICLE_FRAGMENT_SHADER","FADE_VERTEX_SHADER","FADE_FRAGMENT_SHADER","PARTICLE_ATTRIBUTES","size","FxParticlesGL","className","appendChild","alpha","premultipliedAlpha","antialias","preserveDrawingBuffer","pointer","isOver","normalX","normalY","smoothedPointer","time","zone","closest","isLite","onPointerDown","onPointerMove","rect","clientWidth","clientX","left","clientY","keepActive","onPointerLeave","Object","assign","onClick","assemble","onVisibilityChange","loop","activeUntil","resizeObserver","resize","viewportObserver","init","fonts","ready","then","isResizeForced","disconnect","removeEventListener","remove","particleProgram","fadeProgram","fadePositionLocation","getAttribLocation","quadBuffer","createBuffer","bindBuffer","ARRAY_BUFFER","bufferData","Float32Array","STATIC_DRAW","gridWidth","gridHeight","share","markCount","round","dustCount","totalCount","floats","homeX","homeY","homeZ","kind","Uint8Array","colour","phase","delay","currentX","currentY","fromX","fromY","startX","startY","offsetX","offsetY","velocityX","velocityY","vertexData","fillPoints","rimPoints","depth","roll","random","pointX","pointY","layer","point","particleBuffer","byteLength","DYNAMIC_DRAW","attributeLocations","lastPointerX","isStarted","pixelRatio","devicePixelRatio","clientHeight","centerX","centerY","ownRect","head","querySelector","text","textRight","right","freeWidth","headRect","headRight","headBottom","viewport","elapsedSeconds","lastFrameAt","frame","angle","radius","cos","sin","fromCloud","assembledAt","scatterSeconds","randomCloudPoint","cloudX","cloudY","yaw","pitch","cosYaw","sinYaw","cosPitch","sinPitch","age","gatherSeconds","lastPointerY","moveX","moveY","moveLength","hypot","moveSpeed","pushRadius","pushRadiusSquared","isPushing","vertices","rotatedX","yawZ","rotatedY","rotatedZ","perspective","targetX","targetY","baseX","baseY","deltaX","deltaY","distanceSquared","sqrt","falloff","jitter","impulse","swirl","speed","abs","flowAngle","depthShade","baseBrightness","baseSize","glow","enable","BLEND","useProgram","enableVertexAttribArray","vertexAttribPointer","FLOAT","blendFunc","ZERO","ONE_MINUS_SRC_ALPHA","uniform1f","uFade","drawArrays","TRIANGLE_STRIP","disableVertexAttribArray","bufferSubData","stride","BYTES_PER_ELEMENT","attributeIndex","attributeSize","location","uniform2f","uRes","uDpr","uTime","ONE","uHalo","POINTS","HTMLElement","MESH_BLOBS","shift","seconds","MESH_RATE_HOVER","MESH_RATE_EASING","MESH_RATE_PRECISION","FxMesh","animations","shiftX","shiftY","blob","animate","duration","iterations","Infinity","easing","filter","Boolean","rate","targetRate","parentElement","onPointerEnter","setRate","classList","animation","play","pause","playbackRate","cancel","replaceChildren","initHeroFx","customElements","define","TILT_DEGREES","TILT_X_PROPERTY","TILT_Y_PROPERTY","initCardTilt","cardSelector","cardRect","pointerX","pointerY","WHEEL_THRESHOLD","WHEEL_GESTURE_END_MS","WHEEL_LOCK_MS","initWheelSwipe","$element","onSwipe","isEnabled","lastStrength","isGestureUsed","lockedUntil","gestureTimer","strength","isNewPush","clearTimeout","setTimeout","sign","MOBILE_MEDIA","CLASS_ACTIVE","OFFSET_PROPERTY","PROGRESS_PROPERTY","SIZE_PROPERTIES","cardWidth","activeCardWidth","gap","TRACK","CARD","CHIP_LINK","PREV","NEXT","STEP","PROGRESS","ANNOUNCE","pad","number","String","padStart","initProcess","sectionSelector","$section","$track","$cards","$prev","$next","$step","$announce","mobileMedia","activeIndex","scrollFrameId","sizes","readSizes","getComputedStyle","fromEntries","property","parseFloat","getPropertyValue","centreOffset","leftPadding","paddingLeft","activeCentre","innerWidth","render","removeClass","eq","prop","scrollToCard","scrollTo","offsetLeft","behavior","goTo","scroll","direction","step","scrollLeft","CLASS_VISIBLE","EDGE_PX","initRail","railSelector","rail","$rail","updateArrows","hasPrev","hasNext","toggleClass","scrollByCard","LINKS","initReviews","section","$bar","total","show","nextIndex","cardIndex","card","isActive","isAtEnd","scrolledIndex","CLASS_HEADER_DARK","$window","$header","headerHeight","outerHeight","$mainBlock","$darkBlocks","currentPosition","scrollTop","onMainBlock","onDarkBlock","toArray","some","block","blockTop"],"sourceRoot":""}