mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2024-12-13 18:07:20 +01:00
1 line
1.3 MiB
1 line
1.3 MiB
{"version":3,"file":"pdf.mjs","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsBA,SAASA,aAATA,CAAuBC,CAAvB,EAA0B;EACxB,OAAOC,IAAA,CAAKC,KAAL,CAAWD,IAAA,CAAKE,GAAL,CAAS,CAAT,EAAYF,IAAA,CAAKG,GAAL,CAAS,CAAT,EAAYJ,CAAZ,CAAZ,IAA8B,GAAzC,EACJK,QADI,CACK,EADL,EAEJC,QAFI,CAEK,CAFL,EAEQ,GAFR,CAAP;AADwB;AAM1B,SAASC,aAATA,CAAuBC,CAAvB,EAA0B;EACxB,OAAOP,IAAA,CAAKE,GAAL,CAAS,CAAT,EAAYF,IAAA,CAAKG,GAAL,CAAS,GAAT,EAAc,MAAMI,CAApB,CAAZ,CAAP;AADwB;AAK1B,MAAMC,eAAN,CAAsB;EACpB,OAAOC,MAAPA,CAAc,CAACC,CAAD,EAAIC,CAAJ,EAAOC,CAAP,EAAUC,CAAV,CAAd,EAA4B;IAC1B,OAAO,CAAC,GAAD,EAAM,IAAIb,IAAA,CAAKG,GAAL,CAAS,CAAT,EAAY,MAAMO,CAAN,GAAU,OAAOE,CAAjB,GAAqB,OAAOD,CAA5B,GAAgCE,CAA5C,CAAV,CAAP;EAD0B;EAI5B,OAAOC,MAAPA,CAAc,CAACC,CAAD,CAAd,EAAmB;IACjB,OAAO,CAAC,MAAD,EAAS,CAAT,EAAY,CAAZ,EAAe,CAAf,EAAkB,IAAIA,CAAtB,CAAP;EADiB;EAInB,OAAOC,KAAPA,CAAa,CAACD,CAAD,CAAb,EAAkB;IAChB,OAAO,CAAC,KAAD,EAAQA,CAAR,EAAWA,CAAX,EAAcA,CAAd,CAAP;EADgB;EAIlB,OAAOE,KAAPA,CAAa,CAACF,CAAD,CAAb,EAAkB;IAChBA,CAAA,GAAIT,aAAA,CAAcS,CAAd,CAAJ;IACA,OAAO,CAACA,CAAD,EAAIA,CAAJ,EAAOA,CAAP,CAAP;EAFgB;EAKlB,OAAOG,MAAPA,CAAc,CAACH,CAAD,CAAd,EAAmB;IACjB,MAAMI,CAAA,GAAIrB,aAAA,CAAciB,CAAd,CAAV;IACA,OAAQ,IAAGI,CAAJ,GAAQA,CAAR,GAAYA,CAAZ,EAAP;EAFiB;EAKnB,OAAOC,KAAPA,CAAa,CAACC,CAAD,EAAIN,CAAJ,EAAOO,CAAP,CAAb,EAAwB;IACtB,OAAO,CAAC,GAAD,EAAM,MAAMD,CAAN,GAAU,OAAON,CAAjB,GAAqB,OAAOO,CAAlC,CAAP;EADsB;EAIxB,OAAOC,OAAPA,CAAeC,KAAf,EAAsB;IACpB,OAAOA,KAAA,CAAMC,GAAN,CAAUnB,aAAV,CAAP;EADoB;EAItB,OAAOoB,QAAPA,CAAgBF,KAAhB,EAAuB;IACrB,OAAQ,IAAGA,KAAA,CAAMC,GAAN,CAAU3B,aAAV,EAAyB6B,IAAzB,CAA8B,EAA9B,CAAJ,EAAP;EADqB;EAIvB,OAAOC,MAAPA,CAAA,EAAgB;IACd,OAAO,WAAP;EADc;EAIhB,OAAOC,KAAPA,CAAA,EAAe;IACb,OAAO,CAAC,IAAD,CAAP;EADa;EAIf,OAAOC,QAAPA,CAAgB,CAACpB,CAAD,EAAIC,CAAJ,EAAOC,CAAP,EAAUC,CAAV,CAAhB,EAA8B;IAC5B,OAAO,CACL,KADK,EAEL,IAAIb,IAAA,CAAKG,GAAL,CAAS,CAAT,EAAYO,CAAA,GAAIG,CAAhB,CAFC,EAGL,IAAIb,IAAA,CAAKG,GAAL,CAAS,CAAT,EAAYS,CAAA,GAAIC,CAAhB,CAHC,EAIL,IAAIb,IAAA,CAAKG,GAAL,CAAS,CAAT,EAAYQ,CAAA,GAAIE,CAAhB,CAJC,CAAP;EAD4B;EAS9B,OAAOkB,QAAPA,CAAgB,CAACrB,CAAD,EAAIC,CAAJ,EAAOC,CAAP,EAAUC,CAAV,CAAhB,EAA8B;IAC5B,OAAO,CACLP,aAAA,CAAc,IAAIN,IAAA,CAAKG,GAAL,CAAS,CAAT,EAAYO,CAAA,GAAIG,CAAhB,CAAlB,CADK,EAELP,aAAA,CAAc,IAAIN,IAAA,CAAKG,GAAL,CAAS,CAAT,EAAYS,CAAA,GAAIC,CAAhB,CAAlB,CAFK,EAGLP,aAAA,CAAc,IAAIN,IAAA,CAAKG,GAAL,CAAS,CAAT,EAAYQ,CAAA,GAAIE,CAAhB,CAAlB,CAHK,CAAP;EAD4B;EAQ9B,OAAOmB,SAAPA,CAAiBC,UAAjB,EAA6B;IAC3B,MAAMC,GAAA,GAAM,KAAKJ,QAAL,CAAcG,UAAd,EAA0BE,KAA1B,CAAgC,CAAhC,CAAZ;IACA,OAAO,KAAKT,QAAL,CAAcQ,GAAd,CAAP;EAF2B;EAK7B,OAAOE,QAAPA,CAAgB,CAACf,CAAD,EAAIN,CAAJ,EAAOO,CAAP,CAAhB,EAA2B;IACzB,MAAMZ,CAAA,GAAI,IAAIW,CAAd;IACA,MAAMT,CAAA,GAAI,IAAIG,CAAd;IACA,MAAMJ,CAAA,GAAI,IAAIW,CAAd;IACA,MAAMT,CAAA,GAAIb,IAAA,CAAKG,GAAL,CAASO,CAAT,EAAYE,CAAZ,EAAeD,CAAf,CAAV;IACA,OAAO,CAAC,MAAD,EAASD,CAAT,EAAYE,CAAZ,EAAeD,CAAf,EAAkBE,CAAlB,CAAP;EALyB;AAjEP;;;;;ACVtB;AAYA;AAMA;AACA;AACA;AAEA,MAAMwC,iBAAA,GAAoB,IAA1B;AACA,MAAMC,iBAAA,GAAoB,CAA1B;AACA,MAAMC,oBAAA,GAAuB,IAAIC,OAAJ,EAA7B;AAEA,SAASC,WAATA,CAAqBC,IAArB,EAA2B;EACzB,OAAO;IACLC,KAAA,EAAOD,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CADZ;IAELE,MAAA,EAAQF,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL;EAFb,CAAP;AADyB;AAuB3B,MAAMG,wBAAN,CAA+B;EAK7B,OAAOC,MAAPA,CAAcC,UAAd,EAA0B;IACxB,MAAMC,OAAA,GAAUD,UAAA,CAAWE,IAAX,CAAgBC,cAAhC;IAEA,QAAQF,OAAR;MACE,KAAKxB,mBAAA,CAAe2B,IAApB;QACE,OAAO,IAAIC,qBAAJ,CAA0BL,UAA1B,CAAP;MAEF,KAAKvB,mBAAA,CAAe6B,IAApB;QACE,OAAO,IAAIC,qBAAJ,CAA0BP,UAA1B,CAAP;MAEF,KAAKvB,mBAAA,CAAe+B,MAApB;QACE,MAAMC,SAAA,GAAYT,UAAA,CAAWE,IAAX,CAAgBO,SAAlC;QAEA,QAAQA,SAAR;UACE,KAAK,IAAL;YACE,OAAO,IAAIC,2BAAJ,CAAgCV,UAAhC,CAAP;UACF,KAAK,KAAL;YACE,IAAIA,UAAA,CAAWE,IAAX,CAAgBS,WAApB,EAAiC;cAC/B,OAAO,IAAIC,kCAAJ,CAAuCZ,UAAvC,CAAP;YAD+B,CAAjC,MAEO,IAAIA,UAAA,CAAWE,IAAX,CAAgBW,QAApB,EAA8B;cACnC,OAAO,IAAIC,+BAAJ,CAAoCd,UAApC,CAAP;YADmC;YAGrC,OAAO,IAAIe,iCAAJ,CAAsCf,UAAtC,CAAP;UACF,KAAK,IAAL;YACE,OAAO,IAAIgB,6BAAJ,CAAkChB,UAAlC,CAAP;UACF,KAAK,KAAL;YACE,OAAO,IAAIiB,gCAAJ,CAAqCjB,UAArC,CAAP;QAbJ;QAeA,OAAO,IAAIkB,uBAAJ,CAA4BlB,UAA5B,CAAP;MAEF,KAAKvB,mBAAA,CAAe0C,KAApB;QACE,OAAO,IAAIC,sBAAJ,CAA2BpB,UAA3B,CAAP;MAEF,KAAKvB,mBAAA,CAAe4C,QAApB;QACE,OAAO,IAAIC,yBAAJ,CAA8BtB,UAA9B,CAAP;MAEF,KAAKvB,mBAAA,CAAe8C,IAApB;QACE,OAAO,IAAIC,qBAAJ,CAA0BxB,UAA1B,CAAP;MAEF,KAAKvB,mBAAA,CAAegD,MAApB;QACE,OAAO,IAAIC,uBAAJ,CAA4B1B,UAA5B,CAAP;MAEF,KAAKvB,mBAAA,CAAekD,MAApB;QACE,OAAO,IAAIC,uBAAJ,CAA4B5B,UAA5B,CAAP;MAEF,KAAKvB,mBAAA,CAAeoD,QAApB;QACE,OAAO,IAAIC,yBAAJ,CAA8B9B,UAA9B,CAAP;MAEF,KAAKvB,mBAAA,CAAesD,KAApB;QACE,OAAO,IAAIC,sBAAJ,CAA2BhC,UAA3B,CAAP;MAEF,KAAKvB,mBAAA,CAAewD,GAApB;QACE,OAAO,IAAIC,oBAAJ,CAAyBlC,UAAzB,CAAP;MAEF,KAAKvB,mBAAA,CAAe0D,OAApB;QACE,OAAO,IAAIC,wBAAJ,CAA6BpC,UAA7B,CAAP;MAEF,KAAKvB,mBAAA,CAAe4D,SAApB;QACE,OAAO,IAAIC,0BAAJ,CAA+BtC,UAA/B,CAAP;MAEF,KAAKvB,mBAAA,CAAe8D,SAApB;QACE,OAAO,IAAIC,0BAAJ,CAA+BxC,UAA/B,CAAP;MAEF,KAAKvB,mBAAA,CAAegE,QAApB;QACE,OAAO,IAAIC,yBAAJ,CAA8B1C,UAA9B,CAAP;MAEF,KAAKvB,mBAAA,CAAekE,SAApB;QACE,OAAO,IAAIC,0BAAJ,CAA+B5C,UAA/B,CAAP;MAEF,KAAKvB,mBAAA,CAAeoE,KAApB;QACE,OAAO,IAAIC,sBAAJ,CAA2B9C,UAA3B,CAAP;MAEF,KAAKvB,mBAAA,CAAesE,cAApB;QACE,OAAO,IAAIC,+BAAJ,CAAoChD,UAApC,CAAP;MAEF;QACE,OAAO,IAAIiD,iBAAJ,CAAsBjD,UAAtB,CAAP;IAzEJ;EAHwB;AALG;AAsF/B,MAAMiD,iBAAN,CAAwB;EACtB,CAAAC,SAAA,GAAa,KAAb;EAEAC,YACEnD,UADF,EAEE;IACEoD,YAAA,GAAe,KADjB;IAEEC,YAAA,GAAe,KAFjB;IAGEC,oBAAA,GAAuB;EAHzB,IAII,EANN,EAOE;IACA,KAAKF,YAAL,GAAoBA,YAApB;IACA,KAAKlD,IAAL,GAAYF,UAAA,CAAWE,IAAvB;IACA,KAAKqD,KAAL,GAAavD,UAAA,CAAWuD,KAAxB;IACA,KAAKC,WAAL,GAAmBxD,UAAA,CAAWwD,WAA9B;IACA,KAAKC,eAAL,GAAuBzD,UAAA,CAAWyD,eAAlC;IACA,KAAKC,kBAAL,GAA0B1D,UAAA,CAAW0D,kBAArC;IACA,KAAKC,WAAL,GAAmB3D,UAAA,CAAW2D,WAA9B;IACA,KAAKC,UAAL,GAAkB5D,UAAA,CAAW4D,UAA7B;IACA,KAAKC,iBAAL,GAAyB7D,UAAA,CAAW6D,iBAApC;IACA,KAAKC,eAAL,GAAuB9D,UAAA,CAAW8D,eAAlC;IACA,KAAKC,YAAL,GAAoB/D,UAAA,CAAW+D,YAA/B;IACA,KAAKC,aAAL,GAAqBhE,UAAA,CAAWiE,YAAhC;IACA,KAAKC,MAAL,GAAclE,UAAA,CAAWkE,MAAzB;IAEA,IAAId,YAAJ,EAAkB;MAChB,KAAKe,SAAL,GAAiB,KAAKC,gBAAL,CAAsBf,YAAtB,CAAjB;IADgB;IAGlB,IAAIC,oBAAJ,EAA0B;MACxB,KAAKe,qBAAL;IADwB;EAlB1B;EAuBF,OAAOC,aAAPA,CAAqB;IAAEC,QAAF;IAAYC,WAAZ;IAAyBC;EAAzB,CAArB,EAA0D;IACxD,OAAO,CAAC,EAAEF,QAAA,EAAUG,GAAV,IAAiBF,WAAA,EAAaE,GAA9B,IAAqCD,QAAA,EAAUC,GAA/C,CAAV;EADwD;EAI1D,IAAIC,YAAJA,CAAA,EAAmB;IACjB,OAAO1B,iBAAA,CAAkBqB,aAAlB,CAAgC,KAAKpE,IAArC,CAAP;EADiB;EAYnBkE,iBAAiBf,YAAjB,EAA+B;IAC7B,MAAM;MACJnD,IADI;MAEJgE,MAAA,EAAQ;QAAEU,IAAF;QAAQC;MAAR;IAFJ,IAGF,IAHJ;IAKA,MAAMV,SAAA,GAAYW,QAAA,CAASC,aAAT,CAAuB,SAAvB,CAAlB;IACAZ,SAAA,CAAUa,YAAV,CAAuB,oBAAvB,EAA6C9E,IAAA,CAAK+E,EAAlD;IACA,IAAI,EAAE,gBAAgB/D,uBAAhB,CAAN,EAAgD;MAC9CiD,SAAA,CAAUe,QAAV,GAAqB5F,iBAArB;IAD8C;IAShD6E,SAAA,CAAUgB,KAAV,CAAgBC,MAAhB,GAAyB,KAAKlB,MAAL,CAAYkB,MAAZ,EAAzB;IAEA,IAAI,KAAKlF,IAAL,CAAUmF,QAAd,EAAwB;MACtBlB,SAAA,CAAUa,YAAV,CAAuB,eAAvB,EAAwC,QAAxC;IADsB;IAIxB,IAAI9E,IAAA,CAAKoF,QAAT,EAAmB;MACjBnB,SAAA,CAAUoB,SAAV,CAAoBC,GAApB,CAAwB,UAAxB;IADiB;IAInB,MAAM;MAAEC,SAAF;MAAaC,UAAb;MAAyBC,KAAzB;MAAgCC;IAAhC,IAA0Cf,QAAA,CAASgB,OAAzD;IAEA,IAAI,CAAC3F,IAAA,CAAKP,IAAN,IAAc,gBAAgByB,sBAAlC,EAA0D;MACxD,MAAM;QAAE0E;MAAF,IAAe5F,IAArB;MACA,IAAI,CAACA,IAAA,CAAK6F,YAAN,IAAsBD,QAAA,KAAa,CAAvC,EAA0C;QACxC,KAAKE,WAAL,CAAiBF,QAAjB,EAA2B3B,SAA3B;MADwC;MAG1C,OAAOA,SAAP;IALwD;IAQ1D,MAAM;MAAEvE,KAAF;MAASC;IAAT,IAAoBH,WAAA,CAAYQ,IAAA,CAAKP,IAAjB,CAA1B;IAIA,MAAMA,IAAA,GAAOb,SAAA,CAAKmH,aAAL,CAAmB,CAC9B/F,IAAA,CAAKP,IAAL,CAAU,CAAV,CAD8B,EAE9BiF,IAAA,CAAKsB,IAAL,CAAU,CAAV,IAAehG,IAAA,CAAKP,IAAL,CAAU,CAAV,CAAf,GAA8BiF,IAAA,CAAKsB,IAAL,CAAU,CAAV,CAFA,EAG9BhG,IAAA,CAAKP,IAAL,CAAU,CAAV,CAH8B,EAI9BiF,IAAA,CAAKsB,IAAL,CAAU,CAAV,IAAehG,IAAA,CAAKP,IAAL,CAAU,CAAV,CAAf,GAA8BiF,IAAA,CAAKsB,IAAL,CAAU,CAAV,CAJA,CAAnB,CAAb;IAOA,IAAI,CAAC7C,YAAD,IAAiBnD,IAAA,CAAKiG,WAAL,CAAiBvG,KAAjB,GAAyB,CAA9C,EAAiD;MAC/CuE,SAAA,CAAUgB,KAAV,CAAgBiB,WAAhB,GAA8B,GAAGlG,IAAA,CAAKiG,WAAL,CAAiBvG,KAAM,IAAxD;MAEA,MAAMyG,gBAAA,GAAmBnG,IAAA,CAAKiG,WAAL,CAAiBG,sBAA1C;MACA,MAAMC,cAAA,GAAiBrG,IAAA,CAAKiG,WAAL,CAAiBK,oBAAxC;MACA,IAAIH,gBAAA,GAAmB,CAAnB,IAAwBE,cAAA,GAAiB,CAA7C,EAAgD;QAC9C,MAAME,MAAA,GAAU,QAAOJ,gBAAiB,oCAAmCE,cAAe,2BAA1F;QACApC,SAAA,CAAUgB,KAAV,CAAgBuB,YAAhB,GAA+BD,MAA/B;MAF8C,CAAhD,MAGO,IAAI,gBAAgB7F,kCAApB,EAAwD;QAC7D,MAAM6F,MAAA,GAAU,QAAO7G,KAAM,oCAAmCC,MAAO,2BAAvE;QACAsE,SAAA,CAAUgB,KAAV,CAAgBuB,YAAhB,GAA+BD,MAA/B;MAF6D;MAK/D,QAAQvG,IAAA,CAAKiG,WAAL,CAAiBhB,KAAzB;QACE,KAAK7G,8BAAA,CAA0BqI,KAA/B;UACExC,SAAA,CAAUgB,KAAV,CAAgBgB,WAAhB,GAA8B,OAA9B;UACA;QAEF,KAAK7H,8BAAA,CAA0BsI,MAA/B;UACEzC,SAAA,CAAUgB,KAAV,CAAgBgB,WAAhB,GAA8B,QAA9B;UACA;QAEF,KAAK7H,8BAAA,CAA0BuI,OAA/B;UACE9H,aAAA,CAAK,qCAAL;UACA;QAEF,KAAKT,8BAAA,CAA0BwI,KAA/B;UACE/H,aAAA,CAAK,mCAAL;UACA;QAEF,KAAKT,8BAAA,CAA0BiE,SAA/B;UACE4B,SAAA,CAAUgB,KAAV,CAAgB4B,iBAAhB,GAAoC,OAApC;UACA;QAEF;UACE;MAtBJ;MAyBA,MAAMC,WAAA,GAAc9G,IAAA,CAAK8G,WAAL,IAAoB,IAAxC;MACA,IAAIA,WAAJ,EAAiB;QACf,KAAK,CAAA9D,SAAL,GAAkB,IAAlB;QACAiB,SAAA,CAAUgB,KAAV,CAAgB6B,WAAhB,GAA8BlI,SAAA,CAAKmI,YAAL,CAC5BD,WAAA,CAAY,CAAZ,IAAiB,CADW,EAE5BA,WAAA,CAAY,CAAZ,IAAiB,CAFW,EAG5BA,WAAA,CAAY,CAAZ,IAAiB,CAHW,CAA9B;MAFe,CAAjB,MAOO;QAEL7C,SAAA,CAAUgB,KAAV,CAAgBiB,WAAhB,GAA8B,CAA9B;MAFK;IA9CwC;IAoDjDjC,SAAA,CAAUgB,KAAV,CAAgB+B,IAAhB,GAAuB,GAAI,OAAOvH,IAAA,CAAK,CAAL,IAAUgG,KAAV,CAAR,GAA4BF,SAAU,GAAhE;IACAtB,SAAA,CAAUgB,KAAV,CAAgBgC,GAAhB,GAAsB,GAAI,OAAOxH,IAAA,CAAK,CAAL,IAAUiG,KAAV,CAAR,GAA4BF,UAAW,GAAhE;IAEA,MAAM;MAAEI;IAAF,IAAe5F,IAArB;IACA,IAAIA,IAAA,CAAK6F,YAAL,IAAqBD,QAAA,KAAa,CAAtC,EAAyC;MACvC3B,SAAA,CAAUgB,KAAV,CAAgBvF,KAAhB,GAAwB,GAAI,MAAMA,KAAP,GAAgB6F,SAAU,GAArD;MACAtB,SAAA,CAAUgB,KAAV,CAAgBtF,MAAhB,GAAyB,GAAI,MAAMA,MAAP,GAAiB6F,UAAW,GAAxD;IAFuC,CAAzC,MAGO;MACL,KAAKM,WAAL,CAAiBF,QAAjB,EAA2B3B,SAA3B;IADK;IAIP,OAAOA,SAAP;EA/G6B;EAkH/B6B,YAAYoB,KAAZ,EAAmBjD,SAAA,GAAY,KAAKA,SAApC,EAA+C;IAC7C,IAAI,CAAC,KAAKjE,IAAL,CAAUP,IAAf,EAAqB;MACnB;IADmB;IAGrB,MAAM;MAAE8F,SAAF;MAAaC;IAAb,IAA4B,KAAKxB,MAAL,CAAYW,QAAZ,CAAqBgB,OAAvD;IACA,MAAM;MAAEjG,KAAF;MAASC;IAAT,IAAoBH,WAAA,CAAY,KAAKQ,IAAL,CAAUP,IAAtB,CAA1B;IAEA,IAAI0H,YAAJ,EAAkBC,aAAlB;IACA,IAAIF,KAAA,GAAQ,GAAR,KAAgB,CAApB,EAAuB;MACrBC,YAAA,GAAgB,MAAMzH,KAAP,GAAgB6F,SAA/B;MACA6B,aAAA,GAAiB,MAAMzH,MAAP,GAAiB6F,UAAjC;IAFqB,CAAvB,MAGO;MACL2B,YAAA,GAAgB,MAAMxH,MAAP,GAAiB4F,SAAhC;MACA6B,aAAA,GAAiB,MAAM1H,KAAP,GAAgB8F,UAAhC;IAFK;IAKPvB,SAAA,CAAUgB,KAAV,CAAgBvF,KAAhB,GAAwB,GAAGyH,YAAa,GAAxC;IACAlD,SAAA,CAAUgB,KAAV,CAAgBtF,MAAhB,GAAyB,GAAGyH,aAAc,GAA1C;IAEAnD,SAAA,CAAUa,YAAV,CAAuB,oBAAvB,EAA8C,OAAMoC,KAAN,IAAe,GAA7D;EAnB6C;EAsB/C,IAAIG,cAAJA,CAAA,EAAqB;IACnB,MAAMC,QAAA,GAAWA,CAACC,MAAD,EAASC,SAAT,EAAoBC,KAApB,KAA8B;MAC7C,MAAMlK,KAAA,GAAQkK,KAAA,CAAMC,MAAN,CAAaH,MAAb,CAAd;MACA,MAAMI,SAAA,GAAYpK,KAAA,CAAM,CAAN,CAAlB;MACA,MAAMqK,UAAA,GAAarK,KAAA,CAAMW,KAAN,CAAY,CAAZ,CAAnB;MACAuJ,KAAA,CAAMI,MAAN,CAAa5C,KAAb,CAAmBuC,SAAnB,IACEjL,eAAA,CAAgB,GAAGoL,SAAU,OAA7B,EAAqCC,UAArC,CADF;MAEA,KAAKjE,iBAAL,CAAuBmE,QAAvB,CAAgC,KAAK9H,IAAL,CAAU+E,EAA1C,EAA8C;QAC5C,CAACyC,SAAD,GAAajL,eAAA,CAAgB,GAAGoL,SAAU,MAA7B,EAAoCC,UAApC;MAD+B,CAA9C;IAN6C,CAA/C;IAWA,OAAOlJ,eAAA,CAAO,IAAP,EAAa,gBAAb,EAA+B;MACpCqJ,OAAA,EAASN,KAAA,IAAS;QAChB,MAAM;UAAEM;QAAF,IAAcN,KAAA,CAAMC,MAA1B;QAGA,MAAMM,MAAA,GAASD,OAAA,GAAU,CAAV,KAAgB,CAA/B;QACA,KAAK9D,SAAL,CAAegB,KAAf,CAAqBgD,UAArB,GAAkCD,MAAA,GAAS,QAAT,GAAoB,SAAtD;QACA,KAAKrE,iBAAL,CAAuBmE,QAAvB,CAAgC,KAAK9H,IAAL,CAAU+E,EAA1C,EAA8C;UAC5CmD,MAAA,EAAQF,MADoC;UAE5CG,OAAA,EAASJ,OAAA,KAAY,CAAZ,IAAiBA,OAAA,KAAY;QAFM,CAA9C;MANgB,CADkB;MAYpCK,KAAA,EAAOX,KAAA,IAAS;QACd,KAAK9D,iBAAL,CAAuBmE,QAAvB,CAAgC,KAAK9H,IAAL,CAAU+E,EAA1C,EAA8C;UAC5CoD,OAAA,EAAS,CAACV,KAAA,CAAMC,MAAN,CAAaU;QADqB,CAA9C;MADc,CAZoB;MAiBpCJ,MAAA,EAAQP,KAAA,IAAS;QACf,MAAM;UAAEO;QAAF,IAAaP,KAAA,CAAMC,MAAzB;QACA,KAAKzD,SAAL,CAAegB,KAAf,CAAqBgD,UAArB,GAAkCD,MAAA,GAAS,QAAT,GAAoB,SAAtD;QACA,KAAKrE,iBAAL,CAAuBmE,QAAvB,CAAgC,KAAK9H,IAAL,CAAU+E,EAA1C,EAA8C;UAC5CoD,OAAA,EAASH,MADmC;UAE5CE,MAAA,EAAQF;QAFoC,CAA9C;MAHe,CAjBmB;MAyBpCK,KAAA,EAAOZ,KAAA,IAAS;QACda,UAAA,CAAW,MAAMb,KAAA,CAAMI,MAAN,CAAaQ,KAAb,CAAmB;UAAEE,aAAA,EAAe;QAAjB,CAAnB,CAAjB,EAA+D,CAA/D;MADc,CAzBoB;MA4BpCC,QAAA,EAAUf,KAAA,IAAS;QAEjBA,KAAA,CAAMI,MAAN,CAAaY,KAAb,GAAqBhB,KAAA,CAAMC,MAAN,CAAac,QAAlC;MAFiB,CA5BiB;MAgCpCE,QAAA,EAAUjB,KAAA,IAAS;QACjBA,KAAA,CAAMI,MAAN,CAAac,QAAb,GAAwBlB,KAAA,CAAMC,MAAN,CAAagB,QAArC;MADiB,CAhCiB;MAmCpCE,QAAA,EAAUnB,KAAA,IAAS;QACjB,KAAKoB,YAAL,CAAkBpB,KAAA,CAAMI,MAAxB,EAAgCJ,KAAA,CAAMC,MAAN,CAAakB,QAA7C;MADiB,CAnCiB;MAsCpCE,OAAA,EAASrB,KAAA,IAAS;QAChBH,QAAA,CAAS,SAAT,EAAoB,iBAApB,EAAuCG,KAAvC;MADgB,CAtCkB;MAyCpCsB,SAAA,EAAWtB,KAAA,IAAS;QAClBH,QAAA,CAAS,WAAT,EAAsB,iBAAtB,EAAyCG,KAAzC;MADkB,CAzCgB;MA4CpCuB,OAAA,EAASvB,KAAA,IAAS;QAChBH,QAAA,CAAS,SAAT,EAAoB,OAApB,EAA6BG,KAA7B;MADgB,CA5CkB;MA+CpCwB,SAAA,EAAWxB,KAAA,IAAS;QAClBH,QAAA,CAAS,WAAT,EAAsB,OAAtB,EAA+BG,KAA/B;MADkB,CA/CgB;MAkDpCX,WAAA,EAAaW,KAAA,IAAS;QACpBH,QAAA,CAAS,aAAT,EAAwB,aAAxB,EAAuCG,KAAvC;MADoB,CAlDc;MAqDpCyB,WAAA,EAAazB,KAAA,IAAS;QACpBH,QAAA,CAAS,aAAT,EAAwB,aAAxB,EAAuCG,KAAvC;MADoB,CArDc;MAwDpC7B,QAAA,EAAU6B,KAAA,IAAS;QACjB,MAAMP,KAAA,GAAQO,KAAA,CAAMC,MAAN,CAAa9B,QAA3B;QACA,KAAKE,WAAL,CAAiBoB,KAAjB;QACA,KAAKvD,iBAAL,CAAuBmE,QAAvB,CAAgC,KAAK9H,IAAL,CAAU+E,EAA1C,EAA8C;UAC5Ca,QAAA,EAAUsB;QADkC,CAA9C;MAHiB;IAxDiB,CAA/B,CAAP;EAZmB;EA8ErBiC,0BAA0BC,OAA1B,EAAmCC,OAAnC,EAA4C;IAC1C,MAAMC,aAAA,GAAgB,KAAKjC,cAA3B;IACA,WAAWkC,IAAX,IAAmBC,MAAA,CAAOC,IAAP,CAAYJ,OAAA,CAAQ3B,MAApB,CAAnB,EAAgD;MAC9C,MAAMgC,MAAA,GAASN,OAAA,CAAQG,IAAR,KAAiBD,aAAA,CAAcC,IAAd,CAAhC;MACAG,MAAA,GAASL,OAAT;IAF8C;EAFN;EAQ5CM,4BAA4BC,OAA5B,EAAqC;IACnC,IAAI,CAAC,KAAKhG,eAAV,EAA2B;MACzB;IADyB;IAK3B,MAAMiG,UAAA,GAAa,KAAKlG,iBAAL,CAAuBmG,WAAvB,CAAmC,KAAK9J,IAAL,CAAU+E,EAA7C,CAAnB;IACA,IAAI,CAAC8E,UAAL,EAAiB;MACf;IADe;IAIjB,MAAMP,aAAA,GAAgB,KAAKjC,cAA3B;IACA,WAAW,CAAC0C,UAAD,EAAarC,MAAb,CAAX,IAAmC8B,MAAA,CAAOQ,OAAP,CAAeH,UAAf,CAAnC,EAA+D;MAC7D,MAAMH,MAAA,GAASJ,aAAA,CAAcS,UAAd,CAAf;MACA,IAAIL,MAAJ,EAAY;QACV,MAAMO,UAAA,GAAa;UACjBvC,MAAA,EAAQ;YACN,CAACqC,UAAD,GAAcrC;UADR,CADS;UAIjBG,MAAA,EAAQ+B;QAJS,CAAnB;QAMAF,MAAA,CAAOO,UAAP;QAEA,OAAOJ,UAAA,CAAWE,UAAX,CAAP;MATU;IAFiD;EAZ5B;EAkCrC5F,sBAAA,EAAwB;IACtB,IAAI,CAAC,KAAKF,SAAV,EAAqB;MACnB;IADmB;IAGrB,MAAM;MAAEiG;IAAF,IAAiB,KAAKlK,IAA5B;IACA,IAAI,CAACkK,UAAL,EAAiB;MACf;IADe;IAIjB,MAAM,CAACC,OAAD,EAAUC,OAAV,EAAmBC,OAAnB,EAA4BC,OAA5B,IAAuC,KAAKtK,IAAL,CAAUP,IAAvD;IAEA,IAAIyK,UAAA,CAAWK,MAAX,KAAsB,CAA1B,EAA6B;MAC3B,MAAM,GAAG;QAAEjO,CAAA,EAAGkO,GAAL;QAAU9N,CAAA,EAAG+N;MAAb,CAAH,EAAuB;QAAEnO,CAAA,EAAGoO,GAAL;QAAUhO,CAAA,EAAGiO;MAAb,CAAvB,IAA6CT,UAAA,CAAW,CAAX,CAAnD;MACA,IACEG,OAAA,KAAYG,GAAZ,IACAF,OAAA,KAAYG,GADZ,IAEAN,OAAA,KAAYO,GAFZ,IAGAN,OAAA,KAAYO,GAJd,EAKE;QAGA;MAHA;IAPyB;IAc7B,MAAM;MAAE1F;IAAF,IAAY,KAAKhB,SAAvB;IACA,IAAI2G,SAAJ;IACA,IAAI,KAAK,CAAA5H,SAAT,EAAqB;MACnB,MAAM;QAAE8D,WAAF;QAAeZ;MAAf,IAA+BjB,KAArC;MACAA,KAAA,CAAMiB,WAAN,GAAoB,CAApB;MACA0E,SAAA,GAAY,CACV,+BADU,EAET,yCAFS,EAGT,gDAHS,EAIT,iCAAgC9D,WAAY,mBAAkBZ,WAAY,IAJjE,CAAZ;MAMA,KAAKjC,SAAL,CAAeoB,SAAf,CAAyBC,GAAzB,CAA6B,WAA7B;IATmB;IAgBrB,MAAM5F,KAAA,GAAQ2K,OAAA,GAAUF,OAAxB;IACA,MAAMxK,MAAA,GAAS2K,OAAA,GAAUF,OAAzB;IAEA,MAAM;MAAE1G;IAAF,IAAiB,IAAvB;IACA,MAAMmH,GAAA,GAAMnH,UAAA,CAAWmB,aAAX,CAAyB,KAAzB,CAAZ;IACAgG,GAAA,CAAIxF,SAAJ,CAAcC,GAAd,CAAkB,yBAAlB;IACAuF,GAAA,CAAI/F,YAAJ,CAAiB,OAAjB,EAA0B,CAA1B;IACA+F,GAAA,CAAI/F,YAAJ,CAAiB,QAAjB,EAA2B,CAA3B;IACA,MAAMgG,IAAA,GAAOpH,UAAA,CAAWmB,aAAX,CAAyB,MAAzB,CAAb;IACAgG,GAAA,CAAIE,MAAJ,CAAWD,IAAX;IACA,MAAME,QAAA,GAAWtH,UAAA,CAAWmB,aAAX,CAAyB,UAAzB,CAAjB;IACA,MAAME,EAAA,GAAM,YAAW,KAAK/E,IAAL,CAAU+E,EAAtB,EAAX;IACAiG,QAAA,CAASlG,YAAT,CAAsB,IAAtB,EAA4BC,EAA5B;IACAiG,QAAA,CAASlG,YAAT,CAAsB,eAAtB,EAAuC,mBAAvC;IACAgG,IAAA,CAAKC,MAAL,CAAYC,QAAZ;IAEA,WAAW,GAAG;MAAE1O,CAAA,EAAGkO,GAAL;MAAU9N,CAAA,EAAG+N;IAAb,CAAH,EAAuB;MAAEnO,CAAA,EAAGoO,GAAL;MAAUhO,CAAA,EAAGiO;IAAb,CAAvB,CAAX,IAAyDT,UAAzD,EAAqE;MACnE,MAAMzK,IAAA,GAAOiE,UAAA,CAAWmB,aAAX,CAAyB,MAAzB,CAAb;MACA,MAAMvI,CAAA,GAAK,CAAAoO,GAAA,GAAMP,OAAN,IAAiBzK,KAA5B;MACA,MAAMhD,CAAA,GAAK,CAAA4N,OAAA,GAAUG,GAAV,IAAiB9K,MAA5B;MACA,MAAMsL,SAAA,GAAa,CAAAT,GAAA,GAAME,GAAN,IAAahL,KAAhC;MACA,MAAMwL,UAAA,GAAc,CAAAT,GAAA,GAAME,GAAN,IAAahL,MAAjC;MACAF,IAAA,CAAKqF,YAAL,CAAkB,GAAlB,EAAuBxI,CAAvB;MACAmD,IAAA,CAAKqF,YAAL,CAAkB,GAAlB,EAAuBpI,CAAvB;MACA+C,IAAA,CAAKqF,YAAL,CAAkB,OAAlB,EAA2BmG,SAA3B;MACAxL,IAAA,CAAKqF,YAAL,CAAkB,QAAlB,EAA4BoG,UAA5B;MACAF,QAAA,CAASD,MAAT,CAAgBtL,IAAhB;MACAmL,SAAA,EAAWO,IAAX,CACG,+CAA8C7O,CAAE,QAAOI,CAAE,YAAWuO,SAAU,aAAYC,UAAW,KADxG;IAXmE;IAgBrE,IAAI,KAAK,CAAAlI,SAAT,EAAqB;MACnB4H,SAAA,CAAUO,IAAV,CAAgB,cAAhB;MACAlG,KAAA,CAAMmG,eAAN,GAAwBR,SAAA,CAAUlN,IAAV,CAAe,EAAf,CAAxB;IAFmB;IAKrB,KAAKuG,SAAL,CAAe8G,MAAf,CAAsBF,GAAtB;IACA,KAAK5G,SAAL,CAAegB,KAAf,CAAqB+F,QAArB,GAAiC,QAAOjG,EAAG,GAA3C;EAjFsB;EA4FxBsG,aAAA,EAAe;IACb,MAAM;MAAEpH,SAAF;MAAajE;IAAb,IAAsB,IAA5B;IACAiE,SAAA,CAAUa,YAAV,CAAuB,eAAvB,EAAwC,QAAxC;IAEA,MAAMwG,KAAA,GAAQ,IAAIpK,sBAAJ,CAA2B;MACvClB,IAAA,EAAM;QACJzC,KAAA,EAAOyC,IAAA,CAAKzC,KADR;QAEJ8G,QAAA,EAAUrE,IAAA,CAAKqE,QAFX;QAGJkH,gBAAA,EAAkBvL,IAAA,CAAKuL,gBAHnB;QAIJjH,WAAA,EAAatE,IAAA,CAAKsE,WAJd;QAKJC,QAAA,EAAUvE,IAAA,CAAKuE,QALX;QAMJiH,UAAA,EAAYxL,IAAA,CAAKP,IANb;QAOJwG,WAAA,EAAa,CAPT;QAQJlB,EAAA,EAAK,SAAQ/E,IAAA,CAAK+E,EAAd,EARA;QASJa,QAAA,EAAU5F,IAAA,CAAK4F;MATX,CADiC;MAYvC5B,MAAA,EAAQ,KAAKA,MAZ0B;MAavCyH,QAAA,EAAU,CAAC,IAAD;IAb6B,CAA3B,CAAd;IAeA,KAAKzH,MAAL,CAAY0H,GAAZ,CAAgBX,MAAhB,CAAuBO,KAAA,CAAMK,MAAN,EAAvB;EAnBa;EA4BfA,OAAA,EAAS;IACPhN,oBAAA,CAAY,mDAAZ;EADO;EAQTiN,mBAAmBrC,IAAnB,EAAyBsC,MAAA,GAAS,IAAlC,EAAwC;IACtC,MAAMC,MAAA,GAAS,EAAf;IAEA,IAAI,KAAKhI,aAAT,EAAwB;MACtB,MAAMiI,QAAA,GAAW,KAAKjI,aAAL,CAAmByF,IAAnB,CAAjB;MACA,IAAIwC,QAAJ,EAAc;QACZ,WAAW;UAAErH,IAAF;UAAQK,EAAR;UAAYiH;QAAZ,CAAX,IAAyCD,QAAzC,EAAmD;UACjD,IAAIrH,IAAA,KAAS,CAAC,CAAd,EAAiB;YACf;UADe;UAGjB,IAAIK,EAAA,KAAO8G,MAAX,EAAmB;YACjB;UADiB;UAGnB,MAAMI,WAAA,GACJ,OAAOD,YAAP,KAAwB,QAAxB,GAAmCA,YAAnC,GAAkD,IADpD;UAGA,MAAME,UAAA,GAAatH,QAAA,CAASuH,aAAT,CAChB,qBAAoBpH,EAAG,IADP,CAAnB;UAGA,IAAImH,UAAA,IAAc,CAAC5M,oBAAA,CAAqB8M,GAArB,CAAyBF,UAAzB,CAAnB,EAAyD;YACvDrN,aAAA,CAAM,6CAA4CkG,EAA7C,EAAL;YACA;UAFuD;UAIzD+G,MAAA,CAAOX,IAAP,CAAY;YAAEpG,EAAF;YAAMkH,WAAN;YAAmBC;UAAnB,CAAZ;QAjBiD;MADvC;MAqBd,OAAOJ,MAAP;IAvBsB;IA2BxB,WAAWI,UAAX,IAAyBtH,QAAA,CAASyH,iBAAT,CAA2B9C,IAA3B,CAAzB,EAA2D;MACzD,MAAM;QAAE0C;MAAF,IAAkBC,UAAxB;MACA,MAAMnH,EAAA,GAAKmH,UAAA,CAAWI,YAAX,CAAwB,iBAAxB,CAAX;MACA,IAAIvH,EAAA,KAAO8G,MAAX,EAAmB;QACjB;MADiB;MAGnB,IAAI,CAACvM,oBAAA,CAAqB8M,GAArB,CAAyBF,UAAzB,CAAL,EAA2C;QACzC;MADyC;MAG3CJ,MAAA,CAAOX,IAAP,CAAY;QAAEpG,EAAF;QAAMkH,WAAN;QAAmBC;MAAnB,CAAZ;IATyD;IAW3D,OAAOJ,MAAP;EAzCsC;EA4CxCS,KAAA,EAAO;IACL,IAAI,KAAKtI,SAAT,EAAoB;MAClB,KAAKA,SAAL,CAAe+D,MAAf,GAAwB,KAAxB;IADkB;IAGpB,KAAKsD,KAAL,EAAYkB,SAAZ;EAJK;EAOPC,KAAA,EAAO;IACL,IAAI,KAAKxI,SAAT,EAAoB;MAClB,KAAKA,SAAL,CAAe+D,MAAf,GAAwB,IAAxB;IADkB;IAGpB,KAAKsD,KAAL,EAAYoB,SAAZ;EAJK;EAePC,0BAAA,EAA4B;IAC1B,OAAO,KAAK1I,SAAZ;EAD0B;EAI5B2I,iBAAA,EAAmB;IACjB,MAAMC,QAAA,GAAW,KAAKF,yBAAL,EAAjB;IACA,IAAIG,KAAA,CAAMC,OAAN,CAAcF,QAAd,CAAJ,EAA6B;MAC3B,WAAWjD,OAAX,IAAsBiD,QAAtB,EAAgC;QAC9BjD,OAAA,CAAQvE,SAAR,CAAkBC,GAAlB,CAAsB,eAAtB;MAD8B;IADL,CAA7B,MAIO;MACLuH,QAAA,CAASxH,SAAT,CAAmBC,GAAnB,CAAuB,eAAvB;IADK;EANU;EAWnB,IAAI0H,WAAJA,CAAA,EAAkB;IAChB,OAAO,KAAP;EADgB;EAIlBC,mBAAA,EAAqB;IACnB,IAAI,CAAC,KAAKD,WAAV,EAAuB;MACrB;IADqB;IAGvB,MAAM;MACJE,oBAAA,EAAsBC,IADlB;MAEJnN,IAAA,EAAM;QAAE+E,EAAA,EAAIqI;MAAN;IAFF,IAGF,IAHJ;IAIA,KAAKnJ,SAAL,CAAeoJ,gBAAf,CAAgC,UAAhC,EAA4C,MAAM;MAChD,KAAK/J,WAAL,CAAiBgK,QAAjB,EAA2BC,QAA3B,CAAoC,4BAApC,EAAkE;QAChEC,MAAA,EAAQ,IADwD;QAEhEL,IAFgE;QAGhEC;MAHgE,CAAlE;IADgD,CAAlD;EARmB;AAtgBC;AAwhBxB,MAAMjN,qBAAN,SAAoC4C,iBAApC,CAAsD;EACpDE,YAAYnD,UAAZ,EAAwB2N,OAAA,GAAU,IAAlC,EAAwC;IACtC,MAAM3N,UAAN,EAAkB;MAChBoD,YAAA,EAAc,IADE;MAEhBC,YAAA,EAAc,CAAC,CAACsK,OAAA,EAAStK,YAFT;MAGhBC,oBAAA,EAAsB;IAHN,CAAlB;IAKA,KAAKsK,aAAL,GAAqB5N,UAAA,CAAWE,IAAX,CAAgB0N,aAArC;EANsC;EASxC/B,OAAA,EAAS;IACP,MAAM;MAAE3L,IAAF;MAAQsD;IAAR,IAAwB,IAA9B;IACA,MAAMqK,IAAA,GAAO/I,QAAA,CAASC,aAAT,CAAuB,GAAvB,CAAb;IACA8I,IAAA,CAAK7I,YAAL,CAAkB,iBAAlB,EAAqC9E,IAAA,CAAK+E,EAA1C;IACA,IAAI6I,OAAA,GAAU,KAAd;IAEA,IAAI5N,IAAA,CAAK6N,GAAT,EAAc;MACZvK,WAAA,CAAYwK,iBAAZ,CAA8BH,IAA9B,EAAoC3N,IAAA,CAAK6N,GAAzC,EAA8C7N,IAAA,CAAK+N,SAAnD;MACAH,OAAA,GAAU,IAAV;IAFY,CAAd,MAGO,IAAI5N,IAAA,CAAK0J,MAAT,EAAiB;MACtB,KAAKsE,gBAAL,CAAsBL,IAAtB,EAA4B3N,IAAA,CAAK0J,MAAjC;MACAkE,OAAA,GAAU,IAAV;IAFsB,CAAjB,MAGA,IAAI5N,IAAA,CAAKiO,UAAT,EAAqB;MAC1B,KAAK,CAAAC,cAAL,CAAqBP,IAArB,EAA2B3N,IAAA,CAAKiO,UAAhC,EAA4CjO,IAAA,CAAKmO,cAAjD;MACAP,OAAA,GAAU,IAAV;IAF0B,CAArB,MAGA,IAAI5N,IAAA,CAAKoO,WAAT,EAAsB;MAC3B,KAAK,CAAAC,eAAL,CAAsBV,IAAtB,EAA4B3N,IAAA,CAAKoO,WAAjC;MACAR,OAAA,GAAU,IAAV;IAF2B,CAAtB,MAGA,IAAI5N,IAAA,CAAKsO,IAAT,EAAe;MACpB,KAAKC,SAAL,CAAeZ,IAAf,EAAqB3N,IAAA,CAAKsO,IAA1B;MACAV,OAAA,GAAU,IAAV;IAFoB,CAAf,MAGA;MACL,IACE5N,IAAA,CAAKoJ,OAAL,KACCpJ,IAAA,CAAKoJ,OAAL,CAAaoF,MAAb,IACCxO,IAAA,CAAKoJ,OAAL,CAAa,UAAb,CADD,IAECpJ,IAAA,CAAKoJ,OAAL,CAAa,YAAb,CAFD,CADD,IAIA,KAAKxF,eAJL,IAKA,KAAKC,YANP,EAOE;QACA,KAAK4K,aAAL,CAAmBd,IAAnB,EAAyB3N,IAAzB;QACA4N,OAAA,GAAU,IAAV;MAFA;MAKF,IAAI5N,IAAA,CAAK0O,SAAT,EAAoB;QAClB,KAAKC,oBAAL,CAA0BhB,IAA1B,EAAgC3N,IAAA,CAAK0O,SAArC;QACAd,OAAA,GAAU,IAAV;MAFkB,CAApB,MAGO,IAAI,KAAKF,aAAL,IAAsB,CAACE,OAA3B,EAAoC;QACzC,KAAKW,SAAL,CAAeZ,IAAf,EAAqB,EAArB;QACAC,OAAA,GAAU,IAAV;MAFyC;IAhBtC;IAsBP,KAAK3J,SAAL,CAAeoB,SAAf,CAAyBC,GAAzB,CAA6B,gBAA7B;IACA,IAAIsI,OAAJ,EAAa;MACX,KAAK3J,SAAL,CAAe8G,MAAf,CAAsB4C,IAAtB;IADW;IAIb,OAAO,KAAK1J,SAAZ;EAhDO;EAmDT,CAAA2K,gBAAA,EAAmB;IACjB,KAAK3K,SAAL,CAAea,YAAf,CAA4B,oBAA5B,EAAkD,EAAlD;EADiB;EAYnByJ,UAAUZ,IAAV,EAAgBkB,WAAhB,EAA6B;IAC3BlB,IAAA,CAAKmB,IAAL,GAAY,KAAKxL,WAAL,CAAiByL,kBAAjB,CAAoCF,WAApC,CAAZ;IACAlB,IAAA,CAAKqB,OAAL,GAAe,MAAM;MACnB,IAAIH,WAAJ,EAAiB;QACf,KAAKvL,WAAL,CAAiB2L,eAAjB,CAAiCJ,WAAjC;MADe;MAGjB,OAAO,KAAP;IAJmB,CAArB;IAMA,IAAIA,WAAA,IAAeA,WAAA,KAAsC,EAAzD,EAA6D;MAC3D,KAAK,CAAAD,eAAL;IAD2D;EARlC;EAqB7BZ,iBAAiBL,IAAjB,EAAuBjE,MAAvB,EAA+B;IAC7BiE,IAAA,CAAKmB,IAAL,GAAY,KAAKxL,WAAL,CAAiB4L,YAAjB,CAA8B,EAA9B,CAAZ;IACAvB,IAAA,CAAKqB,OAAL,GAAe,MAAM;MACnB,KAAK1L,WAAL,CAAiB6L,kBAAjB,CAAoCzF,MAApC;MACA,OAAO,KAAP;IAFmB,CAArB;IAIA,KAAK,CAAAkF,eAAL;EAN6B;EAe/B,CAAAV,eAAgBP,IAAhB,EAAsBM,UAAtB,EAAkCK,IAAA,GAAO,IAAzC,EAA+C;IAC7CX,IAAA,CAAKmB,IAAL,GAAY,KAAKxL,WAAL,CAAiB4L,YAAjB,CAA8B,EAA9B,CAAZ;IACAvB,IAAA,CAAKqB,OAAL,GAAe,MAAM;MACnB,KAAKzL,eAAL,EAAsB6L,kBAAtB,CACEnB,UAAA,CAAWoB,OADb,EAEEpB,UAAA,CAAWqB,QAFb,EAGEhB,IAHF;MAKA,OAAO,KAAP;IANmB,CAArB;IAQA,KAAK,CAAAM,eAAL;EAV6C;EAkB/C,CAAAP,gBAAiBV,IAAjB,EAAuBjE,MAAvB,EAA+B;IAC7BiE,IAAA,CAAKmB,IAAL,GAAY,KAAKxL,WAAL,CAAiB4L,YAAjB,CAA8B,EAA9B,CAAZ;IACAvB,IAAA,CAAKqB,OAAL,GAAe,MAAM;MACnB,KAAK1L,WAAL,CAAiBiM,kBAAjB,CAAoC7F,MAApC;MACA,OAAO,KAAP;IAFmB,CAArB;IAIA,KAAK,CAAAkF,eAAL;EAN6B;EAiB/BH,cAAcd,IAAd,EAAoB3N,IAApB,EAA0B;IACxB2N,IAAA,CAAKmB,IAAL,GAAY,KAAKxL,WAAL,CAAiB4L,YAAjB,CAA8B,EAA9B,CAAZ;IACA,MAAM1R,GAAA,GAAM,IAAIgS,GAAJ,CAAQ,CAClB,CAAC,QAAD,EAAW,SAAX,CADkB,EAElB,CAAC,UAAD,EAAa,WAAb,CAFkB,EAGlB,CAAC,YAAD,EAAe,aAAf,CAHkB,CAAR,CAAZ;IAKA,WAAWjG,IAAX,IAAmBC,MAAA,CAAOC,IAAP,CAAYzJ,IAAA,CAAKoJ,OAAjB,CAAnB,EAA8C;MAC5C,MAAM7B,MAAA,GAAS/J,GAAA,CAAIiS,GAAJ,CAAQlG,IAAR,CAAf;MACA,IAAI,CAAChC,MAAL,EAAa;QACX;MADW;MAGboG,IAAA,CAAKpG,MAAL,IAAe,MAAM;QACnB,KAAKjE,WAAL,CAAiBgK,QAAjB,EAA2BC,QAA3B,CAAoC,wBAApC,EAA8D;UAC5DC,MAAA,EAAQ,IADoD;UAE5D9F,MAAA,EAAQ;YACN3C,EAAA,EAAI/E,IAAA,CAAK+E,EADH;YAENwE;UAFM;QAFoD,CAA9D;QAOA,OAAO,KAAP;MARmB,CAArB;IAL4C;IAiB9C,IAAI,CAACoE,IAAA,CAAKqB,OAAV,EAAmB;MACjBrB,IAAA,CAAKqB,OAAL,GAAe,MAAM,KAArB;IADiB;IAGnB,KAAK,CAAAJ,eAAL;EA3BwB;EA8B1BD,qBAAqBhB,IAArB,EAA2Be,SAA3B,EAAsC;IACpC,MAAMgB,gBAAA,GAAmB/B,IAAA,CAAKqB,OAA9B;IACA,IAAI,CAACU,gBAAL,EAAuB;MACrB/B,IAAA,CAAKmB,IAAL,GAAY,KAAKxL,WAAL,CAAiB4L,YAAjB,CAA8B,EAA9B,CAAZ;IADqB;IAGvB,KAAK,CAAAN,eAAL;IAEA,IAAI,CAAC,KAAK9K,aAAV,EAAyB;MACvBjF,aAAA,CACG,2DAAD,GACE,uDAFJ;MAIA,IAAI,CAAC6Q,gBAAL,EAAuB;QACrB/B,IAAA,CAAKqB,OAAL,GAAe,MAAM,KAArB;MADqB;MAGvB;IARuB;IAWzBrB,IAAA,CAAKqB,OAAL,GAAe,MAAM;MACnBU,gBAAA;MAEA,MAAM;QACJ5D,MAAA,EAAQ6D,eADJ;QAEJC,IAAA,EAAMC,aAFF;QAGJC;MAHI,IAIFpB,SAJJ;MAMA,MAAMqB,SAAA,GAAY,EAAlB;MACA,IAAIJ,eAAA,CAAgBpF,MAAhB,KAA2B,CAA3B,IAAgCsF,aAAA,CAActF,MAAd,KAAyB,CAA7D,EAAgE;QAC9D,MAAMyF,QAAA,GAAW,IAAIC,GAAJ,CAAQJ,aAAR,CAAjB;QACA,WAAWK,SAAX,IAAwBP,eAAxB,EAAyC;UACvC,MAAM7D,MAAA,GAAS,KAAKhI,aAAL,CAAmBoM,SAAnB,KAAiC,EAAhD;UACA,WAAW;YAAEnL;UAAF,CAAX,IAAqB+G,MAArB,EAA6B;YAC3BkE,QAAA,CAAS1K,GAAT,CAAaP,EAAb;UAD2B;QAFU;QAMzC,WAAW+G,MAAX,IAAqBtC,MAAA,CAAO2G,MAAP,CAAc,KAAKrM,aAAnB,CAArB,EAAwD;UACtD,WAAWsM,KAAX,IAAoBtE,MAApB,EAA4B;YAC1B,IAAIkE,QAAA,CAAS5D,GAAT,CAAagE,KAAA,CAAMrL,EAAnB,MAA2B+K,OAA/B,EAAwC;cACtCC,SAAA,CAAU5E,IAAV,CAAeiF,KAAf;YADsC;UADd;QAD0B;MARM,CAAhE,MAeO;QACL,WAAWtE,MAAX,IAAqBtC,MAAA,CAAO2G,MAAP,CAAc,KAAKrM,aAAnB,CAArB,EAAwD;UACtDiM,SAAA,CAAU5E,IAAV,CAAe,GAAGW,MAAlB;QADsD;MADnD;MAMP,MAAMuE,OAAA,GAAU,KAAK1M,iBAArB;MACA,MAAM2M,MAAA,GAAS,EAAf;MACA,WAAWF,KAAX,IAAoBL,SAApB,EAA+B;QAC7B,MAAM;UAAEhL;QAAF,IAASqL,KAAf;QACAE,MAAA,CAAOnF,IAAP,CAAYpG,EAAZ;QACA,QAAQqL,KAAA,CAAMG,IAAd;UACE,KAAK,MAAL;YAAa;cACX,MAAMC,KAAA,GAAQJ,KAAA,CAAMK,YAAN,IAAsB,EAApC;cACAJ,OAAA,CAAQvI,QAAR,CAAiB/C,EAAjB,EAAqB;gBAAEyL;cAAF,CAArB;cACA;YAHW;UAKb,KAAK,UAAL;UACA,KAAK,aAAL;YAAoB;cAClB,MAAMA,KAAA,GAAQJ,KAAA,CAAMK,YAAN,KAAuBL,KAAA,CAAMpE,YAA3C;cACAqE,OAAA,CAAQvI,QAAR,CAAiB/C,EAAjB,EAAqB;gBAAEyL;cAAF,CAArB;cACA;YAHkB;UAKpB,KAAK,UAAL;UACA,KAAK,SAAL;YAAgB;cACd,MAAMA,KAAA,GAAQJ,KAAA,CAAMK,YAAN,IAAsB,EAApC;cACAJ,OAAA,CAAQvI,QAAR,CAAiB/C,EAAjB,EAAqB;gBAAEyL;cAAF,CAArB;cACA;YAHc;UAKhB;YACE;QAnBJ;QAsBA,MAAMtE,UAAA,GAAatH,QAAA,CAASuH,aAAT,CAAwB,qBAAoBpH,EAAG,IAA/C,CAAnB;QACA,IAAI,CAACmH,UAAL,EAAiB;UACf;QADe,CAAjB,MAEO,IAAI,CAAC5M,oBAAA,CAAqB8M,GAArB,CAAyBF,UAAzB,CAAL,EAA2C;UAChDrN,aAAA,CAAM,+CAA8CkG,EAA/C,EAAL;UACA;QAFgD;QAIlDmH,UAAA,CAAWwE,aAAX,CAAyB,IAAIC,KAAJ,CAAU,WAAV,CAAzB;MAhC6B;MAmC/B,IAAI,KAAK/M,eAAT,EAA0B;QAExB,KAAKN,WAAL,CAAiBgK,QAAjB,EAA2BC,QAA3B,CAAoC,wBAApC,EAA8D;UAC5DC,MAAA,EAAQ,IADoD;UAE5D9F,MAAA,EAAQ;YACN3C,EAAA,EAAI,KADE;YAEN6L,GAAA,EAAKN,MAFC;YAGN/G,IAAA,EAAM;UAHA;QAFoD,CAA9D;MAFwB;MAY1B,OAAO,KAAP;IAhFmB,CAArB;EAlBoC;AA9Kc;AAqRtD,MAAMlJ,qBAAN,SAAoC0C,iBAApC,CAAsD;EACpDE,YAAYnD,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAAEoD,YAAA,EAAc;IAAhB,CAAlB;EADsB;EAIxByI,OAAA,EAAS;IACP,KAAK1H,SAAL,CAAeoB,SAAf,CAAyBC,GAAzB,CAA6B,gBAA7B;IAEA,MAAMuL,KAAA,GAAQjM,QAAA,CAASC,aAAT,CAAuB,KAAvB,CAAd;IACAgM,KAAA,CAAMC,GAAN,GACE,KAAKtN,kBAAL,GACA,aADA,GAEA,KAAKxD,IAAL,CAAUuJ,IAAV,CAAewH,WAAf,EAFA,GAGA,MAJF;IAKAF,KAAA,CAAM/L,YAAN,CAAmB,cAAnB,EAAmC,4BAAnC;IACA+L,KAAA,CAAM/L,YAAN,CACE,gBADF,EAEEkM,IAAA,CAAKC,SAAL,CAAe;MAAEV,IAAA,EAAM,KAAKvQ,IAAL,CAAUuJ;IAAlB,CAAf,CAFF;IAKA,IAAI,CAAC,KAAKvJ,IAAL,CAAUmF,QAAX,IAAuB,KAAKV,YAAhC,EAA8C;MAC5C,KAAK4G,YAAL;IAD4C;IAI9C,KAAKpH,SAAL,CAAe8G,MAAf,CAAsB8F,KAAtB;IACA,OAAO,KAAK5M,SAAZ;EApBO;AAL2C;AA6BtD,MAAMjD,uBAAN,SAAsC+B,iBAAtC,CAAwD;EACtD4I,OAAA,EAAS;IAEP,IAAI,KAAK3L,IAAL,CAAUkR,eAAd,EAA+B;MAC7B,KAAKjN,SAAL,CAAewE,KAAf,GAAuB,KAAKzI,IAAL,CAAUkR,eAAjC;IAD6B;IAI/B,OAAO,KAAKjN,SAAZ;EANO;EASTkN,yBAAyBvH,OAAzB,EAAkC;IAChC,IAAI,KAAK5J,IAAL,CAAU6F,YAAd,EAA4B;MAC1B,IAAI+D,OAAA,CAAQwH,eAAR,EAAyBC,QAAzB,KAAsC,QAA1C,EAAoD;QAClDzH,OAAA,CAAQwH,eAAR,CAAwBpJ,MAAxB,GAAiC,IAAjC;MADkD;MAGpD4B,OAAA,CAAQ5B,MAAR,GAAiB,KAAjB;IAJ0B;EADI;EASlCsJ,gBAAgB7J,KAAhB,EAAuB;IACrB,OAAOjJ,gBAAA,CAAY+S,QAAZ,CAAqBC,KAArB,GAA6B/J,KAAA,CAAMgK,OAAnC,GAA6ChK,KAAA,CAAMiK,OAA1D;EADqB;EAIvBC,kBAAkB/H,OAAlB,EAA2BgI,WAA3B,EAAwCC,QAAxC,EAAkDC,SAAlD,EAA6DC,WAA7D,EAA0E;IACxE,IAAIF,QAAA,CAASG,QAAT,CAAkB,OAAlB,CAAJ,EAAgC;MAE9BpI,OAAA,CAAQyD,gBAAR,CAAyBwE,QAAzB,EAAmCpK,KAAA,IAAS;QAC1C,KAAKnE,WAAL,CAAiBgK,QAAjB,EAA2BC,QAA3B,CAAoC,wBAApC,EAA8D;UAC5DC,MAAA,EAAQ,IADoD;UAE5D9F,MAAA,EAAQ;YACN3C,EAAA,EAAI,KAAK/E,IAAL,CAAU+E,EADR;YAENwE,IAAA,EAAMuI,SAFA;YAGNtB,KAAA,EAAOuB,WAAA,CAAYtK,KAAZ,CAHD;YAINwK,KAAA,EAAOxK,KAAA,CAAMyK,QAJP;YAKNC,QAAA,EAAU,KAAKb,eAAL,CAAqB7J,KAArB;UALJ;QAFoD,CAA9D;MAD0C,CAA5C;IAF8B,CAAhC,MAcO;MAELmC,OAAA,CAAQyD,gBAAR,CAAyBwE,QAAzB,EAAmCpK,KAAA,IAAS;QAC1C,IAAIoK,QAAA,KAAa,MAAjB,EAAyB;UACvB,IAAI,CAACD,WAAA,CAAYQ,OAAb,IAAwB,CAAC3K,KAAA,CAAM4K,aAAnC,EAAkD;YAChD;UADgD;UAGlDT,WAAA,CAAYQ,OAAZ,GAAsB,KAAtB;QAJuB,CAAzB,MAKO,IAAIP,QAAA,KAAa,OAAjB,EAA0B;UAC/B,IAAID,WAAA,CAAYQ,OAAhB,EAAyB;YACvB;UADuB;UAGzBR,WAAA,CAAYQ,OAAZ,GAAsB,IAAtB;QAJ+B;QAOjC,IAAI,CAACL,WAAL,EAAkB;UAChB;QADgB;QAIlB,KAAKzO,WAAL,CAAiBgK,QAAjB,EAA2BC,QAA3B,CAAoC,wBAApC,EAA8D;UAC5DC,MAAA,EAAQ,IADoD;UAE5D9F,MAAA,EAAQ;YACN3C,EAAA,EAAI,KAAK/E,IAAL,CAAU+E,EADR;YAENwE,IAAA,EAAMuI,SAFA;YAGNtB,KAAA,EAAOuB,WAAA,CAAYtK,KAAZ;UAHD;QAFoD,CAA9D;MAjB0C,CAA5C;IAFK;EAfiE;EA8C1E6K,mBAAmB1I,OAAnB,EAA4BgI,WAA5B,EAAyCW,KAAzC,EAAgDC,MAAhD,EAAwD;IACtD,WAAW,CAACX,QAAD,EAAWC,SAAX,CAAX,IAAoCS,KAApC,EAA2C;MACzC,IAAIT,SAAA,KAAc,QAAd,IAA0B,KAAK9R,IAAL,CAAUoJ,OAAV,GAAoB0I,SAApB,CAA9B,EAA8D;QAC5D,IAAIA,SAAA,KAAc,OAAd,IAAyBA,SAAA,KAAc,MAA3C,EAAmD;UACjDF,WAAA,KAAgB;YAAEQ,OAAA,EAAS;UAAX,CAAhB;QADiD;QAGnD,KAAKT,iBAAL,CACE/H,OADF,EAEEgI,WAFF,EAGEC,QAHF,EAIEC,SAJF,EAKEU,MALF;QAOA,IAAIV,SAAA,KAAc,OAAd,IAAyB,CAAC,KAAK9R,IAAL,CAAUoJ,OAAV,EAAmBqJ,IAAjD,EAAuD;UAErD,KAAKd,iBAAL,CAAuB/H,OAAvB,EAAgCgI,WAAhC,EAA6C,MAA7C,EAAqD,MAArD,EAA6D,IAA7D;QAFqD,CAAvD,MAGO,IAAIE,SAAA,KAAc,MAAd,IAAwB,CAAC,KAAK9R,IAAL,CAAUoJ,OAAV,EAAmBsJ,KAAhD,EAAuD;UAC5D,KAAKf,iBAAL,CAAuB/H,OAAvB,EAAgCgI,WAAhC,EAA6C,OAA7C,EAAsD,OAAtD,EAA+D,IAA/D;QAD4D;MAdF;IADrB;EADW;EAuBxDe,oBAAoB/I,OAApB,EAA6B;IAC3B,MAAMrM,KAAA,GAAQ,KAAKyC,IAAL,CAAU4S,eAAV,IAA6B,IAA3C;IACAhJ,OAAA,CAAQ3E,KAAR,CAAc2N,eAAd,GACErV,KAAA,KAAU,IAAV,GACI,aADJ,GAEIqB,SAAA,CAAKmI,YAAL,CAAkBxJ,KAAA,CAAM,CAAN,CAAlB,EAA4BA,KAAA,CAAM,CAAN,CAA5B,EAAsCA,KAAA,CAAM,CAAN,CAAtC,CAHN;EAF2B;EAe7BsV,cAAcjJ,OAAd,EAAuB;IACrB,MAAMkJ,cAAA,GAAiB,CAAC,MAAD,EAAS,QAAT,EAAmB,OAAnB,CAAvB;IACA,MAAM;MAAEC;IAAF,IAAgB,KAAK/S,IAAL,CAAUgT,qBAAhC;IACA,MAAMC,QAAA,GACJ,KAAKjT,IAAL,CAAUgT,qBAAV,CAAgCC,QAAhC,IAA4C5T,iBAD9C;IAGA,MAAM4F,KAAA,GAAQ2E,OAAA,CAAQ3E,KAAtB;IAWA,IAAIiO,gBAAJ;IACA,MAAMC,WAAA,GAAc,CAApB;IACA,MAAMC,iBAAA,GAAoB9W,CAAA,IAAKP,IAAA,CAAKsX,KAAL,CAAW,KAAK/W,CAAhB,IAAqB,EAApD;IACA,IAAI,KAAK0D,IAAL,CAAUsT,SAAd,EAAyB;MACvB,MAAM3T,MAAA,GAAS5D,IAAA,CAAKwX,GAAL,CACb,KAAKvT,IAAL,CAAUP,IAAV,CAAe,CAAf,IAAoB,KAAKO,IAAL,CAAUP,IAAV,CAAe,CAAf,CAApB,GAAwC0T,WAD3B,CAAf;MAGA,MAAMK,aAAA,GAAgBzX,IAAA,CAAKsX,KAAL,CAAW1T,MAAA,IAAUlB,gBAAA,GAAcwU,QAAd,CAArB,KAAiD,CAAvE;MACA,MAAMQ,UAAA,GAAa9T,MAAA,GAAS6T,aAA5B;MACAN,gBAAA,GAAmBnX,IAAA,CAAKG,GAAL,CACjB+W,QADiB,EAEjBG,iBAAA,CAAkBK,UAAA,GAAahV,gBAA/B,CAFiB,CAAnB;IANuB,CAAzB,MAUO;MACL,MAAMkB,MAAA,GAAS5D,IAAA,CAAKwX,GAAL,CACb,KAAKvT,IAAL,CAAUP,IAAV,CAAe,CAAf,IAAoB,KAAKO,IAAL,CAAUP,IAAV,CAAe,CAAf,CAApB,GAAwC0T,WAD3B,CAAf;MAGAD,gBAAA,GAAmBnX,IAAA,CAAKG,GAAL,CACjB+W,QADiB,EAEjBG,iBAAA,CAAkBzT,MAAA,GAASlB,gBAA3B,CAFiB,CAAnB;IAJK;IASPwG,KAAA,CAAMgO,QAAN,GAAkB,QAAOC,gBAAiB,2BAA1C;IAEAjO,KAAA,CAAM1H,KAAN,GAAcqB,SAAA,CAAKmI,YAAL,CAAkBgM,SAAA,CAAU,CAAV,CAAlB,EAAgCA,SAAA,CAAU,CAAV,CAAhC,EAA8CA,SAAA,CAAU,CAAV,CAA9C,CAAd;IAEA,IAAI,KAAK/S,IAAL,CAAU0T,aAAV,KAA4B,IAAhC,EAAsC;MACpCzO,KAAA,CAAM0O,SAAN,GAAkBb,cAAA,CAAe,KAAK9S,IAAL,CAAU0T,aAAzB,CAAlB;IADoC;EA3CjB;EAgDvB7K,aAAae,OAAb,EAAsBgK,UAAtB,EAAkC;IAChC,IAAIA,UAAJ,EAAgB;MACdhK,OAAA,CAAQ9E,YAAR,CAAqB,UAArB,EAAiC,IAAjC;IADc,CAAhB,MAEO;MACL8E,OAAA,CAAQiK,eAAR,CAAwB,UAAxB;IADK;IAGPjK,OAAA,CAAQ9E,YAAR,CAAqB,eAArB,EAAsC8O,UAAtC;EANgC;AA3JoB;AAqKxD,MAAMpT,2BAAN,SAA0CQ,uBAA1C,CAAkE;EAChEiC,YAAYnD,UAAZ,EAAwB;IACtB,MAAMoD,YAAA,GACJpD,UAAA,CAAW2D,WAAX,IACA3D,UAAA,CAAWE,IAAX,CAAgB6F,YADhB,IAEC,CAAC/F,UAAA,CAAWE,IAAX,CAAgB8T,aAAjB,IAAkC,CAAC,CAAChU,UAAA,CAAWE,IAAX,CAAgB+T,UAHvD;IAIA,MAAMjU,UAAN,EAAkB;MAAEoD;IAAF,CAAlB;EALsB;EAQxB8Q,sBAAsBC,IAAtB,EAA4BC,GAA5B,EAAiC1D,KAAjC,EAAwC2D,YAAxC,EAAsD;IACpD,MAAM9D,OAAA,GAAU,KAAK1M,iBAArB;IACA,WAAWiG,OAAX,IAAsB,KAAKgC,kBAAL,CACpBqI,IAAA,CAAK1K,IADe,EAEL0K,IAAA,CAAKlP,EAFA,CAAtB,EAGG;MACD,IAAI6E,OAAA,CAAQsC,UAAZ,EAAwB;QACtBtC,OAAA,CAAQsC,UAAR,CAAmBgI,GAAnB,IAA0B1D,KAA1B;MADsB;MAGxBH,OAAA,CAAQvI,QAAR,CAAiB8B,OAAA,CAAQ7E,EAAzB,EAA6B;QAAE,CAACoP,YAAD,GAAgB3D;MAAlB,CAA7B;IAJC;EALiD;EAatD7E,OAAA,EAAS;IACP,MAAM0E,OAAA,GAAU,KAAK1M,iBAArB;IACA,MAAMoB,EAAA,GAAK,KAAK/E,IAAL,CAAU+E,EAArB;IAEA,KAAKd,SAAL,CAAeoB,SAAf,CAAyBC,GAAzB,CAA6B,sBAA7B;IAEA,IAAIsE,OAAA,GAAU,IAAd;IACA,IAAI,KAAKnG,WAAT,EAAsB;MAIpB,MAAMoG,UAAA,GAAawG,OAAA,CAAQ+D,QAAR,CAAiBrP,EAAjB,EAAqB;QACtCyL,KAAA,EAAO,KAAKxQ,IAAL,CAAU+T;MADqB,CAArB,CAAnB;MAGA,IAAIM,WAAA,GAAcxK,UAAA,CAAW2G,KAAX,IAAoB,EAAtC;MACA,MAAM8D,MAAA,GAASjE,OAAA,CAAQ+D,QAAR,CAAiBrP,EAAjB,EAAqB;QAClCwP,SAAA,EAAW,KAAKvU,IAAL,CAAUsU;MADa,CAArB,EAEZC,SAFH;MAGA,IAAID,MAAA,IAAUD,WAAA,CAAY9J,MAAZ,GAAqB+J,MAAnC,EAA2C;QACzCD,WAAA,GAAcA,WAAA,CAAYnW,KAAZ,CAAkB,CAAlB,EAAqBoW,MAArB,CAAd;MADyC;MAI3C,IAAIE,oBAAA,GACF3K,UAAA,CAAW4K,cAAX,IAA6B,KAAKzU,IAAL,CAAUqU,WAAV,EAAuB3W,IAAvB,CAA4B,IAA5B,CAA7B,IAAkE,IADpE;MAEA,IAAI8W,oBAAA,IAAwB,KAAKxU,IAAL,CAAU0U,IAAtC,EAA4C;QAC1CF,oBAAA,GAAuBA,oBAAA,CAAqBG,UAArB,CAAgC,MAAhC,EAAwC,EAAxC,CAAvB;MAD0C;MAI5C,MAAM/C,WAAA,GAAc;QAClBgD,SAAA,EAAWP,WADO;QAElBI,cAAA,EAAgBD,oBAFE;QAGlBK,kBAAA,EAAoB,IAHF;QAIlBC,SAAA,EAAW,CAJO;QAKlB1C,OAAA,EAAS;MALS,CAApB;MAQA,IAAI,KAAKpS,IAAL,CAAUsT,SAAd,EAAyB;QACvB1J,OAAA,GAAUhF,QAAA,CAASC,aAAT,CAAuB,UAAvB,CAAV;QACA+E,OAAA,CAAQyK,WAAR,GAAsBG,oBAAA,IAAwBH,WAA9C;QACA,IAAI,KAAKrU,IAAL,CAAU+U,WAAd,EAA2B;UACzBnL,OAAA,CAAQ3E,KAAR,CAAc+P,SAAd,GAA0B,QAA1B;QADyB;MAHJ,CAAzB,MAMO;QACLpL,OAAA,GAAUhF,QAAA,CAASC,aAAT,CAAuB,OAAvB,CAAV;QACA+E,OAAA,CAAQ2G,IAAR,GAAe,MAAf;QACA3G,OAAA,CAAQ9E,YAAR,CAAqB,OAArB,EAA8B0P,oBAAA,IAAwBH,WAAtD;QACA,IAAI,KAAKrU,IAAL,CAAU+U,WAAd,EAA2B;UACzBnL,OAAA,CAAQ3E,KAAR,CAAcgQ,SAAd,GAA0B,QAA1B;QADyB;MAJtB;MAQP,IAAI,KAAKjV,IAAL,CAAU6F,YAAd,EAA4B;QAC1B+D,OAAA,CAAQ5B,MAAR,GAAiB,IAAjB;MAD0B;MAG5B1I,oBAAA,CAAqBgG,GAArB,CAAyBsE,OAAzB;MACAA,OAAA,CAAQ9E,YAAR,CAAqB,iBAArB,EAAwCC,EAAxC;MAEA6E,OAAA,CAAQjB,QAAR,GAAmB,KAAK3I,IAAL,CAAUkV,QAA7B;MACAtL,OAAA,CAAQL,IAAR,GAAe,KAAKvJ,IAAL,CAAUkQ,SAAzB;MACAtG,OAAA,CAAQ5E,QAAR,GAAmB5F,iBAAnB;MAEA,KAAKyJ,YAAL,CAAkBe,OAAlB,EAA2B,KAAK5J,IAAL,CAAU4I,QAArC;MAEA,IAAI0L,MAAJ,EAAY;QACV1K,OAAA,CAAQuL,SAAR,GAAoBb,MAApB;MADU;MAIZ1K,OAAA,CAAQyD,gBAAR,CAAyB,OAAzB,EAAkC5F,KAAA,IAAS;QACzC4I,OAAA,CAAQvI,QAAR,CAAiB/C,EAAjB,EAAqB;UAAEyL,KAAA,EAAO/I,KAAA,CAAMI,MAAN,CAAa2I;QAAtB,CAArB;QACA,KAAKwD,qBAAL,CACEpK,OADF,EAEE,OAFF,EAGEnC,KAAA,CAAMI,MAAN,CAAa2I,KAHf,EAIE,OAJF;QAMAoB,WAAA,CAAY6C,cAAZ,GAA6B,IAA7B;MARyC,CAA3C;MAWA7K,OAAA,CAAQyD,gBAAR,CAAyB,WAAzB,EAAsC5F,KAAA,IAAS;QAC7C,MAAMgJ,YAAA,GAAe,KAAKzQ,IAAL,CAAUoV,iBAAV,IAA+B,EAApD;QACAxL,OAAA,CAAQ4G,KAAR,GAAgBoB,WAAA,CAAYgD,SAAZ,GAAwBnE,YAAxC;QACAmB,WAAA,CAAY6C,cAAZ,GAA6B,IAA7B;MAH6C,CAA/C;MAMA,IAAIY,YAAA,GAAe5N,KAAA,IAAS;QAC1B,MAAM;UAAEgN;QAAF,IAAqB7C,WAA3B;QACA,IAAI6C,cAAA,KAAmB,IAAnB,IAA2BA,cAAA,KAAmBa,SAAlD,EAA6D;UAC3D7N,KAAA,CAAMI,MAAN,CAAa2I,KAAb,GAAqBiE,cAArB;QAD2D;QAI7DhN,KAAA,CAAMI,MAAN,CAAa0N,UAAb,GAA0B,CAA1B;MAN0B,CAA5B;MASA,IAAI,KAAK3R,eAAL,IAAwB,KAAKC,YAAjC,EAA+C;QAC7C+F,OAAA,CAAQyD,gBAAR,CAAyB,OAAzB,EAAkC5F,KAAA,IAAS;UACzC,IAAImK,WAAA,CAAYQ,OAAhB,EAAyB;YACvB;UADuB;UAGzB,MAAM;YAAEvK;UAAF,IAAaJ,KAAnB;UACA,IAAImK,WAAA,CAAYgD,SAAhB,EAA2B;YACzB/M,MAAA,CAAO2I,KAAP,GAAeoB,WAAA,CAAYgD,SAA3B;UADyB;UAG3BhD,WAAA,CAAYiD,kBAAZ,GAAiChN,MAAA,CAAO2I,KAAxC;UACAoB,WAAA,CAAYkD,SAAZ,GAAwB,CAAxB;UACA,IAAI,CAAC,KAAK9U,IAAL,CAAUoJ,OAAV,EAAmBsJ,KAAxB,EAA+B;YAC7Bd,WAAA,CAAYQ,OAAZ,GAAsB,IAAtB;UAD6B;QAVU,CAA3C;QAeAxI,OAAA,CAAQyD,gBAAR,CAAyB,mBAAzB,EAA8ChE,OAAA,IAAW;UACvD,KAAK8H,wBAAL,CAA8B9H,OAAA,CAAQxB,MAAtC;UACA,MAAMuB,OAAA,GAAU;YACdoH,MAAM/I,KAAN,EAAa;cACXmK,WAAA,CAAYgD,SAAZ,GAAwBnN,KAAA,CAAMC,MAAN,CAAa8I,KAAb,IAAsB,EAA9C;cACAH,OAAA,CAAQvI,QAAR,CAAiB/C,EAAjB,EAAqB;gBAAEyL,KAAA,EAAOoB,WAAA,CAAYgD,SAAZ,CAAsBzY,QAAtB;cAAT,CAArB;cACAsL,KAAA,CAAMI,MAAN,CAAa2I,KAAb,GAAqBoB,WAAA,CAAYgD,SAAjC;YAHW,CADC;YAMdH,eAAehN,KAAf,EAAsB;cACpB,MAAM;gBAAEgN;cAAF,IAAqBhN,KAAA,CAAMC,MAAjC;cACAkK,WAAA,CAAY6C,cAAZ,GAA6BA,cAA7B;cACA,IACEA,cAAA,KAAmB,IAAnB,IACAA,cAAA,KAAmBa,SADnB,IAEA7N,KAAA,CAAMI,MAAN,KAAiBjD,QAAA,CAAS4Q,aAH5B,EAIE;gBAEA/N,KAAA,CAAMI,MAAN,CAAa2I,KAAb,GAAqBiE,cAArB;cAFA;cAIFpE,OAAA,CAAQvI,QAAR,CAAiB/C,EAAjB,EAAqB;gBACnB0P;cADmB,CAArB;YAXoB,CANR;YAqBdgB,SAAShO,KAAT,EAAgB;cACdA,KAAA,CAAMI,MAAN,CAAa6N,iBAAb,CAA+B,GAAGjO,KAAA,CAAMC,MAAN,CAAa+N,QAA/C;YADc,CArBF;YAwBdlB,SAAA,EAAW9M,KAAA,IAAS;cAClB,MAAM;gBAAE8M;cAAF,IAAgB9M,KAAA,CAAMC,MAA5B;cACA,MAAM;gBAAEG;cAAF,IAAaJ,KAAnB;cACA,IAAI8M,SAAA,KAAc,CAAlB,EAAqB;gBACnB1M,MAAA,CAAOgM,eAAP,CAAuB,WAAvB;gBACA;cAFmB;cAKrBhM,MAAA,CAAO/C,YAAP,CAAoB,WAApB,EAAiCyP,SAAjC;cACA,IAAI/D,KAAA,GAAQoB,WAAA,CAAYgD,SAAxB;cACA,IAAI,CAACpE,KAAD,IAAUA,KAAA,CAAMjG,MAAN,IAAgBgK,SAA9B,EAAyC;gBACvC;cADuC;cAGzC/D,KAAA,GAAQA,KAAA,CAAMtS,KAAN,CAAY,CAAZ,EAAeqW,SAAf,CAAR;cACA1M,MAAA,CAAO2I,KAAP,GAAeoB,WAAA,CAAYgD,SAAZ,GAAwBpE,KAAvC;cACAH,OAAA,CAAQvI,QAAR,CAAiB/C,EAAjB,EAAqB;gBAAEyL;cAAF,CAArB;cAEA,KAAKlN,WAAL,CAAiBgK,QAAjB,EAA2BC,QAA3B,CAAoC,wBAApC,EAA8D;gBAC5DC,MAAA,EAAQ,IADoD;gBAE5D9F,MAAA,EAAQ;kBACN3C,EADM;kBAENwE,IAAA,EAAM,WAFA;kBAGNiH,KAHM;kBAINmF,UAAA,EAAY,IAJN;kBAKNb,SAAA,EAAW,CALL;kBAMNc,QAAA,EAAU/N,MAAA,CAAOgO,cANX;kBAONC,MAAA,EAAQjO,MAAA,CAAOkO;gBAPT;cAFoD,CAA9D;YAjBkB;UAxBN,CAAhB;UAuDA,KAAK5M,yBAAL,CAA+BC,OAA/B,EAAwCC,OAAxC;QAzDuD,CAAzD;QA8DAO,OAAA,CAAQyD,gBAAR,CAAyB,SAAzB,EAAoC5F,KAAA,IAAS;UAC3CmK,WAAA,CAAYkD,SAAZ,GAAwB,CAAxB;UAGA,IAAIA,SAAA,GAAY,CAAC,CAAjB;UACA,IAAIrN,KAAA,CAAMyM,GAAN,KAAc,QAAlB,EAA4B;YAC1BY,SAAA,GAAY,CAAZ;UAD0B,CAA5B,MAEO,IAAIrN,KAAA,CAAMyM,GAAN,KAAc,OAAd,IAAyB,CAAC,KAAKlU,IAAL,CAAUsT,SAAxC,EAAmD;YAIxDwB,SAAA,GAAY,CAAZ;UAJwD,CAAnD,MAKA,IAAIrN,KAAA,CAAMyM,GAAN,KAAc,KAAlB,EAAyB;YAC9BtC,WAAA,CAAYkD,SAAZ,GAAwB,CAAxB;UAD8B;UAGhC,IAAIA,SAAA,KAAc,CAAC,CAAnB,EAAsB;YACpB;UADoB;UAGtB,MAAM;YAAEtE;UAAF,IAAY/I,KAAA,CAAMI,MAAxB;UACA,IAAI+J,WAAA,CAAYiD,kBAAZ,KAAmCrE,KAAvC,EAA8C;YAC5C;UAD4C;UAG9CoB,WAAA,CAAYiD,kBAAZ,GAAiCrE,KAAjC;UAEAoB,WAAA,CAAYgD,SAAZ,GAAwBpE,KAAxB;UACA,KAAKlN,WAAL,CAAiBgK,QAAjB,EAA2BC,QAA3B,CAAoC,wBAApC,EAA8D;YAC5DC,MAAA,EAAQ,IADoD;YAE5D9F,MAAA,EAAQ;cACN3C,EADM;cAENwE,IAAA,EAAM,WAFA;cAGNiH,KAHM;cAINmF,UAAA,EAAY,IAJN;cAKNb,SALM;cAMNc,QAAA,EAAUnO,KAAA,CAAMI,MAAN,CAAagO,cANjB;cAONC,MAAA,EAAQrO,KAAA,CAAMI,MAAN,CAAakO;YAPf;UAFoD,CAA9D;QAzB2C,CAA7C;QAsCA,MAAMC,aAAA,GAAgBX,YAAtB;QACAA,YAAA,GAAe,IAAf;QACAzL,OAAA,CAAQyD,gBAAR,CAAyB,MAAzB,EAAiC5F,KAAA,IAAS;UACxC,IAAI,CAACmK,WAAA,CAAYQ,OAAb,IAAwB,CAAC3K,KAAA,CAAM4K,aAAnC,EAAkD;YAChD;UADgD;UAGlD,IAAI,CAAC,KAAKrS,IAAL,CAAUoJ,OAAV,EAAmBqJ,IAAxB,EAA8B;YAC5Bb,WAAA,CAAYQ,OAAZ,GAAsB,KAAtB;UAD4B;UAG9B,MAAM;YAAE5B;UAAF,IAAY/I,KAAA,CAAMI,MAAxB;UACA+J,WAAA,CAAYgD,SAAZ,GAAwBpE,KAAxB;UACA,IAAIoB,WAAA,CAAYiD,kBAAZ,KAAmCrE,KAAvC,EAA8C;YAC5C,KAAKlN,WAAL,CAAiBgK,QAAjB,EAA2BC,QAA3B,CAAoC,wBAApC,EAA8D;cAC5DC,MAAA,EAAQ,IADoD;cAE5D9F,MAAA,EAAQ;gBACN3C,EADM;gBAENwE,IAAA,EAAM,WAFA;gBAGNiH,KAHM;gBAINmF,UAAA,EAAY,IAJN;gBAKNb,SAAA,EAAWlD,WAAA,CAAYkD,SALjB;gBAMNc,QAAA,EAAUnO,KAAA,CAAMI,MAAN,CAAagO,cANjB;gBAONC,MAAA,EAAQrO,KAAA,CAAMI,MAAN,CAAakO;cAPf;YAFoD,CAA9D;UAD4C;UAc9CC,aAAA,CAAcvO,KAAd;QAvBwC,CAA1C;QA0BA,IAAI,KAAKzH,IAAL,CAAUoJ,OAAV,EAAmB6M,SAAvB,EAAkC;UAChCrM,OAAA,CAAQyD,gBAAR,CAAyB,aAAzB,EAAwC5F,KAAA,IAAS;YAC/CmK,WAAA,CAAYiD,kBAAZ,GAAiC,IAAjC;YACA,MAAM;cAAE7U,IAAF;cAAQ6H;YAAR,IAAmBJ,KAAzB;YACA,MAAM;cAAE+I,KAAF;cAASqF,cAAT;cAAyBE;YAAzB,IAA0ClO,MAAhD;YAEA,IAAI+N,QAAA,GAAWC,cAAf;cACEC,MAAA,GAASC,YADX;YAGA,QAAQtO,KAAA,CAAMyO,SAAd;cAEE,KAAK,oBAAL;gBAA2B;kBACzB,MAAMC,KAAA,GAAQ3F,KAAA,CACX4F,SADW,CACD,CADC,EACEP,cADF,EAEXM,KAFW,CAEL,YAFK,CAAd;kBAGA,IAAIA,KAAJ,EAAW;oBACTP,QAAA,IAAYO,KAAA,CAAM,CAAN,EAAS5L,MAArB;kBADS;kBAGX;gBAPyB;cAS3B,KAAK,mBAAL;gBAA0B;kBACxB,MAAM4L,KAAA,GAAQ3F,KAAA,CACX4F,SADW,CACDP,cADC,EAEXM,KAFW,CAEL,YAFK,CAAd;kBAGA,IAAIA,KAAJ,EAAW;oBACTL,MAAA,IAAUK,KAAA,CAAM,CAAN,EAAS5L,MAAnB;kBADS;kBAGX;gBAPwB;cAS1B,KAAK,uBAAL;gBACE,IAAIsL,cAAA,KAAmBE,YAAvB,EAAqC;kBACnCH,QAAA,IAAY,CAAZ;gBADmC;gBAGrC;cACF,KAAK,sBAAL;gBACE,IAAIC,cAAA,KAAmBE,YAAvB,EAAqC;kBACnCD,MAAA,IAAU,CAAV;gBADmC;gBAGrC;YA7BJ;YAiCArO,KAAA,CAAM4O,cAAN;YACA,KAAK/S,WAAL,CAAiBgK,QAAjB,EAA2BC,QAA3B,CAAoC,wBAApC,EAA8D;cAC5DC,MAAA,EAAQ,IADoD;cAE5D9F,MAAA,EAAQ;gBACN3C,EADM;gBAENwE,IAAA,EAAM,WAFA;gBAGNiH,KAHM;gBAIN8F,MAAA,EAAQtW,IAAA,IAAQ,EAJV;gBAKN2V,UAAA,EAAY,KALN;gBAMNC,QANM;gBAONE;cAPM;YAFoD,CAA9D;UA1C+C,CAAjD;QADgC;QA0DlC,KAAKxD,kBAAL,CACE1I,OADF,EAEEgI,WAFF,EAGE,CACE,CAAC,OAAD,EAAU,OAAV,CADF,EAEE,CAAC,MAAD,EAAS,MAAT,CAFF,EAGE,CAAC,WAAD,EAAc,YAAd,CAHF,EAIE,CAAC,YAAD,EAAe,aAAf,CAJF,EAKE,CAAC,YAAD,EAAe,YAAf,CALF,EAME,CAAC,SAAD,EAAY,UAAZ,CANF,CAHF,EAWEnK,KAAA,IAASA,KAAA,CAAMI,MAAN,CAAa2I,KAXxB;MA1M6C;MAyN/C,IAAI6E,YAAJ,EAAkB;QAChBzL,OAAA,CAAQyD,gBAAR,CAAyB,MAAzB,EAAiCgI,YAAjC;MADgB;MAIlB,IAAI,KAAKrV,IAAL,CAAU0U,IAAd,EAAoB;QAClB,MAAM6B,UAAA,GAAa,KAAKvW,IAAL,CAAUP,IAAV,CAAe,CAAf,IAAoB,KAAKO,IAAL,CAAUP,IAAV,CAAe,CAAf,CAAvC;QACA,MAAM+W,SAAA,GAAYD,UAAA,GAAajC,MAA/B;QAEA1K,OAAA,CAAQvE,SAAR,CAAkBC,GAAlB,CAAsB,MAAtB;QACAsE,OAAA,CAAQ3E,KAAR,CAAcwR,aAAd,GAA+B,QAAOD,SAAU,iCAAhD;MALkB;IAlTA,CAAtB,MAyTO;MACL5M,OAAA,GAAUhF,QAAA,CAASC,aAAT,CAAuB,KAAvB,CAAV;MACA+E,OAAA,CAAQyK,WAAR,GAAsB,KAAKrU,IAAL,CAAU+T,UAAhC;MACAnK,OAAA,CAAQ3E,KAAR,CAAcyR,aAAd,GAA8B,QAA9B;MACA9M,OAAA,CAAQ3E,KAAR,CAAc8C,OAAd,GAAwB,YAAxB;MAEA,IAAI,KAAK/H,IAAL,CAAU6F,YAAd,EAA4B;QAC1B+D,OAAA,CAAQ5B,MAAR,GAAiB,IAAjB;MAD0B;IANvB;IAWP,KAAK6K,aAAL,CAAmBjJ,OAAnB;IACA,KAAK+I,mBAAL,CAAyB/I,OAAzB;IACA,KAAKD,2BAAL,CAAiCC,OAAjC;IAEA,KAAK3F,SAAL,CAAe8G,MAAf,CAAsBnB,OAAtB;IACA,OAAO,KAAK3F,SAAZ;EAhVO;AAtBuD;AA0WlE,MAAMlD,gCAAN,SAA+CC,uBAA/C,CAAuE;EACrEiC,YAAYnD,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAAEoD,YAAA,EAAc,CAAC,CAACpD,UAAA,CAAWE,IAAX,CAAgB6F;IAAlC,CAAlB;EADsB;AAD6C;AAMvE,MAAMjF,+BAAN,SAA8CI,uBAA9C,CAAsE;EACpEiC,YAAYnD,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAAEoD,YAAA,EAAcpD,UAAA,CAAW2D;IAA3B,CAAlB;EADsB;EAIxBkI,OAAA,EAAS;IACP,MAAM0E,OAAA,GAAU,KAAK1M,iBAArB;IACA,MAAM3D,IAAA,GAAO,KAAKA,IAAlB;IACA,MAAM+E,EAAA,GAAK/E,IAAA,CAAK+E,EAAhB;IACA,IAAIyL,KAAA,GAAQH,OAAA,CAAQ+D,QAAR,CAAiBrP,EAAjB,EAAqB;MAC/ByL,KAAA,EAAOxQ,IAAA,CAAKiM,WAAL,KAAqBjM,IAAA,CAAK+T;IADF,CAArB,EAETvD,KAFH;IAGA,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;MAE7BA,KAAA,GAAQA,KAAA,KAAU,KAAlB;MACAH,OAAA,CAAQvI,QAAR,CAAiB/C,EAAjB,EAAqB;QAAEyL;MAAF,CAArB;IAH6B;IAM/B,KAAKvM,SAAL,CAAeoB,SAAf,CAAyBC,GAAzB,CAA6B,wBAA7B,EAAuD,UAAvD;IAEA,MAAMsE,OAAA,GAAUhF,QAAA,CAASC,aAAT,CAAuB,OAAvB,CAAhB;IACAvF,oBAAA,CAAqBgG,GAArB,CAAyBsE,OAAzB;IACAA,OAAA,CAAQ9E,YAAR,CAAqB,iBAArB,EAAwCC,EAAxC;IAEA6E,OAAA,CAAQjB,QAAR,GAAmB3I,IAAA,CAAKkV,QAAxB;IACA,KAAKrM,YAAL,CAAkBe,OAAlB,EAA2B,KAAK5J,IAAL,CAAU4I,QAArC;IACAgB,OAAA,CAAQ2G,IAAR,GAAe,UAAf;IACA3G,OAAA,CAAQL,IAAR,GAAevJ,IAAA,CAAKkQ,SAApB;IACA,IAAIM,KAAJ,EAAW;MACT5G,OAAA,CAAQ9E,YAAR,CAAqB,SAArB,EAAgC,IAAhC;IADS;IAGX8E,OAAA,CAAQ9E,YAAR,CAAqB,aAArB,EAAoC9E,IAAA,CAAKiM,WAAzC;IACArC,OAAA,CAAQ5E,QAAR,GAAmB5F,iBAAnB;IAEAwK,OAAA,CAAQyD,gBAAR,CAAyB,QAAzB,EAAmC5F,KAAA,IAAS;MAC1C,MAAM;QAAE8B,IAAF;QAAQoN;MAAR,IAAoBlP,KAAA,CAAMI,MAAhC;MACA,WAAW+O,QAAX,IAAuB,KAAKhL,kBAAL,CAAwBrC,IAAxB,EAA6CxE,EAA7C,CAAvB,EAAyE;QACvE,MAAM8R,UAAA,GAAaF,OAAA,IAAWC,QAAA,CAAS3K,WAAT,KAAyBjM,IAAA,CAAKiM,WAA5D;QACA,IAAI2K,QAAA,CAAS1K,UAAb,EAAyB;UACvB0K,QAAA,CAAS1K,UAAT,CAAoByK,OAApB,GAA8BE,UAA9B;QADuB;QAGzBxG,OAAA,CAAQvI,QAAR,CAAiB8O,QAAA,CAAS7R,EAA1B,EAA8B;UAAEyL,KAAA,EAAOqG;QAAT,CAA9B;MALuE;MAOzExG,OAAA,CAAQvI,QAAR,CAAiB/C,EAAjB,EAAqB;QAAEyL,KAAA,EAAOmG;MAAT,CAArB;IAT0C,CAA5C;IAYA/M,OAAA,CAAQyD,gBAAR,CAAyB,WAAzB,EAAsC5F,KAAA,IAAS;MAC7C,MAAMgJ,YAAA,GAAezQ,IAAA,CAAKoV,iBAAL,IAA0B,KAA/C;MACA3N,KAAA,CAAMI,MAAN,CAAa8O,OAAb,GAAuBlG,YAAA,KAAiBzQ,IAAA,CAAKiM,WAA7C;IAF6C,CAA/C;IAKA,IAAI,KAAKrI,eAAL,IAAwB,KAAKC,YAAjC,EAA+C;MAC7C+F,OAAA,CAAQyD,gBAAR,CAAyB,mBAAzB,EAA8ChE,OAAA,IAAW;QACvD,MAAMD,OAAA,GAAU;UACdoH,MAAM/I,KAAN,EAAa;YACXA,KAAA,CAAMI,MAAN,CAAa8O,OAAb,GAAuBlP,KAAA,CAAMC,MAAN,CAAa8I,KAAb,KAAuB,KAA9C;YACAH,OAAA,CAAQvI,QAAR,CAAiB/C,EAAjB,EAAqB;cAAEyL,KAAA,EAAO/I,KAAA,CAAMI,MAAN,CAAa8O;YAAtB,CAArB;UAFW;QADC,CAAhB;QAMA,KAAKxN,yBAAL,CAA+BC,OAA/B,EAAwCC,OAAxC;MAPuD,CAAzD;MAUA,KAAKiJ,kBAAL,CACE1I,OADF,EAEE,IAFF,EAGE,CACE,CAAC,QAAD,EAAW,UAAX,CADF,EAEE,CAAC,QAAD,EAAW,QAAX,CAFF,EAGE,CAAC,OAAD,EAAU,OAAV,CAHF,EAIE,CAAC,MAAD,EAAS,MAAT,CAJF,EAKE,CAAC,WAAD,EAAc,YAAd,CALF,EAME,CAAC,YAAD,EAAe,aAAf,CANF,EAOE,CAAC,YAAD,EAAe,YAAf,CAPF,EAQE,CAAC,SAAD,EAAY,UAAZ,CARF,CAHF,EAaEnC,KAAA,IAASA,KAAA,CAAMI,MAAN,CAAa8O,OAbxB;IAX6C;IA4B/C,KAAKhE,mBAAL,CAAyB/I,OAAzB;IACA,KAAKD,2BAAL,CAAiCC,OAAjC;IAEA,KAAK3F,SAAL,CAAe8G,MAAf,CAAsBnB,OAAtB;IACA,OAAO,KAAK3F,SAAZ;EA9EO;AAL2D;AAuFtE,MAAMvD,kCAAN,SAAiDM,uBAAjD,CAAyE;EACvEiC,YAAYnD,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAAEoD,YAAA,EAAcpD,UAAA,CAAW2D;IAA3B,CAAlB;EADsB;EAIxBkI,OAAA,EAAS;IACP,KAAK1H,SAAL,CAAeoB,SAAf,CAAyBC,GAAzB,CAA6B,wBAA7B,EAAuD,aAAvD;IACA,MAAM+K,OAAA,GAAU,KAAK1M,iBAArB;IACA,MAAM3D,IAAA,GAAO,KAAKA,IAAlB;IACA,MAAM+E,EAAA,GAAK/E,IAAA,CAAK+E,EAAhB;IACA,IAAIyL,KAAA,GAAQH,OAAA,CAAQ+D,QAAR,CAAiBrP,EAAjB,EAAqB;MAC/ByL,KAAA,EAAOxQ,IAAA,CAAK+T,UAAL,KAAoB/T,IAAA,CAAK8W;IADD,CAArB,EAETtG,KAFH;IAGA,IAAI,OAAOA,KAAP,KAAiB,QAArB,EAA+B;MAE7BA,KAAA,GAAQA,KAAA,KAAUxQ,IAAA,CAAK8W,WAAvB;MACAzG,OAAA,CAAQvI,QAAR,CAAiB/C,EAAjB,EAAqB;QAAEyL;MAAF,CAArB;IAH6B;IAM/B,IAAIA,KAAJ,EAAW;MAOT,WAAWuG,KAAX,IAAoB,KAAKnL,kBAAL,CAClB5L,IAAA,CAAKkQ,SADa,EAEHnL,EAFG,CAApB,EAGG;QACDsL,OAAA,CAAQvI,QAAR,CAAiBiP,KAAA,CAAMhS,EAAvB,EAA2B;UAAEyL,KAAA,EAAO;QAAT,CAA3B;MADC;IAVM;IAeX,MAAM5G,OAAA,GAAUhF,QAAA,CAASC,aAAT,CAAuB,OAAvB,CAAhB;IACAvF,oBAAA,CAAqBgG,GAArB,CAAyBsE,OAAzB;IACAA,OAAA,CAAQ9E,YAAR,CAAqB,iBAArB,EAAwCC,EAAxC;IAEA6E,OAAA,CAAQjB,QAAR,GAAmB3I,IAAA,CAAKkV,QAAxB;IACA,KAAKrM,YAAL,CAAkBe,OAAlB,EAA2B,KAAK5J,IAAL,CAAU4I,QAArC;IACAgB,OAAA,CAAQ2G,IAAR,GAAe,OAAf;IACA3G,OAAA,CAAQL,IAAR,GAAevJ,IAAA,CAAKkQ,SAApB;IACA,IAAIM,KAAJ,EAAW;MACT5G,OAAA,CAAQ9E,YAAR,CAAqB,SAArB,EAAgC,IAAhC;IADS;IAGX8E,OAAA,CAAQ5E,QAAR,GAAmB5F,iBAAnB;IAEAwK,OAAA,CAAQyD,gBAAR,CAAyB,QAAzB,EAAmC5F,KAAA,IAAS;MAC1C,MAAM;QAAE8B,IAAF;QAAQoN;MAAR,IAAoBlP,KAAA,CAAMI,MAAhC;MACA,WAAWkP,KAAX,IAAoB,KAAKnL,kBAAL,CAAwBrC,IAAxB,EAA6CxE,EAA7C,CAApB,EAAsE;QACpEsL,OAAA,CAAQvI,QAAR,CAAiBiP,KAAA,CAAMhS,EAAvB,EAA2B;UAAEyL,KAAA,EAAO;QAAT,CAA3B;MADoE;MAGtEH,OAAA,CAAQvI,QAAR,CAAiB/C,EAAjB,EAAqB;QAAEyL,KAAA,EAAOmG;MAAT,CAArB;IAL0C,CAA5C;IAQA/M,OAAA,CAAQyD,gBAAR,CAAyB,WAAzB,EAAsC5F,KAAA,IAAS;MAC7C,MAAMgJ,YAAA,GAAezQ,IAAA,CAAKoV,iBAA1B;MACA3N,KAAA,CAAMI,MAAN,CAAa8O,OAAb,GACElG,YAAA,KAAiB,IAAjB,IACAA,YAAA,KAAiB6E,SADjB,IAEA7E,YAAA,KAAiBzQ,IAAA,CAAK8W,WAHxB;IAF6C,CAA/C;IAQA,IAAI,KAAKlT,eAAL,IAAwB,KAAKC,YAAjC,EAA+C;MAC7C,MAAMmT,cAAA,GAAiBhX,IAAA,CAAK8W,WAA5B;MACAlN,OAAA,CAAQyD,gBAAR,CAAyB,mBAAzB,EAA8ChE,OAAA,IAAW;QACvD,MAAMD,OAAA,GAAU;UACdoH,KAAA,EAAO/I,KAAA,IAAS;YACd,MAAMkP,OAAA,GAAUK,cAAA,KAAmBvP,KAAA,CAAMC,MAAN,CAAa8I,KAAhD;YACA,WAAWuG,KAAX,IAAoB,KAAKnL,kBAAL,CAAwBnE,KAAA,CAAMI,MAAN,CAAa0B,IAArC,CAApB,EAAgE;cAC9D,MAAMsN,UAAA,GAAaF,OAAA,IAAWI,KAAA,CAAMhS,EAAN,KAAaA,EAA3C;cACA,IAAIgS,KAAA,CAAM7K,UAAV,EAAsB;gBACpB6K,KAAA,CAAM7K,UAAN,CAAiByK,OAAjB,GAA2BE,UAA3B;cADoB;cAGtBxG,OAAA,CAAQvI,QAAR,CAAiBiP,KAAA,CAAMhS,EAAvB,EAA2B;gBAAEyL,KAAA,EAAOqG;cAAT,CAA3B;YAL8D;UAFlD;QADF,CAAhB;QAYA,KAAK1N,yBAAL,CAA+BC,OAA/B,EAAwCC,OAAxC;MAbuD,CAAzD;MAgBA,KAAKiJ,kBAAL,CACE1I,OADF,EAEE,IAFF,EAGE,CACE,CAAC,QAAD,EAAW,UAAX,CADF,EAEE,CAAC,QAAD,EAAW,QAAX,CAFF,EAGE,CAAC,OAAD,EAAU,OAAV,CAHF,EAIE,CAAC,MAAD,EAAS,MAAT,CAJF,EAKE,CAAC,WAAD,EAAc,YAAd,CALF,EAME,CAAC,YAAD,EAAe,aAAf,CANF,EAOE,CAAC,YAAD,EAAe,YAAf,CAPF,EAQE,CAAC,SAAD,EAAY,UAAZ,CARF,CAHF,EAaEnC,KAAA,IAASA,KAAA,CAAMI,MAAN,CAAa8O,OAbxB;IAlB6C;IAmC/C,KAAKhE,mBAAL,CAAyB/I,OAAzB;IACA,KAAKD,2BAAL,CAAiCC,OAAjC;IAEA,KAAK3F,SAAL,CAAe8G,MAAf,CAAsBnB,OAAtB;IACA,OAAO,KAAK3F,SAAZ;EAjGO;AAL8D;AA0GzE,MAAMpD,iCAAN,SAAgDV,qBAAhD,CAAsE;EACpE8C,YAAYnD,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAAEqD,YAAA,EAAcrD,UAAA,CAAWE,IAAX,CAAgB8T;IAAhC,CAAlB;EADsB;EAIxBnI,OAAA,EAAS;IAIP,MAAM1H,SAAA,GAAY,MAAM0H,MAAN,EAAlB;IACA1H,SAAA,CAAUoB,SAAV,CAAoBC,GAApB,CAAwB,wBAAxB,EAAkD,YAAlD;IAEA,IAAI,KAAKtF,IAAL,CAAUkR,eAAd,EAA+B;MAC7BjN,SAAA,CAAUwE,KAAV,GAAkB,KAAKzI,IAAL,CAAUkR,eAA5B;IAD6B;IAI/B,MAAM+F,WAAA,GAAchT,SAAA,CAAUiT,SAA9B;IACA,IAAI,KAAKtT,eAAL,IAAwB,KAAKC,YAA7B,IAA6CoT,WAAjD,EAA8D;MAC5D,KAAKtN,2BAAL,CAAiCsN,WAAjC;MAEAA,WAAA,CAAY5J,gBAAZ,CAA6B,mBAA7B,EAAkDhE,OAAA,IAAW;QAC3D,KAAKF,yBAAL,CAA+B,EAA/B,EAAmCE,OAAnC;MAD2D,CAA7D;IAH4D;IAQ9D,OAAOpF,SAAP;EApBO;AAL2D;AA6BtE,MAAMnD,6BAAN,SAA4CE,uBAA5C,CAAoE;EAClEiC,YAAYnD,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAAEoD,YAAA,EAAcpD,UAAA,CAAW2D;IAA3B,CAAlB;EADsB;EAIxBkI,OAAA,EAAS;IACP,KAAK1H,SAAL,CAAeoB,SAAf,CAAyBC,GAAzB,CAA6B,wBAA7B;IACA,MAAM+K,OAAA,GAAU,KAAK1M,iBAArB;IACA,MAAMoB,EAAA,GAAK,KAAK/E,IAAL,CAAU+E,EAArB;IAEA,MAAM8E,UAAA,GAAawG,OAAA,CAAQ+D,QAAR,CAAiBrP,EAAjB,EAAqB;MACtCyL,KAAA,EAAO,KAAKxQ,IAAL,CAAU+T;IADqB,CAArB,CAAnB;IAIA,MAAMoD,aAAA,GAAgBvS,QAAA,CAASC,aAAT,CAAuB,QAAvB,CAAtB;IACAvF,oBAAA,CAAqBgG,GAArB,CAAyB6R,aAAzB;IACAA,aAAA,CAAcrS,YAAd,CAA2B,iBAA3B,EAA8CC,EAA9C;IAEAoS,aAAA,CAAcxO,QAAd,GAAyB,KAAK3I,IAAL,CAAUkV,QAAnC;IACA,KAAKrM,YAAL,CAAkBsO,aAAlB,EAAiC,KAAKnX,IAAL,CAAU4I,QAA3C;IACAuO,aAAA,CAAc5N,IAAd,GAAqB,KAAKvJ,IAAL,CAAUkQ,SAA/B;IACAiH,aAAA,CAAcnS,QAAd,GAAyB5F,iBAAzB;IAEA,IAAIgY,eAAA,GAAkB,KAAKpX,IAAL,CAAUqX,KAAV,IAAmB,KAAKrX,IAAL,CAAUyN,OAAV,CAAkBlD,MAAlB,GAA2B,CAApE;IAEA,IAAI,CAAC,KAAKvK,IAAL,CAAUqX,KAAf,EAAsB;MAEpBF,aAAA,CAAcG,IAAd,GAAqB,KAAKtX,IAAL,CAAUyN,OAAV,CAAkBlD,MAAvC;MACA,IAAI,KAAKvK,IAAL,CAAUuX,WAAd,EAA2B;QACzBJ,aAAA,CAAcK,QAAd,GAAyB,IAAzB;MADyB;IAHP;IAQtBL,aAAA,CAAc9J,gBAAd,CAA+B,WAA/B,EAA4C5F,KAAA,IAAS;MACnD,MAAMgJ,YAAA,GAAe,KAAKzQ,IAAL,CAAUoV,iBAA/B;MACA,WAAWqC,MAAX,IAAqBN,aAAA,CAAc1J,OAAnC,EAA4C;QAC1CgK,MAAA,CAAOC,QAAP,GAAkBD,MAAA,CAAOjH,KAAP,KAAiBC,YAAnC;MAD0C;IAFO,CAArD;IAQA,WAAWgH,MAAX,IAAqB,KAAKzX,IAAL,CAAUyN,OAA/B,EAAwC;MACtC,MAAMkK,aAAA,GAAgB/S,QAAA,CAASC,aAAT,CAAuB,QAAvB,CAAtB;MACA8S,aAAA,CAActD,WAAd,GAA4BoD,MAAA,CAAOG,YAAnC;MACAD,aAAA,CAAcnH,KAAd,GAAsBiH,MAAA,CAAOxL,WAA7B;MACA,IAAIpC,UAAA,CAAW2G,KAAX,CAAiBwB,QAAjB,CAA0ByF,MAAA,CAAOxL,WAAjC,CAAJ,EAAmD;QACjD0L,aAAA,CAAc7S,YAAd,CAA2B,UAA3B,EAAuC,IAAvC;QACAsS,eAAA,GAAkB,KAAlB;MAFiD;MAInDD,aAAA,CAAcpM,MAAd,CAAqB4M,aAArB;IARsC;IAWxC,IAAIE,gBAAA,GAAmB,IAAvB;IACA,IAAIT,eAAJ,EAAqB;MACnB,MAAMU,iBAAA,GAAoBlT,QAAA,CAASC,aAAT,CAAuB,QAAvB,CAA1B;MACAiT,iBAAA,CAAkBtH,KAAlB,GAA0B,GAA1B;MACAsH,iBAAA,CAAkBhT,YAAlB,CAA+B,QAA/B,EAAyC,IAAzC;MACAgT,iBAAA,CAAkBhT,YAAlB,CAA+B,UAA/B,EAA2C,IAA3C;MACAqS,aAAA,CAAcY,OAAd,CAAsBD,iBAAtB;MAEAD,gBAAA,GAAmBA,CAAA,KAAM;QACvBC,iBAAA,CAAkBE,MAAlB;QACAb,aAAA,CAAcc,mBAAd,CAAkC,OAAlC,EAA2CJ,gBAA3C;QACAA,gBAAA,GAAmB,IAAnB;MAHuB,CAAzB;MAKAV,aAAA,CAAc9J,gBAAd,CAA+B,OAA/B,EAAwCwK,gBAAxC;IAZmB;IAerB,MAAMzD,QAAA,GAAW8D,QAAA,IAAY;MAC3B,MAAM3O,IAAA,GAAO2O,QAAA,GAAW,OAAX,GAAqB,aAAlC;MACA,MAAM;QAAEzK,OAAF;QAAW+J;MAAX,IAAwBL,aAA9B;MACA,IAAI,CAACK,QAAL,EAAe;QACb,OAAO/J,OAAA,CAAQ0K,aAAR,KAA0B,CAAC,CAA3B,GACH,IADG,GAEH1K,OAAA,CAAQA,OAAA,CAAQ0K,aAAhB,EAA+B5O,IAA/B,CAFJ;MADa;MAKf,OAAOuD,KAAA,CAAMsL,SAAN,CAAgBC,MAAhB,CACJC,IADI,CACC7K,OADD,EACUgK,MAAA,IAAUA,MAAA,CAAOC,QAD3B,EAEJla,GAFI,CAEAia,MAAA,IAAUA,MAAA,CAAOlO,IAAP,CAFV,CAAP;IAR2B,CAA7B;IAaA,IAAIgP,cAAA,GAAiBnE,QAAA,CAAwB,KAAxB,CAArB;IAEA,MAAMoE,QAAA,GAAW/Q,KAAA,IAAS;MACxB,MAAMgG,OAAA,GAAUhG,KAAA,CAAMI,MAAN,CAAa4F,OAA7B;MACA,OAAOX,KAAA,CAAMsL,SAAN,CAAgB5a,GAAhB,CAAoB8a,IAApB,CAAyB7K,OAAzB,EAAkCgK,MAAA,IAAU;QACjD,OAAO;UAAEG,YAAA,EAAcH,MAAA,CAAOpD,WAAvB;UAAoCpI,WAAA,EAAawL,MAAA,CAAOjH;QAAxD,CAAP;MADiD,CAA5C,CAAP;IAFwB,CAA1B;IAOA,IAAI,KAAK5M,eAAL,IAAwB,KAAKC,YAAjC,EAA+C;MAC7CsT,aAAA,CAAc9J,gBAAd,CAA+B,mBAA/B,EAAoDhE,OAAA,IAAW;QAC7D,MAAMD,OAAA,GAAU;UACdoH,MAAM/I,KAAN,EAAa;YACXoQ,gBAAA;YACA,MAAMrH,KAAA,GAAQ/I,KAAA,CAAMC,MAAN,CAAa8I,KAA3B;YACA,MAAML,MAAA,GAAS,IAAIF,GAAJ,CAAQnD,KAAA,CAAMC,OAAN,CAAcyD,KAAd,IAAuBA,KAAvB,GAA+B,CAACA,KAAD,CAAvC,CAAf;YACA,WAAWiH,MAAX,IAAqBN,aAAA,CAAc1J,OAAnC,EAA4C;cAC1CgK,MAAA,CAAOC,QAAP,GAAkBvH,MAAA,CAAO/D,GAAP,CAAWqL,MAAA,CAAOjH,KAAlB,CAAlB;YAD0C;YAG5CH,OAAA,CAAQvI,QAAR,CAAiB/C,EAAjB,EAAqB;cACnByL,KAAA,EAAO4D,QAAA,CAAwB,IAAxB;YADY,CAArB;YAGAmE,cAAA,GAAiBnE,QAAA,CAAwB,KAAxB,CAAjB;UAVW,CADC;UAadqE,kBAAkBhR,KAAlB,EAAyB;YACvB0P,aAAA,CAAcK,QAAd,GAAyB,IAAzB;UADuB,CAbX;UAgBdQ,OAAOvQ,KAAP,EAAc;YACZ,MAAMgG,OAAA,GAAU0J,aAAA,CAAc1J,OAA9B;YACA,MAAMiL,KAAA,GAAQjR,KAAA,CAAMC,MAAN,CAAasQ,MAA3B;YACAvK,OAAA,CAAQiL,KAAR,EAAehB,QAAf,GAA0B,KAA1B;YACAP,aAAA,CAAca,MAAd,CAAqBU,KAArB;YACA,IAAIjL,OAAA,CAAQlD,MAAR,GAAiB,CAArB,EAAwB;cACtB,MAAMoO,CAAA,GAAI7L,KAAA,CAAMsL,SAAN,CAAgBQ,SAAhB,CAA0BN,IAA1B,CACR7K,OADQ,EAERgK,MAAA,IAAUA,MAAA,CAAOC,QAFT,CAAV;cAIA,IAAIiB,CAAA,KAAM,CAAC,CAAX,EAAc;gBACZlL,OAAA,CAAQ,CAAR,EAAWiK,QAAX,GAAsB,IAAtB;cADY;YALQ;YASxBrH,OAAA,CAAQvI,QAAR,CAAiB/C,EAAjB,EAAqB;cACnByL,KAAA,EAAO4D,QAAA,CAAwB,IAAxB,CADY;cAEnByE,KAAA,EAAOL,QAAA,CAAS/Q,KAAT;YAFY,CAArB;YAIA8Q,cAAA,GAAiBnE,QAAA,CAAwB,KAAxB,CAAjB;UAlBY,CAhBA;UAoCd0E,MAAMrR,KAAN,EAAa;YACX,OAAO0P,aAAA,CAAc5M,MAAd,KAAyB,CAAhC,EAAmC;cACjC4M,aAAA,CAAca,MAAd,CAAqB,CAArB;YADiC;YAGnC3H,OAAA,CAAQvI,QAAR,CAAiB/C,EAAjB,EAAqB;cAAEyL,KAAA,EAAO,IAAT;cAAeqI,KAAA,EAAO;YAAtB,CAArB;YACAN,cAAA,GAAiBnE,QAAA,CAAwB,KAAxB,CAAjB;UALW,CApCC;UA2Cd2E,OAAOtR,KAAP,EAAc;YACZ,MAAM;cAAEiR,KAAF;cAASd,YAAT;cAAuB3L;YAAvB,IAAuCxE,KAAA,CAAMC,MAAN,CAAaqR,MAA1D;YACA,MAAMC,WAAA,GAAc7B,aAAA,CAAc8B,QAAd,CAAuBP,KAAvB,CAApB;YACA,MAAMf,aAAA,GAAgB/S,QAAA,CAASC,aAAT,CAAuB,QAAvB,CAAtB;YACA8S,aAAA,CAActD,WAAd,GAA4BuD,YAA5B;YACAD,aAAA,CAAcnH,KAAd,GAAsBvE,WAAtB;YAEA,IAAI+M,WAAJ,EAAiB;cACfA,WAAA,CAAYE,MAAZ,CAAmBvB,aAAnB;YADe,CAAjB,MAEO;cACLR,aAAA,CAAcpM,MAAd,CAAqB4M,aAArB;YADK;YAGPtH,OAAA,CAAQvI,QAAR,CAAiB/C,EAAjB,EAAqB;cACnByL,KAAA,EAAO4D,QAAA,CAAwB,IAAxB,CADY;cAEnByE,KAAA,EAAOL,QAAA,CAAS/Q,KAAT;YAFY,CAArB;YAIA8Q,cAAA,GAAiBnE,QAAA,CAAwB,KAAxB,CAAjB;UAhBY,CA3CA;UA6DdyE,MAAMpR,KAAN,EAAa;YACX,MAAM;cAAEoR;YAAF,IAAYpR,KAAA,CAAMC,MAAxB;YACA,OAAOyP,aAAA,CAAc5M,MAAd,KAAyB,CAAhC,EAAmC;cACjC4M,aAAA,CAAca,MAAd,CAAqB,CAArB;YADiC;YAGnC,WAAWmB,IAAX,IAAmBN,KAAnB,EAA0B;cACxB,MAAM;gBAAEjB,YAAF;gBAAgB3L;cAAhB,IAAgCkN,IAAtC;cACA,MAAMxB,aAAA,GAAgB/S,QAAA,CAASC,aAAT,CAAuB,QAAvB,CAAtB;cACA8S,aAAA,CAActD,WAAd,GAA4BuD,YAA5B;cACAD,aAAA,CAAcnH,KAAd,GAAsBvE,WAAtB;cACAkL,aAAA,CAAcpM,MAAd,CAAqB4M,aAArB;YALwB;YAO1B,IAAIR,aAAA,CAAc1J,OAAd,CAAsBlD,MAAtB,GAA+B,CAAnC,EAAsC;cACpC4M,aAAA,CAAc1J,OAAd,CAAsB,CAAtB,EAAyBiK,QAAzB,GAAoC,IAApC;YADoC;YAGtCrH,OAAA,CAAQvI,QAAR,CAAiB/C,EAAjB,EAAqB;cACnByL,KAAA,EAAO4D,QAAA,CAAwB,IAAxB,CADY;cAEnByE,KAAA,EAAOL,QAAA,CAAS/Q,KAAT;YAFY,CAArB;YAIA8Q,cAAA,GAAiBnE,QAAA,CAAwB,KAAxB,CAAjB;UAnBW,CA7DC;UAkFdgF,QAAQ3R,KAAR,EAAe;YACb,MAAM2R,OAAA,GAAU,IAAInJ,GAAJ,CAAQxI,KAAA,CAAMC,MAAN,CAAa0R,OAArB,CAAhB;YACA,WAAW3B,MAAX,IAAqBhQ,KAAA,CAAMI,MAAN,CAAa4F,OAAlC,EAA2C;cACzCgK,MAAA,CAAOC,QAAP,GAAkB0B,OAAA,CAAQhN,GAAR,CAAYqL,MAAA,CAAOiB,KAAnB,CAAlB;YADyC;YAG3CrI,OAAA,CAAQvI,QAAR,CAAiB/C,EAAjB,EAAqB;cACnByL,KAAA,EAAO4D,QAAA,CAAwB,IAAxB;YADY,CAArB;YAGAmE,cAAA,GAAiBnE,QAAA,CAAwB,KAAxB,CAAjB;UARa,CAlFD;UA4FdiF,SAAS5R,KAAT,EAAgB;YACdA,KAAA,CAAMI,MAAN,CAAac,QAAb,GAAwB,CAAClB,KAAA,CAAMC,MAAN,CAAa2R,QAAtC;UADc;QA5FF,CAAhB;QAgGA,KAAKlQ,yBAAL,CAA+BC,OAA/B,EAAwCC,OAAxC;MAjG6D,CAA/D;MAoGA8N,aAAA,CAAc9J,gBAAd,CAA+B,OAA/B,EAAwC5F,KAAA,IAAS;QAC/C,MAAMwE,WAAA,GAAcmI,QAAA,CAAwB,IAAxB,CAApB;QACA/D,OAAA,CAAQvI,QAAR,CAAiB/C,EAAjB,EAAqB;UAAEyL,KAAA,EAAOvE;QAAT,CAArB;QAEAxE,KAAA,CAAM4O,cAAN;QAEA,KAAK/S,WAAL,CAAiBgK,QAAjB,EAA2BC,QAA3B,CAAoC,wBAApC,EAA8D;UAC5DC,MAAA,EAAQ,IADoD;UAE5D9F,MAAA,EAAQ;YACN3C,EADM;YAENwE,IAAA,EAAM,WAFA;YAGNiH,KAAA,EAAO+H,cAHD;YAINe,QAAA,EAAUrN,WAJJ;YAKN0J,UAAA,EAAY,KALN;YAMNb,SAAA,EAAW,CANL;YAONyE,OAAA,EAAS;UAPH;QAFoD,CAA9D;MAN+C,CAAjD;MAoBA,KAAKjH,kBAAL,CACE6E,aADF,EAEE,IAFF,EAGE,CACE,CAAC,OAAD,EAAU,OAAV,CADF,EAEE,CAAC,MAAD,EAAS,MAAT,CAFF,EAGE,CAAC,WAAD,EAAc,YAAd,CAHF,EAIE,CAAC,YAAD,EAAe,aAAf,CAJF,EAKE,CAAC,YAAD,EAAe,YAAf,CALF,EAME,CAAC,SAAD,EAAY,UAAZ,CANF,EAOE,CAAC,OAAD,EAAU,QAAV,CAPF,EAQE,CAAC,OAAD,EAAU,UAAV,CARF,CAHF,EAaE1P,KAAA,IAASA,KAAA,CAAMI,MAAN,CAAa2I,KAbxB;IAzH6C,CAA/C,MAwIO;MACL2G,aAAA,CAAc9J,gBAAd,CAA+B,OAA/B,EAAwC,UAAU5F,KAAV,EAAiB;QACvD4I,OAAA,CAAQvI,QAAR,CAAiB/C,EAAjB,EAAqB;UAAEyL,KAAA,EAAO4D,QAAA,CAAwB,IAAxB;QAAT,CAArB;MADuD,CAAzD;IADK;IAMP,IAAI,KAAKpU,IAAL,CAAUqX,KAAd,EAAqB;MACnB,KAAKxE,aAAL,CAAmBsE,aAAnB;IADmB,CAArB,MAEO;IAIP,KAAKxE,mBAAL,CAAyBwE,aAAzB;IACA,KAAKxN,2BAAL,CAAiCwN,aAAjC;IAEA,KAAKlT,SAAL,CAAe8G,MAAf,CAAsBoM,aAAtB;IACA,OAAO,KAAKlT,SAAZ;EA7OO;AALyD;AAsPpE,MAAM/C,sBAAN,SAAqC6B,iBAArC,CAAuD;EACrDE,YAAYnD,UAAZ,EAAwB;IACtB,MAAM;MAAEE,IAAF;MAAQyL;IAAR,IAAqB3L,UAA3B;IACA,MAAMA,UAAN,EAAkB;MAAEoD,YAAA,EAAcH,iBAAA,CAAkBqB,aAAlB,CAAgCpE,IAAhC;IAAhB,CAAlB;IACA,KAAKyL,QAAL,GAAgBA,QAAhB;EAHsB;EAMxBE,OAAA,EAAS;IACP,KAAK1H,SAAL,CAAeoB,SAAf,CAAyBC,GAAzB,CAA6B,iBAA7B;IAEA,MAAMgG,KAAA,GAAQ,IAAIkO,YAAJ,CAAiB;MAC7BvV,SAAA,EAAW,KAAKA,SADa;MAE7B1G,KAAA,EAAO,KAAKyC,IAAL,CAAUzC,KAFY;MAG7B8G,QAAA,EAAU,KAAKrE,IAAL,CAAUqE,QAHS;MAI7BkH,gBAAA,EAAkB,KAAKvL,IAAL,CAAUuL,gBAJC;MAK7BjH,WAAA,EAAa,KAAKtE,IAAL,CAAUsE,WALM;MAM7BC,QAAA,EAAU,KAAKvE,IAAL,CAAUuE,QANS;MAO7B9E,IAAA,EAAM,KAAKO,IAAL,CAAUP,IAPa;MAQ7B+L,UAAA,EAAY,KAAKxL,IAAL,CAAUwL,UAAV,IAAwB,IARP;MAS7BxH,MAAA,EAAQ,KAAKA,MATgB;MAU7ByH,QAAA,EAAU,KAAKA,QAVc;MAW7BgO,IAAA,EAAM,KAAKzZ,IAAL,CAAUyZ;IAXa,CAAjB,CAAd;IAcA,MAAMC,UAAA,GAAa,EAAnB;IACA,WAAW9P,OAAX,IAAsB,KAAK6B,QAA3B,EAAqC;MACnC7B,OAAA,CAAQ0B,KAAR,GAAgBA,KAAhB;MACAoO,UAAA,CAAWvO,IAAX,CAAgBvB,OAAA,CAAQ5J,IAAR,CAAa+E,EAA7B;MACA6E,OAAA,CAAQgD,gBAAR;IAHmC;IAMrC,KAAK3I,SAAL,CAAea,YAAf,CACE,eADF,EAEE4U,UAAA,CAAWlc,GAAX,CAAeuH,EAAA,IAAM,GAAGzG,qBAAH,GAAsByG,EAAtB,EAArB,EAAiDrH,IAAjD,CAAsD,GAAtD,CAFF;IAKA,OAAO,KAAKuG,SAAZ;EA7BO;AAP4C;AAwCvD,MAAMuV,YAAN,CAAmB;EACjB,CAAAG,YAAA,GAAgB,KAAK,CAAAJ,OAAL,CAAcK,IAAd,CAAmB,IAAnB,CAAhB;EAEA,CAAAC,SAAA,GAAa,KAAK,CAAApN,IAAL,CAAWmN,IAAX,CAAgB,IAAhB,CAAb;EAEA,CAAAE,SAAA,GAAa,KAAK,CAAAvN,IAAL,CAAWqN,IAAX,CAAgB,IAAhB,CAAb;EAEA,CAAAG,WAAA,GAAe,KAAK,CAAAC,MAAL,CAAaJ,IAAb,CAAkB,IAAlB,CAAf;EAEA,CAAArc,KAAA,GAAS,IAAT;EAEA,CAAA0G,SAAA,GAAa,IAAb;EAEA,CAAAK,WAAA,GAAe,IAAf;EAEA,CAAA2V,OAAA,GAAW,IAAX;EAEA,CAAAxO,QAAA,GAAY,IAAZ;EAEA,CAAAzH,MAAA,GAAU,IAAV;EAEA,CAAAwH,UAAA,GAAc,IAAd;EAEA,CAAA0O,MAAA,GAAU,KAAV;EAEA,CAAA5O,KAAA,GAAS,IAAT;EAEA,CAAA7L,IAAA,GAAQ,IAAR;EAEA,CAAA8E,QAAA,GAAY,IAAZ;EAEA,CAAAF,QAAA,GAAY,IAAZ;EAEA,CAAA8V,UAAA,GAAc,KAAd;EAEAlX,YAAY;IACVgB,SADU;IAEV1G,KAFU;IAGVkO,QAHU;IAIVpH,QAJU;IAKVkH,gBALU;IAMVjH,WANU;IAOVC,QAPU;IAQVP,MARU;IASVvE,IATU;IAUV+L,UAVU;IAWViO;EAXU,CAAZ,EAYG;IACD,KAAK,CAAAxV,SAAL,GAAkBA,SAAlB;IACA,KAAK,CAAAI,QAAL,GAAiBA,QAAjB;IACA,KAAK,CAAAC,WAAL,GAAoBA,WAApB;IACA,KAAK,CAAAC,QAAL,GAAiBA,QAAjB;IACA,KAAK,CAAAP,MAAL,GAAeA,MAAf;IACA,KAAK,CAAAzG,KAAL,GAAcA,KAAd;IACA,KAAK,CAAAkC,IAAL,GAAaA,IAAb;IACA,KAAK,CAAA+L,UAAL,GAAmBA,UAAnB;IACA,KAAK,CAAAC,QAAL,GAAiBA,QAAjB;IAKA,KAAK,CAAAwO,OAAL,GAAgBjb,2BAAA,CAAcob,YAAd,CAA2B7O,gBAA3B,CAAhB;IAEA,KAAK8O,OAAL,GAAe5O,QAAA,CAAS6O,OAAT,CAAiBC,CAAA,IAAKA,CAAA,CAAE5N,yBAAF,EAAtB,CAAf;IAEA,WAAW/C,OAAX,IAAsB,KAAKyQ,OAA3B,EAAoC;MAClCzQ,OAAA,CAAQyD,gBAAR,CAAyB,OAAzB,EAAkC,KAAK,CAAA0M,WAAvC;MACAnQ,OAAA,CAAQyD,gBAAR,CAAyB,YAAzB,EAAuC,KAAK,CAAAyM,SAA5C;MACAlQ,OAAA,CAAQyD,gBAAR,CAAyB,YAAzB,EAAuC,KAAK,CAAAwM,SAA5C;MACAjQ,OAAA,CAAQvE,SAAR,CAAkBC,GAAlB,CAAsB,kBAAtB;IAJkC;IAQpC,WAAWsE,OAAX,IAAsB6B,QAAtB,EAAgC;MAC9B7B,OAAA,CAAQ3F,SAAR,EAAmBoJ,gBAAnB,CAAoC,SAApC,EAA+C,KAAK,CAAAsM,YAApD;IAD8B;IAIhC,KAAK,CAAA1V,SAAL,CAAgB+D,MAAhB,GAAyB,IAAzB;IACA,IAAIyR,IAAJ,EAAU;MACR,KAAK,CAAAO,MAAL;IADQ;EA/BT;EA8CHrO,OAAA,EAAS;IACP,IAAI,KAAK,CAAAL,KAAT,EAAiB;MACf;IADe;IAIjB,MAAM;MACJ5G,IAAA,EAAM;QAAEsB;MAAF,CADF;MAEJrB,QAAA,EAAU;QACRgB,OAAA,EAAS;UAAEJ,SAAF;UAAaC,UAAb;UAAyBC,KAAzB;UAAgCC;QAAhC;MADD;IAFN,IAKF,KAAK,CAAA1B,MALT;IAMA,MAAMsH,KAAA,GAAS,KAAK,CAAAA,KAAL,GAAc1G,QAAA,CAASC,aAAT,CAAuB,KAAvB,CAA7B;IACAyG,KAAA,CAAMkP,SAAN,GAAkB,OAAlB;IAEA,IAAI,KAAK,CAAAjd,KAAT,EAAiB;MACf,MAAMkd,SAAA,GAAanP,KAAA,CAAMrG,KAAN,CAAYyV,YAAZ,GAA2B9b,SAAA,CAAKmI,YAAL,CAC5C,GAAG,KAAK,CAAAxJ,KADoC,CAA9C;MAGA,IAEEod,GAAA,CAAIC,QAAJ,CAAa,kBAAb,EAAiC,oCAAjC,CAFF,EAGE;QACAtP,KAAA,CAAMrG,KAAN,CAAY2N,eAAZ,GAA+B,sBAAqB6H,SAAU,cAA9D;MADA,CAHF,MAKO;QAKL,MAAMI,kBAAA,GAAqB,GAA3B;QACAvP,KAAA,CAAMrG,KAAN,CAAY2N,eAAZ,GAA8BhU,SAAA,CAAKmI,YAAL,CAC5B,GAAG,KAAK,CAAAxJ,KAAL,CAAYC,GAAZ,CAAgBf,CAAA,IACjBV,IAAA,CAAKC,KAAL,CAAW6e,kBAAA,IAAsB,MAAMpe,CAAN,CAAtB,GAAiCA,CAA5C,CADC,CADyB,CAA9B;MANK;IATQ;IAuBjB,MAAMqe,MAAA,GAASlW,QAAA,CAASC,aAAT,CAAuB,MAAvB,CAAf;IACAiW,MAAA,CAAON,SAAP,GAAmB,QAAnB;IACA,MAAM/R,KAAA,GAAQ7D,QAAA,CAASC,aAAT,CAAuB,IAAvB,CAAd;IACAiW,MAAA,CAAO/P,MAAP,CAActC,KAAd;IACA,CAAC;MAAEsS,GAAA,EAAKtS,KAAA,CAAMsS,GAAb;MAAkBvW,GAAA,EAAKiE,KAAA,CAAM4L;IAA7B,IAA6C,KAAK,CAAAhQ,QAAnD;IACAiH,KAAA,CAAMP,MAAN,CAAa+P,MAAb;IAEA,IAAI,KAAK,CAAAb,OAAT,EAAmB;MACjB,MAAM1O,gBAAA,GAAmB3G,QAAA,CAASC,aAAT,CAAuB,MAAvB,CAAzB;MACA0G,gBAAA,CAAiBlG,SAAjB,CAA2BC,GAA3B,CAA+B,WAA/B;MACAiG,gBAAA,CAAiBzG,YAAjB,CACE,cADF,EAEE,8BAFF;MAIAyG,gBAAA,CAAiBzG,YAAjB,CACE,gBADF,EAEEkM,IAAA,CAAKC,SAAL,CAAe;QACb+J,IAAA,EAAM,KAAK,CAAAf,OAAL,CAAcgB,kBAAd,EADO;QAEbC,IAAA,EAAM,KAAK,CAAAjB,OAAL,CAAckB,kBAAd;MAFO,CAAf,CAFF;MAOAL,MAAA,CAAO/P,MAAP,CAAcQ,gBAAd;IAdiB;IAiBnB,MAAMjH,WAAA,GAAc,KAAK,CAAAA,WAAzB;IACA,MAAMC,QAAA,GAAW,KAAK,CAAAA,QAAtB;IACA,IACEA,QAAA,EAAUC,GAAV,KACC,CAACF,WAAA,EAAaE,GAAd,IAAqBF,WAAA,CAAYE,GAAZ,KAAoBD,QAAA,CAASC,GAAlD,CAFH,EAGE;MACArF,kBAAA,CAASwM,MAAT,CAAgB;QACdyP,OAAA,EAAS7W,QAAA,CAAS8W,IADJ;QAEdC,MAAA,EAAQ,UAFM;QAGd5P,GAAA,EAAKJ;MAHS,CAAhB;MAKAA,KAAA,CAAM4L,SAAN,CAAgB7R,SAAhB,CAA0BC,GAA1B,CAA8B,UAA9B,EAA0C,cAA1C;IANA,CAHF,MAUO;MACL,MAAMiW,QAAA,GAAW,KAAKC,eAAL,CAAqBlX,WAArB,CAAjB;MACAgH,KAAA,CAAMP,MAAN,CAAawQ,QAAb;IAFK;IAKP,IAAIE,aAAA,GAAgB,CAAC,CAAC,KAAK,CAAAjQ,UAA3B;IACA,IAAI/L,IAAA,GAAOgc,aAAA,GAAgB,KAAK,CAAAjQ,UAArB,GAAmC,KAAK,CAAA/L,IAAnD;IACA,WAAWmK,OAAX,IAAsB,KAAK,CAAA6B,QAA3B,EAAsC;MACpC,IAAI,CAAChM,IAAD,IAASb,SAAA,CAAK8c,SAAL,CAAe9R,OAAA,CAAQ5J,IAAR,CAAaP,IAA5B,EAAkCA,IAAlC,MAA4C,IAAzD,EAA+D;QAC7DA,IAAA,GAAOmK,OAAA,CAAQ5J,IAAR,CAAaP,IAApB;QACAgc,aAAA,GAAgB,IAAhB;QACA;MAH6D;IAD3B;IAQtC,MAAME,cAAA,GAAiB/c,SAAA,CAAKmH,aAAL,CAAmB,CACxCtG,IAAA,CAAK,CAAL,CADwC,EAExCuG,IAAA,CAAK,CAAL,IAAUvG,IAAA,CAAK,CAAL,CAAV,GAAoBuG,IAAA,CAAK,CAAL,CAFoB,EAGxCvG,IAAA,CAAK,CAAL,CAHwC,EAIxCuG,IAAA,CAAK,CAAL,IAAUvG,IAAA,CAAK,CAAL,CAAV,GAAoBuG,IAAA,CAAK,CAAL,CAJoB,CAAnB,CAAvB;IAOA,MAAM4V,iCAAA,GAAoC,CAA1C;IACA,MAAMC,WAAA,GAAcJ,aAAA,GAChBhc,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAV,GAAoBmc,iCADJ,GAEhB,CAFJ;IAGA,MAAME,SAAA,GAAYH,cAAA,CAAe,CAAf,IAAoBE,WAAtC;IACA,MAAME,QAAA,GAAWJ,cAAA,CAAe,CAAf,CAAjB;IAEA,MAAM;MAAE1W;IAAF,IAAY,KAAK,CAAAhB,SAAvB;IACAgB,KAAA,CAAM+B,IAAN,GAAa,GAAI,OAAO8U,SAAA,GAAYrW,KAAZ,CAAR,GAA8BF,SAAU,GAAxD;IACAN,KAAA,CAAMgC,GAAN,GAAY,GAAI,OAAO8U,QAAA,GAAWrW,KAAX,CAAR,GAA6BF,UAAW,GAAvD;IAEA,KAAK,CAAAvB,SAAL,CAAgB8G,MAAhB,CAAuBO,KAAvB;EA1GO;EAqHTkQ,gBAAgB;IAAEhX,GAAF;IAAOuW;EAAP,CAAhB,EAA8B;IAC5B,MAAMiB,CAAA,GAAIpX,QAAA,CAASC,aAAT,CAAuB,GAAvB,CAAV;IACAmX,CAAA,CAAE3W,SAAF,CAAYC,GAAZ,CAAgB,cAAhB;IACA0W,CAAA,CAAEjB,GAAF,GAAQA,GAAR;IACA,MAAMkB,KAAA,GAAQzX,GAAA,CAAI0X,KAAJ,CAAU,cAAV,CAAd;IACA,KAAK,IAAIvD,CAAA,GAAI,CAAR,EAAWwD,EAAA,GAAKF,KAAA,CAAM1R,MAAtB,EAA8BoO,CAAA,GAAIwD,EAAvC,EAA2C,EAAExD,CAA7C,EAAgD;MAC9C,MAAMyD,IAAA,GAAOH,KAAA,CAAMtD,CAAN,CAAb;MACAqD,CAAA,CAAEjR,MAAF,CAASnG,QAAA,CAASyX,cAAT,CAAwBD,IAAxB,CAAT;MACA,IAAIzD,CAAA,GAAIwD,EAAA,GAAK,CAAb,EAAgB;QACdH,CAAA,CAAEjR,MAAF,CAASnG,QAAA,CAASC,aAAT,CAAuB,IAAvB,CAAT;MADc;IAH8B;IAOhD,OAAOmX,CAAP;EAZ4B;EAe9B,CAAAzC,QAAS9R,KAAT,EAAgB;IACd,IAAIA,KAAA,CAAM6U,MAAN,IAAgB7U,KAAA,CAAMyK,QAAtB,IAAkCzK,KAAA,CAAMiK,OAAxC,IAAmDjK,KAAA,CAAMgK,OAA7D,EAAsE;MACpE;IADoE;IAItE,IAAIhK,KAAA,CAAMyM,GAAN,KAAc,OAAd,IAA0BzM,KAAA,CAAMyM,GAAN,KAAc,QAAd,IAA0B,KAAK,CAAAgG,MAA7D,EAAuE;MACrE,KAAK,CAAAF,MAAL;IADqE;EALzD;EAahB,CAAAA,OAAA,EAAU;IACR,KAAK,CAAAE,MAAL,GAAe,CAAC,KAAK,CAAAA,MAArB;IACA,IAAI,KAAK,CAAAA,MAAT,EAAkB;MAChB,KAAK,CAAA3N,IAAL;MACA,KAAK,CAAAtI,SAAL,CAAgBoJ,gBAAhB,CAAiC,OAAjC,EAA0C,KAAK,CAAA0M,WAA/C;MACA,KAAK,CAAA9V,SAAL,CAAgBoJ,gBAAhB,CAAiC,SAAjC,EAA4C,KAAK,CAAAsM,YAAjD;IAHgB,CAAlB,MAIO;MACL,KAAK,CAAAlN,IAAL;MACA,KAAK,CAAAxI,SAAL,CAAgBgU,mBAAhB,CAAoC,OAApC,EAA6C,KAAK,CAAA8B,WAAlD;MACA,KAAK,CAAA9V,SAAL,CAAgBgU,mBAAhB,CAAoC,SAApC,EAA+C,KAAK,CAAA0B,YAApD;IAHK;EANC;EAgBV,CAAApN,KAAA,EAAQ;IACN,IAAI,CAAC,KAAK,CAAAjB,KAAV,EAAkB;MAChB,KAAKK,MAAL;IADgB;IAGlB,IAAI,CAAC,KAAK4Q,SAAV,EAAqB;MACnB,KAAK,CAAAtY,SAAL,CAAgB+D,MAAhB,GAAyB,KAAzB;MACA,KAAK,CAAA/D,SAAL,CAAgBgB,KAAhB,CAAsBC,MAAtB,GACEsX,QAAA,CAAS,KAAK,CAAAvY,SAAL,CAAgBgB,KAAhB,CAAsBC,MAA/B,IAAyC,IAD3C;IAFmB,CAArB,MAIO,IAAI,KAAK,CAAAgV,MAAT,EAAkB;MACvB,KAAK,CAAAjW,SAAL,CAAgBoB,SAAhB,CAA0BC,GAA1B,CAA8B,SAA9B;IADuB;EARnB;EAgBR,CAAAmH,KAAA,EAAQ;IACN,KAAK,CAAAxI,SAAL,CAAgBoB,SAAhB,CAA0B2S,MAA1B,CAAiC,SAAjC;IACA,IAAI,KAAK,CAAAkC,MAAL,IAAgB,CAAC,KAAKqC,SAA1B,EAAqC;MACnC;IADmC;IAGrC,KAAK,CAAAtY,SAAL,CAAgB+D,MAAhB,GAAyB,IAAzB;IACA,KAAK,CAAA/D,SAAL,CAAgBgB,KAAhB,CAAsBC,MAAtB,GACEsX,QAAA,CAAS,KAAK,CAAAvY,SAAL,CAAgBgB,KAAhB,CAAsBC,MAA/B,IAAyC,IAD3C;EANM;EAURwH,UAAA,EAAY;IACV,KAAK,CAAAyN,UAAL,GAAmB,KAAKoC,SAAxB;IACA,IAAI,CAAC,KAAK,CAAApC,UAAV,EAAuB;MACrB;IADqB;IAGvB,KAAK,CAAAlW,SAAL,CAAgB+D,MAAhB,GAAyB,IAAzB;EALU;EAQZwE,UAAA,EAAY;IACV,IAAI,CAAC,KAAK,CAAA2N,UAAV,EAAuB;MACrB;IADqB;IAGvB,KAAK,CAAAA,UAAL,GAAmB,KAAnB;IACA,KAAK,CAAAlW,SAAL,CAAgB+D,MAAhB,GAAyB,KAAzB;EALU;EAQZ,IAAIuU,SAAJA,CAAA,EAAgB;IACd,OAAO,KAAK,CAAAtY,SAAL,CAAgB+D,MAAhB,KAA2B,KAAlC;EADc;AAxSC;AA6SnB,MAAM5G,yBAAN,SAAwC2B,iBAAxC,CAA0D;EACxDE,YAAYnD,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAAEoD,YAAA,EAAc,IAAhB;MAAsBC,YAAA,EAAc;IAApC,CAAlB;IACA,KAAKkR,WAAL,GAAmBvU,UAAA,CAAWE,IAAX,CAAgBqU,WAAnC;IACA,KAAKoI,YAAL,GAAoB3c,UAAA,CAAWE,IAAX,CAAgByc,YAApC;IACA,KAAKvP,oBAAL,GAA4B7O,yBAAA,CAAqB8C,QAAjD;EAJsB;EAOxBwK,OAAA,EAAS;IACP,KAAK1H,SAAL,CAAeoB,SAAf,CAAyBC,GAAzB,CAA6B,oBAA7B;IAEA,IAAI,KAAK+O,WAAT,EAAsB;MACpB,MAAMhF,OAAA,GAAUzK,QAAA,CAASC,aAAT,CAAuB,KAAvB,CAAhB;MACAwK,OAAA,CAAQhK,SAAR,CAAkBC,GAAlB,CAAsB,uBAAtB;MACA+J,OAAA,CAAQvK,YAAR,CAAqB,MAArB,EAA6B,SAA7B;MACA,WAAWsX,IAAX,IAAmB,KAAK/H,WAAxB,EAAqC;QACnC,MAAMqI,QAAA,GAAW9X,QAAA,CAASC,aAAT,CAAuB,MAAvB,CAAjB;QACA6X,QAAA,CAASrI,WAAT,GAAuB+H,IAAvB;QACA/M,OAAA,CAAQtE,MAAR,CAAe2R,QAAf;MAHmC;MAKrC,KAAKzY,SAAL,CAAe8G,MAAf,CAAsBsE,OAAtB;IAToB;IAYtB,IAAI,CAAC,KAAKrP,IAAL,CAAUmF,QAAX,IAAuB,KAAKV,YAAhC,EAA8C;MAC5C,KAAK4G,YAAL;IAD4C;IAI9C,KAAK4B,kBAAL;IAEA,OAAO,KAAKhJ,SAAZ;EArBO;EAwBT,IAAI+I,WAAJA,CAAA,EAAkB;IAChB,OAAO,KAAKhN,IAAL,CAAU6F,YAAjB;EADgB;AAhCsC;AAqC1D,MAAMvE,qBAAN,SAAoCyB,iBAApC,CAAsD;EACpD,CAAAqZ,IAAA,GAAQ,IAAR;EAEAnZ,YAAYnD,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAAEoD,YAAA,EAAc,IAAhB;MAAsBC,YAAA,EAAc;IAApC,CAAlB;EADsB;EAIxBwI,OAAA,EAAS;IACP,KAAK1H,SAAL,CAAeoB,SAAf,CAAyBC,GAAzB,CAA6B,gBAA7B;IAKA,MAAMtF,IAAA,GAAO,KAAKA,IAAlB;IACA,MAAM;MAAEN,KAAF;MAASC;IAAT,IAAoBH,WAAA,CAAYQ,IAAA,CAAKP,IAAjB,CAA1B;IACA,MAAMoL,GAAA,GAAM,KAAKnH,UAAL,CAAgB7D,MAAhB,CACVH,KADU,EAEVC,MAFU,EAGa,IAHb,CAAZ;IAQA,MAAMyc,IAAA,GAAQ,KAAK,CAAAA,IAAL,GAAa,KAAK1Y,UAAL,CAAgBmB,aAAhB,CAA8B,UAA9B,CAA3B;IACAuX,IAAA,CAAKtX,YAAL,CAAkB,IAAlB,EAAwB9E,IAAA,CAAKP,IAAL,CAAU,CAAV,IAAeO,IAAA,CAAK2c,eAAL,CAAqB,CAArB,CAAvC;IACAP,IAAA,CAAKtX,YAAL,CAAkB,IAAlB,EAAwB9E,IAAA,CAAKP,IAAL,CAAU,CAAV,IAAeO,IAAA,CAAK2c,eAAL,CAAqB,CAArB,CAAvC;IACAP,IAAA,CAAKtX,YAAL,CAAkB,IAAlB,EAAwB9E,IAAA,CAAKP,IAAL,CAAU,CAAV,IAAeO,IAAA,CAAK2c,eAAL,CAAqB,CAArB,CAAvC;IACAP,IAAA,CAAKtX,YAAL,CAAkB,IAAlB,EAAwB9E,IAAA,CAAKP,IAAL,CAAU,CAAV,IAAeO,IAAA,CAAK2c,eAAL,CAAqB,CAArB,CAAvC;IAGAP,IAAA,CAAKtX,YAAL,CAAkB,cAAlB,EAAkC9E,IAAA,CAAKiG,WAAL,CAAiBvG,KAAjB,IAA0B,CAA5D;IACA0c,IAAA,CAAKtX,YAAL,CAAkB,QAAlB,EAA4B,aAA5B;IACAsX,IAAA,CAAKtX,YAAL,CAAkB,MAAlB,EAA0B,aAA1B;IAEA+F,GAAA,CAAIE,MAAJ,CAAWqR,IAAX;IACA,KAAKnY,SAAL,CAAe8G,MAAf,CAAsBF,GAAtB;IAIA,IAAI,CAAC7K,IAAA,CAAKmF,QAAN,IAAkB,KAAKV,YAA3B,EAAyC;MACvC,KAAK4G,YAAL;IADuC;IAIzC,OAAO,KAAKpH,SAAZ;EApCO;EAuCT0I,0BAAA,EAA4B;IAC1B,OAAO,KAAK,CAAAyP,IAAZ;EAD0B;EAI5BxP,iBAAA,EAAmB;IACjB,KAAK3I,SAAL,CAAeoB,SAAf,CAAyBC,GAAzB,CAA6B,eAA7B;EADiB;AAlDiC;AAuDtD,MAAM9D,uBAAN,SAAsCuB,iBAAtC,CAAwD;EACtD,CAAA6Z,MAAA,GAAU,IAAV;EAEA3Z,YAAYnD,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAAEoD,YAAA,EAAc,IAAhB;MAAsBC,YAAA,EAAc;IAApC,CAAlB;EADsB;EAIxBwI,OAAA,EAAS;IACP,KAAK1H,SAAL,CAAeoB,SAAf,CAAyBC,GAAzB,CAA6B,kBAA7B;IAKA,MAAMtF,IAAA,GAAO,KAAKA,IAAlB;IACA,MAAM;MAAEN,KAAF;MAASC;IAAT,IAAoBH,WAAA,CAAYQ,IAAA,CAAKP,IAAjB,CAA1B;IACA,MAAMoL,GAAA,GAAM,KAAKnH,UAAL,CAAgB7D,MAAhB,CACVH,KADU,EAEVC,MAFU,EAGa,IAHb,CAAZ;IASA,MAAMuG,WAAA,GAAclG,IAAA,CAAKiG,WAAL,CAAiBvG,KAArC;IACA,MAAMkd,MAAA,GAAU,KAAK,CAAAA,MAAL,GAAe,KAAKlZ,UAAL,CAAgBmB,aAAhB,CAA8B,UAA9B,CAA/B;IACA+X,MAAA,CAAO9X,YAAP,CAAoB,GAApB,EAAyBoB,WAAA,GAAc,CAAvC;IACA0W,MAAA,CAAO9X,YAAP,CAAoB,GAApB,EAAyBoB,WAAA,GAAc,CAAvC;IACA0W,MAAA,CAAO9X,YAAP,CAAoB,OAApB,EAA6BpF,KAAA,GAAQwG,WAArC;IACA0W,MAAA,CAAO9X,YAAP,CAAoB,QAApB,EAA8BnF,MAAA,GAASuG,WAAvC;IAGA0W,MAAA,CAAO9X,YAAP,CAAoB,cAApB,EAAoCoB,WAAA,IAAe,CAAnD;IACA0W,MAAA,CAAO9X,YAAP,CAAoB,QAApB,EAA8B,aAA9B;IACA8X,MAAA,CAAO9X,YAAP,CAAoB,MAApB,EAA4B,aAA5B;IAEA+F,GAAA,CAAIE,MAAJ,CAAW6R,MAAX;IACA,KAAK3Y,SAAL,CAAe8G,MAAf,CAAsBF,GAAtB;IAIA,IAAI,CAAC7K,IAAA,CAAKmF,QAAN,IAAkB,KAAKV,YAA3B,EAAyC;MACvC,KAAK4G,YAAL;IADuC;IAIzC,OAAO,KAAKpH,SAAZ;EAtCO;EAyCT0I,0BAAA,EAA4B;IAC1B,OAAO,KAAK,CAAAiQ,MAAZ;EAD0B;EAI5BhQ,iBAAA,EAAmB;IACjB,KAAK3I,SAAL,CAAeoB,SAAf,CAAyBC,GAAzB,CAA6B,eAA7B;EADiB;AApDmC;AAyDxD,MAAM5D,uBAAN,SAAsCqB,iBAAtC,CAAwD;EACtD,CAAA8Z,MAAA,GAAU,IAAV;EAEA5Z,YAAYnD,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAAEoD,YAAA,EAAc,IAAhB;MAAsBC,YAAA,EAAc;IAApC,CAAlB;EADsB;EAIxBwI,OAAA,EAAS;IACP,KAAK1H,SAAL,CAAeoB,SAAf,CAAyBC,GAAzB,CAA6B,kBAA7B;IAKA,MAAMtF,IAAA,GAAO,KAAKA,IAAlB;IACA,MAAM;MAAEN,KAAF;MAASC;IAAT,IAAoBH,WAAA,CAAYQ,IAAA,CAAKP,IAAjB,CAA1B;IACA,MAAMoL,GAAA,GAAM,KAAKnH,UAAL,CAAgB7D,MAAhB,CACVH,KADU,EAEVC,MAFU,EAGa,IAHb,CAAZ;IASA,MAAMuG,WAAA,GAAclG,IAAA,CAAKiG,WAAL,CAAiBvG,KAArC;IACA,MAAMmd,MAAA,GAAU,KAAK,CAAAA,MAAL,GACd,KAAKnZ,UAAL,CAAgBmB,aAAhB,CAA8B,aAA9B,CADF;IAEAgY,MAAA,CAAO/X,YAAP,CAAoB,IAApB,EAA0BpF,KAAA,GAAQ,CAAlC;IACAmd,MAAA,CAAO/X,YAAP,CAAoB,IAApB,EAA0BnF,MAAA,GAAS,CAAnC;IACAkd,MAAA,CAAO/X,YAAP,CAAoB,IAApB,EAA0BpF,KAAA,GAAQ,CAAR,GAAYwG,WAAA,GAAc,CAApD;IACA2W,MAAA,CAAO/X,YAAP,CAAoB,IAApB,EAA0BnF,MAAA,GAAS,CAAT,GAAauG,WAAA,GAAc,CAArD;IAGA2W,MAAA,CAAO/X,YAAP,CAAoB,cAApB,EAAoCoB,WAAA,IAAe,CAAnD;IACA2W,MAAA,CAAO/X,YAAP,CAAoB,QAApB,EAA8B,aAA9B;IACA+X,MAAA,CAAO/X,YAAP,CAAoB,MAApB,EAA4B,aAA5B;IAEA+F,GAAA,CAAIE,MAAJ,CAAW8R,MAAX;IACA,KAAK5Y,SAAL,CAAe8G,MAAf,CAAsBF,GAAtB;IAIA,IAAI,CAAC7K,IAAA,CAAKmF,QAAN,IAAkB,KAAKV,YAA3B,EAAyC;MACvC,KAAK4G,YAAL;IADuC;IAIzC,OAAO,KAAKpH,SAAZ;EAvCO;EA0CT0I,0BAAA,EAA4B;IAC1B,OAAO,KAAK,CAAAkQ,MAAZ;EAD0B;EAI5BjQ,iBAAA,EAAmB;IACjB,KAAK3I,SAAL,CAAeoB,SAAf,CAAyBC,GAAzB,CAA6B,eAA7B;EADiB;AArDmC;AA0DxD,MAAM1D,yBAAN,SAAwCmB,iBAAxC,CAA0D;EACxD,CAAA+Z,QAAA,GAAY,IAAZ;EAEA7Z,YAAYnD,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAAEoD,YAAA,EAAc,IAAhB;MAAsBC,YAAA,EAAc;IAApC,CAAlB;IAEA,KAAK4Z,kBAAL,GAA0B,oBAA1B;IACA,KAAKC,cAAL,GAAsB,cAAtB;EAJsB;EAOxBrR,OAAA,EAAS;IACP,KAAK1H,SAAL,CAAeoB,SAAf,CAAyBC,GAAzB,CAA6B,KAAKyX,kBAAlC;IAKA,MAAM/c,IAAA,GAAO,KAAKA,IAAlB;IACA,MAAM;MAAEN,KAAF;MAASC;IAAT,IAAoBH,WAAA,CAAYQ,IAAA,CAAKP,IAAjB,CAA1B;IACA,MAAMoL,GAAA,GAAM,KAAKnH,UAAL,CAAgB7D,MAAhB,CACVH,KADU,EAEVC,MAFU,EAGa,IAHb,CAAZ;IAUA,IAAIsd,MAAA,GAAS,EAAb;IACA,WAAWC,UAAX,IAAyBld,IAAA,CAAKmd,QAA9B,EAAwC;MACtC,MAAM7gB,CAAA,GAAI4gB,UAAA,CAAW5gB,CAAX,GAAe0D,IAAA,CAAKP,IAAL,CAAU,CAAV,CAAzB;MACA,MAAM/C,CAAA,GAAIsD,IAAA,CAAKP,IAAL,CAAU,CAAV,IAAeyd,UAAA,CAAWxgB,CAApC;MACAugB,MAAA,CAAO9R,IAAP,CAAY7O,CAAA,GAAI,GAAJ,GAAUI,CAAtB;IAHsC;IAKxCugB,MAAA,GAASA,MAAA,CAAOvf,IAAP,CAAY,GAAZ,CAAT;IAEA,MAAMof,QAAA,GAAY,KAAK,CAAAA,QAAL,GAAiB,KAAKpZ,UAAL,CAAgBmB,aAAhB,CACjC,KAAKmY,cAD4B,CAAnC;IAGAF,QAAA,CAAShY,YAAT,CAAsB,QAAtB,EAAgCmY,MAAhC;IAGAH,QAAA,CAAShY,YAAT,CAAsB,cAAtB,EAAsC9E,IAAA,CAAKiG,WAAL,CAAiBvG,KAAjB,IAA0B,CAAhE;IACAod,QAAA,CAAShY,YAAT,CAAsB,QAAtB,EAAgC,aAAhC;IACAgY,QAAA,CAAShY,YAAT,CAAsB,MAAtB,EAA8B,aAA9B;IAEA+F,GAAA,CAAIE,MAAJ,CAAW+R,QAAX;IACA,KAAK7Y,SAAL,CAAe8G,MAAf,CAAsBF,GAAtB;IAIA,IAAI,CAAC7K,IAAA,CAAKmF,QAAN,IAAkB,KAAKV,YAA3B,EAAyC;MACvC,KAAK4G,YAAL;IADuC;IAIzC,OAAO,KAAKpH,SAAZ;EA7CO;EAgDT0I,0BAAA,EAA4B;IAC1B,OAAO,KAAK,CAAAmQ,QAAZ;EAD0B;EAI5BlQ,iBAAA,EAAmB;IACjB,KAAK3I,SAAL,CAAeoB,SAAf,CAAyBC,GAAzB,CAA6B,eAA7B;EADiB;AA9DqC;AAmE1D,MAAMpD,wBAAN,SAAuCN,yBAAvC,CAAiE;EAC/DqB,YAAYnD,UAAZ,EAAwB;IAEtB,MAAMA,UAAN;IAEA,KAAKid,kBAAL,GAA0B,mBAA1B;IACA,KAAKC,cAAL,GAAsB,aAAtB;EALsB;AADuC;AAUjE,MAAMlb,sBAAN,SAAqCiB,iBAArC,CAAuD;EACrDE,YAAYnD,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAAEoD,YAAA,EAAc,IAAhB;MAAsBC,YAAA,EAAc;IAApC,CAAlB;EADsB;EAIxBwI,OAAA,EAAS;IACP,KAAK1H,SAAL,CAAeoB,SAAf,CAAyBC,GAAzB,CAA6B,iBAA7B;IAEA,IAAI,CAAC,KAAKtF,IAAL,CAAUmF,QAAX,IAAuB,KAAKV,YAAhC,EAA8C;MAC5C,KAAK4G,YAAL;IAD4C;IAG9C,OAAO,KAAKpH,SAAZ;EANO;AAL4C;AAevD,MAAMjC,oBAAN,SAAmCe,iBAAnC,CAAqD;EACnD,CAAAqa,SAAA,GAAa,EAAb;EAEAna,YAAYnD,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAAEoD,YAAA,EAAc,IAAhB;MAAsBC,YAAA,EAAc;IAApC,CAAlB;IAEA,KAAK4Z,kBAAL,GAA0B,eAA1B;IAIA,KAAKC,cAAL,GAAsB,cAAtB;IACA,KAAK9P,oBAAL,GAA4B7O,yBAAA,CAAqB0D,GAAjD;EARsB;EAWxB4J,OAAA,EAAS;IACP,KAAK1H,SAAL,CAAeoB,SAAf,CAAyBC,GAAzB,CAA6B,KAAKyX,kBAAlC;IAIA,MAAM/c,IAAA,GAAO,KAAKA,IAAlB;IACA,MAAM;MAAEN,KAAF;MAASC;IAAT,IAAoBH,WAAA,CAAYQ,IAAA,CAAKP,IAAjB,CAA1B;IACA,MAAMoL,GAAA,GAAM,KAAKnH,UAAL,CAAgB7D,MAAhB,CACVH,KADU,EAEVC,MAFU,EAGa,IAHb,CAAZ;IAMA,WAAW0d,OAAX,IAAsBrd,IAAA,CAAKsd,QAA3B,EAAqC;MAKnC,IAAIL,MAAA,GAAS,EAAb;MACA,WAAWC,UAAX,IAAyBG,OAAzB,EAAkC;QAChC,MAAM/gB,CAAA,GAAI4gB,UAAA,CAAW5gB,CAAX,GAAe0D,IAAA,CAAKP,IAAL,CAAU,CAAV,CAAzB;QACA,MAAM/C,CAAA,GAAIsD,IAAA,CAAKP,IAAL,CAAU,CAAV,IAAeyd,UAAA,CAAWxgB,CAApC;QACAugB,MAAA,CAAO9R,IAAP,CAAY,GAAG7O,CAAE,IAAGI,CAAR,EAAZ;MAHgC;MAKlCugB,MAAA,GAASA,MAAA,CAAOvf,IAAP,CAAY,GAAZ,CAAT;MAEA,MAAMof,QAAA,GAAW,KAAKpZ,UAAL,CAAgBmB,aAAhB,CAA8B,KAAKmY,cAAnC,CAAjB;MACA,KAAK,CAAAI,SAAL,CAAgBjS,IAAhB,CAAqB2R,QAArB;MACAA,QAAA,CAAShY,YAAT,CAAsB,QAAtB,EAAgCmY,MAAhC;MAGAH,QAAA,CAAShY,YAAT,CAAsB,cAAtB,EAAsC9E,IAAA,CAAKiG,WAAL,CAAiBvG,KAAjB,IAA0B,CAAhE;MACAod,QAAA,CAAShY,YAAT,CAAsB,QAAtB,EAAgC,aAAhC;MACAgY,QAAA,CAAShY,YAAT,CAAsB,MAAtB,EAA8B,aAA9B;MAIA,IAAI,CAAC9E,IAAA,CAAKmF,QAAN,IAAkB,KAAKV,YAA3B,EAAyC;QACvC,KAAK4G,YAAL;MADuC;MAIzCR,GAAA,CAAIE,MAAJ,CAAW+R,QAAX;IA5BmC;IA+BrC,KAAK7Y,SAAL,CAAe8G,MAAf,CAAsBF,GAAtB;IACA,OAAO,KAAK5G,SAAZ;EA7CO;EAgDT0I,0BAAA,EAA4B;IAC1B,OAAO,KAAK,CAAAyQ,SAAZ;EAD0B;EAI5BxQ,iBAAA,EAAmB;IACjB,KAAK3I,SAAL,CAAeoB,SAAf,CAAyBC,GAAzB,CAA6B,eAA7B;EADiB;AAlEgC;AAuErD,MAAMlD,0BAAN,SAAyCW,iBAAzC,CAA2D;EACzDE,YAAYnD,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAChBoD,YAAA,EAAc,IADE;MAEhBC,YAAA,EAAc,IAFE;MAGhBC,oBAAA,EAAsB;IAHN,CAAlB;EADsB;EAQxBuI,OAAA,EAAS;IACP,IAAI,CAAC,KAAK3L,IAAL,CAAUmF,QAAX,IAAuB,KAAKV,YAAhC,EAA8C;MAC5C,KAAK4G,YAAL;IAD4C;IAI9C,KAAKpH,SAAL,CAAeoB,SAAf,CAAyBC,GAAzB,CAA6B,qBAA7B;IACA,OAAO,KAAKrB,SAAZ;EANO;AATgD;AAmB3D,MAAM3B,0BAAN,SAAyCS,iBAAzC,CAA2D;EACzDE,YAAYnD,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAChBoD,YAAA,EAAc,IADE;MAEhBC,YAAA,EAAc,IAFE;MAGhBC,oBAAA,EAAsB;IAHN,CAAlB;EADsB;EAQxBuI,OAAA,EAAS;IACP,IAAI,CAAC,KAAK3L,IAAL,CAAUmF,QAAX,IAAuB,KAAKV,YAAhC,EAA8C;MAC5C,KAAK4G,YAAL;IAD4C;IAI9C,KAAKpH,SAAL,CAAeoB,SAAf,CAAyBC,GAAzB,CAA6B,qBAA7B;IACA,OAAO,KAAKrB,SAAZ;EANO;AATgD;AAmB3D,MAAMzB,yBAAN,SAAwCO,iBAAxC,CAA0D;EACxDE,YAAYnD,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAChBoD,YAAA,EAAc,IADE;MAEhBC,YAAA,EAAc,IAFE;MAGhBC,oBAAA,EAAsB;IAHN,CAAlB;EADsB;EAQxBuI,OAAA,EAAS;IACP,IAAI,CAAC,KAAK3L,IAAL,CAAUmF,QAAX,IAAuB,KAAKV,YAAhC,EAA8C;MAC5C,KAAK4G,YAAL;IAD4C;IAI9C,KAAKpH,SAAL,CAAeoB,SAAf,CAAyBC,GAAzB,CAA6B,oBAA7B;IACA,OAAO,KAAKrB,SAAZ;EANO;AAT+C;AAmB1D,MAAMvB,0BAAN,SAAyCK,iBAAzC,CAA2D;EACzDE,YAAYnD,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAChBoD,YAAA,EAAc,IADE;MAEhBC,YAAA,EAAc,IAFE;MAGhBC,oBAAA,EAAsB;IAHN,CAAlB;EADsB;EAQxBuI,OAAA,EAAS;IACP,IAAI,CAAC,KAAK3L,IAAL,CAAUmF,QAAX,IAAuB,KAAKV,YAAhC,EAA8C;MAC5C,KAAK4G,YAAL;IAD4C;IAI9C,KAAKpH,SAAL,CAAeoB,SAAf,CAAyBC,GAAzB,CAA6B,qBAA7B;IACA,OAAO,KAAKrB,SAAZ;EANO;AATgD;AAmB3D,MAAMrB,sBAAN,SAAqCG,iBAArC,CAAuD;EACrDE,YAAYnD,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAAEoD,YAAA,EAAc,IAAhB;MAAsBC,YAAA,EAAc;IAApC,CAAlB;EADsB;EAIxBwI,OAAA,EAAS;IACP,KAAK1H,SAAL,CAAeoB,SAAf,CAAyBC,GAAzB,CAA6B,iBAA7B;IAEA,IAAI,CAAC,KAAKtF,IAAL,CAAUmF,QAAX,IAAuB,KAAKV,YAAhC,EAA8C;MAC5C,KAAK4G,YAAL;IAD4C;IAG9C,OAAO,KAAKpH,SAAZ;EANO;AAL4C;AAevD,MAAMnB,+BAAN,SAA8CC,iBAA9C,CAAgE;EAC9D,CAAAsX,OAAA,GAAW,IAAX;EAEApX,YAAYnD,UAAZ,EAAwB;IACtB,MAAMA,UAAN,EAAkB;MAAEoD,YAAA,EAAc;IAAhB,CAAlB;IAEA,MAAM;MAAEoM,QAAF;MAAYD;IAAZ,IAAwB,KAAKrP,IAAL,CAAUud,IAAxC;IACA,KAAKjO,QAAL,GAAgBvQ,oCAAA,CAAmBuQ,QAAnB,EAAmD,IAAnD,CAAhB;IACA,KAAKD,OAAL,GAAeA,OAAf;IAEA,KAAK/L,WAAL,CAAiBgK,QAAjB,EAA2BC,QAA3B,CAAoC,0BAApC,EAAgE;MAC9DC,MAAA,EAAQ,IADsD;MAE9D8B,QAF8D;MAG9DD;IAH8D,CAAhE;EAPsB;EAcxB1D,OAAA,EAAS;IACP,KAAK1H,SAAL,CAAeoB,SAAf,CAAyBC,GAAzB,CAA6B,0BAA7B;IAEA,MAAM;MAAErB,SAAF;MAAajE;IAAb,IAAsB,IAA5B;IACA,IAAIqa,OAAJ;IACA,IAAIra,IAAA,CAAK8T,aAAL,IAAsB9T,IAAA,CAAKwd,SAAL,KAAmB,CAA7C,EAAgD;MAC9CnD,OAAA,GAAUzV,QAAA,CAASC,aAAT,CAAuB,KAAvB,CAAV;IAD8C,CAAhD,MAEO;MAMLwV,OAAA,GAAUzV,QAAA,CAASC,aAAT,CAAuB,KAAvB,CAAV;MACAwV,OAAA,CAAQvJ,GAAR,GAAc,GAAG,KAAKtN,kBAAmB,cACvC,aAAaia,IAAb,CAAkBzd,IAAA,CAAKuJ,IAAvB,IAA+B,WAA/B,GAA6C,SAC9C,MAFD;MAIA,IAAIvJ,IAAA,CAAKwd,SAAL,IAAkBxd,IAAA,CAAKwd,SAAL,GAAiB,CAAvC,EAA0C;QACxCnD,OAAA,CAAQpV,KAAR,GAAiB,mBAAkBlJ,IAAA,CAAKsX,KAAL,CACjCrT,IAAA,CAAKwd,SAAL,GAAiB,GADgB,CAEjC,KAFF;MADwC;IAXrC;IAqBPnD,OAAA,CAAQhN,gBAAR,CAAyB,UAAzB,EAAqC,KAAK,CAAAqQ,QAAL,CAAe9D,IAAf,CAAoB,IAApB,CAArC;IACA,KAAK,CAAAS,OAAL,GAAgBA,OAAhB;IAEA,MAAM;MAAE7I;IAAF,IAAYhT,gBAAA,CAAY+S,QAA9B;IACAtN,SAAA,CAAUoJ,gBAAV,CAA2B,SAA3B,EAAsCsQ,GAAA,IAAO;MAC3C,IAAIA,GAAA,CAAIzJ,GAAJ,KAAY,OAAZ,KAAwB1C,KAAA,GAAQmM,GAAA,CAAIlM,OAAZ,GAAsBkM,GAAA,CAAIjM,OAA1B,CAA5B,EAAgE;QAC9D,KAAK,CAAAgM,QAAL;MAD8D;IADrB,CAA7C;IAMA,IAAI,CAAC1d,IAAA,CAAKmF,QAAN,IAAkB,KAAKV,YAA3B,EAAyC;MACvC,KAAK4G,YAAL;IADuC,CAAzC,MAEO;MACLgP,OAAA,CAAQhV,SAAR,CAAkBC,GAAlB,CAAsB,kBAAtB;IADK;IAIPrB,SAAA,CAAU8G,MAAV,CAAiBsP,OAAjB;IACA,OAAOpW,SAAP;EA7CO;EAgDT0I,0BAAA,EAA4B;IAC1B,OAAO,KAAK,CAAA0N,OAAZ;EAD0B;EAI5BzN,iBAAA,EAAmB;IACjB,KAAK3I,SAAL,CAAeoB,SAAf,CAAyBC,GAAzB,CAA6B,eAA7B;EADiB;EAOnB,CAAAoY,SAAA,EAAY;IACV,KAAKna,eAAL,EAAsB6L,kBAAtB,CAAyC,KAAKC,OAA9C,EAAuD,KAAKC,QAA5D;EADU;AA5EkD;AAwGhE,MAAMsO,eAAN,CAAsB;EACpB,CAAAC,oBAAA,GAAwB,IAAxB;EAEA,CAAAC,mBAAA,GAAuB,IAAvB;EAEA,CAAAC,mBAAA,GAAuB,IAAIvO,GAAJ,EAAvB;EAEAvM,YAAY;IACVyI,GADU;IAEVmS,oBAFU;IAGVC,mBAHU;IAIVpZ,IAJU;IAKVC;EALU,CAAZ,EAMG;IACD,KAAK+G,GAAL,GAAWA,GAAX;IACA,KAAK,CAAAmS,oBAAL,GAA6BA,oBAA7B;IACA,KAAK,CAAAC,mBAAL,GAA4BA,mBAA5B;IACA,KAAKpZ,IAAL,GAAYA,IAAZ;IACA,KAAKC,QAAL,GAAgBA,QAAhB;IACA,KAAKO,MAAL,GAAc,CAAd;EANC;EAqBH,CAAA8Y,cAAepU,OAAf,EAAwB7E,EAAxB,EAA4B;IAC1B,MAAMkZ,cAAA,GAAiBrU,OAAA,CAAQsU,UAAR,IAAsBtU,OAA7C;IACAqU,cAAA,CAAelZ,EAAf,GAAoB,GAAGzG,qBAAH,GAAsByG,EAAtB,EAApB;IAEA,KAAK2G,GAAL,CAASX,MAAT,CAAgBnB,OAAhB;IACA,KAAK,CAAAiU,oBAAL,EAA4BM,gBAA5B,CACE,KAAKzS,GADP,EAEE9B,OAFF,EAGEqU,cAHF,EAIsB,KAJtB;EAL0B;EAmB5B,MAAMtS,MAANA,CAAayS,MAAb,EAAqB;IACnB,MAAM;MAAEC;IAAF,IAAkBD,MAAxB;IACA,MAAM/a,KAAA,GAAQ,KAAKqI,GAAnB;IACAzM,oCAAA,CAAmBoE,KAAnB,EAA0B,KAAKsB,QAA/B;IAEA,MAAM2Z,eAAA,GAAkB,IAAI9O,GAAJ,EAAxB;IACA,MAAM+O,aAAA,GAAgB;MACpBve,IAAA,EAAM,IADc;MAEpBqD,KAFoB;MAGpBC,WAAA,EAAa8a,MAAA,CAAO9a,WAHA;MAIpBC,eAAA,EAAiB6a,MAAA,CAAO7a,eAJJ;MAKpBC,kBAAA,EAAoB4a,MAAA,CAAO5a,kBAAP,IAA6B,EAL7B;MAMpBC,WAAA,EAAa2a,MAAA,CAAO3a,WAAP,KAAuB,KANhB;MAOpBC,UAAA,EAAY,IAAI5E,2BAAJ,EAPQ;MAQpB6E,iBAAA,EAAmBya,MAAA,CAAOza,iBAAP,IAA4B,IAAIzE,oCAAJ,EAR3B;MASpB0E,eAAA,EAAiBwa,MAAA,CAAOxa,eAAP,KAA2B,IATxB;MAUpBC,YAAA,EAAcua,MAAA,CAAOva,YAVD;MAWpBE,YAAA,EAAcqa,MAAA,CAAOra,YAXD;MAYpBC,MAAA,EAAQ,IAZY;MAapByH,QAAA,EAAU;IAbU,CAAtB;IAgBA,WAAWzL,IAAX,IAAmBqe,WAAnB,EAAgC;MAC9B,IAAIre,IAAA,CAAKwe,MAAT,EAAiB;QACf;MADe;MAGjB,MAAMC,iBAAA,GAAoBze,IAAA,CAAKC,cAAL,KAAwB1B,mBAAA,CAAe0C,KAAjE;MACA,IAAI,CAACwd,iBAAL,EAAwB;QACtB,MAAM;UAAE/e,KAAF;UAASC;QAAT,IAAoBH,WAAA,CAAYQ,IAAA,CAAKP,IAAjB,CAA1B;QACA,IAAIC,KAAA,IAAS,CAAT,IAAcC,MAAA,IAAU,CAA5B,EAA+B;UAC7B;QAD6B;MAFT,CAAxB,MAKO;QACL,MAAM8L,QAAA,GAAW6S,eAAA,CAAgB7O,GAAhB,CAAoBzP,IAAA,CAAK+E,EAAzB,CAAjB;QACA,IAAI,CAAC0G,QAAL,EAAe;UAEb;QAFa;QAIf8S,aAAA,CAAc9S,QAAd,GAAyBA,QAAzB;MANK;MAQP8S,aAAA,CAAcve,IAAd,GAAqBA,IAArB;MACA,MAAM4J,OAAA,GAAUhK,wBAAA,CAAyBC,MAAzB,CAAgC0e,aAAhC,CAAhB;MAEA,IAAI,CAAC3U,OAAA,CAAQ1G,YAAb,EAA2B;QACzB;MADyB;MAI3B,IAAI,CAACub,iBAAD,IAAsBze,IAAA,CAAKmF,QAA/B,EAAyC;QACvC,MAAMsG,QAAA,GAAW6S,eAAA,CAAgB7O,GAAhB,CAAoBzP,IAAA,CAAKmF,QAAzB,CAAjB;QACA,IAAI,CAACsG,QAAL,EAAe;UACb6S,eAAA,CAAgBI,GAAhB,CAAoB1e,IAAA,CAAKmF,QAAzB,EAAmC,CAACyE,OAAD,CAAnC;QADa,CAAf,MAEO;UACL6B,QAAA,CAASN,IAAT,CAAcvB,OAAd;QADK;MAJgC;MASzC,IAAIA,OAAA,CAAQsD,oBAAR,GAA+B,CAAnC,EAAsC;QACpC,KAAK,CAAA6Q,mBAAL,CAA0BW,GAA1B,CAA8B9U,OAAA,CAAQ5J,IAAR,CAAa+E,EAA3C,EAA+C6E,OAA/C;MADoC;MAItC,MAAM+U,QAAA,GAAW/U,OAAA,CAAQ+B,MAAR,EAAjB;MACA,IAAI3L,IAAA,CAAKgI,MAAT,EAAiB;QACf2W,QAAA,CAAS1Z,KAAT,CAAegD,UAAf,GAA4B,QAA5B;MADe;MAGjB,KAAK,CAAA+V,aAAL,CAAoBW,QAApB,EAA8B3e,IAAA,CAAK+E,EAAnC;IA1C8B;IA6ChC,KAAK,CAAA6Z,sBAAL;EAnEmB;EA4ErBC,OAAO;IAAEla;EAAF,CAAP,EAAqB;IACnB,MAAMtB,KAAA,GAAQ,KAAKqI,GAAnB;IACA,KAAK/G,QAAL,GAAgBA,QAAhB;IACA1F,oCAAA,CAAmBoE,KAAnB,EAA0B;MAAEuC,QAAA,EAAUjB,QAAA,CAASiB;IAArB,CAA1B;IAEA,KAAK,CAAAgZ,sBAAL;IACAvb,KAAA,CAAM2E,MAAN,GAAe,KAAf;EANmB;EASrB,CAAA4W,uBAAA,EAA0B;IACxB,IAAI,CAAC,KAAK,CAAAd,mBAAV,EAAgC;MAC9B;IAD8B;IAGhC,MAAMza,KAAA,GAAQ,KAAKqI,GAAnB;IACA,WAAW,CAAC3G,EAAD,EAAK+Z,MAAL,CAAX,IAA2B,KAAK,CAAAhB,mBAAhC,EAAsD;MACpD,MAAMlU,OAAA,GAAUvG,KAAA,CAAM8I,aAAN,CAAqB,wBAAuBpH,EAAG,IAA/C,CAAhB;MACA,IAAI,CAAC6E,OAAL,EAAc;QACZ;MADY;MAId,MAAM;QAAEsU;MAAF,IAAiBtU,OAAvB;MACA,IAAI,CAACsU,UAAL,EAAiB;QACftU,OAAA,CAAQmB,MAAR,CAAe+T,MAAf;MADe,CAAjB,MAEO,IAAIZ,UAAA,CAAW7M,QAAX,KAAwB,QAA5B,EAAsC;QAC3C6M,UAAA,CAAWa,WAAX,CAAuBD,MAAvB;MAD2C,CAAtC,MAEA;QACLZ,UAAA,CAAWhF,MAAX,CAAkB4F,MAAlB;MADK;IAX6C;IAetD,KAAK,CAAAhB,mBAAL,CAA0BhF,KAA1B;EApBwB;EAuB1BkG,uBAAA,EAAyB;IACvB,OAAOlS,KAAA,CAAMmS,IAAN,CAAW,KAAK,CAAAlB,mBAAL,CAA0B5N,MAA1B,EAAX,CAAP;EADuB;EAIzB+O,sBAAsBna,EAAtB,EAA0B;IACxB,OAAO,KAAK,CAAAgZ,mBAAL,CAA0BtO,GAA1B,CAA8B1K,EAA9B,CAAP;EADwB;AArKN;;;;;;;;;;;;;;;;AC50FtB;AACA;AACA;AAEA,MAAMua,iBAAA,GAAoB9V,MAAA,CAAO+V,MAAP,CAAc;EACtC/hB,GAAA,EAAK,IADiC;EAEtCgiB,IAAA,EAAM,EAFgC;EAGtCC,QAAA,EAAUnK;AAH4B,CAAd,CAA1B;AASA,MAAMpW,iBAAN,CAAwB;EACtB,CAAAwgB,QAAA,GAAY,KAAZ;EAEA,CAAArP,OAAA,GAAW,IAAIb,GAAJ,EAAX;EAEAvM,YAAA,EAAc;IAKZ,KAAK0c,aAAL,GAAqB,IAArB;IACA,KAAKC,eAAL,GAAuB,IAAvB;IACA,KAAKC,kBAAL,GAA0B,IAA1B;EAPY;EAgBdzL,SAASF,GAAT,EAAczD,YAAd,EAA4B;IAC1B,MAAMD,KAAA,GAAQ,KAAK,CAAAH,OAAL,CAAcZ,GAAd,CAAkByE,GAAlB,CAAd;IACA,IAAI1D,KAAA,KAAU8E,SAAd,EAAyB;MACvB,OAAO7E,YAAP;IADuB;IAIzB,OAAOjH,MAAA,CAAOsW,MAAP,CAAcrP,YAAd,EAA4BD,KAA5B,CAAP;EAN0B;EAc5B1G,YAAYoK,GAAZ,EAAiB;IACf,OAAO,KAAK,CAAA7D,OAAL,CAAcZ,GAAd,CAAkByE,GAAlB,CAAP;EADe;EAQjB8D,OAAO9D,GAAP,EAAY;IACV,KAAK,CAAA7D,OAAL,CAAc0P,MAAd,CAAqB7L,GAArB;IAEA,IAAI,KAAK,CAAA7D,OAAL,CAAciH,IAAd,KAAuB,CAA3B,EAA8B;MAC5B,KAAK0I,aAAL;IAD4B;IAI9B,IAAI,OAAO,KAAKH,kBAAZ,KAAmC,UAAvC,EAAmD;MACjD,WAAWrP,KAAX,IAAoB,KAAK,CAAAH,OAAL,CAAcF,MAAd,EAApB,EAA4C;QAC1C,IAAIK,KAAA,YAAiB4O,+DAArB,EAAuC;UACrC;QADqC;MADG;MAK5C,KAAKS,kBAAL,CAAwB,IAAxB;IANiD;EAPzC;EAsBZ/X,SAASoM,GAAT,EAAc1D,KAAd,EAAqB;IACnB,MAAMyP,GAAA,GAAM,KAAK,CAAA5P,OAAL,CAAcZ,GAAd,CAAkByE,GAAlB,CAAZ;IACA,IAAIwL,QAAA,GAAW,KAAf;IACA,IAAIO,GAAA,KAAQ3K,SAAZ,EAAuB;MACrB,WAAW,CAAC4K,KAAD,EAAQC,GAAR,CAAX,IAA2B3W,MAAA,CAAOQ,OAAP,CAAewG,KAAf,CAA3B,EAAkD;QAChD,IAAIyP,GAAA,CAAIC,KAAJ,MAAeC,GAAnB,EAAwB;UACtBT,QAAA,GAAW,IAAX;UACAO,GAAA,CAAIC,KAAJ,IAAaC,GAAb;QAFsB;MADwB;IAD7B,CAAvB,MAOO;MACLT,QAAA,GAAW,IAAX;MACA,KAAK,CAAArP,OAAL,CAAcqO,GAAd,CAAkBxK,GAAlB,EAAuB1D,KAAvB;IAFK;IAIP,IAAIkP,QAAJ,EAAc;MACZ,KAAK,CAAAU,WAAL;IADY;IAId,IACE5P,KAAA,YAAiB4O,+DAAjB,IACA,OAAO,KAAKS,kBAAZ,KAAmC,UAFrC,EAGE;MACA,KAAKA,kBAAL,CAAwBrP,KAAA,CAAMvN,WAAN,CAAkBod,KAA1C;IADA;EArBiB;EA+BrBjU,IAAI8H,GAAJ,EAAS;IACP,OAAO,KAAK,CAAA7D,OAAL,CAAcjE,GAAd,CAAkB8H,GAAlB,CAAP;EADO;EAOToM,OAAA,EAAS;IACP,OAAO,KAAK,CAAAjQ,OAAL,CAAciH,IAAd,GAAqB,CAArB,GAAyB6H,8DAAA,CAAc,KAAK,CAAA9O,OAAnB,CAAzB,GAAwD,IAA/D;EADO;EAOTkQ,OAAON,GAAP,EAAY;IACV,WAAW,CAAC/L,GAAD,EAAMiM,GAAN,CAAX,IAAyB3W,MAAA,CAAOQ,OAAP,CAAeiW,GAAf,CAAzB,EAA8C;MAC5C,KAAKnY,QAAL,CAAcoM,GAAd,EAAmBiM,GAAnB;IAD4C;EADpC;EAMZ,IAAI7I,IAAJA,CAAA,EAAW;IACT,OAAO,KAAK,CAAAjH,OAAL,CAAciH,IAArB;EADS;EAIX,CAAA8I,YAAA,EAAe;IACb,IAAI,CAAC,KAAK,CAAAV,QAAV,EAAqB;MACnB,KAAK,CAAAA,QAAL,GAAiB,IAAjB;MACA,IAAI,OAAO,KAAKC,aAAZ,KAA8B,UAAlC,EAA8C;QAC5C,KAAKA,aAAL;MAD4C;IAF3B;EADR;EASfK,cAAA,EAAgB;IACd,IAAI,KAAK,CAAAN,QAAT,EAAoB;MAClB,KAAK,CAAAA,QAAL,GAAiB,KAAjB;MACA,IAAI,OAAO,KAAKE,eAAZ,KAAgC,UAApC,EAAgD;QAC9C,KAAKA,eAAL;MAD8C;IAF9B;EADN;EAYhB,IAAIxX,KAAJA,CAAA,EAAY;IACV,OAAO,IAAIoY,sBAAJ,CAA2B,IAA3B,CAAP;EADU;EAQZ,IAAIC,YAAJA,CAAA,EAAmB;IACjB,IAAI,KAAK,CAAApQ,OAAL,CAAciH,IAAd,KAAuB,CAA3B,EAA8B;MAC5B,OAAOgI,iBAAP;IAD4B;IAG9B,MAAM9hB,GAAA,GAAM,IAAIgS,GAAJ,EAAZ;MACEgQ,IAAA,GAAO,IAAIH,kEAAJ,EADT;MAEEI,QAAA,GAAW,EAFb;IAGA,MAAMiB,OAAA,GAAUlX,MAAA,CAAO3J,MAAP,CAAc,IAAd,CAAhB;IACA,IAAI8gB,SAAA,GAAY,KAAhB;IAEA,WAAW,CAACzM,GAAD,EAAMiM,GAAN,CAAX,IAAyB,KAAK,CAAA9P,OAA9B,EAAwC;MACtC,MAAMuQ,UAAA,GACJT,GAAA,YAAef,+DAAf,GACIe,GAAA,CAAIU,SAAJ,CAAmC,KAAnC,EAA0CH,OAA1C,CADJ,GAEIP,GAHN;MAIA,IAAIS,UAAJ,EAAgB;QACdpjB,GAAA,CAAIkhB,GAAJ,CAAQxK,GAAR,EAAa0M,UAAb;QAEApB,IAAA,CAAKX,MAAL,CAAY,GAAG3K,GAAI,IAAGlD,IAAA,CAAKC,SAAL,CAAe2P,UAAf,CAAV,EAAZ;QACAD,SAAA,KAAc,CAAC,CAACC,UAAA,CAAWE,MAA3B;MAJc;IALsB;IAaxC,IAAIH,SAAJ,EAAe;MAGb,WAAWnQ,KAAX,IAAoBhT,GAAA,CAAI2S,MAAJ,EAApB,EAAkC;QAChC,IAAIK,KAAA,CAAMsQ,MAAV,EAAkB;UAChBrB,QAAA,CAAStU,IAAT,CAAcqF,KAAA,CAAMsQ,MAApB;QADgB;MADc;IAHrB;IAUf,OAAOtjB,GAAA,CAAI8Z,IAAJ,GAAW,CAAX,GACH;MAAE9Z,GAAF;MAAOgiB,IAAA,EAAMA,IAAA,CAAKuB,SAAL,EAAb;MAA+BtB;IAA/B,CADG,GAEHH,iBAFJ;EAjCiB;AArJG;AAiMxB,MAAMkB,sBAAN,SAAqCthB,iBAArC,CAAuD;EACrD,CAAAuhB,YAAA;EAEAxd,YAAYe,MAAZ,EAAoB;IAClB;IACA,MAAM;MAAExG,GAAF;MAAOgiB,IAAP;MAAaC;IAAb,IAA0Bzb,MAAA,CAAOyc,YAAvC;IAEA,MAAMO,KAAA,GAAQC,eAAA,CAAgBzjB,GAAhB,EAAqBiiB,QAAA,GAAW;MAAEA;IAAF,CAAX,GAA0B,IAA/C,CAAd;IAEA,KAAK,CAAAgB,YAAL,GAAqB;MAAEjjB,GAAA,EAAKwjB,KAAP;MAAcxB,IAAd;MAAoBC;IAApB,CAArB;EANkB;EAapB,IAAIrX,KAAJA,CAAA,EAAY;IACVzJ,4DAAA,CAAY,8CAAZ;EADU;EAQZ,IAAI8hB,YAAJA,CAAA,EAAmB;IACjB,OAAO,KAAK,CAAAA,YAAZ;EADiB;AAxBkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1MvD;AAsBA;AAKA;AAWA;AACA;AAMA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA,MAAMmD,wBAAA,GAA2B,KAAjC;AACA,MAAMC,2BAAA,GAA8B,GAApC;AACA,MAAMC,uBAAA,GAA0B,IAAhC;AAEA,MAAMC,oBAAA,GAC2DtC,qDAA/D,GACIqB,iEADJ,GAEIX,+DAHN;AAIA,MAAM6B,wBAAA,GAC2DvC,qDAA/D,GACIsB,qEADJ,GAEIX,mEAHN;AAIA,MAAM6B,oBAAA,GAC2DxC,qDAA/D,GACIuB,iEADJ,GAEIX,+DAHN;AAIA,MAAM6B,8BAAA,GAC2DzC,qDAA/D,GACIwB,2EADJ,GAEIX,yEAHN;AA6IA,SAAS6B,WAATA,CAAqBrT,GAArB,EAA0B;EAEtB,IAAI,OAAOA,GAAP,KAAe,QAAf,IAA2BA,GAAA,YAAesT,GAA9C,EAAmD;IACjDtT,GAAA,GAAM;MAAEjD,GAAA,EAAKiD;IAAP,CAAN;EADiD,CAAnD,MAEO,IAAI0Q,8DAAA,CAAc1Q,GAAd,CAAJ,EAAwB;IAC7BA,GAAA,GAAM;MAAE9Q,IAAA,EAAM8Q;IAAR,CAAN;EAD6B;EAIjC,IAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;IAC3B,MAAM,IAAIuT,KAAJ,CAAU,0DAAV,CAAN;EAD2B;EAG7B,IAAI,CAACvT,GAAA,CAAIjD,GAAL,IAAY,CAACiD,GAAA,CAAI9Q,IAAjB,IAAyB,CAAC8Q,GAAA,CAAIwT,KAAlC,EAAyC;IACvC,MAAM,IAAID,KAAJ,CACJ,6DADI,CAAN;EADuC;EAKzC,MAAME,IAAA,GAAO,IAAIC,sBAAJ,EAAb;EACA,MAAM;IAAEC;EAAF,IAAYF,IAAlB;EAEA,MAAM1W,GAAA,GAAMiD,GAAA,CAAIjD,GAAJ,GAAU6W,UAAA,CAAW5T,GAAA,CAAIjD,GAAf,CAAV,GAAgC,IAA5C;EACA,MAAM7N,IAAA,GAAO8Q,GAAA,CAAI9Q,IAAJ,GAAW2kB,WAAA,CAAY7T,GAAA,CAAI9Q,IAAhB,CAAX,GAAmC,IAAhD;EACA,MAAM4kB,WAAA,GAAc9T,GAAA,CAAI8T,WAAJ,IAAmB,IAAvC;EACA,MAAMC,eAAA,GAAkB/T,GAAA,CAAI+T,eAAJ,KAAwB,IAAhD;EACA,MAAMC,QAAA,GAAWhU,GAAA,CAAIgU,QAAJ,IAAgB,IAAjC;EACA,MAAMC,cAAA,GACJjU,GAAA,CAAIwT,KAAJ,YAAqBU,qBAArB,GAA6ClU,GAAA,CAAIwT,KAAjD,GAAyD,IAD3D;EAEA,MAAMW,cAAA,GACJC,MAAA,CAAOC,SAAP,CAAiBrU,GAAA,CAAImU,cAArB,KAAwCnU,GAAA,CAAImU,cAAJ,GAAqB,CAA7D,GACInU,GAAA,CAAImU,cADR,GAEIrB,wBAHN;EAIA,IAAIwB,MAAA,GAAStU,GAAA,CAAIsU,MAAJ,YAAsBC,SAAtB,GAAkCvU,GAAA,CAAIsU,MAAtC,GAA+C,IAA5D;EACA,MAAME,SAAA,GAAYxU,GAAA,CAAIwU,SAAtB;EAIA,MAAMC,UAAA,GACJ,OAAOzU,GAAA,CAAIyU,UAAX,KAA0B,QAA1B,IAAsC,CAAChD,+DAAA,CAAazR,GAAA,CAAIyU,UAAjB,CAAvC,GACIzU,GAAA,CAAIyU,UADR,GAEI,IAHN;EAIA,MAAMC,OAAA,GAAU,OAAO1U,GAAA,CAAI0U,OAAX,KAAuB,QAAvB,GAAkC1U,GAAA,CAAI0U,OAAtC,GAAgD,IAAhE;EACA,MAAMC,UAAA,GAAa3U,GAAA,CAAI2U,UAAJ,KAAmB,KAAtC;EACA,MAAMC,iBAAA,GAAoB5U,GAAA,CAAI4U,iBAAJ,IAAyB1B,wBAAnD;EACA,MAAM2B,mBAAA,GACJ,OAAO7U,GAAA,CAAI6U,mBAAX,KAAmC,QAAnC,GACI7U,GAAA,CAAI6U,mBADR,GAEI,IAHN;EAIA,MAAMC,uBAAA,GACJ9U,GAAA,CAAI8U,uBAAJ,IAA+B1B,8BADjC;EAEA,MAAM2B,YAAA,GAAe/U,GAAA,CAAIgV,YAAJ,KAAqB,IAA1C;EACA,MAAMC,YAAA,GACJb,MAAA,CAAOC,SAAP,CAAiBrU,GAAA,CAAIiV,YAArB,KAAsCjV,GAAA,CAAIiV,YAAJ,GAAmB,CAAC,CAA1D,GACIjV,GAAA,CAAIiV,YADR,GAEI,CAAC,CAHP;EAIA,MAAMC,eAAA,GAAkBlV,GAAA,CAAIkV,eAAJ,KAAwB,KAAhD;EACA,MAAMC,0BAAA,GACJ,OAAOnV,GAAA,CAAImV,0BAAX,KAA0C,SAA1C,GACInV,GAAA,CAAImV,0BADR,GAEI,CAACxE,qDAHP;EAIA,MAAMyE,oBAAA,GAAuBhB,MAAA,CAAOC,SAAP,CAAiBrU,GAAA,CAAIoV,oBAArB,IACzBpV,GAAA,CAAIoV,oBADqB,GAEzB,CAAC,CAFL;EAGA,MAAMC,eAAA,GACJ,OAAOrV,GAAA,CAAIqV,eAAX,KAA+B,SAA/B,GAA2CrV,GAAA,CAAIqV,eAA/C,GAAiE1E,qDADnE;EAEA,MAAM2E,mBAAA,GAAsBtV,GAAA,CAAIsV,mBAAJ,KAA4B,IAAxD;EACA,MAAMC,SAAA,GAAYvV,GAAA,CAAIuV,SAAJ,KAAkB,IAApC;EACA,MAAMC,aAAA,GAAgBxV,GAAA,CAAIwV,aAAJ,IAAqBC,UAAA,CAAW3hB,QAAtD;EACA,MAAM4hB,YAAA,GAAe1V,GAAA,CAAI0V,YAAJ,KAAqB,IAA1C;EACA,MAAMC,aAAA,GAAgB3V,GAAA,CAAI2V,aAAJ,KAAsB,IAA5C;EACA,MAAMC,gBAAA,GAAmB5V,GAAA,CAAI4V,gBAAJ,KAAyB,IAAlD;EACA,MAAMC,MAAA,GAAS7V,GAAA,CAAI6V,MAAJ,KAAe,IAA9B;EAGA,MAAMpc,MAAA,GAASwa,cAAA,GAAiBA,cAAA,CAAexa,MAAhC,GAAyCuG,GAAA,CAAIvG,MAAJ,IAAcqc,GAAtE;EACA,MAAMC,cAAA,GACJ,OAAO/V,GAAA,CAAI+V,cAAX,KAA8B,SAA9B,GACI/V,GAAA,CAAI+V,cADR,GAEI,CAACpF,qDAAD,IAAa,CAAC0E,eAHpB;EAIA,MAAMW,cAAA,GACJ,OAAOhW,GAAA,CAAIgW,cAAX,KAA8B,SAA9B,GACIhW,GAAA,CAAIgW,cADR,GAGKpB,iBAAA,KAAsBtD,mEAAtB,IACCwD,uBAAA,KAA4BtD,yEAD7B,IAECkD,OAFD,IAGCG,mBAHD,IAICnD,kEAAA,CAAgBgD,OAAhB,EAAyB5gB,QAAA,CAASmiB,OAAlC,CAJD,IAKCvE,kEAAA,CAAgBmD,mBAAhB,EAAqC/gB,QAAA,CAASmiB,OAA9C,CATR;EAUA,MAAMC,aAAA,GACJlW,GAAA,CAAIkW,aAAJ,IAAqB,IAAIjD,oBAAJ,CAAyB;IAAEuC;EAAF,CAAzB,CADvB;EAEA,MAAMW,aAAA,GACJnW,GAAA,CAAImW,aAAJ,IAAqB,IAAIhD,oBAAJ,CAAyB;IAAEQ,KAAF;IAAS6B;EAAT,CAAzB,CADvB;EAIA,MAAMY,YAAA,GAGA,IAHN;EAMAnF,kEAAA,CAAkBuD,SAAlB;EAIA,MAAM6B,gBAAA,GAAmB;IACvBH,aADuB;IAEvBC;EAFuB,CAAzB;EAIA,IAAI,CAACH,cAAL,EAAqB;IACnBK,gBAAA,CAAiBC,iBAAjB,GAAqC,IAAI1B,iBAAJ,CAAsB;MACzD2B,OAAA,EAAS7B,OADgD;MAEzD8B,YAAA,EAAc7B;IAF2C,CAAtB,CAArC;IAIA0B,gBAAA,CAAiBI,uBAAjB,GAA2C,IAAI3B,uBAAJ,CAA4B;MACrEyB,OAAA,EAAS1B;IAD4D,CAA5B,CAA3C;EALmB;EAUrB,IAAI,CAACP,MAAL,EAAa;IACX,MAAMoC,YAAA,GAAe;MACnBlC,SADmB;MAEnBmC,IAAA,EAAMtE,mEAAA,CAAoBuE;IAFP,CAArB;IAMAtC,MAAA,GAASoC,YAAA,CAAaC,IAAb,GACLpC,SAAA,CAAUsC,QAAV,CAAmBH,YAAnB,CADK,GAEL,IAAInC,SAAJ,CAAcmC,YAAd,CAFJ;IAGAjD,IAAA,CAAKqD,OAAL,GAAexC,MAAf;EAVW;EAab,MAAMyC,cAAA,GAAiB;IACrBpD,KADqB;IAErBqD,UAAA,EAEM,SAJe;IAMrB9nB,IANqB;IAOrB8kB,QAPqB;IAQrB4B,gBARqB;IASrBzB,cATqB;IAUrB1a,MAVqB;IAWrBgb,UAXqB;IAYrBc,SAZqB;IAarB0B,gBAAA,EAAkB;MAChBhC,YADgB;MAEhBI,eAFgB;MAGhBN,YAHgB;MAIhBG,eAJgB;MAKhBC,0BALgB;MAMhBC,oBANgB;MAOhBE,mBAPgB;MAQhBS,cARgB;MAShBrB,OAAA,EAASsB,cAAA,GAAiBtB,OAAjB,GAA2B,IATpB;MAUhBG,mBAAA,EAAqBmB,cAAA,GAAiBnB,mBAAjB,GAAuC;IAV5C;EAbG,CAAvB;EA0BA,MAAMqC,eAAA,GAAkB;IACtBnC,YADsB;IAEtBG,eAFsB;IAGtBG,eAHsB;IAItBC,mBAJsB;IAKtBC,SALsB;IAMtBC,aANsB;IAOtBI,gBAPsB;IAQtBC,MARsB;IAStBO;EATsB,CAAxB;EAYA9B,MAAA,CAAO6C,OAAP,CACGC,IADH,CACQ,YAAY;IAChB,IAAI3D,IAAA,CAAK4D,SAAT,EAAoB;MAClB,MAAM,IAAI9D,KAAJ,CAAU,iBAAV,CAAN;IADkB;IAIpB,MAAM+D,eAAA,GAAkBC,cAAA,CAAejD,MAAf,EAAuByC,cAAvB,CAAxB;IACA,MAAMS,oBAAA,GAAuB,IAAIC,OAAJ,CAAY,UAAUC,OAAV,EAAmB;MAC1D,IAAIC,aAAJ;MACA,IAAI1D,cAAJ,EAAoB;QAClB0D,aAAA,GAAgB,IAAIlF,yEAAJ,CACd;UACEhZ,MADF;UAEEme,WAAA,EAAa3D,cAAA,CAAe2D,WAF9B;UAGEC,eAAA,EAAiB5D,cAAA,CAAe4D,eAHlC;UAIEC,0BAAA,EACE7D,cAAA,CAAe6D,0BALnB;UAMEpC,YANF;UAOEC;QAPF,CADc,EAUd1B,cAVc,CAAhB;MADkB,CAApB,MAaO,IAAI,CAAC/kB,IAAL,EAAW;QAIhB,MAAM6oB,sBAAA,GAAyBzK,MAAA,IAAU;UACvC,IAGEqD,qDAHF,EAIE;YACA,OAAO,IAAIiC,+DAAJ,CAAkBtF,MAAlB,CAAP;UADA;UAGF,OAAOoE,kEAAA,CAAgBpE,MAAA,CAAOvQ,GAAvB,IACH,IAAI2V,iEAAJ,CAAmBpF,MAAnB,CADG,GAEH,IAAIqF,8DAAJ,CAAqBrF,MAArB,CAFJ;QARuC,CAAzC;QAaAqK,aAAA,GAAgBI,sBAAA,CAAuB;UACrChb,GADqC;UAErCtD,MAFqC;UAGrCqa,WAHqC;UAIrCC,eAJqC;UAKrCI,cALqC;UAMrCuB,YANqC;UAOrCC;QAPqC,CAAvB,CAAhB;MAjBgB;MA2BlB+B,OAAA,CAAQC,aAAR;IA1C0D,CAA/B,CAA7B;IA6CA,OAAOF,OAAA,CAAQO,GAAR,CAAY,CAACV,eAAD,EAAkBE,oBAAlB,CAAZ,EAAqDJ,IAArD,CACL,UAAU,CAACa,QAAD,EAAWN,aAAX,CAAV,EAAqC;MACnC,IAAIlE,IAAA,CAAK4D,SAAT,EAAoB;QAClB,MAAM,IAAI9D,KAAJ,CAAU,iBAAV,CAAN;MADkB;MAIpB,MAAM2E,cAAA,GAAiB,IAAI5F,sEAAJ,CACrBqB,KADqB,EAErBsE,QAFqB,EAGrB3D,MAAA,CAAOqC,IAHc,CAAvB;MAKA,MAAMwB,SAAA,GAAY,IAAIC,eAAJ,CAChBF,cADgB,EAEhBzE,IAFgB,EAGhBkE,aAHgB,EAIhBT,eAJgB,EAKhBb,gBALgB,CAAlB;MAOA5C,IAAA,CAAK4E,UAAL,GAAkBF,SAAlB;MACAD,cAAA,CAAeI,IAAf,CAAoB,OAApB,EAA6B,IAA7B;IAlBmC,CADhC,CAAP;EAnDgB,CADpB,EA2EGC,KA3EH,CA2ES9E,IAAA,CAAK+E,WAAL,CAAiBC,MA3E1B;EA6EA,OAAOhF,IAAP;AArPwB;AAiQ1B,eAAe8D,cAAfA,CAA8BjD,MAA9B,EAAsC5X,MAAtC,EAA8C;EAC5C,IAAI4X,MAAA,CAAO+C,SAAX,EAAsB;IACpB,MAAM,IAAI9D,KAAJ,CAAU,sBAAV,CAAN;EADoB;EAGtB,MAAM0E,QAAA,GAAW,MAAM3D,MAAA,CAAO4D,cAAP,CAAsBQ,eAAtB,CACrB,eADqB,EAErBhc,MAFqB,EAGrBA,MAAA,CAAOxN,IAAP,GAAc,CAACwN,MAAA,CAAOxN,IAAP,CAAYypB,MAAb,CAAd,GAAqC,IAHhB,CAAvB;EAMA,IAAIrE,MAAA,CAAO+C,SAAX,EAAsB;IACpB,MAAM,IAAI9D,KAAJ,CAAU,sBAAV,CAAN;EADoB;EAGtB,OAAO0E,QAAP;AAb4C;AAgB9C,SAASrE,UAATA,CAAoBvE,GAApB,EAAyB;EAIvB,IAAIA,GAAA,YAAeiE,GAAnB,EAAwB;IACtB,OAAOjE,GAAA,CAAIrR,IAAX;EADsB;EAGxB,IAAI;IAEF,OAAO,IAAIsV,GAAJ,CAAQjE,GAAR,EAAauJ,MAAA,CAAOC,QAApB,EAA8B7a,IAArC;EAFE,CAAJ,CAGE,MAAM;IACN,IAGE2S,qDAFA,IAGA,OAAOtB,GAAP,KAAe,QAJjB,EAKE;MACA,OAAOA,GAAP;IADA;EANI;EAUR,MAAM,IAAIkE,KAAJ,CACJ,2BACE,8DAFE,CAAN;AApBuB;AA0BzB,SAASM,WAATA,CAAqBxE,GAArB,EAA0B;EAExB,IAGEsB,qDAFA,IAGA,OAAOmI,MAAP,KAAkB,WAHlB,IAIAzJ,GAAA,YAAeyJ,MALjB,EAME;IACA,MAAM,IAAIvF,KAAJ,CACJ,mEADI,CAAN;EADA;EAKF,IAAIlE,GAAA,YAAe0J,UAAf,IAA6B1J,GAAA,CAAI2J,UAAJ,KAAmB3J,GAAA,CAAIsJ,MAAJ,CAAWK,UAA/D,EAA2E;IAIzE,OAAO3J,GAAP;EAJyE;EAM3E,IAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;IAC3B,OAAO6B,8DAAA,CAAc7B,GAAd,CAAP;EAD2B;EAG7B,IAAK,OAAOA,GAAP,KAAe,QAAf,IAA2B,CAAC4J,KAAA,CAAM5J,GAAA,EAAK5V,MAAX,CAA7B,IAAoDiX,8DAAA,CAAcrB,GAAd,CAAxD,EAA4E;IAC1E,OAAO,IAAI0J,UAAJ,CAAe1J,GAAf,CAAP;EAD0E;EAG5E,MAAM,IAAIkE,KAAJ,CACJ,iDACE,gEAFE,CAAN;AAzBwB;AA0C1B,MAAMG,sBAAN,CAA6B;EAC3B,OAAO,CAAAC,KAAP,GAAgB,CAAhB;EAEAxhB,YAAA,EAAc;IACZ,KAAKqmB,WAAL,GAAmB,IAAIzH,8DAAJ,EAAnB;IACA,KAAKsH,UAAL,GAAkB,IAAlB;IACA,KAAKvB,OAAL,GAAe,IAAf;IAMA,KAAKnD,KAAL,GAAc,IAAGD,sBAAA,CAAuB,CAAAC,KAAvB,EAAJ,EAAb;IAMA,KAAK0D,SAAL,GAAiB,KAAjB;IAQA,KAAK6B,UAAL,GAAkB,IAAlB;IAQA,KAAKC,UAAL,GAAkB,IAAlB;EA/BY;EAsCd,IAAIhC,OAAJA,CAAA,EAAc;IACZ,OAAO,KAAKqB,WAAL,CAAiBrB,OAAxB;EADY;EASd,MAAMiC,OAANA,CAAA,EAAgB;IACd,KAAK/B,SAAL,GAAiB,IAAjB;IACA,IAAI;MACF,IAAI,KAAKP,OAAL,EAAcH,IAAlB,EAAwB;QACtB,KAAKG,OAAL,CAAauC,eAAb,GAA+B,IAA/B;MADsB;MAGxB,MAAM,KAAKhB,UAAL,EAAiBe,OAAjB,EAAN;IAJE,CAAJ,CAKE,OAAOE,EAAP,EAAW;MACX,IAAI,KAAKxC,OAAL,EAAcH,IAAlB,EAAwB;QACtB,OAAO,KAAKG,OAAL,CAAauC,eAApB;MADsB;MAGxB,MAAMC,EAAN;IAJW;IAOb,KAAKjB,UAAL,GAAkB,IAAlB;IACA,IAAI,KAAKvB,OAAT,EAAkB;MAChB,KAAKA,OAAL,CAAasC,OAAb;MACA,KAAKtC,OAAL,GAAe,IAAf;IAFgB;EAfJ;AAlDW;AA+E7B,MAAM5C,qBAAN,CAA4B;EAO1B/hB,YACEsH,MADF,EAEEme,WAFF,EAGEC,eAAA,GAAkB,KAHpB,EAIEC,0BAAA,GAA6B,IAJ/B,EAKE;IACA,KAAKre,MAAL,GAAcA,MAAd;IACA,KAAKme,WAAL,GAAmBA,WAAnB;IACA,KAAKC,eAAL,GAAuBA,eAAvB;IACA,KAAKC,0BAAL,GAAkCA,0BAAlC;IAEA,KAAKyB,eAAL,GAAuB,EAAvB;IACA,KAAKC,kBAAL,GAA0B,EAA1B;IACA,KAAKC,yBAAL,GAAiC,EAAjC;IACA,KAAKC,yBAAL,GAAiC,EAAjC;IACA,KAAKC,gBAAL,GAAwB,IAAI5I,8DAAJ,EAAxB;EAVA;EAgBF6I,iBAAiBC,QAAjB,EAA2B;IACzB,KAAKN,eAAL,CAAqBlf,IAArB,CAA0Bwf,QAA1B;EADyB;EAO3BC,oBAAoBD,QAApB,EAA8B;IAC5B,KAAKL,kBAAL,CAAwBnf,IAAxB,CAA6Bwf,QAA7B;EAD4B;EAO9BE,2BAA2BF,QAA3B,EAAqC;IACnC,KAAKJ,yBAAL,CAA+Bpf,IAA/B,CAAoCwf,QAApC;EADmC;EAOrCG,2BAA2BH,QAA3B,EAAqC;IACnC,KAAKH,yBAAL,CAA+Brf,IAA/B,CAAoCwf,QAApC;EADmC;EAQrCI,YAAYC,KAAZ,EAAmBC,KAAnB,EAA0B;IACxB,WAAWN,QAAX,IAAuB,KAAKN,eAA5B,EAA6C;MAC3CM,QAAA,CAASK,KAAT,EAAgBC,KAAhB;IAD2C;EADrB;EAU1BC,eAAeC,MAAf,EAAuBC,KAAvB,EAA8B;IAC5B,KAAKX,gBAAL,CAAsBxC,OAAtB,CAA8BC,IAA9B,CAAmC,MAAM;MACvC,WAAWyC,QAAX,IAAuB,KAAKL,kBAA5B,EAAgD;QAC9CK,QAAA,CAASQ,MAAT,EAAiBC,KAAjB;MAD8C;IADT,CAAzC;EAD4B;EAW9BC,sBAAsBJ,KAAtB,EAA6B;IAC3B,KAAKR,gBAAL,CAAsBxC,OAAtB,CAA8BC,IAA9B,CAAmC,MAAM;MACvC,WAAWyC,QAAX,IAAuB,KAAKJ,yBAA5B,EAAuD;QACrDI,QAAA,CAASM,KAAT;MADqD;IADhB,CAAzC;EAD2B;EAQ7BK,sBAAA,EAAwB;IACtB,KAAKb,gBAAL,CAAsBxC,OAAtB,CAA8BC,IAA9B,CAAmC,MAAM;MACvC,WAAWyC,QAAX,IAAuB,KAAKH,yBAA5B,EAAuD;QACrDG,QAAA;MADqD;IADhB,CAAzC;EADsB;EAQxBY,eAAA,EAAiB;IACf,KAAKd,gBAAL,CAAsBjC,OAAtB;EADe;EAQjBgD,iBAAiBR,KAAjB,EAAwBS,GAAxB,EAA6B;IAC3B9sB,4DAAA,CAAY,wDAAZ;EAD2B;EAI7B+sB,MAAA,EAAQ;AA1GkB;AAgH5B,MAAMC,gBAAN,CAAuB;EACrB1oB,YAAY2oB,OAAZ,EAAqB3C,SAArB,EAAgC;IAC9B,KAAK4C,QAAL,GAAgBD,OAAhB;IACA,KAAKzC,UAAL,GAAkBF,SAAlB;EAF8B;EA2BhC,IAAItlB,iBAAJA,CAAA,EAAwB;IACtB,OAAO,KAAKwlB,UAAL,CAAgBxlB,iBAAvB;EADsB;EAOxB,IAAIsjB,aAAJA,CAAA,EAAoB;IAClB,OAAO,KAAKkC,UAAL,CAAgBlC,aAAvB;EADkB;EAOpB,IAAI6E,QAAJA,CAAA,EAAe;IACb,OAAO,KAAKD,QAAL,CAAcC,QAArB;EADa;EAUf,IAAIC,YAAJA,CAAA,EAAmB;IACjB,OAAO,KAAKF,QAAL,CAAcE,YAArB;EADiB;EAOnB,IAAIC,SAAJA,CAAA,EAAgB;IACd,OAAOttB,uDAAA,CAAO,IAAP,EAAa,WAAb,EAA0B,CAAC,CAAC,KAAKyqB,UAAL,CAAgB8C,WAA5C,CAAP;EADc;EAUhB,IAAIC,UAAJA,CAAA,EAAiB;IACf,OAAO,KAAK/C,UAAL,CAAgB8C,WAAvB;EADe;EASjBE,QAAQC,UAAR,EAAoB;IAClB,OAAO,KAAKjD,UAAL,CAAgBgD,OAAhB,CAAwBC,UAAxB,CAAP;EADkB;EASpBC,aAAaC,GAAb,EAAkB;IAChB,OAAO,KAAKnD,UAAL,CAAgBkD,YAAhB,CAA6BC,GAA7B,CAAP;EADgB;EAUlBC,gBAAA,EAAkB;IAChB,OAAO,KAAKpD,UAAL,CAAgBoD,eAAhB,EAAP;EADgB;EAUlBC,eAAeznB,EAAf,EAAmB;IACjB,OAAO,KAAKokB,UAAL,CAAgBqD,cAAhB,CAA+BznB,EAA/B,CAAP;EADiB;EASnB0nB,cAAA,EAAgB;IACd,OAAO,KAAKtD,UAAL,CAAgBsD,aAAhB,EAAP;EADc;EAQhBC,cAAA,EAAgB;IACd,OAAO,KAAKvD,UAAL,CAAgBuD,aAAhB,EAAP;EADc;EAQhBC,YAAA,EAAc;IACZ,OAAO,KAAKxD,UAAL,CAAgBwD,WAAhB,EAAP;EADY;EASdC,qBAAA,EAAuB;IACrB,OAAO,KAAKzD,UAAL,CAAgByD,oBAAhB,EAAP;EADqB;EASvBC,cAAA,EAAgB;IACd,OAAO,KAAK1D,UAAL,CAAgB0D,aAAhB,EAAP;EADc;EAQhBC,eAAA,EAAiB;IACf,OAAO,KAAK3D,UAAL,CAAgB2D,cAAhB,EAAP;EADe;EAWjBC,aAAA,EAAe;IACb,OAAO,KAAK5D,UAAL,CAAgB6D,eAAhB,EAAP;EADa;EAuBfC,WAAA,EAAa;IACX,OAAO,KAAK9D,UAAL,CAAgB8D,UAAhB,EAAP;EADW;EASbC,yBAAA,EAA2B;IACzB,OAAO,KAAK/D,UAAL,CAAgB+D,wBAAhB,EAAP;EADyB;EAS3BC,eAAA,EAAiB;IACf,OAAO,KAAKhE,UAAL,CAAgBgE,cAAhB,EAAP;EADe;EAWjBC,YAAA,EAAc;IACZ,OAAO,KAAKjE,UAAL,CAAgBiE,WAAhB,EAAP;EADY;EAiBdC,YAAA,EAAc;IACZ,OAAO,KAAKlE,UAAL,CAAgBkE,WAAhB,EAAP;EADY;EAQdC,QAAA,EAAU;IACR,OAAO,KAAKnE,UAAL,CAAgBmE,OAAhB,EAAP;EADQ;EAQVC,aAAA,EAAe;IACb,OAAO,KAAKpE,UAAL,CAAgBoE,YAAhB,EAAP;EADa;EASfC,gBAAA,EAAkB;IAChB,OAAO,KAAKrE,UAAL,CAAgBsE,sBAAhB,CAAuCxF,OAA9C;EADgB;EAgBlByF,QAAQC,eAAA,GAAkB,KAA1B,EAAiC;IAC/B,OAAO,KAAKxE,UAAL,CAAgByE,YAAhB,CAA6BD,eAAA,IAAmB,KAAK3B,SAArD,CAAP;EAD+B;EAOjC9B,QAAA,EAAU;IACR,OAAO,KAAK2D,WAAL,CAAiB3D,OAAjB,EAAP;EADQ;EAQV,IAAI4D,aAAJA,CAAA,EAAoB;IAClB,OAAO,KAAK3E,UAAL,CAAgB2E,aAAvB;EADkB;EAOpB,IAAID,WAAJA,CAAA,EAAkB;IAChB,OAAO,KAAK1E,UAAL,CAAgB0E,WAAvB;EADgB;EASlBE,gBAAA,EAAkB;IAChB,OAAO,KAAK5E,UAAL,CAAgB4E,eAAhB,EAAP;EADgB;EAQlBlqB,aAAA,EAAe;IACb,OAAO,KAAKslB,UAAL,CAAgBtlB,YAAhB,EAAP;EADa;EASfmqB,uBAAA,EAAyB;IACvB,OAAO,KAAK7E,UAAL,CAAgB6E,sBAAhB,EAAP;EADuB;AAvUJ;AA6fvB,MAAMC,YAAN,CAAmB;EACjB,CAAAC,qBAAA,GAAyB,IAAzB;EAEA,CAAAC,cAAA,GAAkB,KAAlB;EAEAlrB,YAAYmrB,SAAZ,EAAuBC,QAAvB,EAAiCpF,SAAjC,EAA4CtC,MAAA,GAAS,KAArD,EAA4D;IAC1D,KAAK2H,UAAL,GAAkBF,SAAlB;IACA,KAAKG,SAAL,GAAiBF,QAAjB;IACA,KAAKlF,UAAL,GAAkBF,SAAlB;IACA,KAAKuF,MAAL,GAAc7H,MAAA,GAAS,IAAIhE,wDAAJ,EAAT,GAA2B,IAAzC;IACA,KAAK8L,OAAL,GAAe9H,MAAf;IAEA,KAAK+H,UAAL,GAAkBzF,SAAA,CAAUyF,UAA5B;IACA,KAAKC,IAAL,GAAY,IAAIC,UAAJ,EAAZ;IAEA,KAAKC,wBAAL,GAAgC,KAAhC;IACA,KAAKC,aAAL,GAAqB,IAAItf,GAAJ,EAArB;IACA,KAAK2Y,SAAL,GAAiB,KAAjB;EAZ0D;EAkB5D,IAAIiE,UAAJA,CAAA,EAAiB;IACf,OAAO,KAAKkC,UAAL,GAAkB,CAAzB;EADe;EAOjB,IAAIS,MAAJA,CAAA,EAAa;IACX,OAAO,KAAKR,SAAL,CAAeQ,MAAtB;EADW;EAOb,IAAIzC,GAAJA,CAAA,EAAU;IACR,OAAO,KAAKiC,SAAL,CAAejC,GAAtB;EADQ;EAOV,IAAI0C,QAAJA,CAAA,EAAe;IACb,OAAO,KAAKT,SAAL,CAAeS,QAAtB;EADa;EAQf,IAAIhpB,IAAJA,CAAA,EAAW;IACT,OAAO,KAAKuoB,SAAL,CAAevoB,IAAtB;EADS;EASXipB,YAAY;IACVC,KADU;IAEVtpB,QAAA,GAAW,KAAKmpB,MAFN;IAGVI,OAAA,GAAU,CAHA;IAIVC,OAAA,GAAU,CAJA;IAKVC,QAAA,GAAW;EALD,IAMR,EANJ,EAMQ;IACN,OAAO,IAAI5M,2DAAJ,CAAiB;MACtB6M,OAAA,EAAS,KAAKtpB,IADQ;MAEtBkpB,KAFsB;MAGtBtpB,QAHsB;MAItBupB,OAJsB;MAKtBC,OALsB;MAMtBC;IANsB,CAAjB,CAAP;EADM;EAgBRE,eAAe;IAAEjU,MAAA,GAAS;EAAX,IAAyB,EAAxC,EAA4C;IAC1C,MAAMkU,UAAA,GAAa,KAAKrG,UAAL,CAAgBsG,kBAAhB,CAAmCnU,MAAnC,CAAnB;IAEA,OAAO,KAAK6N,UAAL,CAAgBoG,cAAhB,CACL,KAAKjB,UADA,EAELkB,UAAA,CAAWE,eAFN,CAAP;EAH0C;EAa5C3C,aAAA,EAAe;IACb,OAAO,KAAK5D,UAAL,CAAgBwG,gBAAhB,CAAiC,KAAKrB,UAAtC,CAAP;EADa;EAOf,IAAIrH,aAAJA,CAAA,EAAoB;IAClB,OAAO,KAAKkC,UAAL,CAAgBlC,aAAvB;EADkB;EAOpB,IAAI+E,SAAJA,CAAA,EAAgB;IACd,OAAOttB,uDAAA,CAAO,IAAP,EAAa,WAAb,EAA0B,CAAC,CAAC,KAAKyqB,UAAL,CAAgB8C,WAA5C,CAAP;EADc;EAUhB,MAAM2D,MAANA,CAAA,EAAe;IACb,OAAO,KAAKzG,UAAL,CAAgB8C,WAAhB,EAA6BhT,QAA7B,CAAsC,KAAKqV,UAA3C,KAA0D,IAAjE;EADa;EAWf3iB,OAAO;IACLkkB,aADK;IAELlrB,QAFK;IAGL2W,MAAA,GAAS,SAHJ;IAILwU,cAAA,GAAiB3O,2DAAA,CAAe4O,MAJ3B;IAKLC,SAAA,GAAY,IALP;IAMLC,UAAA,GAAa,IANR;IAOLC,4BAAA,GAA+B,IAP1B;IAQLpS,mBAAA,GAAsB,IARjB;IASLqS,UAAA,GAAa,IATR;IAULC,sBAAA,GAAyB;EAVpB,CAAP,EAWG;IACD,KAAK5B,MAAL,EAAatT,IAAb,CAAkB,SAAlB;IAEA,MAAMsU,UAAA,GAAa,KAAKrG,UAAL,CAAgBsG,kBAAhB,CACjBnU,MADiB,EAEjBwU,cAFiB,EAGjBM,sBAHiB,CAAnB;IAOA,KAAK,CAAAjC,cAAL,GAAuB,KAAvB;IAEA,KAAK,CAAAkC,mBAAL;IAEA,IAAI,CAACH,4BAAL,EAAmC;MACjCA,4BAAA,GAA+B,KAAK/G,UAAL,CAAgB+D,wBAAhB,EAA/B;IADiC;IAInC,IAAIoD,WAAA,GAAc,KAAKxB,aAAL,CAAmBrf,GAAnB,CAAuB+f,UAAA,CAAWe,QAAlC,CAAlB;IACA,IAAI,CAACD,WAAL,EAAkB;MAChBA,WAAA,GAAc9mB,MAAA,CAAO3J,MAAP,CAAc,IAAd,CAAd;MACA,KAAKivB,aAAL,CAAmBpQ,GAAnB,CAAuB8Q,UAAA,CAAWe,QAAlC,EAA4CD,WAA5C;IAFgB;IAMlB,IAAIA,WAAA,CAAYE,yBAAhB,EAA2C;MACzCC,YAAA,CAAaH,WAAA,CAAYE,yBAAzB;MACAF,WAAA,CAAYE,yBAAZ,GAAwC,IAAxC;IAFyC;IAK3C,MAAME,WAAA,GAAc,CAAC,EACnBlB,UAAA,CAAWE,eAAX,GAA6B5N,gEAAA,CAAoB6O,KAAjD,CADF;IAMA,IAAI,CAACL,WAAA,CAAYM,sBAAjB,EAAyC;MACvCN,WAAA,CAAYM,sBAAZ,GAAqC,IAAI/O,8DAAJ,EAArC;MACAyO,WAAA,CAAYO,YAAZ,GAA2B;QACzBC,OAAA,EAAS,EADgB;QAEzBC,SAAA,EAAW,EAFc;QAGzBC,SAAA,EAAW,KAHc;QAIzBC,cAAA,EAAgB;MAJS,CAA3B;MAOA,KAAKzC,MAAL,EAAatT,IAAb,CAAkB,cAAlB;MACA,KAAKgW,iBAAL,CAAuB1B,UAAvB;IAVuC;IAazC,MAAM2B,QAAA,GAAWC,KAAA,IAAS;MACxBd,WAAA,CAAYe,WAAZ,CAAwBtR,MAAxB,CAA+BuR,kBAA/B;MAIA,IAAI,KAAKzC,wBAAL,IAAiC6B,WAArC,EAAkD;QAChD,KAAK,CAAAvC,cAAL,GAAuB,IAAvB;MADgD;MAGlD,KAAK,CAAAoD,UAAL,CAAiC,CAACb,WAAlC;MAEA,IAAIU,KAAJ,EAAW;QACTE,kBAAA,CAAmBE,UAAnB,CAA8BjI,MAA9B,CAAqC6H,KAArC;QAEA,KAAKK,kBAAL,CAAwB;UACtBnB,WADsB;UAEtBoB,MAAA,EAAQN,KAAA,YAAiB/M,KAAjB,GAAyB+M,KAAzB,GAAiC,IAAI/M,KAAJ,CAAU+M,KAAV;QAFnB,CAAxB;MAHS,CAAX,MAOO;QACLE,kBAAA,CAAmBE,UAAnB,CAA8BhJ,OAA9B;MADK;MAIP,KAAKgG,MAAL,EAAamD,OAAb,CAAqB,WAArB;MACA,KAAKnD,MAAL,EAAamD,OAAb,CAAqB,SAArB;IAtBwB,CAA1B;IAyBA,MAAML,kBAAA,GAAqB,IAAIM,kBAAJ,CAAuB;MAChDC,QAAA,EAAUV,QADsC;MAGhD/S,MAAA,EAAQ;QACNyR,aADM;QAENlrB,QAFM;QAGNqrB,SAHM;QAINC;MAJM,CAHwC;MAShDtB,IAAA,EAAM,KAAKA,IATqC;MAUhDD,UAAA,EAAY,KAAKA,UAV+B;MAWhD5Q,mBAXgD;MAYhD+S,YAAA,EAAcP,WAAA,CAAYO,YAZsB;MAahDzC,SAAA,EAAW,KAAKE,UAbgC;MAchDtH,aAAA,EAAe,KAAKmC,UAAL,CAAgBnC,aAdiB;MAehDC,aAAA,EAAe,KAAKkC,UAAL,CAAgBlC,aAfiB;MAgBhD6K,wBAAA,EAA0B,CAACpB,WAhBqB;MAiBhD/J,MAAA,EAAQ,KAAK8H,OAjBmC;MAkBhD0B;IAlBgD,CAAvB,CAA3B;IAqBC,CAAAG,WAAA,CAAYe,WAAZ,KAA4B,IAAIphB,GAAJ,EAA5B,EAAuC3K,GAAxC,CAA4CgsB,kBAA5C;IACA,MAAMS,UAAA,GAAaT,kBAAA,CAAmB/M,IAAtC;IAEAgE,OAAA,CAAQO,GAAR,CAAY,CACVwH,WAAA,CAAYM,sBAAZ,CAAmC3I,OADzB,EAEViI,4BAFU,CAAZ,EAIGhI,IAJH,CAIQ,CAAC,CAAC8J,YAAD,EAAeC,qBAAf,CAAD,KAA2C;MAC/C,IAAI,KAAK9J,SAAT,EAAoB;QAClBgJ,QAAA;QACA;MAFkB;MAIpB,KAAK3C,MAAL,EAAatT,IAAb,CAAkB,WAAlB;MAEAoW,kBAAA,CAAmBY,kBAAnB,CAAsC;QACpCF,YADoC;QAEpCC;MAFoC,CAAtC;MAIAX,kBAAA,CAAmBa,mBAAnB;IAX+C,CAJnD,EAiBG9I,KAjBH,CAiBS8H,QAjBT;IAmBA,OAAOY,UAAP;EArHC;EA8HHK,gBAAgB;IACd9W,MAAA,GAAS,SADK;IAEdwU,cAAA,GAAiB3O,2DAAA,CAAe4O,MAFlB;IAGdK,sBAAA,GAAyB;EAHX,IAIZ,EAJJ,EAIQ;IAIN,SAAS+B,mBAATA,CAAA,EAA+B;MAC7B,IAAI7B,WAAA,CAAYO,YAAZ,CAAyBG,SAA7B,EAAwC;QACtCV,WAAA,CAAY+B,oBAAZ,CAAiC7J,OAAjC,CAAyC8H,WAAA,CAAYO,YAArD;QAEAP,WAAA,CAAYe,WAAZ,CAAwBtR,MAAxB,CAA+BuS,UAA/B;MAHsC;IADX;IAQ/B,MAAM9C,UAAA,GAAa,KAAKrG,UAAL,CAAgBsG,kBAAhB,CACjBnU,MADiB,EAEjBwU,cAFiB,EAGjBM,sBAHiB,EAIA,IAJA,CAAnB;IAMA,IAAIE,WAAA,GAAc,KAAKxB,aAAL,CAAmBrf,GAAnB,CAAuB+f,UAAA,CAAWe,QAAlC,CAAlB;IACA,IAAI,CAACD,WAAL,EAAkB;MAChBA,WAAA,GAAc9mB,MAAA,CAAO3J,MAAP,CAAc,IAAd,CAAd;MACA,KAAKivB,aAAL,CAAmBpQ,GAAnB,CAAuB8Q,UAAA,CAAWe,QAAlC,EAA4CD,WAA5C;IAFgB;IAIlB,IAAIgC,UAAJ;IAEA,IAAI,CAAChC,WAAA,CAAY+B,oBAAjB,EAAuC;MACrCC,UAAA,GAAa9oB,MAAA,CAAO3J,MAAP,CAAc,IAAd,CAAb;MACAyyB,UAAA,CAAWH,mBAAX,GAAiCA,mBAAjC;MACA7B,WAAA,CAAY+B,oBAAZ,GAAmC,IAAIxQ,8DAAJ,EAAnC;MACC,CAAAyO,WAAA,CAAYe,WAAZ,KAA4B,IAAIphB,GAAJ,EAA5B,EAAuC3K,GAAxC,CAA4CgtB,UAA5C;MACAhC,WAAA,CAAYO,YAAZ,GAA2B;QACzBC,OAAA,EAAS,EADgB;QAEzBC,SAAA,EAAW,EAFc;QAGzBC,SAAA,EAAW,KAHc;QAIzBC,cAAA,EAAgB;MAJS,CAA3B;MAOA,KAAKzC,MAAL,EAAatT,IAAb,CAAkB,cAAlB;MACA,KAAKgW,iBAAL,CAAuB1B,UAAvB;IAbqC;IAevC,OAAOc,WAAA,CAAY+B,oBAAZ,CAAiCpK,OAAxC;EAxCM;EAkDRsK,kBAAkB;IAChBC,oBAAA,GAAuB,KADP;IAEhBC,oBAAA,GAAuB;EAFP,IAGd,EAHJ,EAGQ;IACN,MAAMC,uBAAA,GAA0B,GAAhC;IAEA,OAAO,KAAKvJ,UAAL,CAAgBH,cAAhB,CAA+B2J,cAA/B,CACL,gBADK,EAEL;MACEvE,SAAA,EAAW,KAAKE,UADlB;MAEEkE,oBAAA,EAAsBA,oBAAA,KAAyB,IAFjD;MAGEC,oBAAA,EAAsBA,oBAAA,KAAyB;IAHjD,CAFK,EAOL;MACEG,aAAA,EAAeF,uBADjB;MAEEpb,KAAKjD,WAAL,EAAkB;QAChB,OAAOA,WAAA,CAAYwE,KAAZ,CAAkBtO,MAAzB;MADgB;IAFpB,CAPK,CAAP;EAHM;EA2BRsoB,eAAezU,MAAA,GAAS,EAAxB,EAA4B;IAC1B,IAAI,KAAK+K,UAAL,CAAgB8C,WAApB,EAAiC;MAG/B,OAAO,KAAK2D,MAAL,GAAc1H,IAAd,CAAmB4K,GAAA,IAAO;QAC/B,OAAOnP,kDAAA,CAAQtP,WAAR,CAAoBye,GAApB,CAAP;MAD+B,CAA1B,CAAP;IAH+B;IAOjC,MAAMC,cAAA,GAAiB,KAAKR,iBAAL,CAAuBnU,MAAvB,CAAvB;IAEA,OAAO,IAAImK,OAAJ,CAAY,UAAUC,OAAV,EAAmBe,MAAnB,EAA2B;MAC5C,SAASyJ,IAATA,CAAA,EAAgB;QACdC,MAAA,CAAOC,IAAP,GAAchL,IAAd,CAAmB,UAAU;UAAE1X,KAAF;UAAS2iB;QAAT,CAAV,EAA2B;UAC5C,IAAIA,IAAJ,EAAU;YACR3K,OAAA,CAAQnU,WAAR;YACA;UAFQ;UAIV7K,MAAA,CAAOsW,MAAP,CAAczL,WAAA,CAAY+e,MAA1B,EAAkC5iB,KAAA,CAAM4iB,MAAxC;UACA/e,WAAA,CAAYwE,KAAZ,CAAkB1N,IAAlB,CAAuB,GAAGqF,KAAA,CAAMqI,KAAhC;UACAma,IAAA;QAP4C,CAA9C,EAQGzJ,MARH;MADc;MAYhB,MAAM0J,MAAA,GAASF,cAAA,CAAeM,SAAf,EAAf;MACA,MAAMhf,WAAA,GAAc;QAClBwE,KAAA,EAAO,EADW;QAElBua,MAAA,EAAQ5pB,MAAA,CAAO3J,MAAP,CAAc,IAAd;MAFU,CAApB;MAIAmzB,IAAA;IAlB4C,CAAvC,CAAP;EAV0B;EAqC5BM,cAAA,EAAgB;IACd,OAAO,KAAKnK,UAAL,CAAgBmK,aAAhB,CAA8B,KAAKhF,UAAnC,CAAP;EADc;EAQhBiF,SAAA,EAAW;IACT,KAAKpL,SAAL,GAAiB,IAAjB;IAEA,MAAMqL,MAAA,GAAS,EAAf;IACA,WAAWlD,WAAX,IAA0B,KAAKxB,aAAL,CAAmB3e,MAAnB,EAA1B,EAAuD;MACrD,KAAKshB,kBAAL,CAAwB;QACtBnB,WADsB;QAEtBoB,MAAA,EAAQ,IAAIrN,KAAJ,CAAU,qBAAV,CAFc;QAGtBoP,KAAA,EAAO;MAHe,CAAxB;MAMA,IAAInD,WAAA,CAAY+B,oBAAhB,EAAsC;QAEpC;MAFoC;MAItC,WAAWf,kBAAX,IAAiChB,WAAA,CAAYe,WAA7C,EAA0D;QACxDmC,MAAA,CAAOroB,IAAP,CAAYmmB,kBAAA,CAAmBoC,SAA/B;QACApC,kBAAA,CAAmBqC,MAAnB;MAFwD;IAXL;IAgBvD,KAAKhF,IAAL,CAAU7V,KAAV;IACA,KAAK,CAAAqV,cAAL,GAAuB,KAAvB;IACA,KAAK,CAAAkC,mBAAL;IAEA,OAAO9H,OAAA,CAAQO,GAAR,CAAY0K,MAAZ,CAAP;EAxBS;EAkCX9F,QAAQkG,UAAA,GAAa,KAArB,EAA4B;IAC1B,KAAK,CAAAzF,cAAL,GAAuB,IAAvB;IACA,MAAM0F,OAAA,GAAU,KAAK,CAAAtC,UAAL,CAAiC,KAAjC,CAAhB;IAEA,IAAIqC,UAAA,IAAcC,OAAlB,EAA2B;MACzB,KAAKrF,MAAL,KAAgB,IAAI7L,wDAAJ,EAAhB;IADyB;IAG3B,OAAOkR,OAAP;EAP0B;EAiB5B,CAAAtC,WAAYuC,OAAA,GAAU,KAAtB,EAA6B;IAC3B,KAAK,CAAAzD,mBAAL;IAEA,IAAI,CAAC,KAAK,CAAAlC,cAAN,IAAyB,KAAKhG,SAAlC,EAA6C;MAC3C,OAAO,KAAP;IAD2C;IAG7C,IAAI2L,OAAJ,EAAa;MACX,KAAK,CAAA5F,qBAAL,GAA8B5lB,UAAA,CAAW,MAAM;QAC7C,KAAK,CAAA4lB,qBAAL,GAA8B,IAA9B;QACA,KAAK,CAAAqD,UAAL,CAAiC,KAAjC;MAF6C,CAAjB,EAG3BzN,uBAH2B,CAA9B;MAKA,OAAO,KAAP;IANW;IAQb,WAAW;MAAEuN,WAAF;MAAeR;IAAf,CAAX,IAA4C,KAAK/B,aAAL,CAAmB3e,MAAnB,EAA5C,EAAyE;MACvE,IAAIkhB,WAAA,CAAY/Z,IAAZ,GAAmB,CAAnB,IAAwB,CAACuZ,YAAA,CAAaG,SAA1C,EAAqD;QACnD,OAAO,KAAP;MADmD;IADkB;IAKzE,KAAKlC,aAAL,CAAmBhW,KAAnB;IACA,KAAK6V,IAAL,CAAU7V,KAAV;IACA,KAAK,CAAAqV,cAAL,GAAuB,KAAvB;IACA,OAAO,IAAP;EAtB2B;EAyB7B,CAAAkC,oBAAA,EAAuB;IACrB,IAAI,KAAK,CAAAnC,qBAAT,EAAiC;MAC/BuC,YAAA,CAAa,KAAK,CAAAvC,qBAAlB;MACA,KAAK,CAAAA,qBAAL,GAA8B,IAA9B;IAF+B;EADZ;EAUvB6F,iBAAiB/B,YAAjB,EAA+BzB,QAA/B,EAAyC;IACvC,MAAMD,WAAA,GAAc,KAAKxB,aAAL,CAAmBrf,GAAnB,CAAuB8gB,QAAvB,CAApB;IACA,IAAI,CAACD,WAAL,EAAkB;MAChB;IADgB;IAGlB,KAAK9B,MAAL,EAAamD,OAAb,CAAqB,cAArB;IAIArB,WAAA,CAAYM,sBAAZ,EAAoCpI,OAApC,CAA4CwJ,YAA5C;EATuC;EAezCgC,iBAAiBC,iBAAjB,EAAoC3D,WAApC,EAAiD;IAE/C,KAAK,IAAI3X,CAAA,GAAI,CAAR,EAAWwD,EAAA,GAAK8X,iBAAA,CAAkB1pB,MAAlC,EAA0CoO,CAAA,GAAIwD,EAAnD,EAAuDxD,CAAA,EAAvD,EAA4D;MAC1D2X,WAAA,CAAYO,YAAZ,CAAyBC,OAAzB,CAAiC3lB,IAAjC,CAAsC8oB,iBAAA,CAAkBnD,OAAlB,CAA0BnY,CAA1B,CAAtC;MACA2X,WAAA,CAAYO,YAAZ,CAAyBE,SAAzB,CAAmC5lB,IAAnC,CAAwC8oB,iBAAA,CAAkBlD,SAAlB,CAA4BpY,CAA5B,CAAxC;IAF0D;IAI5D2X,WAAA,CAAYO,YAAZ,CAAyBG,SAAzB,GAAqCiD,iBAAA,CAAkBjD,SAAvD;IACAV,WAAA,CAAYO,YAAZ,CAAyBI,cAAzB,GAA0CgD,iBAAA,CAAkBhD,cAA5D;IAGA,WAAWK,kBAAX,IAAiChB,WAAA,CAAYe,WAA7C,EAA0D;MACxDC,kBAAA,CAAmBa,mBAAnB;IADwD;IAI1D,IAAI8B,iBAAA,CAAkBjD,SAAtB,EAAiC;MAC/B,KAAK,CAAAO,UAAL,CAAiC,IAAjC;IAD+B;EAdc;EAsBjDL,kBAAkB;IAChBxB,eADgB;IAEhBa,QAFgB;IAGhB2D;EAHgB,CAAlB,EAIG;IAOD,MAAM;MAAE12B,GAAF;MAAOiiB;IAAP,IAAoByU,6BAA1B;IAEA,MAAMnB,cAAA,GAAiB,KAAK5J,UAAL,CAAgBH,cAAhB,CAA+B2J,cAA/B,CACrB,iBADqB,EAErB;MACEvE,SAAA,EAAW,KAAKE,UADlB;MAEEhT,MAAA,EAAQoU,eAFV;MAGEa,QAHF;MAIE5sB,iBAAA,EAAmBnG;IAJrB,CAFqB,EAQrBiiB,QARqB,CAAvB;IAUA,MAAMwT,MAAA,GAASF,cAAA,CAAeM,SAAf,EAAf;IAEA,MAAM/C,WAAA,GAAc,KAAKxB,aAAL,CAAmBrf,GAAnB,CAAuB8gB,QAAvB,CAApB;IACAD,WAAA,CAAY6D,YAAZ,GAA2BlB,MAA3B;IAEA,MAAMD,IAAA,GAAOA,CAAA,KAAM;MACjBC,MAAA,CAAOC,IAAP,GAAchL,IAAd,CACE,CAAC;QAAE1X,KAAF;QAAS2iB;MAAT,CAAD,KAAqB;QACnB,IAAIA,IAAJ,EAAU;UACR7C,WAAA,CAAY6D,YAAZ,GAA2B,IAA3B;UACA;QAFQ;QAIV,IAAI,KAAKhL,UAAL,CAAgBhB,SAApB,EAA+B;UAC7B;QAD6B;QAG/B,KAAK6L,gBAAL,CAAsBxjB,KAAtB,EAA6B8f,WAA7B;QACA0C,IAAA;MATmB,CADvB,EAYEtB,MAAA,IAAU;QACRpB,WAAA,CAAY6D,YAAZ,GAA2B,IAA3B;QAEA,IAAI,KAAKhL,UAAL,CAAgBhB,SAApB,EAA+B;UAC7B;QAD6B;QAG/B,IAAImI,WAAA,CAAYO,YAAhB,EAA8B;UAE5BP,WAAA,CAAYO,YAAZ,CAAyBG,SAAzB,GAAqC,IAArC;UAEA,WAAWM,kBAAX,IAAiChB,WAAA,CAAYe,WAA7C,EAA0D;YACxDC,kBAAA,CAAmBa,mBAAnB;UADwD;UAG1D,KAAK,CAAAZ,UAAL,CAAiC,IAAjC;QAP4B;QAU9B,IAAIjB,WAAA,CAAYM,sBAAhB,EAAwC;UACtCN,WAAA,CAAYM,sBAAZ,CAAmCrH,MAAnC,CAA0CmI,MAA1C;QADsC,CAAxC,MAEO,IAAIpB,WAAA,CAAY+B,oBAAhB,EAAsC;UAC3C/B,WAAA,CAAY+B,oBAAZ,CAAiC9I,MAAjC,CAAwCmI,MAAxC;QAD2C,CAAtC,MAEA;UACL,MAAMA,MAAN;QADK;MApBC,CAZZ;IADiB,CAAnB;IAuCAsB,IAAA;EA/DC;EAqEHvB,mBAAmB;IAAEnB,WAAF;IAAeoB,MAAf;IAAuB+B,KAAA,GAAQ;EAA/B,CAAnB,EAA2D;IAQzD,IAAI,CAACnD,WAAA,CAAY6D,YAAjB,EAA+B;MAC7B;IAD6B;IAI/B,IAAI7D,WAAA,CAAYE,yBAAhB,EAA2C;MACzCC,YAAA,CAAaH,WAAA,CAAYE,yBAAzB;MACAF,WAAA,CAAYE,yBAAZ,GAAwC,IAAxC;IAFyC;IAK3C,IAAI,CAACiD,KAAL,EAAY;MAGV,IAAInD,WAAA,CAAYe,WAAZ,CAAwB/Z,IAAxB,GAA+B,CAAnC,EAAsC;QACpC;MADoC;MAMtC,IAAIoa,MAAA,YAAkBhP,0EAAtB,EAAmD;QACjD,IAAI0R,KAAA,GAAQvQ,2BAAZ;QACA,IAAI6N,MAAA,CAAO2C,UAAP,GAAoB,CAApB,IAAyB3C,MAAA,CAAO2C,UAAP,GAA+B,IAA5D,EAAkE;UAEhED,KAAA,IAAS1C,MAAA,CAAO2C,UAAhB;QAFgE;QAKlE/D,WAAA,CAAYE,yBAAZ,GAAwCloB,UAAA,CAAW,MAAM;UACvDgoB,WAAA,CAAYE,yBAAZ,GAAwC,IAAxC;UACA,KAAKiB,kBAAL,CAAwB;YAAEnB,WAAF;YAAeoB,MAAf;YAAuB+B,KAAA,EAAO;UAA9B,CAAxB;QAFuD,CAAjB,EAGrCW,KAHqC,CAAxC;QAIA;MAXiD;IATzC;IAuBZ9D,WAAA,CAAY6D,YAAZ,CACGR,MADH,CACU,IAAIzS,2DAAJ,CAAmBwQ,MAAA,CAAO4C,OAA1B,CADV,EAEGjL,KAFH,CAES,MAAM,EAFf;IAKAiH,WAAA,CAAY6D,YAAZ,GAA2B,IAA3B;IAEA,IAAI,KAAKhL,UAAL,CAAgBhB,SAApB,EAA+B;MAC7B;IAD6B;IAK/B,WAAW,CAACoM,WAAD,EAAcC,cAAd,CAAX,IAA4C,KAAK1F,aAAjD,EAAgE;MAC9D,IAAI0F,cAAA,KAAmBlE,WAAvB,EAAoC;QAClC,KAAKxB,aAAL,CAAmB/O,MAAnB,CAA0BwU,WAA1B;QACA;MAFkC;IAD0B;IAOhE,KAAK7G,OAAL;EA3DyD;EAkE3D,IAAI+G,KAAJA,CAAA,EAAY;IACV,OAAO,KAAKjG,MAAZ;EADU;AAnpBK;AAwpBnB,MAAMkG,YAAN,CAAmB;EACjB,CAAAC,SAAA,GAAa,IAAI1kB,GAAJ,EAAb;EAEA,CAAA2kB,QAAA,GAAYrM,OAAA,CAAQC,OAAR,EAAZ;EAEAqM,YAAY5U,GAAZ,EAAiBR,QAAjB,EAA2B;IACzB,MAAMhY,KAAA,GAAQ;MACZzH,IAAA,EAAMihB,eAAA,CAAgBhB,GAAhB,EAAqBR,QAAA,GAAW;QAAEA;MAAF,CAAX,GAA0B,IAA/C;IADM,CAAd;IAIA,KAAK,CAAAmV,QAAL,CAAe1M,IAAf,CAAoB,MAAM;MACxB,WAAWyC,QAAX,IAAuB,KAAK,CAAAgK,SAA5B,EAAwC;QACtChK,QAAA,CAASrS,IAAT,CAAc,IAAd,EAAoB7Q,KAApB;MADsC;IADhB,CAA1B;EALyB;EAY3B4F,iBAAiB9D,IAAjB,EAAuBohB,QAAvB,EAAiC;IAC/B,KAAK,CAAAgK,SAAL,CAAgBrvB,GAAhB,CAAoBqlB,QAApB;EAD+B;EAIjC1S,oBAAoB1O,IAApB,EAA0BohB,QAA1B,EAAoC;IAClC,KAAK,CAAAgK,SAAL,CAAgB5U,MAAhB,CAAuB4K,QAAvB;EADkC;EAIpCmK,UAAA,EAAY;IACV,KAAK,CAAAH,SAAL,CAAgB7b,KAAhB;EADU;AAzBK;AAsCnB,MAAMic,aAAA,GAAgB;EACpBC,gBAAA,EAAkB,KADE;EAEpBC,YAAA,EAAc;AAFM,CAAtB;AAIiE;EAC/D,IAAIxT,qDAAJ,EAAc;IAEZsT,aAAA,CAAcC,gBAAd,GAAiC,IAAjC;IAEA7R,mEAAA,CAAoB+R,SAApB,KAEI,kBAFJ;EAJY;EAUdH,aAAA,CAAcI,YAAd,GAA6B,UAAU9N,OAAV,EAAmB+N,QAAnB,EAA6B;IACxD,IAAInhB,IAAJ;IACA,IAAI;MACFA,IAAA,GAAO,IAAImQ,GAAJ,CAAQiD,OAAR,CAAP;MACA,IAAI,CAACpT,IAAA,CAAKohB,MAAN,IAAgBphB,IAAA,CAAKohB,MAAL,KAAgB,MAApC,EAA4C;QAC1C,OAAO,KAAP;MAD0C;IAF1C,CAAJ,CAKE,MAAM;MACN,OAAO,KAAP;IADM;IAIR,MAAMC,KAAA,GAAQ,IAAIlR,GAAJ,CAAQgR,QAAR,EAAkBnhB,IAAlB,CAAd;IACA,OAAOA,IAAA,CAAKohB,MAAL,KAAgBC,KAAA,CAAMD,MAA7B;EAZwD,CAA1D;EAeAN,aAAA,CAAcQ,gBAAd,GAAiC,UAAU1nB,GAAV,EAAe;IAI9C,MAAM2nB,OAAA,GAAW,iBAAgB3nB,GAAI,KAArC;IACA,OAAOuW,GAAA,CAAIqR,eAAJ,CACL,IAAIC,IAAJ,CAAS,CAACF,OAAD,CAAT,EAAoB;MAAEjlB,IAAA,EAAM;IAAR,CAApB,CADK,CAAP;EAL8C,CAAhD;AA1B+D;AA6CjE,MAAM8U,SAAN,CAAgB;EACd,OAAO,CAAAsQ,WAAP;EAEA1yB,YAAY;IACVsG,IAAA,GAAO,IADG;IAEVke,IAAA,GAAO,IAFG;IAGVnC,SAAA,GAAYjE,kEAAA;EAHF,IAIR,EAJJ,EAIQ;IACN,KAAK9X,IAAL,GAAYA,IAAZ;IACA,KAAK4e,SAAL,GAAiB,KAAjB;IACA,KAAK7C,SAAL,GAAiBA,SAAjB;IAEA,KAAKmF,gBAAL,GAAwB,IAAI5I,8DAAJ,EAAxB;IACA,KAAK+T,KAAL,GAAa,IAAb;IACA,KAAKC,UAAL,GAAkB,IAAlB;IACA,KAAKC,eAAL,GAAuB,IAAvB;IAEA,IAEErO,IAFF,EAGE;MACA,IAAIpC,SAAA,CAAU,CAAAsQ,WAAV,EAAwBvpB,GAAxB,CAA4Bqb,IAA5B,CAAJ,EAAuC;QACrC,MAAM,IAAIpD,KAAJ,CAAU,8CAAV,CAAN;MADqC;MAGtC,CAAAgB,SAAA,CAAU,CAAAsQ,WAAV,KAA2B,IAAII,OAAJ,EAA3B,EAA0CrX,GAA3C,CAA+C+I,IAA/C,EAAqD,IAArD;MACA,KAAKuO,mBAAL,CAAyBvO,IAAzB;MACA;IANA;IAQF,KAAKwO,WAAL;EArBM;EA4BR,IAAIhO,OAAJA,CAAA,EAAc;IACZ,OAAO,KAAKwC,gBAAL,CAAsBxC,OAA7B;EADY;EAQd,IAAIR,IAAJA,CAAA,EAAW;IACT,OAAO,KAAKmO,KAAZ;EADS;EAQX,IAAI5M,cAAJA,CAAA,EAAqB;IACnB,OAAO,KAAK8M,eAAZ;EADmB;EAIrBE,oBAAoBvO,IAApB,EAA0B;IAIxB,KAAKmO,KAAL,GAAanO,IAAb;IACA,KAAKqO,eAAL,GAAuB,IAAI1S,sEAAJ,CAAmB,MAAnB,EAA2B,QAA3B,EAAqCqE,IAArC,CAAvB;IACA,KAAKqO,eAAL,CAAqBI,EAArB,CAAwB,OAAxB,EAAiC,YAAY,EAA7C;IAIA,KAAKzL,gBAAL,CAAsBjC,OAAtB;IAEA,KAAKsN,eAAL,CAAqB1M,IAArB,CAA0B,WAA1B,EAAuC;MACrC9D,SAAA,EAAW,KAAKA;IADqB,CAAvC;EAZwB;EAiB1B2Q,YAAA,EAAc;IAMZ,IACE,CAAClB,aAAA,CAAcC,gBAAf,IACA,CAAC3P,SAAA,CAAU,CAAA8Q,8BAFb,EAGE;MACA,IAAI;QAAEjB;MAAF,IAAgB7P,SAApB;MAEA,IAAI;QAGF,IAGE,CAAC0P,aAAA,CAAcI,YAAd,CAA2BzL,MAAA,CAAOC,QAAP,CAAgB7a,IAA3C,EAAiDomB,SAAjD,CAHH,EAIE;UACAA,SAAA,GAAYH,aAAA,CAAcQ,gBAAd,CACV,IAAInR,GAAJ,CAAQ8Q,SAAR,EAAmBxL,MAAA,CAAOC,QAA1B,EAAoC7a,IAD1B,CAAZ;QADA;QAMF,MAAMsW,MAAA,GAAS,IAAIgR,MAAJ,CAAWlB,SAAX,EAAsB;UAAE3kB,IAAA,EAAM;QAAR,CAAtB,CAAf;QACA,MAAMyY,cAAA,GAAiB,IAAI5F,sEAAJ,CAAmB,MAAnB,EAA2B,QAA3B,EAAqCgC,MAArC,CAAvB;QACA,MAAMiR,cAAA,GAAiBA,CAAA,KAAM;UAC3BjR,MAAA,CAAOnN,mBAAP,CAA2B,OAA3B,EAAoCqe,aAApC;UACAtN,cAAA,CAAekB,OAAf;UACA9E,MAAA,CAAO0P,SAAP;UACA,IAAI,KAAK3M,SAAT,EAAoB;YAClB,KAAKsC,gBAAL,CAAsBlB,MAAtB,CAA6B,IAAIlF,KAAJ,CAAU,sBAAV,CAA7B;UADkB,CAApB,MAEO;YAGL,KAAKkS,gBAAL;UAHK;QANoB,CAA7B;QAaA,MAAMD,aAAA,GAAgBA,CAAA,KAAM;UAC1B,IAAI,CAAC,KAAKT,UAAV,EAAsB;YAGpBQ,cAAA;UAHoB;QADI,CAA5B;QAOAjR,MAAA,CAAO/X,gBAAP,CAAwB,OAAxB,EAAiCipB,aAAjC;QAEAtN,cAAA,CAAekN,EAAf,CAAkB,MAAlB,EAA0Bl2B,IAAA,IAAQ;UAChColB,MAAA,CAAOnN,mBAAP,CAA2B,OAA3B,EAAoCqe,aAApC;UACA,IAAI,KAAKnO,SAAT,EAAoB;YAClBkO,cAAA;YACA;UAFkB;UAIpB,IAAIr2B,IAAJ,EAAU;YACR,KAAK81B,eAAL,GAAuB9M,cAAvB;YACA,KAAK4M,KAAL,GAAaxQ,MAAb;YACA,KAAKyQ,UAAL,GAAkBzQ,MAAlB;YAEA,KAAKqF,gBAAL,CAAsBjC,OAAtB;YAEAQ,cAAA,CAAeI,IAAf,CAAoB,WAApB,EAAiC;cAC/B9D,SAAA,EAAW,KAAKA;YADe,CAAjC;UAPQ,CAAV,MAUO;YACL,KAAKiR,gBAAL;YACAvN,cAAA,CAAekB,OAAf;YACA9E,MAAA,CAAO0P,SAAP;UAHK;QAhByB,CAAlC;QAuBA9L,cAAA,CAAekN,EAAf,CAAkB,OAAlB,EAA2Bl2B,IAAA,IAAQ;UACjColB,MAAA,CAAOnN,mBAAP,CAA2B,OAA3B,EAAoCqe,aAApC;UACA,IAAI,KAAKnO,SAAT,EAAoB;YAClBkO,cAAA;YACA;UAFkB;UAIpB,IAAI;YACFG,QAAA;UADE,CAAJ,CAEE,MAAM;YAEN,KAAKD,gBAAL;UAFM;QARyB,CAAnC;QAcA,MAAMC,QAAA,GAAWA,CAAA,KAAM;UACrB,MAAMC,OAAA,GAAU,IAAI5M,UAAJ,EAAhB;UAEAb,cAAA,CAAeI,IAAf,CAAoB,MAApB,EAA4BqN,OAA5B,EAAqC,CAACA,OAAA,CAAQhN,MAAT,CAArC;QAHqB,CAAvB;QASA+M,QAAA;QACA;MApFE,CAAJ,CAqFE,MAAM;QACNlV,qDAAA,CAAK,+BAAL;MADM;IAxFR;IA8FF,KAAKiV,gBAAL;EAvGY;EA0GdA,iBAAA,EAAmB;IACjB,IAAI,CAACxB,aAAA,CAAcC,gBAAnB,EAAqC;MACnCn2B,qDAAA,CAAK,yBAAL;MACAk2B,aAAA,CAAcC,gBAAd,GAAiC,IAAjC;IAFmC;IAKrC3P,SAAA,CAAUqR,sBAAV,CACGxO,IADH,CACQyO,oBAAA,IAAwB;MAC5B,IAAI,KAAKxO,SAAT,EAAoB;QAClB,KAAKsC,gBAAL,CAAsBlB,MAAtB,CAA6B,IAAIlF,KAAJ,CAAU,sBAAV,CAA7B;QACA;MAFkB;MAIpB,MAAMoD,IAAA,GAAO,IAAIiN,YAAJ,EAAb;MACA,KAAKkB,KAAL,GAAanO,IAAb;MAGA,MAAM1iB,EAAA,GAAM,OAAMgwB,aAAA,CAAcE,YAAd,EAAP,EAAX;MAIA,MAAM2B,aAAA,GAAgB,IAAIxT,sEAAJ,CAAmBre,EAAA,GAAK,SAAxB,EAAmCA,EAAnC,EAAuC0iB,IAAvC,CAAtB;MACAkP,oBAAA,CAAqBE,KAArB,CAA2BD,aAA3B,EAA0CnP,IAA1C;MAEA,MAAMuB,cAAA,GAAiB,IAAI5F,sEAAJ,CAAmBre,EAAnB,EAAuBA,EAAA,GAAK,SAA5B,EAAuC0iB,IAAvC,CAAvB;MACA,KAAKqO,eAAL,GAAuB9M,cAAvB;MACA,KAAKyB,gBAAL,CAAsBjC,OAAtB;MAEAQ,cAAA,CAAeI,IAAf,CAAoB,WAApB,EAAiC;QAC/B9D,SAAA,EAAW,KAAKA;MADe,CAAjC;IApB4B,CADhC,EAyBG+D,KAzBH,CAyBSqI,MAAA,IAAU;MACf,KAAKjH,gBAAL,CAAsBlB,MAAtB,CACE,IAAIlF,KAAJ,CAAW,mCAAkCqN,MAAA,CAAO4C,OAAQ,IAA5D,CADF;IADe,CAzBnB;EANiB;EAyCnBpK,QAAA,EAAU;IACR,KAAK/B,SAAL,GAAiB,IAAjB;IACA,IAAI,KAAK0N,UAAT,EAAqB;MAEnB,KAAKA,UAAL,CAAgBf,SAAhB;MACA,KAAKe,UAAL,GAAkB,IAAlB;IAHmB;IAKrBxQ,SAAA,CAAU,CAAAsQ,WAAV,EAAwB5V,MAAxB,CAA+B,KAAK6V,KAApC;IACA,KAAKA,KAAL,GAAa,IAAb;IACA,IAAI,KAAKE,eAAT,EAA0B;MACxB,KAAKA,eAAL,CAAqB5L,OAArB;MACA,KAAK4L,eAAL,GAAuB,IAAvB;IAFwB;EATlB;EAkBV,OAAOnO,QAAPA,CAAgBvJ,MAAhB,EAAwB;IAItB,IAAI,CAACA,MAAA,EAAQqJ,IAAb,EAAmB;MACjB,MAAM,IAAIpD,KAAJ,CAAU,gDAAV,CAAN;IADiB;IAGnB,MAAMyS,UAAA,GAAa,KAAK,CAAAnB,WAAL,EAAmBlmB,GAAnB,CAAuB2O,MAAA,CAAOqJ,IAA9B,CAAnB;IACA,IAAIqP,UAAJ,EAAgB;MACd,IAAIA,UAAA,CAAW3M,eAAf,EAAgC;QAC9B,MAAM,IAAI9F,KAAJ,CACJ,0DACE,oEAFE,CAAN;MAD8B;MAMhC,OAAOyS,UAAP;IAPc;IAShB,OAAO,IAAIzR,SAAJ,CAAcjH,MAAd,CAAP;EAjBsB;EAwBxB,WAAW8W,SAAXA,CAAA,EAAuB;IACrB,IAAI/R,mEAAA,CAAoB+R,SAAxB,EAAmC;MACjC,OAAO/R,mEAAA,CAAoB+R,SAA3B;IADiC;IAGnC,MAAM,IAAI7Q,KAAJ,CAAU,+CAAV,CAAN;EAJqB;EAOvB,WAAW,CAAA8R,8BAAXA,CAAA,EAA6C;IAC3C,IAAI;MACF,OAAO5P,UAAA,CAAWwQ,WAAX,EAAwBJ,oBAAxB,IAAgD,IAAvD;IADE,CAAJ,CAEE,MAAM;MACN,OAAO,IAAP;IADM;EAHmC;EAS7C,WAAWD,sBAAXA,CAAA,EAAoC;IAClC,MAAMM,MAAA,GAAS,MAAAA,CAAA,KAAY;MACzB,IAAI,KAAK,CAAAb,8BAAT,EAA0C;QAExC,OAAO,KAAK,CAAAA,8BAAZ;MAFwC;MAI1C,MAAM/Q,MAAA,GAGA,MAAM6R,sBAAA,CAAuB,KAAK/B,SAA5B,CAHZ;MAIA,OAAO9P,MAAA,CAAOuR,oBAAd;IATyB,CAA3B;IAYA,OAAOj4B,uDAAA,CAAO,IAAP,EAAa,wBAAb,EAAuCs4B,MAAA,EAAvC,CAAP;EAbkC;AArRtB;AA0ShB,MAAM9N,eAAN,CAAsB;EACpB,CAAAgO,cAAA,GAAkB,IAAI1nB,GAAJ,EAAlB;EAEA,CAAA2nB,SAAA,GAAa,IAAI3nB,GAAJ,EAAb;EAEA,CAAA4nB,YAAA,GAAgB,IAAI5nB,GAAJ,EAAhB;EAEA,CAAA6nB,kBAAA,GAAsB,IAAtB;EAEAp0B,YAAY+lB,cAAZ,EAA4B6E,WAA5B,EAAyCpF,aAAzC,EAAwDrK,MAAxD,EAAgEkZ,OAAhE,EAAyE;IACvE,KAAKtO,cAAL,GAAsBA,cAAtB;IACA,KAAK6E,WAAL,GAAmBA,WAAnB;IACA,KAAKa,UAAL,GAAkB,IAAIE,UAAJ,EAAlB;IACA,KAAK2I,UAAL,GAAkB,IAAI1U,uDAAJ,CAAe;MAC/ByD,aAAA,EAAelI,MAAA,CAAOkI,aADS;MAE/BY,YAAA,EAAc9I,MAAA,CAAO8I;IAFU,CAAf,CAAlB;IAIA,KAAKsQ,OAAL,GAAepZ,MAAf;IAEA,KAAK4I,aAAL,GAAqBsQ,OAAA,CAAQtQ,aAA7B;IACA,KAAKC,aAAL,GAAqBqQ,OAAA,CAAQrQ,aAA7B;IACA,KAAKG,iBAAL,GAAyBkQ,OAAA,CAAQlQ,iBAAjC;IACA,KAAKG,uBAAL,GAA+B+P,OAAA,CAAQ/P,uBAAvC;IAEA,KAAKY,SAAL,GAAiB,KAAjB;IACA,KAAKsP,iBAAL,GAAyB,IAAzB;IAEA,KAAKC,cAAL,GAAsBjP,aAAtB;IACA,KAAKkP,WAAL,GAAmB,IAAnB;IACA,KAAKC,aAAL,GAAqB,IAArB;IACA,KAAKnK,sBAAL,GAA8B,IAAI5L,8DAAJ,EAA9B;IAEA,KAAKgW,mBAAL;EAvBuE;EA+CzE,CAAAC,kBAAmBvuB,IAAnB,EAAyBvJ,IAAA,GAAO,IAAhC,EAAsC;IACpC,MAAM+3B,aAAA,GAAgB,KAAK,CAAAb,cAAL,CAAqBznB,GAArB,CAAyBlG,IAAzB,CAAtB;IACA,IAAIwuB,aAAJ,EAAmB;MACjB,OAAOA,aAAP;IADiB;IAGnB,MAAM9P,OAAA,GAAU,KAAKe,cAAL,CAAoBQ,eAApB,CAAoCjgB,IAApC,EAA0CvJ,IAA1C,CAAhB;IAEA,KAAK,CAAAk3B,cAAL,CAAqBxY,GAArB,CAAyBnV,IAAzB,EAA+B0e,OAA/B;IACA,OAAOA,OAAP;EARoC;EAWtC,IAAItkB,iBAAJA,CAAA,EAAwB;IACtB,OAAOjF,uDAAA,CAAO,IAAP,EAAa,mBAAb,EAAkC,IAAIQ,qEAAJ,EAAlC,CAAP;EADsB;EAIxBuwB,mBACEnU,MADF,EAEEwU,cAAA,GAAiB3O,2DAAA,CAAe4O,MAFlC,EAGEK,sBAAA,GAAyB,IAH3B,EAIE4H,QAAA,GAAW,KAJb,EAKE;IACA,IAAItI,eAAA,GAAkB5N,gEAAA,CAAoBmW,OAA1C;IACA,IAAI/D,6BAAA,GAAgC5U,qEAApC;IAEA,QAAQhE,MAAR;MACE,KAAK,KAAL;QACEoU,eAAA,GAAkB5N,gEAAA,CAAoBoW,GAAtC;QACA;MACF,KAAK,SAAL;QACE;MACF,KAAK,OAAL;QACExI,eAAA,GAAkB5N,gEAAA,CAAoB6O,KAAtC;QACA;MACF;QACE9xB,qDAAA,CAAM,wCAAuCyc,MAAxC,EAAL;IAVJ;IAaA,QAAQwU,cAAR;MACE,KAAK3O,2DAAA,CAAegX,OAApB;QACEzI,eAAA,IAAmB5N,gEAAA,CAAoBsW,mBAAvC;QACA;MACF,KAAKjX,2DAAA,CAAe4O,MAApB;QACE;MACF,KAAK5O,2DAAA,CAAekX,YAApB;QACE3I,eAAA,IAAmB5N,gEAAA,CAAoBwW,iBAAvC;QACA;MACF,KAAKnX,2DAAA,CAAeoX,cAApB;QACE7I,eAAA,IAAmB5N,gEAAA,CAAoB0W,mBAAvC;QAEA,MAAM70B,iBAAA,GACJ+rB,eAAA,GAAkB5N,gEAAA,CAAoB6O,KAAtC,IACAP,sBAAA,YAAkC5P,0EADlC,GAEI4P,sBAFJ,GAGI,KAAKzsB,iBAJX;QAMAuwB,6BAAA,GAAgCvwB,iBAAA,CAAkB8c,YAAlD;QACA;MACF;QACE5hB,qDAAA,CAAM,gDAA+CixB,cAAhD,EAAL;IArBJ;IAwBA,IAAIkI,QAAJ,EAAc;MACZtI,eAAA,IAAmB5N,gEAAA,CAAoB2W,MAAvC;IADY;IAId,OAAO;MACL/I,eADK;MAELa,QAAA,EAAU,GAAGb,eAAgB,IAAGwE,6BAAA,CAA8B1U,IAApD,EAFL;MAGL0U;IAHK,CAAP;EA7CA;EAoDFhK,QAAA,EAAU;IACR,IAAI,KAAKuN,iBAAT,EAA4B;MAC1B,OAAO,KAAKA,iBAAL,CAAuBxP,OAA9B;IAD0B;IAI5B,KAAKE,SAAL,GAAiB,IAAjB;IACA,KAAKsP,iBAAL,GAAyB,IAAI5V,8DAAJ,EAAzB;IAEA,KAAK,CAAAwV,kBAAL,EAA0B9N,MAA1B,CACE,IAAIlF,KAAJ,CAAU,iDAAV,CADF;IAIA,MAAMmP,MAAA,GAAS,EAAf;IAGA,WAAW9uB,IAAX,IAAmB,KAAK,CAAAyyB,SAAL,CAAgBhnB,MAAhB,EAAnB,EAA6C;MAC3CqjB,MAAA,CAAOroB,IAAP,CAAYzG,IAAA,CAAK6uB,QAAL,EAAZ;IAD2C;IAG7C,KAAK,CAAA4D,SAAL,CAAgBre,KAAhB;IACA,KAAK,CAAAse,YAAL,CAAmBte,KAAnB;IAEA,IAAI,KAAK4f,cAAL,CAAoB,mBAApB,CAAJ,EAA8C;MAC5C,KAAK/0B,iBAAL,CAAuBqc,aAAvB;IAD4C;IAI9C,MAAM2Y,UAAA,GAAa,KAAK3P,cAAL,CAAoBQ,eAApB,CAAoC,WAApC,EAAiD,IAAjD,CAAnB;IACAgK,MAAA,CAAOroB,IAAP,CAAYwtB,UAAZ;IAEApQ,OAAA,CAAQO,GAAR,CAAY0K,MAAZ,EAAoBtL,IAApB,CAAyB,MAAM;MAC7B,KAAKwG,UAAL,CAAgB5V,KAAhB;MACA,KAAKye,UAAL,CAAgBze,KAAhB;MACA,KAAK,CAAAoe,cAAL,CAAqBpe,KAArB;MACA,KAAKmO,aAAL,CAAmBiD,OAAnB;MAEA,KAAKwN,cAAL,EAAqBkB,iBAArB,CACE,IAAI1X,2DAAJ,CAAmB,wBAAnB,CADF;MAIA,IAAI,KAAK8H,cAAT,EAAyB;QACvB,KAAKA,cAAL,CAAoBkB,OAApB;QACA,KAAKlB,cAAL,GAAsB,IAAtB;MAFuB;MAIzB,KAAKyO,iBAAL,CAAuBjP,OAAvB;IAd6B,CAA/B,EAeG,KAAKiP,iBAAL,CAAuBlO,MAf1B;IAgBA,OAAO,KAAKkO,iBAAL,CAAuBxP,OAA9B;EA5CQ;EA+CV4P,oBAAA,EAAsB;IACpB,MAAM;MAAE7O,cAAF;MAAkB6E;IAAlB,IAAkC,IAAxC;IAEA7E,cAAA,CAAekN,EAAf,CAAkB,WAAlB,EAA+B,CAACl2B,IAAD,EAAO64B,IAAP,KAAgB;MAC7CzX,uDAAA,CACE,KAAKsW,cADP,EAEE,iDAFF;MAIA,KAAKC,WAAL,GAAmB,KAAKD,cAAL,CAAoBoB,aAApB,EAAnB;MACA,KAAKnB,WAAL,CAAiB1N,UAAjB,GAA8BtM,GAAA,IAAO;QACnC,KAAKia,aAAL,GAAqB;UACnBzM,MAAA,EAAQxN,GAAA,CAAIwN,MADO;UAEnBC,KAAA,EAAOzN,GAAA,CAAIyN;QAFQ,CAArB;MADmC,CAArC;MAMAyN,IAAA,CAAKE,MAAL,GAAc,MAAM;QAClB,KAAKpB,WAAL,CACGzE,IADH,GAEGhL,IAFH,CAEQ,UAAU;UAAE1X,KAAF;UAAS2iB;QAAT,CAAV,EAA2B;UAC/B,IAAIA,IAAJ,EAAU;YACR0F,IAAA,CAAKG,KAAL;YACA;UAFQ;UAIV5X,uDAAA,CACE5Q,KAAA,YAAiByoB,WADnB,EAEE,sCAFF;UAMAJ,IAAA,CAAKK,OAAL,CAAa,IAAIrP,UAAJ,CAAerZ,KAAf,CAAb,EAAoC,CAApC,EAAuC,CAACA,KAAD,CAAvC;QAX+B,CAFnC,EAeG6Y,KAfH,CAeSqI,MAAA,IAAU;UACfmH,IAAA,CAAKzH,KAAL,CAAWM,MAAX;QADe,CAfnB;MADkB,CAApB;MAqBAmH,IAAA,CAAKM,QAAL,GAAgBzH,MAAA,IAAU;QACxB,KAAKiG,WAAL,CAAiBhE,MAAjB,CAAwBjC,MAAxB;QAEAmH,IAAA,CAAKO,KAAL,CAAW/P,KAAX,CAAiBgQ,WAAA,IAAe;UAC9B,IAAI,KAAKlR,SAAT,EAAoB;YAClB;UADkB;UAGpB,MAAMkR,WAAN;QAJ8B,CAAhC;MAHwB,CAA1B;IAjC6C,CAA/C;IA6CArQ,cAAA,CAAekN,EAAf,CAAkB,oBAAlB,EAAwCl2B,IAAA,IAAQ;MAC9C,MAAMs5B,iBAAA,GAAoB,IAAIzX,8DAAJ,EAA1B;MACA,MAAM0X,UAAA,GAAa,KAAK5B,WAAxB;MACA4B,UAAA,CAAWC,YAAX,CAAwBtR,IAAxB,CAA6B,MAAM;QAGjC,IAAI,CAACqR,UAAA,CAAWE,oBAAZ,IAAoC,CAACF,UAAA,CAAWG,gBAApD,EAAsE;UACpE,IAAI,KAAK9B,aAAT,EAAwB;YACtB/J,WAAA,CAAY5D,UAAZ,GAAyB,KAAK2N,aAA9B;UADsB;UAGxB2B,UAAA,CAAWtP,UAAX,GAAwBtM,GAAA,IAAO;YAC7BkQ,WAAA,CAAY5D,UAAZ,GAAyB;cACvBkB,MAAA,EAAQxN,GAAA,CAAIwN,MADW;cAEvBC,KAAA,EAAOzN,GAAA,CAAIyN;YAFY,CAAzB;UAD6B,CAA/B;QAJoE;QAYtEkO,iBAAA,CAAkB9Q,OAAlB,CAA0B;UACxBiR,oBAAA,EAAsBF,UAAA,CAAWE,oBADT;UAExBC,gBAAA,EAAkBH,UAAA,CAAWG,gBAFL;UAGxBC,aAAA,EAAeJ,UAAA,CAAWI;QAHF,CAA1B;MAfiC,CAAnC,EAoBGL,iBAAA,CAAkB/P,MApBrB;MAsBA,OAAO+P,iBAAA,CAAkBrR,OAAzB;IAzB8C,CAAhD;IA4BAe,cAAA,CAAekN,EAAf,CAAkB,gBAAlB,EAAoC,CAACl2B,IAAD,EAAO64B,IAAP,KAAgB;MAClDzX,uDAAA,CACE,KAAKsW,cADP,EAEE,sDAFF;MAIA,MAAMkC,WAAA,GAAc,KAAKlC,cAAL,CAAoBmC,cAApB,CAClB75B,IAAA,CAAKgrB,KADa,EAElBhrB,IAAA,CAAKyrB,GAFa,CAApB;MAeA,IAAI,CAACmO,WAAL,EAAkB;QAChBf,IAAA,CAAKG,KAAL;QACA;MAFgB;MAKlBH,IAAA,CAAKE,MAAL,GAAc,MAAM;QAClBa,WAAA,CACG1G,IADH,GAEGhL,IAFH,CAEQ,UAAU;UAAE1X,KAAF;UAAS2iB;QAAT,CAAV,EAA2B;UAC/B,IAAIA,IAAJ,EAAU;YACR0F,IAAA,CAAKG,KAAL;YACA;UAFQ;UAIV5X,uDAAA,CACE5Q,KAAA,YAAiByoB,WADnB,EAEE,2CAFF;UAIAJ,IAAA,CAAKK,OAAL,CAAa,IAAIrP,UAAJ,CAAerZ,KAAf,CAAb,EAAoC,CAApC,EAAuC,CAACA,KAAD,CAAvC;QAT+B,CAFnC,EAaG6Y,KAbH,CAaSqI,MAAA,IAAU;UACfmH,IAAA,CAAKzH,KAAL,CAAWM,MAAX;QADe,CAbnB;MADkB,CAApB;MAmBAmH,IAAA,CAAKM,QAAL,GAAgBzH,MAAA,IAAU;QACxBkI,WAAA,CAAYjG,MAAZ,CAAmBjC,MAAnB;QAEAmH,IAAA,CAAKO,KAAL,CAAW/P,KAAX,CAAiBgQ,WAAA,IAAe;UAC9B,IAAI,KAAKlR,SAAT,EAAoB;YAClB;UADkB;UAGpB,MAAMkR,WAAN;QAJ8B,CAAhC;MAHwB,CAA1B;IA5CkD,CAApD;IAwDArQ,cAAA,CAAekN,EAAf,CAAkB,QAAlB,EAA4B,CAAC;MAAEtK;IAAF,CAAD,KAAiB;MAC3C,KAAKkO,SAAL,GAAiBlO,OAAA,CAAQE,QAAzB;MACA,KAAKG,WAAL,GAAmBL,OAAA,CAAQmO,UAA3B;MACA,OAAOnO,OAAA,CAAQmO,UAAf;MACAlM,WAAA,CAAYvE,WAAZ,CAAwBd,OAAxB,CAAgC,IAAImD,gBAAJ,CAAqBC,OAArB,EAA8B,IAA9B,CAAhC;IAJ2C,CAA7C;IAOA5C,cAAA,CAAekN,EAAf,CAAkB,cAAlB,EAAkC,UAAU9L,EAAV,EAAc;MAC9C,IAAIsH,MAAJ;MACA,QAAQtH,EAAA,CAAG7gB,IAAX;QACE,KAAK,mBAAL;UACEmoB,MAAA,GAAS,IAAI9P,8DAAJ,CAAsBwI,EAAA,CAAGkK,OAAzB,EAAkClK,EAAA,CAAG4P,IAArC,CAAT;UACA;QACF,KAAK,qBAAL;UACEtI,MAAA,GAAS,IAAInQ,gEAAJ,CAAwB6I,EAAA,CAAGkK,OAA3B,CAAT;UACA;QACF,KAAK,qBAAL;UACE5C,MAAA,GAAS,IAAI/P,gEAAJ,CAAwByI,EAAA,CAAGkK,OAA3B,CAAT;UACA;QACF,KAAK,6BAAL;UACE5C,MAAA,GAAS,IAAIzP,wEAAJ,CAAgCmI,EAAA,CAAGkK,OAAnC,EAA4ClK,EAAA,CAAG6P,MAA/C,CAAT;UACA;QACF,KAAK,uBAAL;UACEvI,MAAA,GAAS,IAAIxP,kEAAJ,CAA0BkI,EAAA,CAAGkK,OAA7B,EAAsClK,EAAA,CAAG8P,OAAzC,CAAT;UACA;QACF;UACEv7B,4DAAA,CAAY,wCAAZ;MAjBJ;MAmBAkvB,WAAA,CAAYvE,WAAZ,CAAwBC,MAAxB,CAA+BmI,MAA/B;IArB8C,CAAhD;IAwBA1I,cAAA,CAAekN,EAAf,CAAkB,iBAAlB,EAAqCiE,SAAA,IAAa;MAChD,KAAK,CAAA9C,kBAAL,GAA2B,IAAIxV,8DAAJ,EAA3B;MAEA,IAAIgM,WAAA,CAAY7D,UAAhB,EAA4B;QAC1B,MAAMoQ,cAAA,GAAiBtV,QAAA,IAAY;UACjC,IAAIA,QAAA,YAAoBT,KAAxB,EAA+B;YAC7B,KAAK,CAAAgT,kBAAL,CAAyB9N,MAAzB,CAAgCzE,QAAhC;UAD6B,CAA/B,MAEO;YACL,KAAK,CAAAuS,kBAAL,CAAyB7O,OAAzB,CAAiC;cAAE1D;YAAF,CAAjC;UADK;QAH0B,CAAnC;QAOA,IAAI;UACF+I,WAAA,CAAY7D,UAAZ,CAAuBoQ,cAAvB,EAAuCD,SAAA,CAAUH,IAAjD;QADE,CAAJ,CAEE,OAAO5P,EAAP,EAAW;UACX,KAAK,CAAAiN,kBAAL,CAAyB9N,MAAzB,CAAgCa,EAAhC;QADW;MAVa,CAA5B,MAaO;QACL,KAAK,CAAAiN,kBAAL,CAAyB9N,MAAzB,CACE,IAAI3H,8DAAJ,CAAsBuY,SAAA,CAAU7F,OAAhC,EAAyC6F,SAAA,CAAUH,IAAnD,CADF;MADK;MAKP,OAAO,KAAK,CAAA3C,kBAAL,CAAyBpP,OAAhC;IArBgD,CAAlD;IAwBAe,cAAA,CAAekN,EAAf,CAAkB,YAAlB,EAAgCl2B,IAAA,IAAQ;MAGtC6tB,WAAA,CAAY5D,UAAZ,GAAyB;QACvBkB,MAAA,EAAQnrB,IAAA,CAAKuK,MADU;QAEvB6gB,KAAA,EAAOprB,IAAA,CAAKuK;MAFW,CAAzB;MAKA,KAAKkjB,sBAAL,CAA4BjF,OAA5B,CAAoCxoB,IAApC;IARsC,CAAxC;IAWAgpB,cAAA,CAAekN,EAAf,CAAkB,iBAAlB,EAAqCl2B,IAAA,IAAQ;MAC3C,IAAI,KAAKmoB,SAAT,EAAoB;QAClB;MADkB;MAIpB,MAAMzjB,IAAA,GAAO,KAAK,CAAAyyB,SAAL,CAAgB1nB,GAAhB,CAAoBzP,IAAA,CAAKouB,SAAzB,CAAb;MACA1pB,IAAA,CAAKqvB,gBAAL,CAAsB/zB,IAAA,CAAKgyB,YAA3B,EAAyChyB,IAAA,CAAKuwB,QAA9C;IAN2C,CAA7C;IASAvH,cAAA,CAAekN,EAAf,CAAkB,WAAlB,EAA+B,CAAC,CAACnxB,EAAD,EAAKwL,IAAL,EAAW8pB,YAAX,CAAD,KAA8B;MAC3D,IAAI,KAAKlS,SAAT,EAAoB;QAClB;MADkB;MAIpB,IAAI,KAAKuG,UAAL,CAAgBtiB,GAAhB,CAAoBrH,EAApB,CAAJ,EAA6B;QAC3B;MAD2B;MAI7B,QAAQwL,IAAR;QACE,KAAK,MAAL;UACE,MAAM6N,MAAA,GAAS,KAAKoZ,OAApB;UAEA,IAAI,WAAW6C,YAAf,EAA6B;YAC3B,MAAMC,aAAA,GAAgBD,YAAA,CAAajJ,KAAnC;YACAvyB,qDAAA,CAAM,8BAA6By7B,aAA9B,EAAL;YACA,KAAK5L,UAAL,CAAgBlG,OAAhB,CAAwBzjB,EAAxB,EAA4Bu1B,aAA5B;YACA;UAJ2B;UAO7B,MAAMC,WAAA,GACJnc,MAAA,CAAOuI,MAAP,IAAiBJ,UAAA,CAAWiU,aAAX,EAA0BC,OAA3C,GACI,CAACC,IAAD,EAAO7sB,GAAP,KAAe0Y,UAAA,CAAWiU,aAAX,CAAyBG,SAAzB,CAAmCD,IAAnC,EAAyC7sB,GAAzC,CADnB,GAEI,IAHN;UAIA,MAAM6sB,IAAA,GAAO,IAAI9X,2DAAJ,CAAmByX,YAAnB,EAAiC;YAC5CrU,eAAA,EAAiB5H,MAAA,CAAO4H,eADoB;YAE5CG,eAAA,EAAiB/H,MAAA,CAAO+H,eAFoB;YAG5CN,YAAA,EAAczH,MAAA,CAAOyH,YAHuB;YAI5C0U;UAJ4C,CAAjC,CAAb;UAOA,KAAKhD,UAAL,CACG3d,IADH,CACQ8gB,IADR,EAEGrR,KAFH,CAESqI,MAAA,IAAU;YACf,OAAO1I,cAAA,CAAeQ,eAAf,CAA+B,cAA/B,EAA+C;cAAEzkB;YAAF,CAA/C,CAAP;UADe,CAFnB,EAKG61B,OALH,CAKW,MAAM;YACb,IAAI,CAACxc,MAAA,CAAOgI,mBAAR,IAA+BsU,IAAA,CAAK16B,IAAxC,EAA8C;cAM5C06B,IAAA,CAAK16B,IAAL,GAAY,IAAZ;YAN4C;YAQ9C,KAAK0uB,UAAL,CAAgBlG,OAAhB,CAAwBzjB,EAAxB,EAA4B21B,IAA5B;UATa,CALjB;UAgBA;QACF,KAAK,UAAL;QACA,KAAK,OAAL;QACA,KAAK,SAAL;UACE,KAAKhM,UAAL,CAAgBlG,OAAhB,CAAwBzjB,EAAxB,EAA4Bs1B,YAA5B;UACA;QACF;UACE,MAAM,IAAIhW,KAAJ,CAAW,kCAAiC9T,IAAlC,EAAV,CAAN;MA7CJ;IAT2D,CAA7D;IA0DAyY,cAAA,CAAekN,EAAf,CAAkB,KAAlB,EAAyB,CAAC,CAACnxB,EAAD,EAAKqpB,SAAL,EAAgB7d,IAAhB,EAAsBsqB,SAAtB,CAAD,KAAsC;MAC7D,IAAI,KAAK1S,SAAT,EAAoB;QAElB;MAFkB;MAKpB,MAAM2S,SAAA,GAAY,KAAK,CAAA3D,SAAL,CAAgB1nB,GAAhB,CAAoB2e,SAApB,CAAlB;MACA,IAAI0M,SAAA,CAAUnM,IAAV,CAAeviB,GAAf,CAAmBrH,EAAnB,CAAJ,EAA4B;QAC1B;MAD0B;MAI5B,IAAI+1B,SAAA,CAAUhM,aAAV,CAAwBxX,IAAxB,KAAiC,CAArC,EAAwC;QACtCujB,SAAA,EAAW/Z,MAAX,EAAmBkY,KAAnB;QACA;MAFsC;MAKxC,QAAQzoB,IAAR;QACE,KAAK,OAAL;UACEuqB,SAAA,CAAUnM,IAAV,CAAenG,OAAf,CAAuBzjB,EAAvB,EAA2B81B,SAA3B;UAGA,IAAIA,SAAJ,EAAe;YACb,IAAItwB,MAAJ;YACA,IAAIswB,SAAA,CAAU/Z,MAAd,EAAsB;cACpB,MAAM;gBAAEphB,KAAF;gBAASC;cAAT,IAAoBk7B,SAA1B;cACAtwB,MAAA,GAAS7K,KAAA,GAAQC,MAAR,GAAiB,CAA1B;YAFoB,CAAtB,MAGO;cACL4K,MAAA,GAASswB,SAAA,CAAU76B,IAAV,EAAgBuK,MAAhB,IAA0B,CAAnC;YADK;YAIP,IAAIA,MAAA,GAASmX,oEAAb,EAAsC;cACpCoZ,SAAA,CAAUjM,wBAAV,GAAqC,IAArC;YADoC;UATzB;UAaf;QACF,KAAK,SAAL;UACEiM,SAAA,CAAUnM,IAAV,CAAenG,OAAf,CAAuBzjB,EAAvB,EAA2B81B,SAA3B;UACA;QACF;UACE,MAAM,IAAIxW,KAAJ,CAAW,2BAA0B9T,IAA3B,EAAV,CAAN;MAvBJ;IAhB6D,CAA/D;IA2CAyY,cAAA,CAAekN,EAAf,CAAkB,aAAlB,EAAiCl2B,IAAA,IAAQ;MACvC,IAAI,KAAKmoB,SAAT,EAAoB;QAClB;MADkB;MAGpB0F,WAAA,CAAY5D,UAAZ,GAAyB;QACvBkB,MAAA,EAAQnrB,IAAA,CAAKmrB,MADU;QAEvBC,KAAA,EAAOprB,IAAA,CAAKorB;MAFW,CAAzB;IAJuC,CAAzC;IAUApC,cAAA,CAAekN,EAAf,CAAkB,kBAAlB,EAAsCl2B,IAAA,IAAQ;MAC5C,IAAI,KAAKmoB,SAAT,EAAoB;QAClB,OAAOI,OAAA,CAAQgB,MAAR,CAAe,IAAIlF,KAAJ,CAAU,uBAAV,CAAf,CAAP;MADkB;MAGpB,IAAI,CAAC,KAAK+C,iBAAV,EAA6B;QAC3B,OAAOmB,OAAA,CAAQgB,MAAR,CACL,IAAIlF,KAAJ,CACE,wEADF,CADK,CAAP;MAD2B;MAO7B,OAAO,KAAK+C,iBAAL,CAAuB2T,KAAvB,CAA6B/6B,IAA7B,CAAP;IAX4C,CAA9C;IAcAgpB,cAAA,CAAekN,EAAf,CAAkB,uBAAlB,EAA2Cl2B,IAAA,IAAQ;MACjD,IAAI,KAAKmoB,SAAT,EAAoB;QAClB,OAAOI,OAAA,CAAQgB,MAAR,CAAe,IAAIlF,KAAJ,CAAU,uBAAV,CAAf,CAAP;MADkB;MAGpB,IAAI,CAAC,KAAKkD,uBAAV,EAAmC;QACjC,OAAOgB,OAAA,CAAQgB,MAAR,CACL,IAAIlF,KAAJ,CACE,8EADF,CADK,CAAP;MADiC;MAOnC,OAAO,KAAKkD,uBAAL,CAA6BwT,KAA7B,CAAmC/6B,IAAnC,CAAP;IAXiD,CAAnD;EA5UoB;EA2VtBstB,QAAA,EAAU;IACR,OAAO,KAAKtE,cAAL,CAAoBQ,eAApB,CAAoC,SAApC,EAA+C,IAA/C,CAAP;EADQ;EAIV+D,aAAA,EAAe;IACb,IAAI,KAAK5pB,iBAAL,CAAuB2T,IAAvB,IAA+B,CAAnC,EAAsC;MACpCzY,qDAAA,CACE,6DACE,wCAFJ;IADoC;IAMtC,MAAM;MAAErB,GAAF;MAAOiiB;IAAP,IAAoB,KAAK9b,iBAAL,CAAuB8c,YAAjD;IAEA,OAAO,KAAKuI,cAAL,CACJQ,eADI,CAEH,cAFG,EAGH;MACEwC,SAAA,EAAW,CAAC,CAAC,KAAKC,WADpB;MAEEH,QAAA,EAAU,KAAKgO,SAFjB;MAGEn2B,iBAAA,EAAmBnG,GAHrB;MAIE8R,QAAA,EAAU,KAAKqoB,WAAL,EAAkBroB,QAAlB,IAA8B;IAJ1C,CAHG,EASHmQ,QATG,EAWJmb,OAXI,CAWI,MAAM;MACb,KAAKj3B,iBAAL,CAAuBqc,aAAvB;IADa,CAXV,CAAP;EATa;EAyBfmM,QAAQC,UAAR,EAAoB;IAClB,IACE,CAAClH,MAAA,CAAOC,SAAP,CAAiBiH,UAAjB,CAAD,IACAA,UAAA,IAAc,CADd,IAEAA,UAAA,GAAa,KAAK0N,SAHpB,EAIE;MACA,OAAOvR,OAAA,CAAQgB,MAAR,CAAe,IAAIlF,KAAJ,CAAU,uBAAV,CAAf,CAAP;IADA;IAIF,MAAM+J,SAAA,GAAYhC,UAAA,GAAa,CAA/B;MACE2L,aAAA,GAAgB,KAAK,CAAAX,YAAL,CAAmB3nB,GAAnB,CAAuB2e,SAAvB,CADlB;IAEA,IAAI2J,aAAJ,EAAmB;MACjB,OAAOA,aAAP;IADiB;IAGnB,MAAM9P,OAAA,GAAU,KAAKe,cAAL,CACbQ,eADa,CACG,SADH,EACc;MAC1B4E;IAD0B,CADd,EAIblG,IAJa,CAIRmG,QAAA,IAAY;MAChB,IAAI,KAAKlG,SAAT,EAAoB;QAClB,MAAM,IAAI9D,KAAJ,CAAU,qBAAV,CAAN;MADkB;MAGpB,MAAM3f,IAAA,GAAO,IAAIupB,YAAJ,CACXG,SADW,EAEXC,QAFW,EAGX,IAHW,EAIX,KAAKmJ,OAAL,CAAa7Q,MAJF,CAAb;MAMA,KAAK,CAAAwQ,SAAL,CAAgBzY,GAAhB,CAAoB0P,SAApB,EAA+B1pB,IAA/B;MACA,OAAOA,IAAP;IAXgB,CAJJ,CAAhB;IAiBA,KAAK,CAAA0yB,YAAL,CAAmB1Y,GAAnB,CAAuB0P,SAAvB,EAAkCnG,OAAlC;IACA,OAAOA,OAAP;EAhCkB;EAmCpBoE,aAAaC,GAAb,EAAkB;IAChB,IACE,OAAOA,GAAP,KAAe,QAAf,IACAA,GAAA,KAAQ,IADR,IAEA,CAACpH,MAAA,CAAOC,SAAP,CAAiBmH,GAAA,CAAI0O,GAArB,CAFD,IAGA1O,GAAA,CAAI0O,GAAJ,GAAU,CAHV,IAIA,CAAC9V,MAAA,CAAOC,SAAP,CAAiBmH,GAAA,CAAI2O,GAArB,CAJD,IAKA3O,GAAA,CAAI2O,GAAJ,GAAU,CANZ,EAOE;MACA,OAAO1S,OAAA,CAAQgB,MAAR,CAAe,IAAIlF,KAAJ,CAAU,4BAAV,CAAf,CAAP;IADA;IAGF,OAAO,KAAK2E,cAAL,CAAoBQ,eAApB,CAAoC,cAApC,EAAoD;MACzDwR,GAAA,EAAK1O,GAAA,CAAI0O,GADgD;MAEzDC,GAAA,EAAK3O,GAAA,CAAI2O;IAFgD,CAApD,CAAP;EAXgB;EAiBlB1L,eAAenB,SAAf,EAA0B9S,MAA1B,EAAkC;IAChC,OAAO,KAAK0N,cAAL,CAAoBQ,eAApB,CAAoC,gBAApC,EAAsD;MAC3D4E,SAD2D;MAE3D9S;IAF2D,CAAtD,CAAP;EADgC;EAOlCyS,gBAAA,EAAkB;IAChB,OAAO,KAAK,CAAA+J,iBAAL,CAAwB,iBAAxB,CAAP;EADgB;EAIlBj0B,aAAA,EAAe;IACb,OAAO,KAAK,CAAAi0B,iBAAL,CAAwB,cAAxB,CAAP;EADa;EAIf9J,uBAAA,EAAyB;IACvB,OAAO,KAAKhF,cAAL,CAAoBQ,eAApB,CAAoC,wBAApC,EAA8D,IAA9D,CAAP;EADuB;EAIzB+C,gBAAA,EAAkB;IAChB,OAAO,KAAKvD,cAAL,CAAoBQ,eAApB,CAAoC,iBAApC,EAAuD,IAAvD,CAAP;EADgB;EAIlBgD,eAAeznB,EAAf,EAAmB;IACjB,IAAI,OAAOA,EAAP,KAAc,QAAlB,EAA4B;MAC1B,OAAOwjB,OAAA,CAAQgB,MAAR,CAAe,IAAIlF,KAAJ,CAAU,8BAAV,CAAf,CAAP;IAD0B;IAG5B,OAAO,KAAK2E,cAAL,CAAoBQ,eAApB,CAAoC,gBAApC,EAAsD;MAC3DzkB;IAD2D,CAAtD,CAAP;EAJiB;EASnB0nB,cAAA,EAAgB;IACd,OAAO,KAAKzD,cAAL,CAAoBQ,eAApB,CAAoC,eAApC,EAAqD,IAArD,CAAP;EADc;EAIhBkD,cAAA,EAAgB;IACd,OAAO,KAAK1D,cAAL,CAAoBQ,eAApB,CAAoC,eAApC,EAAqD,IAArD,CAAP;EADc;EAIhBmD,YAAA,EAAc;IACZ,OAAO,KAAK3D,cAAL,CAAoBQ,eAApB,CAAoC,aAApC,EAAmD,IAAnD,CAAP;EADY;EAIdoD,qBAAA,EAAuB;IACrB,OAAO,KAAK5D,cAAL,CAAoBQ,eAApB,CAAoC,sBAApC,EAA4D,IAA5D,CAAP;EADqB;EAIvBqD,cAAA,EAAgB;IACd,OAAO,KAAK7D,cAAL,CAAoBQ,eAApB,CAAoC,eAApC,EAAqD,IAArD,CAAP;EADc;EAIhBsD,eAAA,EAAiB;IACf,OAAO,KAAK9D,cAAL,CAAoBQ,eAApB,CAAoC,gBAApC,EAAsD,IAAtD,CAAP;EADe;EAIjBwD,gBAAA,EAAkB;IAChB,OAAO,KAAK,CAAA8K,iBAAL,CAAwB,iBAAxB,CAAP;EADgB;EAIlBnI,iBAAiBvB,SAAjB,EAA4B;IAC1B,OAAO,KAAKpF,cAAL,CAAoBQ,eAApB,CAAoC,kBAApC,EAAwD;MAC7D4E;IAD6D,CAAxD,CAAP;EAD0B;EAM5BkF,cAAclF,SAAd,EAAyB;IACvB,OAAO,KAAKpF,cAAL,CAAoBQ,eAApB,CAAoC,eAApC,EAAqD;MAC1D4E;IAD0D,CAArD,CAAP;EADuB;EAMzBnB,WAAA,EAAa;IACX,OAAO,KAAKjE,cAAL,CAAoBQ,eAApB,CAAoC,YAApC,EAAkD,IAAlD,CAAP;EADW;EAIb0D,yBAAA,EAA2B;IACzB,OAAO,KAAKlE,cAAL,CACJQ,eADI,CACY,0BADZ,EACwC,IADxC,EAEJtB,IAFI,CAECgT,OAAA,IAAW;MACf,OAAO,IAAI5X,8EAAJ,CAA0B4X,OAA1B,CAAP;IADe,CAFZ,CAAP;EADyB;EAQ3B/N,eAAA,EAAiB;IACf,OAAO,KAAKnE,cAAL,CAAoBQ,eAApB,CAAoC,gBAApC,EAAsD,IAAtD,CAAP;EADe;EAIjB4D,YAAA,EAAc;IACZ,MAAM7jB,IAAA,GAAO,aAAb;MACEwuB,aAAA,GAAgB,KAAK,CAAAb,cAAL,CAAqBznB,GAArB,CAAyBlG,IAAzB,CADlB;IAEA,IAAIwuB,aAAJ,EAAmB;MACjB,OAAOA,aAAP;IADiB;IAGnB,MAAM9P,OAAA,GAAU,KAAKe,cAAL,CACbQ,eADa,CACGjgB,IADH,EACS,IADT,EAEb2e,IAFa,CAERgT,OAAA,IAAW;MACf,OAAO;QACL5Z,IAAA,EAAM4Z,OAAA,CAAQ,CAAR,CADD;QAELC,QAAA,EAAUD,OAAA,CAAQ,CAAR,IAAa,IAAI7X,kDAAJ,CAAa6X,OAAA,CAAQ,CAAR,CAAb,CAAb,GAAwC,IAF7C;QAGLtS,0BAAA,EAA4B,KAAK+O,WAAL,EAAkBroB,QAAlB,IAA8B,IAHrD;QAILqqB,aAAA,EAAe,KAAKhC,WAAL,EAAkBgC,aAAlB,IAAmC;MAJ7C,CAAP;IADe,CAFH,CAAhB;IAUA,KAAK,CAAAzC,cAAL,CAAqBxY,GAArB,CAAyBnV,IAAzB,EAA+B0e,OAA/B;IACA,OAAOA,OAAP;EAjBY;EAoBdoF,YAAA,EAAc;IACZ,OAAO,KAAKrE,cAAL,CAAoBQ,eAApB,CAAoC,aAApC,EAAmD,IAAnD,CAAP;EADY;EAId,MAAMoE,YAANA,CAAmBD,eAAA,GAAkB,KAArC,EAA4C;IAC1C,IAAI,KAAKxF,SAAT,EAAoB;MAClB;IADkB;IAGpB,MAAM,KAAKa,cAAL,CAAoBQ,eAApB,CAAoC,SAApC,EAA+C,IAA/C,CAAN;IAEA,WAAW9kB,IAAX,IAAmB,KAAK,CAAAyyB,SAAL,CAAgBhnB,MAAhB,EAAnB,EAA6C;MAC3C,MAAMirB,iBAAA,GAAoB12B,IAAA,CAAKgpB,OAAL,EAA1B;MAEA,IAAI,CAAC0N,iBAAL,EAAwB;QACtB,MAAM,IAAI/W,KAAJ,CACH,sBAAqB3f,IAAA,CAAK0nB,UAAW,0BADlC,CAAN;MADsB;IAHmB;IAS7C,KAAKsC,UAAL,CAAgB5V,KAAhB;IACA,IAAI,CAAC6U,eAAL,EAAsB;MACpB,KAAK4J,UAAL,CAAgBze,KAAhB;IADoB;IAGtB,KAAK,CAAAoe,cAAL,CAAqBpe,KAArB;IACA,KAAKmO,aAAL,CAAmBiD,OAAnB,CAA2C,IAA3C;EApB0C;EAuB5C,IAAI4D,aAAJA,CAAA,EAAoB;IAClB,MAAM;MAAEpH,gBAAF;MAAoBL;IAApB,IAAkC,KAAKmR,OAA7C;IACA,OAAO94B,uDAAA,CAAO,IAAP,EAAa,eAAb,EAA8B;MACnCgoB,gBADmC;MAEnCL;IAFmC,CAA9B,CAAP;EAFkB;AAluBA;AAgvBtB,MAAMuI,UAAN,CAAiB;EACf,CAAAD,IAAA,GAAQnlB,MAAA,CAAO3J,MAAP,CAAc,IAAd,CAAR;EAQA,CAAAw7B,UAAWC,KAAX,EAAkB;IAChB,OAAQ,KAAK,CAAA3M,IAAL,CAAW2M,KAAX,MAAsB;MAC5B9J,UAAA,EAAY,IAAI3P,8DAAJ,EADgB;MAE5B7hB,IAAA,EAAM;IAFsB,CAA9B;EADgB;EAmBlByP,IAAI6rB,KAAJ,EAAWzJ,QAAA,GAAW,IAAtB,EAA4B;IAG1B,IAAIA,QAAJ,EAAc;MACZ,MAAM5R,GAAA,GAAM,KAAK,CAAAob,SAAL,CAAgBC,KAAhB,CAAZ;MACArb,GAAA,CAAIuR,UAAJ,CAAevJ,OAAf,CAAuBC,IAAvB,CAA4B,MAAM2J,QAAA,CAAS5R,GAAA,CAAIjgB,IAAb,CAAlC;MACA,OAAO,IAAP;IAHY;IAOd,MAAMigB,GAAA,GAAM,KAAK,CAAA0O,IAAL,CAAW2M,KAAX,CAAZ;IAGA,IAAI,CAACrb,GAAA,EAAKuR,UAAL,CAAgB+J,OAArB,EAA8B;MAC5B,MAAM,IAAIlX,KAAJ,CAAW,6CAA4CiX,KAAM,GAA7D,CAAN;IAD4B;IAG9B,OAAOrb,GAAA,CAAIjgB,IAAX;EAhB0B;EAuB5BoM,IAAIkvB,KAAJ,EAAW;IACT,MAAMrb,GAAA,GAAM,KAAK,CAAA0O,IAAL,CAAW2M,KAAX,CAAZ;IACA,OAAOrb,GAAA,EAAKuR,UAAL,CAAgB+J,OAAhB,IAA2B,KAAlC;EAFS;EAWX/S,QAAQ8S,KAAR,EAAet7B,IAAA,GAAO,IAAtB,EAA4B;IAC1B,MAAMigB,GAAA,GAAM,KAAK,CAAAob,SAAL,CAAgBC,KAAhB,CAAZ;IACArb,GAAA,CAAIjgB,IAAJ,GAAWA,IAAX;IACAigB,GAAA,CAAIuR,UAAJ,CAAehJ,OAAf;EAH0B;EAM5B1P,MAAA,EAAQ;IACN,WAAWwiB,KAAX,IAAoB,KAAK,CAAA3M,IAAzB,EAAgC;MAC9B,MAAM;QAAE3uB;MAAF,IAAW,KAAK,CAAA2uB,IAAL,CAAW2M,KAAX,CAAjB;MACAt7B,IAAA,EAAM8gB,MAAN,EAAckY,KAAd;IAF8B;IAIhC,KAAK,CAAArK,IAAL,GAAanlB,MAAA,CAAO3J,MAAP,CAAc,IAAd,CAAb;EALM;AApEO;AAgFjB,MAAM27B,UAAN,CAAiB;EACf,CAAAlK,kBAAA,GAAsB,IAAtB;EAEAruB,YAAYquB,kBAAZ,EAAgC;IAC9B,KAAK,CAAAA,kBAAL,GAA2BA,kBAA3B;IAQA,KAAKmK,UAAL,GAAkB,IAAlB;EAT8B;EAgBhC,IAAIxT,OAAJA,CAAA,EAAc;IACZ,OAAO,KAAK,CAAAqJ,kBAAL,CAAyBE,UAAzB,CAAoCvJ,OAA3C;EADY;EAWd0L,OAAOU,UAAA,GAAa,CAApB,EAAuB;IACrB,KAAK,CAAA/C,kBAAL,CAAyBqC,MAAzB,CAA8C,IAA9C,EAAoDU,UAApD;EADqB;EAQvB,IAAIpD,cAAJA,CAAA,EAAqB;IACnB,MAAM;MAAEA;IAAF,IAAqB,KAAK,CAAAK,kBAAL,CAAyBT,YAApD;IACA,IAAI,CAACI,cAAL,EAAqB;MACnB,OAAO,KAAP;IADmB;IAGrB,MAAM;MAAEnT;IAAF,IAA0B,KAAK,CAAAwT,kBAArC;IACA,OACEL,cAAA,CAAeyK,IAAf,IACCzK,cAAA,CAAenS,MAAf,IAAyBhB,mBAAA,EAAqBxG,IAArB,GAA4B,CAFxD;EANmB;AAtCN;AAuDjB,MAAMsa,kBAAN,CAAyB;EACvB,OAAO,CAAA+J,WAAP,GAAsB,IAAIp8B,OAAJ,EAAtB;EAEA0D,YAAY;IACV4uB,QADU;IAEVzT,MAFU;IAGVuQ,IAHU;IAIVD,UAJU;IAKV5Q,mBALU;IAMV+S,YANU;IAOVzC,SAPU;IAQVpH,aARU;IASVC,aATU;IAUV6K,wBAAA,GAA2B,KAVjB;IAWVnL,MAAA,GAAS,KAXC;IAYVwJ,UAAA,GAAa;EAZH,CAAZ,EAaG;IACD,KAAK0B,QAAL,GAAgBA,QAAhB;IACA,KAAKzT,MAAL,GAAcA,MAAd;IACA,KAAKuQ,IAAL,GAAYA,IAAZ;IACA,KAAKD,UAAL,GAAkBA,UAAlB;IACA,KAAK5Q,mBAAL,GAA2BA,mBAA3B;IACA,KAAK8d,eAAL,GAAuB,IAAvB;IACA,KAAK/K,YAAL,GAAoBA,YAApB;IACA,KAAKvC,UAAL,GAAkBF,SAAlB;IACA,KAAKpH,aAAL,GAAqBA,aAArB;IACA,KAAKC,aAAL,GAAqBA,aAArB;IACA,KAAKwH,OAAL,GAAe9H,MAAf;IACA,KAAKwJ,UAAL,GAAkBA,UAAlB;IAEA,KAAK0L,OAAL,GAAe,KAAf;IACA,KAAKC,qBAAL,GAA6B,IAA7B;IACA,KAAKC,aAAL,GAAqB,KAArB;IACA,KAAKC,yBAAL,GACElK,wBAAA,KAA6B,IAA7B,IAAqC,OAAOpI,MAAP,KAAkB,WADzD;IAEA,KAAKuS,SAAL,GAAiB,KAAjB;IACA,KAAKzK,UAAL,GAAkB,IAAI3P,8DAAJ,EAAlB;IACA,KAAK0C,IAAL,GAAY,IAAIiX,UAAJ,CAAe,IAAf,CAAZ;IAEA,KAAKU,YAAL,GAAoB,KAAKvI,MAAL,CAAY/Z,IAAZ,CAAiB,IAAjB,CAApB;IACA,KAAKuiB,cAAL,GAAsB,KAAKC,SAAL,CAAexiB,IAAf,CAAoB,IAApB,CAAtB;IACA,KAAKyiB,kBAAL,GAA0B,KAAKC,aAAL,CAAmB1iB,IAAnB,CAAwB,IAAxB,CAA1B;IACA,KAAK2iB,UAAL,GAAkB,KAAKC,KAAL,CAAW5iB,IAAX,CAAgB,IAAhB,CAAlB;IACA,KAAK6iB,OAAL,GAAere,MAAA,CAAOyR,aAAP,CAAqB/Q,MAApC;EA3BC;EA8BH,IAAI4U,SAAJA,CAAA,EAAgB;IACd,OAAO,KAAKlC,UAAL,CAAgBvJ,OAAhB,CAAwBoB,KAAxB,CAA8B,YAAY,EAA1C,CAAP;EADc;EAOhB6I,mBAAmB;IAAEF,YAAA,GAAe,KAAjB;IAAwBC;EAAxB,CAAnB,EAAoE;IAClE,IAAI,KAAKgK,SAAT,EAAoB;MAClB;IADkB;IAGpB,IAAI,KAAKQ,OAAT,EAAkB;MAChB,IAAI7K,kBAAA,CAAmB,CAAA+J,WAAnB,CAAgCvvB,GAAhC,CAAoC,KAAKqwB,OAAzC,CAAJ,EAAuD;QACrD,MAAM,IAAIpY,KAAJ,CACJ,qEACE,0DADF,GAEE,yBAHE,CAAN;MADqD;MAOvDuN,kBAAA,CAAmB,CAAA+J,WAAnB,CAAgCr2B,GAAhC,CAAoC,KAAKm3B,OAAzC;IARgB;IAWlB,IAAI,KAAKhO,OAAL,IAAgBlI,UAAA,CAAWmW,cAAX,EAA2BjC,OAA/C,EAAwD;MACtD,KAAKkC,OAAL,GAAepW,UAAA,CAAWmW,cAAX,CAA0B78B,MAA1B,CAAiC,KAAKyuB,UAAtC,CAAf;MACA,KAAKqO,OAAL,CAAaC,IAAb,CAAkB,KAAK/L,YAAvB;MACA,KAAK8L,OAAL,CAAaE,cAAb,GAA8B,KAAKF,OAAL,CAAaG,iBAAb,EAA9B;IAHsD;IAKxD,MAAM;MAAEjN,aAAF;MAAiBlrB,QAAjB;MAA2BqrB,SAA3B;MAAsCC;IAAtC,IAAqD,KAAK7R,MAAhE;IAEA,KAAK2e,GAAL,GAAW,IAAI7Z,sDAAJ,CACT2M,aADS,EAET,KAAKnB,UAFI,EAGT,KAAKC,IAHI,EAIT,KAAK3H,aAJI,EAKT,KAAKC,aALI,EAMT;MAAEgL;IAAF,CANS,EAOT,KAAKnU,mBAPI,EAQT,KAAKqS,UARI,CAAX;IAUA,KAAK4M,GAAL,CAASC,YAAT,CAAsB;MACpBhN,SADoB;MAEpBrrB,QAFoB;MAGpBqtB,YAHoB;MAIpB/B;IAJoB,CAAtB;IAMA,KAAK2L,eAAL,GAAuB,CAAvB;IACA,KAAKG,aAAL,GAAqB,IAArB;IACA,KAAKD,qBAAL;EAxCkE;EA2CpEnI,OAAOvC,KAAA,GAAQ,IAAf,EAAqBiD,UAAA,GAAa,CAAlC,EAAqC;IACnC,KAAKwH,OAAL,GAAe,KAAf;IACA,KAAKI,SAAL,GAAiB,IAAjB;IACA,KAAKc,GAAL,EAAUE,UAAV;IACArL,kBAAA,CAAmB,CAAA+J,WAAnB,CAAgC5b,MAAhC,CAAuC,KAAK0c,OAA5C;IAEA,KAAK5K,QAAL,CACET,KAAA,IACE,IAAI1O,0EAAJ,CACG,6BAA4B,KAAK4L,UAAL,GAAkB,CAA/C,EADF,EAEE+F,UAFF,CAFJ;EANmC;EAerClC,oBAAA,EAAsB;IACpB,IAAI,CAAC,KAAK4J,aAAV,EAAyB;MACvB,KAAKD,qBAAL,KAA+B,KAAKK,cAApC;MACA;IAFuB;IAIzB,KAAKQ,OAAL,EAAcO,kBAAd,CAAiC,KAAKrM,YAAtC;IAEA,IAAI,KAAKgL,OAAT,EAAkB;MAChB;IADgB;IAGlB,KAAKO,SAAL;EAVoB;EAatBA,UAAA,EAAY;IACV,KAAKP,OAAL,GAAe,IAAf;IACA,IAAI,KAAKI,SAAT,EAAoB;MAClB;IADkB;IAGpB,IAAI,KAAK1X,IAAL,CAAUkX,UAAd,EAA0B;MACxB,KAAKlX,IAAL,CAAUkX,UAAV,CAAqB,KAAKY,kBAA1B;IADwB,CAA1B,MAEO;MACL,KAAKC,aAAL;IADK;EAPG;EAYZA,cAAA,EAAgB;IACd,IAAI,KAAKN,yBAAT,EAAoC;MAClCtS,MAAA,CAAOyT,qBAAP,CAA6B,MAAM;QACjC,KAAKZ,UAAL,GAAkBlT,KAAlB,CAAwB,KAAK6S,YAA7B;MADiC,CAAnC;IADkC,CAApC,MAIO;MACL3T,OAAA,CAAQC,OAAR,GAAkBN,IAAlB,CAAuB,KAAKqU,UAA5B,EAAwClT,KAAxC,CAA8C,KAAK6S,YAAnD;IADK;EALO;EAUhB,MAAMM,KAANA,CAAA,EAAc;IACZ,IAAI,KAAKP,SAAT,EAAoB;MAClB;IADkB;IAGpB,KAAKL,eAAL,GAAuB,KAAKmB,GAAL,CAASK,mBAAT,CACrB,KAAKvM,YADgB,EAErB,KAAK+K,eAFgB,EAGrB,KAAKO,cAHgB,EAIrB,KAAKQ,OAJgB,CAAvB;IAMA,IAAI,KAAKf,eAAL,KAAyB,KAAK/K,YAAL,CAAkBE,SAAlB,CAA4BxmB,MAAzD,EAAiE;MAC/D,KAAKsxB,OAAL,GAAe,KAAf;MACA,IAAI,KAAKhL,YAAL,CAAkBG,SAAtB,EAAiC;QAC/B,KAAK+L,GAAL,CAASE,UAAT;QACArL,kBAAA,CAAmB,CAAA+J,WAAnB,CAAgC5b,MAAhC,CAAuC,KAAK0c,OAA5C;QAEA,KAAK5K,QAAL;MAJ+B;IAF8B;EAVrD;AAlJS;AAyKzB,MAAMwL,OAAA,GAC8B,SADpC;AAGA,MAAMC,KAAA,GAC8B,WADpC;;;;;;;;;;;;;;;;;;ACtyGA;AAEA,MAAME,iBAAN,CAAwB;EACtBv6B,YAAA,EAAc;IACZ,IAAI,KAAKA,WAAL,KAAqBu6B,iBAAzB,EAA4C;MAC1C7+B,4DAAA,CAAY,sCAAZ;IAD0C;EADhC;EAMd8+B,UAAUC,IAAV,EAAgB;IACd,OAAO,MAAP;EADc;EAIhBC,aAAa30B,OAAb,EAAsBF,OAAtB,EAA+B;IAC7B,OAAO,MAAP;EAD6B;EAI/B80B,sBAAsB50B,OAAtB,EAA+BF,OAA/B,EAAwC+0B,UAAxC,EAAoDC,UAApD,EAAgE;IAC9D,OAAO,MAAP;EAD8D;EAIhE5T,QAAQ6T,OAAA,GAAU,KAAlB,EAAyB;AAnBH;AAsBxB,MAAMC,iBAAN,CAAwB;EACtB/6B,YAAA,EAAc;IACZ,IAAI,KAAKA,WAAL,KAAqB+6B,iBAAzB,EAA4C;MAC1Cr/B,4DAAA,CAAY,sCAAZ;IAD0C;EADhC;EAMdkB,OAAOH,KAAP,EAAcC,MAAd,EAAsB;IACpB,IAAID,KAAA,IAAS,CAAT,IAAcC,MAAA,IAAU,CAA5B,EAA+B;MAC7B,MAAM,IAAI0kB,KAAJ,CAAU,qBAAV,CAAN;IAD6B;IAG/B,MAAMvF,MAAA,GAAS,KAAKmf,aAAL,CAAmBv+B,KAAnB,EAA0BC,MAA1B,CAAf;IACA,OAAO;MACLmf,MADK;MAEL4B,OAAA,EAAS5B,MAAA,CAAOof,UAAP,CAAkB,IAAlB;IAFJ,CAAP;EALoB;EAWtBC,MAAMC,gBAAN,EAAwB1+B,KAAxB,EAA+BC,MAA/B,EAAuC;IACrC,IAAI,CAACy+B,gBAAA,CAAiBtf,MAAtB,EAA8B;MAC5B,MAAM,IAAIuF,KAAJ,CAAU,yBAAV,CAAN;IAD4B;IAG9B,IAAI3kB,KAAA,IAAS,CAAT,IAAcC,MAAA,IAAU,CAA5B,EAA+B;MAC7B,MAAM,IAAI0kB,KAAJ,CAAU,qBAAV,CAAN;IAD6B;IAG/B+Z,gBAAA,CAAiBtf,MAAjB,CAAwBpf,KAAxB,GAAgCA,KAAhC;IACA0+B,gBAAA,CAAiBtf,MAAjB,CAAwBnf,MAAxB,GAAiCA,MAAjC;EARqC;EAWvCuqB,QAAQkU,gBAAR,EAA0B;IACxB,IAAI,CAACA,gBAAA,CAAiBtf,MAAtB,EAA8B;MAC5B,MAAM,IAAIuF,KAAJ,CAAU,yBAAV,CAAN;IAD4B;IAK9B+Z,gBAAA,CAAiBtf,MAAjB,CAAwBpf,KAAxB,GAAgC,CAAhC;IACA0+B,gBAAA,CAAiBtf,MAAjB,CAAwBnf,MAAxB,GAAiC,CAAjC;IACAy+B,gBAAA,CAAiBtf,MAAjB,GAA0B,IAA1B;IACAsf,gBAAA,CAAiB1d,OAAjB,GAA2B,IAA3B;EATwB;EAe1Bud,cAAcv+B,KAAd,EAAqBC,MAArB,EAA6B;IAC3BhB,4DAAA,CAAY,yCAAZ;EAD2B;AA5CP;AAiDxB,MAAM0/B,qBAAN,CAA4B;EAC1Bp7B,YAAY;IAAEokB,OAAA,GAAU,IAAZ;IAAkBC,YAAA,GAAe;EAAjC,CAAZ,EAAqD;IACnD,IAAI,KAAKrkB,WAAL,KAAqBo7B,qBAAzB,EAAgD;MAC9C1/B,4DAAA,CAAY,0CAAZ;IAD8C;IAGhD,KAAK0oB,OAAL,GAAeA,OAAf;IACA,KAAKC,YAAL,GAAoBA,YAApB;EALmD;EAQrD,MAAMyT,KAANA,CAAY;IAAExxB;EAAF,CAAZ,EAAsB;IACpB,IAAI,CAAC,KAAK8d,OAAV,EAAmB;MACjB,MAAM,IAAIhD,KAAJ,CACJ,iEACE,6DAFE,CAAN;IADiB;IAMnB,IAAI,CAAC9a,IAAL,EAAW;MACT,MAAM,IAAI8a,KAAJ,CAAU,8BAAV,CAAN;IADS;IAGX,MAAMxW,GAAA,GAAM,KAAKwZ,OAAL,GAAe9d,IAAf,IAAuB,KAAK+d,YAAL,GAAoB,QAApB,GAA+B,EAA/B,CAAnC;IACA,MAAMgX,eAAA,GAAkB,KAAKhX,YAAL,GACpBiW,gEAAA,CAAoBgB,MADA,GAEpBhB,gEAAA,CAAoBiB,IAFxB;IAIA,OAAO,KAAKC,UAAL,CAAgB5wB,GAAhB,EAAqBywB,eAArB,EAAsCjV,KAAtC,CAA4CqI,MAAA,IAAU;MAC3D,MAAM,IAAIrN,KAAJ,CACH,kBAAiB,KAAKiD,YAAL,GAAoB,SAApB,GAAgC,EAAG,YAAWzZ,GAAhE,EADI,CAAN;IAD2D,CAAtD,CAAP;EAfoB;EAyBtB4wB,WAAW5wB,GAAX,EAAgBywB,eAAhB,EAAiC;IAC/B3/B,4DAAA,CAAY,sCAAZ;EAD+B;AAlCP;AAuC5B,MAAM+/B,2BAAN,CAAkC;EAChCz7B,YAAY;IAAEokB,OAAA,GAAU;EAAZ,CAAZ,EAAgC;IAC9B,IAAI,KAAKpkB,WAAL,KAAqBy7B,2BAAzB,EAAsD;MACpD//B,4DAAA,CAAY,gDAAZ;IADoD;IAGtD,KAAK0oB,OAAL,GAAeA,OAAf;EAJ8B;EAOhC,MAAM0T,KAANA,CAAY;IAAEzrB;EAAF,CAAZ,EAA0B;IACxB,IAAI,CAAC,KAAK+X,OAAV,EAAmB;MACjB,MAAM,IAAIhD,KAAJ,CACJ,0EACE,sDAFE,CAAN;IADiB;IAMnB,IAAI,CAAC/U,QAAL,EAAe;MACb,MAAM,IAAI+U,KAAJ,CAAU,kCAAV,CAAN;IADa;IAGf,MAAMxW,GAAA,GAAM,GAAG,KAAKwZ,OAAR,GAAkB/X,QAAlB,EAAZ;IAEA,OAAO,KAAKmvB,UAAL,CAAgB5wB,GAAhB,EAAqBwb,KAArB,CAA2BqI,MAAA,IAAU;MAC1C,MAAM,IAAIrN,KAAJ,CAAW,gCAA+BxW,GAAhC,EAAV,CAAN;IAD0C,CAArC,CAAP;EAZwB;EAoB1B4wB,WAAW5wB,GAAX,EAAgB;IACdlP,4DAAA,CAAY,sCAAZ;EADc;AA5BgB;AAiClC,MAAMggC,cAAN,CAAqB;EACnB17B,YAAA,EAAc;IACZ,IAAI,KAAKA,WAAL,KAAqB07B,cAAzB,EAAyC;MACvChgC,4DAAA,CAAY,mCAAZ;IADuC;EAD7B;EAMdkB,OAAOH,KAAP,EAAcC,MAAd,EAAsBi/B,cAAA,GAAiB,KAAvC,EAA8C;IAC5C,IAAIl/B,KAAA,IAAS,CAAT,IAAcC,MAAA,IAAU,CAA5B,EAA+B;MAC7B,MAAM,IAAI0kB,KAAJ,CAAU,wBAAV,CAAN;IAD6B;IAG/B,MAAMxZ,GAAA,GAAM,KAAKg0B,UAAL,CAAgB,SAAhB,CAAZ;IACAh0B,GAAA,CAAI/F,YAAJ,CAAiB,SAAjB,EAA4B,KAA5B;IAEA,IAAI,CAAC85B,cAAL,EAAqB;MACnB/zB,GAAA,CAAI/F,YAAJ,CAAiB,OAAjB,EAA0B,GAAGpF,KAAM,IAAnC;MACAmL,GAAA,CAAI/F,YAAJ,CAAiB,QAAjB,EAA2B,GAAGnF,MAAO,IAArC;IAFmB;IAKrBkL,GAAA,CAAI/F,YAAJ,CAAiB,qBAAjB,EAAwC,MAAxC;IACA+F,GAAA,CAAI/F,YAAJ,CAAiB,SAAjB,EAA6B,OAAMpF,KAAM,IAAGC,MAAhB,EAA5B;IAEA,OAAOkL,GAAP;EAf4C;EAkB9ChG,cAAc0L,IAAd,EAAoB;IAClB,IAAI,OAAOA,IAAP,KAAgB,QAApB,EAA8B;MAC5B,MAAM,IAAI8T,KAAJ,CAAU,0BAAV,CAAN;IAD4B;IAG9B,OAAO,KAAKwa,UAAL,CAAgBtuB,IAAhB,CAAP;EAJkB;EAUpBsuB,WAAWtuB,IAAX,EAAiB;IACf5R,4DAAA,CAAY,sCAAZ;EADe;AAnCE;;;;;;;;;;;;;;;;;;;ACjJrB;AACA;AAEA,MAAMqgC,QAAA,GAAW;EACfC,IAAA,EAAM,MADS;EAEfC,MAAA,EAAQ,QAFO;EAGfC,OAAA,EAAS;AAHM,CAAjB;AAMA,SAASC,gBAATA,CAA0BC,GAA1B,EAA+BC,IAA/B,EAAqC;EACnC,IAAI,CAACA,IAAL,EAAW;IACT;EADS;EAGX,MAAM5/B,KAAA,GAAQ4/B,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAxB;EACA,MAAM3/B,MAAA,GAAS2/B,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAzB;EACA,MAAMC,MAAA,GAAS,IAAIC,MAAJ,EAAf;EACAD,MAAA,CAAO9/B,IAAP,CAAY6/B,IAAA,CAAK,CAAL,CAAZ,EAAqBA,IAAA,CAAK,CAAL,CAArB,EAA8B5/B,KAA9B,EAAqCC,MAArC;EACA0/B,GAAA,CAAII,IAAJ,CAASF,MAAT;AARmC;AAWrC,MAAMG,kBAAN,CAAyB;EACvBz8B,YAAA,EAAc;IACZ,IAAI,KAAKA,WAAL,KAAqBy8B,kBAAzB,EAA6C;MAC3C/gC,oBAAA,CAAY,uCAAZ;IAD2C;EADjC;EAMdghC,WAAA,EAAa;IACXhhC,oBAAA,CAAY,sCAAZ;EADW;AAPU;AAYzB,MAAMihC,yBAAN,SAAwCF,kBAAxC,CAA2D;EACzDz8B,YAAY48B,EAAZ,EAAgB;IACd;IACA,KAAKxf,KAAL,GAAawf,EAAA,CAAG,CAAH,CAAb;IACA,KAAKC,KAAL,GAAaD,EAAA,CAAG,CAAH,CAAb;IACA,KAAKE,WAAL,GAAmBF,EAAA,CAAG,CAAH,CAAnB;IACA,KAAKG,GAAL,GAAWH,EAAA,CAAG,CAAH,CAAX;IACA,KAAKI,GAAL,GAAWJ,EAAA,CAAG,CAAH,CAAX;IACA,KAAKK,GAAL,GAAWL,EAAA,CAAG,CAAH,CAAX;IACA,KAAKM,GAAL,GAAWN,EAAA,CAAG,CAAH,CAAX;IACA,KAAKO,MAAL,GAAc,IAAd;EATc;EAYhBC,gBAAgBhB,GAAhB,EAAqB;IACnB,IAAIiB,IAAJ;IACA,IAAI,KAAKjgB,KAAL,KAAe,OAAnB,EAA4B;MAC1BigB,IAAA,GAAOjB,GAAA,CAAIkB,oBAAJ,CACL,KAAKP,GAAL,CAAS,CAAT,CADK,EAEL,KAAKA,GAAL,CAAS,CAAT,CAFK,EAGL,KAAKC,GAAL,CAAS,CAAT,CAHK,EAIL,KAAKA,GAAL,CAAS,CAAT,CAJK,CAAP;IAD0B,CAA5B,MAOO,IAAI,KAAK5f,KAAL,KAAe,QAAnB,EAA6B;MAClCigB,IAAA,GAAOjB,GAAA,CAAImB,oBAAJ,CACL,KAAKR,GAAL,CAAS,CAAT,CADK,EAEL,KAAKA,GAAL,CAAS,CAAT,CAFK,EAGL,KAAKE,GAHA,EAIL,KAAKD,GAAL,CAAS,CAAT,CAJK,EAKL,KAAKA,GAAL,CAAS,CAAT,CALK,EAML,KAAKE,GANA,CAAP;IADkC;IAWpC,WAAWM,SAAX,IAAwB,KAAKV,WAA7B,EAA0C;MACxCO,IAAA,CAAKI,YAAL,CAAkBD,SAAA,CAAU,CAAV,CAAlB,EAAgCA,SAAA,CAAU,CAAV,CAAhC;IADwC;IAG1C,OAAOH,IAAP;EAvBmB;EA0BrBX,WAAWN,GAAX,EAAgBsB,KAAhB,EAAuBC,OAAvB,EAAgCC,QAAhC,EAA0C;IACxC,IAAIC,OAAJ;IACA,IAAID,QAAA,KAAa7B,QAAA,CAASE,MAAtB,IAAgC2B,QAAA,KAAa7B,QAAA,CAASC,IAA1D,EAAgE;MAC9D,MAAM8B,SAAA,GAAYJ,KAAA,CAAMK,OAAN,CAAcC,yBAAd,CAChBJ,QADgB,EAEhB9B,qCAAA,CAAoBM,GAApB,CAFgB,KAGb,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAHL;MAOA,MAAM3/B,KAAA,GAAQ3D,IAAA,CAAKmlC,IAAL,CAAUH,SAAA,CAAU,CAAV,IAAeA,SAAA,CAAU,CAAV,CAAzB,KAA0C,CAAxD;MACA,MAAMphC,MAAA,GAAS5D,IAAA,CAAKmlC,IAAL,CAAUH,SAAA,CAAU,CAAV,IAAeA,SAAA,CAAU,CAAV,CAAzB,KAA0C,CAAzD;MAEA,MAAMI,SAAA,GAAYR,KAAA,CAAMS,cAAN,CAAqBC,SAArB,CAChB,SADgB,EAEhB3hC,KAFgB,EAGhBC,MAHgB,EAIhB,IAJgB,CAAlB;MAOA,MAAM2hC,MAAA,GAASH,SAAA,CAAUzgB,OAAzB;MACA4gB,MAAA,CAAOC,SAAP,CAAiB,CAAjB,EAAoB,CAApB,EAAuBD,MAAA,CAAOxiB,MAAP,CAAcpf,KAArC,EAA4C4hC,MAAA,CAAOxiB,MAAP,CAAcnf,MAA1D;MACA2hC,MAAA,CAAOE,SAAP;MACAF,MAAA,CAAO7hC,IAAP,CAAY,CAAZ,EAAe,CAAf,EAAkB6hC,MAAA,CAAOxiB,MAAP,CAAcpf,KAAhC,EAAuC4hC,MAAA,CAAOxiB,MAAP,CAAcnf,MAArD;MAIA2hC,MAAA,CAAOG,SAAP,CAAiB,CAACV,SAAA,CAAU,CAAV,CAAlB,EAAgC,CAACA,SAAA,CAAU,CAAV,CAAjC;MACAH,OAAA,GAAUhiC,SAAA,CAAKoxB,SAAL,CAAe4Q,OAAf,EAAwB,CAChC,CADgC,EAEhC,CAFgC,EAGhC,CAHgC,EAIhC,CAJgC,EAKhCG,SAAA,CAAU,CAAV,CALgC,EAMhCA,SAAA,CAAU,CAAV,CANgC,CAAxB,CAAV;MASAO,MAAA,CAAOtR,SAAP,CAAiB,GAAG2Q,KAAA,CAAMe,aAA1B;MACA,IAAI,KAAKtB,MAAT,EAAiB;QACfkB,MAAA,CAAOtR,SAAP,CAAiB,GAAG,KAAKoQ,MAAzB;MADe;MAGjBhB,gBAAA,CAAiBkC,MAAjB,EAAyB,KAAKxB,KAA9B;MAEAwB,MAAA,CAAOK,SAAP,GAAmB,KAAKtB,eAAL,CAAqBiB,MAArB,CAAnB;MACAA,MAAA,CAAOM,IAAP;MAEAd,OAAA,GAAUzB,GAAA,CAAIwC,aAAJ,CAAkBV,SAAA,CAAUriB,MAA5B,EAAoC,WAApC,CAAV;MACA,MAAMgjB,SAAA,GAAY,IAAIC,SAAJ,CAAcnB,OAAd,CAAlB;MACAE,OAAA,CAAQkB,YAAR,CAAqBF,SAArB;IA9C8D,CAAhE,MA+CO;MAIL1C,gBAAA,CAAiBC,GAAjB,EAAsB,KAAKS,KAA3B;MACAgB,OAAA,GAAU,KAAKT,eAAL,CAAqBhB,GAArB,CAAV;IALK;IAOP,OAAOyB,OAAP;EAxDwC;AAvCe;AAmG3D,SAASmB,YAATA,CAAsBjiC,IAAtB,EAA4B0gB,OAA5B,EAAqCwhB,EAArC,EAAyCC,EAAzC,EAA6CC,EAA7C,EAAiDC,EAAjD,EAAqDC,EAArD,EAAyDC,EAAzD,EAA6D;EAE3D,MAAMC,MAAA,GAAS9hB,OAAA,CAAQ8hB,MAAvB;IACEC,MAAA,GAAS/hB,OAAA,CAAQ+hB,MADnB;EAEA,MAAMC,KAAA,GAAQ1iC,IAAA,CAAKA,IAAnB;IACE2iC,OAAA,GAAU3iC,IAAA,CAAKN,KAAL,GAAa,CADzB;EAEA,IAAIkjC,GAAJ;EACA,IAAIJ,MAAA,CAAON,EAAA,GAAK,CAAZ,IAAiBM,MAAA,CAAOL,EAAA,GAAK,CAAZ,CAArB,EAAqC;IACnCS,GAAA,GAAMV,EAAN;IACAA,EAAA,GAAKC,EAAL;IACAA,EAAA,GAAKS,GAAL;IACAA,GAAA,GAAMP,EAAN;IACAA,EAAA,GAAKC,EAAL;IACAA,EAAA,GAAKM,GAAL;EANmC;EAQrC,IAAIJ,MAAA,CAAOL,EAAA,GAAK,CAAZ,IAAiBK,MAAA,CAAOJ,EAAA,GAAK,CAAZ,CAArB,EAAqC;IACnCQ,GAAA,GAAMT,EAAN;IACAA,EAAA,GAAKC,EAAL;IACAA,EAAA,GAAKQ,GAAL;IACAA,GAAA,GAAMN,EAAN;IACAA,EAAA,GAAKC,EAAL;IACAA,EAAA,GAAKK,GAAL;EANmC;EAQrC,IAAIJ,MAAA,CAAON,EAAA,GAAK,CAAZ,IAAiBM,MAAA,CAAOL,EAAA,GAAK,CAAZ,CAArB,EAAqC;IACnCS,GAAA,GAAMV,EAAN;IACAA,EAAA,GAAKC,EAAL;IACAA,EAAA,GAAKS,GAAL;IACAA,GAAA,GAAMP,EAAN;IACAA,EAAA,GAAKC,EAAL;IACAA,EAAA,GAAKM,GAAL;EANmC;EAQrC,MAAMC,EAAA,GAAM,CAAAL,MAAA,CAAON,EAAP,IAAaxhB,OAAA,CAAQyO,OAArB,IAAgCzO,OAAA,CAAQoiB,MAApD;EACA,MAAMC,EAAA,GAAM,CAAAP,MAAA,CAAON,EAAA,GAAK,CAAZ,IAAiBxhB,OAAA,CAAQ0O,OAAzB,IAAoC1O,OAAA,CAAQsiB,MAAxD;EACA,MAAMC,EAAA,GAAM,CAAAT,MAAA,CAAOL,EAAP,IAAazhB,OAAA,CAAQyO,OAArB,IAAgCzO,OAAA,CAAQoiB,MAApD;EACA,MAAMI,EAAA,GAAM,CAAAV,MAAA,CAAOL,EAAA,GAAK,CAAZ,IAAiBzhB,OAAA,CAAQ0O,OAAzB,IAAoC1O,OAAA,CAAQsiB,MAAxD;EACA,MAAMG,EAAA,GAAM,CAAAX,MAAA,CAAOJ,EAAP,IAAa1hB,OAAA,CAAQyO,OAArB,IAAgCzO,OAAA,CAAQoiB,MAApD;EACA,MAAMM,EAAA,GAAM,CAAAZ,MAAA,CAAOJ,EAAA,GAAK,CAAZ,IAAiB1hB,OAAA,CAAQ0O,OAAzB,IAAoC1O,OAAA,CAAQsiB,MAAxD;EACA,IAAID,EAAA,IAAMK,EAAV,EAAc;IACZ;EADY;EAGd,MAAMC,GAAA,GAAMZ,MAAA,CAAOJ,EAAP,CAAZ;IACEiB,GAAA,GAAMb,MAAA,CAAOJ,EAAA,GAAK,CAAZ,CADR;IAEEkB,GAAA,GAAMd,MAAA,CAAOJ,EAAA,GAAK,CAAZ,CAFR;EAGA,MAAMmB,GAAA,GAAMf,MAAA,CAAOH,EAAP,CAAZ;IACEmB,GAAA,GAAMhB,MAAA,CAAOH,EAAA,GAAK,CAAZ,CADR;IAEEoB,GAAA,GAAMjB,MAAA,CAAOH,EAAA,GAAK,CAAZ,CAFR;EAGA,MAAMqB,GAAA,GAAMlB,MAAA,CAAOF,EAAP,CAAZ;IACEqB,GAAA,GAAMnB,MAAA,CAAOF,EAAA,GAAK,CAAZ,CADR;IAEEsB,GAAA,GAAMpB,MAAA,CAAOF,EAAA,GAAK,CAAZ,CAFR;EAIA,MAAMuB,IAAA,GAAO/nC,IAAA,CAAKsX,KAAL,CAAW0vB,EAAX,CAAb;IACEgB,IAAA,GAAOhoC,IAAA,CAAKsX,KAAL,CAAW+vB,EAAX,CADT;EAEA,IAAIY,EAAJ,EAAQC,GAAR,EAAaC,GAAb,EAAkBC,GAAlB;EACA,IAAIC,EAAJ,EAAQC,GAAR,EAAaC,GAAb,EAAkBC,GAAlB;EACA,KAAK,IAAI7nC,CAAA,GAAIonC,IAAR,EAAcpnC,CAAA,IAAKqnC,IAAxB,EAA8BrnC,CAAA,EAA9B,EAAmC;IACjC,IAAIA,CAAA,GAAIwmC,EAAR,EAAY;MACV,MAAMtmC,CAAA,GAAIF,CAAA,GAAIqmC,EAAJ,GAAS,CAAT,GAAc,CAAAA,EAAA,GAAKrmC,CAAL,KAAWqmC,EAAA,GAAKG,EAAL,CAAnC;MACAc,EAAA,GAAKnB,EAAA,GAAM,CAAAA,EAAA,GAAKI,EAAL,IAAWrmC,CAAtB;MACAqnC,GAAA,GAAMZ,GAAA,GAAO,CAAAA,GAAA,GAAMG,GAAN,IAAa5mC,CAA1B;MACAsnC,GAAA,GAAMZ,GAAA,GAAO,CAAAA,GAAA,GAAMG,GAAN,IAAa7mC,CAA1B;MACAunC,GAAA,GAAMZ,GAAA,GAAO,CAAAA,GAAA,GAAMG,GAAN,IAAa9mC,CAA1B;IALU,CAAZ,MAMO;MACL,IAAIA,CAAJ;MACA,IAAIF,CAAA,GAAI0mC,EAAR,EAAY;QACVxmC,CAAA,GAAI,CAAJ;MADU,CAAZ,MAEO,IAAIsmC,EAAA,KAAOE,EAAX,EAAe;QACpBxmC,CAAA,GAAI,CAAJ;MADoB,CAAf,MAEA;QACLA,CAAA,GAAK,CAAAsmC,EAAA,GAAKxmC,CAAL,KAAWwmC,EAAA,GAAKE,EAAL,CAAhB;MADK;MAGPY,EAAA,GAAKf,EAAA,GAAM,CAAAA,EAAA,GAAKE,EAAL,IAAWvmC,CAAtB;MACAqnC,GAAA,GAAMT,GAAA,GAAO,CAAAA,GAAA,GAAMG,GAAN,IAAa/mC,CAA1B;MACAsnC,GAAA,GAAMT,GAAA,GAAO,CAAAA,GAAA,GAAMG,GAAN,IAAahnC,CAA1B;MACAunC,GAAA,GAAMT,GAAA,GAAO,CAAAA,GAAA,GAAMG,GAAN,IAAajnC,CAA1B;IAZK;IAeP,IAAIA,CAAJ;IACA,IAAIF,CAAA,GAAIqmC,EAAR,EAAY;MACVnmC,CAAA,GAAI,CAAJ;IADU,CAAZ,MAEO,IAAIF,CAAA,GAAI0mC,EAAR,EAAY;MACjBxmC,CAAA,GAAI,CAAJ;IADiB,CAAZ,MAEA;MACLA,CAAA,GAAK,CAAAmmC,EAAA,GAAKrmC,CAAL,KAAWqmC,EAAA,GAAKK,EAAL,CAAhB;IADK;IAGPgB,EAAA,GAAKvB,EAAA,GAAM,CAAAA,EAAA,GAAKM,EAAL,IAAWvmC,CAAtB;IACAynC,GAAA,GAAMhB,GAAA,GAAO,CAAAA,GAAA,GAAMM,GAAN,IAAa/mC,CAA1B;IACA0nC,GAAA,GAAMhB,GAAA,GAAO,CAAAA,GAAA,GAAMM,GAAN,IAAahnC,CAA1B;IACA2nC,GAAA,GAAMhB,GAAA,GAAO,CAAAA,GAAA,GAAMM,GAAN,IAAajnC,CAA1B;IACA,MAAM4nC,GAAA,GAAMzoC,IAAA,CAAKsX,KAAL,CAAWtX,IAAA,CAAKG,GAAL,CAAS8nC,EAAT,EAAaI,EAAb,CAAX,CAAZ;IACA,MAAMK,GAAA,GAAM1oC,IAAA,CAAKsX,KAAL,CAAWtX,IAAA,CAAKE,GAAL,CAAS+nC,EAAT,EAAaI,EAAb,CAAX,CAAZ;IACA,IAAIM,CAAA,GAAI/B,OAAA,GAAUjmC,CAAV,GAAc8nC,GAAA,GAAM,CAA5B;IACA,KAAK,IAAIloC,CAAA,GAAIkoC,GAAR,EAAaloC,CAAA,IAAKmoC,GAAvB,EAA4BnoC,CAAA,EAA5B,EAAiC;MAC/BM,CAAA,GAAK,CAAAonC,EAAA,GAAK1nC,CAAL,KAAW0nC,EAAA,GAAKI,EAAL,CAAhB;MACA,IAAIxnC,CAAA,GAAI,CAAR,EAAW;QACTA,CAAA,GAAI,CAAJ;MADS,CAAX,MAEO,IAAIA,CAAA,GAAI,CAAR,EAAW;QAChBA,CAAA,GAAI,CAAJ;MADgB;MAGlB8lC,KAAA,CAAMgC,CAAA,EAAN,IAAcT,GAAA,GAAO,CAAAA,GAAA,GAAMI,GAAN,IAAaznC,CAArB,GAA0B,CAAvC;MACA8lC,KAAA,CAAMgC,CAAA,EAAN,IAAcR,GAAA,GAAO,CAAAA,GAAA,GAAMI,GAAN,IAAa1nC,CAArB,GAA0B,CAAvC;MACA8lC,KAAA,CAAMgC,CAAA,EAAN,IAAcP,GAAA,GAAO,CAAAA,GAAA,GAAMI,GAAN,IAAa3nC,CAArB,GAA0B,CAAvC;MACA8lC,KAAA,CAAMgC,CAAA,EAAN,IAAa,GAAb;IAV+B;EArCA;AAtDwB;AA0G7D,SAASC,UAATA,CAAoB3kC,IAApB,EAA0B4kC,MAA1B,EAAkClkB,OAAlC,EAA2C;EACzC,MAAMmkB,EAAA,GAAKD,MAAA,CAAOpC,MAAlB;EACA,MAAMsC,EAAA,GAAKF,MAAA,CAAOnC,MAAlB;EACA,IAAI9pB,CAAJ,EAAOwD,EAAP;EACA,QAAQyoB,MAAA,CAAOr0B,IAAf;IACE,KAAK,SAAL;MACE,MAAMw0B,cAAA,GAAiBH,MAAA,CAAOG,cAA9B;MACA,MAAMC,IAAA,GAAOjpC,IAAA,CAAKC,KAAL,CAAW6oC,EAAA,CAAGt6B,MAAH,GAAYw6B,cAAvB,IAAyC,CAAtD;MACA,MAAME,IAAA,GAAOF,cAAA,GAAiB,CAA9B;MACA,KAAKpsB,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAIqsB,IAAhB,EAAsBrsB,CAAA,EAAtB,EAA2B;QACzB,IAAIusB,CAAA,GAAIvsB,CAAA,GAAIosB,cAAZ;QACA,KAAK,IAAIL,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIO,IAApB,EAA0BP,CAAA,IAAKQ,CAAA,EAA/B,EAAoC;UAClCjD,YAAA,CACEjiC,IADF,EAEE0gB,OAFF,EAGEmkB,EAAA,CAAGK,CAAH,CAHF,EAIEL,EAAA,CAAGK,CAAA,GAAI,CAAP,CAJF,EAKEL,EAAA,CAAGK,CAAA,GAAIH,cAAP,CALF,EAMED,EAAA,CAAGI,CAAH,CANF,EAOEJ,EAAA,CAAGI,CAAA,GAAI,CAAP,CAPF,EAQEJ,EAAA,CAAGI,CAAA,GAAIH,cAAP,CARF;UAUA9C,YAAA,CACEjiC,IADF,EAEE0gB,OAFF,EAGEmkB,EAAA,CAAGK,CAAA,GAAIH,cAAJ,GAAqB,CAAxB,CAHF,EAIEF,EAAA,CAAGK,CAAA,GAAI,CAAP,CAJF,EAKEL,EAAA,CAAGK,CAAA,GAAIH,cAAP,CALF,EAMED,EAAA,CAAGI,CAAA,GAAIH,cAAJ,GAAqB,CAAxB,CANF,EAOED,EAAA,CAAGI,CAAA,GAAI,CAAP,CAPF,EAQEJ,EAAA,CAAGI,CAAA,GAAIH,cAAP,CARF;QAXkC;MAFX;MAyB3B;IACF,KAAK,WAAL;MACE,KAAKpsB,CAAA,GAAI,CAAJ,EAAOwD,EAAA,GAAK0oB,EAAA,CAAGt6B,MAApB,EAA4BoO,CAAA,GAAIwD,EAAhC,EAAoCxD,CAAA,IAAK,CAAzC,EAA4C;QAC1CspB,YAAA,CACEjiC,IADF,EAEE0gB,OAFF,EAGEmkB,EAAA,CAAGlsB,CAAH,CAHF,EAIEksB,EAAA,CAAGlsB,CAAA,GAAI,CAAP,CAJF,EAKEksB,EAAA,CAAGlsB,CAAA,GAAI,CAAP,CALF,EAMEmsB,EAAA,CAAGnsB,CAAH,CANF,EAOEmsB,EAAA,CAAGnsB,CAAA,GAAI,CAAP,CAPF,EAQEmsB,EAAA,CAAGnsB,CAAA,GAAI,CAAP,CARF;MAD0C;MAY5C;IACF;MACE,MAAM,IAAI0L,KAAJ,CAAU,gBAAV,CAAN;EA9CJ;AAJyC;AAsD3C,MAAM8gB,kBAAN,SAAiCzF,kBAAjC,CAAoD;EAClDz8B,YAAY48B,EAAZ,EAAgB;IACd;IACA,KAAKuF,OAAL,GAAevF,EAAA,CAAG,CAAH,CAAf;IACA,KAAKwF,OAAL,GAAexF,EAAA,CAAG,CAAH,CAAf;IACA,KAAKyF,QAAL,GAAgBzF,EAAA,CAAG,CAAH,CAAhB;IACA,KAAK0F,OAAL,GAAe1F,EAAA,CAAG,CAAH,CAAf;IACA,KAAKC,KAAL,GAAaD,EAAA,CAAG,CAAH,CAAb;IACA,KAAK2F,WAAL,GAAmB3F,EAAA,CAAG,CAAH,CAAnB;IACA,KAAKO,MAAL,GAAc,IAAd;EARc;EAWhBqF,kBAAkBC,aAAlB,EAAiC9yB,eAAjC,EAAkDwuB,cAAlD,EAAkE;IAGhE,MAAMuE,cAAA,GAAiB,GAAvB;IAEA,MAAMC,gBAAA,GAAmB,IAAzB;IAGA,MAAMzyB,WAAA,GAAc,CAApB;IAEA,MAAMgc,OAAA,GAAUpzB,IAAA,CAAKC,KAAL,CAAW,KAAKupC,OAAL,CAAa,CAAb,CAAX,CAAhB;IACA,MAAMnW,OAAA,GAAUrzB,IAAA,CAAKC,KAAL,CAAW,KAAKupC,OAAL,CAAa,CAAb,CAAX,CAAhB;IACA,MAAMM,WAAA,GAAc9pC,IAAA,CAAKmlC,IAAL,CAAU,KAAKqE,OAAL,CAAa,CAAb,CAAV,IAA6BpW,OAAjD;IACA,MAAM2W,YAAA,GAAe/pC,IAAA,CAAKmlC,IAAL,CAAU,KAAKqE,OAAL,CAAa,CAAb,CAAV,IAA6BnW,OAAlD;IAEA,MAAM1vB,KAAA,GAAQ3D,IAAA,CAAKG,GAAL,CACZH,IAAA,CAAKmlC,IAAL,CAAUnlC,IAAA,CAAKwX,GAAL,CAASsyB,WAAA,GAAcH,aAAA,CAAc,CAAd,CAAd,GAAiCC,cAA1C,CAAV,CADY,EAEZC,gBAFY,CAAd;IAIA,MAAMjmC,MAAA,GAAS5D,IAAA,CAAKG,GAAL,CACbH,IAAA,CAAKmlC,IAAL,CAAUnlC,IAAA,CAAKwX,GAAL,CAASuyB,YAAA,GAAeJ,aAAA,CAAc,CAAd,CAAf,GAAkCC,cAA3C,CAAV,CADa,EAEbC,gBAFa,CAAf;IAIA,MAAM9C,MAAA,GAAS+C,WAAA,GAAcnmC,KAA7B;IACA,MAAMsjC,MAAA,GAAS8C,YAAA,GAAenmC,MAA9B;IAEA,MAAM+gB,OAAA,GAAU;MACd8hB,MAAA,EAAQ,KAAK4C,OADC;MAEd3C,MAAA,EAAQ,KAAK4C,OAFC;MAGdlW,OAAA,EAAS,CAACA,OAHI;MAIdC,OAAA,EAAS,CAACA,OAJI;MAKd0T,MAAA,EAAQ,IAAIA,MALE;MAMdE,MAAA,EAAQ,IAAIA;IANE,CAAhB;IASA,MAAM+C,WAAA,GAAcrmC,KAAA,GAAQyT,WAAA,GAAc,CAA1C;IACA,MAAM6yB,YAAA,GAAermC,MAAA,GAASwT,WAAA,GAAc,CAA5C;IAEA,MAAMguB,SAAA,GAAYC,cAAA,CAAeC,SAAf,CAChB,MADgB,EAEhB0E,WAFgB,EAGhBC,YAHgB,EAIhB,KAJgB,CAAlB;IAMA,MAAM1E,MAAA,GAASH,SAAA,CAAUzgB,OAAzB;IAEA,MAAM1gB,IAAA,GAAOshC,MAAA,CAAO2E,eAAP,CAAuBvmC,KAAvB,EAA8BC,MAA9B,CAAb;IACA,IAAIiT,eAAJ,EAAqB;MACnB,MAAM8vB,KAAA,GAAQ1iC,IAAA,CAAKA,IAAnB;MACA,KAAK,IAAI2Y,CAAA,GAAI,CAAR,EAAWwD,EAAA,GAAKumB,KAAA,CAAMn4B,MAAtB,EAA8BoO,CAAA,GAAIwD,EAAvC,EAA2CxD,CAAA,IAAK,CAAhD,EAAmD;QACjD+pB,KAAA,CAAM/pB,CAAN,IAAW/F,eAAA,CAAgB,CAAhB,CAAX;QACA8vB,KAAA,CAAM/pB,CAAA,GAAI,CAAV,IAAe/F,eAAA,CAAgB,CAAhB,CAAf;QACA8vB,KAAA,CAAM/pB,CAAA,GAAI,CAAV,IAAe/F,eAAA,CAAgB,CAAhB,CAAf;QACA8vB,KAAA,CAAM/pB,CAAA,GAAI,CAAV,IAAe,GAAf;MAJiD;IAFhC;IASrB,WAAWisB,MAAX,IAAqB,KAAKU,QAA1B,EAAoC;MAClCX,UAAA,CAAW3kC,IAAX,EAAiB4kC,MAAjB,EAAyBlkB,OAAzB;IADkC;IAGpC4gB,MAAA,CAAO4E,YAAP,CAAoBlmC,IAApB,EAA0BmT,WAA1B,EAAuCA,WAAvC;IACA,MAAM2L,MAAA,GAASqiB,SAAA,CAAUriB,MAAzB;IAEA,OAAO;MACLA,MADK;MAELqQ,OAAA,EAASA,OAAA,GAAUhc,WAAA,GAAc2vB,MAF5B;MAGL1T,OAAA,EAASA,OAAA,GAAUjc,WAAA,GAAc6vB,MAH5B;MAILF,MAJK;MAKLE;IALK,CAAP;EA9DgE;EAuElErD,WAAWN,GAAX,EAAgBsB,KAAhB,EAAuBC,OAAvB,EAAgCC,QAAhC,EAA0C;IACxCzB,gBAAA,CAAiBC,GAAjB,EAAsB,KAAKS,KAA3B;IACA,IAAI5Q,KAAJ;IACA,IAAI2R,QAAA,KAAa7B,QAAA,CAASG,OAA1B,EAAmC;MACjCjQ,KAAA,GAAQtwB,SAAA,CAAKunC,6BAAL,CAAmCpH,qCAAA,CAAoBM,GAApB,CAAnC,CAAR;IADiC,CAAnC,MAEO;MAELnQ,KAAA,GAAQtwB,SAAA,CAAKunC,6BAAL,CAAmCxF,KAAA,CAAMe,aAAzC,CAAR;MACA,IAAI,KAAKtB,MAAT,EAAiB;QACf,MAAMgG,WAAA,GAAcxnC,SAAA,CAAKunC,6BAAL,CAAmC,KAAK/F,MAAxC,CAApB;QACAlR,KAAA,GAAQ,CAACA,KAAA,CAAM,CAAN,IAAWkX,WAAA,CAAY,CAAZ,CAAZ,EAA4BlX,KAAA,CAAM,CAAN,IAAWkX,WAAA,CAAY,CAAZ,CAAvC,CAAR;MAFe;IAHZ;IAWP,MAAMC,sBAAA,GAAyB,KAAKZ,iBAAL,CAC7BvW,KAD6B,EAE7B2R,QAAA,KAAa7B,QAAA,CAASG,OAAtB,GAAgC,IAAhC,GAAuC,KAAKqG,WAFf,EAG7B7E,KAAA,CAAMS,cAHuB,CAA/B;IAMA,IAAIP,QAAA,KAAa7B,QAAA,CAASG,OAA1B,EAAmC;MACjCE,GAAA,CAAI2C,YAAJ,CAAiB,GAAGrB,KAAA,CAAMe,aAA1B;MACA,IAAI,KAAKtB,MAAT,EAAiB;QACff,GAAA,CAAIrP,SAAJ,CAAc,GAAG,KAAKoQ,MAAtB;MADe;IAFgB;IAOnCf,GAAA,CAAIoC,SAAJ,CACE4E,sBAAA,CAAuBlX,OADzB,EAEEkX,sBAAA,CAAuBjX,OAFzB;IAIAiQ,GAAA,CAAInQ,KAAJ,CAAUmX,sBAAA,CAAuBvD,MAAjC,EAAyCuD,sBAAA,CAAuBrD,MAAhE;IAEA,OAAO3D,GAAA,CAAIwC,aAAJ,CAAkBwE,sBAAA,CAAuBvnB,MAAzC,EAAiD,WAAjD,CAAP;EAnCwC;AAnFQ;AA0HpD,MAAMwnB,mBAAN,SAAkC5G,kBAAlC,CAAqD;EACnDC,WAAA,EAAa;IACX,OAAO,SAAP;EADW;AADsC;AAMrD,SAAS4G,iBAATA,CAA2B1G,EAA3B,EAA+B;EAC7B,QAAQA,EAAA,CAAG,CAAH,CAAR;IACE,KAAK,aAAL;MACE,OAAO,IAAID,yBAAJ,CAA8BC,EAA9B,CAAP;IACF,KAAK,MAAL;MACE,OAAO,IAAIsF,kBAAJ,CAAuBtF,EAAvB,CAAP;IACF,KAAK,OAAL;MACE,OAAO,IAAIyG,mBAAJ,EAAP;EANJ;EAQA,MAAM,IAAIjiB,KAAJ,CAAW,oBAAmBwb,EAAA,CAAG,CAAH,CAApB,EAAV,CAAN;AAT6B;AAY/B,MAAM2G,SAAA,GAAY;EAChBC,OAAA,EAAS,CADO;EAEhBC,SAAA,EAAW;AAFK,CAAlB;AAKA,MAAMC,aAAN,CAAoB;EAElB,OAAOf,gBAAP,GAA0B,IAA1B;EAEA3iC,YAAY48B,EAAZ,EAAgBtiC,KAAhB,EAAuB8hC,GAAvB,EAA4BuH,qBAA5B,EAAmDlF,aAAnD,EAAkE;IAChE,KAAK7Q,YAAL,GAAoBgP,EAAA,CAAG,CAAH,CAApB;IACA,KAAKO,MAAL,GAAcP,EAAA,CAAG,CAAH,KAAS,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAvB;IACA,KAAKP,IAAL,GAAYO,EAAA,CAAG,CAAH,CAAZ;IACA,KAAKgH,KAAL,GAAahH,EAAA,CAAG,CAAH,CAAb;IACA,KAAKiH,KAAL,GAAajH,EAAA,CAAG,CAAH,CAAb;IACA,KAAKkH,SAAL,GAAiBlH,EAAA,CAAG,CAAH,CAAjB;IACA,KAAKmH,UAAL,GAAkBnH,EAAA,CAAG,CAAH,CAAlB;IACA,KAAKtiC,KAAL,GAAaA,KAAb;IACA,KAAK8hC,GAAL,GAAWA,GAAX;IACA,KAAKuH,qBAAL,GAA6BA,qBAA7B;IACA,KAAKlF,aAAL,GAAqBA,aAArB;EAXgE;EAclEuF,oBAAoBtG,KAApB,EAA2B;IACzB,MAAM9P,YAAA,GAAe,KAAKA,YAA1B;IACA,MAAMyO,IAAA,GAAO,KAAKA,IAAlB;IACA,MAAMuH,KAAA,GAAQ,KAAKA,KAAnB;IACA,MAAMC,KAAA,GAAQ,KAAKA,KAAnB;IACA,MAAMC,SAAA,GAAY,KAAKA,SAAvB;IACA,MAAMC,UAAA,GAAa,KAAKA,UAAxB;IACA,MAAMzpC,KAAA,GAAQ,KAAKA,KAAnB;IACA,MAAMqpC,qBAAA,GAAwB,KAAKA,qBAAnC;IAEAtlB,aAAA,CAAK,iBAAiB0lB,UAAtB;IAsBA,MAAME,EAAA,GAAK5H,IAAA,CAAK,CAAL,CAAX;MACE6H,EAAA,GAAK7H,IAAA,CAAK,CAAL,CADP;MAEEuD,EAAA,GAAKvD,IAAA,CAAK,CAAL,CAFP;MAGEyD,EAAA,GAAKzD,IAAA,CAAK,CAAL,CAHP;IAMA,MAAM8G,WAAA,GAAcxnC,SAAA,CAAKunC,6BAAL,CAAmC,KAAK/F,MAAxC,CAApB;IACA,MAAMgH,cAAA,GAAiBxoC,SAAA,CAAKunC,6BAAL,CACrB,KAAKzE,aADgB,CAAvB;IAGA,MAAMgE,aAAA,GAAgB,CACpBU,WAAA,CAAY,CAAZ,IAAiBgB,cAAA,CAAe,CAAf,CADG,EAEpBhB,WAAA,CAAY,CAAZ,IAAiBgB,cAAA,CAAe,CAAf,CAFG,CAAtB;IAQA,MAAMC,IAAA,GAAO,KAAKC,eAAL,CACXT,KADW,EAEX,KAAKxH,GAAL,CAASvgB,MAAT,CAAgBpf,KAFL,EAGXgmC,aAAA,CAAc,CAAd,CAHW,CAAb;IAKA,MAAM6B,IAAA,GAAO,KAAKD,eAAL,CACXR,KADW,EAEX,KAAKzH,GAAL,CAASvgB,MAAT,CAAgBnf,MAFL,EAGX+lC,aAAA,CAAc,CAAd,CAHW,CAAb;IAMA,MAAMvE,SAAA,GAAYR,KAAA,CAAMS,cAAN,CAAqBC,SAArB,CAChB,SADgB,EAEhBgG,IAAA,CAAK/vB,IAFW,EAGhBiwB,IAAA,CAAKjwB,IAHW,EAIhB,IAJgB,CAAlB;IAMA,MAAMgqB,MAAA,GAASH,SAAA,CAAUzgB,OAAzB;IACA,MAAM8mB,QAAA,GAAWZ,qBAAA,CAAsBa,oBAAtB,CAA2CnG,MAA3C,CAAjB;IACAkG,QAAA,CAASE,UAAT,GAAsB/G,KAAA,CAAM+G,UAA5B;IAEA,KAAKC,8BAAL,CAAoCH,QAApC,EAA8CT,SAA9C,EAAyDxpC,KAAzD;IAEA,IAAIqqC,UAAA,GAAaV,EAAjB;IACA,IAAIW,UAAA,GAAaV,EAAjB;IACA,IAAIW,UAAA,GAAajF,EAAjB;IACA,IAAIkF,UAAA,GAAahF,EAAjB;IAIA,IAAImE,EAAA,GAAK,CAAT,EAAY;MACVU,UAAA,GAAa,CAAb;MACAE,UAAA,IAAc/rC,IAAA,CAAKwX,GAAL,CAAS2zB,EAAT,CAAd;IAFU;IAIZ,IAAIC,EAAA,GAAK,CAAT,EAAY;MACVU,UAAA,GAAa,CAAb;MACAE,UAAA,IAAchsC,IAAA,CAAKwX,GAAL,CAAS4zB,EAAT,CAAd;IAFU;IAIZ7F,MAAA,CAAOG,SAAP,CAAiB,EAAE4F,IAAA,CAAKnY,KAAL,GAAa0Y,UAAb,CAAnB,EAA6C,EAAEL,IAAA,CAAKrY,KAAL,GAAa2Y,UAAb,CAA/C;IACAL,QAAA,CAASxX,SAAT,CAAmBqX,IAAA,CAAKnY,KAAxB,EAA+B,CAA/B,EAAkC,CAAlC,EAAqCqY,IAAA,CAAKrY,KAA1C,EAAiD,CAAjD,EAAoD,CAApD;IAIAoS,MAAA,CAAO0G,IAAP;IAEA,KAAKC,QAAL,CAAcT,QAAd,EAAwBI,UAAxB,EAAoCC,UAApC,EAAgDC,UAAhD,EAA4DC,UAA5D;IAEAP,QAAA,CAAS9F,aAAT,GAAyB3C,qCAAA,CAAoByI,QAAA,CAASnI,GAA7B,CAAzB;IAEAmI,QAAA,CAASpK,mBAAT,CAA6BvM,YAA7B;IAEA2W,QAAA,CAASvK,UAAT;IAEA,OAAO;MACLne,MAAA,EAAQqiB,SAAA,CAAUriB,MADb;MAELgkB,MAAA,EAAQuE,IAAA,CAAKnY,KAFR;MAGL8T,MAAA,EAAQuE,IAAA,CAAKrY,KAHR;MAILC,OAAA,EAASyY,UAJJ;MAKLxY,OAAA,EAASyY;IALJ,CAAP;EAvGyB;EAgH3BP,gBAAgBY,IAAhB,EAAsBC,cAAtB,EAAsCjZ,KAAtC,EAA6C;IAE3CgZ,IAAA,GAAOnsC,IAAA,CAAKwX,GAAL,CAAS20B,IAAT,CAAP;IAKA,MAAME,OAAA,GAAUrsC,IAAA,CAAKE,GAAL,CAAS0qC,aAAA,CAAcf,gBAAvB,EAAyCuC,cAAzC,CAAhB;IACA,IAAI7wB,IAAA,GAAOvb,IAAA,CAAKmlC,IAAL,CAAUgH,IAAA,GAAOhZ,KAAjB,CAAX;IACA,IAAI5X,IAAA,IAAQ8wB,OAAZ,EAAqB;MACnB9wB,IAAA,GAAO8wB,OAAP;IADmB,CAArB,MAEO;MACLlZ,KAAA,GAAQ5X,IAAA,GAAO4wB,IAAf;IADK;IAGP,OAAO;MAAEhZ,KAAF;MAAS5X;IAAT,CAAP;EAd2C;EAiB7C2wB,SAAST,QAAT,EAAmBN,EAAnB,EAAuBC,EAAvB,EAA2BtE,EAA3B,EAA+BE,EAA/B,EAAmC;IACjC,MAAMsF,SAAA,GAAYxF,EAAA,GAAKqE,EAAvB;IACA,MAAMoB,UAAA,GAAavF,EAAA,GAAKoE,EAAxB;IACAK,QAAA,CAASnI,GAAT,CAAa5/B,IAAb,CAAkBynC,EAAlB,EAAsBC,EAAtB,EAA0BkB,SAA1B,EAAqCC,UAArC;IACAd,QAAA,CAASxG,OAAT,CAAiBuH,gBAAjB,CAAkCxJ,qCAAA,CAAoByI,QAAA,CAASnI,GAA7B,CAAlC,EAAqE,CACnE6H,EADmE,EAEnEC,EAFmE,EAGnEtE,EAHmE,EAInEE,EAJmE,CAArE;IAMAyE,QAAA,CAAS/H,IAAT;IACA+H,QAAA,CAASgB,OAAT;EAXiC;EAcnCb,+BAA+BH,QAA/B,EAAyCT,SAAzC,EAAoDxpC,KAApD,EAA2D;IACzD,MAAMmjB,OAAA,GAAU8mB,QAAA,CAASnI,GAAzB;MACE2B,OAAA,GAAUwG,QAAA,CAASxG,OADrB;IAEA,QAAQ+F,SAAR;MACE,KAAKP,SAAA,CAAUC,OAAf;QACE,MAAMpH,GAAA,GAAM,KAAKA,GAAjB;QACA3e,OAAA,CAAQihB,SAAR,GAAoBtC,GAAA,CAAIsC,SAAxB;QACAjhB,OAAA,CAAQ+nB,WAAR,GAAsBpJ,GAAA,CAAIoJ,WAA1B;QACAzH,OAAA,CAAQj4B,SAAR,GAAoBs2B,GAAA,CAAIsC,SAAxB;QACAX,OAAA,CAAQ93B,WAAR,GAAsBm2B,GAAA,CAAIoJ,WAA1B;QACA;MACF,KAAKjC,SAAA,CAAUE,SAAf;QACE,MAAMgC,QAAA,GAAW9pC,SAAA,CAAKmI,YAAL,CAAkBxJ,KAAA,CAAM,CAAN,CAAlB,EAA4BA,KAAA,CAAM,CAAN,CAA5B,EAAsCA,KAAA,CAAM,CAAN,CAAtC,CAAjB;QACAmjB,OAAA,CAAQihB,SAAR,GAAoB+G,QAApB;QACAhoB,OAAA,CAAQ+nB,WAAR,GAAsBC,QAAtB;QAEA1H,OAAA,CAAQj4B,SAAR,GAAoB2/B,QAApB;QACA1H,OAAA,CAAQ93B,WAAR,GAAsBw/B,QAAtB;QACA;MACF;QACE,MAAM,IAAI5J,gBAAJ,CAAiB,2BAA0BiI,SAA3B,EAAhB,CAAN;IAjBJ;EAHyD;EAwB3DpH,WAAWN,GAAX,EAAgBsB,KAAhB,EAAuBC,OAAvB,EAAgCC,QAAhC,EAA0C;IAExC,IAAIT,MAAA,GAASQ,OAAb;IACA,IAAIC,QAAA,KAAa7B,QAAA,CAASG,OAA1B,EAAmC;MACjCiB,MAAA,GAASxhC,SAAA,CAAKoxB,SAAL,CAAeoQ,MAAf,EAAuBO,KAAA,CAAMe,aAA7B,CAAT;MACA,IAAI,KAAKtB,MAAT,EAAiB;QACfA,MAAA,GAASxhC,SAAA,CAAKoxB,SAAL,CAAeoQ,MAAf,EAAuB,KAAKA,MAA5B,CAAT;MADe;IAFgB;IAOnC,MAAMiG,sBAAA,GAAyB,KAAKY,mBAAL,CAAyBtG,KAAzB,CAA/B;IAEA,IAAImB,SAAA,GAAY,IAAIC,SAAJ,CAAc3B,MAAd,CAAhB;IAGA0B,SAAA,GAAYA,SAAA,CAAUL,SAAV,CACV4E,sBAAA,CAAuBlX,OADb,EAEVkX,sBAAA,CAAuBjX,OAFb,CAAZ;IAIA0S,SAAA,GAAYA,SAAA,CAAU5S,KAAV,CACV,IAAImX,sBAAA,CAAuBvD,MADjB,EAEV,IAAIuD,sBAAA,CAAuBrD,MAFjB,CAAZ;IAKA,MAAMlC,OAAA,GAAUzB,GAAA,CAAIwC,aAAJ,CAAkBwE,sBAAA,CAAuBvnB,MAAzC,EAAiD,QAAjD,CAAhB;IACAgiB,OAAA,CAAQkB,YAAR,CAAqBF,SAArB;IAEA,OAAOhB,OAAP;EA3BwC;AAzLxB;;;ACpbpB;AAEA,SAAS8H,aAATA,CAAuBxqB,MAAvB,EAA+B;EAC7B,QAAQA,MAAA,CAAOyqB,IAAf;IACE,KAAKF,SAAA,CAAUG,cAAf;MACE,OAAOC,0BAAA,CAA2B3qB,MAA3B,CAAP;IACF,KAAKuqB,SAAA,CAAUK,SAAf;MACE,OAAOC,gBAAA,CAAiB7qB,MAAjB,CAAP;EAJJ;EAOA,OAAO,IAAP;AAR6B;AAW/B,SAAS2qB,0BAATA,CAAoC;EAClCj4B,GADkC;EAElCo4B,MAAA,GAAS,CAFyB;EAGlC56B,IAHkC;EAIlC5O,KAJkC;EAKlCC,MALkC;EAMlCwpC,aAAA,GAAgB,UANkB;EAOlCC,aAAA,GAAgB;AAPkB,CAApC,EAQG;EACD,MAAMC,KAAA,GAAQ7qC,gBAAA,CAAY8qC,cAAZ,GAA6B,UAA7B,GAA0C,UAAxD;EACA,MAAM,CAACC,WAAD,EAAcC,UAAd,IAA4BJ,aAAA,GAC9B,CAACD,aAAD,EAAgBE,KAAhB,CAD8B,GAE9B,CAACA,KAAD,EAAQF,aAAR,CAFJ;EAGA,MAAMM,aAAA,GAAgB/pC,KAAA,IAAS,CAA/B;EACA,MAAMgqC,cAAA,GAAiBhqC,KAAA,GAAQ,CAA/B;EACA,MAAMiqC,SAAA,GAAY74B,GAAA,CAAIvG,MAAtB;EACA+D,IAAA,GAAO,IAAIs7B,WAAJ,CAAgBt7B,IAAA,CAAKmb,MAArB,CAAP;EACA,IAAIogB,OAAA,GAAU,CAAd;EAEA,KAAK,IAAIlxB,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIhZ,MAApB,EAA4BgZ,CAAA,EAA5B,EAAiC;IAC/B,KAAK,MAAM1c,GAAA,GAAMitC,MAAA,GAASO,aAArB,EAAoCP,MAAA,GAASjtC,GAAlD,EAAuDitC,MAAA,EAAvD,EAAiE;MAC/D,MAAMY,IAAA,GAAOZ,MAAA,GAASS,SAAT,GAAqB74B,GAAA,CAAIo4B,MAAJ,CAArB,GAAmC,GAAhD;MACA56B,IAAA,CAAKu7B,OAAA,EAAL,IAAkBC,IAAA,GAAO,UAAP,GAAoBN,UAApB,GAAiCD,WAAnD;MACAj7B,IAAA,CAAKu7B,OAAA,EAAL,IAAkBC,IAAA,GAAO,SAAP,GAAmBN,UAAnB,GAAgCD,WAAlD;MACAj7B,IAAA,CAAKu7B,OAAA,EAAL,IAAkBC,IAAA,GAAO,QAAP,GAAkBN,UAAlB,GAA+BD,WAAjD;MACAj7B,IAAA,CAAKu7B,OAAA,EAAL,IAAkBC,IAAA,GAAO,OAAP,GAAiBN,UAAjB,GAA8BD,WAAhD;MACAj7B,IAAA,CAAKu7B,OAAA,EAAL,IAAkBC,IAAA,GAAO,MAAP,GAAgBN,UAAhB,GAA6BD,WAA/C;MACAj7B,IAAA,CAAKu7B,OAAA,EAAL,IAAkBC,IAAA,GAAO,KAAP,GAAeN,UAAf,GAA4BD,WAA9C;MACAj7B,IAAA,CAAKu7B,OAAA,EAAL,IAAkBC,IAAA,GAAO,IAAP,GAAcN,UAAd,GAA2BD,WAA7C;MACAj7B,IAAA,CAAKu7B,OAAA,EAAL,IAAkBC,IAAA,GAAO,GAAP,GAAaN,UAAb,GAA0BD,WAA5C;IAT+D;IAWjE,IAAIG,cAAA,KAAmB,CAAvB,EAA0B;MACxB;IADwB;IAG1B,MAAMI,IAAA,GAAOZ,MAAA,GAASS,SAAT,GAAqB74B,GAAA,CAAIo4B,MAAA,EAAJ,CAArB,GAAqC,GAAlD;IACA,KAAK,IAAIxE,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIgF,cAApB,EAAoChF,CAAA,EAApC,EAAyC;MACvCp2B,IAAA,CAAKu7B,OAAA,EAAL,IAAkBC,IAAA,GAAQ,KAAM,IAAIpF,CAAlB,GAAwB8E,UAAxB,GAAqCD,WAAvD;IADuC;EAhBV;EAoBjC,OAAO;IAAEL,MAAF;IAAUW;EAAV,CAAP;AA/BC;AAkCH,SAASZ,gBAATA,CAA0B;EACxBn4B,GADwB;EAExBo4B,MAAA,GAAS,CAFe;EAGxB56B,IAHwB;EAIxBu7B,OAAA,GAAU,CAJc;EAKxBnqC,KALwB;EAMxBC;AANwB,CAA1B,EAOG;EACD,IAAIgZ,CAAA,GAAI,CAAR;EACA,MAAMoxB,KAAA,GAAQj5B,GAAA,CAAIvG,MAAJ,IAAc,CAA5B;EACA,MAAMy/B,KAAA,GAAQ,IAAIJ,WAAJ,CAAgB94B,GAAA,CAAI2Y,MAApB,EAA4Byf,MAA5B,EAAoCa,KAApC,CAAd;EAEA,IAAIvrC,WAAA,CAAY8qC,cAAhB,EAAgC;IAG9B,OAAO3wB,CAAA,GAAIoxB,KAAA,GAAQ,CAAnB,EAAsBpxB,CAAA,IAAK,CAAL,EAAQkxB,OAAA,IAAW,CAAzC,EAA4C;MAC1C,MAAMI,EAAA,GAAKD,KAAA,CAAMrxB,CAAN,CAAX;MACA,MAAMuxB,EAAA,GAAKF,KAAA,CAAMrxB,CAAA,GAAI,CAAV,CAAX;MACA,MAAMwxB,EAAA,GAAKH,KAAA,CAAMrxB,CAAA,GAAI,CAAV,CAAX;MAEArK,IAAA,CAAKu7B,OAAL,IAAgBI,EAAA,GAAK,UAArB;MACA37B,IAAA,CAAKu7B,OAAA,GAAU,CAAf,IAAqBI,EAAA,KAAO,EAAR,GAAeC,EAAA,IAAM,CAArB,GAA0B,UAA9C;MACA57B,IAAA,CAAKu7B,OAAA,GAAU,CAAf,IAAqBK,EAAA,KAAO,EAAR,GAAeC,EAAA,IAAM,EAArB,GAA2B,UAA/C;MACA77B,IAAA,CAAKu7B,OAAA,GAAU,CAAf,IAAqBM,EAAA,KAAO,CAAR,GAAa,UAAjC;IAR0C;IAW5C,KAAK,IAAIzF,CAAA,GAAI/rB,CAAA,GAAI,CAAZ,EAAeyxB,EAAA,GAAKt5B,GAAA,CAAIvG,MAAxB,EAAgCm6B,CAAA,GAAI0F,EAAzC,EAA6C1F,CAAA,IAAK,CAAlD,EAAqD;MACnDp2B,IAAA,CAAKu7B,OAAA,EAAL,IACE/4B,GAAA,CAAI4zB,CAAJ,IAAU5zB,GAAA,CAAI4zB,CAAA,GAAI,CAAR,KAAc,CAAxB,GAA8B5zB,GAAA,CAAI4zB,CAAA,GAAI,CAAR,KAAc,EAA5C,GAAkD,UADpD;IADmD;EAdvB,CAAhC,MAkBO;IACL,OAAO/rB,CAAA,GAAIoxB,KAAA,GAAQ,CAAnB,EAAsBpxB,CAAA,IAAK,CAAL,EAAQkxB,OAAA,IAAW,CAAzC,EAA4C;MAC1C,MAAMI,EAAA,GAAKD,KAAA,CAAMrxB,CAAN,CAAX;MACA,MAAMuxB,EAAA,GAAKF,KAAA,CAAMrxB,CAAA,GAAI,CAAV,CAAX;MACA,MAAMwxB,EAAA,GAAKH,KAAA,CAAMrxB,CAAA,GAAI,CAAV,CAAX;MAEArK,IAAA,CAAKu7B,OAAL,IAAgBI,EAAA,GAAK,IAArB;MACA37B,IAAA,CAAKu7B,OAAA,GAAU,CAAf,IAAqBI,EAAA,IAAM,EAAP,GAAcC,EAAA,KAAO,CAArB,GAA0B,IAA9C;MACA57B,IAAA,CAAKu7B,OAAA,GAAU,CAAf,IAAqBK,EAAA,IAAM,EAAP,GAAcC,EAAA,KAAO,EAArB,GAA2B,IAA/C;MACA77B,IAAA,CAAKu7B,OAAA,GAAU,CAAf,IAAqBM,EAAA,IAAM,CAAP,GAAY,IAAhC;IAR0C;IAW5C,KAAK,IAAIzF,CAAA,GAAI/rB,CAAA,GAAI,CAAZ,EAAeyxB,EAAA,GAAKt5B,GAAA,CAAIvG,MAAxB,EAAgCm6B,CAAA,GAAI0F,EAAzC,EAA6C1F,CAAA,IAAK,CAAlD,EAAqD;MACnDp2B,IAAA,CAAKu7B,OAAA,EAAL,IACG/4B,GAAA,CAAI4zB,CAAJ,KAAU,EAAX,GAAkB5zB,GAAA,CAAI4zB,CAAA,GAAI,CAAR,KAAc,EAAhC,GAAuC5zB,GAAA,CAAI4zB,CAAA,GAAI,CAAR,KAAc,CAArD,GAA0D,IAD5D;IADmD;EAZhD;EAkBP,OAAO;IAAEwE,MAAF;IAAUW;EAAV,CAAP;AAzCC;AA4CH,SAASQ,UAATA,CAAoBv5B,GAApB,EAAyBxC,IAAzB,EAA+B;EAC7B,IAAI9P,WAAA,CAAY8qC,cAAhB,EAAgC;IAC9B,KAAK,IAAI3wB,CAAA,GAAI,CAAR,EAAWwD,EAAA,GAAKrL,GAAA,CAAIvG,MAApB,EAA4BoO,CAAA,GAAIwD,EAArC,EAAyCxD,CAAA,EAAzC,EAA8C;MAC5CrK,IAAA,CAAKqK,CAAL,IAAW7H,GAAA,CAAI6H,CAAJ,IAAS,OAAV,GAAqB,UAA/B;IAD4C;EADhB,CAAhC,MAIO;IACL,KAAK,IAAIA,CAAA,GAAI,CAAR,EAAWwD,EAAA,GAAKrL,GAAA,CAAIvG,MAApB,EAA4BoO,CAAA,GAAIwD,EAArC,EAAyCxD,CAAA,EAAzC,EAA8C;MAC5CrK,IAAA,CAAKqK,CAAL,IAAW7H,GAAA,CAAI6H,CAAJ,IAAS,SAAV,GAAuB,UAAjC;IAD4C;EADzC;AALsB;;;AC1G/B;AAcA;AAKA;AAKA;AAKA,MAAMiyB,aAAA,GAAgB,EAAtB;AAEA,MAAMC,aAAA,GAAgB,GAAtB;AACA,MAAMC,cAAA,GAAiB,IAAvB;AAIA,MAAMC,cAAA,GAAiB,EAAvB;AAEA,MAAMC,eAAA,GAAkB,EAAxB;AAGA,MAAMC,mBAAA,GAAsB,IAA5B;AAEA,MAAMC,iBAAA,GAAoB,EAA1B;AAgBA,SAASC,uBAATA,CAAiC9L,GAAjC,EAAsC+L,OAAtC,EAA+C;EAC7C,IAAI/L,GAAA,CAAIgM,gBAAR,EAA0B;IACxB,MAAM,IAAIhnB,KAAJ,CAAU,2CAAV,CAAN;EADwB;EAG1Bgb,GAAA,CAAIiM,cAAJ,GAAqBjM,GAAA,CAAI2I,IAAzB;EACA3I,GAAA,CAAIkM,iBAAJ,GAAwBlM,GAAA,CAAImM,OAA5B;EACAnM,GAAA,CAAIoM,gBAAJ,GAAuBpM,GAAA,CAAItQ,MAA3B;EACAsQ,GAAA,CAAIqM,eAAJ,GAAsBrM,GAAA,CAAInQ,KAA1B;EACAmQ,GAAA,CAAIsM,mBAAJ,GAA0BtM,GAAA,CAAIoC,SAA9B;EACApC,GAAA,CAAIuM,mBAAJ,GAA0BvM,GAAA,CAAIrP,SAA9B;EACAqP,GAAA,CAAIwM,sBAAJ,GAA6BxM,GAAA,CAAI2C,YAAjC;EACA3C,GAAA,CAAIyM,wBAAJ,GAA+BzM,GAAA,CAAI0M,cAAnC;EACA1M,GAAA,CAAI2M,cAAJ,GAAqB3M,GAAA,CAAII,IAAzB;EACAJ,GAAA,CAAI4M,gBAAJ,GAAuB5M,GAAA,CAAI6M,MAA3B;EACA7M,GAAA,CAAI8M,gBAAJ,GAAuB9M,GAAA,CAAI+M,MAA3B;EACA/M,GAAA,CAAIgN,uBAAJ,GAA8BhN,GAAA,CAAIiN,aAAlC;EACAjN,GAAA,CAAIkN,cAAJ,GAAqBlN,GAAA,CAAI5/B,IAAzB;EACA4/B,GAAA,CAAImN,mBAAJ,GAA0BnN,GAAA,CAAIoN,SAA9B;EACApN,GAAA,CAAIqN,mBAAJ,GAA0BrN,GAAA,CAAImC,SAA9B;EAEAnC,GAAA,CAAIgM,gBAAJ,GAAuB,MAAM;IAC3BhM,GAAA,CAAI2I,IAAJ,GAAW3I,GAAA,CAAIiM,cAAf;IACAjM,GAAA,CAAImM,OAAJ,GAAcnM,GAAA,CAAIkM,iBAAlB;IACAlM,GAAA,CAAItQ,MAAJ,GAAasQ,GAAA,CAAIoM,gBAAjB;IACApM,GAAA,CAAInQ,KAAJ,GAAYmQ,GAAA,CAAIqM,eAAhB;IACArM,GAAA,CAAIoC,SAAJ,GAAgBpC,GAAA,CAAIsM,mBAApB;IACAtM,GAAA,CAAIrP,SAAJ,GAAgBqP,GAAA,CAAIuM,mBAApB;IACAvM,GAAA,CAAI2C,YAAJ,GAAmB3C,GAAA,CAAIwM,sBAAvB;IACAxM,GAAA,CAAI0M,cAAJ,GAAqB1M,GAAA,CAAIyM,wBAAzB;IAEAzM,GAAA,CAAII,IAAJ,GAAWJ,GAAA,CAAI2M,cAAf;IACA3M,GAAA,CAAI6M,MAAJ,GAAa7M,GAAA,CAAI4M,gBAAjB;IACA5M,GAAA,CAAI+M,MAAJ,GAAa/M,GAAA,CAAI8M,gBAAjB;IACA9M,GAAA,CAAIiN,aAAJ,GAAoBjN,GAAA,CAAIgN,uBAAxB;IACAhN,GAAA,CAAI5/B,IAAJ,GAAW4/B,GAAA,CAAIkN,cAAf;IACAlN,GAAA,CAAIoN,SAAJ,GAAgBpN,GAAA,CAAImN,mBAApB;IACAnN,GAAA,CAAImC,SAAJ,GAAgBnC,GAAA,CAAIqN,mBAApB;IACA,OAAOrN,GAAA,CAAIgM,gBAAX;EAjB2B,CAA7B;EAoBAhM,GAAA,CAAI2I,IAAJ,GAAW,SAAS2E,OAATA,CAAA,EAAmB;IAC5BvB,OAAA,CAAQpD,IAAR;IACA,KAAKsD,cAAL;EAF4B,CAA9B;EAKAjM,GAAA,CAAImM,OAAJ,GAAc,SAASoB,UAATA,CAAA,EAAsB;IAClCxB,OAAA,CAAQI,OAAR;IACA,KAAKD,iBAAL;EAFkC,CAApC;EAKAlM,GAAA,CAAIoC,SAAJ,GAAgB,SAASoL,YAATA,CAAsBvwC,CAAtB,EAAyBI,CAAzB,EAA4B;IAC1C0uC,OAAA,CAAQ3J,SAAR,CAAkBnlC,CAAlB,EAAqBI,CAArB;IACA,KAAKivC,mBAAL,CAAyBrvC,CAAzB,EAA4BI,CAA5B;EAF0C,CAA5C;EAKA2iC,GAAA,CAAInQ,KAAJ,GAAY,SAAS4d,QAATA,CAAkBxwC,CAAlB,EAAqBI,CAArB,EAAwB;IAClC0uC,OAAA,CAAQlc,KAAR,CAAc5yB,CAAd,EAAiBI,CAAjB;IACA,KAAKgvC,eAAL,CAAqBpvC,CAArB,EAAwBI,CAAxB;EAFkC,CAApC;EAKA2iC,GAAA,CAAIrP,SAAJ,GAAgB,SAAS+c,YAATA,CAAsBC,CAAtB,EAAyB3vC,CAAzB,EAA4BZ,CAA5B,EAA+BwwC,CAA/B,EAAkC1yB,CAAlC,EAAqC2yB,CAArC,EAAwC;IACtD9B,OAAA,CAAQpb,SAAR,CAAkBgd,CAAlB,EAAqB3vC,CAArB,EAAwBZ,CAAxB,EAA2BwwC,CAA3B,EAA8B1yB,CAA9B,EAAiC2yB,CAAjC;IACA,KAAKtB,mBAAL,CAAyBoB,CAAzB,EAA4B3vC,CAA5B,EAA+BZ,CAA/B,EAAkCwwC,CAAlC,EAAqC1yB,CAArC,EAAwC2yB,CAAxC;EAFsD,CAAxD;EAKA7N,GAAA,CAAI2C,YAAJ,GAAmB,SAASmL,eAATA,CAAyBH,CAAzB,EAA4B3vC,CAA5B,EAA+BZ,CAA/B,EAAkCwwC,CAAlC,EAAqC1yB,CAArC,EAAwC2yB,CAAxC,EAA2C;IAC5D9B,OAAA,CAAQpJ,YAAR,CAAqBgL,CAArB,EAAwB3vC,CAAxB,EAA2BZ,CAA3B,EAA8BwwC,CAA9B,EAAiC1yB,CAAjC,EAAoC2yB,CAApC;IACA,KAAKrB,sBAAL,CAA4BmB,CAA5B,EAA+B3vC,CAA/B,EAAkCZ,CAAlC,EAAqCwwC,CAArC,EAAwC1yB,CAAxC,EAA2C2yB,CAA3C;EAF4D,CAA9D;EAKA7N,GAAA,CAAI0M,cAAJ,GAAqB,SAASqB,iBAATA,CAAA,EAA6B;IAChDhC,OAAA,CAAQW,cAAR;IACA,KAAKD,wBAAL;EAFgD,CAAlD;EAKAzM,GAAA,CAAItQ,MAAJ,GAAa,SAASse,SAATA,CAAmBnmC,KAAnB,EAA0B;IACrCkkC,OAAA,CAAQrc,MAAR,CAAe7nB,KAAf;IACA,KAAKukC,gBAAL,CAAsBvkC,KAAtB;EAFqC,CAAvC;EAKAm4B,GAAA,CAAII,IAAJ,GAAW,SAAS4N,SAATA,CAAmBC,IAAnB,EAAyB;IAClClC,OAAA,CAAQ3L,IAAR,CAAa6N,IAAb;IACA,KAAKtB,cAAL,CAAoBsB,IAApB;EAFkC,CAApC;EAKAjO,GAAA,CAAI6M,MAAJ,GAAa,UAAU5vC,CAAV,EAAaI,CAAb,EAAgB;IAC3B0uC,OAAA,CAAQc,MAAR,CAAe5vC,CAAf,EAAkBI,CAAlB;IACA,KAAKuvC,gBAAL,CAAsB3vC,CAAtB,EAAyBI,CAAzB;EAF2B,CAA7B;EAKA2iC,GAAA,CAAI+M,MAAJ,GAAa,UAAU9vC,CAAV,EAAaI,CAAb,EAAgB;IAC3B0uC,OAAA,CAAQgB,MAAR,CAAe9vC,CAAf,EAAkBI,CAAlB;IACA,KAAKyvC,gBAAL,CAAsB7vC,CAAtB,EAAyBI,CAAzB;EAF2B,CAA7B;EAKA2iC,GAAA,CAAIiN,aAAJ,GAAoB,UAAUiB,IAAV,EAAgBC,IAAhB,EAAsBC,IAAtB,EAA4BC,IAA5B,EAAkCpxC,CAAlC,EAAqCI,CAArC,EAAwC;IAC1D0uC,OAAA,CAAQkB,aAAR,CAAsBiB,IAAtB,EAA4BC,IAA5B,EAAkCC,IAAlC,EAAwCC,IAAxC,EAA8CpxC,CAA9C,EAAiDI,CAAjD;IACA,KAAK2vC,uBAAL,CAA6BkB,IAA7B,EAAmCC,IAAnC,EAAyCC,IAAzC,EAA+CC,IAA/C,EAAqDpxC,CAArD,EAAwDI,CAAxD;EAF0D,CAA5D;EAKA2iC,GAAA,CAAI5/B,IAAJ,GAAW,UAAUnD,CAAV,EAAaI,CAAb,EAAgBgD,KAAhB,EAAuBC,MAAvB,EAA+B;IACxCyrC,OAAA,CAAQ3rC,IAAR,CAAanD,CAAb,EAAgBI,CAAhB,EAAmBgD,KAAnB,EAA0BC,MAA1B;IACA,KAAK4sC,cAAL,CAAoBjwC,CAApB,EAAuBI,CAAvB,EAA0BgD,KAA1B,EAAiCC,MAAjC;EAFwC,CAA1C;EAKA0/B,GAAA,CAAIoN,SAAJ,GAAgB,YAAY;IAC1BrB,OAAA,CAAQqB,SAAR;IACA,KAAKD,mBAAL;EAF0B,CAA5B;EAKAnN,GAAA,CAAImC,SAAJ,GAAgB,YAAY;IAC1B4J,OAAA,CAAQ5J,SAAR;IACA,KAAKkL,mBAAL;EAF0B,CAA5B;AA9G6C;AAoH/C,MAAMiB,cAAN,CAAqB;EACnB1qC,YAAY+jB,aAAZ,EAA2B;IACzB,KAAKA,aAAL,GAAqBA,aAArB;IACA,KAAK4mB,KAAL,GAAapkC,MAAA,CAAO3J,MAAP,CAAc,IAAd,CAAb;EAFyB;EAK3BwhC,UAAUt8B,EAAV,EAAcrF,KAAd,EAAqBC,MAArB,EAA6B;IAC3B,IAAIkuC,WAAJ;IACA,IAAI,KAAKD,KAAL,CAAW7oC,EAAX,MAAmBuQ,SAAvB,EAAkC;MAChCu4B,WAAA,GAAc,KAAKD,KAAL,CAAW7oC,EAAX,CAAd;MACA,KAAKiiB,aAAL,CAAmBmX,KAAnB,CAAyB0P,WAAzB,EAAsCnuC,KAAtC,EAA6CC,MAA7C;IAFgC,CAAlC,MAGO;MACLkuC,WAAA,GAAc,KAAK7mB,aAAL,CAAmBnnB,MAAnB,CAA0BH,KAA1B,EAAiCC,MAAjC,CAAd;MACA,KAAKiuC,KAAL,CAAW7oC,EAAX,IAAiB8oC,WAAjB;IAFK;IAIP,OAAOA,WAAP;EAT2B;EAY7B9tB,OAAOhb,EAAP,EAAW;IACT,OAAO,KAAK6oC,KAAL,CAAW7oC,EAAX,CAAP;EADS;EAIX+T,MAAA,EAAQ;IACN,WAAW/T,EAAX,IAAiB,KAAK6oC,KAAtB,EAA6B;MAC3B,MAAMC,WAAA,GAAc,KAAKD,KAAL,CAAW7oC,EAAX,CAApB;MACA,KAAKiiB,aAAL,CAAmBkD,OAAnB,CAA2B2jB,WAA3B;MACA,OAAO,KAAKD,KAAL,CAAW7oC,EAAX,CAAP;IAH2B;EADvB;AAtBW;AA+BrB,SAAS+oC,wBAATA,CACEzO,GADF,EAEE0O,MAFF,EAGEC,IAHF,EAIEC,IAJF,EAKEC,IALF,EAMEC,IANF,EAOEC,KAPF,EAQEC,KARF,EASEC,KATF,EAUEC,KAVF,EAWE;EACA,MAAM,CAACvB,CAAD,EAAI3vC,CAAJ,EAAOZ,CAAP,EAAUwwC,CAAV,EAAauB,EAAb,EAAiBC,EAAjB,IAAuB1P,qCAAA,CAAoBM,GAApB,CAA7B;EACA,IAAIhiC,CAAA,KAAM,CAAN,IAAWZ,CAAA,KAAM,CAArB,EAAwB;IAWtB,MAAMiyC,GAAA,GAAMN,KAAA,GAAQpB,CAAR,GAAYwB,EAAxB;IACA,MAAMG,IAAA,GAAO5yC,IAAA,CAAKsX,KAAL,CAAWq7B,GAAX,CAAb;IACA,MAAME,GAAA,GAAMP,KAAA,GAAQpB,CAAR,GAAYwB,EAAxB;IACA,MAAMI,IAAA,GAAO9yC,IAAA,CAAKsX,KAAL,CAAWu7B,GAAX,CAAb;IACA,MAAME,GAAA,GAAO,CAAAV,KAAA,GAAQE,KAAR,IAAiBtB,CAAlB,GAAsBwB,EAAlC;IAIA,MAAMO,MAAA,GAAShzC,IAAA,CAAKwX,GAAL,CAASxX,IAAA,CAAKsX,KAAL,CAAWy7B,GAAX,IAAkBH,IAA3B,KAAoC,CAAnD;IACA,MAAMK,GAAA,GAAO,CAAAX,KAAA,GAAQE,KAAR,IAAiBtB,CAAlB,GAAsBwB,EAAlC;IACA,MAAMQ,OAAA,GAAUlzC,IAAA,CAAKwX,GAAL,CAASxX,IAAA,CAAKsX,KAAL,CAAW27B,GAAX,IAAkBH,IAA3B,KAAoC,CAApD;IAKAxP,GAAA,CAAI2C,YAAJ,CAAiBjmC,IAAA,CAAKmzC,IAAL,CAAUlC,CAAV,CAAjB,EAA+B,CAA/B,EAAkC,CAAlC,EAAqCjxC,IAAA,CAAKmzC,IAAL,CAAUjC,CAAV,CAArC,EAAmD0B,IAAnD,EAAyDE,IAAzD;IACAxP,GAAA,CAAI8P,SAAJ,CAAcpB,MAAd,EAAsBC,IAAtB,EAA4BC,IAA5B,EAAkCC,IAAlC,EAAwCC,IAAxC,EAA8C,CAA9C,EAAiD,CAAjD,EAAoDY,MAApD,EAA4DE,OAA5D;IACA5P,GAAA,CAAI2C,YAAJ,CAAiBgL,CAAjB,EAAoB3vC,CAApB,EAAuBZ,CAAvB,EAA0BwwC,CAA1B,EAA6BuB,EAA7B,EAAiCC,EAAjC;IAEA,OAAO,CAACM,MAAD,EAASE,OAAT,CAAP;EA9BsB;EAiCxB,IAAIjC,CAAA,KAAM,CAAN,IAAWC,CAAA,KAAM,CAArB,EAAwB;IAEtB,MAAMyB,GAAA,GAAML,KAAA,GAAQ5xC,CAAR,GAAY+xC,EAAxB;IACA,MAAMG,IAAA,GAAO5yC,IAAA,CAAKsX,KAAL,CAAWq7B,GAAX,CAAb;IACA,MAAME,GAAA,GAAMR,KAAA,GAAQ/wC,CAAR,GAAYoxC,EAAxB;IACA,MAAMI,IAAA,GAAO9yC,IAAA,CAAKsX,KAAL,CAAWu7B,GAAX,CAAb;IACA,MAAME,GAAA,GAAO,CAAAT,KAAA,GAAQE,KAAR,IAAiB9xC,CAAlB,GAAsB+xC,EAAlC;IACA,MAAMO,MAAA,GAAShzC,IAAA,CAAKwX,GAAL,CAASxX,IAAA,CAAKsX,KAAL,CAAWy7B,GAAX,IAAkBH,IAA3B,KAAoC,CAAnD;IACA,MAAMK,GAAA,GAAO,CAAAZ,KAAA,GAAQE,KAAR,IAAiBjxC,CAAlB,GAAsBoxC,EAAlC;IACA,MAAMQ,OAAA,GAAUlzC,IAAA,CAAKwX,GAAL,CAASxX,IAAA,CAAKsX,KAAL,CAAW27B,GAAX,IAAkBH,IAA3B,KAAoC,CAApD;IAEAxP,GAAA,CAAI2C,YAAJ,CAAiB,CAAjB,EAAoBjmC,IAAA,CAAKmzC,IAAL,CAAU7xC,CAAV,CAApB,EAAkCtB,IAAA,CAAKmzC,IAAL,CAAUzyC,CAAV,CAAlC,EAAgD,CAAhD,EAAmDkyC,IAAnD,EAAyDE,IAAzD;IACAxP,GAAA,CAAI8P,SAAJ,CAAcpB,MAAd,EAAsBC,IAAtB,EAA4BC,IAA5B,EAAkCC,IAAlC,EAAwCC,IAAxC,EAA8C,CAA9C,EAAiD,CAAjD,EAAoDc,OAApD,EAA6DF,MAA7D;IACA1P,GAAA,CAAI2C,YAAJ,CAAiBgL,CAAjB,EAAoB3vC,CAApB,EAAuBZ,CAAvB,EAA0BwwC,CAA1B,EAA6BuB,EAA7B,EAAiCC,EAAjC;IAEA,OAAO,CAACQ,OAAD,EAAUF,MAAV,CAAP;EAfsB;EAmBxB1P,GAAA,CAAI8P,SAAJ,CAAcpB,MAAd,EAAsBC,IAAtB,EAA4BC,IAA5B,EAAkCC,IAAlC,EAAwCC,IAAxC,EAA8CC,KAA9C,EAAqDC,KAArD,EAA4DC,KAA5D,EAAmEC,KAAnE;EAEA,MAAMzL,MAAA,GAAS/mC,IAAA,CAAKqzC,KAAL,CAAWpC,CAAX,EAAc3vC,CAAd,CAAf;EACA,MAAM2lC,MAAA,GAASjnC,IAAA,CAAKqzC,KAAL,CAAW3yC,CAAX,EAAcwwC,CAAd,CAAf;EACA,OAAO,CAACnK,MAAA,GAASwL,KAAV,EAAiBtL,MAAA,GAASuL,KAA1B,CAAP;AA1DA;AA6DF,SAASc,iBAATA,CAA2BC,OAA3B,EAAoC;EAClC,MAAM;IAAE5vC,KAAF;IAASC;EAAT,IAAoB2vC,OAA1B;EACA,IAAI5vC,KAAA,GAAQurC,mBAAR,IAA+BtrC,MAAA,GAASsrC,mBAA5C,EAAiE;IAC/D,OAAO,IAAP;EAD+D;EAIjE,MAAMsE,sBAAA,GAAyB,IAA/B;EACA,MAAMC,WAAA,GAAc,IAAI3lB,UAAJ,CAAe,CACjC,CADiC,EAC9B,CAD8B,EAC3B,CAD2B,EACxB,CADwB,EACrB,CADqB,EAClB,CADkB,EACf,CADe,EACZ,CADY,EACT,CADS,EACN,EADM,EACF,CADE,EACC,CADD,EACI,CADJ,EACO,CADP,EACU,CADV,EACa,CADb,CAAf,CAApB;EAIA,MAAM4lB,MAAA,GAAS/vC,KAAA,GAAQ,CAAvB;EACA,IAAIud,MAAA,GAAS,IAAI4M,UAAJ,CAAe4lB,MAAA,IAAU9vC,MAAA,GAAS,CAAT,CAAzB,CAAb;EACA,IAAIgZ,CAAJ,EAAO+rB,CAAP,EAAUgL,EAAV;EAGA,MAAMC,QAAA,GAAYjwC,KAAA,GAAQ,CAAT,GAAc,CAAC,CAAhC;EACA,IAAIM,IAAA,GAAO,IAAI6pB,UAAJ,CAAe8lB,QAAA,GAAWhwC,MAA1B,CAAX;IACEiwC,GAAA,GAAM,CADR;EAEA,WAAW9F,IAAX,IAAmBwF,OAAA,CAAQtvC,IAA3B,EAAiC;IAC/B,IAAI6vC,IAAA,GAAO,GAAX;IACA,OAAOA,IAAA,GAAO,CAAd,EAAiB;MACf7vC,IAAA,CAAK4vC,GAAA,EAAL,IAAc9F,IAAA,GAAO+F,IAAP,GAAc,CAAd,GAAkB,GAAhC;MACAA,IAAA,KAAS,CAAT;IAFe;EAFc;EAkBjC,IAAIC,KAAA,GAAQ,CAAZ;EACAF,GAAA,GAAM,CAAN;EACA,IAAI5vC,IAAA,CAAK4vC,GAAL,MAAc,CAAlB,EAAqB;IACnB3yB,MAAA,CAAO,CAAP,IAAY,CAAZ;IACA,EAAE6yB,KAAF;EAFmB;EAIrB,KAAKpL,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAIhlC,KAAhB,EAAuBglC,CAAA,EAAvB,EAA4B;IAC1B,IAAI1kC,IAAA,CAAK4vC,GAAL,MAAc5vC,IAAA,CAAK4vC,GAAA,GAAM,CAAX,CAAlB,EAAiC;MAC/B3yB,MAAA,CAAOynB,CAAP,IAAY1kC,IAAA,CAAK4vC,GAAL,IAAY,CAAZ,GAAgB,CAA5B;MACA,EAAEE,KAAF;IAF+B;IAIjCF,GAAA;EAL0B;EAO5B,IAAI5vC,IAAA,CAAK4vC,GAAL,MAAc,CAAlB,EAAqB;IACnB3yB,MAAA,CAAOynB,CAAP,IAAY,CAAZ;IACA,EAAEoL,KAAF;EAFmB;EAIrB,KAAKn3B,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAIhZ,MAAhB,EAAwBgZ,CAAA,EAAxB,EAA6B;IAC3Bi3B,GAAA,GAAMj3B,CAAA,GAAIg3B,QAAV;IACAD,EAAA,GAAK/2B,CAAA,GAAI82B,MAAT;IACA,IAAIzvC,IAAA,CAAK4vC,GAAA,GAAMD,QAAX,MAAyB3vC,IAAA,CAAK4vC,GAAL,CAA7B,EAAwC;MACtC3yB,MAAA,CAAOyyB,EAAP,IAAa1vC,IAAA,CAAK4vC,GAAL,IAAY,CAAZ,GAAgB,CAA7B;MACA,EAAEE,KAAF;IAFsC;IAMxC,IAAIC,GAAA,GAAO,CAAA/vC,IAAA,CAAK4vC,GAAL,IAAY,CAAZ,GAAgB,CAAhB,KAAsB5vC,IAAA,CAAK4vC,GAAA,GAAMD,QAAX,IAAuB,CAAvB,GAA2B,CAA3B,CAAjC;IACA,KAAKjL,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAIhlC,KAAhB,EAAuBglC,CAAA,EAAvB,EAA4B;MAC1BqL,GAAA,GACG,CAAAA,GAAA,IAAO,CAAP,KACA/vC,IAAA,CAAK4vC,GAAA,GAAM,CAAX,IAAgB,CAAhB,GAAoB,CAApB,CADD,IAEC5vC,IAAA,CAAK4vC,GAAA,GAAMD,QAAN,GAAiB,CAAtB,IAA2B,CAA3B,GAA+B,CAA/B,CAHH;MAIA,IAAIH,WAAA,CAAYO,GAAZ,CAAJ,EAAsB;QACpB9yB,MAAA,CAAOyyB,EAAA,GAAKhL,CAAZ,IAAiB8K,WAAA,CAAYO,GAAZ,CAAjB;QACA,EAAED,KAAF;MAFoB;MAItBF,GAAA;IAT0B;IAW5B,IAAI5vC,IAAA,CAAK4vC,GAAA,GAAMD,QAAX,MAAyB3vC,IAAA,CAAK4vC,GAAL,CAA7B,EAAwC;MACtC3yB,MAAA,CAAOyyB,EAAA,GAAKhL,CAAZ,IAAiB1kC,IAAA,CAAK4vC,GAAL,IAAY,CAAZ,GAAgB,CAAjC;MACA,EAAEE,KAAF;IAFsC;IAKxC,IAAIA,KAAA,GAAQP,sBAAZ,EAAoC;MAClC,OAAO,IAAP;IADkC;EA1BT;EA+B7BK,GAAA,GAAMD,QAAA,IAAYhwC,MAAA,GAAS,CAAT,CAAlB;EACA+vC,EAAA,GAAK/2B,CAAA,GAAI82B,MAAT;EACA,IAAIzvC,IAAA,CAAK4vC,GAAL,MAAc,CAAlB,EAAqB;IACnB3yB,MAAA,CAAOyyB,EAAP,IAAa,CAAb;IACA,EAAEI,KAAF;EAFmB;EAIrB,KAAKpL,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAIhlC,KAAhB,EAAuBglC,CAAA,EAAvB,EAA4B;IAC1B,IAAI1kC,IAAA,CAAK4vC,GAAL,MAAc5vC,IAAA,CAAK4vC,GAAA,GAAM,CAAX,CAAlB,EAAiC;MAC/B3yB,MAAA,CAAOyyB,EAAA,GAAKhL,CAAZ,IAAiB1kC,IAAA,CAAK4vC,GAAL,IAAY,CAAZ,GAAgB,CAAjC;MACA,EAAEE,KAAF;IAF+B;IAIjCF,GAAA;EAL0B;EAO5B,IAAI5vC,IAAA,CAAK4vC,GAAL,MAAc,CAAlB,EAAqB;IACnB3yB,MAAA,CAAOyyB,EAAA,GAAKhL,CAAZ,IAAiB,CAAjB;IACA,EAAEoL,KAAF;EAFmB;EAIrB,IAAIA,KAAA,GAAQP,sBAAZ,EAAoC;IAClC,OAAO,IAAP;EADkC;EAKpC,MAAMS,KAAA,GAAQ,IAAIC,UAAJ,CAAe,CAAC,CAAD,EAAIR,MAAJ,EAAY,CAAC,CAAb,EAAgB,CAAhB,EAAmB,CAACA,MAApB,EAA4B,CAA5B,EAA+B,CAA/B,EAAkC,CAAlC,EAAqC,CAArC,CAAf,CAAd;EACA,MAAMS,IAAA,GAAO,IAAI1Q,MAAJ,EAAb;EAEA,KAAK7mB,CAAA,GAAI,CAAT,EAAYm3B,KAAA,IAASn3B,CAAA,IAAKhZ,MAA1B,EAAkCgZ,CAAA,EAAlC,EAAuC;IACrC,IAAIqD,CAAA,GAAIrD,CAAA,GAAI82B,MAAZ;IACA,MAAMhkB,GAAA,GAAMzP,CAAA,GAAItc,KAAhB;IACA,OAAOsc,CAAA,GAAIyP,GAAJ,IAAW,CAACxO,MAAA,CAAOjB,CAAP,CAAnB,EAA8B;MAC5BA,CAAA;IAD4B;IAG9B,IAAIA,CAAA,KAAMyP,GAAV,EAAe;MACb;IADa;IAGfykB,IAAA,CAAKhE,MAAL,CAAYlwB,CAAA,GAAIyzB,MAAhB,EAAwB92B,CAAxB;IAEA,MAAMw3B,EAAA,GAAKn0B,CAAX;IACA,IAAIzL,IAAA,GAAO0M,MAAA,CAAOjB,CAAP,CAAX;IACA,GAAG;MACD,MAAMksB,IAAA,GAAO8H,KAAA,CAAMz/B,IAAN,CAAb;MACA,GAAG;QACDyL,CAAA,IAAKksB,IAAL;MADC,CAAH,QAES,CAACjrB,MAAA,CAAOjB,CAAP,CAFV;MAIA,MAAMo0B,EAAA,GAAKnzB,MAAA,CAAOjB,CAAP,CAAX;MACA,IAAIo0B,EAAA,KAAO,CAAP,IAAYA,EAAA,KAAO,EAAvB,EAA2B;QAEzB7/B,IAAA,GAAO6/B,EAAP;QAEAnzB,MAAA,CAAOjB,CAAP,IAAY,CAAZ;MAJyB,CAA3B,MAKO;QAGLzL,IAAA,GAAO6/B,EAAA,GAAO,OAAO7/B,IAAR,IAAiB,CAA9B;QAEA0M,MAAA,CAAOjB,CAAP,KAAczL,IAAA,IAAQ,CAAT,GAAeA,IAAA,IAAQ,CAApC;MALK;MAOP2/B,IAAA,CAAK9D,MAAL,CAAYpwB,CAAA,GAAIyzB,MAAhB,EAAyBzzB,CAAA,GAAIyzB,MAAL,GAAe,CAAvC;MAEA,IAAI,CAACxyB,MAAA,CAAOjB,CAAP,CAAL,EAAgB;QACd,EAAE8zB,KAAF;MADc;IArBf,CAAH,QAwBSK,EAAA,KAAOn0B,CAxBhB;IAyBA,EAAErD,CAAF;EAtCqC;EA0CvC3Y,IAAA,GAAO,IAAP;EACAid,MAAA,GAAS,IAAT;EAEA,MAAMozB,WAAA,GAAc,SAAAA,CAAU5zC,CAAV,EAAa;IAC/BA,CAAA,CAAEurC,IAAF;IAEAvrC,CAAA,CAAEyyB,KAAF,CAAQ,IAAIxvB,KAAZ,EAAmB,CAAC,CAAD,GAAKC,MAAxB;IACAlD,CAAA,CAAEglC,SAAF,CAAY,CAAZ,EAAe,CAAC9hC,MAAhB;IACAlD,CAAA,CAAEmlC,IAAF,CAAOsO,IAAP;IACAzzC,CAAA,CAAE+kC,SAAF;IACA/kC,CAAA,CAAE+uC,OAAF;EAP+B,CAAjC;EAUA,OAAO6E,WAAP;AArKkC;AAwKpC,MAAMC,gBAAN,CAAuB;EACrBrtC,YAAYvD,KAAZ,EAAmBC,MAAnB,EAA2B;IAEzB,KAAK4wC,YAAL,GAAoB,KAApB;IACA,KAAKt9B,QAAL,GAAgB,CAAhB;IACA,KAAKu9B,aAAL,GAAqB,CAArB;IACA,KAAKC,UAAL,GAAkBlG,oBAAlB;IACA,KAAKmG,eAAL,GAAuB,CAAvB;IACA,KAAKC,UAAL,GAAkBrG,yBAAlB;IACA,KAAKsG,OAAL,GAAe,CAAf;IAEA,KAAKt0C,CAAL,GAAS,CAAT;IACA,KAAKI,CAAL,GAAS,CAAT;IAEA,KAAKm0C,KAAL,GAAa,CAAb;IACA,KAAKC,KAAL,GAAa,CAAb;IAEA,KAAKC,WAAL,GAAmB,CAAnB;IACA,KAAKC,WAAL,GAAmB,CAAnB;IACA,KAAKC,UAAL,GAAkB,CAAlB;IACA,KAAKC,iBAAL,GAAyBzG,sBAAA,CAAkBxL,IAA3C;IACA,KAAKkS,QAAL,GAAgB,CAAhB;IAEA,KAAKpoC,SAAL,GAAiB,SAAjB;IACA,KAAKG,WAAL,GAAmB,SAAnB;IACA,KAAKkoC,WAAL,GAAmB,KAAnB;IAEA,KAAK5zB,SAAL,GAAiB,CAAjB;IACA,KAAK6zB,WAAL,GAAmB,CAAnB;IACA,KAAKC,SAAL,GAAiB,CAAjB;IACA,KAAKC,WAAL,GAAmB,IAAnB;IACA,KAAKC,YAAL,GAAoB,MAApB;IAEA,KAAKC,sBAAL,CAA4B,CAAC,CAAD,EAAI,CAAJ,EAAO/xC,KAAP,EAAcC,MAAd,CAA5B;EAhCyB;EAmC3BqhB,MAAA,EAAQ;IACN,MAAMA,KAAA,GAAQxX,MAAA,CAAO3J,MAAP,CAAc,IAAd,CAAd;IACAmhB,KAAA,CAAM0wB,OAAN,GAAgB,KAAKA,OAAL,CAAaxzC,KAAb,EAAhB;IACA,OAAO8iB,KAAP;EAHM;EAMR2wB,gBAAgBr1C,CAAhB,EAAmBI,CAAnB,EAAsB;IACpB,KAAKJ,CAAL,GAASA,CAAT;IACA,KAAKI,CAAL,GAASA,CAAT;EAFoB;EAKtBk1C,iBAAiB5hB,SAAjB,EAA4B1zB,CAA5B,EAA+BI,CAA/B,EAAkC;IAChC,CAACJ,CAAD,EAAII,CAAJ,IAASkC,SAAA,CAAKizC,cAAL,CAAoB,CAACv1C,CAAD,EAAII,CAAJ,CAApB,EAA4BszB,SAA5B,CAAT;IACA,KAAK8hB,IAAL,GAAY/1C,IAAA,CAAKG,GAAL,CAAS,KAAK41C,IAAd,EAAoBx1C,CAApB,CAAZ;IACA,KAAKwnC,IAAL,GAAY/nC,IAAA,CAAKG,GAAL,CAAS,KAAK4nC,IAAd,EAAoBpnC,CAApB,CAAZ;IACA,KAAKq1C,IAAL,GAAYh2C,IAAA,CAAKE,GAAL,CAAS,KAAK81C,IAAd,EAAoBz1C,CAApB,CAAZ;IACA,KAAKynC,IAAL,GAAYhoC,IAAA,CAAKE,GAAL,CAAS,KAAK8nC,IAAd,EAAoBrnC,CAApB,CAAZ;EALgC;EAQlC6rC,iBAAiBvY,SAAjB,EAA4BvwB,IAA5B,EAAkC;IAChC,MAAMyiC,EAAA,GAAKtjC,SAAA,CAAKizC,cAAL,CAAoBpyC,IAApB,EAA0BuwB,SAA1B,CAAX;IACA,MAAMmS,EAAA,GAAKvjC,SAAA,CAAKizC,cAAL,CAAoBpyC,IAAA,CAAKvB,KAAL,CAAW,CAAX,CAApB,EAAmC8xB,SAAnC,CAAX;IACA,MAAMoS,EAAA,GAAKxjC,SAAA,CAAKizC,cAAL,CAAoB,CAACpyC,IAAA,CAAK,CAAL,CAAD,EAAUA,IAAA,CAAK,CAAL,CAAV,CAApB,EAAwCuwB,SAAxC,CAAX;IACA,MAAMgiB,EAAA,GAAKpzC,SAAA,CAAKizC,cAAL,CAAoB,CAACpyC,IAAA,CAAK,CAAL,CAAD,EAAUA,IAAA,CAAK,CAAL,CAAV,CAApB,EAAwCuwB,SAAxC,CAAX;IAEA,KAAK8hB,IAAL,GAAY/1C,IAAA,CAAKG,GAAL,CAAS,KAAK41C,IAAd,EAAoB5P,EAAA,CAAG,CAAH,CAApB,EAA2BC,EAAA,CAAG,CAAH,CAA3B,EAAkCC,EAAA,CAAG,CAAH,CAAlC,EAAyC4P,EAAA,CAAG,CAAH,CAAzC,CAAZ;IACA,KAAKlO,IAAL,GAAY/nC,IAAA,CAAKG,GAAL,CAAS,KAAK4nC,IAAd,EAAoB5B,EAAA,CAAG,CAAH,CAApB,EAA2BC,EAAA,CAAG,CAAH,CAA3B,EAAkCC,EAAA,CAAG,CAAH,CAAlC,EAAyC4P,EAAA,CAAG,CAAH,CAAzC,CAAZ;IACA,KAAKD,IAAL,GAAYh2C,IAAA,CAAKE,GAAL,CAAS,KAAK81C,IAAd,EAAoB7P,EAAA,CAAG,CAAH,CAApB,EAA2BC,EAAA,CAAG,CAAH,CAA3B,EAAkCC,EAAA,CAAG,CAAH,CAAlC,EAAyC4P,EAAA,CAAG,CAAH,CAAzC,CAAZ;IACA,KAAKjO,IAAL,GAAYhoC,IAAA,CAAKE,GAAL,CAAS,KAAK8nC,IAAd,EAAoB7B,EAAA,CAAG,CAAH,CAApB,EAA2BC,EAAA,CAAG,CAAH,CAA3B,EAAkCC,EAAA,CAAG,CAAH,CAAlC,EAAyC4P,EAAA,CAAG,CAAH,CAAzC,CAAZ;EATgC;EAYlCC,wBAAwBjiB,SAAxB,EAAmCkiB,MAAnC,EAA2C;IACzCtzC,SAAA,CAAKuzC,WAAL,CAAiBniB,SAAjB,EAA4BkiB,MAA5B;IACA,KAAKJ,IAAL,GAAY/1C,IAAA,CAAKG,GAAL,CAAS,KAAK41C,IAAd,EAAoBI,MAAA,CAAO,CAAP,CAApB,CAAZ;IACA,KAAKH,IAAL,GAAYh2C,IAAA,CAAKE,GAAL,CAAS,KAAK81C,IAAd,EAAoBG,MAAA,CAAO,CAAP,CAApB,CAAZ;IACA,KAAKpO,IAAL,GAAY/nC,IAAA,CAAKG,GAAL,CAAS,KAAK4nC,IAAd,EAAoBoO,MAAA,CAAO,CAAP,CAApB,CAAZ;IACA,KAAKnO,IAAL,GAAYhoC,IAAA,CAAKE,GAAL,CAAS,KAAK8nC,IAAd,EAAoBmO,MAAA,CAAO,CAAP,CAApB,CAAZ;EALyC;EAQ3CE,sBAAsBpiB,SAAtB,EAAiCkX,EAAjC,EAAqCC,EAArC,EAAyCtE,EAAzC,EAA6CE,EAA7C,EAAiDE,EAAjD,EAAqDC,EAArD,EAAyDC,EAAzD,EAA6DC,EAA7D,EAAiE8O,MAAjE,EAAyE;IACvE,MAAMG,GAAA,GAAMzzC,SAAA,CAAK0zC,iBAAL,CAAuBpL,EAAvB,EAA2BC,EAA3B,EAA+BtE,EAA/B,EAAmCE,EAAnC,EAAuCE,EAAvC,EAA2CC,EAA3C,EAA+CC,EAA/C,EAAmDC,EAAnD,CAAZ;IACA,IAAI8O,MAAJ,EAAY;MACVA,MAAA,CAAO,CAAP,IAAYn2C,IAAA,CAAKG,GAAL,CAASg2C,MAAA,CAAO,CAAP,CAAT,EAAoBG,GAAA,CAAI,CAAJ,CAApB,EAA4BA,GAAA,CAAI,CAAJ,CAA5B,CAAZ;MACAH,MAAA,CAAO,CAAP,IAAYn2C,IAAA,CAAKE,GAAL,CAASi2C,MAAA,CAAO,CAAP,CAAT,EAAoBG,GAAA,CAAI,CAAJ,CAApB,EAA4BA,GAAA,CAAI,CAAJ,CAA5B,CAAZ;MACAH,MAAA,CAAO,CAAP,IAAYn2C,IAAA,CAAKG,GAAL,CAASg2C,MAAA,CAAO,CAAP,CAAT,EAAoBG,GAAA,CAAI,CAAJ,CAApB,EAA4BA,GAAA,CAAI,CAAJ,CAA5B,CAAZ;MACAH,MAAA,CAAO,CAAP,IAAYn2C,IAAA,CAAKE,GAAL,CAASi2C,MAAA,CAAO,CAAP,CAAT,EAAoBG,GAAA,CAAI,CAAJ,CAApB,EAA4BA,GAAA,CAAI,CAAJ,CAA5B,CAAZ;MACA;IALU;IAOZ,KAAK9J,gBAAL,CAAsBvY,SAAtB,EAAiCqiB,GAAjC;EATuE;EAYzEE,mBAAmB1R,QAAA,GAAW7B,QAAA,CAASC,IAAvC,EAA6CjP,SAAA,GAAY,IAAzD,EAA+D;IAC7D,MAAMqiB,GAAA,GAAM,CAAC,KAAKP,IAAN,EAAY,KAAKhO,IAAjB,EAAuB,KAAKiO,IAA5B,EAAkC,KAAKhO,IAAvC,CAAZ;IACA,IAAIlD,QAAA,KAAa7B,QAAA,CAASE,MAA1B,EAAkC;MAChC,IAAI,CAAClP,SAAL,EAAgB;QACdrxB,oBAAA,CAAY,6CAAZ;MADc;MAKhB,MAAMuwB,KAAA,GAAQtwB,SAAA,CAAKunC,6BAAL,CAAmCnW,SAAnC,CAAd;MACA,MAAMwiB,UAAA,GAActjB,KAAA,CAAM,CAAN,IAAW,KAAKoiB,SAAjB,GAA8B,CAAjD;MACA,MAAMmB,UAAA,GAAcvjB,KAAA,CAAM,CAAN,IAAW,KAAKoiB,SAAjB,GAA8B,CAAjD;MACAe,GAAA,CAAI,CAAJ,KAAUG,UAAV;MACAH,GAAA,CAAI,CAAJ,KAAUI,UAAV;MACAJ,GAAA,CAAI,CAAJ,KAAUG,UAAV;MACAH,GAAA,CAAI,CAAJ,KAAUI,UAAV;IAZgC;IAclC,OAAOJ,GAAP;EAhB6D;EAmB/DK,mBAAA,EAAqB;IACnB,MAAMh3B,SAAA,GAAY9c,SAAA,CAAK8c,SAAL,CAAe,KAAKg2B,OAApB,EAA6B,KAAKa,kBAAL,EAA7B,CAAlB;IACA,KAAKd,sBAAL,CAA4B/1B,SAAA,IAAa,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAzC;EAFmB;EAKrBi3B,YAAA,EAAc;IACZ,OAAO,KAAKb,IAAL,KAAcc,QAArB;EADY;EAIdnB,uBAAuBY,GAAvB,EAA4B;IAC1B,KAAKX,OAAL,GAAeW,GAAf;IACA,KAAKP,IAAL,GAAYc,QAAZ;IACA,KAAK9O,IAAL,GAAY8O,QAAZ;IACA,KAAKb,IAAL,GAAY,CAAZ;IACA,KAAKhO,IAAL,GAAY,CAAZ;EAL0B;EAQ5B9C,0BAA0BJ,QAAA,GAAW7B,QAAA,CAASC,IAA9C,EAAoDjP,SAAA,GAAY,IAAhE,EAAsE;IACpE,OAAOpxB,SAAA,CAAK8c,SAAL,CACL,KAAKg2B,OADA,EAEL,KAAKa,kBAAL,CAAwB1R,QAAxB,EAAkC7Q,SAAlC,CAFK,CAAP;EADoE;AA3HjD;AAmIvB,SAAS6iB,kBAATA,CAA4BxT,GAA5B,EAAiCiQ,OAAjC,EAA0C;EACxC,IAAI,OAAOwD,SAAP,KAAqB,WAArB,IAAoCxD,OAAA,YAAmBwD,SAA3D,EAAsE;IACpEzT,GAAA,CAAI6G,YAAJ,CAAiBoJ,OAAjB,EAA0B,CAA1B,EAA6B,CAA7B;IACA;EAFoE;EAgBtE,MAAM3vC,MAAA,GAAS2vC,OAAA,CAAQ3vC,MAAvB;IACED,KAAA,GAAQ4vC,OAAA,CAAQ5vC,KADlB;EAEA,MAAMqzC,kBAAA,GAAqBpzC,MAAA,GAASurC,iBAApC;EACA,MAAM8H,UAAA,GAAc,CAAArzC,MAAA,GAASozC,kBAAT,IAA+B7H,iBAAnD;EACA,MAAM+H,WAAA,GAAcF,kBAAA,KAAuB,CAAvB,GAA2BC,UAA3B,GAAwCA,UAAA,GAAa,CAAzE;EAEA,MAAME,YAAA,GAAe7T,GAAA,CAAI4G,eAAJ,CAAoBvmC,KAApB,EAA2BwrC,iBAA3B,CAArB;EACA,IAAIhC,MAAA,GAAS,CAAb;IACEW,OADF;EAEA,MAAM/4B,GAAA,GAAMw+B,OAAA,CAAQtvC,IAApB;EACA,MAAMsO,IAAA,GAAO4kC,YAAA,CAAalzC,IAA1B;EACA,IAAI2Y,CAAJ,EAAO+rB,CAAP,EAAUyO,eAAV,EAA2BC,gBAA3B;EAIA,IAAI9D,OAAA,CAAQzG,IAAR,KAAiBF,cAAA,CAAUG,cAA/B,EAA+C;IAE7C,MAAMa,SAAA,GAAY74B,GAAA,CAAIgZ,UAAtB;IACA,MAAMupB,MAAA,GAAS,IAAIzJ,WAAJ,CAAgBt7B,IAAA,CAAKmb,MAArB,EAA6B,CAA7B,EAAgCnb,IAAA,CAAKwb,UAAL,IAAmB,CAAnD,CAAf;IACA,MAAMwpB,gBAAA,GAAmBD,MAAA,CAAO9oC,MAAhC;IACA,MAAMgpC,WAAA,GAAe7zC,KAAA,GAAQ,CAAT,IAAe,CAAnC;IACA,MAAM8zC,KAAA,GAAQ,UAAd;IACA,MAAMnK,KAAA,GAAQ7qC,gBAAA,CAAY8qC,cAAZ,GAA6B,UAA7B,GAA0C,UAAxD;IAEA,KAAK3wB,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAIs6B,WAAhB,EAA6Bt6B,CAAA,EAA7B,EAAkC;MAChCw6B,eAAA,GAAkBx6B,CAAA,GAAIq6B,UAAJ,GAAiB9H,iBAAjB,GAAqC6H,kBAAvD;MACAlJ,OAAA,GAAU,CAAV;MACA,KAAKnF,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAIyO,eAAhB,EAAiCzO,CAAA,EAAjC,EAAsC;QACpC,MAAM+O,OAAA,GAAU9J,SAAA,GAAYT,MAA5B;QACA,IAAItsC,CAAA,GAAI,CAAR;QACA,MAAM82C,IAAA,GAAOD,OAAA,GAAUF,WAAV,GAAwB7zC,KAAxB,GAAgC+zC,OAAA,GAAU,CAAV,GAAc,CAA3D;QACA,MAAME,YAAA,GAAeD,IAAA,GAAO,CAAC,CAA7B;QACA,IAAI7D,IAAA,GAAO,CAAX;QACA,IAAI+D,OAAA,GAAU,CAAd;QACA,OAAOh3C,CAAA,GAAI+2C,YAAX,EAAyB/2C,CAAA,IAAK,CAA9B,EAAiC;UAC/Bg3C,OAAA,GAAU9iC,GAAA,CAAIo4B,MAAA,EAAJ,CAAV;UACAmK,MAAA,CAAOxJ,OAAA,EAAP,IAAoB+J,OAAA,GAAU,GAAV,GAAgBJ,KAAhB,GAAwBnK,KAA5C;UACAgK,MAAA,CAAOxJ,OAAA,EAAP,IAAoB+J,OAAA,GAAU,EAAV,GAAeJ,KAAf,GAAuBnK,KAA3C;UACAgK,MAAA,CAAOxJ,OAAA,EAAP,IAAoB+J,OAAA,GAAU,EAAV,GAAeJ,KAAf,GAAuBnK,KAA3C;UACAgK,MAAA,CAAOxJ,OAAA,EAAP,IAAoB+J,OAAA,GAAU,EAAV,GAAeJ,KAAf,GAAuBnK,KAA3C;UACAgK,MAAA,CAAOxJ,OAAA,EAAP,IAAoB+J,OAAA,GAAU,CAAV,GAAcJ,KAAd,GAAsBnK,KAA1C;UACAgK,MAAA,CAAOxJ,OAAA,EAAP,IAAoB+J,OAAA,GAAU,CAAV,GAAcJ,KAAd,GAAsBnK,KAA1C;UACAgK,MAAA,CAAOxJ,OAAA,EAAP,IAAoB+J,OAAA,GAAU,CAAV,GAAcJ,KAAd,GAAsBnK,KAA1C;UACAgK,MAAA,CAAOxJ,OAAA,EAAP,IAAoB+J,OAAA,GAAU,CAAV,GAAcJ,KAAd,GAAsBnK,KAA1C;QAT+B;QAWjC,OAAOzsC,CAAA,GAAI82C,IAAX,EAAiB92C,CAAA,EAAjB,EAAsB;UACpB,IAAIizC,IAAA,KAAS,CAAb,EAAgB;YACd+D,OAAA,GAAU9iC,GAAA,CAAIo4B,MAAA,EAAJ,CAAV;YACA2G,IAAA,GAAO,GAAP;UAFc;UAKhBwD,MAAA,CAAOxJ,OAAA,EAAP,IAAoB+J,OAAA,GAAU/D,IAAV,GAAiB2D,KAAjB,GAAyBnK,KAA7C;UACAwG,IAAA,KAAS,CAAT;QAPoB;MAlBc;MA6BtC,OAAOhG,OAAA,GAAUyJ,gBAAjB,EAAmC;QACjCD,MAAA,CAAOxJ,OAAA,EAAP,IAAoB,CAApB;MADiC;MAInCxK,GAAA,CAAI6G,YAAJ,CAAiBgN,YAAjB,EAA+B,CAA/B,EAAkCv6B,CAAA,GAAIuyB,iBAAtC;IApCgC;EATW,CAA/C,MA+CO,IAAIoE,OAAA,CAAQzG,IAAR,KAAiBF,cAAA,CAAUkL,UAA/B,EAA2C;IAEhDnP,CAAA,GAAI,CAAJ;IACA0O,gBAAA,GAAmB1zC,KAAA,GAAQwrC,iBAAR,GAA4B,CAA/C;IACA,KAAKvyB,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAIq6B,UAAhB,EAA4Br6B,CAAA,EAA5B,EAAiC;MAC/BrK,IAAA,CAAKoQ,GAAL,CAAS5N,GAAA,CAAIgjC,QAAJ,CAAa5K,MAAb,EAAqBA,MAAA,GAASkK,gBAA9B,CAAT;MACAlK,MAAA,IAAUkK,gBAAV;MAEA/T,GAAA,CAAI6G,YAAJ,CAAiBgN,YAAjB,EAA+B,CAA/B,EAAkCxO,CAAlC;MACAA,CAAA,IAAKwG,iBAAL;IAL+B;IAOjC,IAAIvyB,CAAA,GAAIs6B,WAAR,EAAqB;MACnBG,gBAAA,GAAmB1zC,KAAA,GAAQqzC,kBAAR,GAA6B,CAAhD;MACAzkC,IAAA,CAAKoQ,GAAL,CAAS5N,GAAA,CAAIgjC,QAAJ,CAAa5K,MAAb,EAAqBA,MAAA,GAASkK,gBAA9B,CAAT;MAEA/T,GAAA,CAAI6G,YAAJ,CAAiBgN,YAAjB,EAA+B,CAA/B,EAAkCxO,CAAlC;IAJmB;EAX2B,CAA3C,MAiBA,IAAI4K,OAAA,CAAQzG,IAAR,KAAiBF,cAAA,CAAUK,SAA/B,EAA0C;IAE/CmK,eAAA,GAAkBjI,iBAAlB;IACAkI,gBAAA,GAAmB1zC,KAAA,GAAQyzC,eAA3B;IACA,KAAKx6B,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAIs6B,WAAhB,EAA6Bt6B,CAAA,EAA7B,EAAkC;MAChC,IAAIA,CAAA,IAAKq6B,UAAT,EAAqB;QACnBG,eAAA,GAAkBJ,kBAAlB;QACAK,gBAAA,GAAmB1zC,KAAA,GAAQyzC,eAA3B;MAFmB;MAKrBtJ,OAAA,GAAU,CAAV;MACA,KAAKnF,CAAA,GAAI0O,gBAAT,EAA2B1O,CAAA,EAA3B,GAAkC;QAChCp2B,IAAA,CAAKu7B,OAAA,EAAL,IAAkB/4B,GAAA,CAAIo4B,MAAA,EAAJ,CAAlB;QACA56B,IAAA,CAAKu7B,OAAA,EAAL,IAAkB/4B,GAAA,CAAIo4B,MAAA,EAAJ,CAAlB;QACA56B,IAAA,CAAKu7B,OAAA,EAAL,IAAkB/4B,GAAA,CAAIo4B,MAAA,EAAJ,CAAlB;QACA56B,IAAA,CAAKu7B,OAAA,EAAL,IAAkB,GAAlB;MAJgC;MAOlCxK,GAAA,CAAI6G,YAAJ,CAAiBgN,YAAjB,EAA+B,CAA/B,EAAkCv6B,CAAA,GAAIuyB,iBAAtC;IAdgC;EAJa,CAA1C,MAoBA;IACL,MAAM,IAAI7mB,KAAJ,CAAW,mBAAkBirB,OAAA,CAAQzG,IAA3B,EAAV,CAAN;EADK;AApHiC;AAyH1C,SAASkL,kBAATA,CAA4B1U,GAA5B,EAAiCiQ,OAAjC,EAA0C;EACxC,IAAIA,OAAA,CAAQxuB,MAAZ,EAAoB;IAElBue,GAAA,CAAI8P,SAAJ,CAAcG,OAAA,CAAQxuB,MAAtB,EAA8B,CAA9B,EAAiC,CAAjC;IACA;EAHkB;EAOpB,MAAMnhB,MAAA,GAAS2vC,OAAA,CAAQ3vC,MAAvB;IACED,KAAA,GAAQ4vC,OAAA,CAAQ5vC,KADlB;EAEA,MAAMqzC,kBAAA,GAAqBpzC,MAAA,GAASurC,iBAApC;EACA,MAAM8H,UAAA,GAAc,CAAArzC,MAAA,GAASozC,kBAAT,IAA+B7H,iBAAnD;EACA,MAAM+H,WAAA,GAAcF,kBAAA,KAAuB,CAAvB,GAA2BC,UAA3B,GAAwCA,UAAA,GAAa,CAAzE;EAEA,MAAME,YAAA,GAAe7T,GAAA,CAAI4G,eAAJ,CAAoBvmC,KAApB,EAA2BwrC,iBAA3B,CAArB;EACA,IAAIhC,MAAA,GAAS,CAAb;EACA,MAAMp4B,GAAA,GAAMw+B,OAAA,CAAQtvC,IAApB;EACA,MAAMsO,IAAA,GAAO4kC,YAAA,CAAalzC,IAA1B;EAEA,KAAK,IAAI2Y,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIs6B,WAApB,EAAiCt6B,CAAA,EAAjC,EAAsC;IACpC,MAAMw6B,eAAA,GACJx6B,CAAA,GAAIq6B,UAAJ,GAAiB9H,iBAAjB,GAAqC6H,kBADvC;IAMA,CAAC;MAAE7J;IAAF,IAAaH,0BAAA,CAA2B;MACvCj4B,GADuC;MAEvCo4B,MAFuC;MAGvC56B,IAHuC;MAIvC5O,KAJuC;MAKvCC,MAAA,EAAQwzC,eAL+B;MAMvChK,aAAA,EAAe;IANwB,CAA3B,CAAd;IASA9J,GAAA,CAAI6G,YAAJ,CAAiBgN,YAAjB,EAA+B,CAA/B,EAAkCv6B,CAAA,GAAIuyB,iBAAtC;EAhBoC;AAnBE;AAuC1C,SAAS8I,YAATA,CAAsBC,SAAtB,EAAiC7I,OAAjC,EAA0C;EACxC,MAAM8I,UAAA,GAAa,CACjB,aADiB,EAEjB,WAFiB,EAGjB,UAHiB,EAIjB,aAJiB,EAKjB,WALiB,EAMjB,SANiB,EAOjB,UAPiB,EAQjB,YARiB,EASjB,0BATiB,EAUjB,MAViB,EAWjB,QAXiB,CAAnB;EAaA,WAAWC,QAAX,IAAuBD,UAAvB,EAAmC;IACjC,IAAID,SAAA,CAAUE,QAAV,MAAwB7+B,SAA5B,EAAuC;MACrC81B,OAAA,CAAQ+I,QAAR,IAAoBF,SAAA,CAAUE,QAAV,CAApB;IADqC;EADN;EAKnC,IAAIF,SAAA,CAAUG,WAAV,KAA0B9+B,SAA9B,EAAyC;IACvC81B,OAAA,CAAQgJ,WAAR,CAAoBH,SAAA,CAAUI,WAAV,EAApB;IACAjJ,OAAA,CAAQkJ,cAAR,GAAyBL,SAAA,CAAUK,cAAnC;EAFuC;AAnBD;AAyB1C,SAASC,iBAATA,CAA2BlV,GAA3B,EAAgC;EAC9BA,GAAA,CAAIoJ,WAAJ,GAAkBpJ,GAAA,CAAIsC,SAAJ,GAAgB,SAAlC;EACAtC,GAAA,CAAImV,QAAJ,GAAe,SAAf;EACAnV,GAAA,CAAIoV,WAAJ,GAAkB,CAAlB;EACApV,GAAA,CAAIiS,SAAJ,GAAgB,CAAhB;EACAjS,GAAA,CAAIqV,OAAJ,GAAc,MAAd;EACArV,GAAA,CAAIsV,QAAJ,GAAe,OAAf;EACAtV,GAAA,CAAIuV,UAAJ,GAAiB,EAAjB;EACAvV,GAAA,CAAIwV,wBAAJ,GAA+B,aAA/B;EACAxV,GAAA,CAAI3E,IAAJ,GAAW,iBAAX;EACA,IAAI2E,GAAA,CAAI+U,WAAJ,KAAoB9+B,SAAxB,EAAmC;IACjC+pB,GAAA,CAAI+U,WAAJ,CAAgB,EAAhB;IACA/U,GAAA,CAAIiV,cAAJ,GAAqB,CAArB;EAFiC;EAInC,IAEE,CAAC7yB,aAFH,EAGE;IACA,MAAM;MAAEpJ;IAAF,IAAagnB,GAAnB;IACA,IAAIhnB,MAAA,KAAW,MAAX,IAAqBA,MAAA,KAAW,EAApC,EAAwC;MACtCgnB,GAAA,CAAIhnB,MAAJ,GAAa,MAAb;IADsC;EAFxC;AAjB4B;AAyBhC,SAASy8B,oBAATA,CAA8BpS,KAA9B,EAAqCqS,EAArC,EAAyCC,EAAzC,EAA6CC,EAA7C,EAAiD;EAC/C,MAAM1qC,MAAA,GAASm4B,KAAA,CAAMn4B,MAArB;EACA,KAAK,IAAIoO,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIpO,MAApB,EAA4BoO,CAAA,IAAK,CAAjC,EAAoC;IAClC,MAAMu8B,KAAA,GAAQxS,KAAA,CAAM/pB,CAAN,CAAd;IACA,IAAIu8B,KAAA,KAAU,CAAd,EAAiB;MACfxS,KAAA,CAAM/pB,CAAA,GAAI,CAAV,IAAeo8B,EAAf;MACArS,KAAA,CAAM/pB,CAAA,GAAI,CAAV,IAAeq8B,EAAf;MACAtS,KAAA,CAAM/pB,CAAA,GAAI,CAAV,IAAes8B,EAAf;IAHe,CAAjB,MAIO,IAAIC,KAAA,GAAQ,GAAZ,EAAiB;MACtB,MAAMC,MAAA,GAAS,MAAMD,KAArB;MACAxS,KAAA,CAAM/pB,CAAA,GAAI,CAAV,IAAgB+pB,KAAA,CAAM/pB,CAAA,GAAI,CAAV,IAAeu8B,KAAf,GAAuBH,EAAA,GAAKI,MAA7B,IAAwC,CAAvD;MACAzS,KAAA,CAAM/pB,CAAA,GAAI,CAAV,IAAgB+pB,KAAA,CAAM/pB,CAAA,GAAI,CAAV,IAAeu8B,KAAf,GAAuBF,EAAA,GAAKG,MAA7B,IAAwC,CAAvD;MACAzS,KAAA,CAAM/pB,CAAA,GAAI,CAAV,IAAgB+pB,KAAA,CAAM/pB,CAAA,GAAI,CAAV,IAAeu8B,KAAf,GAAuBD,EAAA,GAAKE,MAA7B,IAAwC,CAAvD;IAJsB;EANU;AAFW;AAiBjD,SAASC,iBAATA,CAA2BC,QAA3B,EAAqCC,SAArC,EAAgDC,WAAhD,EAA6D;EAC3D,MAAMhrC,MAAA,GAAS8qC,QAAA,CAAS9qC,MAAxB;EACA,MAAM2kB,KAAA,GAAQ,IAAI,GAAlB;EACA,KAAK,IAAIvW,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIpO,MAApB,EAA4BoO,CAAA,IAAK,CAAjC,EAAoC;IAClC,MAAMu8B,KAAA,GAAQK,WAAA,GAAcA,WAAA,CAAYF,QAAA,CAAS18B,CAAT,CAAZ,CAAd,GAAyC08B,QAAA,CAAS18B,CAAT,CAAvD;IACA28B,SAAA,CAAU38B,CAAV,IAAgB28B,SAAA,CAAU38B,CAAV,IAAeu8B,KAAf,GAAuBhmB,KAAxB,GAAiC,CAAhD;EAFkC;AAHuB;AAS7D,SAASsmB,sBAATA,CAAgCH,QAAhC,EAA0CC,SAA1C,EAAqDC,WAArD,EAAkE;EAChE,MAAMhrC,MAAA,GAAS8qC,QAAA,CAAS9qC,MAAxB;EACA,KAAK,IAAIoO,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIpO,MAApB,EAA4BoO,CAAA,IAAK,CAAjC,EAAoC;IAClC,MAAMjc,CAAA,GACJ24C,QAAA,CAAS18B,CAAA,GAAI,CAAb,IAAkB,EAAlB,GACA08B,QAAA,CAAS18B,CAAA,GAAI,CAAb,IAAkB,GADlB,GAEA08B,QAAA,CAAS18B,CAAA,GAAI,CAAb,IAAkB,EAHpB;IAIA28B,SAAA,CAAU38B,CAAV,IAAe48B,WAAA,GACVD,SAAA,CAAU38B,CAAV,IAAe48B,WAAA,CAAY74C,CAAA,IAAK,CAAjB,CAAhB,IAAwC,CAD7B,GAEV44C,SAAA,CAAU38B,CAAV,IAAejc,CAAhB,IAAsB,EAF1B;EALkC;AAF4B;AAalE,SAAS+4C,mBAATA,CACEC,OADF,EAEEC,QAFF,EAGEj2C,KAHF,EAIEC,MAJF,EAKEI,OALF,EAME61C,QANF,EAOEL,WAPF,EAQEM,YARF,EASEC,YATF,EAUEC,WAVF,EAWEC,WAXF,EAYE;EACA,MAAMC,WAAA,GAAc,CAAC,CAACL,QAAtB;EACA,MAAMb,EAAA,GAAKkB,WAAA,GAAcL,QAAA,CAAS,CAAT,CAAd,GAA4B,CAAvC;EACA,MAAMZ,EAAA,GAAKiB,WAAA,GAAcL,QAAA,CAAS,CAAT,CAAd,GAA4B,CAAvC;EACA,MAAMX,EAAA,GAAKgB,WAAA,GAAcL,QAAA,CAAS,CAAT,CAAd,GAA4B,CAAvC;EAEA,MAAMM,SAAA,GACJn2C,OAAA,KAAY,YAAZ,GAA2By1C,sBAA3B,GAAoDJ,iBADtD;EAIA,MAAMe,iBAAA,GAAoB,OAA1B;EACA,MAAMC,SAAA,GAAYr6C,IAAA,CAAKG,GAAL,CAASyD,MAAT,EAAiB5D,IAAA,CAAKmlC,IAAL,CAAUiV,iBAAA,GAAoBz2C,KAA9B,CAAjB,CAAlB;EACA,KAAK,IAAI22C,GAAA,GAAM,CAAV,EAAaA,GAAA,GAAM12C,MAAxB,EAAgC02C,GAAA,IAAOD,SAAvC,EAAkD;IAChD,MAAME,WAAA,GAAcv6C,IAAA,CAAKG,GAAL,CAASk6C,SAAT,EAAoBz2C,MAAA,GAAS02C,GAA7B,CAApB;IACA,MAAMhB,QAAA,GAAWK,OAAA,CAAQa,YAAR,CACfV,YAAA,GAAeE,WADA,EAEfM,GAAA,IAAOP,YAAA,GAAeE,WAAf,CAFQ,EAGft2C,KAHe,EAIf42C,WAJe,CAAjB;IAMA,MAAMhB,SAAA,GAAYK,QAAA,CAASY,YAAT,CAChBV,YADgB,EAEhBQ,GAAA,GAAMP,YAFU,EAGhBp2C,KAHgB,EAIhB42C,WAJgB,CAAlB;IAOA,IAAIL,WAAJ,EAAiB;MACfnB,oBAAA,CAAqBO,QAAA,CAASr1C,IAA9B,EAAoC+0C,EAApC,EAAwCC,EAAxC,EAA4CC,EAA5C;IADe;IAGjBiB,SAAA,CAAUb,QAAA,CAASr1C,IAAnB,EAAyBs1C,SAAA,CAAUt1C,IAAnC,EAAyCu1C,WAAzC;IAEAI,QAAA,CAASzP,YAAT,CAAsBoP,SAAtB,EAAiCO,YAAjC,EAA+CQ,GAAA,GAAMP,YAArD;EApBgD;AAZlD;AAoCF,SAASU,YAATA,CAAsBnX,GAAtB,EAA2BoX,KAA3B,EAAkCd,QAAlC,EAA4Ce,QAA5C,EAAsD;EACpD,MAAMb,YAAA,GAAea,QAAA,CAAS,CAAT,CAArB;EACA,MAAMZ,YAAA,GAAeY,QAAA,CAAS,CAAT,CAArB;EACA,MAAMC,UAAA,GAAaD,QAAA,CAAS,CAAT,IAAcb,YAAjC;EACA,MAAMe,WAAA,GAAcF,QAAA,CAAS,CAAT,IAAcZ,YAAlC;EACA,IAAIa,UAAA,KAAe,CAAf,IAAoBC,WAAA,KAAgB,CAAxC,EAA2C;IACzC;EADyC;EAG3CnB,mBAAA,CACEgB,KAAA,CAAM/1B,OADR,EAEEi1B,QAFF,EAGEgB,UAHF,EAIEC,WAJF,EAKEH,KAAA,CAAM12C,OALR,EAME02C,KAAA,CAAMb,QANR,EAOEa,KAAA,CAAMlB,WAPR,EAQEM,YARF,EASEC,YATF,EAUEW,KAAA,CAAMtnB,OAVR,EAWEsnB,KAAA,CAAMrnB,OAXR;EAaAiQ,GAAA,CAAI2I,IAAJ;EACA3I,GAAA,CAAIoV,WAAJ,GAAkB,CAAlB;EACApV,GAAA,CAAIwV,wBAAJ,GAA+B,aAA/B;EACAxV,GAAA,CAAI2C,YAAJ,CAAiB,CAAjB,EAAoB,CAApB,EAAuB,CAAvB,EAA0B,CAA1B,EAA6B,CAA7B,EAAgC,CAAhC;EACA3C,GAAA,CAAI8P,SAAJ,CAAcwG,QAAA,CAAS72B,MAAvB,EAA+B,CAA/B,EAAkC,CAAlC;EACAugB,GAAA,CAAImM,OAAJ;AA1BoD;AA6BtD,SAASqL,wBAATA,CAAkC7mB,SAAlC,EAA6C8mB,WAA7C,EAA0D;EACxD,MAAM5nB,KAAA,GAAQtwB,SAAA,CAAKunC,6BAAL,CAAmCnW,SAAnC,CAAd;EAGAd,KAAA,CAAM,CAAN,IAAWnzB,IAAA,CAAKg7C,MAAL,CAAY7nB,KAAA,CAAM,CAAN,CAAZ,CAAX;EACAA,KAAA,CAAM,CAAN,IAAWnzB,IAAA,CAAKg7C,MAAL,CAAY7nB,KAAA,CAAM,CAAN,CAAZ,CAAX;EACA,MAAM8nB,WAAA,GAAcj7C,IAAA,CAAKg7C,MAAL,CACjB,CAAAxwB,UAAA,CAAW0wB,gBAAX,IAA+B,CAA/B,IAAoCtM,2BAAA,CAAcuM,gBADjC,CAApB;EAGA,IAAIJ,WAAA,KAAgBxhC,SAApB,EAA+B;IAE7B,OAAOwhC,WAAP;EAF6B,CAA/B,MAGO,IAAI5nB,KAAA,CAAM,CAAN,KAAY8nB,WAAZ,IAA2B9nB,KAAA,CAAM,CAAN,KAAY8nB,WAA3C,EAAwD;IAE7D,OAAO,IAAP;EAF6D;EAK/D,OAAO,KAAP;AAjBwD;AAoB1D,MAAMG,eAAA,GAAkB,CAAC,MAAD,EAAS,OAAT,EAAkB,QAAlB,CAAxB;AACA,MAAMC,gBAAA,GAAmB,CAAC,OAAD,EAAU,OAAV,EAAmB,OAAnB,CAAzB;AACA,MAAMC,WAAA,GAAc,EAApB;AACA,MAAMC,OAAA,GAAU,EAAhB;AAEA,MAAMp0B,cAAN,CAAqB;EACnBjgB,YACEs0C,SADF,EAEE7oB,UAFF,EAGEC,IAHF,EAIE3H,aAJF,EAKEC,aALF,EAME;IAAEgL,qBAAF;IAAyBulB,kBAAA,GAAqB;EAA9C,CANF,EAOE15B,mBAPF,EAQEqS,UARF,EASE;IACA,KAAKkP,GAAL,GAAWkY,SAAX;IACA,KAAKvW,OAAL,GAAe,IAAIsP,gBAAJ,CACb,KAAKjR,GAAL,CAASvgB,MAAT,CAAgBpf,KADH,EAEb,KAAK2/B,GAAL,CAASvgB,MAAT,CAAgBnf,MAFH,CAAf;IAIA,KAAK83C,UAAL,GAAkB,EAAlB;IACA,KAAKC,WAAL,GAAmB,IAAnB;IACA,KAAKC,aAAL,GAAqB,KAArB;IACA,KAAKC,GAAL,GAAW,IAAX;IACA,KAAKC,KAAL,GAAa,IAAb;IACA,KAAKnpB,UAAL,GAAkBA,UAAlB;IACA,KAAKC,IAAL,GAAYA,IAAZ;IACA,KAAK3H,aAAL,GAAqBA,aAArB;IACA,KAAKC,aAAL,GAAqBA,aAArB;IACA,KAAK6wB,UAAL,GAAkB,EAAlB;IACA,KAAKC,eAAL,GAAuB,IAAvB;IAGA,KAAKrW,aAAL,GAAqB,IAArB;IACA,KAAKsW,kBAAL,GAA0B,EAA1B;IACA,KAAKtQ,UAAL,GAAkB,CAAlB;IACA,KAAKuQ,UAAL,GAAkB,EAAlB;IACA,KAAKC,YAAL,GAAoB,CAApB;IACA,KAAKC,SAAL,GAAiB,IAAjB;IACA,KAAKC,YAAL,GAAoB,IAApB;IACA,KAAKC,cAAL,GAAsB,IAAtB;IACA,KAAKb,kBAAL,GAA0BA,kBAAA,IAAsB,EAAhD;IACA,KAAKvlB,qBAAL,GAA6BA,qBAA7B;IACA,KAAKmP,cAAL,GAAsB,IAAIuM,cAAJ,CAAmB,KAAK3mB,aAAxB,CAAtB;IACA,KAAKsxB,cAAL,GAAsB,IAAI9oC,GAAJ,EAAtB;IACA,KAAKsO,mBAAL,GAA2BA,mBAA3B;IACA,KAAKy6B,aAAL,GAAqB,CAArB;IACA,KAAKC,YAAL,GAAoB,CAApB;IACA,KAAKC,YAAL,GAAoB,CAApB;IACA,KAAKtoB,UAAL,GAAkBA,UAAlB;IAEA,KAAKuoB,uBAAL,GAA+B,CAAC,CAAC,CAAF,EAAK,CAAL,CAA/B;IACA,KAAKC,0BAAL,GAAkC,IAAlC;IACA,KAAKC,iBAAL,GAAyB,IAAIppC,GAAJ,EAAzB;EAvCA;EA0CFqpC,UAAU74C,IAAV,EAAgB84C,QAAA,GAAW,IAA3B,EAAiC;IAC/B,IAAI,OAAO94C,IAAP,KAAgB,QAApB,EAA8B;MAC5B,OAAOA,IAAA,CAAK+4C,UAAL,CAAgB,IAAhB,IACH,KAAKrqB,UAAL,CAAgBjf,GAAhB,CAAoBzP,IAApB,CADG,GAEH,KAAK2uB,IAAL,CAAUlf,GAAV,CAAczP,IAAd,CAFJ;IAD4B;IAK9B,OAAO84C,QAAP;EAN+B;EASjC9b,aAAa;IACXhN,SADW;IAEXrrB,QAFW;IAGXqtB,YAAA,GAAe,KAHJ;IAIX/B,UAAA,GAAa;EAJF,CAAb,EAKG;IAMD,MAAMvwB,KAAA,GAAQ,KAAK2/B,GAAL,CAASvgB,MAAT,CAAgBpf,KAA9B;IACA,MAAMC,MAAA,GAAS,KAAK0/B,GAAL,CAASvgB,MAAT,CAAgBnf,MAA/B;IAEA,MAAMq5C,cAAA,GAAiB,KAAK3Z,GAAL,CAASsC,SAAhC;IACA,KAAKtC,GAAL,CAASsC,SAAT,GAAqB1R,UAAA,IAAc,SAAnC;IACA,KAAKoP,GAAL,CAAS4Z,QAAT,CAAkB,CAAlB,EAAqB,CAArB,EAAwBv5C,KAAxB,EAA+BC,MAA/B;IACA,KAAK0/B,GAAL,CAASsC,SAAT,GAAqBqX,cAArB;IAEA,IAAIhnB,YAAJ,EAAkB;MAChB,MAAMknB,iBAAA,GAAoB,KAAK9X,cAAL,CAAoBC,SAApB,CACxB,aADwB,EAExB3hC,KAFwB,EAGxBC,MAHwB,CAA1B;MAKA,KAAKw5C,YAAL,GAAoB,KAAK9Z,GAAzB;MACA,KAAK6Z,iBAAL,GAAyBA,iBAAA,CAAkBp6B,MAA3C;MACA,KAAKugB,GAAL,GAAW6Z,iBAAA,CAAkBx4B,OAA7B;MACA,KAAK2e,GAAL,CAAS2I,IAAT;MAGA,KAAK3I,GAAL,CAASrP,SAAT,CAAmB,GAAG+O,qCAAA,CAAoB,KAAKoa,YAAzB,CAAtB;IAZgB;IAelB,KAAK9Z,GAAL,CAAS2I,IAAT;IACAuM,iBAAA,CAAkB,KAAKlV,GAAvB;IACA,IAAIrP,SAAJ,EAAe;MACb,KAAKqP,GAAL,CAASrP,SAAT,CAAmB,GAAGA,SAAtB;MACA,KAAKwoB,YAAL,GAAoBxoB,SAAA,CAAU,CAAV,CAApB;MACA,KAAKyoB,YAAL,GAAoBzoB,SAAA,CAAU,CAAV,CAApB;IAHa;IAKf,KAAKqP,GAAL,CAASrP,SAAT,CAAmB,GAAGrrB,QAAA,CAASqrB,SAA/B;IACA,KAAKuoB,aAAL,GAAqB5zC,QAAA,CAASuqB,KAA9B;IAEA,KAAKwS,aAAL,GAAqB3C,qCAAA,CAAoB,KAAKM,GAAzB,CAArB;EAvCC;EA0CHjC,oBACEvM,YADF,EAEEuoB,iBAFF,EAGEC,gBAHF,EAIE1c,OAJF,EAKE;IACA,MAAM5L,SAAA,GAAYF,YAAA,CAAaE,SAA/B;IACA,MAAMD,OAAA,GAAUD,YAAA,CAAaC,OAA7B;IACA,IAAInY,CAAA,GAAIygC,iBAAA,IAAqB,CAA7B;IACA,MAAME,YAAA,GAAevoB,SAAA,CAAUxmB,MAA/B;IAGA,IAAI+uC,YAAA,KAAiB3gC,CAArB,EAAwB;MACtB,OAAOA,CAAP;IADsB;IAIxB,MAAM4gC,eAAA,GACJD,YAAA,GAAe3gC,CAAf,GAAmBqyB,eAAnB,IACA,OAAOqO,gBAAP,KAA4B,UAF9B;IAGA,MAAMG,OAAA,GAAUD,eAAA,GAAkBE,IAAA,CAAKC,GAAL,KAAa3O,cAA/B,GAAgD,CAAhE;IACA,IAAIiF,KAAA,GAAQ,CAAZ;IAEA,MAAMthB,UAAA,GAAa,KAAKA,UAAxB;IACA,MAAMC,IAAA,GAAO,KAAKA,IAAlB;IACA,IAAIgrB,IAAJ;IAEA,OAAO,IAAP,EAAa;MACX,IAAIhd,OAAA,KAAYrnB,SAAZ,IAAyBqD,CAAA,KAAMgkB,OAAA,CAAQE,cAA3C,EAA2D;QACzDF,OAAA,CAAQid,OAAR,CAAgBjhC,CAAhB,EAAmB0gC,gBAAnB;QACA,OAAO1gC,CAAP;MAFyD;MAK3DghC,IAAA,GAAO7oB,OAAA,CAAQnY,CAAR,CAAP;MAEA,IAAIghC,IAAA,KAASnP,QAAA,CAAIqP,UAAjB,EAA6B;QAE3B,KAAKF,IAAL,EAAWG,KAAX,CAAiB,IAAjB,EAAuB/oB,SAAA,CAAUpY,CAAV,CAAvB;MAF2B,CAA7B,MAGO;QACL,WAAWohC,QAAX,IAAuBhpB,SAAA,CAAUpY,CAAV,CAAvB,EAAqC;UACnC,MAAMqhC,QAAA,GAAWD,QAAA,CAAShB,UAAT,CAAoB,IAApB,IAA4BrqB,UAA5B,GAAyCC,IAA1D;UAIA,IAAI,CAACqrB,QAAA,CAAS5tC,GAAT,CAAa2tC,QAAb,CAAL,EAA6B;YAC3BC,QAAA,CAASvqC,GAAT,CAAasqC,QAAb,EAAuBV,gBAAvB;YACA,OAAO1gC,CAAP;UAF2B;QALM;MADhC;MAaPA,CAAA;MAGA,IAAIA,CAAA,KAAM2gC,YAAV,EAAwB;QACtB,OAAO3gC,CAAP;MADsB;MAMxB,IAAI4gC,eAAA,IAAmB,EAAEvJ,KAAF,GAAUhF,eAAjC,EAAkD;QAChD,IAAIyO,IAAA,CAAKC,GAAL,KAAaF,OAAjB,EAA0B;UACxBH,gBAAA;UACA,OAAO1gC,CAAP;QAFwB;QAI1Bq3B,KAAA,GAAQ,CAAR;MALgD;IAjCvC;EArBb;EAmEF,CAAAiK,oBAAA,EAAuB;IAErB,OAAO,KAAKxC,UAAL,CAAgBltC,MAAhB,IAA0B,KAAK2vC,WAAtC,EAAmD;MACjD,KAAK1O,OAAL;IADiD;IAInD,KAAKnM,GAAL,CAASmM,OAAT;IAEA,IAAI,KAAK0N,iBAAT,EAA4B;MAC1B,KAAK7Z,GAAL,GAAW,KAAK8Z,YAAhB;MACA,KAAK9Z,GAAL,CAAS2I,IAAT;MACA,KAAK3I,GAAL,CAAS2C,YAAT,CAAsB,CAAtB,EAAyB,CAAzB,EAA4B,CAA5B,EAA+B,CAA/B,EAAkC,CAAlC,EAAqC,CAArC;MACA,KAAK3C,GAAL,CAAS8P,SAAT,CAAmB,KAAK+J,iBAAxB,EAA2C,CAA3C,EAA8C,CAA9C;MACA,KAAK7Z,GAAL,CAASmM,OAAT;MACA,KAAK0N,iBAAL,GAAyB,IAAzB;IAN0B;EARP;EAkBvBjc,WAAA,EAAa;IACX,KAAK,CAAAgd,mBAAL;IAEA,KAAK7Y,cAAL,CAAoBtoB,KAApB;IACA,KAAKw/B,cAAL,CAAoBx/B,KAApB;IAEA,WAAW80B,KAAX,IAAoB,KAAKgL,iBAAL,CAAuBzoC,MAAvB,EAApB,EAAqD;MACnD,WAAW2O,MAAX,IAAqB8uB,KAAA,CAAMz9B,MAAN,EAArB,EAAqC;QACnC,IACE,OAAOgqC,iBAAP,KAA6B,WAA7B,IACAr7B,MAAA,YAAkBq7B,iBAFpB,EAGE;UACAr7B,MAAA,CAAOpf,KAAP,GAAeof,MAAA,CAAOnf,MAAP,GAAgB,CAA/B;QADA;MAJiC;MAQrCiuC,KAAA,CAAM90B,KAAN;IATmD;IAWrD,KAAK8/B,iBAAL,CAAuB9/B,KAAvB;IACA,KAAK,CAAAshC,UAAL;EAlBW;EAqBb,CAAAA,WAAA,EAAc;IACZ,IAAI,KAAKjqB,UAAT,EAAqB;MACnB,MAAMkqB,WAAA,GAAc,KAAKpzB,aAAL,CAAmB0W,YAAnB,CAClB,KAAKxN,UAAL,CAAgBmqB,UADE,EAElB,KAAKnqB,UAAL,CAAgBF,UAFE,CAApB;MAIA,IAAIoqB,WAAA,KAAgB,MAApB,EAA4B;QAC1B,MAAME,WAAA,GAAc,KAAKlb,GAAL,CAAShnB,MAA7B;QACA,KAAKgnB,GAAL,CAAShnB,MAAT,GAAkBgiC,WAAlB;QACA,KAAKhb,GAAL,CAAS8P,SAAT,CAAmB,KAAK9P,GAAL,CAASvgB,MAA5B,EAAoC,CAApC,EAAuC,CAAvC;QACA,KAAKugB,GAAL,CAAShnB,MAAT,GAAkBkiC,WAAlB;MAJ0B;IALT;EADT;EAedC,YAAYC,GAAZ,EAAiBC,gBAAjB,EAAmC;IAIjC,MAAMh7C,KAAA,GAAQ+6C,GAAA,CAAI/6C,KAAlB;IACA,MAAMC,MAAA,GAAS86C,GAAA,CAAI96C,MAAnB;IACA,IAAIg7C,UAAA,GAAa5+C,IAAA,CAAKE,GAAL,CACfF,IAAA,CAAKqzC,KAAL,CAAWsL,gBAAA,CAAiB,CAAjB,CAAX,EAAgCA,gBAAA,CAAiB,CAAjB,CAAhC,CADe,EAEf,CAFe,CAAjB;IAIA,IAAIE,WAAA,GAAc7+C,IAAA,CAAKE,GAAL,CAChBF,IAAA,CAAKqzC,KAAL,CAAWsL,gBAAA,CAAiB,CAAjB,CAAX,EAAgCA,gBAAA,CAAiB,CAAjB,CAAhC,CADgB,EAEhB,CAFgB,CAAlB;IAKA,IAAIG,UAAA,GAAan7C,KAAjB;MACEo7C,WAAA,GAAcn7C,MADhB;IAEA,IAAIo7C,WAAA,GAAc,WAAlB;IACA,IAAI5Z,SAAJ,EAAeG,MAAf;IACA,OACGqZ,UAAA,GAAa,CAAb,IAAkBE,UAAA,GAAa,CAAhC,IACCD,WAAA,GAAc,CAAd,IAAmBE,WAAA,GAAc,CAFpC,EAGE;MACA,IAAIE,QAAA,GAAWH,UAAf;QACEI,SAAA,GAAYH,WADd;MAEA,IAAIH,UAAA,GAAa,CAAb,IAAkBE,UAAA,GAAa,CAAnC,EAAsC;QAIpCG,QAAA,GACEH,UAAA,IAAc,KAAd,GACI9+C,IAAA,CAAKC,KAAL,CAAW6+C,UAAA,GAAa,CAAxB,IAA6B,CAA7B,IAAkC,CADtC,GAEI9+C,IAAA,CAAKmlC,IAAL,CAAU2Z,UAAA,GAAa,CAAvB,CAHN;QAIAF,UAAA,IAAcE,UAAA,GAAaG,QAA3B;MARoC;MAUtC,IAAIJ,WAAA,GAAc,CAAd,IAAmBE,WAAA,GAAc,CAArC,EAAwC;QAEtCG,SAAA,GACEH,WAAA,IAAe,KAAf,GACI/+C,IAAA,CAAKC,KAAL,CAAW8+C,WAAA,GAAc,CAAzB,IAA8B,CAA9B,IAAmC,CADvC,GAEI/+C,IAAA,CAAKmlC,IAAL,CAAU4Z,WAAV,IAAyB,CAH/B;QAIAF,WAAA,IAAeE,WAAA,GAAcG,SAA7B;MANsC;MAQxC9Z,SAAA,GAAY,KAAKC,cAAL,CAAoBC,SAApB,CACV0Z,WADU,EAEVC,QAFU,EAGVC,SAHU,CAAZ;MAKA3Z,MAAA,GAASH,SAAA,CAAUzgB,OAAnB;MACA4gB,MAAA,CAAOC,SAAP,CAAiB,CAAjB,EAAoB,CAApB,EAAuByZ,QAAvB,EAAiCC,SAAjC;MACA3Z,MAAA,CAAO6N,SAAP,CACEsL,GADF,EAEE,CAFF,EAGE,CAHF,EAIEI,UAJF,EAKEC,WALF,EAME,CANF,EAOE,CAPF,EAQEE,QARF,EASEC,SATF;MAWAR,GAAA,GAAMtZ,SAAA,CAAUriB,MAAhB;MACA+7B,UAAA,GAAaG,QAAb;MACAF,WAAA,GAAcG,SAAd;MACAF,WAAA,GAAcA,WAAA,KAAgB,WAAhB,GAA8B,WAA9B,GAA4C,WAA1D;IA1CA;IA4CF,OAAO;MACLN,GADK;MAELI,UAFK;MAGLC;IAHK,CAAP;EAlEiC;EAyEnCI,kBAAkBT,GAAlB,EAAuB;IACrB,MAAMpb,GAAA,GAAM,KAAKA,GAAjB;IACA,MAAM;MAAE3/B,KAAF;MAASC;IAAT,IAAoB86C,GAA1B;IACA,MAAM1xC,SAAA,GAAY,KAAKi4B,OAAL,CAAaj4B,SAA/B;IACA,MAAMoyC,aAAA,GAAgB,KAAKna,OAAL,CAAaoQ,WAAnC;IACA,MAAMgK,gBAAA,GAAmBrc,qCAAA,CAAoBM,GAApB,CAAzB;IAEA,IAAIuO,KAAJ,EAAWrd,QAAX,EAAqB8qB,MAArB,EAA6BC,UAA7B;IACA,IAAK,CAAAb,GAAA,CAAI35B,MAAJ,IAAc25B,GAAA,CAAIz6C,IAAlB,KAA2By6C,GAAA,CAAI3K,KAAJ,GAAY,CAA5C,EAA+C;MAC7C,MAAMyL,OAAA,GAAUd,GAAA,CAAI35B,MAAJ,IAAc25B,GAAA,CAAIz6C,IAAJ,CAASypB,MAAvC;MAOA8G,QAAA,GAAWvf,IAAA,CAAKC,SAAL,CACTkqC,aAAA,GACIC,gBADJ,GAEI,CAACA,gBAAA,CAAiBl9C,KAAjB,CAAuB,CAAvB,EAA0B,CAA1B,CAAD,EAA+B6K,SAA/B,CAHK,CAAX;MAMA6kC,KAAA,GAAQ,KAAKgL,iBAAL,CAAuBnpC,GAAvB,CAA2B8rC,OAA3B,CAAR;MACA,IAAI,CAAC3N,KAAL,EAAY;QACVA,KAAA,GAAQ,IAAIp+B,GAAJ,EAAR;QACA,KAAKopC,iBAAL,CAAuBl6B,GAAvB,CAA2B68B,OAA3B,EAAoC3N,KAApC;MAFU;MAIZ,MAAM4N,WAAA,GAAc5N,KAAA,CAAMn+B,GAAN,CAAU8gB,QAAV,CAApB;MACA,IAAIirB,WAAA,IAAe,CAACL,aAApB,EAAmC;QACjC,MAAMhsB,OAAA,GAAUpzB,IAAA,CAAKsX,KAAL,CACdtX,IAAA,CAAKG,GAAL,CAASk/C,gBAAA,CAAiB,CAAjB,CAAT,EAA8BA,gBAAA,CAAiB,CAAjB,CAA9B,IACEA,gBAAA,CAAiB,CAAjB,CAFY,CAAhB;QAIA,MAAMhsB,OAAA,GAAUrzB,IAAA,CAAKsX,KAAL,CACdtX,IAAA,CAAKG,GAAL,CAASk/C,gBAAA,CAAiB,CAAjB,CAAT,EAA8BA,gBAAA,CAAiB,CAAjB,CAA9B,IACEA,gBAAA,CAAiB,CAAjB,CAFY,CAAhB;QAIA,OAAO;UACLt8B,MAAA,EAAQ08B,WADH;UAELrsB,OAFK;UAGLC;QAHK,CAAP;MATiC;MAenCisB,MAAA,GAASG,WAAT;IAnC6C;IAsC/C,IAAI,CAACH,MAAL,EAAa;MACXC,UAAA,GAAa,KAAKla,cAAL,CAAoBC,SAApB,CAA8B,YAA9B,EAA4C3hC,KAA5C,EAAmDC,MAAnD,CAAb;MACAo0C,kBAAA,CAAmBuH,UAAA,CAAW56B,OAA9B,EAAuC+5B,GAAvC;IAFW;IAUb,IAAIgB,YAAA,GAAe78C,SAAA,CAAKoxB,SAAL,CAAeorB,gBAAf,EAAiC,CAClD,IAAI17C,KAD8C,EAElD,CAFkD,EAGlD,CAHkD,EAIlD,CAAC,CAAD,GAAKC,MAJ6C,EAKlD,CALkD,EAMlD,CANkD,CAAjC,CAAnB;IAQA87C,YAAA,GAAe78C,SAAA,CAAKoxB,SAAL,CAAeyrB,YAAf,EAA6B,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAC97C,MAAjB,CAA7B,CAAf;IACA,MAAM,CAACmyC,IAAD,EAAOhO,IAAP,EAAaiO,IAAb,EAAmBhO,IAAnB,IAA2BnlC,SAAA,CAAK88C,0BAAL,CAC/B,CAAC,CAAD,EAAI,CAAJ,EAAOh8C,KAAP,EAAcC,MAAd,CAD+B,EAE/B87C,YAF+B,CAAjC;IAIA,MAAME,UAAA,GAAa5/C,IAAA,CAAKsX,KAAL,CAAW0+B,IAAA,GAAOD,IAAlB,KAA2B,CAA9C;IACA,MAAM8J,WAAA,GAAc7/C,IAAA,CAAKsX,KAAL,CAAW0wB,IAAA,GAAOD,IAAlB,KAA2B,CAA/C;IACA,MAAM+X,UAAA,GAAa,KAAKza,cAAL,CAAoBC,SAApB,CACjB,YADiB,EAEjBsa,UAFiB,EAGjBC,WAHiB,CAAnB;IAKA,MAAME,OAAA,GAAUD,UAAA,CAAWn7B,OAA3B;IAMA,MAAMyO,OAAA,GAAU2iB,IAAhB;IACA,MAAM1iB,OAAA,GAAU0U,IAAhB;IACAgY,OAAA,CAAQra,SAAR,CAAkB,CAACtS,OAAnB,EAA4B,CAACC,OAA7B;IACA0sB,OAAA,CAAQ9rB,SAAR,CAAkB,GAAGyrB,YAArB;IAEA,IAAI,CAACJ,MAAL,EAAa;MAEXA,MAAA,GAAS,KAAKb,WAAL,CACPc,UAAA,CAAWx8B,MADJ,EAEP4rB,4CAAA,CAA2BoR,OAA3B,CAFO,CAAT;MAIAT,MAAA,GAASA,MAAA,CAAOZ,GAAhB;MACA,IAAI7M,KAAA,IAASuN,aAAb,EAA4B;QAC1BvN,KAAA,CAAMlvB,GAAN,CAAU6R,QAAV,EAAoB8qB,MAApB;MAD0B;IAPjB;IAYbS,OAAA,CAAQC,qBAAR,GAAgClF,wBAAA,CAC9B9X,qCAAA,CAAoB+c,OAApB,CAD8B,EAE9BrB,GAAA,CAAI3D,WAF0B,CAAhC;IAKAhJ,wBAAA,CACEgO,OADF,EAEET,MAFF,EAGE,CAHF,EAIE,CAJF,EAKEA,MAAA,CAAO37C,KALT,EAME27C,MAAA,CAAO17C,MANT,EAOE,CAPF,EAQE,CARF,EASED,KATF,EAUEC,MAVF;IAYAm8C,OAAA,CAAQjH,wBAAR,GAAmC,WAAnC;IAEA,MAAMjU,OAAA,GAAUhiC,SAAA,CAAKoxB,SAAL,CAAe0a,4CAAA,CAA2BoR,OAA3B,CAAf,EAAoD,CAClE,CADkE,EAElE,CAFkE,EAGlE,CAHkE,EAIlE,CAJkE,EAKlE,CAAC3sB,OALiE,EAMlE,CAACC,OANiE,CAApD,CAAhB;IAQA0sB,OAAA,CAAQna,SAAR,GAAoBwZ,aAAA,GAChBpyC,SAAA,CAAU42B,UAAV,CAAqBN,GAArB,EAA0B,IAA1B,EAAgCuB,OAAhC,EAAyC5B,QAAA,CAASC,IAAlD,CADgB,GAEhBl2B,SAFJ;IAIA+yC,OAAA,CAAQ7C,QAAR,CAAiB,CAAjB,EAAoB,CAApB,EAAuBv5C,KAAvB,EAA8BC,MAA9B;IAEA,IAAIiuC,KAAA,IAAS,CAACuN,aAAd,EAA6B;MAG3B,KAAK/Z,cAAL,CAAoBrhB,MAApB,CAA2B,YAA3B;MACA6tB,KAAA,CAAMlvB,GAAN,CAAU6R,QAAV,EAAoBsrB,UAAA,CAAW/8B,MAA/B;IAJ2B;IAQ7B,OAAO;MACLA,MAAA,EAAQ+8B,UAAA,CAAW/8B,MADd;MAELqQ,OAAA,EAASpzB,IAAA,CAAKsX,KAAL,CAAW8b,OAAX,CAFJ;MAGLC,OAAA,EAASrzB,IAAA,CAAKsX,KAAL,CAAW+b,OAAX;IAHJ,CAAP;EA5IqB;EAoJvB4sB,aAAat8C,KAAb,EAAoB;IAClB,IAAIA,KAAA,KAAU,KAAKshC,OAAL,CAAasQ,SAA3B,EAAsC;MACpC,KAAKoH,uBAAL,CAA6B,CAA7B,IAAkC,CAAC,CAAnC;IADoC;IAGtC,KAAK1X,OAAL,CAAasQ,SAAb,GAAyB5xC,KAAzB;IACA,KAAK2/B,GAAL,CAASiS,SAAT,GAAqB5xC,KAArB;EALkB;EAQpBu8C,WAAWh3C,KAAX,EAAkB;IAChB,KAAKo6B,GAAL,CAASqV,OAAT,GAAmByC,eAAA,CAAgBlyC,KAAhB,CAAnB;EADgB;EAIlBi3C,YAAYj3C,KAAZ,EAAmB;IACjB,KAAKo6B,GAAL,CAASsV,QAAT,GAAoByC,gBAAA,CAAiBnyC,KAAjB,CAApB;EADiB;EAInBk3C,cAAcC,KAAd,EAAqB;IACnB,KAAK/c,GAAL,CAASuV,UAAT,GAAsBwH,KAAtB;EADmB;EAIrBC,QAAQC,SAAR,EAAmBC,SAAnB,EAA8B;IAC5B,MAAMld,GAAA,GAAM,KAAKA,GAAjB;IACA,IAAIA,GAAA,CAAI+U,WAAJ,KAAoB9+B,SAAxB,EAAmC;MACjC+pB,GAAA,CAAI+U,WAAJ,CAAgBkI,SAAhB;MACAjd,GAAA,CAAIiV,cAAJ,GAAqBiI,SAArB;IAFiC;EAFP;EAQ9BC,mBAAmBlhC,MAAnB,EAA2B;EAI3BmhC,YAAYC,QAAZ,EAAsB;EAItBC,UAAUC,MAAV,EAAkB;IAChB,WAAW,CAAC1oC,GAAD,EAAM1D,KAAN,CAAX,IAA2BosC,MAA3B,EAAmC;MACjC,QAAQ1oC,GAAR;QACE,KAAK,IAAL;UACE,KAAK8nC,YAAL,CAAkBxrC,KAAlB;UACA;QACF,KAAK,IAAL;UACE,KAAKyrC,UAAL,CAAgBzrC,KAAhB;UACA;QACF,KAAK,IAAL;UACE,KAAK0rC,WAAL,CAAiB1rC,KAAjB;UACA;QACF,KAAK,IAAL;UACE,KAAK2rC,aAAL,CAAmB3rC,KAAnB;UACA;QACF,KAAK,GAAL;UACE,KAAK6rC,OAAL,CAAa7rC,KAAA,CAAM,CAAN,CAAb,EAAuBA,KAAA,CAAM,CAAN,CAAvB;UACA;QACF,KAAK,IAAL;UACE,KAAKgsC,kBAAL,CAAwBhsC,KAAxB;UACA;QACF,KAAK,IAAL;UACE,KAAKisC,WAAL,CAAiBjsC,KAAjB;UACA;QACF,KAAK,MAAL;UACE,KAAKqsC,OAAL,CAAarsC,KAAA,CAAM,CAAN,CAAb,EAAuBA,KAAA,CAAM,CAAN,CAAvB;UACA;QACF,KAAK,IAAL;UACE,KAAKwwB,OAAL,CAAaqQ,WAAb,GAA2B7gC,KAA3B;UACA;QACF,KAAK,IAAL;UACE,KAAKwwB,OAAL,CAAaxjB,SAAb,GAAyBhN,KAAzB;UACA,KAAK6uB,GAAL,CAASoV,WAAT,GAAuBjkC,KAAvB;UACA;QACF,KAAK,IAAL;UACE,KAAK6uB,GAAL,CAASwV,wBAAT,GAAoCrkC,KAApC;UACA;QACF,KAAK,OAAL;UACE,KAAKwwB,OAAL,CAAauQ,WAAb,GAA2B/gC,KAAA,GAAQ,KAAK2nC,SAAb,GAAyB,IAApD;UACA,KAAKA,SAAL,GAAiB,IAAjB;UACA,KAAK2E,eAAL;UACA;QACF,KAAK,IAAL;UACE,KAAKzd,GAAL,CAAShnB,MAAT,GAAkB,KAAK2oB,OAAL,CAAawQ,YAAb,GAChB,KAAKvqB,aAAL,CAAmBwW,SAAnB,CAA6BjtB,KAA7B,CADF;UAEA;MA3CJ;IADiC;EADnB;EAkDlB,IAAI0pC,WAAJA,CAAA,EAAkB;IAChB,OAAO,CAAC,CAAC,KAAK9B,YAAd;EADgB;EAIlB0E,gBAAA,EAAkB;IAChB,MAAM5C,WAAA,GAAc,KAAKA,WAAzB;IACA,IAAI,KAAKlZ,OAAL,CAAauQ,WAAb,IAA4B,CAAC2I,WAAjC,EAA8C;MAC5C,KAAK6C,cAAL;IAD4C,CAA9C,MAEO,IAAI,CAAC,KAAK/b,OAAL,CAAauQ,WAAd,IAA6B2I,WAAjC,EAA8C;MACnD,KAAK8C,YAAL;IADmD;EAJrC;EAmBlBD,eAAA,EAAiB;IACf,IAAI,KAAK7C,WAAT,EAAsB;MACpB,MAAM,IAAI71B,KAAJ,CAAU,mDAAV,CAAN;IADoB;IAGtB,MAAMs3B,UAAA,GAAa,KAAKtc,GAAL,CAASvgB,MAAT,CAAgBpf,KAAnC;IACA,MAAMk8C,WAAA,GAAc,KAAKvc,GAAL,CAASvgB,MAAT,CAAgBnf,MAApC;IACA,MAAMs9C,OAAA,GAAU,iBAAiB,KAAKvV,UAAtC;IACA,MAAMwV,aAAA,GAAgB,KAAK9b,cAAL,CAAoBC,SAApB,CACpB4b,OADoB,EAEpBtB,UAFoB,EAGpBC,WAHoB,CAAtB;IAKA,KAAKxD,YAAL,GAAoB,KAAK/Y,GAAzB;IACA,KAAKA,GAAL,GAAW6d,aAAA,CAAcx8B,OAAzB;IACA,MAAM2e,GAAA,GAAM,KAAKA,GAAjB;IACAA,GAAA,CAAI2C,YAAJ,CAAiB,GAAGjD,qCAAA,CAAoB,KAAKqZ,YAAzB,CAApB;IACApE,YAAA,CAAa,KAAKoE,YAAlB,EAAgC/Y,GAAhC;IACA8L,uBAAA,CAAwB9L,GAAxB,EAA6B,KAAK+Y,YAAlC;IAEA,KAAKuE,SAAL,CAAe,CACb,CAAC,IAAD,EAAO,aAAP,CADa,EAEb,CAAC,IAAD,EAAO,CAAP,CAFa,EAGb,CAAC,IAAD,EAAO,CAAP,CAHa,CAAf;EAnBe;EA0BjBK,aAAA,EAAe;IACb,IAAI,CAAC,KAAK9C,WAAV,EAAuB;MACrB,MAAM,IAAI71B,KAAJ,CAAU,6CAAV,CAAN;IADqB;IAKvB,KAAKgb,GAAL,CAASgM,gBAAT;IACA2I,YAAA,CAAa,KAAK3U,GAAlB,EAAuB,KAAK+Y,YAA5B;IACA,KAAK/Y,GAAL,GAAW,KAAK+Y,YAAhB;IAEA,KAAKA,YAAL,GAAoB,IAApB;EAVa;EAaf+E,QAAQC,QAAR,EAAkB;IAChB,IAAI,CAAC,KAAKpc,OAAL,CAAauQ,WAAlB,EAA+B;MAC7B;IAD6B;IAI/B,IAAI,CAAC6L,QAAL,EAAe;MACbA,QAAA,GAAW,CAAC,CAAD,EAAI,CAAJ,EAAO,KAAK/d,GAAL,CAASvgB,MAAT,CAAgBpf,KAAvB,EAA8B,KAAK2/B,GAAL,CAASvgB,MAAT,CAAgBnf,MAA9C,CAAX;IADa,CAAf,MAEO;MACLy9C,QAAA,CAAS,CAAT,IAAcrhD,IAAA,CAAKC,KAAL,CAAWohD,QAAA,CAAS,CAAT,CAAX,CAAd;MACAA,QAAA,CAAS,CAAT,IAAcrhD,IAAA,CAAKC,KAAL,CAAWohD,QAAA,CAAS,CAAT,CAAX,CAAd;MACAA,QAAA,CAAS,CAAT,IAAcrhD,IAAA,CAAKmlC,IAAL,CAAUkc,QAAA,CAAS,CAAT,CAAV,CAAd;MACAA,QAAA,CAAS,CAAT,IAAcrhD,IAAA,CAAKmlC,IAAL,CAAUkc,QAAA,CAAS,CAAT,CAAV,CAAd;IAJK;IAMP,MAAM3G,KAAA,GAAQ,KAAKzV,OAAL,CAAauQ,WAA3B;IACA,MAAM6G,YAAA,GAAe,KAAKA,YAA1B;IAEA5B,YAAA,CAAa4B,YAAb,EAA2B3B,KAA3B,EAAkC,KAAKpX,GAAvC,EAA4C+d,QAA5C;IAGA,KAAK/d,GAAL,CAAS2I,IAAT;IACA,KAAK3I,GAAL,CAAS2C,YAAT,CAAsB,CAAtB,EAAyB,CAAzB,EAA4B,CAA5B,EAA+B,CAA/B,EAAkC,CAAlC,EAAqC,CAArC;IACA,KAAK3C,GAAL,CAASkC,SAAT,CAAmB,CAAnB,EAAsB,CAAtB,EAAyB,KAAKlC,GAAL,CAASvgB,MAAT,CAAgBpf,KAAzC,EAAgD,KAAK2/B,GAAL,CAASvgB,MAAT,CAAgBnf,MAAhE;IACA,KAAK0/B,GAAL,CAASmM,OAAT;EAtBgB;EAyBlBxD,KAAA,EAAO;IACL,IAAI,KAAKkS,WAAT,EAAsB;MAIpBlG,YAAA,CAAa,KAAK3U,GAAlB,EAAuB,KAAK+Y,YAA5B;MAGA,KAAKA,YAAL,CAAkBpQ,IAAlB;IAPoB,CAAtB,MAQO;MACL,KAAK3I,GAAL,CAAS2I,IAAT;IADK;IAGP,MAAMqV,GAAA,GAAM,KAAKrc,OAAjB;IACA,KAAKyW,UAAL,CAAgBtsC,IAAhB,CAAqBkyC,GAArB;IACA,KAAKrc,OAAL,GAAeqc,GAAA,CAAIr8B,KAAJ,EAAf;EAdK;EAiBPwqB,QAAA,EAAU;IACR,IAAI,KAAKiM,UAAL,CAAgBltC,MAAhB,KAA2B,CAA3B,IAAgC,KAAK2vC,WAAzC,EAAsD;MACpD,KAAK8C,YAAL;IADoD;IAGtD,IAAI,KAAKvF,UAAL,CAAgBltC,MAAhB,KAA2B,CAA/B,EAAkC;MAChC,KAAKy2B,OAAL,GAAe,KAAKyW,UAAL,CAAgB6F,GAAhB,EAAf;MACA,IAAI,KAAKpD,WAAT,EAAsB;QAGpB,KAAK9B,YAAL,CAAkB5M,OAAlB;QACAwI,YAAA,CAAa,KAAKoE,YAAlB,EAAgC,KAAK/Y,GAArC;MAJoB,CAAtB,MAKO;QACL,KAAKA,GAAL,CAASmM,OAAT;MADK;MAGP,KAAKsR,eAAL;MAGA,KAAKpF,WAAL,GAAmB,IAAnB;MAEA,KAAKgB,uBAAL,CAA6B,CAA7B,IAAkC,CAAC,CAAnC;MACA,KAAKC,0BAAL,GAAkC,IAAlC;IAhBgC;EAJ1B;EAwBV3oB,UAAUgd,CAAV,EAAa3vC,CAAb,EAAgBZ,CAAhB,EAAmBwwC,CAAnB,EAAsB1yB,CAAtB,EAAyB2yB,CAAzB,EAA4B;IAC1B,KAAK7N,GAAL,CAASrP,SAAT,CAAmBgd,CAAnB,EAAsB3vC,CAAtB,EAAyBZ,CAAzB,EAA4BwwC,CAA5B,EAA+B1yB,CAA/B,EAAkC2yB,CAAlC;IAEA,KAAKwL,uBAAL,CAA6B,CAA7B,IAAkC,CAAC,CAAnC;IACA,KAAKC,0BAAL,GAAkC,IAAlC;EAJ0B;EAQ5B4E,cAAcC,GAAd,EAAmBC,IAAnB,EAAyBvL,MAAzB,EAAiC;IAC/B,MAAM7S,GAAA,GAAM,KAAKA,GAAjB;IACA,MAAM2B,OAAA,GAAU,KAAKA,OAArB;IACA,IAAI1kC,CAAA,GAAI0kC,OAAA,CAAQ1kC,CAAhB;MACEI,CAAA,GAAIskC,OAAA,CAAQtkC,CADd;IAEA,IAAIghD,MAAJ,EAAYC,MAAZ;IACA,MAAMvC,gBAAA,GAAmBrc,qCAAA,CAAoBM,GAApB,CAAzB;IAQA,MAAMue,eAAA,GACHxC,gBAAA,CAAiB,CAAjB,MAAwB,CAAxB,IAA6BA,gBAAA,CAAiB,CAAjB,MAAwB,CAAtD,IACCA,gBAAA,CAAiB,CAAjB,MAAwB,CAAxB,IAA6BA,gBAAA,CAAiB,CAAjB,MAAwB,CAFxD;IAGA,MAAMyC,eAAA,GAAkBD,eAAA,GAAkB1L,MAAA,CAAOh0C,KAAP,CAAa,CAAb,CAAlB,GAAoC,IAA5D;IAEA,KAAK,IAAIya,CAAA,GAAI,CAAR,EAAW+rB,CAAA,GAAI,CAAf,EAAkBvoB,EAAA,GAAKqhC,GAAA,CAAIjzC,MAA3B,EAAmCoO,CAAA,GAAIwD,EAA5C,EAAgDxD,CAAA,EAAhD,EAAqD;MACnD,QAAQ6kC,GAAA,CAAI7kC,CAAJ,IAAS,CAAjB;QACE,KAAK6xB,QAAA,CAAIsT,SAAT;UACExhD,CAAA,GAAImhD,IAAA,CAAK/Y,CAAA,EAAL,CAAJ;UACAhoC,CAAA,GAAI+gD,IAAA,CAAK/Y,CAAA,EAAL,CAAJ;UACA,MAAMhlC,KAAA,GAAQ+9C,IAAA,CAAK/Y,CAAA,EAAL,CAAd;UACA,MAAM/kC,MAAA,GAAS89C,IAAA,CAAK/Y,CAAA,EAAL,CAAf;UAEA,MAAMqZ,EAAA,GAAKzhD,CAAA,GAAIoD,KAAf;UACA,MAAMs+C,EAAA,GAAKthD,CAAA,GAAIiD,MAAf;UACA0/B,GAAA,CAAI6M,MAAJ,CAAW5vC,CAAX,EAAcI,CAAd;UACA,IAAIgD,KAAA,KAAU,CAAV,IAAeC,MAAA,KAAW,CAA9B,EAAiC;YAC/B0/B,GAAA,CAAI+M,MAAJ,CAAW2R,EAAX,EAAeC,EAAf;UAD+B,CAAjC,MAEO;YACL3e,GAAA,CAAI+M,MAAJ,CAAW2R,EAAX,EAAerhD,CAAf;YACA2iC,GAAA,CAAI+M,MAAJ,CAAW2R,EAAX,EAAeC,EAAf;YACA3e,GAAA,CAAI+M,MAAJ,CAAW9vC,CAAX,EAAc0hD,EAAd;UAHK;UAKP,IAAI,CAACJ,eAAL,EAAsB;YACpB5c,OAAA,CAAQuH,gBAAR,CAAyB6S,gBAAzB,EAA2C,CAAC9+C,CAAD,EAAII,CAAJ,EAAOqhD,EAAP,EAAWC,EAAX,CAA3C;UADoB;UAGtB3e,GAAA,CAAIoN,SAAJ;UACA;QACF,KAAKjC,QAAA,CAAI0B,MAAT;UACE5vC,CAAA,GAAImhD,IAAA,CAAK/Y,CAAA,EAAL,CAAJ;UACAhoC,CAAA,GAAI+gD,IAAA,CAAK/Y,CAAA,EAAL,CAAJ;UACArF,GAAA,CAAI6M,MAAJ,CAAW5vC,CAAX,EAAcI,CAAd;UACA,IAAI,CAACkhD,eAAL,EAAsB;YACpB5c,OAAA,CAAQ4Q,gBAAR,CAAyBwJ,gBAAzB,EAA2C9+C,CAA3C,EAA8CI,CAA9C;UADoB;UAGtB;QACF,KAAK8tC,QAAA,CAAI4B,MAAT;UACE9vC,CAAA,GAAImhD,IAAA,CAAK/Y,CAAA,EAAL,CAAJ;UACAhoC,CAAA,GAAI+gD,IAAA,CAAK/Y,CAAA,EAAL,CAAJ;UACArF,GAAA,CAAI+M,MAAJ,CAAW9vC,CAAX,EAAcI,CAAd;UACA,IAAI,CAACkhD,eAAL,EAAsB;YACpB5c,OAAA,CAAQ4Q,gBAAR,CAAyBwJ,gBAAzB,EAA2C9+C,CAA3C,EAA8CI,CAA9C;UADoB;UAGtB;QACF,KAAK8tC,QAAA,CAAIyT,OAAT;UACEP,MAAA,GAASphD,CAAT;UACAqhD,MAAA,GAASjhD,CAAT;UACAJ,CAAA,GAAImhD,IAAA,CAAK/Y,CAAA,GAAI,CAAT,CAAJ;UACAhoC,CAAA,GAAI+gD,IAAA,CAAK/Y,CAAA,GAAI,CAAT,CAAJ;UACArF,GAAA,CAAIiN,aAAJ,CACEmR,IAAA,CAAK/Y,CAAL,CADF,EAEE+Y,IAAA,CAAK/Y,CAAA,GAAI,CAAT,CAFF,EAGE+Y,IAAA,CAAK/Y,CAAA,GAAI,CAAT,CAHF,EAIE+Y,IAAA,CAAK/Y,CAAA,GAAI,CAAT,CAJF,EAKEpoC,CALF,EAMEI,CANF;UAQAskC,OAAA,CAAQoR,qBAAR,CACEgJ,gBADF,EAEEsC,MAFF,EAGEC,MAHF,EAIEF,IAAA,CAAK/Y,CAAL,CAJF,EAKE+Y,IAAA,CAAK/Y,CAAA,GAAI,CAAT,CALF,EAME+Y,IAAA,CAAK/Y,CAAA,GAAI,CAAT,CANF,EAOE+Y,IAAA,CAAK/Y,CAAA,GAAI,CAAT,CAPF,EAQEpoC,CARF,EASEI,CATF,EAUEmhD,eAVF;UAYAnZ,CAAA,IAAK,CAAL;UACA;QACF,KAAK8F,QAAA,CAAI0T,QAAT;UACER,MAAA,GAASphD,CAAT;UACAqhD,MAAA,GAASjhD,CAAT;UACA2iC,GAAA,CAAIiN,aAAJ,CACEhwC,CADF,EAEEI,CAFF,EAGE+gD,IAAA,CAAK/Y,CAAL,CAHF,EAIE+Y,IAAA,CAAK/Y,CAAA,GAAI,CAAT,CAJF,EAKE+Y,IAAA,CAAK/Y,CAAA,GAAI,CAAT,CALF,EAME+Y,IAAA,CAAK/Y,CAAA,GAAI,CAAT,CANF;UAQA1D,OAAA,CAAQoR,qBAAR,CACEgJ,gBADF,EAEEsC,MAFF,EAGEC,MAHF,EAIErhD,CAJF,EAKEI,CALF,EAME+gD,IAAA,CAAK/Y,CAAL,CANF,EAOE+Y,IAAA,CAAK/Y,CAAA,GAAI,CAAT,CAPF,EAQE+Y,IAAA,CAAK/Y,CAAA,GAAI,CAAT,CARF,EASE+Y,IAAA,CAAK/Y,CAAA,GAAI,CAAT,CATF,EAUEmZ,eAVF;UAYAvhD,CAAA,GAAImhD,IAAA,CAAK/Y,CAAA,GAAI,CAAT,CAAJ;UACAhoC,CAAA,GAAI+gD,IAAA,CAAK/Y,CAAA,GAAI,CAAT,CAAJ;UACAA,CAAA,IAAK,CAAL;UACA;QACF,KAAK8F,QAAA,CAAI2T,QAAT;UACET,MAAA,GAASphD,CAAT;UACAqhD,MAAA,GAASjhD,CAAT;UACAJ,CAAA,GAAImhD,IAAA,CAAK/Y,CAAA,GAAI,CAAT,CAAJ;UACAhoC,CAAA,GAAI+gD,IAAA,CAAK/Y,CAAA,GAAI,CAAT,CAAJ;UACArF,GAAA,CAAIiN,aAAJ,CAAkBmR,IAAA,CAAK/Y,CAAL,CAAlB,EAA2B+Y,IAAA,CAAK/Y,CAAA,GAAI,CAAT,CAA3B,EAAwCpoC,CAAxC,EAA2CI,CAA3C,EAA8CJ,CAA9C,EAAiDI,CAAjD;UACAskC,OAAA,CAAQoR,qBAAR,CACEgJ,gBADF,EAEEsC,MAFF,EAGEC,MAHF,EAIEF,IAAA,CAAK/Y,CAAL,CAJF,EAKE+Y,IAAA,CAAK/Y,CAAA,GAAI,CAAT,CALF,EAMEpoC,CANF,EAOEI,CAPF,EAQEJ,CARF,EASEI,CATF,EAUEmhD,eAVF;UAYAnZ,CAAA,IAAK,CAAL;UACA;QACF,KAAK8F,QAAA,CAAIiC,SAAT;UACEpN,GAAA,CAAIoN,SAAJ;UACA;MAlHJ;IADmD;IAuHrD,IAAImR,eAAJ,EAAqB;MACnB5c,OAAA,CAAQiR,uBAAR,CAAgCmJ,gBAAhC,EAAkDyC,eAAlD;IADmB;IAIrB7c,OAAA,CAAQ2Q,eAAR,CAAwBr1C,CAAxB,EAA2BI,CAA3B;EA9I+B;EAiJjC+vC,UAAA,EAAY;IACV,KAAKpN,GAAL,CAASoN,SAAT;EADU;EAIZ2R,OAAOC,WAAA,GAAc,IAArB,EAA2B;IACzB,MAAMhf,GAAA,GAAM,KAAKA,GAAjB;IACA,MAAMn2B,WAAA,GAAc,KAAK83B,OAAL,CAAa93B,WAAjC;IAGAm2B,GAAA,CAAIoV,WAAJ,GAAkB,KAAKzT,OAAL,CAAaqQ,WAA/B;IACA,IAAI,KAAKgH,cAAT,EAAyB;MACvB,IAAI,OAAOnvC,WAAP,KAAuB,QAAvB,IAAmCA,WAAA,EAAay2B,UAApD,EAAgE;QAC9DN,GAAA,CAAI2I,IAAJ;QACA3I,GAAA,CAAIoJ,WAAJ,GAAkBv/B,WAAA,CAAYy2B,UAAZ,CAChBN,GADgB,EAEhB,IAFgB,EAGhBqL,4CAAA,CAA2BrL,GAA3B,CAHgB,EAIhBL,QAAA,CAASE,MAJO,CAAlB;QAMA,KAAKof,gBAAL,CAAwC,KAAxC;QACAjf,GAAA,CAAImM,OAAJ;MAT8D,CAAhE,MAUO;QACL,KAAK8S,gBAAL,CAAwC,IAAxC;MADK;IAXgB;IAezB,IAAID,WAAJ,EAAiB;MACf,KAAKA,WAAL,CAAiB,KAAKrd,OAAL,CAAaC,yBAAb,EAAjB;IADe;IAIjB5B,GAAA,CAAIoV,WAAJ,GAAkB,KAAKzT,OAAL,CAAaxjB,SAA/B;EAzByB;EA4B3B+gC,YAAA,EAAc;IACZ,KAAK9R,SAAL;IACA,KAAK2R,MAAL;EAFY;EAKdxc,KAAKyc,WAAA,GAAc,IAAnB,EAAyB;IACvB,MAAMhf,GAAA,GAAM,KAAKA,GAAjB;IACA,MAAMt2B,SAAA,GAAY,KAAKi4B,OAAL,CAAaj4B,SAA/B;IACA,MAAMoyC,aAAA,GAAgB,KAAKna,OAAL,CAAaoQ,WAAnC;IACA,IAAIoN,WAAA,GAAc,KAAlB;IAEA,IAAIrD,aAAJ,EAAmB;MACjB9b,GAAA,CAAI2I,IAAJ;MACA3I,GAAA,CAAIsC,SAAJ,GAAgB54B,SAAA,CAAU42B,UAAV,CACdN,GADc,EAEd,IAFc,EAGdqL,4CAAA,CAA2BrL,GAA3B,CAHc,EAIdL,QAAA,CAASC,IAJK,CAAhB;MAMAuf,WAAA,GAAc,IAAd;IARiB;IAWnB,MAAM9iC,SAAA,GAAY,KAAKslB,OAAL,CAAaC,yBAAb,EAAlB;IACA,IAAI,KAAKoX,cAAL,IAAuB38B,SAAA,KAAc,IAAzC,EAA+C;MAC7C,IAAI,KAAKi8B,aAAT,EAAwB;QACtBtY,GAAA,CAAIuC,IAAJ,CAAS,SAAT;QACA,KAAK+V,aAAL,GAAqB,KAArB;MAFsB,CAAxB,MAGO;QACLtY,GAAA,CAAIuC,IAAJ;MADK;IAJsC;IAS/C,IAAI4c,WAAJ,EAAiB;MACfnf,GAAA,CAAImM,OAAJ;IADe;IAGjB,IAAI6S,WAAJ,EAAiB;MACf,KAAKA,WAAL,CAAiB3iC,SAAjB;IADe;EA9BM;EAmCzB+iC,OAAA,EAAS;IACP,KAAK9G,aAAL,GAAqB,IAArB;IACA,KAAK/V,IAAL;EAFO;EAKT8c,WAAA,EAAa;IACX,KAAK9c,IAAL,CAAU,KAAV;IACA,KAAKwc,MAAL,CAAY,KAAZ;IAEA,KAAKC,WAAL;EAJW;EAObM,aAAA,EAAe;IACb,KAAKhH,aAAL,GAAqB,IAArB;IACA,KAAK+G,UAAL;EAFa;EAKfE,gBAAA,EAAkB;IAChB,KAAKnS,SAAL;IACA,KAAKiS,UAAL;EAFgB;EAKlBG,kBAAA,EAAoB;IAClB,KAAKlH,aAAL,GAAqB,IAArB;IACA,KAAKlL,SAAL;IACA,KAAKiS,UAAL;EAHkB;EAMpBlW,QAAA,EAAU;IACR,KAAK6V,WAAL;EADQ;EAKV5e,KAAA,EAAO;IACL,KAAKiY,WAAL,GAAmBL,WAAnB;EADK;EAIPyH,OAAA,EAAS;IACP,KAAKpH,WAAL,GAAmBJ,OAAnB;EADO;EAKTyH,UAAA,EAAY;IACV,KAAK/d,OAAL,CAAayP,UAAb,GAA0BlG,oBAA1B;IACA,KAAKvJ,OAAL,CAAa0P,eAAb,GAA+B,CAA/B;IACA,KAAK1P,OAAL,CAAa1kC,CAAb,GAAiB,KAAK0kC,OAAL,CAAa6P,KAAb,GAAqB,CAAtC;IACA,KAAK7P,OAAL,CAAatkC,CAAb,GAAiB,KAAKskC,OAAL,CAAa8P,KAAb,GAAqB,CAAtC;EAJU;EAOZkO,QAAA,EAAU;IACR,MAAMC,KAAA,GAAQ,KAAKC,gBAAnB;IACA,MAAM7f,GAAA,GAAM,KAAKA,GAAjB;IACA,IAAI4f,KAAA,KAAU3pC,SAAd,EAAyB;MACvB+pB,GAAA,CAAImC,SAAJ;MACA;IAFuB;IAKzBnC,GAAA,CAAI2I,IAAJ;IACA3I,GAAA,CAAImC,SAAJ;IACA,WAAW0O,IAAX,IAAmB+O,KAAnB,EAA0B;MACxB5f,GAAA,CAAI2C,YAAJ,CAAiB,GAAGkO,IAAA,CAAKlgB,SAAzB;MACAqP,GAAA,CAAIoC,SAAJ,CAAcyO,IAAA,CAAK5zC,CAAnB,EAAsB4zC,IAAA,CAAKxzC,CAA3B;MACAwzC,IAAA,CAAKiP,SAAL,CAAe9f,GAAf,EAAoB6Q,IAAA,CAAKj9B,QAAzB;IAHwB;IAK1BosB,GAAA,CAAImM,OAAJ;IACAnM,GAAA,CAAII,IAAJ;IACAJ,GAAA,CAAImC,SAAJ;IACA,OAAO,KAAK0d,gBAAZ;EAlBQ;EAqBVE,eAAeC,OAAf,EAAwB;IACtB,KAAKre,OAAL,CAAa+P,WAAb,GAA2BsO,OAA3B;EADsB;EAIxBC,eAAeD,OAAf,EAAwB;IACtB,KAAKre,OAAL,CAAagQ,WAAb,GAA2BqO,OAA3B;EADsB;EAIxBE,UAAUrwB,KAAV,EAAiB;IACf,KAAK8R,OAAL,CAAaiQ,UAAb,GAA0B/hB,KAAA,GAAQ,GAAlC;EADe;EAIjBswB,WAAW5O,OAAX,EAAoB;IAClB,KAAK5P,OAAL,CAAa4P,OAAb,GAAuB,CAACA,OAAxB;EADkB;EAIpBiM,QAAQ4C,WAAR,EAAqBnoC,IAArB,EAA2B;IACzB,MAAMooC,OAAA,GAAU,KAAKhxB,UAAL,CAAgBjf,GAAhB,CAAoBgwC,WAApB,CAAhB;IACA,MAAMze,OAAA,GAAU,KAAKA,OAArB;IAEA,IAAI,CAAC0e,OAAL,EAAc;MACZ,MAAM,IAAIr7B,KAAJ,CAAW,uBAAsBo7B,WAAvB,EAAV,CAAN;IADY;IAGdze,OAAA,CAAQ2P,UAAR,GAAqB+O,OAAA,CAAQ/O,UAAR,IAAsBrG,yBAA3C;IAIA,IAAItJ,OAAA,CAAQ2P,UAAR,CAAmB,CAAnB,MAA0B,CAA1B,IAA+B3P,OAAA,CAAQ2P,UAAR,CAAmB,CAAnB,MAA0B,CAA7D,EAAgE;MAC9D9xC,aAAA,CAAK,kCAAkC4gD,WAAvC;IAD8D;IAMhE,IAAInoC,IAAA,GAAO,CAAX,EAAc;MACZA,IAAA,GAAO,CAACA,IAAR;MACA0pB,OAAA,CAAQ2e,aAAR,GAAwB,CAAC,CAAzB;IAFY,CAAd,MAGO;MACL3e,OAAA,CAAQ2e,aAAR,GAAwB,CAAxB;IADK;IAIP,KAAK3e,OAAL,CAAatG,IAAb,GAAoBglB,OAApB;IACA,KAAK1e,OAAL,CAAa/tB,QAAb,GAAwBqE,IAAxB;IAEA,IAAIooC,OAAA,CAAQE,WAAZ,EAAyB;MACvB;IADuB;IAIzB,MAAMr2C,IAAA,GAAOm2C,OAAA,CAAQG,UAAR,IAAsB,YAAnC;IACA,MAAMC,QAAA,GACJJ,OAAA,CAAQK,cAAR,EAAwBC,GAAxB,IAAgC,IAAGz2C,IAAK,MAAKm2C,OAAA,CAAQO,YAAtB,EADjC;IAGA,IAAIC,IAAA,GAAO,QAAX;IACA,IAAIR,OAAA,CAAQrW,KAAZ,EAAmB;MACjB6W,IAAA,GAAO,KAAP;IADiB,CAAnB,MAEO,IAAIR,OAAA,CAAQQ,IAAZ,EAAkB;MACvBA,IAAA,GAAO,MAAP;IADuB;IAGzB,MAAMC,MAAA,GAAST,OAAA,CAAQS,MAAR,GAAiB,QAAjB,GAA4B,QAA3C;IAMA,IAAIC,eAAA,GAAkB9oC,IAAtB;IACA,IAAIA,IAAA,GAAOszB,aAAX,EAA0B;MACxBwV,eAAA,GAAkBxV,aAAlB;IADwB,CAA1B,MAEO,IAAItzB,IAAA,GAAOuzB,aAAX,EAA0B;MAC/BuV,eAAA,GAAkBvV,aAAlB;IAD+B;IAGjC,KAAK7J,OAAL,CAAawP,aAAb,GAA6Bl5B,IAAA,GAAO8oC,eAApC;IAEA,KAAK/gB,GAAL,CAAS3E,IAAT,GAAgB,GAAGylB,MAAO,IAAGD,IAAK,IAAGE,eAAgB,MAAKN,QAA1C,EAAhB;EAvDyB;EA0D3BO,qBAAqBlzC,IAArB,EAA2B;IACzB,KAAK6zB,OAAL,CAAakQ,iBAAb,GAAiC/jC,IAAjC;EADyB;EAI3BmzC,YAAYC,IAAZ,EAAkB;IAChB,KAAKvf,OAAL,CAAamQ,QAAb,GAAwBoP,IAAxB;EADgB;EAIlBC,SAASlkD,CAAT,EAAYI,CAAZ,EAAe;IACb,KAAKskC,OAAL,CAAa1kC,CAAb,GAAiB,KAAK0kC,OAAL,CAAa6P,KAAb,IAAsBv0C,CAAvC;IACA,KAAK0kC,OAAL,CAAatkC,CAAb,GAAiB,KAAKskC,OAAL,CAAa8P,KAAb,IAAsBp0C,CAAvC;EAFa;EAKf+jD,mBAAmBnkD,CAAnB,EAAsBI,CAAtB,EAAyB;IACvB,KAAK8iD,UAAL,CAAgB,CAAC9iD,CAAjB;IACA,KAAK8jD,QAAL,CAAclkD,CAAd,EAAiBI,CAAjB;EAFuB;EAKzBgkD,cAAc1T,CAAd,EAAiB3vC,CAAjB,EAAoBZ,CAApB,EAAuBwwC,CAAvB,EAA0B1yB,CAA1B,EAA6B2yB,CAA7B,EAAgC;IAC9B,KAAKlM,OAAL,CAAayP,UAAb,GAA0B,CAACzD,CAAD,EAAI3vC,CAAJ,EAAOZ,CAAP,EAAUwwC,CAAV,EAAa1yB,CAAb,EAAgB2yB,CAAhB,CAA1B;IACA,KAAKlM,OAAL,CAAa0P,eAAb,GAA+B30C,IAAA,CAAKqzC,KAAL,CAAWpC,CAAX,EAAc3vC,CAAd,CAA/B;IAEA,KAAK2jC,OAAL,CAAa1kC,CAAb,GAAiB,KAAK0kC,OAAL,CAAa6P,KAAb,GAAqB,CAAtC;IACA,KAAK7P,OAAL,CAAatkC,CAAb,GAAiB,KAAKskC,OAAL,CAAa8P,KAAb,GAAqB,CAAtC;EAL8B;EAQhC6P,SAAA,EAAW;IACT,KAAKH,QAAL,CAAc,CAAd,EAAiB,KAAKxf,OAAL,CAAa4P,OAA9B;EADS;EAIXgQ,UAAUC,SAAV,EAAqBvkD,CAArB,EAAwBI,CAAxB,EAA2BokD,gBAA3B,EAA6C;IAC3C,MAAMzhB,GAAA,GAAM,KAAKA,GAAjB;IACA,MAAM2B,OAAA,GAAU,KAAKA,OAArB;IACA,MAAMtG,IAAA,GAAOsG,OAAA,CAAQtG,IAArB;IACA,MAAMwW,iBAAA,GAAoBlQ,OAAA,CAAQkQ,iBAAlC;IACA,MAAMj+B,QAAA,GAAW+tB,OAAA,CAAQ/tB,QAAR,GAAmB+tB,OAAA,CAAQwP,aAA5C;IACA,MAAMuQ,cAAA,GACJ7P,iBAAA,GAAoBzG,sBAAA,CAAkBuW,gBADxC;IAEA,MAAMC,cAAA,GAAiB,CAAC,EACtB/P,iBAAA,GAAoBzG,sBAAA,CAAkByW,gBAAtC,CADF;IAGA,MAAM9P,WAAA,GAAcpQ,OAAA,CAAQoQ,WAAR,IAAuB,CAAC1W,IAAA,CAAKymB,WAAjD;IAEA,IAAIhC,SAAJ;IACA,IAAIzkB,IAAA,CAAKvU,eAAL,IAAwB86B,cAAxB,IAA0C7P,WAA9C,EAA2D;MACzD+N,SAAA,GAAYzkB,IAAA,CAAK0mB,gBAAL,CAAsB,KAAK1yB,UAA3B,EAAuCmyB,SAAvC,CAAZ;IADyD;IAI3D,IAAInmB,IAAA,CAAKvU,eAAL,IAAwBirB,WAA5B,EAAyC;MACvC/R,GAAA,CAAI2I,IAAJ;MACA3I,GAAA,CAAIoC,SAAJ,CAAcnlC,CAAd,EAAiBI,CAAjB;MACA2iC,GAAA,CAAImC,SAAJ;MACA2d,SAAA,CAAU9f,GAAV,EAAepsB,QAAf;MACA,IAAI6tC,gBAAJ,EAAsB;QACpBzhB,GAAA,CAAI2C,YAAJ,CAAiB,GAAG8e,gBAApB;MADoB;MAGtB,IACEC,cAAA,KAAmBtW,sBAAA,CAAkBxL,IAArC,IACA8hB,cAAA,KAAmBtW,sBAAA,CAAkB4W,WAFvC,EAGE;QACAhiB,GAAA,CAAIuC,IAAJ;MADA;MAGF,IACEmf,cAAA,KAAmBtW,sBAAA,CAAkBvL,MAArC,IACA6hB,cAAA,KAAmBtW,sBAAA,CAAkB4W,WAFvC,EAGE;QACAhiB,GAAA,CAAI+e,MAAJ;MADA;MAGF/e,GAAA,CAAImM,OAAJ;IApBuC,CAAzC,MAqBO;MACL,IACEuV,cAAA,KAAmBtW,sBAAA,CAAkBxL,IAArC,IACA8hB,cAAA,KAAmBtW,sBAAA,CAAkB4W,WAFvC,EAGE;QACAhiB,GAAA,CAAIiiB,QAAJ,CAAaT,SAAb,EAAwBvkD,CAAxB,EAA2BI,CAA3B;MADA;MAGF,IACEqkD,cAAA,KAAmBtW,sBAAA,CAAkBvL,MAArC,IACA6hB,cAAA,KAAmBtW,sBAAA,CAAkB4W,WAFvC,EAGE;QACAhiB,GAAA,CAAIkiB,UAAJ,CAAeV,SAAf,EAA0BvkD,CAA1B,EAA6BI,CAA7B;MADA;IAVG;IAeP,IAAIukD,cAAJ,EAAoB;MAClB,MAAMhC,KAAA,GAAS,KAAKC,gBAAL,KAA0B,EAAzC;MACAD,KAAA,CAAM9zC,IAAN,CAAW;QACT6kB,SAAA,EAAW+O,qCAAA,CAAoBM,GAApB,CADF;QAET/iC,CAFS;QAGTI,CAHS;QAITuW,QAJS;QAKTksC;MALS,CAAX;IAFkB;EAtDuB;EAkE7C,IAAIqC,uBAAJA,CAAA,EAA8B;IAG5B,MAAM;MAAE9gC,OAAA,EAAS2e;IAAX,IAAmB,KAAK+B,cAAL,CAAoBC,SAApB,CACvB,yBADuB,EAEvB,EAFuB,EAGvB,EAHuB,CAAzB;IAKAhC,GAAA,CAAInQ,KAAJ,CAAU,GAAV,EAAe,CAAf;IACAmQ,GAAA,CAAIiiB,QAAJ,CAAa,GAAb,EAAkB,CAAlB,EAAqB,EAArB;IACA,MAAMthD,IAAA,GAAOq/B,GAAA,CAAIkX,YAAJ,CAAiB,CAAjB,EAAoB,CAApB,EAAuB,EAAvB,EAA2B,EAA3B,EAA+Bv2C,IAA5C;IACA,IAAIy6B,OAAA,GAAU,KAAd;IACA,KAAK,IAAI9hB,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI3Y,IAAA,CAAKuK,MAAzB,EAAiCoO,CAAA,IAAK,CAAtC,EAAyC;MACvC,IAAI3Y,IAAA,CAAK2Y,CAAL,IAAU,CAAV,IAAe3Y,IAAA,CAAK2Y,CAAL,IAAU,GAA7B,EAAkC;QAChC8hB,OAAA,GAAU,IAAV;QACA;MAFgC;IADK;IAMzC,OAAO/7B,eAAA,CAAO,IAAP,EAAa,yBAAb,EAAwC+7B,OAAxC,CAAP;EAlB4B;EAqB9BgnB,SAASC,MAAT,EAAiB;IACf,MAAM1gB,OAAA,GAAU,KAAKA,OAArB;IACA,MAAMtG,IAAA,GAAOsG,OAAA,CAAQtG,IAArB;IACA,IAAIA,IAAA,CAAKklB,WAAT,EAAsB;MACpB,OAAO,KAAK+B,aAAL,CAAmBD,MAAnB,CAAP;IADoB;IAItB,MAAMzuC,QAAA,GAAW+tB,OAAA,CAAQ/tB,QAAzB;IACA,IAAIA,QAAA,KAAa,CAAjB,EAAoB;MAClB,OAAOqC,SAAP;IADkB;IAIpB,MAAM+pB,GAAA,GAAM,KAAKA,GAAjB;IACA,MAAMmR,aAAA,GAAgBxP,OAAA,CAAQwP,aAA9B;IACA,MAAMO,WAAA,GAAc/P,OAAA,CAAQ+P,WAA5B;IACA,MAAMC,WAAA,GAAchQ,OAAA,CAAQgQ,WAA5B;IACA,MAAM2O,aAAA,GAAgB3e,OAAA,CAAQ2e,aAA9B;IACA,MAAM1O,UAAA,GAAajQ,OAAA,CAAQiQ,UAAR,GAAqB0O,aAAxC;IACA,MAAMiC,YAAA,GAAeF,MAAA,CAAOn3C,MAA5B;IACA,MAAMs3C,QAAA,GAAWnnB,IAAA,CAAKmnB,QAAtB;IACA,MAAMC,UAAA,GAAaD,QAAA,GAAW,CAAX,GAAe,CAAC,CAAnC;IACA,MAAME,eAAA,GAAkBrnB,IAAA,CAAKqnB,eAA7B;IACA,MAAMC,iBAAA,GAAoB/uC,QAAA,GAAW+tB,OAAA,CAAQ2P,UAAR,CAAmB,CAAnB,CAArC;IAEA,MAAMsR,cAAA,GACJjhB,OAAA,CAAQkQ,iBAAR,KAA8BzG,sBAAA,CAAkBxL,IAAhD,IACA,CAACvE,IAAA,CAAKvU,eADN,IAEA,CAAC6a,OAAA,CAAQoQ,WAHX;IAKA/R,GAAA,CAAI2I,IAAJ;IACA3I,GAAA,CAAIrP,SAAJ,CAAc,GAAGgR,OAAA,CAAQyP,UAAzB;IACApR,GAAA,CAAIoC,SAAJ,CAAcT,OAAA,CAAQ1kC,CAAtB,EAAyB0kC,OAAA,CAAQtkC,CAAR,GAAYskC,OAAA,CAAQmQ,QAA7C;IAEA,IAAIwO,aAAA,GAAgB,CAApB,EAAuB;MACrBtgB,GAAA,CAAInQ,KAAJ,CAAU+hB,UAAV,EAAsB,CAAC,CAAvB;IADqB,CAAvB,MAEO;MACL5R,GAAA,CAAInQ,KAAJ,CAAU+hB,UAAV,EAAsB,CAAtB;IADK;IAIP,IAAI6P,gBAAJ;IACA,IAAI9f,OAAA,CAAQoQ,WAAZ,EAAyB;MACvB/R,GAAA,CAAI2I,IAAJ;MACA,MAAMlH,OAAA,GAAUE,OAAA,CAAQj4B,SAAR,CAAkB42B,UAAlB,CACdN,GADc,EAEd,IAFc,EAGdqL,4CAAA,CAA2BrL,GAA3B,CAHc,EAIdL,QAAA,CAASC,IAJK,CAAhB;MAMA6hB,gBAAA,GAAmB/hB,qCAAA,CAAoBM,GAApB,CAAnB;MACAA,GAAA,CAAImM,OAAJ;MACAnM,GAAA,CAAIsC,SAAJ,GAAgBb,OAAhB;IAVuB;IAazB,IAAIwQ,SAAA,GAAYtQ,OAAA,CAAQsQ,SAAxB;IACA,MAAMpiB,KAAA,GAAQ8R,OAAA,CAAQ0P,eAAtB;IACA,IAAIxhB,KAAA,KAAU,CAAV,IAAeoiB,SAAA,KAAc,CAAjC,EAAoC;MAClC,MAAMyP,cAAA,GACJ/f,OAAA,CAAQkQ,iBAAR,GAA4BzG,sBAAA,CAAkBuW,gBADhD;MAEA,IACED,cAAA,KAAmBtW,sBAAA,CAAkBvL,MAArC,IACA6hB,cAAA,KAAmBtW,sBAAA,CAAkB4W,WAFvC,EAGE;QACA/P,SAAA,GAAY,KAAK4Q,mBAAL,EAAZ;MADA;IANgC,CAApC,MASO;MACL5Q,SAAA,IAAapiB,KAAb;IADK;IAIP,IAAIshB,aAAA,KAAkB,GAAtB,EAA2B;MACzBnR,GAAA,CAAInQ,KAAJ,CAAUshB,aAAV,EAAyBA,aAAzB;MACAc,SAAA,IAAad,aAAb;IAFyB;IAK3BnR,GAAA,CAAIiS,SAAJ,GAAgBA,SAAhB;IAEA,IAAI5W,IAAA,CAAKynB,kBAAT,EAA6B;MAC3B,MAAMC,KAAA,GAAQ,EAAd;MACA,IAAI1iD,KAAA,GAAQ,CAAZ;MACA,WAAW2iD,KAAX,IAAoBX,MAApB,EAA4B;QAC1BU,KAAA,CAAMj3C,IAAN,CAAWk3C,KAAA,CAAMC,OAAjB;QACA5iD,KAAA,IAAS2iD,KAAA,CAAM3iD,KAAf;MAF0B;MAI5B2/B,GAAA,CAAIiiB,QAAJ,CAAac,KAAA,CAAM1kD,IAAN,CAAW,EAAX,CAAb,EAA6B,CAA7B,EAAgC,CAAhC;MACAsjC,OAAA,CAAQ1kC,CAAR,IAAaoD,KAAA,GAAQsiD,iBAAR,GAA4B/Q,UAAzC;MACA5R,GAAA,CAAImM,OAAJ;MACA,KAAK2R,OAAL;MAEA,OAAO7nC,SAAP;IAZ2B;IAe7B,IAAIhZ,CAAA,GAAI,CAAR;MACEqc,CADF;IAEA,KAAKA,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAIipC,YAAhB,EAA8B,EAAEjpC,CAAhC,EAAmC;MACjC,MAAM0pC,KAAA,GAAQX,MAAA,CAAO/oC,CAAP,CAAd;MACA,IAAI,OAAO0pC,KAAP,KAAiB,QAArB,EAA+B;QAC7B/lD,CAAA,IAAMwlD,UAAA,GAAaO,KAAb,GAAqBpvC,QAAtB,GAAkC,IAAvC;QACA;MAF6B;MAK/B,IAAIsvC,aAAA,GAAgB,KAApB;MACA,MAAMlD,OAAA,GAAW,CAAAgD,KAAA,CAAMG,OAAN,GAAgBxR,WAAhB,GAA8B,CAA9B,IAAmCD,WAApD;MACA,MAAM8P,SAAA,GAAYwB,KAAA,CAAMI,QAAxB;MACA,MAAMC,MAAA,GAASL,KAAA,CAAMK,MAArB;MACA,IAAIC,OAAJ,EAAaC,OAAb;MACA,IAAIljD,KAAA,GAAQ2iD,KAAA,CAAM3iD,KAAlB;MACA,IAAImiD,QAAJ,EAAc;QACZ,MAAMgB,OAAA,GAAUR,KAAA,CAAMQ,OAAN,IAAiBd,eAAjC;QACA,MAAMe,EAAA,GACJ,EAAET,KAAA,CAAMQ,OAAN,GAAgBA,OAAA,CAAQ,CAAR,CAAhB,GAA6BnjD,KAAA,GAAQ,GAArC,CAAF,GAA8CsiD,iBADhD;QAEA,MAAMe,EAAA,GAAKF,OAAA,CAAQ,CAAR,IAAab,iBAAxB;QAEAtiD,KAAA,GAAQmjD,OAAA,GAAU,CAACA,OAAA,CAAQ,CAAR,CAAX,GAAwBnjD,KAAhC;QACAijD,OAAA,GAAUG,EAAA,GAAKtS,aAAf;QACAoS,OAAA,GAAW,CAAAtmD,CAAA,GAAIymD,EAAJ,IAAUvS,aAArB;MARY,CAAd,MASO;QACLmS,OAAA,GAAUrmD,CAAA,GAAIk0C,aAAd;QACAoS,OAAA,GAAU,CAAV;MAFK;MAKP,IAAIloB,IAAA,CAAKsoB,SAAL,IAAkBtjD,KAAA,GAAQ,CAA9B,EAAiC;QAI/B,MAAMujD,aAAA,GACF5jB,GAAA,CAAI6jB,WAAJ,CAAgBrC,SAAhB,EAA2BnhD,KAA3B,GAAmC,IAApC,GAA4CuT,QAA7C,GACAu9B,aAFF;QAGA,IAAI9wC,KAAA,GAAQujD,aAAR,IAAyB,KAAKzB,uBAAlC,EAA2D;UACzD,MAAM2B,eAAA,GAAkBzjD,KAAA,GAAQujD,aAAhC;UACAV,aAAA,GAAgB,IAAhB;UACAljB,GAAA,CAAI2I,IAAJ;UACA3I,GAAA,CAAInQ,KAAJ,CAAUi0B,eAAV,EAA2B,CAA3B;UACAR,OAAA,IAAWQ,eAAX;QALyD,CAA3D,MAMO,IAAIzjD,KAAA,KAAUujD,aAAd,EAA6B;UAClCN,OAAA,IACK,CAAAjjD,KAAA,GAAQujD,aAAR,IAAyB,IAA3B,GAAmChwC,QAApC,GAAgDu9B,aADlD;QADkC;MAbL;MAqBjC,IAAI,KAAK6H,cAAL,KAAwBgK,KAAA,CAAMe,QAAN,IAAkB1oB,IAAA,CAAKymB,WAAvB,CAA5B,EAAiE;QAC/D,IAAIc,cAAA,IAAkB,CAACS,MAAvB,EAA+B;UAE7BrjB,GAAA,CAAIiiB,QAAJ,CAAaT,SAAb,EAAwB8B,OAAxB,EAAiCC,OAAjC;QAF6B,CAA/B,MAGO;UACL,KAAKhC,SAAL,CAAeC,SAAf,EAA0B8B,OAA1B,EAAmCC,OAAnC,EAA4C9B,gBAA5C;UACA,IAAI4B,MAAJ,EAAY;YACV,MAAMW,aAAA,GACJV,OAAA,GAAW1vC,QAAA,GAAWyvC,MAAA,CAAOY,MAAP,CAAchnD,CAA1B,GAA+Bk0C,aAD3C;YAEA,MAAM+S,aAAA,GACJX,OAAA,GAAW3vC,QAAA,GAAWyvC,MAAA,CAAOY,MAAP,CAAc5mD,CAA1B,GAA+B8zC,aAD3C;YAEA,KAAKoQ,SAAL,CACE8B,MAAA,CAAOD,QADT,EAEEY,aAFF,EAGEE,aAHF,EAIEzC,gBAJF;UALU;QAFP;MAJwD;MAqBjE,MAAM0C,SAAA,GAAY3B,QAAA,GACdniD,KAAA,GAAQsiD,iBAAR,GAA4B3C,OAAA,GAAUM,aADxB,GAEdjgD,KAAA,GAAQsiD,iBAAR,GAA4B3C,OAAA,GAAUM,aAF1C;MAGArjD,CAAA,IAAKknD,SAAL;MAEA,IAAIjB,aAAJ,EAAmB;QACjBljB,GAAA,CAAImM,OAAJ;MADiB;IA1Ec;IA8EnC,IAAIqW,QAAJ,EAAc;MACZ7gB,OAAA,CAAQtkC,CAAR,IAAaJ,CAAb;IADY,CAAd,MAEO;MACL0kC,OAAA,CAAQ1kC,CAAR,IAAaA,CAAA,GAAI20C,UAAjB;IADK;IAGP5R,GAAA,CAAImM,OAAJ;IACA,KAAK2R,OAAL;IAEA,OAAO7nC,SAAP;EAlLe;EAqLjBqsC,cAAcD,MAAd,EAAsB;IAEpB,MAAMriB,GAAA,GAAM,KAAKA,GAAjB;IACA,MAAM2B,OAAA,GAAU,KAAKA,OAArB;IACA,MAAMtG,IAAA,GAAOsG,OAAA,CAAQtG,IAArB;IACA,MAAMznB,QAAA,GAAW+tB,OAAA,CAAQ/tB,QAAzB;IACA,MAAM0sC,aAAA,GAAgB3e,OAAA,CAAQ2e,aAA9B;IACA,MAAMmC,UAAA,GAAapnB,IAAA,CAAKmnB,QAAL,GAAgB,CAAhB,GAAoB,CAAC,CAAxC;IACA,MAAM9Q,WAAA,GAAc/P,OAAA,CAAQ+P,WAA5B;IACA,MAAMC,WAAA,GAAchQ,OAAA,CAAQgQ,WAA5B;IACA,MAAMC,UAAA,GAAajQ,OAAA,CAAQiQ,UAAR,GAAqB0O,aAAxC;IACA,MAAMhP,UAAA,GAAa3P,OAAA,CAAQ2P,UAAR,IAAsBrG,yBAAzC;IACA,MAAMsX,YAAA,GAAeF,MAAA,CAAOn3C,MAA5B;IACA,MAAMk5C,eAAA,GACJziB,OAAA,CAAQkQ,iBAAR,KAA8BzG,sBAAA,CAAkBiZ,SADlD;IAEA,IAAI/qC,CAAJ,EAAO0pC,KAAP,EAAc3iD,KAAd,EAAqBikD,aAArB;IAEA,IAAIF,eAAA,IAAmBxwC,QAAA,KAAa,CAApC,EAAuC;MACrC;IADqC;IAGvC,KAAKylC,uBAAL,CAA6B,CAA7B,IAAkC,CAAC,CAAnC;IACA,KAAKC,0BAAL,GAAkC,IAAlC;IAEAtZ,GAAA,CAAI2I,IAAJ;IACA3I,GAAA,CAAIrP,SAAJ,CAAc,GAAGgR,OAAA,CAAQyP,UAAzB;IACApR,GAAA,CAAIoC,SAAJ,CAAcT,OAAA,CAAQ1kC,CAAtB,EAAyB0kC,OAAA,CAAQtkC,CAAjC;IAEA2iC,GAAA,CAAInQ,KAAJ,CAAU+hB,UAAV,EAAsB0O,aAAtB;IAEA,KAAKhnC,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAIipC,YAAhB,EAA8B,EAAEjpC,CAAhC,EAAmC;MACjC0pC,KAAA,GAAQX,MAAA,CAAO/oC,CAAP,CAAR;MACA,IAAI,OAAO0pC,KAAP,KAAiB,QAArB,EAA+B;QAC7BsB,aAAA,GAAiB7B,UAAA,GAAaO,KAAb,GAAqBpvC,QAAtB,GAAkC,IAAlD;QACA,KAAKosB,GAAL,CAASoC,SAAT,CAAmBkiB,aAAnB,EAAkC,CAAlC;QACA3iB,OAAA,CAAQ1kC,CAAR,IAAaqnD,aAAA,GAAgB1S,UAA7B;QACA;MAJ6B;MAO/B,MAAMoO,OAAA,GAAW,CAAAgD,KAAA,CAAMG,OAAN,GAAgBxR,WAAhB,GAA8B,CAA9B,IAAmCD,WAApD;MACA,MAAMlgB,YAAA,GAAe6J,IAAA,CAAKkpB,oBAAL,CAA0BvB,KAAA,CAAMwB,cAAhC,CAArB;MACA,IAAI,CAAChzB,YAAL,EAAmB;QACjBhyB,aAAA,CAAM,oBAAmBwjD,KAAA,CAAMwB,cAAe,qBAA9C;QACA;MAFiB;MAInB,IAAI,KAAKxL,cAAT,EAAyB;QACvB,KAAKN,eAAL,GAAuBsK,KAAvB;QACA,KAAKra,IAAL;QACA3I,GAAA,CAAInQ,KAAJ,CAAUjc,QAAV,EAAoBA,QAApB;QACAosB,GAAA,CAAIrP,SAAJ,CAAc,GAAG2gB,UAAjB;QACA,KAAKvT,mBAAL,CAAyBvM,YAAzB;QACA,KAAK2a,OAAL;MANuB;MASzB,MAAMsY,WAAA,GAAcllD,SAAA,CAAKizC,cAAL,CAAoB,CAACwQ,KAAA,CAAM3iD,KAAP,EAAc,CAAd,CAApB,EAAsCixC,UAAtC,CAApB;MACAjxC,KAAA,GAAQokD,WAAA,CAAY,CAAZ,IAAiB7wC,QAAjB,GAA4BosC,OAApC;MAEAhgB,GAAA,CAAIoC,SAAJ,CAAc/hC,KAAd,EAAqB,CAArB;MACAshC,OAAA,CAAQ1kC,CAAR,IAAaoD,KAAA,GAAQuxC,UAArB;IA5BiC;IA8BnC5R,GAAA,CAAImM,OAAJ;IACA,KAAKuM,eAAL,GAAuB,IAAvB;EA5DoB;EAgEtBgM,aAAaC,MAAb,EAAqBC,MAArB,EAA6B;EAK7BC,sBAAsBF,MAAtB,EAA8BC,MAA9B,EAAsCE,GAAtC,EAA2CC,GAA3C,EAAgDC,GAAhD,EAAqDC,GAArD,EAA0D;IACxD,KAAKjlB,GAAL,CAAS5/B,IAAT,CAAc0kD,GAAd,EAAmBC,GAAnB,EAAwBC,GAAA,GAAMF,GAA9B,EAAmCG,GAAA,GAAMF,GAAzC;IACA,KAAK/kB,GAAL,CAASI,IAAT;IACA,KAAK+I,OAAL;EAHwD;EAO1D+b,kBAAkB1kB,EAAlB,EAAsB;IACpB,IAAIiB,OAAJ;IACA,IAAIjB,EAAA,CAAG,CAAH,MAAU,eAAd,EAA+B;MAC7B,MAAMtiC,KAAA,GAAQsiC,EAAA,CAAG,CAAH,CAAd;MACA,MAAM6B,aAAA,GAAgB,KAAKA,aAAL,IAAsB3C,qCAAA,CAAoB,KAAKM,GAAzB,CAA5C;MACA,MAAMuH,qBAAA,GAAwB;QAC5Ba,oBAAA,EAAsBpI,GAAA,IAAO;UAC3B,OAAO,IAAInc,cAAJ,CACLmc,GADK,EAEL,KAAK3Q,UAFA,EAGL,KAAKC,IAHA,EAIL,KAAK3H,aAJA,EAKL,KAAKC,aALA,EAML;YACEgL,qBAAA,EAAuB,KAAKA,qBAD9B;YAEEulB,kBAAA,EAAoB,KAAKA;UAF3B,CANK,CAAP;QAD2B;MADD,CAA9B;MAeA1W,OAAA,GAAU,IAAI6F,aAAJ,CACR9G,EADQ,EAERtiC,KAFQ,EAGR,KAAK8hC,GAHG,EAIRuH,qBAJQ,EAKRlF,aALQ,CAAV;IAlB6B,CAA/B,MAyBO;MACLZ,OAAA,GAAU,KAAK0jB,WAAL,CAAiB3kB,EAAA,CAAG,CAAH,CAAjB,EAAwBA,EAAA,CAAG,CAAH,CAAxB,CAAV;IADK;IAGP,OAAOiB,OAAP;EA9BoB;EAiCtB2jB,gBAAA,EAAkB;IAChB,KAAKzjB,OAAL,CAAa93B,WAAb,GAA2B,KAAKq7C,iBAAL,CAAuBG,SAAvB,CAA3B;EADgB;EAIlBC,cAAA,EAAgB;IACd,KAAK3jB,OAAL,CAAaj4B,SAAb,GAAyB,KAAKw7C,iBAAL,CAAuBG,SAAvB,CAAzB;IACA,KAAK1jB,OAAL,CAAaoQ,WAAb,GAA2B,IAA3B;EAFc;EAKhBwT,kBAAkBxnD,CAAlB,EAAqBN,CAArB,EAAwBO,CAAxB,EAA2B;IACzB,MAAME,KAAA,GAAQqB,SAAA,CAAKmI,YAAL,CAAkB3J,CAAlB,EAAqBN,CAArB,EAAwBO,CAAxB,CAAd;IACA,KAAKgiC,GAAL,CAASoJ,WAAT,GAAuBlrC,KAAvB;IACA,KAAKyjC,OAAL,CAAa93B,WAAb,GAA2B3L,KAA3B;EAHyB;EAM3BsnD,gBAAgBznD,CAAhB,EAAmBN,CAAnB,EAAsBO,CAAtB,EAAyB;IACvB,MAAME,KAAA,GAAQqB,SAAA,CAAKmI,YAAL,CAAkB3J,CAAlB,EAAqBN,CAArB,EAAwBO,CAAxB,CAAd;IACA,KAAKgiC,GAAL,CAASsC,SAAT,GAAqBpkC,KAArB;IACA,KAAKyjC,OAAL,CAAaj4B,SAAb,GAAyBxL,KAAzB;IACA,KAAKyjC,OAAL,CAAaoQ,WAAb,GAA2B,KAA3B;EAJuB;EAOzBoT,YAAYlpB,KAAZ,EAAmB8E,MAAA,GAAS,IAA5B,EAAkC;IAChC,IAAIU,OAAJ;IACA,IAAI,KAAKwX,cAAL,CAAoBlsC,GAApB,CAAwBkvB,KAAxB,CAAJ,EAAoC;MAClCwF,OAAA,GAAU,KAAKwX,cAAL,CAAoB7oC,GAApB,CAAwB6rB,KAAxB,CAAV;IADkC,CAApC,MAEO;MACLwF,OAAA,GAAUyF,iBAAA,CAAkB,KAAKsS,SAAL,CAAevd,KAAf,CAAlB,CAAV;MACA,KAAKgd,cAAL,CAAoB55B,GAApB,CAAwB4c,KAAxB,EAA+BwF,OAA/B;IAFK;IAIP,IAAIV,MAAJ,EAAY;MACVU,OAAA,CAAQV,MAAR,GAAiBA,MAAjB;IADU;IAGZ,OAAOU,OAAP;EAXgC;EAclCgkB,YAAYxpB,KAAZ,EAAmB;IACjB,IAAI,CAAC,KAAK+c,cAAV,EAA0B;MACxB;IADwB;IAG1B,MAAMhZ,GAAA,GAAM,KAAKA,GAAjB;IAEA,KAAK2I,IAAL;IACA,MAAMlH,OAAA,GAAU,KAAK0jB,WAAL,CAAiBlpB,KAAjB,CAAhB;IACA+D,GAAA,CAAIsC,SAAJ,GAAgBb,OAAA,CAAQnB,UAAR,CACdN,GADc,EAEd,IAFc,EAGdqL,4CAAA,CAA2BrL,GAA3B,CAHc,EAIdL,QAAA,CAASG,OAJK,CAAhB;IAOA,MAAM4lB,GAAA,GAAMra,4CAAA,CAA2BrL,GAA3B,CAAZ;IACA,IAAI0lB,GAAJ,EAAS;MACP,MAAM;QAAErlD,KAAF;QAASC;MAAT,IAAoB0/B,GAAA,CAAIvgB,MAA9B;MACA,MAAM,CAACooB,EAAD,EAAKC,EAAL,EAAStE,EAAT,EAAaE,EAAb,IAAmBnkC,SAAA,CAAK88C,0BAAL,CACvB,CAAC,CAAD,EAAI,CAAJ,EAAOh8C,KAAP,EAAcC,MAAd,CADuB,EAEvBolD,GAFuB,CAAzB;MAKA,KAAK1lB,GAAL,CAAS4Z,QAAT,CAAkB/R,EAAlB,EAAsBC,EAAtB,EAA0BtE,EAAA,GAAKqE,EAA/B,EAAmCnE,EAAA,GAAKoE,EAAxC;IAPO,CAAT,MAQO;MAOL,KAAK9H,GAAL,CAAS4Z,QAAT,CAAkB,CAAC,IAAnB,EAAyB,CAAC,IAA1B,EAAgC,IAAhC,EAAsC,IAAtC;IAPK;IAUP,KAAKkE,OAAL,CAAa,KAAKnc,OAAL,CAAaC,yBAAb,EAAb;IACA,KAAKuK,OAAL;EAnCiB;EAuCnBwZ,iBAAA,EAAmB;IACjBrmD,oBAAA,CAAY,kCAAZ;EADiB;EAInBsmD,eAAA,EAAiB;IACftmD,oBAAA,CAAY,gCAAZ;EADe;EAIjBumD,sBAAsB9kB,MAAtB,EAA8Bd,IAA9B,EAAoC;IAClC,IAAI,CAAC,KAAK+Y,cAAV,EAA0B;MACxB;IADwB;IAG1B,KAAKrQ,IAAL;IACA,KAAKgQ,kBAAL,CAAwB7sC,IAAxB,CAA6B,KAAKu2B,aAAlC;IAEA,IAAI50B,KAAA,CAAMC,OAAN,CAAcqzB,MAAd,KAAyBA,MAAA,CAAO71B,MAAP,KAAkB,CAA/C,EAAkD;MAChD,KAAKylB,SAAL,CAAe,GAAGoQ,MAAlB;IADgD;IAIlD,KAAKsB,aAAL,GAAqB3C,qCAAA,CAAoB,KAAKM,GAAzB,CAArB;IAEA,IAAIC,IAAJ,EAAU;MACR,MAAM5/B,KAAA,GAAQ4/B,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAxB;MACA,MAAM3/B,MAAA,GAAS2/B,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAzB;MACA,KAAKD,GAAL,CAAS5/B,IAAT,CAAc6/B,IAAA,CAAK,CAAL,CAAd,EAAuBA,IAAA,CAAK,CAAL,CAAvB,EAAgC5/B,KAAhC,EAAuCC,MAAvC;MACA,KAAKqhC,OAAL,CAAauH,gBAAb,CAA8BxJ,qCAAA,CAAoB,KAAKM,GAAzB,CAA9B,EAA6DC,IAA7D;MACA,KAAKG,IAAL;MACA,KAAK+I,OAAL;IANQ;EAbwB;EAuBpC2c,oBAAA,EAAsB;IACpB,IAAI,CAAC,KAAK9M,cAAV,EAA0B;MACxB;IADwB;IAG1B,KAAK7M,OAAL;IACA,KAAK9J,aAAL,GAAqB,KAAKsW,kBAAL,CAAwBsF,GAAxB,EAArB;EALoB;EAQtB8H,WAAWC,KAAX,EAAkB;IAChB,IAAI,CAAC,KAAKhN,cAAV,EAA0B;MACxB;IADwB;IAI1B,KAAKrQ,IAAL;IAGA,IAAI,KAAKkS,WAAT,EAAsB;MACpB,KAAK8C,YAAL;MACA,KAAKhc,OAAL,CAAauQ,WAAb,GAA2B,IAA3B;IAFoB;IAKtB,MAAM+T,UAAA,GAAa,KAAKjmB,GAAxB;IAcA,IAAI,CAACgmB,KAAA,CAAME,QAAX,EAAqB;MACnBjkC,aAAA,CAAK,oCAAL;IADmB;IAMrB,IAAI+jC,KAAA,CAAMG,QAAV,EAAoB;MAClB3mD,aAAA,CAAK,gCAAL;IADkB;IAIpB,MAAMu8C,gBAAA,GAAmBrc,qCAAA,CAAoBumB,UAApB,CAAzB;IACA,IAAID,KAAA,CAAMjlB,MAAV,EAAkB;MAChBklB,UAAA,CAAWt1B,SAAX,CAAqB,GAAGq1B,KAAA,CAAMjlB,MAA9B;IADgB;IAGlB,IAAI,CAACilB,KAAA,CAAM/lB,IAAX,EAAiB;MACf,MAAM,IAAIjb,KAAJ,CAAU,2BAAV,CAAN;IADe;IAMjB,IAAIohC,MAAA,GAAS7mD,SAAA,CAAK88C,0BAAL,CACX2J,KAAA,CAAM/lB,IADK,EAEXP,qCAAA,CAAoBumB,UAApB,CAFW,CAAb;IAKA,MAAMI,YAAA,GAAe,CACnB,CADmB,EAEnB,CAFmB,EAGnBJ,UAAA,CAAWxmC,MAAX,CAAkBpf,KAHC,EAInB4lD,UAAA,CAAWxmC,MAAX,CAAkBnf,MAJC,CAArB;IAMA8lD,MAAA,GAAS7mD,SAAA,CAAK8c,SAAL,CAAe+pC,MAAf,EAAuBC,YAAvB,KAAwC,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAjD;IAGA,MAAMv2B,OAAA,GAAUpzB,IAAA,CAAKC,KAAL,CAAWypD,MAAA,CAAO,CAAP,CAAX,CAAhB;IACA,MAAMr2B,OAAA,GAAUrzB,IAAA,CAAKC,KAAL,CAAWypD,MAAA,CAAO,CAAP,CAAX,CAAhB;IACA,IAAI9J,UAAA,GAAa5/C,IAAA,CAAKE,GAAL,CAASF,IAAA,CAAKmlC,IAAL,CAAUukB,MAAA,CAAO,CAAP,CAAV,IAAuBt2B,OAAhC,EAAyC,CAAzC,CAAjB;IACA,IAAIysB,WAAA,GAAc7/C,IAAA,CAAKE,GAAL,CAASF,IAAA,CAAKmlC,IAAL,CAAUukB,MAAA,CAAO,CAAP,CAAV,IAAuBr2B,OAAhC,EAAyC,CAAzC,CAAlB;IACA,IAAI0T,MAAA,GAAS,CAAb;MACEE,MAAA,GAAS,CADX;IAEA,IAAI2Y,UAAA,GAAa7Q,cAAjB,EAAiC;MAC/BhI,MAAA,GAAS6Y,UAAA,GAAa7Q,cAAtB;MACA6Q,UAAA,GAAa7Q,cAAb;IAF+B;IAIjC,IAAI8Q,WAAA,GAAc9Q,cAAlB,EAAkC;MAChC9H,MAAA,GAAS4Y,WAAA,GAAc9Q,cAAvB;MACA8Q,WAAA,GAAc9Q,cAAd;IAFgC;IAKlC,KAAK9J,OAAL,CAAayQ,sBAAb,CAAoC,CAAC,CAAD,EAAI,CAAJ,EAAOkK,UAAP,EAAmBC,WAAnB,CAApC;IAEA,IAAIqB,OAAA,GAAU,YAAY,KAAKvV,UAA/B;IACA,IAAI2d,KAAA,CAAM5O,KAAV,EAAiB;MAEfwG,OAAA,IAAW,YAAa,KAAK/E,YAAL,KAAsB,CAA9C;IAFe;IAIjB,MAAMgF,aAAA,GAAgB,KAAK9b,cAAL,CAAoBC,SAApB,CACpB4b,OADoB,EAEpBtB,UAFoB,EAGpBC,WAHoB,CAAtB;IAKA,MAAM+J,QAAA,GAAWzI,aAAA,CAAcx8B,OAA/B;IAIAilC,QAAA,CAASz2B,KAAT,CAAe,IAAI4T,MAAnB,EAA2B,IAAIE,MAA/B;IACA2iB,QAAA,CAASlkB,SAAT,CAAmB,CAACtS,OAApB,EAA6B,CAACC,OAA9B;IACAu2B,QAAA,CAAS31B,SAAT,CAAmB,GAAGorB,gBAAtB;IAEA,IAAIiK,KAAA,CAAM5O,KAAV,EAAiB;MAEf,KAAKwB,UAAL,CAAgB9sC,IAAhB,CAAqB;QACnB2T,MAAA,EAAQo+B,aAAA,CAAcp+B,MADH;QAEnB4B,OAAA,EAASilC,QAFU;QAGnBx2B,OAHmB;QAInBC,OAJmB;QAKnB0T,MALmB;QAMnBE,MANmB;QAOnBjjC,OAAA,EAASslD,KAAA,CAAM5O,KAAN,CAAY12C,OAPF;QAQnB61C,QAAA,EAAUyP,KAAA,CAAM5O,KAAN,CAAYb,QARH;QASnBL,WAAA,EAAa8P,KAAA,CAAM5O,KAAN,CAAYlB,WAAZ,IAA2B,IATrB;QAUnBqQ,qBAAA,EAAuB;MAVJ,CAArB;IAFe,CAAjB,MAcO;MAGLN,UAAA,CAAWtjB,YAAX,CAAwB,CAAxB,EAA2B,CAA3B,EAA8B,CAA9B,EAAiC,CAAjC,EAAoC,CAApC,EAAuC,CAAvC;MACAsjB,UAAA,CAAW7jB,SAAX,CAAqBtS,OAArB,EAA8BC,OAA9B;MACAk2B,UAAA,CAAWp2B,KAAX,CAAiB4T,MAAjB,EAAyBE,MAAzB;MACAsiB,UAAA,CAAWtd,IAAX;IANK;IAUPgM,YAAA,CAAasR,UAAb,EAAyBK,QAAzB;IACA,KAAKtmB,GAAL,GAAWsmB,QAAX;IACA,KAAKhJ,SAAL,CAAe,CACb,CAAC,IAAD,EAAO,aAAP,CADa,EAEb,CAAC,IAAD,EAAO,CAAP,CAFa,EAGb,CAAC,IAAD,EAAO,CAAP,CAHa,CAAf;IAKA,KAAK7E,UAAL,CAAgB3sC,IAAhB,CAAqBm6C,UAArB;IACA,KAAK5d,UAAL;EAhIgB;EAmIlBme,SAASR,KAAT,EAAgB;IACd,IAAI,CAAC,KAAKhN,cAAV,EAA0B;MACxB;IADwB;IAG1B,KAAK3Q,UAAL;IACA,MAAMie,QAAA,GAAW,KAAKtmB,GAAtB;IACA,MAAMA,GAAA,GAAM,KAAKyY,UAAL,CAAgBwF,GAAhB,EAAZ;IACA,KAAKje,GAAL,GAAWA,GAAX;IAGA,KAAKA,GAAL,CAAS0c,qBAAT,GAAiC,KAAjC;IAEA,IAAIsJ,KAAA,CAAM5O,KAAV,EAAiB;MACf,KAAK0B,SAAL,GAAiB,KAAKF,UAAL,CAAgBqF,GAAhB,EAAjB;MACA,KAAK9R,OAAL;IAFe,CAAjB,MAGO;MACL,KAAKnM,GAAL,CAASmM,OAAT;MACA,MAAMsa,UAAA,GAAa/mB,qCAAA,CAAoB,KAAKM,GAAzB,CAAnB;MACA,KAAKmM,OAAL;MACA,KAAKnM,GAAL,CAAS2I,IAAT;MACA,KAAK3I,GAAL,CAAS2C,YAAT,CAAsB,GAAG8jB,UAAzB;MACA,MAAM1I,QAAA,GAAWx+C,SAAA,CAAK88C,0BAAL,CACf,CAAC,CAAD,EAAI,CAAJ,EAAOiK,QAAA,CAAS7mC,MAAT,CAAgBpf,KAAvB,EAA8BimD,QAAA,CAAS7mC,MAAT,CAAgBnf,MAA9C,CADe,EAEfmmD,UAFe,CAAjB;MAIA,KAAKzmB,GAAL,CAAS8P,SAAT,CAAmBwW,QAAA,CAAS7mC,MAA5B,EAAoC,CAApC,EAAuC,CAAvC;MACA,KAAKugB,GAAL,CAASmM,OAAT;MACA,KAAK2R,OAAL,CAAaC,QAAb;IAZK;EAfO;EA+BhB2I,gBAAgBhhD,EAAhB,EAAoBtF,IAApB,EAA0BuwB,SAA1B,EAAqCoQ,MAArC,EAA6Cv6B,YAA7C,EAA2D;IAKzD,KAAK,CAAAo0C,mBAAL;IACA1F,iBAAA,CAAkB,KAAKlV,GAAvB;IAEA,KAAKA,GAAL,CAAS2I,IAAT;IACA,KAAKA,IAAL;IAEA,IAAI,KAAKtG,aAAT,EAAwB;MACtB,KAAKrC,GAAL,CAAS2C,YAAT,CAAsB,GAAG,KAAKN,aAA9B;IADsB;IAIxB,IAAI50B,KAAA,CAAMC,OAAN,CAActN,IAAd,KAAuBA,IAAA,CAAK8K,MAAL,KAAgB,CAA3C,EAA8C;MAC5C,MAAM7K,KAAA,GAAQD,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAxB;MACA,MAAME,MAAA,GAASF,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAzB;MAEA,IAAIoG,YAAA,IAAgB,KAAKiY,mBAAzB,EAA8C;QAC5CkS,SAAA,GAAYA,SAAA,CAAU9xB,KAAV,EAAZ;QACA8xB,SAAA,CAAU,CAAV,KAAgBvwB,IAAA,CAAK,CAAL,CAAhB;QACAuwB,SAAA,CAAU,CAAV,KAAgBvwB,IAAA,CAAK,CAAL,CAAhB;QAEAA,IAAA,GAAOA,IAAA,CAAKvB,KAAL,EAAP;QACAuB,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,IAAU,CAApB;QACAA,IAAA,CAAK,CAAL,IAAUC,KAAV;QACAD,IAAA,CAAK,CAAL,IAAUE,MAAV;QAEA,MAAM,CAACmjC,MAAD,EAASE,MAAT,IAAmBpkC,SAAA,CAAKunC,6BAAL,CACvBpH,qCAAA,CAAoB,KAAKM,GAAzB,CADuB,CAAzB;QAGA,MAAM;UAAEkZ;QAAF,IAAoB,IAA1B;QACA,MAAMyN,WAAA,GAAcjqD,IAAA,CAAKmlC,IAAL,CAClBxhC,KAAA,GAAQ,KAAK84C,YAAb,GAA4BD,aADV,CAApB;QAGA,MAAM0N,YAAA,GAAelqD,IAAA,CAAKmlC,IAAL,CACnBvhC,MAAA,GAAS,KAAK84C,YAAd,GAA6BF,aADV,CAArB;QAIA,KAAK2N,gBAAL,GAAwB,KAAKl/B,aAAL,CAAmBnnB,MAAnB,CACtBmmD,WADsB,EAEtBC,YAFsB,CAAxB;QAIA,MAAM;UAAEnnC,MAAF;UAAU4B;QAAV,IAAsB,KAAKwlC,gBAAjC;QACA,KAAKpoC,mBAAL,CAAyBY,GAAzB,CAA6B3Z,EAA7B,EAAiC+Z,MAAjC;QACA,KAAKonC,gBAAL,CAAsBC,QAAtB,GAAiC,KAAK9mB,GAAtC;QACA,KAAKA,GAAL,GAAW3e,OAAX;QACA,KAAK2e,GAAL,CAAS2I,IAAT;QACA,KAAK3I,GAAL,CAAS2C,YAAT,CAAsBc,MAAtB,EAA8B,CAA9B,EAAiC,CAAjC,EAAoC,CAACE,MAArC,EAA6C,CAA7C,EAAgDrjC,MAAA,GAASqjC,MAAzD;QAEAuR,iBAAA,CAAkB,KAAKlV,GAAvB;MAhC4C,CAA9C,MAiCO;QACLkV,iBAAA,CAAkB,KAAKlV,GAAvB;QAEA,KAAKA,GAAL,CAAS5/B,IAAT,CAAcA,IAAA,CAAK,CAAL,CAAd,EAAuBA,IAAA,CAAK,CAAL,CAAvB,EAAgCC,KAAhC,EAAuCC,MAAvC;QACA,KAAK0/B,GAAL,CAASI,IAAT;QACA,KAAK+I,OAAL;MALK;IArCqC;IA8C9C,KAAKxH,OAAL,GAAe,IAAIsP,gBAAJ,CACb,KAAKjR,GAAL,CAASvgB,MAAT,CAAgBpf,KADH,EAEb,KAAK2/B,GAAL,CAASvgB,MAAT,CAAgBnf,MAFH,CAAf;IAKA,KAAKqwB,SAAL,CAAe,GAAGA,SAAlB;IACA,KAAKA,SAAL,CAAe,GAAGoQ,MAAlB;EAnEyD;EAsE3DgmB,cAAA,EAAgB;IACd,IAAI,KAAKF,gBAAT,EAA2B;MACzB,KAAK7mB,GAAL,CAASmM,OAAT;MACA,KAAK,CAAA4O,UAAL;MAEA,KAAK/a,GAAL,GAAW,KAAK6mB,gBAAL,CAAsBC,QAAjC;MACA,OAAO,KAAKD,gBAAL,CAAsBC,QAA7B;MACA,OAAO,KAAKD,gBAAZ;IANyB;EADb;EAWhBG,sBAAsB5L,GAAtB,EAA2B;IACzB,IAAI,CAAC,KAAKpC,cAAV,EAA0B;MACxB;IADwB;IAG1B,MAAMvI,KAAA,GAAQ2K,GAAA,CAAI3K,KAAlB;IACA2K,GAAA,GAAM,KAAK5B,SAAL,CAAe4B,GAAA,CAAIz6C,IAAnB,EAAyBy6C,GAAzB,CAAN;IACAA,GAAA,CAAI3K,KAAJ,GAAYA,KAAZ;IAEA,MAAMzQ,GAAA,GAAM,KAAKA,GAAjB;IACA,MAAMgjB,KAAA,GAAQ,KAAKtK,eAAnB;IAEA,IAAIsK,KAAJ,EAAW;MACT,IAAIA,KAAA,CAAMiE,QAAN,KAAmBhxC,SAAvB,EAAkC;QAChC+sC,KAAA,CAAMiE,QAAN,GAAiBjX,iBAAA,CAAkBoL,GAAlB,CAAjB;MADgC;MAIlC,IAAI4H,KAAA,CAAMiE,QAAV,EAAoB;QAClBjE,KAAA,CAAMiE,QAAN,CAAejnB,GAAf;QACA;MAFkB;IALX;IAUX,MAAMwQ,IAAA,GAAO,KAAKqL,iBAAL,CAAuBT,GAAvB,CAAb;IACA,MAAMa,UAAA,GAAazL,IAAA,CAAK/wB,MAAxB;IAEAugB,GAAA,CAAI2I,IAAJ;IAGA3I,GAAA,CAAI2C,YAAJ,CAAiB,CAAjB,EAAoB,CAApB,EAAuB,CAAvB,EAA0B,CAA1B,EAA6B,CAA7B,EAAgC,CAAhC;IACA3C,GAAA,CAAI8P,SAAJ,CAAcmM,UAAd,EAA0BzL,IAAA,CAAK1gB,OAA/B,EAAwC0gB,IAAA,CAAKzgB,OAA7C;IACAiQ,GAAA,CAAImM,OAAJ;IACA,KAAK2R,OAAL;EA9ByB;EAiC3BoJ,4BACE9L,GADF,EAEE3X,MAFF,EAGE0jB,KAAA,GAAQ,CAHV,EAIEC,KAAA,GAAQ,CAJV,EAKEzjB,MALF,EAME0jB,SANF,EAOE;IACA,IAAI,CAAC,KAAKrO,cAAV,EAA0B;MACxB;IADwB;IAI1BoC,GAAA,GAAM,KAAK5B,SAAL,CAAe4B,GAAA,CAAIz6C,IAAnB,EAAyBy6C,GAAzB,CAAN;IAEA,MAAMpb,GAAA,GAAM,KAAKA,GAAjB;IACAA,GAAA,CAAI2I,IAAJ;IACA,MAAMoT,gBAAA,GAAmBrc,qCAAA,CAAoBM,GAApB,CAAzB;IACAA,GAAA,CAAIrP,SAAJ,CAAc8S,MAAd,EAAsB0jB,KAAtB,EAA6BC,KAA7B,EAAoCzjB,MAApC,EAA4C,CAA5C,EAA+C,CAA/C;IACA,MAAM6M,IAAA,GAAO,KAAKqL,iBAAL,CAAuBT,GAAvB,CAAb;IAEApb,GAAA,CAAI2C,YAAJ,CACE,CADF,EAEE,CAFF,EAGE,CAHF,EAIE,CAJF,EAKE6N,IAAA,CAAK1gB,OAAL,GAAeisB,gBAAA,CAAiB,CAAjB,CALjB,EAMEvL,IAAA,CAAKzgB,OAAL,GAAegsB,gBAAA,CAAiB,CAAjB,CANjB;IAQA,KAAK,IAAIziC,CAAA,GAAI,CAAR,EAAWwD,EAAA,GAAKuqC,SAAA,CAAUn8C,MAA1B,EAAkCoO,CAAA,GAAIwD,EAA3C,EAA+CxD,CAAA,IAAK,CAApD,EAAuD;MACrD,MAAMguC,KAAA,GAAQ/nD,SAAA,CAAKoxB,SAAL,CAAeorB,gBAAf,EAAiC,CAC7CtY,MAD6C,EAE7C0jB,KAF6C,EAG7CC,KAH6C,EAI7CzjB,MAJ6C,EAK7C0jB,SAAA,CAAU/tC,CAAV,CAL6C,EAM7C+tC,SAAA,CAAU/tC,CAAA,GAAI,CAAd,CAN6C,CAAjC,CAAd;MASA,MAAM,CAACrc,CAAD,EAAII,CAAJ,IAASkC,SAAA,CAAKizC,cAAL,CAAoB,CAAC,CAAD,EAAI,CAAJ,CAApB,EAA4B8U,KAA5B,CAAf;MACAtnB,GAAA,CAAI8P,SAAJ,CAAcU,IAAA,CAAK/wB,MAAnB,EAA2BxiB,CAA3B,EAA8BI,CAA9B;IAXqD;IAavD2iC,GAAA,CAAImM,OAAJ;IACA,KAAK2R,OAAL;EAnCA;EAsCFyJ,2BAA2BC,MAA3B,EAAmC;IACjC,IAAI,CAAC,KAAKxO,cAAV,EAA0B;MACxB;IADwB;IAG1B,MAAMhZ,GAAA,GAAM,KAAKA,GAAjB;IAEA,MAAMt2B,SAAA,GAAY,KAAKi4B,OAAL,CAAaj4B,SAA/B;IACA,MAAMoyC,aAAA,GAAgB,KAAKna,OAAL,CAAaoQ,WAAnC;IAEA,WAAWvgC,KAAX,IAAoBg2C,MAApB,EAA4B;MAC1B,MAAM;QAAE7mD,IAAF;QAAQN,KAAR;QAAeC,MAAf;QAAuBqwB;MAAvB,IAAqCnf,KAA3C;MAEA,MAAMyqC,UAAA,GAAa,KAAKla,cAAL,CAAoBC,SAApB,CACjB,YADiB,EAEjB3hC,KAFiB,EAGjBC,MAHiB,CAAnB;MAKA,MAAM+1C,OAAA,GAAU4F,UAAA,CAAW56B,OAA3B;MACAg1B,OAAA,CAAQ1N,IAAR;MAEA,MAAMyS,GAAA,GAAM,KAAK5B,SAAL,CAAe74C,IAAf,EAAqB6Q,KAArB,CAAZ;MACAkjC,kBAAA,CAAmB2B,OAAnB,EAA4B+E,GAA5B;MAEA/E,OAAA,CAAQb,wBAAR,GAAmC,WAAnC;MAEAa,OAAA,CAAQ/T,SAAR,GAAoBwZ,aAAA,GAChBpyC,SAAA,CAAU42B,UAAV,CACE+V,OADF,EAEE,IAFF,EAGEhL,4CAAA,CAA2BrL,GAA3B,CAHF,EAIEL,QAAA,CAASC,IAJX,CADgB,GAOhBl2B,SAPJ;MAQA2sC,OAAA,CAAQuD,QAAR,CAAiB,CAAjB,EAAoB,CAApB,EAAuBv5C,KAAvB,EAA8BC,MAA9B;MAEA+1C,OAAA,CAAQlK,OAAR;MAEAnM,GAAA,CAAI2I,IAAJ;MACA3I,GAAA,CAAIrP,SAAJ,CAAc,GAAGA,SAAjB;MACAqP,GAAA,CAAInQ,KAAJ,CAAU,CAAV,EAAa,CAAC,CAAd;MACA4e,wBAAA,CACEzO,GADF,EAEEic,UAAA,CAAWx8B,MAFb,EAGE,CAHF,EAIE,CAJF,EAKEpf,KALF,EAMEC,MANF,EAOE,CAPF,EAQE,CAAC,CARH,EASE,CATF,EAUE,CAVF;MAYA0/B,GAAA,CAAImM,OAAJ;IA3C0B;IA6C5B,KAAK2R,OAAL;EAtDiC;EAyDnC2J,kBAAkBxrB,KAAlB,EAAyB;IACvB,IAAI,CAAC,KAAK+c,cAAV,EAA0B;MACxB;IADwB;IAG1B,MAAM/I,OAAA,GAAU,KAAKuJ,SAAL,CAAevd,KAAf,CAAhB;IACA,IAAI,CAACgU,OAAL,EAAc;MACZzwC,aAAA,CAAK,iCAAL;MACA;IAFY;IAKd,KAAKkoD,uBAAL,CAA6BzX,OAA7B;EAVuB;EAazB0X,wBAAwB1rB,KAAxB,EAA+BwH,MAA/B,EAAuCE,MAAvC,EAA+C0jB,SAA/C,EAA0D;IACxD,IAAI,CAAC,KAAKrO,cAAV,EAA0B;MACxB;IADwB;IAG1B,MAAM/I,OAAA,GAAU,KAAKuJ,SAAL,CAAevd,KAAf,CAAhB;IACA,IAAI,CAACgU,OAAL,EAAc;MACZzwC,aAAA,CAAK,iCAAL;MACA;IAFY;IAKd,MAAMa,KAAA,GAAQ4vC,OAAA,CAAQ5vC,KAAtB;IACA,MAAMC,MAAA,GAAS2vC,OAAA,CAAQ3vC,MAAvB;IACA,MAAMnC,GAAA,GAAM,EAAZ;IACA,KAAK,IAAImb,CAAA,GAAI,CAAR,EAAWwD,EAAA,GAAKuqC,SAAA,CAAUn8C,MAA1B,EAAkCoO,CAAA,GAAIwD,EAA3C,EAA+CxD,CAAA,IAAK,CAApD,EAAuD;MACrDnb,GAAA,CAAI2N,IAAJ,CAAS;QACP6kB,SAAA,EAAW,CAAC8S,MAAD,EAAS,CAAT,EAAY,CAAZ,EAAeE,MAAf,EAAuB0jB,SAAA,CAAU/tC,CAAV,CAAvB,EAAqC+tC,SAAA,CAAU/tC,CAAA,GAAI,CAAd,CAArC,CADJ;QAEPrc,CAAA,EAAG,CAFI;QAGPI,CAAA,EAAG,CAHI;QAIPuqD,CAAA,EAAGvnD,KAJI;QAKPwnD,CAAA,EAAGvnD;MALI,CAAT;IADqD;IASvD,KAAKwnD,4BAAL,CAAkC7X,OAAlC,EAA2C9xC,GAA3C;EAtBwD;EAyB1D4pD,0BAA0B/nB,GAA1B,EAA+B;IAC7B,IAAI,KAAK2B,OAAL,CAAawQ,YAAb,KAA8B,MAAlC,EAA0C;MACxCnS,GAAA,CAAIhnB,MAAJ,GAAa,KAAK2oB,OAAL,CAAawQ,YAA1B;MACAnS,GAAA,CAAI8P,SAAJ,CAAc9P,GAAA,CAAIvgB,MAAlB,EAA0B,CAA1B,EAA6B,CAA7B;MACAugB,GAAA,CAAIhnB,MAAJ,GAAa,MAAb;IAHwC;IAK1C,OAAOgnB,GAAA,CAAIvgB,MAAX;EAN6B;EAS/BuoC,0BAA0B/X,OAA1B,EAAmC;IACjC,IAAI,KAAKtO,OAAL,CAAawQ,YAAb,KAA8B,MAAlC,EAA0C;MACxC,OAAOlC,OAAA,CAAQxuB,MAAf;IADwC;IAG1C,MAAM;MAAEA,MAAF;MAAUphB,KAAV;MAAiBC;IAAjB,IAA4B2vC,OAAlC;IACA,MAAMnO,SAAA,GAAY,KAAKC,cAAL,CAAoBC,SAApB,CAChB,aADgB,EAEhB3hC,KAFgB,EAGhBC,MAHgB,CAAlB;IAKA,MAAM2hC,MAAA,GAASH,SAAA,CAAUzgB,OAAzB;IACA4gB,MAAA,CAAOjpB,MAAP,GAAgB,KAAK2oB,OAAL,CAAawQ,YAA7B;IACAlQ,MAAA,CAAO6N,SAAP,CAAiBruB,MAAjB,EAAyB,CAAzB,EAA4B,CAA5B;IACAwgB,MAAA,CAAOjpB,MAAP,GAAgB,MAAhB;IAEA,OAAO8oB,SAAA,CAAUriB,MAAjB;EAfiC;EAkBnCioC,wBAAwBzX,OAAxB,EAAiC;IAC/B,IAAI,CAAC,KAAK+I,cAAV,EAA0B;MACxB;IADwB;IAG1B,MAAM34C,KAAA,GAAQ4vC,OAAA,CAAQ5vC,KAAtB;IACA,MAAMC,MAAA,GAAS2vC,OAAA,CAAQ3vC,MAAvB;IACA,MAAM0/B,GAAA,GAAM,KAAKA,GAAjB;IAEA,KAAK2I,IAAL;IAEA,IAEE,CAACvmB,aAFH,EAGE;MAKA,MAAM;QAAEpJ;MAAF,IAAagnB,GAAnB;MACA,IAAIhnB,MAAA,KAAW,MAAX,IAAqBA,MAAA,KAAW,EAApC,EAAwC;QACtCgnB,GAAA,CAAIhnB,MAAJ,GAAa,MAAb;MADsC;IANxC;IAYFgnB,GAAA,CAAInQ,KAAJ,CAAU,IAAIxvB,KAAd,EAAqB,CAAC,CAAD,GAAKC,MAA1B;IAEA,IAAI2nD,UAAJ;IACA,IAAIhY,OAAA,CAAQxuB,MAAZ,EAAoB;MAClBwmC,UAAA,GAAa,KAAKD,yBAAL,CAA+B/X,OAA/B,CAAb;IADkB,CAApB,MAEO,IACJ,OAAOiY,WAAP,KAAuB,UAAvB,IAAqCjY,OAAA,YAAmBiY,WAAzD,IACA,CAACjY,OAAA,CAAQtvC,IAFJ,EAGL;MAEAsnD,UAAA,GAAahY,OAAb;IAFA,CAHK,MAMA;MACL,MAAMnO,SAAA,GAAY,KAAKC,cAAL,CAAoBC,SAApB,CAChB,aADgB,EAEhB3hC,KAFgB,EAGhBC,MAHgB,CAAlB;MAKA,MAAM2hC,MAAA,GAASH,SAAA,CAAUzgB,OAAzB;MACAmyB,kBAAA,CAAmBvR,MAAnB,EAA2BgO,OAA3B;MACAgY,UAAA,GAAa,KAAKF,yBAAL,CAA+B9lB,MAA/B,CAAb;IARK;IAWP,MAAM+Z,MAAA,GAAS,KAAKb,WAAL,CACb8M,UADa,EAEb5c,4CAAA,CAA2BrL,GAA3B,CAFa,CAAf;IAIAA,GAAA,CAAI0c,qBAAJ,GAA4BlF,wBAAA,CAC1B9X,qCAAA,CAAoBM,GAApB,CAD0B,EAE1BiQ,OAAA,CAAQwH,WAFkB,CAA5B;IAKAhJ,wBAAA,CACEzO,GADF,EAEEgc,MAAA,CAAOZ,GAFT,EAGE,CAHF,EAIE,CAJF,EAKEY,MAAA,CAAOR,UALT,EAMEQ,MAAA,CAAOP,WANT,EAOE,CAPF,EAQE,CAACn7C,MARH,EASED,KATF,EAUEC,MAVF;IAYA,KAAKw9C,OAAL;IACA,KAAK3R,OAAL;EArE+B;EAwEjC2b,6BAA6B7X,OAA7B,EAAsC9xC,GAAtC,EAA2C;IACzC,IAAI,CAAC,KAAK66C,cAAV,EAA0B;MACxB;IADwB;IAG1B,MAAMhZ,GAAA,GAAM,KAAKA,GAAjB;IACA,IAAIioB,UAAJ;IACA,IAAIhY,OAAA,CAAQxuB,MAAZ,EAAoB;MAClBwmC,UAAA,GAAahY,OAAA,CAAQxuB,MAArB;IADkB,CAApB,MAEO;MACL,MAAMmmC,CAAA,GAAI3X,OAAA,CAAQ5vC,KAAlB;MACA,MAAMwnD,CAAA,GAAI5X,OAAA,CAAQ3vC,MAAlB;MAEA,MAAMwhC,SAAA,GAAY,KAAKC,cAAL,CAAoBC,SAApB,CAA8B,aAA9B,EAA6C4lB,CAA7C,EAAgDC,CAAhD,CAAlB;MACA,MAAM5lB,MAAA,GAASH,SAAA,CAAUzgB,OAAzB;MACAmyB,kBAAA,CAAmBvR,MAAnB,EAA2BgO,OAA3B;MACAgY,UAAA,GAAa,KAAKF,yBAAL,CAA+B9lB,MAA/B,CAAb;IAPK;IAUP,WAAWphB,KAAX,IAAoB1iB,GAApB,EAAyB;MACvB6hC,GAAA,CAAI2I,IAAJ;MACA3I,GAAA,CAAIrP,SAAJ,CAAc,GAAG9P,KAAA,CAAM8P,SAAvB;MACAqP,GAAA,CAAInQ,KAAJ,CAAU,CAAV,EAAa,CAAC,CAAd;MACA4e,wBAAA,CACEzO,GADF,EAEEioB,UAFF,EAGEpnC,KAAA,CAAM5jB,CAHR,EAIE4jB,KAAA,CAAMxjB,CAJR,EAKEwjB,KAAA,CAAM+mC,CALR,EAME/mC,KAAA,CAAMgnC,CANR,EAOE,CAPF,EAQE,CAAC,CARH,EASE,CATF,EAUE,CAVF;MAYA7nB,GAAA,CAAImM,OAAJ;IAhBuB;IAkBzB,KAAK2R,OAAL;EApCyC;EAuC3CqK,yBAAA,EAA2B;IACzB,IAAI,CAAC,KAAKnP,cAAV,EAA0B;MACxB;IADwB;IAG1B,KAAKhZ,GAAL,CAAS4Z,QAAT,CAAkB,CAAlB,EAAqB,CAArB,EAAwB,CAAxB,EAA2B,CAA3B;IACA,KAAKkE,OAAL;EALyB;EAU3BsK,UAAUC,GAAV,EAAe;EAIfC,eAAeD,GAAf,EAAoBxT,UAApB,EAAgC;EAIhC0T,mBAAmBF,GAAnB,EAAwB;IACtB,KAAKlQ,kBAAL,CAAwBrsC,IAAxB,CAA6B;MAC3B08C,OAAA,EAAS;IADkB,CAA7B;EADsB;EAMxBC,wBAAwBJ,GAAxB,EAA6BxT,UAA7B,EAAyC;IACvC,IAAIwT,GAAA,KAAQ,IAAZ,EAAkB;MAChB,KAAKlQ,kBAAL,CAAwBrsC,IAAxB,CAA6B;QAC3B08C,OAAA,EAAS,KAAK51B,qBAAL,CAA2B1V,SAA3B,CAAqC23B,UAArC;MADkB,CAA7B;IADgB,CAAlB,MAIO;MACL,KAAKsD,kBAAL,CAAwBrsC,IAAxB,CAA6B;QAC3B08C,OAAA,EAAS;MADkB,CAA7B;IADK;IAKP,KAAKxP,cAAL,GAAsB,KAAK0P,gBAAL,EAAtB;EAVuC;EAazCC,iBAAA,EAAmB;IACjB,KAAKxQ,kBAAL,CAAwB8F,GAAxB;IACA,KAAKjF,cAAL,GAAsB,KAAK0P,gBAAL,EAAtB;EAFiB;EAOnBE,YAAA,EAAc;EAIdC,UAAA,EAAY;EAMZ7J,YAAY3M,OAAZ,EAAqB;IACnB,MAAMyW,OAAA,GAAU,KAAKnnB,OAAL,CAAa2R,WAAb,EAAhB;IACA,IAAI,KAAK+E,WAAT,EAAsB;MACpB,KAAK1W,OAAL,CAAa0R,kBAAb;IADoB;IAGtB,IAAI,CAAC,KAAKgF,WAAV,EAAuB;MACrB,KAAKyF,OAAL,CAAazL,OAAb;IADqB;IAGvB,MAAMrS,GAAA,GAAM,KAAKA,GAAjB;IACA,IAAI,KAAKqY,WAAT,EAAsB;MACpB,IAAI,CAACyQ,OAAL,EAAc;QACZ,IAAI,KAAKzQ,WAAL,KAAqBJ,OAAzB,EAAkC;UAChCjY,GAAA,CAAII,IAAJ,CAAS,SAAT;QADgC,CAAlC,MAEO;UACLJ,GAAA,CAAII,IAAJ;QADK;MAHK;MAOd,KAAKiY,WAAL,GAAmB,IAAnB;IARoB;IAUtB,KAAK1W,OAAL,CAAayQ,sBAAb,CAAoC,KAAKzQ,OAAL,CAAa0Q,OAAjD;IACArS,GAAA,CAAImC,SAAJ;EApBmB;EAuBrB0gB,oBAAA,EAAsB;IACpB,IAAI,CAAC,KAAKvJ,0BAAV,EAAsC;MACpC,MAAMh8C,CAAA,GAAIoiC,qCAAA,CAAoB,KAAKM,GAAzB,CAAV;MACA,IAAI1iC,CAAA,CAAE,CAAF,MAAS,CAAT,IAAcA,CAAA,CAAE,CAAF,MAAS,CAA3B,EAA8B;QAE5B,KAAKg8C,0BAAL,GACE,IAAI58C,IAAA,CAAKG,GAAL,CAASH,IAAA,CAAKwX,GAAL,CAAS5W,CAAA,CAAE,CAAF,CAAT,CAAT,EAAyBZ,IAAA,CAAKwX,GAAL,CAAS5W,CAAA,CAAE,CAAF,CAAT,CAAzB,CADN;MAF4B,CAA9B,MAIO;QACL,MAAMyrD,MAAA,GAASrsD,IAAA,CAAKwX,GAAL,CAAS5W,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAAP,GAAcA,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAA9B,CAAf;QACA,MAAM0rD,KAAA,GAAQtsD,IAAA,CAAKqzC,KAAL,CAAWzyC,CAAA,CAAE,CAAF,CAAX,EAAiBA,CAAA,CAAE,CAAF,CAAjB,CAAd;QACA,MAAM2rD,KAAA,GAAQvsD,IAAA,CAAKqzC,KAAL,CAAWzyC,CAAA,CAAE,CAAF,CAAX,EAAiBA,CAAA,CAAE,CAAF,CAAjB,CAAd;QACA,KAAKg8C,0BAAL,GAAkC58C,IAAA,CAAKE,GAAL,CAASosD,KAAT,EAAgBC,KAAhB,IAAyBF,MAA3D;MAJK;IAN6B;IAatC,OAAO,KAAKzP,0BAAZ;EAdoB;EAiBtB4P,oBAAA,EAAsB;IAOpB,IAAI,KAAK7P,uBAAL,CAA6B,CAA7B,MAAoC,CAAC,CAAzC,EAA4C;MAC1C,MAAM;QAAEpH;MAAF,IAAgB,KAAKtQ,OAA3B;MACA,MAAM;QAAEgM,CAAF;QAAK3vC,CAAL;QAAQZ,CAAR;QAAWwwC;MAAX,IAAiB,KAAK5N,GAAL,CAASmpB,YAAT,EAAvB;MACA,IAAI1lB,MAAJ,EAAYE,MAAZ;MAEA,IAAI3lC,CAAA,KAAM,CAAN,IAAWZ,CAAA,KAAM,CAArB,EAAwB;QAEtB,MAAM4rD,KAAA,GAAQtsD,IAAA,CAAKwX,GAAL,CAASy5B,CAAT,CAAd;QACA,MAAMsb,KAAA,GAAQvsD,IAAA,CAAKwX,GAAL,CAAS05B,CAAT,CAAd;QACA,IAAIob,KAAA,KAAUC,KAAd,EAAqB;UACnB,IAAIhX,SAAA,KAAc,CAAlB,EAAqB;YACnBxO,MAAA,GAASE,MAAA,GAAS,IAAIqlB,KAAtB;UADmB,CAArB,MAEO;YACL,MAAMI,eAAA,GAAkBJ,KAAA,GAAQ/W,SAAhC;YACAxO,MAAA,GAASE,MAAA,GAASylB,eAAA,GAAkB,CAAlB,GAAsB,IAAIA,eAA1B,GAA4C,CAA9D;UAFK;QAHY,CAArB,MAOO,IAAInX,SAAA,KAAc,CAAlB,EAAqB;UAC1BxO,MAAA,GAAS,IAAIulB,KAAb;UACArlB,MAAA,GAAS,IAAIslB,KAAb;QAF0B,CAArB,MAGA;UACL,MAAMI,gBAAA,GAAmBL,KAAA,GAAQ/W,SAAjC;UACA,MAAMqX,gBAAA,GAAmBL,KAAA,GAAQhX,SAAjC;UACAxO,MAAA,GAAS4lB,gBAAA,GAAmB,CAAnB,GAAuB,IAAIA,gBAA3B,GAA8C,CAAvD;UACA1lB,MAAA,GAAS2lB,gBAAA,GAAmB,CAAnB,GAAuB,IAAIA,gBAA3B,GAA8C,CAAvD;QAJK;MAde,CAAxB,MAoBO;QAOL,MAAMP,MAAA,GAASrsD,IAAA,CAAKwX,GAAL,CAASy5B,CAAA,GAAIC,CAAJ,GAAQ5vC,CAAA,GAAIZ,CAArB,CAAf;QACA,MAAM4rD,KAAA,GAAQtsD,IAAA,CAAKqzC,KAAL,CAAWpC,CAAX,EAAc3vC,CAAd,CAAd;QACA,MAAMirD,KAAA,GAAQvsD,IAAA,CAAKqzC,KAAL,CAAW3yC,CAAX,EAAcwwC,CAAd,CAAd;QACA,IAAIqE,SAAA,KAAc,CAAlB,EAAqB;UACnBxO,MAAA,GAASwlB,KAAA,GAAQF,MAAjB;UACAplB,MAAA,GAASqlB,KAAA,GAAQD,MAAjB;QAFmB,CAArB,MAGO;UACL,MAAMQ,QAAA,GAAWtX,SAAA,GAAY8W,MAA7B;UACAtlB,MAAA,GAASwlB,KAAA,GAAQM,QAAR,GAAmBN,KAAA,GAAQM,QAA3B,GAAsC,CAA/C;UACA5lB,MAAA,GAASqlB,KAAA,GAAQO,QAAR,GAAmBP,KAAA,GAAQO,QAA3B,GAAsC,CAA/C;QAHK;MAbF;MAmBP,KAAKlQ,uBAAL,CAA6B,CAA7B,IAAkC5V,MAAlC;MACA,KAAK4V,uBAAL,CAA6B,CAA7B,IAAkC1V,MAAlC;IA7C0C;IA+C5C,OAAO,KAAK0V,uBAAZ;EAtDoB;EA2DtB4F,iBAAiBuK,WAAjB,EAA8B;IAC5B,MAAM;MAAExpB;IAAF,IAAU,IAAhB;IACA,MAAM;MAAEiS;IAAF,IAAgB,KAAKtQ,OAA3B;IACA,MAAM,CAAC8B,MAAD,EAASE,MAAT,IAAmB,KAAKulB,mBAAL,EAAzB;IAEAlpB,GAAA,CAAIiS,SAAJ,GAAgBA,SAAA,IAAa,CAA7B;IAEA,IAAIxO,MAAA,KAAW,CAAX,IAAgBE,MAAA,KAAW,CAA/B,EAAkC;MAChC3D,GAAA,CAAI+e,MAAJ;MACA;IAFgC;IAKlC,MAAM0K,MAAA,GAASzpB,GAAA,CAAIgV,WAAJ,EAAf;IACA,IAAIwU,WAAJ,EAAiB;MACfxpB,GAAA,CAAI2I,IAAJ;IADe;IAIjB3I,GAAA,CAAInQ,KAAJ,CAAU4T,MAAV,EAAkBE,MAAlB;IASA,IAAI8lB,MAAA,CAAOv+C,MAAP,GAAgB,CAApB,EAAuB;MACrB,MAAM2kB,KAAA,GAAQnzB,IAAA,CAAKE,GAAL,CAAS6mC,MAAT,EAAiBE,MAAjB,CAAd;MACA3D,GAAA,CAAI+U,WAAJ,CAAgB0U,MAAA,CAAOtrD,GAAP,CAAWlB,CAAA,IAAKA,CAAA,GAAI4yB,KAApB,CAAhB;MACAmQ,GAAA,CAAIiV,cAAJ,IAAsBplB,KAAtB;IAHqB;IAMvBmQ,GAAA,CAAI+e,MAAJ;IAEA,IAAIyK,WAAJ,EAAiB;MACfxpB,GAAA,CAAImM,OAAJ;IADe;EAlCW;EAuC9Buc,iBAAA,EAAmB;IACjB,KAAK,IAAIpvC,CAAA,GAAI,KAAK6+B,kBAAL,CAAwBjtC,MAAxB,GAAiC,CAAzC,EAA4CoO,CAAA,IAAK,CAAtD,EAAyDA,CAAA,EAAzD,EAA8D;MAC5D,IAAI,CAAC,KAAK6+B,kBAAL,CAAwB7+B,CAAxB,EAA2BkvC,OAAhC,EAAyC;QACvC,OAAO,KAAP;MADuC;IADmB;IAK9D,OAAO,IAAP;EANiB;AAjwEA;AA2wErB,WAAWkB,EAAX,IAAiBve,QAAjB,EAAsB;EACpB,IAAItnB,cAAA,CAAe9K,SAAf,CAAyB2wC,EAAzB,MAAiCzzC,SAArC,EAAgD;IAC9C4N,cAAA,CAAe9K,SAAf,CAAyBoyB,QAAA,CAAIue,EAAJ,CAAzB,IAAoC7lC,cAAA,CAAe9K,SAAf,CAAyB2wC,EAAzB,CAApC;EAD8C;AAD5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3qGtB;AAOA;AASA,MAAME,MAAA,GAAS,4BAAf;AAEA,MAAMte,aAAN,CAAoB;EAClB,OAAOhwB,GAAP,GAAa,IAAb;EAEA,OAAOuuC,GAAP,GAAa,IAAb;EAEA,OAAOhS,gBAAP,GAA0B,KAAKv8B,GAAL,GAAW,KAAKuuC,GAA1C;AALkB;AAiBpB,MAAM7mC,gBAAN,SAA+Bmb,+DAA/B,CAAiD;EAC/C,CAAA2rB,MAAA;EAEA,CAAAC,KAAA;EAEA,CAAA3kC,KAAA;EAEA,CAAA7f,QAAA;EAEA,CAAAykD,SAAA;EAEA,CAAAC,MAAA;EAEA,CAAAC,MAAA;EAEA,CAAAC,kBAAA;EAEA,CAAAC,eAAA;EAEA,CAAAC,eAAA;EAEA,CAAA3kD,EAAA,GAAM,CAAN;EAEA9B,YAAY;IAAEwhB,KAAF;IAAS6B,aAAA,GAAgBC,UAAA,CAAW3hB;EAApC,IAAiD,EAA7D,EAAiE;IAC/D;IACA,KAAK,CAAA6f,KAAL,GAAcA,KAAd;IACA,KAAK,CAAA7f,QAAL,GAAiB0hB,aAAjB;EAH+D;EAMjE,IAAI,CAAAsnB,KAAJA,CAAA,EAAa;IACX,OAAQ,KAAK,CAAAub,MAAL,KAAiB,IAAI35C,GAAJ,EAAzB;EADW;EAIb,IAAI,CAAA1E,IAAJA,CAAA,EAAY;IACV,IAAI,CAAC,KAAK,CAAAs+C,KAAV,EAAkB;MAChB,MAAM19C,GAAA,GAAM,KAAK,CAAA9G,QAAL,CAAeC,aAAf,CAA6B,KAA7B,CAAZ;MACA,MAAM;QAAEI;MAAF,IAAYyG,GAAlB;MACAzG,KAAA,CAAMgD,UAAN,GAAmB,QAAnB;MACAhD,KAAA,CAAM0kD,OAAN,GAAgB,QAAhB;MACA1kD,KAAA,CAAMvF,KAAN,GAAcuF,KAAA,CAAMtF,MAAN,GAAe,CAA7B;MACAsF,KAAA,CAAM2kD,QAAN,GAAiB,UAAjB;MACA3kD,KAAA,CAAMgC,GAAN,GAAYhC,KAAA,CAAM+B,IAAN,GAAa,CAAzB;MACA/B,KAAA,CAAMC,MAAN,GAAe,CAAC,CAAhB;MAEA,MAAM2F,GAAA,GAAM,KAAK,CAAAjG,QAAL,CAAeilD,eAAf,CAA+BZ,MAA/B,EAAuC,KAAvC,CAAZ;MACAp+C,GAAA,CAAI/F,YAAJ,CAAiB,OAAjB,EAA0B,CAA1B;MACA+F,GAAA,CAAI/F,YAAJ,CAAiB,QAAjB,EAA2B,CAA3B;MACA,KAAK,CAAAskD,KAAL,GAAc,KAAK,CAAAxkD,QAAL,CAAeilD,eAAf,CAA+BZ,MAA/B,EAAuC,MAAvC,CAAd;MACAv9C,GAAA,CAAIX,MAAJ,CAAWF,GAAX;MACAA,GAAA,CAAIE,MAAJ,CAAW,KAAK,CAAAq+C,KAAhB;MACA,KAAK,CAAAxkD,QAAL,CAAeklD,IAAf,CAAoB/+C,MAApB,CAA2BW,GAA3B;IAhBgB;IAkBlB,OAAO,KAAK,CAAA09C,KAAZ;EAnBU;EAsBZ3rB,UAAUC,IAAV,EAAgB;IACd,IAAI,CAACA,IAAL,EAAW;MACT,OAAO,MAAP;IADS;IAMX,IAAIltB,KAAA,GAAQ,KAAK,CAAAo9B,KAAL,CAAYn+B,GAAZ,CAAgBiuB,IAAhB,CAAZ;IACA,IAAIltB,KAAJ,EAAW;MACT,OAAOA,KAAP;IADS;IAIX,IAAIu5C,MAAJ,EAAYC,MAAZ,EAAoBC,MAApB,EAA4B/1C,GAA5B;IACA,IAAIwpB,IAAA,CAAKnzB,MAAL,KAAgB,CAApB,EAAuB;MACrB,MAAM2/C,IAAA,GAAOxsB,IAAA,CAAK,CAAL,CAAb;MACA,MAAMjU,MAAA,GAAS,IAAI3c,KAAJ,CAAU,GAAV,CAAf;MACA,KAAK,IAAI6L,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI,GAApB,EAAyBA,CAAA,EAAzB,EAA8B;QAC5B8Q,MAAA,CAAO9Q,CAAP,IAAYuxC,IAAA,CAAKvxC,CAAL,IAAU,GAAtB;MAD4B;MAG9BzE,GAAA,GAAM61C,MAAA,GAASC,MAAA,GAASC,MAAA,GAASxgC,MAAA,CAAO/rB,IAAP,CAAY,GAAZ,CAAjC;IANqB,CAAvB,MAOO;MACL,MAAM,CAACwsD,IAAD,EAAOC,IAAP,EAAaC,IAAb,IAAqB1sB,IAA3B;MACA,MAAM2sB,OAAA,GAAU,IAAIv9C,KAAJ,CAAU,GAAV,CAAhB;MACA,MAAMw9C,OAAA,GAAU,IAAIx9C,KAAJ,CAAU,GAAV,CAAhB;MACA,MAAMy9C,OAAA,GAAU,IAAIz9C,KAAJ,CAAU,GAAV,CAAhB;MACA,KAAK,IAAI6L,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI,GAApB,EAAyBA,CAAA,EAAzB,EAA8B;QAC5B0xC,OAAA,CAAQ1xC,CAAR,IAAauxC,IAAA,CAAKvxC,CAAL,IAAU,GAAvB;QACA2xC,OAAA,CAAQ3xC,CAAR,IAAawxC,IAAA,CAAKxxC,CAAL,IAAU,GAAvB;QACA4xC,OAAA,CAAQ5xC,CAAR,IAAayxC,IAAA,CAAKzxC,CAAL,IAAU,GAAvB;MAH4B;MAK9BoxC,MAAA,GAASM,OAAA,CAAQ3sD,IAAR,CAAa,GAAb,CAAT;MACAssD,MAAA,GAASM,OAAA,CAAQ5sD,IAAR,CAAa,GAAb,CAAT;MACAusD,MAAA,GAASM,OAAA,CAAQ7sD,IAAR,CAAa,GAAb,CAAT;MACAwW,GAAA,GAAM,GAAG61C,MAAH,GAAYC,MAAZ,GAAqBC,MAArB,EAAN;IAbK;IAgBPz5C,KAAA,GAAQ,KAAK,CAAAo9B,KAAL,CAAYn+B,GAAZ,CAAgByE,GAAhB,CAAR;IACA,IAAI1D,KAAJ,EAAW;MACT,KAAK,CAAAo9B,KAAL,CAAYlvB,GAAZ,CAAgBgf,IAAhB,EAAsBltB,KAAtB;MACA,OAAOA,KAAP;IAFS;IAQX,MAAMzL,EAAA,GAAM,KAAI,KAAK,CAAA0f,KAAO,iBAAgB,KAAK,CAAA1f,EAAL,EAAjC,EAAX;IACA,MAAM8I,GAAA,GAAO,QAAO9I,EAAG,GAAvB;IACA,KAAK,CAAA6oC,KAAL,CAAYlvB,GAAZ,CAAgBgf,IAAhB,EAAsB7vB,GAAtB;IACA,KAAK,CAAA+/B,KAAL,CAAYlvB,GAAZ,CAAgBxK,GAAhB,EAAqBrG,GAArB;IAEA,MAAMwK,MAAA,GAAS,KAAK,CAAAmyC,YAAL,CAAmBzlD,EAAnB,CAAf;IACA,KAAK,CAAA0lD,wBAAL,CAA+BV,MAA/B,EAAuCC,MAAvC,EAA+CC,MAA/C,EAAuD5xC,MAAvD;IAEA,OAAOxK,GAAP;EArDc;EAwDhB8vB,aAAa30B,OAAb,EAAsBF,OAAtB,EAA+B;IAC7B,MAAMoL,GAAA,GAAM,GAAGlL,OAAQ,IAAGF,OAAd,EAAZ;IACA,IAAI,KAAK,CAAAwgD,MAAL,KAAiBp1C,GAArB,EAA0B;MACxB,OAAO,KAAK,CAAAq1C,MAAZ;IADwB;IAI1B,KAAK,CAAAD,MAAL,GAAep1C,GAAf;IACA,KAAK,CAAAq1C,MAAL,GAAe,MAAf;IACA,KAAK,CAAAF,SAAL,EAAiBrxC,MAAjB;IAEA,IAAI,CAAChP,OAAD,IAAY,CAACF,OAAjB,EAA0B;MACxB,OAAO,KAAK,CAAAygD,MAAZ;IADwB;IAI1B,MAAMmB,KAAA,GAAQ,KAAK,CAAAC,MAAL,CAAa3hD,OAAb,CAAd;IACAA,OAAA,GAAUpK,iDAAA,CAAKmI,YAAL,CAAkB,GAAG2jD,KAArB,CAAV;IACA,MAAME,KAAA,GAAQ,KAAK,CAAAD,MAAL,CAAa7hD,OAAb,CAAd;IACAA,OAAA,GAAUlK,iDAAA,CAAKmI,YAAL,CAAkB,GAAG6jD,KAArB,CAAV;IACA,KAAK,CAAA9/C,IAAL,CAAW7F,KAAX,CAAiB1H,KAAjB,GAAyB,EAAzB;IAEA,IACGyL,OAAA,KAAY,SAAZ,IAAyBF,OAAA,KAAY,SAAtC,IACAE,OAAA,KAAYF,OAFd,EAGE;MACA,OAAO,KAAK,CAAAygD,MAAZ;IADA;IAaF,MAAM/rD,GAAA,GAAM,IAAIsP,KAAJ,CAAU,GAAV,CAAZ;IACA,KAAK,IAAI6L,CAAA,GAAI,CAAR,EAAWA,CAAA,IAAK,GAArB,EAA0BA,CAAA,EAA1B,EAA+B;MAC7B,MAAMrc,CAAA,GAAIqc,CAAA,GAAI,GAAd;MACAnb,GAAA,CAAImb,CAAJ,IAASrc,CAAA,IAAK,OAAL,GAAeA,CAAA,GAAI,KAAnB,GAA4B,CAAC,CAAAA,CAAA,GAAI,KAAJ,IAAa,KAAd,KAAwB,GAA7D;IAF6B;IAI/B,MAAMuuD,KAAA,GAAQrtD,GAAA,CAAIE,IAAJ,CAAS,GAAT,CAAd;IAEA,MAAMqH,EAAA,GAAM,KAAI,KAAK,CAAA0f,KAAO,aAA5B;IACA,MAAMpM,MAAA,GAAU,KAAK,CAAAmxC,kBAAL,GAA2B,KAAK,CAAAgB,YAAL,CAAmBzlD,EAAnB,CAA3C;IACA,KAAK,CAAA0lD,wBAAL,CAA+BI,KAA/B,EAAsCA,KAAtC,EAA6CA,KAA7C,EAAoDxyC,MAApD;IACA,KAAK,CAAAyyC,iBAAL,CAAwBzyC,MAAxB;IAEA,MAAM0yC,QAAA,GAAWA,CAACtuD,CAAD,EAAIX,CAAJ,KAAU;MACzB,MAAMkvD,KAAA,GAAQN,KAAA,CAAMjuD,CAAN,IAAW,GAAzB;MACA,MAAMgvB,GAAA,GAAMm/B,KAAA,CAAMnuD,CAAN,IAAW,GAAvB;MACA,MAAMwuD,GAAA,GAAM,IAAIn+C,KAAJ,CAAUhR,CAAA,GAAI,CAAd,CAAZ;MACA,KAAK,IAAI6c,CAAA,GAAI,CAAR,EAAWA,CAAA,IAAK7c,CAArB,EAAwB6c,CAAA,EAAxB,EAA6B;QAC3BsyC,GAAA,CAAItyC,CAAJ,IAASqyC,KAAA,GAASryC,CAAA,GAAI7c,CAAL,IAAW2vB,GAAA,GAAMu/B,KAAN,CAA5B;MAD2B;MAG7B,OAAOC,GAAA,CAAIvtD,IAAJ,CAAS,GAAT,CAAP;IAPyB,CAA3B;IASA,KAAK,CAAA+sD,wBAAL,CACEM,QAAA,CAAS,CAAT,EAAY,CAAZ,CADF,EAEEA,QAAA,CAAS,CAAT,EAAY,CAAZ,CAFF,EAGEA,QAAA,CAAS,CAAT,EAAY,CAAZ,CAHF,EAIE1yC,MAJF;IAOA,KAAK,CAAAkxC,MAAL,GAAgB,QAAOxkD,EAAG,GAA1B;IACA,OAAO,KAAK,CAAAwkD,MAAZ;EAjE6B;EAoE/B3rB,sBAAsB50B,OAAtB,EAA+BF,OAA/B,EAAwC+0B,UAAxC,EAAoDC,UAApD,EAAgE;IAC9D,MAAM5pB,GAAA,GAAM,GAAGlL,OAAQ,IAAGF,OAAQ,IAAG+0B,UAAW,IAAGC,UAAvC,EAAZ;IACA,IAAI,KAAK,CAAA2rB,eAAL,KAA0Bv1C,GAA9B,EAAmC;MACjC,OAAO,KAAK,CAAAw1C,eAAZ;IADiC;IAInC,KAAK,CAAAD,eAAL,GAAwBv1C,GAAxB;IACA,KAAK,CAAAw1C,eAAL,GAAwB,MAAxB;IACA,KAAK,CAAAF,kBAAL,EAA0BxxC,MAA1B;IAEA,IAAI,CAAChP,OAAD,IAAY,CAACF,OAAjB,EAA0B;MACxB,OAAO,KAAK,CAAA4gD,eAAZ;IADwB;IAI1B,MAAM,CAACgB,KAAD,EAAQE,KAAR,IAAiB,CAAC5hD,OAAD,EAAUF,OAAV,EAAmBtL,GAAnB,CAAuB,KAAK,CAAAmtD,MAAL,CAAa/wC,IAAb,CAAkB,IAAlB,CAAvB,CAAvB;IACA,IAAIsxC,MAAA,GAASnvD,IAAA,CAAKsX,KAAL,CACX,SAASq3C,KAAA,CAAM,CAAN,CAAT,GAAoB,SAASA,KAAA,CAAM,CAAN,CAA7B,GAAwC,SAASA,KAAA,CAAM,CAAN,CADtC,CAAb;IAGA,IAAIS,MAAA,GAASpvD,IAAA,CAAKsX,KAAL,CACX,SAASu3C,KAAA,CAAM,CAAN,CAAT,GAAoB,SAASA,KAAA,CAAM,CAAN,CAA7B,GAAwC,SAASA,KAAA,CAAM,CAAN,CADtC,CAAb;IAGA,IAAI,CAACQ,QAAD,EAAWC,QAAX,IAAuB,CAACxtB,UAAD,EAAaC,UAAb,EAAyBtgC,GAAzB,CACzB,KAAK,CAAAmtD,MAAL,CAAa/wC,IAAb,CAAkB,IAAlB,CADyB,CAA3B;IAGA,IAAIuxC,MAAA,GAASD,MAAb,EAAqB;MACnB,CAACA,MAAD,EAASC,MAAT,EAAiBC,QAAjB,EAA2BC,QAA3B,IAAuC,CACrCF,MADqC,EAErCD,MAFqC,EAGrCG,QAHqC,EAIrCD,QAJqC,CAAvC;IADmB;IAQrB,KAAK,CAAAtgD,IAAL,CAAW7F,KAAX,CAAiB1H,KAAjB,GAAyB,EAAzB;IAeA,MAAMwtD,QAAA,GAAWA,CAACO,EAAD,EAAKC,EAAL,EAASzvD,CAAT,KAAe;MAC9B,MAAMmvD,GAAA,GAAM,IAAIn+C,KAAJ,CAAU,GAAV,CAAZ;MACA,MAAMo7B,IAAA,GAAQ,CAAAijB,MAAA,GAASD,MAAT,IAAmBpvD,CAAjC;MACA,MAAM0vD,QAAA,GAAWF,EAAA,GAAK,GAAtB;MACA,MAAMG,OAAA,GAAW,CAAAF,EAAA,GAAKD,EAAL,KAAY,MAAMxvD,CAAN,CAA7B;MACA,IAAI4vD,IAAA,GAAO,CAAX;MACA,KAAK,IAAI/yC,CAAA,GAAI,CAAR,EAAWA,CAAA,IAAK7c,CAArB,EAAwB6c,CAAA,EAAxB,EAA6B;QAC3B,MAAM/b,CAAA,GAAIb,IAAA,CAAKsX,KAAL,CAAW63C,MAAA,GAASvyC,CAAA,GAAIuvB,IAAxB,CAAV;QACA,MAAM13B,KAAA,GAAQg7C,QAAA,GAAW7yC,CAAA,GAAI8yC,OAA7B;QACA,KAAK,IAAI/mB,CAAA,GAAIgnB,IAAR,EAAchnB,CAAA,IAAK9nC,CAAxB,EAA2B8nC,CAAA,EAA3B,EAAgC;UAC9BumB,GAAA,CAAIvmB,CAAJ,IAASl0B,KAAT;QAD8B;QAGhCk7C,IAAA,GAAO9uD,CAAA,GAAI,CAAX;MAN2B;MAQ7B,KAAK,IAAI+b,CAAA,GAAI+yC,IAAR,EAAc/yC,CAAA,GAAI,GAAvB,EAA4BA,CAAA,EAA5B,EAAiC;QAC/BsyC,GAAA,CAAItyC,CAAJ,IAASsyC,GAAA,CAAIS,IAAA,GAAO,CAAX,CAAT;MAD+B;MAGjC,OAAOT,GAAA,CAAIvtD,IAAJ,CAAS,GAAT,CAAP;IAjB8B,CAAhC;IAoBA,MAAMqH,EAAA,GAAM,KAAI,KAAK,CAAA0f,KAAO,uBAA5B;IACA,MAAMpM,MAAA,GAAU,KAAK,CAAAmxC,kBAAL,GAA2B,KAAK,CAAAgB,YAAL,CAAmBzlD,EAAnB,CAA3C;IAEA,KAAK,CAAA+lD,iBAAL,CAAwBzyC,MAAxB;IACA,KAAK,CAAAoyC,wBAAL,CACEM,QAAA,CAASK,QAAA,CAAS,CAAT,CAAT,EAAsBC,QAAA,CAAS,CAAT,CAAtB,EAAmC,CAAnC,CADF,EAEEN,QAAA,CAASK,QAAA,CAAS,CAAT,CAAT,EAAsBC,QAAA,CAAS,CAAT,CAAtB,EAAmC,CAAnC,CAFF,EAGEN,QAAA,CAASK,QAAA,CAAS,CAAT,CAAT,EAAsBC,QAAA,CAAS,CAAT,CAAtB,EAAmC,CAAnC,CAHF,EAIEhzC,MAJF;IAOA,KAAK,CAAAqxC,eAAL,GAAyB,QAAO3kD,EAAG,GAAnC;IACA,OAAO,KAAK,CAAA2kD,eAAZ;EA/E8D;EAkFhEx/B,QAAQ6T,OAAA,GAAU,KAAlB,EAAyB;IACvB,IAAIA,OAAA,KAAY,KAAK,CAAAwrB,MAAL,IAAgB,KAAK,CAAAG,eAArB,CAAhB,EAAwD;MACtD;IADsD;IAGxD,IAAI,KAAK,CAAAN,KAAT,EAAiB;MACf,KAAK,CAAAA,KAAL,CAAYuC,UAAZ,CAAuBA,UAAvB,CAAkC3zC,MAAlC;MACA,KAAK,CAAAoxC,KAAL,GAAc,IAAd;IAFe;IAIjB,IAAI,KAAK,CAAAD,MAAT,EAAkB;MAChB,KAAK,CAAAA,MAAL,CAAarwC,KAAb;MACA,KAAK,CAAAqwC,MAAL,GAAe,IAAf;IAFgB;IAIlB,KAAK,CAAApkD,EAAL,GAAW,CAAX;EAZuB;EAezB,CAAA+lD,kBAAmBzyC,MAAnB,EAA2B;IACzB,MAAMuzC,aAAA,GAAgB,KAAK,CAAAhnD,QAAL,CAAeilD,eAAf,CACpBZ,MADoB,EAEpB,eAFoB,CAAtB;IAIA2C,aAAA,CAAc9mD,YAAd,CAA2B,MAA3B,EAAmC,QAAnC;IACA8mD,aAAA,CAAc9mD,YAAd,CACE,QADF,EAEE,sFAFF;IAIAuT,MAAA,CAAOtN,MAAP,CAAc6gD,aAAd;EAVyB;EAa3B,CAAApB,aAAczlD,EAAd,EAAkB;IAChB,MAAMsT,MAAA,GAAS,KAAK,CAAAzT,QAAL,CAAeilD,eAAf,CAA+BZ,MAA/B,EAAuC,QAAvC,CAAf;IACA5wC,MAAA,CAAOvT,YAAP,CAAoB,6BAApB,EAAmD,MAAnD;IACAuT,MAAA,CAAOvT,YAAP,CAAoB,IAApB,EAA0BC,EAA1B;IACA,KAAK,CAAA+F,IAAL,CAAWC,MAAX,CAAkBsN,MAAlB;IAEA,OAAOA,MAAP;EANgB;EASlB,CAAAwzC,aAAcC,mBAAd,EAAmCC,IAAnC,EAAyClB,KAAzC,EAAgD;IAC9C,MAAMmB,MAAA,GAAS,KAAK,CAAApnD,QAAL,CAAeilD,eAAf,CAA+BZ,MAA/B,EAAuC8C,IAAvC,CAAf;IACAC,MAAA,CAAOlnD,YAAP,CAAoB,MAApB,EAA4B,UAA5B;IACAknD,MAAA,CAAOlnD,YAAP,CAAoB,aAApB,EAAmC+lD,KAAnC;IACAiB,mBAAA,CAAoB/gD,MAApB,CAA2BihD,MAA3B;EAJ8C;EAOhD,CAAAvB,yBAA0BwB,MAA1B,EAAkCC,MAAlC,EAA0CC,MAA1C,EAAkD9zC,MAAlD,EAA0D;IACxD,MAAMyzC,mBAAA,GAAsB,KAAK,CAAAlnD,QAAL,CAAeilD,eAAf,CAC1BZ,MAD0B,EAE1B,qBAF0B,CAA5B;IAIA5wC,MAAA,CAAOtN,MAAP,CAAc+gD,mBAAd;IACA,KAAK,CAAAD,YAAL,CAAmBC,mBAAnB,EAAwC,SAAxC,EAAmDG,MAAnD;IACA,KAAK,CAAAJ,YAAL,CAAmBC,mBAAnB,EAAwC,SAAxC,EAAmDI,MAAnD;IACA,KAAK,CAAAL,YAAL,CAAmBC,mBAAnB,EAAwC,SAAxC,EAAmDK,MAAnD;EARwD;EAW1D,CAAAxB,OAAQptD,KAAR,EAAe;IACb,KAAK,CAAAuN,IAAL,CAAW7F,KAAX,CAAiB1H,KAAjB,GAAyBA,KAAzB;IACA,OAAOotD,MAAA,CAAOyB,gBAAA,CAAiB,KAAK,CAAAthD,IAAtB,EAA6BuhD,gBAA7B,CAA8C,OAA9C,CAAP,CAAP;EAFa;AA5TgC;AAkUjD,MAAMlqC,gBAAN,SAA+B6b,+DAA/B,CAAiD;EAC/C/6B,YAAY;IAAEqjB,aAAA,GAAgBC,UAAA,CAAW3hB;EAA7B,IAA0C,EAAtD,EAA0D;IACxD;IACA,KAAK0nD,SAAL,GAAiBhmC,aAAjB;EAFwD;EAQ1D2X,cAAcv+B,KAAd,EAAqBC,MAArB,EAA6B;IAC3B,MAAMmf,MAAA,GAAS,KAAKwtC,SAAL,CAAeznD,aAAf,CAA6B,QAA7B,CAAf;IACAia,MAAA,CAAOpf,KAAP,GAAeA,KAAf;IACAof,MAAA,CAAOnf,MAAP,GAAgBA,MAAhB;IACA,OAAOmf,MAAP;EAJ2B;AATkB;AAiBjD,eAAeytC,SAAfA,CAAyB1+C,GAAzB,EAA8B0C,IAAA,GAAO,MAArC,EAA6C;EAC3C,IAEEiS,eAAA,CAAgB3U,GAAhB,EAAqBjJ,QAAA,CAASmiB,OAA9B,CAFF,EAGE;IACA,MAAMylC,QAAA,GAAW,MAAMzxB,KAAA,CAAMltB,GAAN,CAAvB;IACA,IAAI,CAAC2+C,QAAA,CAASC,EAAd,EAAkB;MAChB,MAAM,IAAIpoC,KAAJ,CAAUmoC,QAAA,CAASE,UAAnB,CAAN;IADgB;IAGlB,QAAQn8C,IAAR;MACE,KAAK,aAAL;QACE,OAAOi8C,QAAA,CAASG,WAAT,EAAP;MACF,KAAK,MAAL;QACE,OAAOH,QAAA,CAASI,IAAT,EAAP;MACF,KAAK,MAAL;QACE,OAAOJ,QAAA,CAASK,IAAT,EAAP;IANJ;IAQA,OAAOL,QAAA,CAASM,IAAT,EAAP;EAbA;EAiBF,OAAO,IAAIvkC,OAAJ,CAAY,CAACC,OAAD,EAAUe,MAAV,KAAqB;IACtC,MAAMwjC,OAAA,GAAU,IAAIC,cAAJ,EAAhB;IACAD,OAAA,CAAQtzC,IAAR,CAAa,KAAb,EAAoB5L,GAApB,EAAuC,IAAvC;IACAk/C,OAAA,CAAQE,YAAR,GAAuB18C,IAAvB;IAEAw8C,OAAA,CAAQG,kBAAR,GAA6B,MAAM;MACjC,IAAIH,OAAA,CAAQI,UAAR,KAAuBH,cAAA,CAAeI,IAA1C,EAAgD;QAC9C;MAD8C;MAGhD,IAAIL,OAAA,CAAQ9yB,MAAR,KAAmB,GAAnB,IAA0B8yB,OAAA,CAAQ9yB,MAAR,KAAmB,CAAjD,EAAoD;QAClD,IAAIj6B,IAAJ;QACA,QAAQuQ,IAAR;UACE,KAAK,aAAL;UACA,KAAK,MAAL;UACA,KAAK,MAAL;YACEvQ,IAAA,GAAO+sD,OAAA,CAAQP,QAAf;YACA;UACF;YACExsD,IAAA,GAAO+sD,OAAA,CAAQM,YAAf;YACA;QARJ;QAUA,IAAIrtD,IAAJ,EAAU;UACRwoB,OAAA,CAAQxoB,IAAR;UACA;QAFQ;MAZwC;MAiBpDupB,MAAA,CAAO,IAAIlF,KAAJ,CAAU0oC,OAAA,CAAQL,UAAlB,CAAP;IArBiC,CAAnC;IAwBAK,OAAA,CAAQ3jC,IAAR,CAAa,IAAb;EA7BsC,CAAjC,CAAP;AArB2C;AAsD7C,MAAMhH,oBAAN,SAAmCic,mEAAnC,CAAyD;EAIvDI,WAAW5wB,GAAX,EAAgBywB,eAAhB,EAAiC;IAC/B,OAAOiuB,SAAA,CACL1+C,GADK,EAEQ,KAAKyZ,YAAL,GAAoB,aAApB,GAAoC,MAF5C,EAGLY,IAHK,CAGAloB,IAAA,IAAQ;MACb,OAAO;QACLstD,QAAA,EACEttD,IAAA,YAAgBi5B,WAAhB,GACI,IAAIpP,UAAJ,CAAe7pB,IAAf,CADJ,GAEIgiB,8DAAA,CAAchiB,IAAd,CAJD;QAKLs+B;MALK,CAAP;IADa,CAHR,CAAP;EAD+B;AAJsB;AAoBzD,MAAMhc,0BAAN,SAAyCoc,yEAAzC,CAAqE;EAInED,WAAW5wB,GAAX,EAAgB;IACd,OAAO0+C,SAAA,CAAU1+C,GAAV,EAA4B,aAA5B,EAA2Cqa,IAA3C,CAAgDloB,IAAA,IAAQ;MAC7D,OAAO,IAAI6pB,UAAJ,CAAe7pB,IAAf,CAAP;IAD6D,CAAxD,CAAP;EADc;AAJmD;AAWrE,MAAMlB,aAAN,SAA4B6/B,4DAA5B,CAA2C;EAIzCE,WAAWtuB,IAAX,EAAiB;IACf,OAAO3L,QAAA,CAASilD,eAAT,CAAyBZ,MAAzB,EAAiC14C,IAAjC,CAAP;EADe;AAJwB;AAwC3C,MAAMkS,YAAN,CAAmB;EAIjBxf,YAAY;IACVqsB,OADU;IAEVJ,KAFU;IAGVtpB,QAHU;IAIVupB,OAAA,GAAU,CAJA;IAKVC,OAAA,GAAU,CALA;IAMVC,QAAA,GAAW;EAND,CAAZ,EAOG;IACD,KAAKC,OAAL,GAAeA,OAAf;IACA,KAAKJ,KAAL,GAAaA,KAAb;IACA,KAAKtpB,QAAL,GAAgBA,QAAhB;IACA,KAAKupB,OAAL,GAAeA,OAAf;IACA,KAAKC,OAAL,GAAeA,OAAf;IAIA,MAAMm+B,OAAA,GAAW,CAAAj+B,OAAA,CAAQ,CAAR,IAAaA,OAAA,CAAQ,CAAR,CAAb,IAA2B,CAA5C;IACA,MAAMk+B,OAAA,GAAW,CAAAl+B,OAAA,CAAQ,CAAR,IAAaA,OAAA,CAAQ,CAAR,CAAb,IAA2B,CAA5C;IACA,IAAIm+B,OAAJ,EAAaC,OAAb,EAAsBC,OAAtB,EAA+BC,OAA/B;IAEAhoD,QAAA,IAAY,GAAZ;IACA,IAAIA,QAAA,GAAW,CAAf,EAAkB;MAChBA,QAAA,IAAY,GAAZ;IADgB;IAGlB,QAAQA,QAAR;MACE,KAAK,GAAL;QACE6nD,OAAA,GAAU,CAAC,CAAX;QACAC,OAAA,GAAU,CAAV;QACAC,OAAA,GAAU,CAAV;QACAC,OAAA,GAAU,CAAV;QACA;MACF,KAAK,EAAL;QACEH,OAAA,GAAU,CAAV;QACAC,OAAA,GAAU,CAAV;QACAC,OAAA,GAAU,CAAV;QACAC,OAAA,GAAU,CAAV;QACA;MACF,KAAK,GAAL;QACEH,OAAA,GAAU,CAAV;QACAC,OAAA,GAAU,CAAC,CAAX;QACAC,OAAA,GAAU,CAAC,CAAX;QACAC,OAAA,GAAU,CAAV;QACA;MACF,KAAK,CAAL;QACEH,OAAA,GAAU,CAAV;QACAC,OAAA,GAAU,CAAV;QACAC,OAAA,GAAU,CAAV;QACAC,OAAA,GAAU,CAAC,CAAX;QACA;MACF;QACE,MAAM,IAAIvpC,KAAJ,CACJ,mEADI,CAAN;IA1BJ;IA+BA,IAAIgL,QAAJ,EAAc;MACZs+B,OAAA,GAAU,CAACA,OAAX;MACAC,OAAA,GAAU,CAACA,OAAX;IAFY;IAKd,IAAIC,aAAJ,EAAmBC,aAAnB;IACA,IAAIpuD,KAAJ,EAAWC,MAAX;IACA,IAAI8tD,OAAA,KAAY,CAAhB,EAAmB;MACjBI,aAAA,GAAgB9xD,IAAA,CAAKwX,GAAL,CAASi6C,OAAA,GAAUl+B,OAAA,CAAQ,CAAR,CAAnB,IAAiCJ,KAAjC,GAAyCC,OAAzD;MACA2+B,aAAA,GAAgB/xD,IAAA,CAAKwX,GAAL,CAASg6C,OAAA,GAAUj+B,OAAA,CAAQ,CAAR,CAAnB,IAAiCJ,KAAjC,GAAyCE,OAAzD;MACA1vB,KAAA,GAAS,CAAA4vB,OAAA,CAAQ,CAAR,IAAaA,OAAA,CAAQ,CAAR,CAAb,IAA2BJ,KAApC;MACAvvB,MAAA,GAAU,CAAA2vB,OAAA,CAAQ,CAAR,IAAaA,OAAA,CAAQ,CAAR,CAAb,IAA2BJ,KAArC;IAJiB,CAAnB,MAKO;MACL2+B,aAAA,GAAgB9xD,IAAA,CAAKwX,GAAL,CAASg6C,OAAA,GAAUj+B,OAAA,CAAQ,CAAR,CAAnB,IAAiCJ,KAAjC,GAAyCC,OAAzD;MACA2+B,aAAA,GAAgB/xD,IAAA,CAAKwX,GAAL,CAASi6C,OAAA,GAAUl+B,OAAA,CAAQ,CAAR,CAAnB,IAAiCJ,KAAjC,GAAyCE,OAAzD;MACA1vB,KAAA,GAAS,CAAA4vB,OAAA,CAAQ,CAAR,IAAaA,OAAA,CAAQ,CAAR,CAAb,IAA2BJ,KAApC;MACAvvB,MAAA,GAAU,CAAA2vB,OAAA,CAAQ,CAAR,IAAaA,OAAA,CAAQ,CAAR,CAAb,IAA2BJ,KAArC;IAJK;IASP,KAAKc,SAAL,GAAiB,CACfy9B,OAAA,GAAUv+B,KADK,EAEfw+B,OAAA,GAAUx+B,KAFK,EAGfy+B,OAAA,GAAUz+B,KAHK,EAIf0+B,OAAA,GAAU1+B,KAJK,EAKf2+B,aAAA,GAAgBJ,OAAA,GAAUv+B,KAAV,GAAkBq+B,OAAlC,GAA4CI,OAAA,GAAUz+B,KAAV,GAAkBs+B,OAL/C,EAMfM,aAAA,GAAgBJ,OAAA,GAAUx+B,KAAV,GAAkBq+B,OAAlC,GAA4CK,OAAA,GAAU1+B,KAAV,GAAkBs+B,OAN/C,CAAjB;IASA,KAAK9tD,KAAL,GAAaA,KAAb;IACA,KAAKC,MAAL,GAAcA,MAAd;EA/EC;EAsFH,IAAIgG,OAAJA,CAAA,EAAc;IACZ,MAAM;MAAE2pB;IAAF,IAAc,IAApB;IACA,OAAO5wB,uDAAA,CAAO,IAAP,EAAa,SAAb,EAAwB;MAC7B6G,SAAA,EAAW+pB,OAAA,CAAQ,CAAR,IAAaA,OAAA,CAAQ,CAAR,CADK;MAE7B9pB,UAAA,EAAY8pB,OAAA,CAAQ,CAAR,IAAaA,OAAA,CAAQ,CAAR,CAFI;MAG7B7pB,KAAA,EAAO6pB,OAAA,CAAQ,CAAR,CAHsB;MAI7B5pB,KAAA,EAAO4pB,OAAA,CAAQ,CAAR;IAJsB,CAAxB,CAAP;EAFY;EAedtO,MAAM;IACJkO,KAAA,GAAQ,KAAKA,KADT;IAEJtpB,QAAA,GAAW,KAAKA,QAFZ;IAGJupB,OAAA,GAAU,KAAKA,OAHX;IAIJC,OAAA,GAAU,KAAKA,OAJX;IAKJC,QAAA,GAAW;EALP,IAMF,EANJ,EAMQ;IACN,OAAO,IAAI5M,YAAJ,CAAiB;MACtB6M,OAAA,EAAS,KAAKA,OAAL,CAAapxB,KAAb,EADa;MAEtBgxB,KAFsB;MAGtBtpB,QAHsB;MAItBupB,OAJsB;MAKtBC,OALsB;MAMtBC;IANsB,CAAjB,CAAP;EADM;EAqBR0+B,uBAAuBzxD,CAAvB,EAA0BI,CAA1B,EAA6B;IAC3B,OAAOkC,iDAAA,CAAKizC,cAAL,CAAoB,CAACv1C,CAAD,EAAII,CAAJ,CAApB,EAA4B,KAAKszB,SAAjC,CAAP;EAD2B;EAW7Bg+B,2BAA2BvuD,IAA3B,EAAiC;IAC/B,MAAMwuD,OAAA,GAAUrvD,iDAAA,CAAKizC,cAAL,CAAoB,CAACpyC,IAAA,CAAK,CAAL,CAAD,EAAUA,IAAA,CAAK,CAAL,CAAV,CAApB,EAAwC,KAAKuwB,SAA7C,CAAhB;IACA,MAAMk+B,WAAA,GAActvD,iDAAA,CAAKizC,cAAL,CAAoB,CAACpyC,IAAA,CAAK,CAAL,CAAD,EAAUA,IAAA,CAAK,CAAL,CAAV,CAApB,EAAwC,KAAKuwB,SAA7C,CAApB;IACA,OAAO,CAACi+B,OAAA,CAAQ,CAAR,CAAD,EAAaA,OAAA,CAAQ,CAAR,CAAb,EAAyBC,WAAA,CAAY,CAAZ,CAAzB,EAAyCA,WAAA,CAAY,CAAZ,CAAzC,CAAP;EAH+B;EAejCC,kBAAkB7xD,CAAlB,EAAqBI,CAArB,EAAwB;IACtB,OAAOkC,iDAAA,CAAKwvD,qBAAL,CAA2B,CAAC9xD,CAAD,EAAII,CAAJ,CAA3B,EAAmC,KAAKszB,SAAxC,CAAP;EADsB;AArKP;AA0KnB,MAAMtN,2BAAN,SAA0CsmC,0DAA1C,CAAwD;EACtD/lD,YAAYorD,GAAZ,EAAiBh6B,UAAA,GAAa,CAA9B,EAAiC;IAC/B,MAAMg6B,GAAN,EAAW,6BAAX;IACA,KAAKh6B,UAAL,GAAkBA,UAAlB;EAF+B;AADqB;AAOxD,SAAS9R,YAATA,CAAsB1U,GAAtB,EAA2B;EACzB,MAAMsO,EAAA,GAAKtO,GAAA,CAAItD,MAAf;EACA,IAAIoO,CAAA,GAAI,CAAR;EACA,OAAOA,CAAA,GAAIwD,EAAJ,IAAUtO,GAAA,CAAI8K,CAAJ,EAAO21C,IAAP,OAAkB,EAAnC,EAAuC;IACrC31C,CAAA;EADqC;EAGvC,OAAO9K,GAAA,CAAIuI,SAAJ,CAAcuC,CAAd,EAAiBA,CAAA,GAAI,CAArB,EAAwB5H,WAAxB,OAA0C,OAAjD;AANyB;AAS3B,SAASw9C,SAATA,CAAmBj/C,QAAnB,EAA6B;EAC3B,OAAO,OAAOA,QAAP,KAAoB,QAApB,IAAgC,UAAUmO,IAAV,CAAenO,QAAf,CAAvC;AAD2B;AAU7B,SAASvQ,kBAATA,CAA4B8O,GAA5B,EAAiC2gD,aAAA,GAAgB,KAAjD,EAAwD;EACtD,IAAI,CAACA,aAAL,EAAoB;IAClB,CAAC3gD,GAAD,IAAQA,GAAA,CAAIqO,KAAJ,CAAU,MAAV,EAAkB,CAAlB,CAAR;EADkB;EAGpB,OAAOrO,GAAA,CAAIuI,SAAJ,CAAcvI,GAAA,CAAI4gD,WAAJ,CAAgB,GAAhB,IAAuB,CAArC,CAAP;AAJsD;AAcxD,SAASC,qBAATA,CAA+B7gD,GAA/B,EAAoC8gD,eAAA,GAAkB,cAAtD,EAAsE;EACpE,IAAI,OAAO9gD,GAAP,KAAe,QAAnB,EAA6B;IAC3B,OAAO8gD,eAAP;EAD2B;EAG7B,IAAIpsC,YAAA,CAAa1U,GAAb,CAAJ,EAAuB;IACrBhP,qDAAA,CAAK,oEAAL;IACA,OAAO8vD,eAAP;EAFqB;EAIvB,MAAMC,KAAA,GAAQ,qDAAd;EAGA,MAAMC,UAAA,GAAa,+BAAnB;EACA,MAAMC,QAAA,GAAWF,KAAA,CAAMG,IAAN,CAAWlhD,GAAX,CAAjB;EACA,IAAImhD,iBAAA,GACFH,UAAA,CAAWE,IAAX,CAAgBD,QAAA,CAAS,CAAT,CAAhB,KACAD,UAAA,CAAWE,IAAX,CAAgBD,QAAA,CAAS,CAAT,CAAhB,CADA,IAEAD,UAAA,CAAWE,IAAX,CAAgBD,QAAA,CAAS,CAAT,CAAhB,CAHF;EAIA,IAAIE,iBAAJ,EAAuB;IACrBA,iBAAA,GAAoBA,iBAAA,CAAkB,CAAlB,CAApB;IACA,IAAIA,iBAAA,CAAkBh9C,QAAlB,CAA2B,GAA3B,CAAJ,EAAqC;MAEnC,IAAI;QACFg9C,iBAAA,GAAoBH,UAAA,CAAWE,IAAX,CAClBE,kBAAA,CAAmBD,iBAAnB,CADkB,EAElB,CAFkB,CAApB;MADE,CAAJ,CAIE,MAAM;IAN2B;EAFhB;EAevB,OAAOA,iBAAA,IAAqBL,eAA5B;AAhCoE;AAmCtE,MAAMhsC,SAAN,CAAgB;EACdusC,OAAA,GAAU1lD,MAAA,CAAO3J,MAAP,CAAc,IAAd,CAAV;EAEAsvD,KAAA,GAAQ,EAAR;EAEAj0C,KAAK3R,IAAL,EAAW;IACT,IAAIA,IAAA,IAAQ,KAAK2lD,OAAjB,EAA0B;MACxBrwD,qDAAA,CAAM,gCAA+B0K,IAAhC,EAAL;IADwB;IAG1B,KAAK2lD,OAAL,CAAa3lD,IAAb,IAAqBkwC,IAAA,CAAKC,GAAL,EAArB;EAJS;EAOX/nB,QAAQpoB,IAAR,EAAc;IACZ,IAAI,EAAEA,IAAA,IAAQ,KAAK2lD,OAAb,CAAN,EAA6B;MAC3BrwD,qDAAA,CAAM,kCAAiC0K,IAAlC,EAAL;IAD2B;IAG7B,KAAK4lD,KAAL,CAAWhkD,IAAX,CAAgB;MACd5B,IADc;MAEdyhD,KAAA,EAAO,KAAKkE,OAAL,CAAa3lD,IAAb,CAFO;MAGdkiB,GAAA,EAAKguB,IAAA,CAAKC,GAAL;IAHS,CAAhB;IAMA,OAAO,KAAKwV,OAAL,CAAa3lD,IAAb,CAAP;EAVY;EAadpN,SAAA,EAAW;IAET,MAAMizD,MAAA,GAAS,EAAf;IACA,IAAIC,OAAA,GAAU,CAAd;IACA,WAAW;MAAE9lD;IAAF,CAAX,IAAuB,KAAK4lD,KAA5B,EAAmC;MACjCE,OAAA,GAAUtzD,IAAA,CAAKE,GAAL,CAASsN,IAAA,CAAKgB,MAAd,EAAsB8kD,OAAtB,CAAV;IADiC;IAGnC,WAAW;MAAE9lD,IAAF;MAAQyhD,KAAR;MAAev/B;IAAf,CAAX,IAAmC,KAAK0jC,KAAxC,EAA+C;MAC7CC,MAAA,CAAOjkD,IAAP,CAAY,GAAG5B,IAAA,CAAK+lD,MAAL,CAAYD,OAAZ,CAAqB,IAAG5jC,GAAA,GAAMu/B,KAAM,MAAnD;IAD6C;IAG/C,OAAOoE,MAAA,CAAO1xD,IAAP,CAAY,EAAZ,CAAP;EAVS;AAzBG;AAuChB,SAAS8kB,eAATA,CAAyB3U,GAAzB,EAA8BwZ,OAA9B,EAAuC;EAIrC,IAAI;IACF,MAAM;MAAEkoC;IAAF,IAAeloC,OAAA,GAAU,IAAIjD,GAAJ,CAAQvW,GAAR,EAAawZ,OAAb,CAAV,GAAkC,IAAIjD,GAAJ,CAAQvW,GAAR,CAAvD;IAEA,OAAO0hD,QAAA,KAAa,OAAb,IAAwBA,QAAA,KAAa,QAA5C;EAHE,CAAJ,CAIE,MAAM;IACN,OAAO,KAAP;EADM;AAR6B;AAgBvC,SAASC,aAATA,CAAuBj1C,CAAvB,EAA0B;EACxBA,CAAA,CAAElE,cAAF;AADwB;AAK1B,SAASo5C,UAATA,CAAoBv1B,OAApB,EAA6B;EAC3Bw1B,OAAA,CAAQC,GAAR,CAAY,2BAA2Bz1B,OAAvC;AAD2B;AAI7B,IAAI01B,kBAAJ;AAEA,MAAM5wD,aAAN,CAAoB;EAiBlB,OAAOob,YAAPA,CAAoBy1C,KAApB,EAA2B;IACzB,IAAI,CAACA,KAAD,IAAU,OAAOA,KAAP,KAAiB,QAA/B,EAAyC;MACvC,OAAO,IAAP;IADuC;IAKzCD,kBAAA,KAAuB,IAAIE,MAAJ,CACrB,QACE,UADF,GAEE,WAFF,GAGE,WAHF,GAIE,WAJF,GAKE,WALF,GAME,WANF,GAOE,YAPF,GAQE,WARF,GASE,IATF,GAUE,WAVF,GAWE,IAZmB,CAAvB;IAkBA,MAAMC,OAAA,GAAUH,kBAAA,CAAmBb,IAAnB,CAAwBc,KAAxB,CAAhB;IACA,IAAI,CAACE,OAAL,EAAc;MACZ,OAAO,IAAP;IADY;IAMd,MAAMC,IAAA,GAAOxzC,QAAA,CAASuzC,OAAA,CAAQ,CAAR,CAAT,EAAqB,EAArB,CAAb;IACA,IAAIE,KAAA,GAAQzzC,QAAA,CAASuzC,OAAA,CAAQ,CAAR,CAAT,EAAqB,EAArB,CAAZ;IACAE,KAAA,GAAQA,KAAA,IAAS,CAAT,IAAcA,KAAA,IAAS,EAAvB,GAA4BA,KAAA,GAAQ,CAApC,GAAwC,CAAhD;IACA,IAAIC,GAAA,GAAM1zC,QAAA,CAASuzC,OAAA,CAAQ,CAAR,CAAT,EAAqB,EAArB,CAAV;IACAG,GAAA,GAAMA,GAAA,IAAO,CAAP,IAAYA,GAAA,IAAO,EAAnB,GAAwBA,GAAxB,GAA8B,CAApC;IACA,IAAIC,IAAA,GAAO3zC,QAAA,CAASuzC,OAAA,CAAQ,CAAR,CAAT,EAAqB,EAArB,CAAX;IACAI,IAAA,GAAOA,IAAA,IAAQ,CAAR,IAAaA,IAAA,IAAQ,EAArB,GAA0BA,IAA1B,GAAiC,CAAxC;IACA,IAAIC,MAAA,GAAS5zC,QAAA,CAASuzC,OAAA,CAAQ,CAAR,CAAT,EAAqB,EAArB,CAAb;IACAK,MAAA,GAASA,MAAA,IAAU,CAAV,IAAeA,MAAA,IAAU,EAAzB,GAA8BA,MAA9B,GAAuC,CAAhD;IACA,IAAIC,MAAA,GAAS7zC,QAAA,CAASuzC,OAAA,CAAQ,CAAR,CAAT,EAAqB,EAArB,CAAb;IACAM,MAAA,GAASA,MAAA,IAAU,CAAV,IAAeA,MAAA,IAAU,EAAzB,GAA8BA,MAA9B,GAAuC,CAAhD;IACA,MAAMC,qBAAA,GAAwBP,OAAA,CAAQ,CAAR,KAAc,GAA5C;IACA,IAAIQ,UAAA,GAAa/zC,QAAA,CAASuzC,OAAA,CAAQ,CAAR,CAAT,EAAqB,EAArB,CAAjB;IACAQ,UAAA,GAAaA,UAAA,IAAc,CAAd,IAAmBA,UAAA,IAAc,EAAjC,GAAsCA,UAAtC,GAAmD,CAAhE;IACA,IAAIC,YAAA,GAAeh0C,QAAA,CAASuzC,OAAA,CAAQ,CAAR,CAAT,EAAqB,EAArB,KAA4B,CAA/C;IACAS,YAAA,GAAeA,YAAA,IAAgB,CAAhB,IAAqBA,YAAA,IAAgB,EAArC,GAA0CA,YAA1C,GAAyD,CAAxE;IAMA,IAAIF,qBAAA,KAA0B,GAA9B,EAAmC;MACjCH,IAAA,IAAQI,UAAR;MACAH,MAAA,IAAUI,YAAV;IAFiC,CAAnC,MAGO,IAAIF,qBAAA,KAA0B,GAA9B,EAAmC;MACxCH,IAAA,IAAQI,UAAR;MACAH,MAAA,IAAUI,YAAV;IAFwC;IAK1C,OAAO,IAAI/W,IAAJ,CAASA,IAAA,CAAKgX,GAAL,CAAST,IAAT,EAAeC,KAAf,EAAsBC,GAAtB,EAA2BC,IAA3B,EAAiCC,MAAjC,EAAyCC,MAAzC,CAAT,CAAP;EA5DyB;AAjBT;AAoFpB,SAASK,kBAATA,CAA4BC,OAA5B,EAAqC;EAAEzhC,KAAA,GAAQ,CAAV;EAAatpB,QAAA,GAAW;AAAxB,CAArC,EAAkE;EAChE,MAAM;IAAElG,KAAF;IAASC;EAAT,IAAoBgxD,OAAA,CAAQC,UAAR,CAAmB3rD,KAA7C;EACA,MAAMqqB,OAAA,GAAU,CAAC,CAAD,EAAI,CAAJ,EAAO9S,QAAA,CAAS9c,KAAT,CAAP,EAAwB8c,QAAA,CAAS7c,MAAT,CAAxB,CAAhB;EAEA,OAAO,IAAI8iB,YAAJ,CAAiB;IACtB6M,OADsB;IAEtBJ,KAFsB;IAGtBtpB;EAHsB,CAAjB,CAAP;AAJgE;AAWlE,SAAS+kD,MAATA,CAAgBptD,KAAhB,EAAuB;EACrB,IAAIA,KAAA,CAAMw7C,UAAN,CAAiB,GAAjB,CAAJ,EAA2B;IACzB,MAAM8X,QAAA,GAAWr0C,QAAA,CAASjf,KAAA,CAAMW,KAAN,CAAY,CAAZ,CAAT,EAAyB,EAAzB,CAAjB;IACA,OAAO,CACJ,CAAA2yD,QAAA,GAAW,QAAX,KAAwB,EADpB,EAEJ,CAAAA,QAAA,GAAW,QAAX,KAAwB,CAFpB,EAGLA,QAAA,GAAW,QAHN,CAAP;EAFyB;EAS3B,IAAItzD,KAAA,CAAMw7C,UAAN,CAAiB,MAAjB,CAAJ,EAA8B;IAE5B,OAAOx7C,KAAA,CACJW,KADI,CACsB,CADtB,EACyB,CAAC,CAD1B,EAEJge,KAFI,CAEE,GAFF,EAGJ1e,GAHI,CAGAlB,CAAA,IAAKkgB,QAAA,CAASlgB,CAAT,CAHL,CAAP;EAF4B;EAQ9B,IAAIiB,KAAA,CAAMw7C,UAAN,CAAiB,OAAjB,CAAJ,EAA+B;IAC7B,OAAOx7C,KAAA,CACJW,KADI,CACuB,CADvB,EAC0B,CAAC,CAD3B,EAEJge,KAFI,CAEE,GAFF,EAGJ1e,GAHI,CAGAlB,CAAA,IAAKkgB,QAAA,CAASlgB,CAAT,CAHL,EAIJ4B,KAJI,CAIE,CAJF,EAIK,CAJL,CAAP;EAD6B;EAQ/BW,qDAAA,CAAM,8BAA6BtB,KAAM,GAAzC;EACA,OAAO,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAP;AA3BqB;AA8BvB,SAASuzD,cAATA,CAAwBruB,MAAxB,EAAgC;EAC9B,MAAMsuB,IAAA,GAAOnsD,QAAA,CAASC,aAAT,CAAuB,MAAvB,CAAb;EACAksD,IAAA,CAAK9rD,KAAL,CAAWgD,UAAX,GAAwB,QAAxB;EACArD,QAAA,CAASklD,IAAT,CAAc/+C,MAAd,CAAqBgmD,IAArB;EACA,WAAWxnD,IAAX,IAAmBk5B,MAAA,CAAOh5B,IAAP,EAAnB,EAAkC;IAChCsnD,IAAA,CAAK9rD,KAAL,CAAW1H,KAAX,GAAmBgM,IAAnB;IACA,MAAMynD,aAAA,GAAgBtnC,MAAA,CAAO0iC,gBAAP,CAAwB2E,IAAxB,EAA8BxzD,KAApD;IACAklC,MAAA,CAAO/jB,GAAP,CAAWnV,IAAX,EAAiBohD,MAAA,CAAOqG,aAAP,CAAjB;EAHgC;EAKlCD,IAAA,CAAK/4C,MAAL;AAT8B;AAYhC,SAAS+mB,mBAATA,CAA6BM,GAA7B,EAAkC;EAChC,MAAM;IAAE2N,CAAF;IAAK3vC,CAAL;IAAQZ,CAAR;IAAWwwC,CAAX;IAAc1yB,CAAd;IAAiB2yB;EAAjB,IAAuB7N,GAAA,CAAImpB,YAAJ,EAA7B;EACA,OAAO,CAACxb,CAAD,EAAI3vC,CAAJ,EAAOZ,CAAP,EAAUwwC,CAAV,EAAa1yB,CAAb,EAAgB2yB,CAAhB,CAAP;AAFgC;AAKlC,SAASxC,0BAATA,CAAoCrL,GAApC,EAAyC;EACvC,MAAM;IAAE2N,CAAF;IAAK3vC,CAAL;IAAQZ,CAAR;IAAWwwC,CAAX;IAAc1yB,CAAd;IAAiB2yB;EAAjB,IAAuB7N,GAAA,CAAImpB,YAAJ,GAAmByI,UAAnB,EAA7B;EACA,OAAO,CAACjkB,CAAD,EAAI3vC,CAAJ,EAAOZ,CAAP,EAAUwwC,CAAV,EAAa1yB,CAAb,EAAgB2yB,CAAhB,CAAP;AAFuC;AAWzC,SAASjuC,kBAATA,CACEyM,GADF,EAEE/G,QAFF,EAGEusD,QAAA,GAAW,KAHb,EAIEC,UAAA,GAAa,IAJf,EAKE;EACA,IAAIxsD,QAAA,YAAoB8d,YAAxB,EAAsC;IACpC,MAAM;MAAEld,SAAF;MAAaC;IAAb,IAA4Bb,QAAA,CAASgB,OAA3C;IACA,MAAM;MAAEV;IAAF,IAAYyG,GAAlB;IACA,MAAM0lD,QAAA,GAAW5yD,wDAAA,CAAY6yD,mBAA7B;IAEA,MAAMpK,CAAA,GAAK,yBAAwB1hD,SAAU,IAA7C;MACE2hD,CAAA,GAAK,yBAAwB1hD,UAAW,IAD1C;IAEA,MAAM8rD,QAAA,GAAWF,QAAA,GAAY,SAAQnK,CAAE,QAAtB,GAAiC,QAAOA,CAAE,GAA3D;MACEsK,SAAA,GAAYH,QAAA,GAAY,SAAQlK,CAAE,QAAtB,GAAiC,QAAOA,CAAE,GADxD;IAGA,IAAI,CAACgK,QAAD,IAAavsD,QAAA,CAASiB,QAAT,GAAoB,GAApB,KAA4B,CAA7C,EAAgD;MAC9CX,KAAA,CAAMvF,KAAN,GAAc4xD,QAAd;MACArsD,KAAA,CAAMtF,MAAN,GAAe4xD,SAAf;IAF8C,CAAhD,MAGO;MACLtsD,KAAA,CAAMvF,KAAN,GAAc6xD,SAAd;MACAtsD,KAAA,CAAMtF,MAAN,GAAe2xD,QAAf;IAFK;EAb6B;EAmBtC,IAAIH,UAAJ,EAAgB;IACdzlD,GAAA,CAAI5G,YAAJ,CAAiB,oBAAjB,EAAuCH,QAAA,CAASiB,QAAhD;EADc;AApBhB;;;;;;;;;;;;;ACx8BF;AACA;AAOA,MAAM4rD,SAAN,CAAgB;EACd,CAAAxtD,MAAA,GAAU,IAAV;EAEA,CAAAe,EAAA,GAAM,CAAN;EAEA,CAAA0sD,OAAA,GAAW,IAAIjiD,GAAJ,EAAX;EAEAvM,YAAY;IAAEmrB;EAAF,CAAZ,EAA2B;IACzB,KAAKA,SAAL,GAAiBA,SAAjB;EADyB;EAI3BsjC,UAAU1tD,MAAV,EAAkB;IAChB,IAAI,CAAC,KAAK,CAAAA,MAAV,EAAmB;MACjB,KAAK,CAAAA,MAAL,GAAeA,MAAf;MACA;IAFiB;IAKnB,IAAI,KAAK,CAAAA,MAAL,KAAiBA,MAArB,EAA6B;MAC3B,IAAI,KAAK,CAAAytD,OAAL,CAAcn6C,IAAd,GAAqB,CAAzB,EAA4B;QAC1B,WAAWq6C,IAAX,IAAmB,KAAK,CAAAF,OAAL,CAActhD,MAAd,EAAnB,EAA2C;UACzCwhD,IAAA,CAAK35C,MAAL;UACAhU,MAAA,CAAO+G,MAAP,CAAc4mD,IAAd;QAFyC;MADjB;MAM5B,KAAK,CAAA3tD,MAAL,GAAeA,MAAf;IAP2B;EANb;EAiBlB,WAAW4tD,WAAXA,CAAA,EAAyB;IACvB,OAAOlzD,uDAAA,CAAO,IAAP,EAAa,aAAb,EAA4B,IAAII,4DAAJ,EAA5B,CAAP;EADuB;EAIzB,OAAO,CAAA+yD,MAAPA,CAAejoD,OAAf,EAAwB;IAAEtN,CAAF;IAAKI,CAAL;IAAQgD,KAAR;IAAeC;EAAf,CAAxB,EAAiD;IAC/C,MAAM;MAAEsF;IAAF,IAAY2E,OAAlB;IACA3E,KAAA,CAAMgC,GAAN,GAAY,GAAG,MAAMvK,CAAE,GAAvB;IACAuI,KAAA,CAAM+B,IAAN,GAAa,GAAG,MAAM1K,CAAE,GAAxB;IACA2I,KAAA,CAAMvF,KAAN,GAAc,GAAG,MAAMA,KAAM,GAA7B;IACAuF,KAAA,CAAMtF,MAAN,GAAe,GAAG,MAAMA,MAAO,GAA/B;EAL+C;EAQjD,CAAAmyD,UAAWzf,GAAX,EAAgB;IACd,MAAMxnC,GAAA,GAAM2mD,SAAA,CAAUI,WAAV,CAAsB/xD,MAAtB,CAA6B,CAA7B,EAAgC,CAAhC,EAA0D,IAA1D,CAAZ;IACA,KAAK,CAAAmE,MAAL,CAAa+G,MAAb,CAAoBF,GAApB;IACA2mD,SAAA,CAAU,CAAAK,MAAV,CAAkBhnD,GAAlB,EAAuBwnC,GAAvB;IAEA,OAAOxnC,GAAP;EALc;EAQhBknD,UAAU;IAAEC,QAAF;IAAY3f;EAAZ,CAAV,EAA6B90C,KAA7B,EAAoC00D,OAApC,EAA6C;IAC3C,MAAMltD,EAAA,GAAK,KAAK,CAAAA,EAAL,EAAX;IACA,MAAM4sD,IAAA,GAAO,KAAK,CAAAG,SAAL,CAAgBzf,GAAhB,CAAb;IACAsf,IAAA,CAAKtsD,SAAL,CAAeC,GAAf,CAAmB,WAAnB;IACA,MAAMwF,IAAA,GAAO0mD,SAAA,CAAUI,WAAV,CAAsB/sD,aAAtB,CAAoC,MAApC,CAAb;IACA8sD,IAAA,CAAK5mD,MAAL,CAAYD,IAAZ;IACA,MAAMolC,IAAA,GAAOshB,SAAA,CAAUI,WAAV,CAAsB/sD,aAAtB,CAAoC,MAApC,CAAb;IACAiG,IAAA,CAAKC,MAAL,CAAYmlC,IAAZ;IACA,MAAMgiB,MAAA,GAAU,SAAQ,KAAK9jC,SAAU,IAAGrpB,EAA3B,EAAf;IACAmrC,IAAA,CAAKprC,YAAL,CAAkB,IAAlB,EAAwBotD,MAAxB;IACAhiB,IAAA,CAAKprC,YAAL,CACE,GADF,EAEE0sD,SAAA,CAAU,CAAAW,gCAAV,CAA4CH,QAA5C,CAFF;IAMA,MAAMhnD,QAAA,GAAWwmD,SAAA,CAAUI,WAAV,CAAsB/sD,aAAtB,CAAoC,UAApC,CAAjB;IACAiG,IAAA,CAAKC,MAAL,CAAYC,QAAZ;IACA,MAAMonD,UAAA,GAAc,QAAOF,MAAR,EAAnB;IACAlnD,QAAA,CAASlG,YAAT,CAAsB,IAAtB,EAA4BstD,UAA5B;IACApnD,QAAA,CAASlG,YAAT,CAAsB,eAAtB,EAAuC,mBAAvC;IACA,MAAMutD,WAAA,GAAcb,SAAA,CAAUI,WAAV,CAAsB/sD,aAAtB,CAAoC,KAApC,CAApB;IACAmG,QAAA,CAASD,MAAT,CAAgBsnD,WAAhB;IACAA,WAAA,CAAYvtD,YAAZ,CAAyB,MAAzB,EAAkC,IAAGotD,MAAJ,EAAjC;IACAG,WAAA,CAAYhtD,SAAZ,CAAsBC,GAAtB,CAA0B,MAA1B;IAEA,MAAMgtD,GAAA,GAAMd,SAAA,CAAUI,WAAV,CAAsB/sD,aAAtB,CAAoC,KAApC,CAAZ;IACA8sD,IAAA,CAAK5mD,MAAL,CAAYunD,GAAZ;IACAX,IAAA,CAAK7sD,YAAL,CAAkB,MAAlB,EAA0BvH,KAA1B;IACAo0D,IAAA,CAAK7sD,YAAL,CAAkB,cAAlB,EAAkCmtD,OAAlC;IACAK,GAAA,CAAIxtD,YAAJ,CAAiB,MAAjB,EAA0B,IAAGotD,MAAJ,EAAzB;IAEA,KAAK,CAAAT,OAAL,CAAc/yC,GAAd,CAAkB3Z,EAAlB,EAAsB4sD,IAAtB;IAEA,OAAO;MAAE5sD,EAAF;MAAMqtD,UAAA,EAAa,QAAOA,UAAW;IAArC,CAAP;EAlC2C;EAqC7CG,iBAAiB;IAAEP,QAAF;IAAY3f;EAAZ,CAAjB,EAAoC;IAKlC,MAAMttC,EAAA,GAAK,KAAK,CAAAA,EAAL,EAAX;IACA,MAAM4sD,IAAA,GAAO,KAAK,CAAAG,SAAL,CAAgBzf,GAAhB,CAAb;IACAsf,IAAA,CAAKtsD,SAAL,CAAeC,GAAf,CAAmB,kBAAnB;IACA,MAAMwF,IAAA,GAAO0mD,SAAA,CAAUI,WAAV,CAAsB/sD,aAAtB,CAAoC,MAApC,CAAb;IACA8sD,IAAA,CAAK5mD,MAAL,CAAYD,IAAZ;IACA,MAAMolC,IAAA,GAAOshB,SAAA,CAAUI,WAAV,CAAsB/sD,aAAtB,CAAoC,MAApC,CAAb;IACAiG,IAAA,CAAKC,MAAL,CAAYmlC,IAAZ;IACA,MAAMgiB,MAAA,GAAU,SAAQ,KAAK9jC,SAAU,IAAGrpB,EAA3B,EAAf;IACAmrC,IAAA,CAAKprC,YAAL,CAAkB,IAAlB,EAAwBotD,MAAxB;IACAhiB,IAAA,CAAKprC,YAAL,CACE,GADF,EAEE0sD,SAAA,CAAU,CAAAW,gCAAV,CAA4CH,QAA5C,CAFF;IAIA9hB,IAAA,CAAKprC,YAAL,CAAkB,eAAlB,EAAmC,oBAAnC;IAEA,MAAM0tD,IAAA,GAAOhB,SAAA,CAAUI,WAAV,CAAsB/sD,aAAtB,CAAoC,KAApC,CAAb;IACA8sD,IAAA,CAAK5mD,MAAL,CAAYynD,IAAZ;IACAA,IAAA,CAAK1tD,YAAL,CAAkB,MAAlB,EAA2B,IAAGotD,MAAJ,EAA1B;IACA,MAAMO,IAAA,GAAOD,IAAA,CAAKE,SAAL,EAAb;IACAf,IAAA,CAAK5mD,MAAL,CAAY0nD,IAAZ;IACAD,IAAA,CAAKntD,SAAL,CAAeC,GAAf,CAAmB,aAAnB;IACAmtD,IAAA,CAAKptD,SAAL,CAAeC,GAAf,CAAmB,kBAAnB;IAEA,KAAK,CAAAmsD,OAAL,CAAc/yC,GAAd,CAAkB3Z,EAAlB,EAAsB4sD,IAAtB;IAEA,OAAO5sD,EAAP;EA9BkC;EAiCpC,OAAO,CAAAotD,gCAAPA,CAAyCQ,QAAzC,EAAmD;IACjD,MAAMlpC,MAAA,GAAS,EAAf;IACA,WAAWmpC,OAAX,IAAsBD,QAAtB,EAAgC;MAC9B,IAAI,CAACE,KAAD,EAAQC,KAAR,IAAiBF,OAArB;MACAnpC,MAAA,CAAOte,IAAP,CAAa,IAAG0nD,KAAM,IAAGC,KAAb,EAAZ;MACA,KAAK,IAAIn6C,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIi6C,OAAA,CAAQroD,MAA5B,EAAoCoO,CAAA,IAAK,CAAzC,EAA4C;QAC1C,MAAMrc,CAAA,GAAIs2D,OAAA,CAAQj6C,CAAR,CAAV;QACA,MAAMjc,CAAA,GAAIk2D,OAAA,CAAQj6C,CAAA,GAAI,CAAZ,CAAV;QACA,IAAIrc,CAAA,KAAMu2D,KAAV,EAAiB;UACfppC,MAAA,CAAOte,IAAP,CAAa,IAAGzO,CAAJ,EAAZ;UACAo2D,KAAA,GAAQp2D,CAAR;QAFe,CAAjB,MAGO,IAAIA,CAAA,KAAMo2D,KAAV,EAAiB;UACtBrpC,MAAA,CAAOte,IAAP,CAAa,IAAG7O,CAAJ,EAAZ;UACAu2D,KAAA,GAAQv2D,CAAR;QAFsB;MANkB;MAW5CmtB,MAAA,CAAOte,IAAP,CAAY,GAAZ;IAd8B;IAgBhC,OAAOse,MAAA,CAAO/rB,IAAP,CAAY,GAAZ,CAAP;EAlBiD;EAqBnDq1D,UAAUhuD,EAAV,EAAcstC,GAAd,EAAmB;IACjBmf,SAAA,CAAU,CAAAK,MAAV,CAAkB,KAAK,CAAAJ,OAAL,CAAchiD,GAAd,CAAkB1K,EAAlB,CAAlB,EAAyCstC,GAAzC;EADiB;EAInBtjB,OAAOhqB,EAAP,EAAWmC,KAAX,EAAkB;IAChB,KAAK,CAAAuqD,OAAL,CAAchiD,GAAd,CAAkB1K,EAAlB,EAAsBD,YAAtB,CAAmC,oBAAnC,EAAyDoC,KAAzD;EADgB;EAIlB8rD,YAAYjuD,EAAZ,EAAgBxH,KAAhB,EAAuB;IACrB,KAAK,CAAAk0D,OAAL,CAAchiD,GAAd,CAAkB1K,EAAlB,EAAsBD,YAAtB,CAAmC,MAAnC,EAA2CvH,KAA3C;EADqB;EAIvB01D,cAAcluD,EAAd,EAAkBktD,OAAlB,EAA2B;IACzB,KAAK,CAAAR,OAAL,CAAchiD,GAAd,CAAkB1K,EAAlB,EAAsBD,YAAtB,CAAmC,cAAnC,EAAmDmtD,OAAnD;EADyB;EAI3BiB,SAASnuD,EAAT,EAAayV,SAAb,EAAwB;IACtB,KAAK,CAAAi3C,OAAL,CAAchiD,GAAd,CAAkB1K,EAAlB,EAAsBM,SAAtB,CAAgCC,GAAhC,CAAoCkV,SAApC;EADsB;EAIxB24C,YAAYpuD,EAAZ,EAAgByV,SAAhB,EAA2B;IACzB,KAAK,CAAAi3C,OAAL,CAAchiD,GAAd,CAAkB1K,EAAlB,EAAsBM,SAAtB,CAAgC2S,MAAhC,CAAuCwC,SAAvC;EADyB;EAI3BxC,OAAOjT,EAAP,EAAW;IACT,KAAK,CAAA0sD,OAAL,CAAchiD,GAAd,CAAkB1K,EAAlB,EAAsBiT,MAAtB;IACA,KAAK,CAAAy5C,OAAL,CAAc1xC,MAAd,CAAqBhb,EAArB;EAFS;EAKXmlB,QAAA,EAAU;IACR,KAAK,CAAAlmB,MAAL,GAAe,IAAf;IACA,WAAW2tD,IAAX,IAAmB,KAAK,CAAAF,OAAL,CAActhD,MAAd,EAAnB,EAA2C;MACzCwhD,IAAA,CAAK35C,MAAL;IADyC;IAG3C,KAAK,CAAAy5C,OAAL,CAAc34C,KAAd;EALQ;AAxKI;;;;;;;;;;;;;;;;;;;;;;;ACLhB;AAQA;AAKA;AACA;AAKA,MAAM06C,cAAN,SAA6Bp0C,8BAA7B,CAA8C;EAC5C,CAAAq0C,kBAAA,GAAsB,KAAKC,aAAL,CAAmB95C,IAAnB,CAAwB,IAAxB,CAAtB;EAEA,CAAA+5C,mBAAA,GAAuB,KAAKC,cAAL,CAAoBh6C,IAApB,CAAyB,IAAzB,CAAvB;EAEA,CAAAi6C,mBAAA,GAAuB,KAAKC,cAAL,CAAoBl6C,IAApB,CAAyB,IAAzB,CAAvB;EAEA,CAAAm6C,qBAAA,GAAyB,KAAKC,gBAAL,CAAsBp6C,IAAtB,CAA2B,IAA3B,CAAzB;EAEA,CAAArc,KAAA;EAEA,CAAA8R,OAAA,GAAW,EAAX;EAEA,CAAA4kD,WAAA,GAAe,GAAG,KAAKlvD,EAAG,SAA1B;EAEA,CAAAkO,QAAA;EAEA,CAAAyV,WAAA,GAAe,IAAf;EAEA,OAAOwrC,uBAAP,GAAiC,EAAjC;EAEA,OAAOC,gBAAP,GAA0B,CAA1B;EAEA,OAAOC,aAAP,GAAuB,IAAvB;EAEA,OAAOC,gBAAP,GAA0B,EAA1B;EAEA,WAAWC,gBAAXA,CAAA,EAA8B;IAC5B,MAAMC,KAAA,GAAQf,cAAA,CAAep7C,SAA7B;IAEA,MAAMo8C,YAAA,GAAeC,IAAA,IAAQA,IAAA,CAAKtM,OAAL,EAA7B;IAEA,MAAMuM,KAAA,GAAQrB,+BAAA,CAA0BsB,eAAxC;IACA,MAAMC,GAAA,GAAMvB,+BAAA,CAA0BwB,aAAtC;IAEA,OAAOn2D,eAAA,CACL,IADK,EAEL,kBAFK,EAGL,IAAI60D,qBAAJ,CAAoB,CAClB,CAIE,CAAC,QAAD,EAAW,YAAX,EAAyB,QAAzB,EAAmC,YAAnC,CAJF,EAKEgB,KAAA,CAAMO,cALR,EAME;MAAEC,OAAA,EAAS;IAAX,CANF,CADkB,EASlB,CACE,CAAC,YAAD,EAAe,gBAAf,EAAiC,QAAjC,EAA2C,YAA3C,CADF,EAEER,KAAA,CAAMO,cAFR,CATkB,EAalB,CACE,CAAC,WAAD,EAAc,eAAd,CADF,EAEEP,KAAA,CAAMS,eAFR,EAGE;MAAEvX,IAAA,EAAM,CAAC,CAACiX,KAAF,EAAS,CAAT,CAAR;MAAqBO,OAAA,EAAST;IAA9B,CAHF,CAbkB,EAkBlB,CACE,CAAC,gBAAD,EAAmB,qBAAnB,CADF,EAEED,KAAA,CAAMS,eAFR,EAGE;MAAEvX,IAAA,EAAM,CAAC,CAACmX,GAAF,EAAO,CAAP,CAAR;MAAmBK,OAAA,EAAST;IAA5B,CAHF,CAlBkB,EAuBlB,CACE,CAAC,YAAD,EAAe,gBAAf,CADF,EAEED,KAAA,CAAMS,eAFR,EAGE;MAAEvX,IAAA,EAAM,CAACiX,KAAD,EAAQ,CAAR,CAAR;MAAoBO,OAAA,EAAST;IAA7B,CAHF,CAvBkB,EA4BlB,CACE,CAAC,iBAAD,EAAoB,sBAApB,CADF,EAEED,KAAA,CAAMS,eAFR,EAGE;MAAEvX,IAAA,EAAM,CAACmX,GAAD,EAAM,CAAN,CAAR;MAAkBK,OAAA,EAAST;IAA3B,CAHF,CA5BkB,EAiClB,CACE,CAAC,SAAD,EAAY,aAAZ,CADF,EAEED,KAAA,CAAMS,eAFR,EAGE;MAAEvX,IAAA,EAAM,CAAC,CAAD,EAAI,CAACiX,KAAL,CAAR;MAAqBO,OAAA,EAAST;IAA9B,CAHF,CAjCkB,EAsClB,CACE,CAAC,cAAD,EAAiB,mBAAjB,CADF,EAEED,KAAA,CAAMS,eAFR,EAGE;MAAEvX,IAAA,EAAM,CAAC,CAAD,EAAI,CAACmX,GAAL,CAAR;MAAmBK,OAAA,EAAST;IAA5B,CAHF,CAtCkB,EA2ClB,CACE,CAAC,WAAD,EAAc,eAAd,CADF,EAEED,KAAA,CAAMS,eAFR,EAGE;MAAEvX,IAAA,EAAM,CAAC,CAAD,EAAIiX,KAAJ,CAAR;MAAoBO,OAAA,EAAST;IAA7B,CAHF,CA3CkB,EAgDlB,CACE,CAAC,gBAAD,EAAmB,qBAAnB,CADF,EAEED,KAAA,CAAMS,eAFR,EAGE;MAAEvX,IAAA,EAAM,CAAC,CAAD,EAAImX,GAAJ,CAAR;MAAkBK,OAAA,EAAST;IAA3B,CAHF,CAhDkB,CAApB,CAHK,CAAP;EAR4B;EAoE9B,OAAOn0C,KAAP,GAAe,UAAf;EAEA,OAAO60C,WAAP,GAAqB72D,yBAAA,CAAqB8C,QAA1C;EAEA8B,YAAYmb,MAAZ,EAAoB;IAClB,MAAM;MAAE,GAAGA,MAAL;MAAa7U,IAAA,EAAM;IAAnB,CAAN;IACA,KAAK,CAAAhM,KAAL,GACE6gB,MAAA,CAAO7gB,KAAP,IACAi2D,cAAA,CAAeY,aADf,IAEAh1C,8BAAA,CAAiB+1C,iBAHnB;IAIA,KAAK,CAAAliD,QAAL,GAAiBmL,MAAA,CAAOnL,QAAP,IAAmBugD,cAAA,CAAea,gBAAnD;EANkB;EAUpB,OAAOe,UAAPA,CAAkBC,IAAlB,EAAwB;IACtBj2C,8BAAA,CAAiBg2C,UAAjB,CAA4BC,IAA5B,EAAkC;MAChCC,OAAA,EAAS,CAAC,iCAAD;IADuB,CAAlC;IAGA,MAAMrwD,KAAA,GAAQmnD,gBAAA,CAAiBxnD,QAAA,CAAS2wD,eAA1B,CAAd;IAYA,KAAKpB,gBAAL,GAAwBqB,UAAA,CACtBvwD,KAAA,CAAMonD,gBAAN,CAAuB,oBAAvB,CADsB,CAAxB;EAhBsB;EAsBxB,OAAOoJ,mBAAPA,CAA2BllD,IAA3B,EAAiCC,KAAjC,EAAwC;IACtC,QAAQD,IAAR;MACE,KAAK6iD,+BAAA,CAA2BsC,aAAhC;QACElC,cAAA,CAAea,gBAAf,GAAkC7jD,KAAlC;QACA;MACF,KAAK4iD,+BAAA,CAA2BuC,cAAhC;QACEnC,cAAA,CAAeY,aAAf,GAA+B5jD,KAA/B;QACA;IANJ;EADsC;EAYxColD,aAAarlD,IAAb,EAAmBC,KAAnB,EAA0B;IACxB,QAAQD,IAAR;MACE,KAAK6iD,+BAAA,CAA2BsC,aAAhC;QACE,KAAK,CAAAG,cAAL,CAAqBrlD,KAArB;QACA;MACF,KAAK4iD,+BAAA,CAA2BuC,cAAhC;QACE,KAAK,CAAAG,WAAL,CAAkBtlD,KAAlB;QACA;IANJ;EADwB;EAY1B,WAAWulD,yBAAXA,CAAA,EAAuC;IACrC,OAAO,CACL,CACE3C,+BAAA,CAA2BsC,aAD7B,EAEElC,cAAA,CAAea,gBAFjB,CADK,EAKL,CACEjB,+BAAA,CAA2BuC,cAD7B,EAEEnC,cAAA,CAAeY,aAAf,IAAgCh1C,8BAAA,CAAiB+1C,iBAFnD,CALK,CAAP;EADqC;EAcvC,IAAIa,kBAAJA,CAAA,EAAyB;IACvB,OAAO,CACL,CAAC5C,+BAAA,CAA2BsC,aAA5B,EAA2C,KAAK,CAAAziD,QAAhD,CADK,EAEL,CAACmgD,+BAAA,CAA2BuC,cAA5B,EAA4C,KAAK,CAAAp4D,KAAjD,CAFK,CAAP;EADuB;EAWzB,CAAAs4D,eAAgB5iD,QAAhB,EAA0B;IACxB,MAAMgjD,WAAA,GAAc3+C,IAAA,IAAQ;MAC1B,KAAK4+C,SAAL,CAAejxD,KAAf,CAAqBgO,QAArB,GAAiC,QAAOqE,IAAK,2BAA7C;MACA,KAAKmqB,SAAL,CAAe,CAAf,EAAkB,EAAEnqB,IAAA,GAAO,KAAK,CAAArE,QAAZ,CAAF,GAA2B,KAAKkjD,WAAlD;MACA,KAAK,CAAAljD,QAAL,GAAiBqE,IAAjB;MACA,KAAK,CAAA8+C,mBAAL;IAJ0B,CAA5B;IAMA,MAAMC,aAAA,GAAgB,KAAK,CAAApjD,QAA3B;IACA,KAAKqjD,WAAL,CAAiB;MACfC,GAAA,EAAKA,CAAA,KAAM;QACTN,WAAA,CAAYhjD,QAAZ;MADS,CADI;MAIfujD,IAAA,EAAMA,CAAA,KAAM;QACVP,WAAA,CAAYI,aAAZ;MADU,CAJG;MAOfI,QAAA,EAAU,IAPK;MAQflmD,IAAA,EAAM6iD,+BAAA,CAA2BsC,aARlB;MASfgB,mBAAA,EAAqB,IATN;MAUfC,QAAA,EAAU;IAVK,CAAjB;EARwB;EA0B1B,CAAAb,YAAav4D,KAAb,EAAoB;IAClB,MAAMq5D,UAAA,GAAa,KAAK,CAAAr5D,KAAxB;IACA,KAAK+4D,WAAL,CAAiB;MACfC,GAAA,EAAKA,CAAA,KAAM;QACT,KAAK,CAAAh5D,KAAL,GAAc,KAAK24D,SAAL,CAAejxD,KAAf,CAAqB1H,KAArB,GAA6BA,KAA3C;MADS,CADI;MAIfi5D,IAAA,EAAMA,CAAA,KAAM;QACV,KAAK,CAAAj5D,KAAL,GAAc,KAAK24D,SAAL,CAAejxD,KAAf,CAAqB1H,KAArB,GAA6Bq5D,UAA3C;MADU,CAJG;MAOfH,QAAA,EAAU,IAPK;MAQflmD,IAAA,EAAM6iD,+BAAA,CAA2BuC,cARlB;MASfe,mBAAA,EAAqB,IATN;MAUfC,QAAA,EAAU;IAVK,CAAjB;EAFkB;EAqBpB3B,gBAAgB14D,CAAhB,EAAmBI,CAAnB,EAAsB;IACpB,KAAKm6D,UAAL,CAAgBC,wBAAhB,CAAyCx6D,CAAzC,EAA4CI,CAA5C,EAAgE,IAAhE;EADoB;EAKtBq6D,sBAAA,EAAwB;IAEtB,MAAM7nC,KAAA,GAAQ,KAAKinC,WAAnB;IACA,OAAO,CACL,CAAC3C,cAAA,CAAeW,gBAAhB,GAAmCjlC,KAD9B,EAEL,EAAEskC,cAAA,CAAeW,gBAAf,GAAkC,KAAK,CAAAlhD,QAAvC,CAAF,GAAsDic,KAFjD,CAAP;EAHsB;EAUxB8nC,QAAA,EAAU;IACR,IAAI,CAAC,KAAKhzD,MAAV,EAAkB;MAChB;IADgB;IAGlB,MAAMgzD,OAAN;IACA,IAAI,KAAKtrD,GAAL,KAAa,IAAjB,EAAuB;MACrB;IADqB;IAIvB,IAAI,CAAC,KAAKurD,eAAV,EAA2B;MAGzB,KAAKjzD,MAAL,CAAYsB,GAAZ,CAAgB,IAAhB;IAHyB;EATnB;EAiBV4xD,eAAA,EAAiB;IACf,IAAI,KAAKC,YAAL,EAAJ,EAAyB;MACvB;IADuB;IAIzB,KAAKnzD,MAAL,CAAYozD,eAAZ,CAA4B,KAA5B;IACA,KAAKpzD,MAAL,CAAYqzD,aAAZ,CAA0Bh5D,yBAAA,CAAqB8C,QAA/C;IACA,MAAM+1D,cAAN;IACA,KAAKI,UAAL,CAAgBjyD,SAAhB,CAA0B2S,MAA1B,CAAiC,SAAjC;IACA,KAAKk+C,SAAL,CAAeqB,eAAf,GAAiC,IAAjC;IACA,KAAKC,YAAL,GAAoB,KAApB;IACA,KAAK9rD,GAAL,CAASmI,eAAT,CAAyB,uBAAzB;IACA,KAAKqiD,SAAL,CAAe7oD,gBAAf,CAAgC,SAAhC,EAA2C,KAAK,CAAA0mD,qBAAhD;IACA,KAAKmC,SAAL,CAAe7oD,gBAAf,CAAgC,OAAhC,EAAyC,KAAK,CAAAsmD,mBAA9C;IACA,KAAKuC,SAAL,CAAe7oD,gBAAf,CAAgC,MAAhC,EAAwC,KAAK,CAAAomD,kBAA7C;IACA,KAAKyC,SAAL,CAAe7oD,gBAAf,CAAgC,OAAhC,EAAyC,KAAK,CAAAwmD,mBAA9C;EAfe;EAmBjB4D,gBAAA,EAAkB;IAChB,IAAI,CAAC,KAAKN,YAAL,EAAL,EAA0B;MACxB;IADwB;IAI1B,KAAKnzD,MAAL,CAAYozD,eAAZ,CAA4B,IAA5B;IACA,MAAMK,eAAN;IACA,KAAKH,UAAL,CAAgBjyD,SAAhB,CAA0BC,GAA1B,CAA8B,SAA9B;IACA,KAAK4wD,SAAL,CAAeqB,eAAf,GAAiC,KAAjC;IACA,KAAK7rD,GAAL,CAAS5G,YAAT,CAAsB,uBAAtB,EAA+C,KAAK,CAAAmvD,WAApD;IACA,KAAKuD,YAAL,GAAoB,IAApB;IACA,KAAKtB,SAAL,CAAej+C,mBAAf,CAAmC,SAAnC,EAA8C,KAAK,CAAA87C,qBAAnD;IACA,KAAKmC,SAAL,CAAej+C,mBAAf,CAAmC,OAAnC,EAA4C,KAAK,CAAA07C,mBAAjD;IACA,KAAKuC,SAAL,CAAej+C,mBAAf,CAAmC,MAAnC,EAA2C,KAAK,CAAAw7C,kBAAhD;IACA,KAAKyC,SAAL,CAAej+C,mBAAf,CAAmC,OAAnC,EAA4C,KAAK,CAAA47C,mBAAjD;IAIA,KAAKnoD,GAAL,CAASrD,KAAT,CAAe;MACbE,aAAA,EAAe;IADF,CAAf;IAKA,KAAKmvD,SAAL,GAAiB,KAAjB;IACA,KAAK1zD,MAAL,CAAY0H,GAAZ,CAAgBrG,SAAhB,CAA0BC,GAA1B,CAA8B,iBAA9B;EAxBgB;EA4BlBqyD,QAAQlwD,KAAR,EAAe;IACb,IAAI,CAAC,KAAKmwD,mBAAV,EAA+B;MAC7B;IAD6B;IAG/B,MAAMD,OAAN,CAAclwD,KAAd;IACA,IAAIA,KAAA,CAAMI,MAAN,KAAiB,KAAKquD,SAA1B,EAAqC;MACnC,KAAKA,SAAL,CAAe7tD,KAAf;IADmC;EALxB;EAWfwvD,UAAA,EAAY;IACV,IAAI,KAAKn4D,KAAT,EAAgB;MACd,KAAK,CAAAo4D,gBAAL;MAEA;IAHc;IAKhB,KAAKZ,cAAL;IACA,KAAKhB,SAAL,CAAe7tD,KAAf;IACA,IAAI,KAAK0vD,eAAL,EAAsBC,UAA1B,EAAsC;MACpC,KAAKC,MAAL;IADoC;IAGtC,KAAKF,eAAL,GAAuB,IAAvB;EAXU;EAeZ5P,QAAA,EAAU;IACR,OAAO,CAAC,KAAK+N,SAAN,IAAmB,KAAKA,SAAL,CAAegC,SAAf,CAAyB5J,IAAzB,OAAoC,EAA9D;EADQ;EAKVt2C,OAAA,EAAS;IACP,KAAK0/C,SAAL,GAAiB,KAAjB;IACA,IAAI,KAAK1zD,MAAT,EAAiB;MACf,KAAKA,MAAL,CAAYozD,eAAZ,CAA4B,IAA5B;MACA,KAAKpzD,MAAL,CAAY0H,GAAZ,CAAgBrG,SAAhB,CAA0BC,GAA1B,CAA8B,iBAA9B;IAFe;IAIjB,MAAM0S,MAAN;EANO;EAaT,CAAAmgD,YAAA,EAAe;IACb,MAAMC,IAAA,GAAO,KAAKlC,SAAL,CAAemC,oBAAf,CAAoC,KAApC,CAAb;IACA,IAAID,IAAA,CAAK7tD,MAAL,KAAgB,CAApB,EAAuB;MACrB,OAAO,KAAK2rD,SAAL,CAAegC,SAAtB;IADqB;IAGvB,MAAMzuC,MAAA,GAAS,EAAf;IACA,WAAW/d,GAAX,IAAkB0sD,IAAlB,EAAwB;MACtB3uC,MAAA,CAAOte,IAAP,CAAYO,GAAA,CAAIwsD,SAAJ,CAAcI,OAAd,CAAsB,UAAtB,EAAkC,EAAlC,CAAZ;IADsB;IAGxB,OAAO7uC,MAAA,CAAO/rB,IAAP,CAAY,IAAZ,CAAP;EATa;EAYf,CAAA04D,oBAAA,EAAuB;IACrB,MAAM,CAACv6C,WAAD,EAAc08C,YAAd,IAA8B,KAAKC,gBAAzC;IAEA,IAAI/4D,IAAJ;IACA,IAAI,KAAKw3D,eAAT,EAA0B;MACxBx3D,IAAA,GAAO,KAAKiM,GAAL,CAAS+sD,qBAAT,EAAP;IADwB,CAA1B,MAEO;MAGL,MAAM;QAAEC,YAAF;QAAgBhtD;MAAhB,IAAwB,IAA9B;MACA,MAAMitD,YAAA,GAAejtD,GAAA,CAAIzG,KAAJ,CAAU8C,OAA/B;MACA2D,GAAA,CAAIzG,KAAJ,CAAU8C,OAAV,GAAoB,QAApB;MACA2wD,YAAA,CAAahtD,GAAb,CAAiBX,MAAjB,CAAwB,KAAKW,GAA7B;MACAjM,IAAA,GAAOiM,GAAA,CAAI+sD,qBAAJ,EAAP;MACA/sD,GAAA,CAAIsM,MAAJ;MACAtM,GAAA,CAAIzG,KAAJ,CAAU8C,OAAV,GAAoB4wD,YAApB;IATK;IAcP,IAAI,KAAK/yD,QAAL,GAAgB,GAAhB,KAAwB,KAAKgzD,cAAL,GAAsB,GAAlD,EAAuD;MACrD,KAAKl5D,KAAL,GAAaD,IAAA,CAAKC,KAAL,GAAamc,WAA1B;MACA,KAAKlc,MAAL,GAAcF,IAAA,CAAKE,MAAL,GAAc44D,YAA5B;IAFqD,CAAvD,MAGO;MACL,KAAK74D,KAAL,GAAaD,IAAA,CAAKE,MAAL,GAAckc,WAA3B;MACA,KAAKlc,MAAL,GAAcF,IAAA,CAAKC,KAAL,GAAa64D,YAA3B;IAFK;IAIP,KAAKM,iBAAL;EA3BqB;EAkCvBC,OAAA,EAAS;IACP,IAAI,CAAC,KAAK3B,YAAL,EAAL,EAA0B;MACxB;IADwB;IAI1B,MAAM2B,MAAN;IACA,KAAKrB,eAAL;IACA,MAAMsB,SAAA,GAAY,KAAK,CAAA1pD,OAAvB;IACA,MAAM2pD,OAAA,GAAW,KAAK,CAAA3pD,OAAL,GAAgB,KAAK,CAAA8oD,WAAL,GAAoBc,OAApB,EAAjC;IACA,IAAIF,SAAA,KAAcC,OAAlB,EAA2B;MACzB;IADyB;IAI3B,MAAME,OAAA,GAAUpM,IAAA,IAAQ;MACtB,KAAK,CAAAz9C,OAAL,GAAgBy9C,IAAhB;MACA,IAAI,CAACA,IAAL,EAAW;QACT,KAAK90C,MAAL;QACA;MAFS;MAIX,KAAK,CAAAmhD,UAAL;MACA,KAAKtC,UAAL,CAAgBG,OAAhB,CAAwB,IAAxB;MACA,KAAK,CAAAZ,mBAAL;IARsB,CAAxB;IAUA,KAAKE,WAAL,CAAiB;MACfC,GAAA,EAAKA,CAAA,KAAM;QACT2C,OAAA,CAAQF,OAAR;MADS,CADI;MAIfxC,IAAA,EAAMA,CAAA,KAAM;QACV0C,OAAA,CAAQH,SAAR;MADU,CAJG;MAOftC,QAAA,EAAU;IAPK,CAAjB;IASA,KAAK,CAAAL,mBAAL;EAhCO;EAoCTgD,wBAAA,EAA0B;IACxB,OAAO,KAAKjC,YAAL,EAAP;EADwB;EAK1BkC,gBAAA,EAAkB;IAChB,KAAKnC,cAAL;IACA,KAAKhB,SAAL,CAAe7tD,KAAf;EAFgB;EASlBixD,SAAS7xD,KAAT,EAAgB;IACd,KAAK4xD,eAAL;EADc;EAQhBE,QAAQ9xD,KAAR,EAAe;IACb,IAAIA,KAAA,CAAMI,MAAN,KAAiB,KAAK6D,GAAtB,IAA6BjE,KAAA,CAAMyM,GAAN,KAAc,OAA/C,EAAwD;MACtD,KAAKmlD,eAAL;MAEA5xD,KAAA,CAAM4O,cAAN;IAHsD;EAD3C;EAQf29C,iBAAiBvsD,KAAjB,EAAwB;IACtB+rD,cAAA,CAAec,gBAAf,CAAgCvF,IAAhC,CAAqC,IAArC,EAA2CtnD,KAA3C;EADsB;EAIxBmsD,eAAensD,KAAf,EAAsB;IACpB,KAAKiwD,SAAL,GAAiB,IAAjB;EADoB;EAItBhE,cAAcjsD,KAAd,EAAqB;IACnB,KAAKiwD,SAAL,GAAiB,KAAjB;EADmB;EAIrB5D,eAAersD,KAAf,EAAsB;IACpB,KAAKzD,MAAL,CAAY0H,GAAZ,CAAgBrG,SAAhB,CAA0B2U,MAA1B,CAAiC,iBAAjC,EAAoD,KAAKmuC,OAAL,EAApD;EADoB;EAKtBqR,eAAA,EAAiB;IACf,KAAKtD,SAAL,CAAepxD,YAAf,CAA4B,MAA5B,EAAoC,SAApC;IACA,KAAKoxD,SAAL,CAAeriD,eAAf,CAA+B,gBAA/B;EAFe;EAMjB4lD,cAAA,EAAgB;IACd,KAAKvD,SAAL,CAAepxD,YAAf,CAA4B,MAA5B,EAAoC,SAApC;IACA,KAAKoxD,SAAL,CAAepxD,YAAf,CAA4B,gBAA5B,EAA8C,IAA9C;EAFc;EAMhB6G,OAAA,EAAS;IACP,IAAI,KAAKD,GAAT,EAAc;MACZ,OAAO,KAAKA,GAAZ;IADY;IAId,IAAIguD,KAAJ,EAAWC,KAAX;IACA,IAAI,KAAKj6D,KAAT,EAAgB;MACdg6D,KAAA,GAAQ,KAAKp9D,CAAb;MACAq9D,KAAA,GAAQ,KAAKj9D,CAAb;IAFc;IAKhB,MAAMiP,MAAN;IACA,KAAKuqD,SAAL,GAAiBtxD,QAAA,CAASC,aAAT,CAAuB,KAAvB,CAAjB;IACA,KAAKqxD,SAAL,CAAe17C,SAAf,GAA2B,UAA3B;IAEA,KAAK07C,SAAL,CAAepxD,YAAf,CAA4B,IAA5B,EAAkC,KAAK,CAAAmvD,WAAvC;IACA,KAAKiC,SAAL,CAAepxD,YAAf,CAA4B,cAA5B,EAA4C,iBAA5C;IACA,KAAK20D,aAAL;IAEAr6C,8BAAA,CAAiBw6C,YAAjB,CACGnqD,GADH,CACO,iCADP,EAEGyY,IAFH,CAEQmmC,GAAA,IAAO,KAAK6H,SAAL,EAAgBpxD,YAAhB,CAA6B,iBAA7B,EAAgDupD,GAAhD,CAFf;IAGA,KAAK6H,SAAL,CAAeqB,eAAf,GAAiC,IAAjC;IAEA,MAAM;MAAEtyD;IAAF,IAAY,KAAKixD,SAAvB;IACAjxD,KAAA,CAAMgO,QAAN,GAAkB,QAAO,KAAK,CAAAA,QAAU,2BAAxC;IACAhO,KAAA,CAAM1H,KAAN,GAAc,KAAK,CAAAA,KAAnB;IAEA,KAAKmO,GAAL,CAASX,MAAT,CAAgB,KAAKmrD,SAArB;IAEA,KAAKoB,UAAL,GAAkB1yD,QAAA,CAASC,aAAT,CAAuB,KAAvB,CAAlB;IACA,KAAKyyD,UAAL,CAAgBjyD,SAAhB,CAA0BC,GAA1B,CAA8B,SAA9B,EAAyC,SAAzC;IACA,KAAKoG,GAAL,CAASX,MAAT,CAAgB,KAAKusD,UAArB;IAKAhE,oBAAA,CAAW,IAAX,EAAiB,KAAK5nD,GAAtB,EAA2B,CAAC,UAAD,EAAa,SAAb,CAA3B;IAEA,IAAI,KAAKhM,KAAT,EAAgB;MAEd,MAAM,CAACmc,WAAD,EAAc08C,YAAd,IAA8B,KAAKC,gBAAzC;MACA,IAAI,KAAKqB,mBAAT,EAA8B;QAU5B,MAAM;UAAEjQ;QAAF,IAAe,KAAK,CAAAlhC,WAA1B;QACA,IAAI,CAAC8lB,EAAD,EAAKC,EAAL,IAAW,KAAKsoB,qBAAL,EAAf;QACA,CAACvoB,EAAD,EAAKC,EAAL,IAAW,KAAKqrB,uBAAL,CAA6BtrB,EAA7B,EAAiCC,EAAjC,CAAX;QACA,MAAM,CAAClpC,SAAD,EAAYC,UAAZ,IAA0B,KAAKu0D,cAArC;QACA,MAAM,CAACt0D,KAAD,EAAQC,KAAR,IAAiB,KAAKs0D,eAA5B;QACA,IAAIC,IAAJ,EAAUC,IAAV;QACA,QAAQ,KAAKt0D,QAAb;UACE,KAAK,CAAL;YACEq0D,IAAA,GAAOP,KAAA,GAAS,CAAA9P,QAAA,CAAS,CAAT,IAAcnkD,KAAd,IAAuBF,SAAvC;YACA20D,IAAA,GAAOP,KAAA,GAAQ,KAAKh6D,MAAb,GAAuB,CAAAiqD,QAAA,CAAS,CAAT,IAAclkD,KAAd,IAAuBF,UAArD;YACA;UACF,KAAK,EAAL;YACEy0D,IAAA,GAAOP,KAAA,GAAS,CAAA9P,QAAA,CAAS,CAAT,IAAcnkD,KAAd,IAAuBF,SAAvC;YACA20D,IAAA,GAAOP,KAAA,GAAS,CAAA/P,QAAA,CAAS,CAAT,IAAclkD,KAAd,IAAuBF,UAAvC;YACA,CAACgpC,EAAD,EAAKC,EAAL,IAAW,CAACA,EAAD,EAAK,CAACD,EAAN,CAAX;YACA;UACF,KAAK,GAAL;YACEyrB,IAAA,GAAOP,KAAA,GAAQ,KAAKh6D,KAAb,GAAsB,CAAAkqD,QAAA,CAAS,CAAT,IAAcnkD,KAAd,IAAuBF,SAApD;YACA20D,IAAA,GAAOP,KAAA,GAAS,CAAA/P,QAAA,CAAS,CAAT,IAAclkD,KAAd,IAAuBF,UAAvC;YACA,CAACgpC,EAAD,EAAKC,EAAL,IAAW,CAAC,CAACD,EAAF,EAAM,CAACC,EAAP,CAAX;YACA;UACF,KAAK,GAAL;YACEwrB,IAAA,GACEP,KAAA,GACC,CAAA9P,QAAA,CAAS,CAAT,IAAcnkD,KAAd,GAAsB,KAAK9F,MAAL,GAAc6F,UAApC,IAAkDD,SAFrD;YAGA20D,IAAA,GACEP,KAAA,GACC,CAAA/P,QAAA,CAAS,CAAT,IAAclkD,KAAd,GAAsB,KAAKhG,KAAL,GAAa6F,SAAnC,IAAgDC,UAFnD;YAGA,CAACgpC,EAAD,EAAKC,EAAL,IAAW,CAAC,CAACA,EAAF,EAAMD,EAAN,CAAX;YACA;QAvBJ;QAyBA,KAAK2rB,KAAL,CAAWF,IAAA,GAAOp+C,WAAlB,EAA+Bq+C,IAAA,GAAO3B,YAAtC,EAAoD/pB,EAApD,EAAwDC,EAAxD;MAzC4B,CAA9B,MA0CO;QACL,KAAK0rB,KAAL,CACET,KAAA,GAAQ79C,WADV,EAEE89C,KAAA,GAAQpB,YAFV,EAGE,KAAK74D,KAAL,GAAamc,WAHf,EAIE,KAAKlc,MAAL,GAAc44D,YAJhB;MADK;MASP,KAAK,CAAAY,UAAL;MACA,KAAK3B,YAAL,GAAoB,IAApB;MACA,KAAKtB,SAAL,CAAeqB,eAAf,GAAiC,KAAjC;IAxDc,CAAhB,MAyDO;MACL,KAAKC,YAAL,GAAoB,KAApB;MACA,KAAKtB,SAAL,CAAeqB,eAAf,GAAiC,IAAjC;IAFK;IASP,OAAO,KAAK7rD,GAAZ;EAzGO;EA4GT,CAAAytD,WAAA,EAAc;IACZ,KAAKjD,SAAL,CAAekE,eAAf;IACA,IAAI,CAAC,KAAK,CAAA/qD,OAAV,EAAoB;MAClB;IADkB;IAGpB,WAAW+M,IAAX,IAAmB,KAAK,CAAA/M,OAAL,CAAc6M,KAAd,CAAoB,IAApB,CAAnB,EAA8C;MAC5C,MAAMxQ,GAAA,GAAM9G,QAAA,CAASC,aAAT,CAAuB,KAAvB,CAAZ;MACA6G,GAAA,CAAIX,MAAJ,CACEqR,IAAA,GAAOxX,QAAA,CAASyX,cAAT,CAAwBD,IAAxB,CAAP,GAAuCxX,QAAA,CAASC,aAAT,CAAuB,IAAvB,CADzC;MAGA,KAAKqxD,SAAL,CAAenrD,MAAf,CAAsBW,GAAtB;IAL4C;EALlC;EAed,IAAI2uD,UAAJA,CAAA,EAAiB;IACf,OAAO,KAAKnE,SAAZ;EADe;EAKjB,OAAOoE,WAAPA,CAAmBt6D,IAAnB,EAAyBgE,MAAzB,EAAiCu2D,SAAjC,EAA4C;IAC1C,IAAI7xC,WAAA,GAAc,IAAlB;IACA,IAAI1oB,IAAA,YAAgBoB,0CAApB,EAA+C;MAC7C,MAAM;QACJpB,IAAA,EAAM;UACJgT,qBAAA,EAAuB;YAAEC,QAAF;YAAYF;UAAZ,CADnB;UAEJtT,IAFI;UAGJmG,QAHI;UAIJb;QAJI,CADF;QAOJsP,WAPI;QAQJoI,YARI;QASJzY,MAAA,EAAQ;UACNU,IAAA,EAAM;YAAE0nB;UAAF;QADA;MATJ,IAYFpsB,IAZJ;MAeA,IAAI,CAACqU,WAAD,IAAgBA,WAAA,CAAY9J,MAAZ,KAAuB,CAA3C,EAA8C;QAE5C,OAAO,IAAP;MAF4C;MAI9Cme,WAAA,GAAc1oB,IAAA,GAAO;QACnBC,cAAA,EAAgB5B,yBAAA,CAAqB8C,QADlB;QAEnB5D,KAAA,EAAOuP,KAAA,CAAMmS,IAAN,CAAWlM,SAAX,CAFY;QAGnBE,QAHmB;QAInBzC,KAAA,EAAO6D,WAAA,CAAY3W,IAAZ,CAAiB,IAAjB,CAJY;QAKnBksD,QAAA,EAAUntC,YALS;QAMnB2R,SAAA,EAAWhC,UAAA,GAAa,CANL;QAOnB3sB,IAPmB;QAQnBmG,QARmB;QASnBb,EATmB;QAUnBy1D,OAAA,EAAS;MAVU,CAArB;IApB6C;IAiC/C,MAAMC,MAAA,GAAS,MAAMH,WAAN,CAAkBt6D,IAAlB,EAAwBgE,MAAxB,EAAgCu2D,SAAhC,CAAf;IAEAE,MAAA,CAAO,CAAAxnD,QAAP,GAAmBjT,IAAA,CAAKiT,QAAxB;IACAwnD,MAAA,CAAO,CAAAl9D,KAAP,GAAgBqB,SAAA,CAAKmI,YAAL,CAAkB,GAAG/G,IAAA,CAAKzC,KAA1B,CAAhB;IACAk9D,MAAA,CAAO,CAAAprD,OAAP,GAAkBrP,IAAA,CAAKwQ,KAAvB;IACAiqD,MAAA,CAAOZ,mBAAP,GAA6B75D,IAAA,CAAK+E,EAAL,IAAW,IAAxC;IACA01D,MAAA,CAAO,CAAA/xC,WAAP,GAAsBA,WAAtB;IAEA,OAAO+xC,MAAP;EA3C0C;EA+C5C55C,UAAU65C,YAAA,GAAe,KAAzB,EAAgC;IAC9B,IAAI,KAAKvS,OAAL,EAAJ,EAAoB;MAClB,OAAO,IAAP;IADkB;IAIpB,IAAI,KAAKqS,OAAT,EAAkB;MAChB,OAAO;QACLpsC,SAAA,EAAW,KAAKA,SADX;QAELrpB,EAAA,EAAI,KAAK80D,mBAFJ;QAGLW,OAAA,EAAS;MAHJ,CAAP;IADgB;IAQlB,MAAMG,OAAA,GAAUnH,cAAA,CAAeW,gBAAf,GAAkC,KAAKgC,WAAvD;IACA,MAAM12D,IAAA,GAAO,KAAKm7D,OAAL,CAAaD,OAAb,EAAsBA,OAAtB,CAAb;IACA,MAAMp9D,KAAA,GAAQ6hB,8BAAA,CAAiBy7C,aAAjB,CAA+BC,OAA/B,CACZ,KAAK7D,eAAL,GACI7K,gBAAA,CAAiB,KAAK8J,SAAtB,EAAiC34D,KADrC,GAEI,KAAK,CAAAA,KAHG,CAAd;IAMA,MAAMqjB,UAAA,GAAa;MACjB3gB,cAAA,EAAgB5B,yBAAA,CAAqB8C,QADpB;MAEjB5D,KAFiB;MAGjB0V,QAAA,EAAU,KAAK,CAAAA,QAHE;MAIjBzC,KAAA,EAAO,KAAK,CAAAnB,OAJK;MAKjB+e,SAAA,EAAW,KAAKA,SALC;MAMjB3uB,IANiB;MAOjBmG,QAAA,EAAU,KAAKA,QAPE;MAQjBm1D,kBAAA,EAAoB,KAAKC;IARR,CAAnB;IAWA,IAAIN,YAAJ,EAAkB;MAGhB,OAAO95C,UAAP;IAHgB;IAMlB,IAAI,KAAKi5C,mBAAL,IAA4B,CAAC,KAAK,CAAAoB,iBAAL,CAAwBr6C,UAAxB,CAAjC,EAAsE;MACpE,OAAO,IAAP;IADoE;IAItEA,UAAA,CAAW7b,EAAX,GAAgB,KAAK80D,mBAArB;IAEA,OAAOj5C,UAAP;EA5C8B;EA+ChC,CAAAq6C,kBAAmBr6C,UAAnB,EAA+B;IAC7B,MAAM;MAAEpQ,KAAF;MAASyC,QAAT;MAAmB1V,KAAnB;MAA0BkC,IAA1B;MAAgC2uB;IAAhC,IAA8C,KAAK,CAAA1F,WAAzD;IAEA,OACE9H,UAAA,CAAWpQ,KAAX,KAAqBA,KAArB,IACAoQ,UAAA,CAAW3N,QAAX,KAAwBA,QADxB,IAEA2N,UAAA,CAAWnhB,IAAX,CAAgBy7D,IAAhB,CAAqB,CAAC5+D,CAAD,EAAIqc,CAAJ,KAAU5c,IAAA,CAAKwX,GAAL,CAASjX,CAAA,GAAImD,IAAA,CAAKkZ,CAAL,CAAb,KAAyB,CAAxD,CAFA,IAGAiI,UAAA,CAAWrjB,KAAX,CAAiB29D,IAAjB,CAAsB,CAACz+D,CAAD,EAAIkc,CAAJ,KAAUlc,CAAA,KAAMc,KAAA,CAAMob,CAAN,CAAtC,CAHA,IAIAiI,UAAA,CAAWwN,SAAX,KAAyBA,SAL3B;EAH6B;EAY/B,CAAA0pC,iBAAkBhkC,OAAA,GAAU,KAA5B,EAAmC;IAKjC,IAAI,CAAC,KAAK+lC,mBAAV,EAA+B;MAC7B;IAD6B;IAI/B,KAAK,CAAAzD,mBAAL;IACA,IAAI,CAACtiC,OAAD,KAAa,KAAKp0B,KAAL,KAAe,CAAf,IAAoB,KAAKC,MAAL,KAAgB,CAApC,CAAjB,EAAyD;MACvD2I,UAAA,CAAW,MAAM,KAAK,CAAAwvD,gBAAL,CAAuC,IAAvC,CAAjB,EAA+D,CAA/D;MACA;IAFuD;IAKzD,MAAM6C,OAAA,GAAUnH,cAAA,CAAeW,gBAAf,GAAkC,KAAKgC,WAAvD;IACA,KAAK,CAAAztC,WAAL,CAAkBjpB,IAAlB,GAAyB,KAAKm7D,OAAL,CAAaD,OAAb,EAAsBA,OAAtB,CAAzB;EAhBiC;AArtBS;;;;;ACtB9C;AAKA;AACA;AACA;AACA;AAKA,MAAMS,SAAN,SAAwBh8C,8BAAxB,CAAyC;EACvC,CAAAi8C,UAAA,GAAc,CAAd;EAEA,CAAAC,SAAA,GAAa,CAAb;EAEA,CAAAC,sBAAA,GAA0B,KAAKC,iBAAL,CAAuB5hD,IAAvB,CAA4B,IAA5B,CAA1B;EAEA,CAAA6hD,uBAAA,GAA2B,KAAKC,kBAAL,CAAwB9hD,IAAxB,CAA6B,IAA7B,CAA3B;EAEA,CAAA+hD,oBAAA,GAAwB,KAAKC,eAAL,CAAqBhiD,IAArB,CAA0B,IAA1B,CAAxB;EAEA,CAAAiiD,sBAAA,GAA0B,KAAKC,iBAAL,CAAuBliD,IAAvB,CAA4B,IAA5B,CAA1B;EAEA,CAAAmiD,0BAAA,GAA8B,IAA9B;EAEA,CAAAC,aAAA,GAAiB,IAAIx8B,MAAJ,EAAjB;EAEA,CAAAg6B,cAAA,GAAkB,KAAlB;EAEA,CAAAyC,kBAAA,GAAsB,KAAtB;EAEA,CAAAC,mBAAA,GAAuB,KAAvB;EAEA,CAAAC,QAAA,GAAY,IAAZ;EAEA,CAAAC,SAAA,GAAa,CAAb;EAEA,CAAAC,UAAA,GAAc,CAAd;EAEA,CAAAC,oBAAA,GAAwB,IAAxB;EAEA,OAAOlI,aAAP,GAAuB,IAAvB;EAEA,OAAOmI,eAAP,GAAyB,CAAzB;EAEA,OAAOC,iBAAP,GAA2B,CAA3B;EAEA,OAAOn8C,KAAP,GAAe,KAAf;EAEA,OAAO60C,WAAP,GAAqB72D,yBAAA,CAAqB0D,GAA1C;EAEAkB,YAAYmb,MAAZ,EAAoB;IAClB,MAAM;MAAE,GAAGA,MAAL;MAAa7U,IAAA,EAAM;IAAnB,CAAN;IACA,KAAKhM,KAAL,GAAa6gB,MAAA,CAAO7gB,KAAP,IAAgB,IAA7B;IACA,KAAKk/D,SAAL,GAAiBr+C,MAAA,CAAOq+C,SAAP,IAAoB,IAArC;IACA,KAAKxK,OAAL,GAAe7zC,MAAA,CAAO6zC,OAAP,IAAkB,IAAjC;IACA,KAAKhT,KAAL,GAAa,EAAb;IACA,KAAKyd,YAAL,GAAoB,EAApB;IACA,KAAKC,WAAL,GAAmB,EAAnB;IACA,KAAKC,WAAL,GAAmB,EAAnB;IACA,KAAKC,WAAL,GAAmB,CAAnB;IACA,KAAKC,YAAL,GAAoB,KAAKC,YAAL,GAAoB,CAAxC;IACA,KAAKzgE,CAAL,GAAS,CAAT;IACA,KAAKI,CAAL,GAAS,CAAT;IACA,KAAKsgE,oBAAL,GAA4B,IAA5B;EAbkB;EAiBpB,OAAO5H,UAAPA,CAAkBC,IAAlB,EAAwB;IACtBj2C,8BAAA,CAAiBg2C,UAAjB,CAA4BC,IAA5B;EADsB;EAKxB,OAAOI,mBAAPA,CAA2BllD,IAA3B,EAAiCC,KAAjC,EAAwC;IACtC,QAAQD,IAAR;MACE,KAAK6iD,+BAAA,CAA2B6J,aAAhC;QACE7B,SAAA,CAAUoB,iBAAV,GAA8BhsD,KAA9B;QACA;MACF,KAAK4iD,+BAAA,CAA2B8J,SAAhC;QACE9B,SAAA,CAAUhH,aAAV,GAA0B5jD,KAA1B;QACA;MACF,KAAK4iD,+BAAA,CAA2B+J,WAAhC;QACE/B,SAAA,CAAUmB,eAAV,GAA4B/rD,KAAA,GAAQ,GAApC;QACA;IATJ;EADsC;EAexColD,aAAarlD,IAAb,EAAmBC,KAAnB,EAA0B;IACxB,QAAQD,IAAR;MACE,KAAK6iD,+BAAA,CAA2B6J,aAAhC;QACE,KAAK,CAAAG,eAAL,CAAsB5sD,KAAtB;QACA;MACF,KAAK4iD,+BAAA,CAA2B8J,SAAhC;QACE,KAAK,CAAApH,WAAL,CAAkBtlD,KAAlB;QACA;MACF,KAAK4iD,+BAAA,CAA2B+J,WAAhC;QACE,KAAK,CAAAE,aAAL,CAAoB7sD,KAApB;QACA;IATJ;EADwB;EAe1B,WAAWulD,yBAAXA,CAAA,EAAuC;IACrC,OAAO,CACL,CAAC3C,+BAAA,CAA2B6J,aAA5B,EAA2C7B,SAAA,CAAUoB,iBAArD,CADK,EAEL,CACEpJ,+BAAA,CAA2B8J,SAD7B,EAEE9B,SAAA,CAAUhH,aAAV,IAA2Bh1C,8BAAA,CAAiB+1C,iBAF9C,CAFK,EAML,CACE/B,+BAAA,CAA2B+J,WAD7B,EAEEphE,IAAA,CAAKsX,KAAL,CAAW+nD,SAAA,CAAUmB,eAAV,GAA4B,GAAvC,CAFF,CANK,CAAP;EADqC;EAevC,IAAIvG,kBAAJA,CAAA,EAAyB;IACvB,OAAO,CACL,CACE5C,+BAAA,CAA2B6J,aAD7B,EAEE,KAAKR,SAAL,IAAkBrB,SAAA,CAAUoB,iBAF9B,CADK,EAKL,CACEpJ,+BAAA,CAA2B8J,SAD7B,EAEE,KAAK3/D,KAAL,IACE69D,SAAA,CAAUhH,aADZ,IAEEh1C,8BAAA,CAAiB+1C,iBAJrB,CALK,EAWL,CACE/B,+BAAA,CAA2B+J,WAD7B,EAEEphE,IAAA,CAAKsX,KAAL,CAAW,OAAO,KAAK4+C,OAAL,IAAgBmJ,SAAA,CAAUmB,eAA1B,CAAlB,CAFF,CAXK,CAAP;EADuB;EAuBzB,CAAAa,gBAAiBX,SAAjB,EAA4B;IAC1B,MAAMa,cAAA,GAAiB,KAAKb,SAA5B;IACA,KAAKnG,WAAL,CAAiB;MACfC,GAAA,EAAKA,CAAA,KAAM;QACT,KAAKkG,SAAL,GAAiBA,SAAjB;QACA,KAAK,CAAAc,YAAL;MAFS,CADI;MAKf/G,IAAA,EAAMA,CAAA,KAAM;QACV,KAAKiG,SAAL,GAAiBa,cAAjB;QACA,KAAK,CAAAC,YAAL;MAFU,CALG;MASf9G,QAAA,EAAU,IATK;MAUflmD,IAAA,EAAM6iD,+BAAA,CAA2B6J,aAVlB;MAWfvG,mBAAA,EAAqB,IAXN;MAYfC,QAAA,EAAU;IAZK,CAAjB;EAF0B;EAsB5B,CAAAb,YAAav4D,KAAb,EAAoB;IAClB,MAAMq5D,UAAA,GAAa,KAAKr5D,KAAxB;IACA,KAAK+4D,WAAL,CAAiB;MACfC,GAAA,EAAKA,CAAA,KAAM;QACT,KAAKh5D,KAAL,GAAaA,KAAb;QACA,KAAK,CAAAigE,MAAL;MAFS,CADI;MAKfhH,IAAA,EAAMA,CAAA,KAAM;QACV,KAAKj5D,KAAL,GAAaq5D,UAAb;QACA,KAAK,CAAA4G,MAAL;MAFU,CALG;MASf/G,QAAA,EAAU,IATK;MAUflmD,IAAA,EAAM6iD,+BAAA,CAA2B8J,SAVlB;MAWfxG,mBAAA,EAAqB,IAXN;MAYfC,QAAA,EAAU;IAZK,CAAjB;EAFkB;EAsBpB,CAAA0G,cAAepL,OAAf,EAAwB;IACtBA,OAAA,IAAW,GAAX;IACA,MAAMwL,YAAA,GAAe,KAAKxL,OAA1B;IACA,KAAKqE,WAAL,CAAiB;MACfC,GAAA,EAAKA,CAAA,KAAM;QACT,KAAKtE,OAAL,GAAeA,OAAf;QACA,KAAK,CAAAuL,MAAL;MAFS,CADI;MAKfhH,IAAA,EAAMA,CAAA,KAAM;QACV,KAAKvE,OAAL,GAAewL,YAAf;QACA,KAAK,CAAAD,MAAL;MAFU,CALG;MASf/G,QAAA,EAAU,IATK;MAUflmD,IAAA,EAAM6iD,+BAAA,CAA2B+J,WAVlB;MAWfzG,mBAAA,EAAqB,IAXN;MAYfC,QAAA,EAAU;IAZK,CAAjB;EAHsB;EAoBxBK,QAAA,EAAU;IACR,IAAI,CAAC,KAAKhzD,MAAV,EAAkB;MAChB;IADgB;IAGlB,MAAMgzD,OAAN;IACA,IAAI,KAAKtrD,GAAL,KAAa,IAAjB,EAAuB;MACrB;IADqB;IAIvB,IAAI,CAAC,KAAKoT,MAAV,EAAkB;MAChB,KAAK,CAAA4+C,YAAL;MACA,KAAK,CAAAC,cAAL;IAFgB;IAKlB,IAAI,CAAC,KAAK1G,eAAV,EAA2B;MAGzB,KAAKjzD,MAAL,CAAYsB,GAAZ,CAAgB,IAAhB;MACA,KAAK,CAAAs4D,aAAL;IAJyB;IAM3B,KAAK,CAAAL,YAAL;EApBQ;EAwBVvlD,OAAA,EAAS;IACP,IAAI,KAAK8G,MAAL,KAAgB,IAApB,EAA0B;MACxB;IADwB;IAI1B,IAAI,CAAC,KAAKqpC,OAAL,EAAL,EAAqB;MACnB,KAAK2Q,MAAL;IADmB;IAKrB,KAAKh6C,MAAL,CAAYpf,KAAZ,GAAoB,KAAKof,MAAL,CAAYnf,MAAZ,GAAqB,CAAzC;IACA,KAAKmf,MAAL,CAAY9G,MAAZ;IACA,KAAK8G,MAAL,GAAc,IAAd;IAEA,IAAI,KAAK,CAAAi9C,0BAAT,EAAsC;MACpCtrC,YAAA,CAAa,KAAK,CAAAsrC,0BAAlB;MACA,KAAK,CAAAA,0BAAL,GAAmC,IAAnC;IAFoC;IAKtC,KAAK,CAAAI,QAAL,CAAe0B,UAAf;IACA,KAAK,CAAA1B,QAAL,GAAiB,IAAjB;IAEA,MAAMnkD,MAAN;EAtBO;EAyBT05C,UAAU1tD,MAAV,EAAkB;IAChB,IAAI,CAAC,KAAKA,MAAN,IAAgBA,MAApB,EAA4B;MAG1B,KAAK6yD,UAAL,CAAgBiH,mBAAhB,CAAoC,IAApC;IAH0B,CAA5B,MAIO,IAAI,KAAK95D,MAAL,IAAeA,MAAA,KAAW,IAA9B,EAAoC;MAIzC,KAAK6yD,UAAL,CAAgBkH,gBAAhB,CAAiC,IAAjC;IAJyC;IAM3C,MAAMrM,SAAN,CAAgB1tD,MAAhB;EAXgB;EAclBg6D,gBAAA,EAAkB;IAChB,MAAM,CAACniD,WAAD,EAAc08C,YAAd,IAA8B,KAAKC,gBAAzC;IACA,MAAM94D,KAAA,GAAQ,KAAKA,KAAL,GAAamc,WAA3B;IACA,MAAMlc,MAAA,GAAS,KAAKA,MAAL,GAAc44D,YAA7B;IACA,KAAK0F,aAAL,CAAmBv+D,KAAnB,EAA0BC,MAA1B;EAJgB;EAQlBu3D,eAAA,EAAiB;IACf,IAAI,KAAK,CAAAsC,cAAL,IAAwB,KAAK16C,MAAL,KAAgB,IAA5C,EAAkD;MAChD;IADgD;IAIlD,MAAMo4C,cAAN;IACA,KAAKM,YAAL,GAAoB,KAApB;IACA,KAAK14C,MAAL,CAAYzR,gBAAZ,CAA6B,aAA7B,EAA4C,KAAK,CAAAwuD,sBAAjD;EAPe;EAWjBpE,gBAAA,EAAkB;IAChB,IAAI,CAAC,KAAKN,YAAL,EAAD,IAAwB,KAAKr4C,MAAL,KAAgB,IAA5C,EAAkD;MAChD;IADgD;IAIlD,MAAM24C,eAAN;IACA,KAAKD,YAAL,GAAoB,CAAC,KAAKrP,OAAL,EAArB;IACA,KAAKz8C,GAAL,CAASrG,SAAT,CAAmB2S,MAAnB,CAA0B,SAA1B;IAEA,KAAK8G,MAAL,CAAY7G,mBAAZ,CACE,aADF,EAEE,KAAK,CAAA4jD,sBAFP;EATgB;EAgBlBhE,UAAA,EAAY;IACV,KAAKL,YAAL,GAAoB,CAAC,KAAKrP,OAAL,EAArB;EADU;EAKZA,QAAA,EAAU;IACR,OACE,KAAKlJ,KAAL,CAAW10C,MAAX,KAAsB,CAAtB,IACC,KAAK00C,KAAL,CAAW10C,MAAX,KAAsB,CAAtB,IAA2B,KAAK00C,KAAL,CAAW,CAAX,EAAc10C,MAAd,KAAyB,CAFvD;EADQ;EAOV,CAAA2zD,eAAA,EAAkB;IAChB,MAAM;MACJtF,cADI;MAEJJ,gBAAA,EAAkB,CAAC94D,KAAD,EAAQC,MAAR;IAFd,IAGF,IAHJ;IAIA,QAAQi5D,cAAR;MACE,KAAK,EAAL;QACE,OAAO,CAAC,CAAD,EAAIj5D,MAAJ,EAAYA,MAAZ,EAAoBD,KAApB,CAAP;MACF,KAAK,GAAL;QACE,OAAO,CAACA,KAAD,EAAQC,MAAR,EAAgBD,KAAhB,EAAuBC,MAAvB,CAAP;MACF,KAAK,GAAL;QACE,OAAO,CAACD,KAAD,EAAQ,CAAR,EAAWC,MAAX,EAAmBD,KAAnB,CAAP;MACF;QACE,OAAO,CAAC,CAAD,EAAI,CAAJ,EAAOA,KAAP,EAAcC,MAAd,CAAP;IARJ;EALgB;EAoBlB,CAAAw+D,UAAA,EAAa;IACX,MAAM;MAAE9+B,GAAF;MAAO9hC,KAAP;MAAc00D,OAAd;MAAuBwK,SAAvB;MAAkCtG,WAAlC;MAA+C0G;IAA/C,IAA+D,IAArE;IACAx9B,GAAA,CAAIiS,SAAJ,GAAiBmrB,SAAA,GAAYtG,WAAb,GAA4B0G,WAA5C;IACAx9B,GAAA,CAAIqV,OAAJ,GAAc,OAAd;IACArV,GAAA,CAAIsV,QAAJ,GAAe,OAAf;IACAtV,GAAA,CAAIuV,UAAJ,GAAiB,EAAjB;IACAvV,GAAA,CAAIoJ,WAAJ,GAAkB,GAAGlrC,KAAH,GAAW49D,sBAAA,CAAalJ,OAAb,CAAX,EAAlB;EANW;EAcb,CAAAmM,aAAc9hE,CAAd,EAAiBI,CAAjB,EAAoB;IAClB,KAAKoiB,MAAL,CAAYzR,gBAAZ,CAA6B,aAA7B,EAA4CmiD,2BAA5C;IACA,KAAK1wC,MAAL,CAAYzR,gBAAZ,CAA6B,cAA7B,EAA6C,KAAK,CAAAouD,uBAAlD;IACA,KAAK38C,MAAL,CAAYzR,gBAAZ,CAA6B,aAA7B,EAA4C,KAAK,CAAAkuD,sBAAjD;IACA,KAAKz8C,MAAL,CAAYzR,gBAAZ,CAA6B,WAA7B,EAA0C,KAAK,CAAAsuD,oBAA/C;IACA,KAAK78C,MAAL,CAAY7G,mBAAZ,CACE,aADF,EAEE,KAAK,CAAA4jD,sBAFP;IAKA,KAAKnE,SAAL,GAAiB,IAAjB;IACA,IAAI,CAAC,KAAK,CAAAwE,mBAAV,EAAgC;MAC9B,KAAK,CAAAA,mBAAL,GAA4B,IAA5B;MACA,KAAK,CAAA0B,aAAL;MACA,KAAKnB,SAAL,KAAmBrB,SAAA,CAAUoB,iBAA7B;MACA,KAAKj/D,KAAL,KACE69D,SAAA,CAAUhH,aAAV,IAA2Bh1C,8BAAA,CAAiB+1C,iBAD9C;MAEA,KAAKlD,OAAL,KAAiBmJ,SAAA,CAAUmB,eAA3B;IAN8B;IAQhC,KAAKK,WAAL,CAAiBzxD,IAAjB,CAAsB,CAAC7O,CAAD,EAAII,CAAJ,CAAtB;IACA,KAAK,CAAAu/D,kBAAL,GAA2B,KAA3B;IACA,KAAK,CAAAkC,SAAL;IAEA,KAAK,CAAA7B,oBAAL,GAA6B,MAAM;MACjC,KAAK,CAAA+B,UAAL;MACA,IAAI,KAAK,CAAA/B,oBAAT,EAAgC;QAC9B5yC,MAAA,CAAOyT,qBAAP,CAA6B,KAAK,CAAAm/B,oBAAlC;MAD8B;IAFC,CAAnC;IAMA5yC,MAAA,CAAOyT,qBAAP,CAA6B,KAAK,CAAAm/B,oBAAlC;EA7BkB;EAqCpB,CAAAgC,KAAMhiE,CAAN,EAASI,CAAT,EAAY;IACV,MAAM,CAAC6hE,KAAD,EAAQC,KAAR,IAAiB,KAAK5B,WAAL,CAAiB6B,EAAjB,CAAoB,CAAC,CAArB,CAAvB;IACA,IAAI,KAAK7B,WAAL,CAAiBryD,MAAjB,GAA0B,CAA1B,IAA+BjO,CAAA,KAAMiiE,KAArC,IAA8C7hE,CAAA,KAAM8hE,KAAxD,EAA+D;MAC7D;IAD6D;IAG/D,MAAM5B,WAAA,GAAc,KAAKA,WAAzB;IACA,IAAI8B,MAAA,GAAS,KAAK,CAAA1C,aAAlB;IACAY,WAAA,CAAYzxD,IAAZ,CAAiB,CAAC7O,CAAD,EAAII,CAAJ,CAAjB;IACA,KAAK,CAAAu/D,kBAAL,GAA2B,IAA3B;IAEA,IAAIW,WAAA,CAAYryD,MAAZ,IAAsB,CAA1B,EAA6B;MAC3Bm0D,MAAA,CAAOxyB,MAAP,CAAc,GAAG0wB,WAAA,CAAY,CAAZ,CAAjB;MACA8B,MAAA,CAAOtyB,MAAP,CAAc9vC,CAAd,EAAiBI,CAAjB;MACA;IAH2B;IAM7B,IAAIkgE,WAAA,CAAYryD,MAAZ,KAAuB,CAA3B,EAA8B;MAC5B,KAAK,CAAAyxD,aAAL,GAAsB0C,MAAA,GAAS,IAAIl/B,MAAJ,EAA/B;MACAk/B,MAAA,CAAOxyB,MAAP,CAAc,GAAG0wB,WAAA,CAAY,CAAZ,CAAjB;IAF4B;IAK9B,KAAK,CAAA+B,eAAL,CACED,MADF,EAEE,GAAG9B,WAAA,CAAY6B,EAAZ,CAAe,CAAC,CAAhB,CAFL,EAGE,GAAG7B,WAAA,CAAY6B,EAAZ,CAAe,CAAC,CAAhB,CAHL,EAIEniE,CAJF,EAKEI,CALF;EArBU;EA8BZ,CAAA8rC,QAAA,EAAW;IACT,IAAI,KAAKo0B,WAAL,CAAiBryD,MAAjB,KAA4B,CAAhC,EAAmC;MACjC;IADiC;IAGnC,MAAMq0D,SAAA,GAAY,KAAKhC,WAAL,CAAiB6B,EAAjB,CAAoB,CAAC,CAArB,CAAlB;IACA,KAAK,CAAAzC,aAAL,CAAoB5vB,MAApB,CAA2B,GAAGwyB,SAA9B;EALS;EAaX,CAAAC,YAAaviE,CAAb,EAAgBI,CAAhB,EAAmB;IACjB,KAAK,CAAA4/D,oBAAL,GAA6B,IAA7B;IAEAhgE,CAAA,GAAIP,IAAA,CAAKG,GAAL,CAASH,IAAA,CAAKE,GAAL,CAASK,CAAT,EAAY,CAAZ,CAAT,EAAyB,KAAKwiB,MAAL,CAAYpf,KAArC,CAAJ;IACAhD,CAAA,GAAIX,IAAA,CAAKG,GAAL,CAASH,IAAA,CAAKE,GAAL,CAASS,CAAT,EAAY,CAAZ,CAAT,EAAyB,KAAKoiB,MAAL,CAAYnf,MAArC,CAAJ;IAEA,KAAK,CAAA2+D,IAAL,CAAWhiE,CAAX,EAAcI,CAAd;IACA,KAAK,CAAA8rC,OAAL;IAKA,IAAIs2B,MAAJ;IACA,IAAI,KAAKlC,WAAL,CAAiBryD,MAAjB,KAA4B,CAAhC,EAAmC;MACjCu0D,MAAA,GAAS,KAAK,CAAAC,oBAAL,EAAT;IADiC,CAAnC,MAEO;MAEL,MAAMC,EAAA,GAAK,CAAC1iE,CAAD,EAAII,CAAJ,CAAX;MACAoiE,MAAA,GAAS,CAAC,CAACE,EAAD,EAAKA,EAAA,CAAG9gE,KAAH,EAAL,EAAiB8gE,EAAA,CAAG9gE,KAAH,EAAjB,EAA6B8gE,EAA7B,CAAD,CAAT;IAHK;IAKP,MAAMN,MAAA,GAAS,KAAK,CAAA1C,aAApB;IACA,MAAMY,WAAA,GAAc,KAAKA,WAAzB;IACA,KAAKA,WAAL,GAAmB,EAAnB;IACA,KAAK,CAAAZ,aAAL,GAAsB,IAAIx8B,MAAJ,EAAtB;IAEA,MAAM+2B,GAAA,GAAMA,CAAA,KAAM;MAChB,KAAKoG,WAAL,CAAiBxxD,IAAjB,CAAsByxD,WAAtB;MACA,KAAK3d,KAAL,CAAW9zC,IAAX,CAAgB2zD,MAAhB;MACA,KAAKpC,YAAL,CAAkBvxD,IAAlB,CAAuBuzD,MAAvB;MACA,KAAK1H,OAAL;IAJgB,CAAlB;IAOA,MAAMR,IAAA,GAAOA,CAAA,KAAM;MACjB,KAAKmG,WAAL,CAAiBrf,GAAjB;MACA,KAAK2B,KAAL,CAAW3B,GAAX;MACA,KAAKof,YAAL,CAAkBpf,GAAlB;MACA,IAAI,KAAK2B,KAAL,CAAW10C,MAAX,KAAsB,CAA1B,EAA6B;QAC3B,KAAKyN,MAAL;MAD2B,CAA7B,MAEO;QACL,IAAI,CAAC,KAAK8G,MAAV,EAAkB;UAChB,KAAK,CAAA4+C,YAAL;UACA,KAAK,CAAAC,cAAL;QAFgB;QAIlB,KAAK,CAAAJ,YAAL;MALK;IANU,CAAnB;IAeA,KAAKjH,WAAL,CAAiB;MAAEC,GAAF;MAAOC,IAAP;MAAaC,QAAA,EAAU;IAAvB,CAAjB;EA/CiB;EAkDnB,CAAA4H,WAAA,EAAc;IACZ,IAAI,CAAC,KAAK,CAAApC,kBAAV,EAA+B;MAC7B;IAD6B;IAG/B,KAAK,CAAAA,kBAAL,GAA2B,KAA3B;IAEA,MAAMQ,SAAA,GAAY1gE,IAAA,CAAKmlC,IAAL,CAAU,KAAKu7B,SAAL,GAAiB,KAAKtG,WAAhC,CAAlB;IACA,MAAM8I,UAAA,GAAa,KAAKrC,WAAL,CAAiB1+D,KAAjB,CAAuB,CAAC,CAAxB,CAAnB;IACA,MAAM5B,CAAA,GAAI2iE,UAAA,CAAWzhE,GAAX,CAAewhE,EAAA,IAAMA,EAAA,CAAG,CAAH,CAArB,CAAV;IACA,MAAMtiE,CAAA,GAAIuiE,UAAA,CAAWzhE,GAAX,CAAewhE,EAAA,IAAMA,EAAA,CAAG,CAAH,CAArB,CAAV;IACA,MAAME,IAAA,GAAOnjE,IAAA,CAAKG,GAAL,CAAS,GAAGI,CAAZ,IAAiBmgE,SAA9B;IACA,MAAM0C,IAAA,GAAOpjE,IAAA,CAAKE,GAAL,CAAS,GAAGK,CAAZ,IAAiBmgE,SAA9B;IACA,MAAM2C,IAAA,GAAOrjE,IAAA,CAAKG,GAAL,CAAS,GAAGQ,CAAZ,IAAiB+/D,SAA9B;IACA,MAAM4C,IAAA,GAAOtjE,IAAA,CAAKE,GAAL,CAAS,GAAGS,CAAZ,IAAiB+/D,SAA9B;IAEA,MAAM;MAAEp9B;IAAF,IAAU,IAAhB;IACAA,GAAA,CAAI2I,IAAJ;IASE3I,GAAA,CAAIkC,SAAJ,CAAc,CAAd,EAAiB,CAAjB,EAAoB,KAAKziB,MAAL,CAAYpf,KAAhC,EAAuC,KAAKof,MAAL,CAAYnf,MAAnD;IAGF,WAAWuwC,IAAX,IAAmB,KAAKwsB,YAAxB,EAAsC;MACpCr9B,GAAA,CAAI+e,MAAJ,CAAWlO,IAAX;IADoC;IAGtC7Q,GAAA,CAAI+e,MAAJ,CAAW,KAAK,CAAA4d,aAAhB;IAEA38B,GAAA,CAAImM,OAAJ;EAjCY;EAoCd,CAAAmzB,gBAAiBD,MAAjB,EAAyBx3B,EAAzB,EAA6BC,EAA7B,EAAiCtE,EAAjC,EAAqCE,EAArC,EAAyCE,EAAzC,EAA6CC,EAA7C,EAAiD;IAC/C,MAAM2vB,KAAA,GAAS,CAAA3rB,EAAA,GAAKrE,EAAL,IAAW,CAA1B;IACA,MAAMiwB,KAAA,GAAS,CAAA3rB,EAAA,GAAKpE,EAAL,IAAW,CAA1B;IACA,MAAMI,EAAA,GAAM,CAAAN,EAAA,GAAKI,EAAL,IAAW,CAAvB;IACA,MAAMG,EAAA,GAAM,CAAAL,EAAA,GAAKG,EAAL,IAAW,CAAvB;IAEAw7B,MAAA,CAAOpyB,aAAP,CACEumB,KAAA,GAAS,KAAKhwB,EAAA,GAAKgwB,KAAL,CAAN,GAAqB,CAD/B,EAEEC,KAAA,GAAS,KAAK/vB,EAAA,GAAK+vB,KAAL,CAAN,GAAqB,CAF/B,EAGE3vB,EAAA,GAAM,KAAKN,EAAA,GAAKM,EAAL,CAAN,GAAkB,CAHzB,EAIEC,EAAA,GAAM,KAAKL,EAAA,GAAKK,EAAL,CAAN,GAAkB,CAJzB,EAKED,EALF,EAMEC,EANF;EAN+C;EAgBjD,CAAA27B,qBAAA,EAAwB;IACtB,MAAM7uB,IAAA,GAAO,KAAK0sB,WAAlB;IACA,IAAI1sB,IAAA,CAAK3lC,MAAL,IAAe,CAAnB,EAAsB;MACpB,OAAO,CAAC,CAAC2lC,IAAA,CAAK,CAAL,CAAD,EAAUA,IAAA,CAAK,CAAL,CAAV,EAAmBA,IAAA,CAAKuuB,EAAL,CAAQ,CAAC,CAAT,CAAnB,EAAgCvuB,IAAA,CAAKuuB,EAAL,CAAQ,CAAC,CAAT,CAAhC,CAAD,CAAP;IADoB;IAItB,MAAMa,YAAA,GAAe,EAArB;IACA,IAAI3mD,CAAJ;IACA,IAAI,CAACuuB,EAAD,EAAKC,EAAL,IAAW+I,IAAA,CAAK,CAAL,CAAf;IACA,KAAKv3B,CAAA,GAAI,CAAT,EAAYA,CAAA,GAAIu3B,IAAA,CAAK3lC,MAAL,GAAc,CAA9B,EAAiCoO,CAAA,EAAjC,EAAsC;MACpC,MAAM,CAACkqB,EAAD,EAAKE,EAAL,IAAWmN,IAAA,CAAKv3B,CAAL,CAAjB;MACA,MAAM,CAACsqB,EAAD,EAAKC,EAAL,IAAWgN,IAAA,CAAKv3B,CAAA,GAAI,CAAT,CAAjB;MACA,MAAMwqB,EAAA,GAAM,CAAAN,EAAA,GAAKI,EAAL,IAAW,CAAvB;MACA,MAAMG,EAAA,GAAM,CAAAL,EAAA,GAAKG,EAAL,IAAW,CAAvB;MAKA,MAAMq8B,QAAA,GAAW,CAACr4B,EAAA,GAAM,KAAKrE,EAAA,GAAKqE,EAAL,CAAN,GAAkB,CAAxB,EAA2BC,EAAA,GAAM,KAAKpE,EAAA,GAAKoE,EAAL,CAAN,GAAkB,CAAlD,CAAjB;MACA,MAAMq4B,QAAA,GAAW,CAACr8B,EAAA,GAAM,KAAKN,EAAA,GAAKM,EAAL,CAAN,GAAkB,CAAxB,EAA2BC,EAAA,GAAM,KAAKL,EAAA,GAAKK,EAAL,CAAN,GAAkB,CAAlD,CAAjB;MAEAk8B,YAAA,CAAan0D,IAAb,CAAkB,CAAC,CAAC+7B,EAAD,EAAKC,EAAL,CAAD,EAAWo4B,QAAX,EAAqBC,QAArB,EAA+B,CAACr8B,EAAD,EAAKC,EAAL,CAA/B,CAAlB;MAEA,CAAC8D,EAAD,EAAKC,EAAL,IAAW,CAAChE,EAAD,EAAKC,EAAL,CAAX;IAdoC;IAiBtC,MAAM,CAACP,EAAD,EAAKE,EAAL,IAAWmN,IAAA,CAAKv3B,CAAL,CAAjB;IACA,MAAM,CAACsqB,EAAD,EAAKC,EAAL,IAAWgN,IAAA,CAAKv3B,CAAA,GAAI,CAAT,CAAjB;IAGA,MAAM4mD,QAAA,GAAW,CAACr4B,EAAA,GAAM,KAAKrE,EAAA,GAAKqE,EAAL,CAAN,GAAkB,CAAxB,EAA2BC,EAAA,GAAM,KAAKpE,EAAA,GAAKoE,EAAL,CAAN,GAAkB,CAAlD,CAAjB;IACA,MAAMq4B,QAAA,GAAW,CAACv8B,EAAA,GAAM,KAAKJ,EAAA,GAAKI,EAAL,CAAN,GAAkB,CAAxB,EAA2BC,EAAA,GAAM,KAAKH,EAAA,GAAKG,EAAL,CAAN,GAAkB,CAAlD,CAAjB;IAEAo8B,YAAA,CAAan0D,IAAb,CAAkB,CAAC,CAAC+7B,EAAD,EAAKC,EAAL,CAAD,EAAWo4B,QAAX,EAAqBC,QAArB,EAA+B,CAACv8B,EAAD,EAAKC,EAAL,CAA/B,CAAlB;IACA,OAAOo8B,YAAP;EAlCsB;EAwCxB,CAAA9B,OAAA,EAAU;IACR,IAAI,KAAKrV,OAAL,EAAJ,EAAoB;MAClB,KAAK,CAAAsX,eAAL;MACA;IAFkB;IAIpB,KAAK,CAAAtB,SAAL;IAEA,MAAM;MAAEr/C,MAAF;MAAUugB;IAAV,IAAkB,IAAxB;IACAA,GAAA,CAAI2C,YAAJ,CAAiB,CAAjB,EAAoB,CAApB,EAAuB,CAAvB,EAA0B,CAA1B,EAA6B,CAA7B,EAAgC,CAAhC;IACA3C,GAAA,CAAIkC,SAAJ,CAAc,CAAd,EAAiB,CAAjB,EAAoBziB,MAAA,CAAOpf,KAA3B,EAAkCof,MAAA,CAAOnf,MAAzC;IACA,KAAK,CAAA8/D,eAAL;IAEA,WAAWvvB,IAAX,IAAmB,KAAKwsB,YAAxB,EAAsC;MACpCr9B,GAAA,CAAI+e,MAAJ,CAAWlO,IAAX;IADoC;EAZ9B;EAoBV4oB,OAAA,EAAS;IACP,IAAI,KAAK,CAAAU,cAAT,EAA0B;MACxB;IADwB;IAI1B,MAAMV,MAAN;IAEA,KAAKpB,SAAL,GAAiB,KAAjB;IACA,KAAKD,eAAL;IAGA,KAAKiI,eAAL;IAEA,KAAK,CAAAlG,cAAL,GAAuB,IAAvB;IACA,KAAK9tD,GAAL,CAASrG,SAAT,CAAmBC,GAAnB,CAAuB,UAAvB;IAEA,KAAK,CAAAi4D,YAAL,CAAqC,IAArC;IACA,KAAKoC,MAAL;IAEA,KAAK37D,MAAL,CAAY47D,oBAAZ,CAAsD,IAAtD;IAIA,KAAKC,SAAL;IACA,KAAKn0D,GAAL,CAASrD,KAAT,CAAe;MACbE,aAAA,EAAe;IADF,CAAf;EAxBO;EA8BTovD,QAAQlwD,KAAR,EAAe;IACb,IAAI,CAAC,KAAKmwD,mBAAV,EAA+B;MAC7B;IAD6B;IAG/B,MAAMD,OAAN,CAAclwD,KAAd;IACA,KAAKyvD,cAAL;EALa;EAYf4E,kBAAkBr0D,KAAlB,EAAyB;IACvB,IAAIA,KAAA,CAAMq4D,MAAN,KAAiB,CAAjB,IAAsB,CAAC,KAAK3I,YAAL,EAAvB,IAA8C,KAAK,CAAAqC,cAAvD,EAAwE;MACtE;IADsE;IAMxE,KAAKkG,eAAL;IAEAj4D,KAAA,CAAM4O,cAAN;IAEA,IACE5O,KAAA,CAAMs4D,WAAN,KAAsB,OAAtB,IACA,CAAC,KAAKr0D,GAAL,CAASs0D,QAAT,CAAkBp7D,QAAA,CAAS4Q,aAA3B,CAFH,EAGE;MACA,KAAK9J,GAAL,CAASrD,KAAT,CAAe;QACbE,aAAA,EAAe;MADF,CAAf;IADA;IAMF,KAAK,CAAA61D,YAAL,CAAmB32D,KAAA,CAAM0nB,OAAzB,EAAkC1nB,KAAA,CAAM2nB,OAAxC;EApBuB;EA2BzBosC,kBAAkB/zD,KAAlB,EAAyB;IACvBA,KAAA,CAAM4O,cAAN;IACA,KAAK,CAAAioD,IAAL,CAAW72D,KAAA,CAAM0nB,OAAjB,EAA0B1nB,KAAA,CAAM2nB,OAAhC;EAFuB;EASzBwsC,gBAAgBn0D,KAAhB,EAAuB;IACrBA,KAAA,CAAM4O,cAAN;IACA,KAAK,CAAA4mB,UAAL,CAAiBx1B,KAAjB;EAFqB;EASvBi0D,mBAAmBj0D,KAAnB,EAA0B;IACxB,KAAK,CAAAw1B,UAAL,CAAiBx1B,KAAjB;EADwB;EAQ1B,CAAAw1B,WAAYx1B,KAAZ,EAAmB;IACjB,KAAKqX,MAAL,CAAY7G,mBAAZ,CACE,cADF,EAEE,KAAK,CAAAwjD,uBAFP;IAIA,KAAK38C,MAAL,CAAY7G,mBAAZ,CACE,aADF,EAEE,KAAK,CAAAsjD,sBAFP;IAIA,KAAKz8C,MAAL,CAAY7G,mBAAZ,CAAgC,WAAhC,EAA6C,KAAK,CAAA0jD,oBAAlD;IACA,KAAK78C,MAAL,CAAYzR,gBAAZ,CAA6B,aAA7B,EAA4C,KAAK,CAAAwuD,sBAAjD;IAIA,IAAI,KAAK,CAAAE,0BAAT,EAAsC;MACpCtrC,YAAA,CAAa,KAAK,CAAAsrC,0BAAlB;IADoC;IAGtC,KAAK,CAAAA,0BAAL,GAAmCzzD,UAAA,CAAW,MAAM;MAClD,KAAK,CAAAyzD,0BAAL,GAAmC,IAAnC;MACA,KAAKj9C,MAAL,CAAY7G,mBAAZ,CAAgC,aAAhC,EAA+Cu3C,2BAA/C;IAFkD,CAAjB,EAGhC,EAHgC,CAAnC;IAKA,KAAK,CAAAqP,WAAL,CAAkBp3D,KAAA,CAAM0nB,OAAxB,EAAiC1nB,KAAA,CAAM2nB,OAAvC;IAEA,KAAK6wC,sBAAL;IAIA,KAAKC,eAAL;EA5BiB;EAkCnB,CAAAxC,aAAA,EAAgB;IACd,KAAK5+C,MAAL,GAAcla,QAAA,CAASC,aAAT,CAAuB,QAAvB,CAAd;IACA,KAAKia,MAAL,CAAYpf,KAAZ,GAAoB,KAAKof,MAAL,CAAYnf,MAAZ,GAAqB,CAAzC;IACA,KAAKmf,MAAL,CAAYtE,SAAZ,GAAwB,iBAAxB;IACA,KAAKsE,MAAL,CAAYha,YAAZ,CAAyB,cAAzB,EAAyC,kBAAzC;IAEA,KAAK4G,GAAL,CAASX,MAAT,CAAgB,KAAK+T,MAArB;IACA,KAAKugB,GAAL,GAAW,KAAKvgB,MAAL,CAAYof,UAAZ,CAAuB,IAAvB,CAAX;EAPc;EAahB,CAAAy/B,eAAA,EAAkB;IAChB,KAAK,CAAAxB,QAAL,GAAiB,IAAIgE,cAAJ,CAAmBn2D,OAAA,IAAW;MAC7C,MAAMvK,IAAA,GAAOuK,OAAA,CAAQ,CAAR,EAAWo2D,WAAxB;MACA,IAAI3gE,IAAA,CAAKC,KAAL,IAAcD,IAAA,CAAKE,MAAvB,EAA+B;QAC7B,KAAKs+D,aAAL,CAAmBx+D,IAAA,CAAKC,KAAxB,EAA+BD,IAAA,CAAKE,MAApC;MAD6B;IAFc,CAA9B,CAAjB;IAMA,KAAK,CAAAw8D,QAAL,CAAekE,OAAf,CAAuB,KAAK30D,GAA5B;EAPgB;EAWlB,IAAI40D,WAAJA,CAAA,EAAkB;IAChB,OAAO,CAAC,KAAKnY,OAAL,EAAD,IAAmB,KAAK,CAAAqR,cAA/B;EADgB;EAKlB7tD,OAAA,EAAS;IACP,IAAI,KAAKD,GAAT,EAAc;MACZ,OAAO,KAAKA,GAAZ;IADY;IAId,IAAIguD,KAAJ,EAAWC,KAAX;IACA,IAAI,KAAKj6D,KAAT,EAAgB;MACdg6D,KAAA,GAAQ,KAAKp9D,CAAb;MACAq9D,KAAA,GAAQ,KAAKj9D,CAAb;IAFc;IAKhB,MAAMiP,MAAN;IAEA,KAAKD,GAAL,CAAS5G,YAAT,CAAsB,cAAtB,EAAsC,WAAtC;IAEA,MAAM,CAACxI,CAAD,EAAII,CAAJ,EAAOuqD,CAAP,EAAUC,CAAV,IAAe,KAAK,CAAAgX,cAAL,EAArB;IACA,KAAK/D,KAAL,CAAW79D,CAAX,EAAcI,CAAd,EAAiB,CAAjB,EAAoB,CAApB;IACA,KAAK6jE,OAAL,CAAatZ,CAAb,EAAgBC,CAAhB;IAEA,KAAK,CAAAwW,YAAL;IAEA,IAAI,KAAKh+D,KAAT,EAAgB;MAEd,MAAM,CAACmc,WAAD,EAAc08C,YAAd,IAA8B,KAAKC,gBAAzC;MACA,KAAKgI,cAAL,CAAoB,KAAK9gE,KAAL,GAAamc,WAAjC,EAA8C,KAAKlc,MAAL,GAAc44D,YAA5D;MACA,KAAK4B,KAAL,CACET,KAAA,GAAQ79C,WADV,EAEE89C,KAAA,GAAQpB,YAFV,EAGE,KAAK74D,KAAL,GAAamc,WAHf,EAIE,KAAKlc,MAAL,GAAc44D,YAJhB;MAMA,KAAK,CAAA2D,mBAAL,GAA4B,IAA5B;MACA,KAAK,CAAA0B,aAAL;MACA,KAAK2C,OAAL,CAAa,KAAK7gE,KAAL,GAAamc,WAA1B,EAAuC,KAAKlc,MAAL,GAAc44D,YAArD;MACA,KAAK,CAAAiF,MAAL;MACA,KAAK9xD,GAAL,CAASrG,SAAT,CAAmBC,GAAnB,CAAuB,UAAvB;IAdc,CAAhB,MAeO;MACL,KAAKoG,GAAL,CAASrG,SAAT,CAAmBC,GAAnB,CAAuB,SAAvB;MACA,KAAK4xD,cAAL;IAFK;IAKP,KAAK,CAAAyG,cAAL;IAEA,OAAO,KAAKjyD,GAAZ;EA3CO;EA8CT,CAAAkyD,cAAA,EAAiB;IACf,IAAI,CAAC,KAAK,CAAA1B,mBAAV,EAAgC;MAC9B;IAD8B;IAGhC,MAAM,CAACrgD,WAAD,EAAc08C,YAAd,IAA8B,KAAKC,gBAAzC;IACA,KAAK15C,MAAL,CAAYpf,KAAZ,GAAoB3D,IAAA,CAAKmlC,IAAL,CAAU,KAAKxhC,KAAL,GAAamc,WAAvB,CAApB;IACA,KAAKiD,MAAL,CAAYnf,MAAZ,GAAqB5D,IAAA,CAAKmlC,IAAL,CAAU,KAAKvhC,MAAL,GAAc44D,YAAxB,CAArB;IACA,KAAK,CAAAkH,eAAL;EAPe;EAiBjBxB,cAAcv+D,KAAd,EAAqBC,MAArB,EAA6B;IAC3B,MAAM8gE,YAAA,GAAe1kE,IAAA,CAAKsX,KAAL,CAAW3T,KAAX,CAArB;IACA,MAAMghE,aAAA,GAAgB3kE,IAAA,CAAKsX,KAAL,CAAW1T,MAAX,CAAtB;IACA,IACE,KAAK,CAAAy8D,SAAL,KAAoBqE,YAApB,IACA,KAAK,CAAApE,UAAL,KAAqBqE,aAFvB,EAGE;MACA;IADA;IAIF,KAAK,CAAAtE,SAAL,GAAkBqE,YAAlB;IACA,KAAK,CAAApE,UAAL,GAAmBqE,aAAnB;IAEA,KAAK5hD,MAAL,CAAY7Z,KAAZ,CAAkBgD,UAAlB,GAA+B,QAA/B;IAEA,MAAM,CAAC4T,WAAD,EAAc08C,YAAd,IAA8B,KAAKC,gBAAzC;IACA,KAAK94D,KAAL,GAAaA,KAAA,GAAQmc,WAArB;IACA,KAAKlc,MAAL,GAAcA,MAAA,GAAS44D,YAAvB;IACA,KAAKM,iBAAL;IAEA,IAAI,KAAK,CAAAW,cAAT,EAA0B;MACxB,KAAK,CAAAmH,cAAL,CAAqBjhE,KAArB,EAA4BC,MAA5B;IADwB;IAI1B,KAAK,CAAAi+D,aAAL;IACA,KAAK,CAAAJ,MAAL;IAEA,KAAK1+C,MAAL,CAAY7Z,KAAZ,CAAkBgD,UAAlB,GAA+B,SAA/B;IAIA,KAAK24D,OAAL;EA/B2B;EAkC7B,CAAAD,eAAgBjhE,KAAhB,EAAuBC,MAAvB,EAA+B;IAC7B,MAAMg7D,OAAA,GAAU,KAAK,CAAAkG,UAAL,EAAhB;IACA,MAAMC,YAAA,GAAgB,CAAAphE,KAAA,GAAQi7D,OAAR,IAAmB,KAAK,CAAAW,SAA9C;IACA,MAAMyF,YAAA,GAAgB,CAAAphE,MAAA,GAASg7D,OAAT,IAAoB,KAAK,CAAAU,UAA/C;IACA,KAAKwB,WAAL,GAAmB9gE,IAAA,CAAKG,GAAL,CAAS4kE,YAAT,EAAuBC,YAAvB,CAAnB;EAJ6B;EAU/B,CAAAtB,gBAAA,EAAmB;IACjB,MAAM9E,OAAA,GAAU,KAAK,CAAAkG,UAAL,KAAqB,CAArC;IACA,KAAKxhC,GAAL,CAAS2C,YAAT,CACE,KAAK66B,WADP,EAEE,CAFF,EAGE,CAHF,EAIE,KAAKA,WAJP,EAKE,KAAKC,YAAL,GAAoB,KAAKD,WAAzB,GAAuClC,OALzC,EAME,KAAKoC,YAAL,GAAoB,KAAKF,WAAzB,GAAuClC,OANzC;EAFiB;EAiBnB,OAAO,CAAAqG,WAAPA,CAAoBlC,MAApB,EAA4B;IAC1B,MAAMJ,MAAA,GAAS,IAAIl/B,MAAJ,EAAf;IACA,KAAK,IAAI7mB,CAAA,GAAI,CAAR,EAAWwD,EAAA,GAAK2iD,MAAA,CAAOv0D,MAAvB,EAA+BoO,CAAA,GAAIwD,EAAxC,EAA4CxD,CAAA,EAA5C,EAAiD;MAC/C,MAAM,CAACsoD,KAAD,EAAQ1B,QAAR,EAAkBC,QAAlB,EAA4BnP,MAA5B,IAAsCyO,MAAA,CAAOnmD,CAAP,CAA5C;MACA,IAAIA,CAAA,KAAM,CAAV,EAAa;QACX+lD,MAAA,CAAOxyB,MAAP,CAAc,GAAG+0B,KAAjB;MADW;MAGbvC,MAAA,CAAOpyB,aAAP,CACEizB,QAAA,CAAS,CAAT,CADF,EAEEA,QAAA,CAAS,CAAT,CAFF,EAGEC,QAAA,CAAS,CAAT,CAHF,EAIEA,QAAA,CAAS,CAAT,CAJF,EAKEnP,MAAA,CAAO,CAAP,CALF,EAMEA,MAAA,CAAO,CAAP,CANF;IAL+C;IAcjD,OAAOqO,MAAP;EAhB0B;EAmB5B,OAAO,CAAAwC,gBAAPA,CAAyBjkD,MAAzB,EAAiCxd,IAAjC,EAAuCmG,QAAvC,EAAiD;IAC/C,MAAM,CAAC8E,GAAD,EAAMC,GAAN,EAAWH,GAAX,EAAgBC,GAAhB,IAAuBhL,IAA7B;IAEA,QAAQmG,QAAR;MACE,KAAK,CAAL;QACE,KAAK,IAAI+S,CAAA,GAAI,CAAR,EAAWwD,EAAA,GAAKc,MAAA,CAAO1S,MAAvB,EAA+BoO,CAAA,GAAIwD,EAAxC,EAA4CxD,CAAA,IAAK,CAAjD,EAAoD;UAClDsE,MAAA,CAAOtE,CAAP,KAAajO,GAAb;UACAuS,MAAA,CAAOtE,CAAA,GAAI,CAAX,IAAgBlO,GAAA,GAAMwS,MAAA,CAAOtE,CAAA,GAAI,CAAX,CAAtB;QAFkD;QAIpD;MACF,KAAK,EAAL;QACE,KAAK,IAAIA,CAAA,GAAI,CAAR,EAAWwD,EAAA,GAAKc,MAAA,CAAO1S,MAAvB,EAA+BoO,CAAA,GAAIwD,EAAxC,EAA4CxD,CAAA,IAAK,CAAjD,EAAoD;UAClD,MAAMrc,CAAA,GAAI2gB,MAAA,CAAOtE,CAAP,CAAV;UACAsE,MAAA,CAAOtE,CAAP,IAAYsE,MAAA,CAAOtE,CAAA,GAAI,CAAX,IAAgBjO,GAA5B;UACAuS,MAAA,CAAOtE,CAAA,GAAI,CAAX,IAAgBrc,CAAA,GAAIqO,GAApB;QAHkD;QAKpD;MACF,KAAK,GAAL;QACE,KAAK,IAAIgO,CAAA,GAAI,CAAR,EAAWwD,EAAA,GAAKc,MAAA,CAAO1S,MAAvB,EAA+BoO,CAAA,GAAIwD,EAAxC,EAA4CxD,CAAA,IAAK,CAAjD,EAAoD;UAClDsE,MAAA,CAAOtE,CAAP,IAAYnO,GAAA,GAAMyS,MAAA,CAAOtE,CAAP,CAAlB;UACAsE,MAAA,CAAOtE,CAAA,GAAI,CAAX,KAAiBhO,GAAjB;QAFkD;QAIpD;MACF,KAAK,GAAL;QACE,KAAK,IAAIgO,CAAA,GAAI,CAAR,EAAWwD,EAAA,GAAKc,MAAA,CAAO1S,MAAvB,EAA+BoO,CAAA,GAAIwD,EAAxC,EAA4CxD,CAAA,IAAK,CAAjD,EAAoD;UAClD,MAAMrc,CAAA,GAAI2gB,MAAA,CAAOtE,CAAP,CAAV;UACAsE,MAAA,CAAOtE,CAAP,IAAYnO,GAAA,GAAMyS,MAAA,CAAOtE,CAAA,GAAI,CAAX,CAAlB;UACAsE,MAAA,CAAOtE,CAAA,GAAI,CAAX,IAAgBlO,GAAA,GAAMnO,CAAtB;QAHkD;QAKpD;MACF;QACE,MAAM,IAAI+nB,KAAJ,CAAU,kBAAV,CAAN;IA5BJ;IA8BA,OAAOpH,MAAP;EAjC+C;EAoCjD,OAAO,CAAAkkD,kBAAPA,CAA2BlkD,MAA3B,EAAmCxd,IAAnC,EAAyCmG,QAAzC,EAAmD;IACjD,MAAM,CAAC8E,GAAD,EAAMC,GAAN,EAAWH,GAAX,EAAgBC,GAAhB,IAAuBhL,IAA7B;IAEA,QAAQmG,QAAR;MACE,KAAK,CAAL;QACE,KAAK,IAAI+S,CAAA,GAAI,CAAR,EAAWwD,EAAA,GAAKc,MAAA,CAAO1S,MAAvB,EAA+BoO,CAAA,GAAIwD,EAAxC,EAA4CxD,CAAA,IAAK,CAAjD,EAAoD;UAClDsE,MAAA,CAAOtE,CAAP,KAAajO,GAAb;UACAuS,MAAA,CAAOtE,CAAA,GAAI,CAAX,IAAgBlO,GAAA,GAAMwS,MAAA,CAAOtE,CAAA,GAAI,CAAX,CAAtB;QAFkD;QAIpD;MACF,KAAK,EAAL;QACE,KAAK,IAAIA,CAAA,GAAI,CAAR,EAAWwD,EAAA,GAAKc,MAAA,CAAO1S,MAAvB,EAA+BoO,CAAA,GAAIwD,EAAxC,EAA4CxD,CAAA,IAAK,CAAjD,EAAoD;UAClD,MAAMrc,CAAA,GAAI2gB,MAAA,CAAOtE,CAAP,CAAV;UACAsE,MAAA,CAAOtE,CAAP,IAAYsE,MAAA,CAAOtE,CAAA,GAAI,CAAX,IAAgBhO,GAA5B;UACAsS,MAAA,CAAOtE,CAAA,GAAI,CAAX,IAAgBrc,CAAA,GAAIoO,GAApB;QAHkD;QAKpD;MACF,KAAK,GAAL;QACE,KAAK,IAAIiO,CAAA,GAAI,CAAR,EAAWwD,EAAA,GAAKc,MAAA,CAAO1S,MAAvB,EAA+BoO,CAAA,GAAIwD,EAAxC,EAA4CxD,CAAA,IAAK,CAAjD,EAAoD;UAClDsE,MAAA,CAAOtE,CAAP,IAAYnO,GAAA,GAAMyS,MAAA,CAAOtE,CAAP,CAAlB;UACAsE,MAAA,CAAOtE,CAAA,GAAI,CAAX,KAAiBhO,GAAjB;QAFkD;QAIpD;MACF,KAAK,GAAL;QACE,KAAK,IAAIgO,CAAA,GAAI,CAAR,EAAWwD,EAAA,GAAKc,MAAA,CAAO1S,MAAvB,EAA+BoO,CAAA,GAAIwD,EAAxC,EAA4CxD,CAAA,IAAK,CAAjD,EAAoD;UAClD,MAAMrc,CAAA,GAAI2gB,MAAA,CAAOtE,CAAP,CAAV;UACAsE,MAAA,CAAOtE,CAAP,IAAYlO,GAAA,GAAMwS,MAAA,CAAOtE,CAAA,GAAI,CAAX,CAAlB;UACAsE,MAAA,CAAOtE,CAAA,GAAI,CAAX,IAAgBnO,GAAA,GAAMlO,CAAtB;QAHkD;QAKpD;MACF;QACE,MAAM,IAAI+nB,KAAJ,CAAU,kBAAV,CAAN;IA5BJ;IA8BA,OAAOpH,MAAP;EAjCiD;EA2CnD,CAAAmkD,eAAgBC,CAAhB,EAAmB7yB,EAAnB,EAAuBC,EAAvB,EAA2BhvC,IAA3B,EAAiC;IAC/B,MAAMw/C,KAAA,GAAQ,EAAd;IACA,MAAM0b,OAAA,GAAU,KAAK8B,SAAL,GAAiB,CAAjC;IACA,MAAM6E,MAAA,GAASD,CAAA,GAAI7yB,EAAJ,GAASmsB,OAAxB;IACA,MAAM4G,MAAA,GAASF,CAAA,GAAI5yB,EAAJ,GAASksB,OAAxB;IACA,WAAWmE,MAAX,IAAqB,KAAK7f,KAA1B,EAAiC;MAC/B,MAAMx1B,MAAA,GAAS,EAAf;MACA,MAAMxM,MAAA,GAAS,EAAf;MACA,KAAK,IAAIynB,CAAA,GAAI,CAAR,EAAW0F,EAAA,GAAK00B,MAAA,CAAOv0D,MAAvB,EAA+Bm6B,CAAA,GAAI0F,EAAxC,EAA4C1F,CAAA,EAA5C,EAAiD;QAC/C,MAAM,CAACu8B,KAAD,EAAQ1B,QAAR,EAAkBC,QAAlB,EAA4BnP,MAA5B,IAAsCyO,MAAA,CAAOp6B,CAAP,CAA5C;QACA,MAAM88B,GAAA,GAAMH,CAAA,GAAIJ,KAAA,CAAM,CAAN,CAAJ,GAAeK,MAA3B;QACA,MAAMG,GAAA,GAAMJ,CAAA,GAAIJ,KAAA,CAAM,CAAN,CAAJ,GAAeM,MAA3B;QACA,MAAMG,GAAA,GAAML,CAAA,GAAI9B,QAAA,CAAS,CAAT,CAAJ,GAAkB+B,MAA9B;QACA,MAAMK,GAAA,GAAMN,CAAA,GAAI9B,QAAA,CAAS,CAAT,CAAJ,GAAkBgC,MAA9B;QACA,MAAMK,GAAA,GAAMP,CAAA,GAAI7B,QAAA,CAAS,CAAT,CAAJ,GAAkB8B,MAA9B;QACA,MAAMO,GAAA,GAAMR,CAAA,GAAI7B,QAAA,CAAS,CAAT,CAAJ,GAAkB+B,MAA9B;QACA,MAAMO,GAAA,GAAMT,CAAA,GAAIhR,MAAA,CAAO,CAAP,CAAJ,GAAgBiR,MAA5B;QACA,MAAMS,GAAA,GAAMV,CAAA,GAAIhR,MAAA,CAAO,CAAP,CAAJ,GAAgBkR,MAA5B;QAEA,IAAI78B,CAAA,KAAM,CAAV,EAAa;UACXjb,MAAA,CAAOte,IAAP,CAAYq2D,GAAZ,EAAiBC,GAAjB;UACAxkD,MAAA,CAAO9R,IAAP,CAAYq2D,GAAZ,EAAiBC,GAAjB;QAFW;QAIbh4C,MAAA,CAAOte,IAAP,CAAYu2D,GAAZ,EAAiBC,GAAjB,EAAsBC,GAAtB,EAA2BC,GAA3B,EAAgCC,GAAhC,EAAqCC,GAArC;QACA9kD,MAAA,CAAO9R,IAAP,CAAYu2D,GAAZ,EAAiBC,GAAjB;QACA,IAAIj9B,CAAA,KAAM0F,EAAA,GAAK,CAAf,EAAkB;UAChBntB,MAAA,CAAO9R,IAAP,CAAY22D,GAAZ,EAAiBC,GAAjB;QADgB;MAjB6B;MAqBjD9iB,KAAA,CAAM9zC,IAAN,CAAW;QACT2zD,MAAA,EAAQ1D,SAAA,CAAU,CAAA8F,gBAAV,CAA4Bz3C,MAA5B,EAAoChqB,IAApC,EAA0C,KAAKmG,QAA/C,CADC;QAETqX,MAAA,EAAQm+C,SAAA,CAAU,CAAA8F,gBAAV,CAA4BjkD,MAA5B,EAAoCxd,IAApC,EAA0C,KAAKmG,QAA/C;MAFC,CAAX;IAxB+B;IA8BjC,OAAOq5C,KAAP;EAnC+B;EA0CjC,CAAA+iB,QAAA,EAAW;IACT,IAAI9C,IAAA,GAAOtsB,QAAX;IACA,IAAIusB,IAAA,GAAO,CAACvsB,QAAZ;IACA,IAAIwsB,IAAA,GAAOxsB,QAAX;IACA,IAAIysB,IAAA,GAAO,CAACzsB,QAAZ;IAEA,WAAW1C,IAAX,IAAmB,KAAK+O,KAAxB,EAA+B;MAC7B,WAAW,CAACgiB,KAAD,EAAQ1B,QAAR,EAAkBC,QAAlB,EAA4BnP,MAA5B,CAAX,IAAkDngB,IAAlD,EAAwD;QACtD,MAAM5Q,IAAA,GAAO1gC,SAAA,CAAK0zC,iBAAL,CACX,GAAG2uB,KADQ,EAEX,GAAG1B,QAFQ,EAGX,GAAGC,QAHQ,EAIX,GAAGnP,MAJQ,CAAb;QAMA6O,IAAA,GAAOnjE,IAAA,CAAKG,GAAL,CAASgjE,IAAT,EAAe5/B,IAAA,CAAK,CAAL,CAAf,CAAP;QACA8/B,IAAA,GAAOrjE,IAAA,CAAKG,GAAL,CAASkjE,IAAT,EAAe9/B,IAAA,CAAK,CAAL,CAAf,CAAP;QACA6/B,IAAA,GAAOpjE,IAAA,CAAKE,GAAL,CAASkjE,IAAT,EAAe7/B,IAAA,CAAK,CAAL,CAAf,CAAP;QACA+/B,IAAA,GAAOtjE,IAAA,CAAKE,GAAL,CAASojE,IAAT,EAAe//B,IAAA,CAAK,CAAL,CAAf,CAAP;MAVsD;IAD3B;IAe/B,OAAO,CAAC4/B,IAAD,EAAOE,IAAP,EAAaD,IAAb,EAAmBE,IAAnB,CAAP;EArBS;EA+BX,CAAAwB,WAAA,EAAc;IACZ,OAAO,KAAK,CAAArH,cAAL,GACHz9D,IAAA,CAAKmlC,IAAL,CAAU,KAAKu7B,SAAL,GAAiB,KAAKtG,WAAhC,CADG,GAEH,CAFJ;EADY;EAWd,CAAAoH,aAAc0E,SAAA,GAAY,KAA1B,EAAiC;IAC/B,IAAI,KAAK9Z,OAAL,EAAJ,EAAoB;MAClB;IADkB;IAIpB,IAAI,CAAC,KAAK,CAAAqR,cAAV,EAA2B;MACzB,KAAK,CAAAgE,MAAL;MACA;IAFyB;IAK3B,MAAMl+B,IAAA,GAAO,KAAK,CAAA0iC,OAAL,EAAb;IACA,MAAMrH,OAAA,GAAU,KAAK,CAAAkG,UAAL,EAAhB;IACA,KAAK,CAAAvF,SAAL,GAAkBv/D,IAAA,CAAKE,GAAL,CAASmjB,8BAAA,CAAiB8iD,QAA1B,EAAoC5iC,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAA9C,CAAlB;IACA,KAAK,CAAA+7B,UAAL,GAAmBt/D,IAAA,CAAKE,GAAL,CAASmjB,8BAAA,CAAiB8iD,QAA1B,EAAoC5iC,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAA9C,CAAnB;IAEA,MAAM5/B,KAAA,GAAQ3D,IAAA,CAAKmlC,IAAL,CAAUy5B,OAAA,GAAU,KAAK,CAAAW,SAAL,GAAkB,KAAKuB,WAA3C,CAAd;IACA,MAAMl9D,MAAA,GAAS5D,IAAA,CAAKmlC,IAAL,CAAUy5B,OAAA,GAAU,KAAK,CAAAU,UAAL,GAAmB,KAAKwB,WAA5C,CAAf;IAEA,MAAM,CAAChhD,WAAD,EAAc08C,YAAd,IAA8B,KAAKC,gBAAzC;IACA,KAAK94D,KAAL,GAAaA,KAAA,GAAQmc,WAArB;IACA,KAAKlc,MAAL,GAAcA,MAAA,GAAS44D,YAAvB;IAEA,KAAKiI,cAAL,CAAoB9gE,KAApB,EAA2BC,MAA3B;IAEA,MAAMwiE,gBAAA,GAAmB,KAAKrF,YAA9B;IACA,MAAMsF,gBAAA,GAAmB,KAAKrF,YAA9B;IAEA,KAAKD,YAAL,GAAoB,CAACx9B,IAAA,CAAK,CAAL,CAArB;IACA,KAAKy9B,YAAL,GAAoB,CAACz9B,IAAA,CAAK,CAAL,CAArB;IACA,KAAK,CAAAs+B,aAAL;IACA,KAAK,CAAAJ,MAAL;IAEA,KAAK,CAAApB,SAAL,GAAkB18D,KAAlB;IACA,KAAK,CAAA28D,UAAL,GAAmB18D,MAAnB;IAEA,KAAK4gE,OAAL,CAAa7gE,KAAb,EAAoBC,MAApB;IACA,MAAM0iE,eAAA,GAAkBJ,SAAA,GAAYtH,OAAA,GAAU,KAAKkC,WAAf,GAA6B,CAAzC,GAA6C,CAArE;IACA,KAAKp7B,SAAL,CACE0gC,gBAAA,GAAmB,KAAKrF,YAAxB,GAAuCuF,eADzC,EAEED,gBAAA,GAAmB,KAAKrF,YAAxB,GAAuCsF,eAFzC;EArC+B;EA4CjC,OAAO/H,WAAPA,CAAmBt6D,IAAnB,EAAyBgE,MAAzB,EAAiCu2D,SAAjC,EAA4C;IAC1C,IAAIv6D,IAAA,YAAgBgC,qCAApB,EAA0C;MACxC,OAAO,IAAP;IADwC;IAG1C,MAAMy4D,MAAA,GAAS,MAAMH,WAAN,CAAkBt6D,IAAlB,EAAwBgE,MAAxB,EAAgCu2D,SAAhC,CAAf;IAEAE,MAAA,CAAOgC,SAAP,GAAmBz8D,IAAA,CAAKy8D,SAAxB;IACAhC,MAAA,CAAOl9D,KAAP,GAAeqB,SAAA,CAAKmI,YAAL,CAAkB,GAAG/G,IAAA,CAAKzC,KAA1B,CAAf;IACAk9D,MAAA,CAAOxI,OAAP,GAAiBjyD,IAAA,CAAKiyD,OAAtB;IAEA,MAAM,CAAC1sD,SAAD,EAAYC,UAAZ,IAA0Bi1D,MAAA,CAAOV,cAAvC;IACA,MAAMr6D,KAAA,GAAQ+6D,MAAA,CAAO/6D,KAAP,GAAe6F,SAA7B;IACA,MAAM5F,MAAA,GAAS86D,MAAA,CAAO96D,MAAP,GAAgB6F,UAA/B;IACA,MAAMq3D,WAAA,GAAcpC,MAAA,CAAOtE,WAA3B;IACA,MAAMwE,OAAA,GAAU36D,IAAA,CAAKy8D,SAAL,GAAiB,CAAjC;IAEAhC,MAAA,CAAO,CAAAjB,cAAP,GAAyB,IAAzB;IACAiB,MAAA,CAAO,CAAA2B,SAAP,GAAoBrgE,IAAA,CAAKsX,KAAL,CAAW3T,KAAX,CAApB;IACA+6D,MAAA,CAAO,CAAA4B,UAAP,GAAqBtgE,IAAA,CAAKsX,KAAL,CAAW1T,MAAX,CAArB;IAEA,MAAM;MAAEs/C,KAAF;MAASx/C,IAAT;MAAemG;IAAf,IAA4B5F,IAAlC;IAEA,SAAS;MAAE8+D;IAAF,CAAT,IAAuB7f,KAAvB,EAA8B;MAC5B6f,MAAA,GAAS1D,SAAA,CAAU,CAAA+F,kBAAV,CAA8BrC,MAA9B,EAAsCr/D,IAAtC,EAA4CmG,QAA5C,CAAT;MACA,MAAMsqC,IAAA,GAAO,EAAb;MACAuqB,MAAA,CAAOxb,KAAP,CAAa9zC,IAAb,CAAkB+kC,IAAlB;MACA,IAAIC,EAAA,GAAK0sB,WAAA,IAAeiC,MAAA,CAAO,CAAP,IAAYnE,OAAZ,CAAxB;MACA,IAAIz4B,EAAA,GAAK26B,WAAA,IAAeiC,MAAA,CAAO,CAAP,IAAYnE,OAAZ,CAAxB;MACA,KAAK,IAAIhiD,CAAA,GAAI,CAAR,EAAWwD,EAAA,GAAK2iD,MAAA,CAAOv0D,MAAvB,EAA+BoO,CAAA,GAAIwD,EAAxC,EAA4CxD,CAAA,IAAK,CAAjD,EAAoD;QAClD,MAAM6oD,GAAA,GAAM3E,WAAA,IAAeiC,MAAA,CAAOnmD,CAAP,IAAYgiD,OAAZ,CAA3B;QACA,MAAM8G,GAAA,GAAM5E,WAAA,IAAeiC,MAAA,CAAOnmD,CAAA,GAAI,CAAX,IAAgBgiD,OAAhB,CAA3B;QACA,MAAM+G,GAAA,GAAM7E,WAAA,IAAeiC,MAAA,CAAOnmD,CAAA,GAAI,CAAX,IAAgBgiD,OAAhB,CAA3B;QACA,MAAMgH,GAAA,GAAM9E,WAAA,IAAeiC,MAAA,CAAOnmD,CAAA,GAAI,CAAX,IAAgBgiD,OAAhB,CAA3B;QACA,MAAMiH,GAAA,GAAM/E,WAAA,IAAeiC,MAAA,CAAOnmD,CAAA,GAAI,CAAX,IAAgBgiD,OAAhB,CAA3B;QACA,MAAMkH,GAAA,GAAMhF,WAAA,IAAeiC,MAAA,CAAOnmD,CAAA,GAAI,CAAX,IAAgBgiD,OAAhB,CAA3B;QACAzqB,IAAA,CAAK/kC,IAAL,CAAU,CACR,CAACglC,EAAD,EAAKjO,EAAL,CADQ,EAER,CAACs/B,GAAD,EAAMC,GAAN,CAFQ,EAGR,CAACC,GAAD,EAAMC,GAAN,CAHQ,EAIR,CAACC,GAAD,EAAMC,GAAN,CAJQ,CAAV;QAMA1xB,EAAA,GAAKyxB,GAAL;QACA1/B,EAAA,GAAK2/B,GAAL;MAdkD;MAgBpD,MAAMnD,MAAA,GAAS,KAAK,CAAAsC,WAAL,CAAkB9wB,IAAlB,CAAf;MACAuqB,MAAA,CAAOiC,YAAP,CAAoBvxD,IAApB,CAAyBuzD,MAAzB;IAvB4B;IA0B9B,MAAMp/B,IAAA,GAAOm7B,MAAA,CAAO,CAAAuH,OAAP,EAAb;IACAvH,MAAA,CAAO,CAAAa,SAAP,GAAoBv/D,IAAA,CAAKE,GAAL,CAASmjB,8BAAA,CAAiB8iD,QAA1B,EAAoC5iC,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAA9C,CAApB;IACAm7B,MAAA,CAAO,CAAAY,UAAP,GAAqBt/D,IAAA,CAAKE,GAAL,CAASmjB,8BAAA,CAAiB8iD,QAA1B,EAAoC5iC,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAA9C,CAArB;IACAm7B,MAAA,CAAO,CAAAkG,cAAP,CAAuBjhE,KAAvB,EAA8BC,MAA9B;IAEA,OAAO86D,MAAP;EArD0C;EAyD5C55C,UAAA,EAAY;IACV,IAAI,KAAKsnC,OAAL,EAAJ,EAAoB;MAClB,OAAO,IAAP;IADkB;IAIpB,MAAM1oD,IAAA,GAAO,KAAKm7D,OAAL,CAAa,CAAb,EAAgB,CAAhB,CAAb;IACA,MAAMr9D,KAAA,GAAQ6hB,8BAAA,CAAiBy7C,aAAjB,CAA+BC,OAA/B,CAAuC,KAAKz7B,GAAL,CAASoJ,WAAhD,CAAd;IAEA,OAAO;MACLxoC,cAAA,EAAgB5B,yBAAA,CAAqB0D,GADhC;MAELxE,KAFK;MAGLk/D,SAAA,EAAW,KAAKA,SAHX;MAILxK,OAAA,EAAS,KAAKA,OAJT;MAKLhT,KAAA,EAAO,KAAK,CAAAmiB,cAAL,CACL,KAAKvE,WAAL,GAAmB,KAAK1G,WADnB,EAEL,KAAK2G,YAFA,EAGL,KAAKC,YAHA,EAILt9D,IAJK,CALF;MAWL2uB,SAAA,EAAW,KAAKA,SAXX;MAYL3uB,IAZK;MAaLmG,QAAA,EAAU,KAAKA,QAbV;MAcLm1D,kBAAA,EAAoB,KAAKC;IAdpB,CAAP;EARU;AA1nC2B;;;ACbzC;AACA;AACA;AACA;AAKA,MAAMsH,WAAN,SAA0BljD,8BAA1B,CAA2C;EACzC,CAAA0B,MAAA,GAAU,IAAV;EAEA,CAAAyhD,QAAA,GAAY,IAAZ;EAEA,CAAAC,aAAA,GAAiB,IAAjB;EAEA,CAAAC,SAAA,GAAa,IAAb;EAEA,CAAAC,UAAA,GAAc,IAAd;EAEA,CAAAC,cAAA,GAAkB,EAAlB;EAEA,CAAA7jD,MAAA,GAAU,IAAV;EAEA,CAAAq9C,QAAA,GAAY,IAAZ;EAEA,CAAAyG,eAAA,GAAmB,IAAnB;EAEA,CAAAC,KAAA,GAAS,KAAT;EAEA,CAAAC,uBAAA,GAA2B,KAA3B;EAEA,OAAOziD,KAAP,GAAe,OAAf;EAEA,OAAO60C,WAAP,GAAqB72D,yBAAA,CAAqBsE,KAA1C;EAEAM,YAAYmb,MAAZ,EAAoB;IAClB,MAAM;MAAE,GAAGA,MAAL;MAAa7U,IAAA,EAAM;IAAnB,CAAN;IACA,KAAK,CAAAk5D,SAAL,GAAkBrkD,MAAA,CAAOqkD,SAAzB;IACA,KAAK,CAAAC,UAAL,GAAmBtkD,MAAA,CAAOskD,UAA1B;EAHkB;EAOpB,OAAOtN,UAAPA,CAAkBC,IAAlB,EAAwB;IACtBj2C,8BAAA,CAAiBg2C,UAAjB,CAA4BC,IAA5B;EADsB;EAIxB,WAAW0N,cAAXA,CAAA,EAA4B;IAG1B,MAAMC,KAAA,GAAQ,CACZ,MADY,EAEZ,MAFY,EAGZ,KAHY,EAIZ,KAJY,EAKZ,MALY,EAMZ,KANY,EAOZ,SAPY,EAQZ,MARY,EASZ,QATY,CAAd;IAWA,OAAOtkE,eAAA,CACL,IADK,EAEL,gBAFK,EAGLskE,KAAA,CAAMxlE,GAAN,CAAU+S,IAAA,IAAS,SAAQA,IAAT,EAAlB,CAHK,CAAP;EAd0B;EAqB5B,WAAW0yD,iBAAXA,CAAA,EAA+B;IAC7B,OAAOvkE,eAAA,CAAO,IAAP,EAAa,mBAAb,EAAkC,KAAKqkE,cAAL,CAAoBrlE,IAApB,CAAyB,GAAzB,CAAlC,CAAP;EAD6B;EAK/B,OAAOwlE,wBAAPA,CAAgCC,IAAhC,EAAsC;IACpC,OAAO,KAAKJ,cAAL,CAAoB/wD,QAApB,CAA6BmxD,IAA7B,CAAP;EADoC;EAKtC,OAAOC,KAAPA,CAAajqD,IAAb,EAAmBnV,MAAnB,EAA2B;IACzBA,MAAA,CAAOq/D,WAAP,CAAmBhlE,yBAAA,CAAqBsE,KAAxC,EAA+C;MAC7C+/D,UAAA,EAAYvpD,IAAA,CAAKmqD,SAAL;IADiC,CAA/C;EADyB;EAM3B,CAAAC,iBAAkBvjE,IAAlB,EAAwBwjE,MAAA,GAAS,KAAjC,EAAwC;IACtC,IAAI,CAACxjE,IAAL,EAAW;MACT,KAAKgY,MAAL;MACA;IAFS;IAIX,KAAK,CAAA8I,MAAL,GAAe9gB,IAAA,CAAK8gB,MAApB;IACA,IAAI,CAAC0iD,MAAL,EAAa;MACX,KAAK,CAAAjB,QAAL,GAAiBviE,IAAA,CAAK+E,EAAtB;MACA,KAAK,CAAA89D,KAAL,GAAc7iE,IAAA,CAAK6iE,KAAnB;IAFW;IAIb,IAAI7iE,IAAA,CAAKud,IAAT,EAAe;MACb,KAAK,CAAAolD,cAAL,GAAuB3iE,IAAA,CAAKud,IAAL,CAAUhU,IAAjC;IADa;IAGf,KAAK,CAAAm0D,YAAL;EAbsC;EAgBxC,CAAA+F,cAAA,EAAiB;IACf,KAAK,CAAAjB,aAAL,GAAsB,IAAtB;IACA,KAAK3L,UAAL,CAAgB6M,aAAhB,CAA8B,KAA9B;IACA,IAAI,KAAK,CAAA5kD,MAAT,EAAkB;MAChB,KAAKpT,GAAL,CAASrD,KAAT;IADgB;EAHH;EAQjB,CAAAs7D,UAAA,EAAa;IACX,IAAI,KAAK,CAAApB,QAAT,EAAoB;MAClB,KAAK1L,UAAL,CAAgB6M,aAAhB,CAA8B,IAA9B;MACA,KAAK7M,UAAL,CAAgB+M,YAAhB,CACGC,SADH,CACa,KAAK,CAAAtB,QADlB,EAEGr6C,IAFH,CAEQloB,IAAA,IAAQ,KAAK,CAAAujE,gBAAL,CAAuBvjE,IAAvB,EAA4C,IAA5C,CAFhB,EAGG46B,OAHH,CAGW,MAAM,KAAK,CAAA6oC,aAAL,EAHjB;MAIA;IANkB;IASpB,IAAI,KAAK,CAAAhB,SAAT,EAAqB;MACnB,MAAM50D,GAAA,GAAM,KAAK,CAAA40D,SAAjB;MACA,KAAK,CAAAA,SAAL,GAAkB,IAAlB;MACA,KAAK5L,UAAL,CAAgB6M,aAAhB,CAA8B,IAA9B;MACA,KAAK,CAAAlB,aAAL,GAAsB,KAAK3L,UAAL,CAAgB+M,YAAhB,CACnBE,UADmB,CACRj2D,GADQ,EAEnBqa,IAFmB,CAEdloB,IAAA,IAAQ,KAAK,CAAAujE,gBAAL,CAAuBvjE,IAAvB,CAFM,EAGnB46B,OAHmB,CAGX,MAAM,KAAK,CAAA6oC,aAAL,EAHK,CAAtB;MAIA;IARmB;IAWrB,IAAI,KAAK,CAAAf,UAAT,EAAsB;MACpB,MAAMnlD,IAAA,GAAO,KAAK,CAAAmlD,UAAlB;MACA,KAAK,CAAAA,UAAL,GAAmB,IAAnB;MACA,KAAK7L,UAAL,CAAgB6M,aAAhB,CAA8B,IAA9B;MACA,KAAK,CAAAlB,aAAL,GAAsB,KAAK3L,UAAL,CAAgB+M,YAAhB,CACnBG,WADmB,CACPxmD,IADO,EAEnB2K,IAFmB,CAEdloB,IAAA,IAAQ,KAAK,CAAAujE,gBAAL,CAAuBvjE,IAAvB,CAFM,EAGnB46B,OAHmB,CAGX,MAAM,KAAK,CAAA6oC,aAAL,EAHK,CAAtB;MAIA;IARoB;IAWtB,MAAM5T,KAAA,GAAQjrD,QAAA,CAASC,aAAT,CAAuB,OAAvB,CAAd;IAMAgrD,KAAA,CAAMt/C,IAAN,GAAa,MAAb;IACAs/C,KAAA,CAAMmU,MAAN,GAAe1B,WAAA,CAAYW,iBAA3B;IACA,KAAK,CAAAT,aAAL,GAAsB,IAAIj6C,OAAJ,CAAYC,OAAA,IAAW;MAC3CqnC,KAAA,CAAMxiD,gBAAN,CAAuB,QAAvB,EAAiC,YAAY;QAC3C,IAAI,CAACwiD,KAAA,CAAMoU,KAAP,IAAgBpU,KAAA,CAAMoU,KAAN,CAAY15D,MAAZ,KAAuB,CAA3C,EAA8C;UAC5C,KAAKyN,MAAL;QAD4C,CAA9C,MAEO;UACL,KAAK6+C,UAAL,CAAgB6M,aAAhB,CAA8B,IAA9B;UACA,MAAM1jE,IAAA,GAAO,MAAM,KAAK62D,UAAL,CAAgB+M,YAAhB,CAA6BG,WAA7B,CACjBlU,KAAA,CAAMoU,KAAN,CAAY,CAAZ,CADiB,CAAnB;UAGA,KAAK,CAAAV,gBAAL,CAAuBvjE,IAAvB;QALK;QAUPwoB,OAAA;MAb2C,CAA7C;MAeAqnC,KAAA,CAAMxiD,gBAAN,CAAuB,QAAvB,EAAiC,MAAM;QACrC,KAAK2K,MAAL;QACAwQ,OAAA;MAFqC,CAAvC;IAhB2C,CAAvB,EAoBnBoS,OApBmB,CAoBX,MAAM,KAAK,CAAA6oC,aAAL,EApBK,CAAtB;IAsBE5T,KAAA,CAAMqU,KAAN;EA9DS;EAmEblsD,OAAA,EAAS;IACP,IAAI,KAAK,CAAAuqD,QAAT,EAAoB;MAClB,KAAK,CAAAzhD,MAAL,GAAe,IAAf;MACA,KAAK+1C,UAAL,CAAgB+M,YAAhB,CAA6BO,QAA7B,CAAsC,KAAK,CAAA5B,QAA3C;MACA,KAAK,CAAAzjD,MAAL,EAAc9G,MAAd;MACA,KAAK,CAAA8G,MAAL,GAAe,IAAf;MACA,KAAK,CAAAq9C,QAAL,EAAgB0B,UAAhB;MACA,KAAK,CAAA1B,QAAL,GAAiB,IAAjB;MACA,IAAI,KAAK,CAAAyG,eAAT,EAA2B;QACzBnyC,YAAA,CAAa,KAAK,CAAAmyC,eAAlB;QACA,KAAK,CAAAA,eAAL,GAAwB,IAAxB;MAFyB;IAPT;IAYpB,MAAM5qD,MAAN;EAbO;EAiBTg/C,QAAA,EAAU;IACR,IAAI,CAAC,KAAKhzD,MAAV,EAAkB;MAGhB,IAAI,KAAK,CAAAu+D,QAAT,EAAoB;QAClB,KAAK,CAAAoB,SAAL;MADkB;MAGpB;IANgB;IAQlB,MAAM3M,OAAN;IACA,IAAI,KAAKtrD,GAAL,KAAa,IAAjB,EAAuB;MACrB;IADqB;IAIvB,IAAI,KAAK,CAAA62D,QAAT,EAAoB;MAClB,KAAK,CAAAoB,SAAL;IADkB;IAIpB,IAAI,CAAC,KAAK1M,eAAV,EAA2B;MAGzB,KAAKjzD,MAAL,CAAYsB,GAAZ,CAAgB,IAAhB;IAHyB;EAlBnB;EA0BVuyD,UAAA,EAAY;IACV,KAAKL,YAAL,GAAoB,IAApB;IACA,KAAK9rD,GAAL,CAASrD,KAAT;EAFU;EAMZ8/C,QAAA,EAAU;IACR,OAAO,EACL,KAAK,CAAAqa,aAAL,IACA,KAAK,CAAA1hD,MADL,IAEA,KAAK,CAAA2hD,SAFL,IAGA,KAAK,CAAAC,UAHL,CADF;EADQ;EAUV,IAAIpC,WAAJA,CAAA,EAAkB;IAChB,OAAO,IAAP;EADgB;EAKlB30D,OAAA,EAAS;IACP,IAAI,KAAKD,GAAT,EAAc;MACZ,OAAO,KAAKA,GAAZ;IADY;IAId,IAAIguD,KAAJ,EAAWC,KAAX;IACA,IAAI,KAAKj6D,KAAT,EAAgB;MACdg6D,KAAA,GAAQ,KAAKp9D,CAAb;MACAq9D,KAAA,GAAQ,KAAKj9D,CAAb;IAFc;IAKhB,MAAMiP,MAAN;IACA,KAAKD,GAAL,CAAS1D,MAAT,GAAkB,IAAlB;IAEA,IAAI,KAAK,CAAA8Y,MAAT,EAAkB;MAChB,KAAK,CAAA48C,YAAL;IADgB,CAAlB,MAEO;MACL,KAAK,CAAAiG,SAAL;IADK;IAIP,IAAI,KAAKjkE,KAAT,EAAgB;MAEd,MAAM,CAACmc,WAAD,EAAc08C,YAAd,IAA8B,KAAKC,gBAAzC;MACA,KAAK2B,KAAL,CACET,KAAA,GAAQ79C,WADV,EAEE89C,KAAA,GAAQpB,YAFV,EAGE,KAAK74D,KAAL,GAAamc,WAHf,EAIE,KAAKlc,MAAL,GAAc44D,YAJhB;IAHc;IAWhB,OAAO,KAAK7sD,GAAZ;EA/BO;EAkCT,CAAAgyD,aAAA,EAAgB;IACd,MAAM;MAAEhyD;IAAF,IAAU,IAAhB;IACA,IAAI;MAAEhM,KAAF;MAASC;IAAT,IAAoB,KAAK,CAAAmhB,MAA7B;IACA,MAAM,CAACvb,SAAD,EAAYC,UAAZ,IAA0B,KAAKu0D,cAArC;IACA,MAAMqK,SAAA,GAAY,IAAlB;IACA,IAAI,KAAK1kE,KAAT,EAAgB;MACdA,KAAA,GAAQ,KAAKA,KAAL,GAAa6F,SAArB;MACA5F,MAAA,GAAS,KAAKA,MAAL,GAAc6F,UAAvB;IAFc,CAAhB,MAGO,IACL9F,KAAA,GAAQ0kE,SAAA,GAAY7+D,SAApB,IACA5F,MAAA,GAASykE,SAAA,GAAY5+D,UAFhB,EAGL;MAGA,MAAM6+D,MAAA,GAAStoE,IAAA,CAAKG,GAAL,CACZkoE,SAAA,GAAY7+D,SAAb,GAA0B7F,KADb,EAEZ0kE,SAAA,GAAY5+D,UAAb,GAA2B7F,MAFd,CAAf;MAIAD,KAAA,IAAS2kE,MAAT;MACA1kE,MAAA,IAAU0kE,MAAV;IARA;IAUF,MAAM,CAACxoD,WAAD,EAAc08C,YAAd,IAA8B,KAAKC,gBAAzC;IACA,KAAK+H,OAAL,CACG7gE,KAAA,GAAQmc,WAAT,GAAwBtW,SAD1B,EAEG5F,MAAA,GAAS44D,YAAV,GAA0B/yD,UAF5B;IAKA,KAAKqxD,UAAL,CAAgB6M,aAAhB,CAA8B,KAA9B;IACA,MAAM5kD,MAAA,GAAU,KAAK,CAAAA,MAAL,GAAela,QAAA,CAASC,aAAT,CAAuB,QAAvB,CAA/B;IACA6G,GAAA,CAAIX,MAAJ,CAAW+T,MAAX;IACApT,GAAA,CAAI1D,MAAJ,GAAa,KAAb;IACA,KAAK,CAAAs8D,UAAL,CAAiB5kE,KAAjB,EAAwBC,MAAxB;IACA,KAAK,CAAAg+D,cAAL;IACA,IAAI,CAAC,KAAK,CAAAmF,uBAAV,EAAoC;MAClC,KAAK9+D,MAAL,CAAYugE,iBAAZ,CAA8B,IAA9B;MACA,KAAK,CAAAzB,uBAAL,GAAgC,IAAhC;IAFkC;IAQpC,KAAKjM,UAAL,CAAgB2N,SAAhB,CAA0Bj3D,QAA1B,CAAmC,iBAAnC,EAAsD;MACpDC,MAAA,EAAQ,IAD4C;MAEpD0sB,OAAA,EAAS;QACP3pB,IAAA,EAAM,SADC;QAEPxQ,OAAA,EAAS,KAAK0kE,UAFP;QAGPzkE,IAAA,EAAM;UACJ0J,MAAA,EAAQ;QADJ;MAHC;IAF2C,CAAtD;IAUA,KAAKg7D,gBAAL;IACA,IAAI,KAAK,CAAA/B,cAAT,EAA0B;MACxB7jD,MAAA,CAAOha,YAAP,CAAoB,YAApB,EAAkC,KAAK,CAAA69D,cAAvC;IADwB;EApDZ;EAgEhB,CAAA1E,cAAev+D,KAAf,EAAsBC,MAAtB,EAA8B;IAC5B,MAAM,CAACkc,WAAD,EAAc08C,YAAd,IAA8B,KAAKC,gBAAzC;IACA,KAAK94D,KAAL,GAAaA,KAAA,GAAQmc,WAArB;IACA,KAAKlc,MAAL,GAAcA,MAAA,GAAS44D,YAAvB;IACA,KAAKgI,OAAL,CAAa7gE,KAAb,EAAoBC,MAApB;IACA,IAAI,KAAKo4D,eAAL,EAAsBC,UAA1B,EAAsC;MACpC,KAAKC,MAAL;IADoC,CAAtC,MAEO;MACL,KAAKY,iBAAL;IADK;IAGP,KAAKd,eAAL,GAAuB,IAAvB;IACA,IAAI,KAAK,CAAA6K,eAAL,KAA0B,IAA9B,EAAoC;MAClCnyC,YAAA,CAAa,KAAK,CAAAmyC,eAAlB;IADkC;IAOpC,MAAM+B,YAAA,GAAe,GAArB;IACA,KAAK,CAAA/B,eAAL,GAAwBt6D,UAAA,CAAW,MAAM;MACvC,KAAK,CAAAs6D,eAAL,GAAwB,IAAxB;MACA,KAAK,CAAA0B,UAAL,CAAiB5kE,KAAjB,EAAwBC,MAAxB;IAFuC,CAAjB,EAGrBglE,YAHqB,CAAxB;EAnB4B;EAyB9B,CAAAC,YAAallE,KAAb,EAAoBC,MAApB,EAA4B;IAC1B,MAAM;MAAED,KAAA,EAAOmlE,WAAT;MAAsBllE,MAAA,EAAQmlE;IAA9B,IAA+C,KAAK,CAAAhkD,MAA1D;IAEA,IAAIk6B,QAAA,GAAW6pB,WAAf;IACA,IAAI5pB,SAAA,GAAY6pB,YAAhB;IACA,IAAIhkD,MAAA,GAAS,KAAK,CAAAA,MAAlB;IACA,OAAOk6B,QAAA,GAAW,IAAIt7C,KAAf,IAAwBu7C,SAAA,GAAY,IAAIt7C,MAA/C,EAAuD;MACrD,MAAMolE,SAAA,GAAY/pB,QAAlB;MACA,MAAMgqB,UAAA,GAAa/pB,SAAnB;MAEA,IAAID,QAAA,GAAW,IAAIt7C,KAAnB,EAA0B;QAIxBs7C,QAAA,GACEA,QAAA,IAAY,KAAZ,GACIj/C,IAAA,CAAKC,KAAL,CAAWg/C,QAAA,GAAW,CAAtB,IAA2B,CAD/B,GAEIj/C,IAAA,CAAKmlC,IAAL,CAAU8Z,QAAA,GAAW,CAArB,CAHN;MAJwB;MAS1B,IAAIC,SAAA,GAAY,IAAIt7C,MAApB,EAA4B;QAC1Bs7C,SAAA,GACEA,SAAA,IAAa,KAAb,GACIl/C,IAAA,CAAKC,KAAL,CAAWi/C,SAAA,GAAY,CAAvB,IAA4B,CADhC,GAEIl/C,IAAA,CAAKmlC,IAAL,CAAU+Z,SAAA,GAAY,CAAtB,CAHN;MAD0B;MAO5B,MAAMgqB,SAAA,GAAY,IAAIC,eAAJ,CAAoBlqB,QAApB,EAA8BC,SAA9B,CAAlB;MACA,MAAM5b,GAAA,GAAM4lC,SAAA,CAAU/mC,UAAV,CAAqB,IAArB,CAAZ;MACAmB,GAAA,CAAI8P,SAAJ,CACEruB,MADF,EAEE,CAFF,EAGE,CAHF,EAIEikD,SAJF,EAKEC,UALF,EAME,CANF,EAOE,CAPF,EAQEhqB,QARF,EASEC,SATF;MAWAn6B,MAAA,GAASmkD,SAAA,CAAUE,qBAAV,EAAT;IAjCqD;IAoCvD,OAAOrkD,MAAP;EA1C0B;EA6C5B,CAAAwjD,WAAY5kE,KAAZ,EAAmBC,MAAnB,EAA2B;IACzBD,KAAA,GAAQ3D,IAAA,CAAKmlC,IAAL,CAAUxhC,KAAV,CAAR;IACAC,MAAA,GAAS5D,IAAA,CAAKmlC,IAAL,CAAUvhC,MAAV,CAAT;IACA,MAAMmf,MAAA,GAAS,KAAK,CAAAA,MAApB;IACA,IAAI,CAACA,MAAD,IAAYA,MAAA,CAAOpf,KAAP,KAAiBA,KAAjB,IAA0Bof,MAAA,CAAOnf,MAAP,KAAkBA,MAA5D,EAAqE;MACnE;IADmE;IAGrEmf,MAAA,CAAOpf,KAAP,GAAeA,KAAf;IACAof,MAAA,CAAOnf,MAAP,GAAgBA,MAAhB;IACA,MAAMmhB,MAAA,GAAS,KAAK,CAAA+hD,KAAL,GACX,KAAK,CAAA/hD,MADM,GAEX,KAAK,CAAA8jD,WAAL,CAAkBllE,KAAlB,EAAyBC,MAAzB,CAFJ;IAGA,MAAM0/B,GAAA,GAAMvgB,MAAA,CAAOof,UAAP,CAAkB,IAAlB,CAAZ;IACAmB,GAAA,CAAIhnB,MAAJ,GAAa,KAAKw+C,UAAL,CAAgBxN,SAA7B;IACAhqB,GAAA,CAAI8P,SAAJ,CACEruB,MADF,EAEE,CAFF,EAGE,CAHF,EAIEA,MAAA,CAAOphB,KAJT,EAKEohB,MAAA,CAAOnhB,MALT,EAME,CANF,EAOE,CAPF,EAQED,KARF,EASEC,MATF;EAdyB;EA4B3BylE,mBAAA,EAAqB;IACnB,OAAO,KAAK,CAAAtmD,MAAZ;EADmB;EAIrB,CAAAumD,gBAAiBC,KAAjB,EAAwB;IACtB,IAAIA,KAAJ,EAAW;MACT,IAAI,KAAK,CAAAzC,KAAT,EAAiB;QACf,MAAMh1D,GAAA,GAAM,KAAKgpD,UAAL,CAAgB+M,YAAhB,CAA6B2B,SAA7B,CAAuC,KAAK,CAAAhD,QAA5C,CAAZ;QACA,IAAI10D,GAAJ,EAAS;UACP,OAAOA,GAAP;QADO;MAFM;MAQjB,MAAMiR,MAAA,GAASla,QAAA,CAASC,aAAT,CAAuB,QAAvB,CAAf;MACA,CAAC;QAAEnF,KAAA,EAAOof,MAAA,CAAOpf,KAAhB;QAAuBC,MAAA,EAAQmf,MAAA,CAAOnf;MAAtC,IAAiD,KAAK,CAAAmhB,MAAvD;MACA,MAAMue,GAAA,GAAMvgB,MAAA,CAAOof,UAAP,CAAkB,IAAlB,CAAZ;MACAmB,GAAA,CAAI8P,SAAJ,CAAc,KAAK,CAAAruB,MAAnB,EAA4B,CAA5B,EAA+B,CAA/B;MAEA,OAAOhC,MAAA,CAAO0mD,SAAP,EAAP;IAdS;IAiBX,IAAI,KAAK,CAAA3C,KAAT,EAAiB;MACf,MAAM,CAACt9D,SAAD,EAAYC,UAAZ,IAA0B,KAAKu0D,cAArC;MAGA,MAAMr6D,KAAA,GAAQ3D,IAAA,CAAKsX,KAAL,CACZ,KAAK3T,KAAL,GAAa6F,SAAb,GAAyBolC,2BAAA,CAAcuM,gBAD3B,CAAd;MAGA,MAAMv3C,MAAA,GAAS5D,IAAA,CAAKsX,KAAL,CACb,KAAK1T,MAAL,GAAc6F,UAAd,GAA2BmlC,2BAAA,CAAcuM,gBAD5B,CAAf;MAGA,MAAM+tB,SAAA,GAAY,IAAIC,eAAJ,CAAoBxlE,KAApB,EAA2BC,MAA3B,CAAlB;MACA,MAAM0/B,GAAA,GAAM4lC,SAAA,CAAU/mC,UAAV,CAAqB,IAArB,CAAZ;MACAmB,GAAA,CAAI8P,SAAJ,CACE,KAAK,CAAAruB,MADP,EAEE,CAFF,EAGE,CAHF,EAIE,KAAK,CAAAA,MAAL,CAAaphB,KAJf,EAKE,KAAK,CAAAohB,MAAL,CAAanhB,MALf,EAME,CANF,EAOE,CAPF,EAQED,KARF,EASEC,MATF;MAWA,OAAOslE,SAAA,CAAUE,qBAAV,EAAP;IAvBe;IA0BjB,OAAOlkD,eAAA,CAAgB,KAAK,CAAAH,MAArB,CAAP;EA5CsB;EAkDxB,CAAA68C,eAAA,EAAkB;IAChB,KAAK,CAAAxB,QAAL,GAAiB,IAAIgE,cAAJ,CAAmBn2D,OAAA,IAAW;MAC7C,MAAMvK,IAAA,GAAOuK,OAAA,CAAQ,CAAR,EAAWo2D,WAAxB;MACA,IAAI3gE,IAAA,CAAKC,KAAL,IAAcD,IAAA,CAAKE,MAAvB,EAA+B;QAC7B,KAAK,CAAAs+D,aAAL,CAAoBx+D,IAAA,CAAKC,KAAzB,EAAgCD,IAAA,CAAKE,MAArC;MAD6B;IAFc,CAA9B,CAAjB;IAMA,KAAK,CAAAw8D,QAAL,CAAekE,OAAf,CAAuB,KAAK30D,GAA5B;EAPgB;EAWlB,OAAO4uD,WAAPA,CAAmBt6D,IAAnB,EAAyBgE,MAAzB,EAAiCu2D,SAAjC,EAA4C;IAC1C,IAAIv6D,IAAA,YAAgB4C,uCAApB,EAA4C;MAC1C,OAAO,IAAP;IAD0C;IAG5C,MAAM63D,MAAA,GAAS,MAAMH,WAAN,CAAkBt6D,IAAlB,EAAwBgE,MAAxB,EAAgCu2D,SAAhC,CAAf;IACA,MAAM;MAAE96D,IAAF;MAAQgjE,SAAR;MAAmBF,QAAnB;MAA6BM,KAA7B;MAAoC4C;IAApC,IAA0DzlE,IAAhE;IACA,IAAIuiE,QAAA,IAAYhI,SAAA,CAAUqJ,YAAV,CAAuB8B,SAAvB,CAAiCnD,QAAjC,CAAhB,EAA4D;MAC1D9H,MAAA,CAAO,CAAA8H,QAAP,GAAmBA,QAAnB;IAD0D,CAA5D,MAEO;MACL9H,MAAA,CAAO,CAAAgI,SAAP,GAAoBA,SAApB;IADK;IAGPhI,MAAA,CAAO,CAAAoI,KAAP,GAAgBA,KAAhB;IAEA,MAAM,CAAChnD,WAAD,EAAc08C,YAAd,IAA8BkC,MAAA,CAAOV,cAA3C;IACAU,MAAA,CAAO/6D,KAAP,GAAgB,CAAAD,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAV,IAAqBoc,WAArC;IACA4+C,MAAA,CAAO96D,MAAP,GAAiB,CAAAF,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAV,IAAqB84D,YAAtC;IAEA,IAAIkN,iBAAJ,EAAuB;MACrBhL,MAAA,CAAOkL,WAAP,GAAqBF,iBAArB;IADqB;IAIvB,OAAOhL,MAAP;EArB0C;EAyB5C55C,UAAU65C,YAAA,GAAe,KAAzB,EAAgCh6C,OAAA,GAAU,IAA1C,EAAgD;IAC9C,IAAI,KAAKynC,OAAL,EAAJ,EAAoB;MAClB,OAAO,IAAP;IADkB;IAIpB,MAAMvnC,UAAA,GAAa;MACjB3gB,cAAA,EAAgB5B,yBAAA,CAAqBsE,KADpB;MAEjB4/D,QAAA,EAAU,KAAK,CAAAA,QAFE;MAGjBn0C,SAAA,EAAW,KAAKA,SAHC;MAIjB3uB,IAAA,EAAM,KAAKm7D,OAAL,CAAa,CAAb,EAAgB,CAAhB,CAJW;MAKjBh1D,QAAA,EAAU,KAAKA,QALE;MAMjBi9D,KAAA,EAAO,KAAK,CAAAA,KANK;MAOjB9H,kBAAA,EAAoB,KAAKC;IAPR,CAAnB;IAUA,IAAIN,YAAJ,EAAkB;MAIhB95C,UAAA,CAAW6hD,SAAX,GAAuB,KAAK,CAAA4C,eAAL,CAAoC,IAApC,CAAvB;MACAzkD,UAAA,CAAW6kD,iBAAX,GAA+B,KAAKE,WAApC;MACA,OAAO/kD,UAAP;IANgB;IASlB,MAAM;MAAEglD,UAAF;MAAcC;IAAd,IAA0B,KAAKF,WAArC;IACA,IAAI,CAACC,UAAD,IAAeC,OAAnB,EAA4B;MAC1BjlD,UAAA,CAAW6kD,iBAAX,GAA+B;QAAEl1D,IAAA,EAAM,QAAR;QAAkBu1D,GAAA,EAAKD;MAAvB,CAA/B;IAD0B;IAI5B,IAAInlD,OAAA,KAAY,IAAhB,EAAsB;MACpB,OAAOE,UAAP;IADoB;IAItBF,OAAA,CAAQqlD,MAAR,KAAmB,IAAIv2D,GAAJ,EAAnB;IACA,MAAMw2D,IAAA,GAAO,KAAK,CAAAnD,KAAL,GACR,CAAAjiD,UAAA,CAAWnhB,IAAX,CAAgB,CAAhB,IAAqBmhB,UAAA,CAAWnhB,IAAX,CAAgB,CAAhB,CAArB,KACAmhB,UAAA,CAAWnhB,IAAX,CAAgB,CAAhB,IAAqBmhB,UAAA,CAAWnhB,IAAX,CAAgB,CAAhB,CAArB,CAFQ,GAGT,IAHJ;IAIA,IAAI,CAACihB,OAAA,CAAQqlD,MAAR,CAAe35D,GAAf,CAAmB,KAAK,CAAAm2D,QAAxB,CAAL,EAAyC;MAGvC7hD,OAAA,CAAQqlD,MAAR,CAAernD,GAAf,CAAmB,KAAK,CAAA6jD,QAAxB,EAAmC;QAAEyD,IAAF;QAAQplD;MAAR,CAAnC;MACAA,UAAA,CAAWE,MAAX,GAAoB,KAAK,CAAAukD,eAAL,CAAoC,KAApC,CAApB;IAJuC,CAAzC,MAKO,IAAI,KAAK,CAAAxC,KAAT,EAAiB;MAGtB,MAAMoD,QAAA,GAAWvlD,OAAA,CAAQqlD,MAAR,CAAet2D,GAAf,CAAmB,KAAK,CAAA8yD,QAAxB,CAAjB;MACA,IAAIyD,IAAA,GAAOC,QAAA,CAASD,IAApB,EAA0B;QACxBC,QAAA,CAASD,IAAT,GAAgBA,IAAhB;QACAC,QAAA,CAASrlD,UAAT,CAAoBE,MAApB,CAA2BkY,KAA3B;QACAitC,QAAA,CAASrlD,UAAT,CAAoBE,MAApB,GAA6B,KAAK,CAAAukD,eAAL,CAAoC,KAApC,CAA7B;MAHwB;IAJJ;IAUxB,OAAOzkD,UAAP;EArD8C;AApgBP;;;ACC3C;AACA;AACA;AACA;AACA;AACA;AAuBA,MAAMslD,qBAAN,CAA4B;EAC1B,CAAAroD,oBAAA;EAEA,CAAAsoD,UAAA,GAAc,KAAd;EAEA,CAAAC,eAAA,GAAmB,IAAnB;EAEA,CAAAC,cAAA,GAAkB,KAAKC,SAAL,CAAe1sD,IAAf,CAAoB,IAApB,CAAlB;EAEA,CAAA2sD,gBAAA,GAAoB,KAAKC,WAAL,CAAiB5sD,IAAjB,CAAsB,IAAtB,CAApB;EAEA,CAAA6sD,oBAAA,GAAwB,IAAxB;EAEA,CAAAC,OAAA,GAAW,IAAIl3D,GAAJ,EAAX;EAEA,CAAAm3D,cAAA,GAAkB,KAAlB;EAEA,CAAAC,YAAA,GAAgB,KAAhB;EAEA,CAAAC,WAAA,GAAe,KAAf;EAEA,CAAAtM,SAAA;EAEA,OAAOuM,YAAP,GAAsB,KAAtB;EAEA,OAAO,CAAAC,WAAP,GAAsB,IAAIv3D,GAAJ,CACpB,CAACgkD,cAAD,EAAiB4H,SAAjB,EAA4BkH,WAA5B,EAAyC9kE,GAAzC,CAA6C+S,IAAA,IAAQ,CACnDA,IAAA,CAAK2kD,WAD8C,EAEnD3kD,IAFmD,CAArD,CADoB,CAAtB;EAUAtN,YAAY;IACVs3D,SADU;IAEVnsC,SAFU;IAGV1iB,GAHU;IAIVmS,oBAJU;IAKVuoD,eALU;IAMVzhE,QANU;IAOV0wD;EAPU,CAAZ,EAQG;IACD,MAAM0R,WAAA,GAAc,CAAC,GAAGb,qBAAA,CAAsB,CAAAa,WAAtB,CAAmC52D,MAAnC,EAAJ,CAApB;IACA,IAAI,CAAC+1D,qBAAA,CAAsBY,YAA3B,EAAyC;MACvCZ,qBAAA,CAAsBY,YAAtB,GAAqC,IAArC;MACA,WAAWrC,UAAX,IAAyBsC,WAAzB,EAAsC;QACpCtC,UAAA,CAAWrP,UAAX,CAAsBC,IAAtB;MADoC;IAFC;IAMzCkF,SAAA,CAAUyM,mBAAV,CAA8BD,WAA9B;IAEA,KAAK,CAAAxM,SAAL,GAAkBA,SAAlB;IACA,KAAKnsC,SAAL,GAAiBA,SAAjB;IACA,KAAK1iB,GAAL,GAAWA,GAAX;IACA,KAAK,CAAAmS,oBAAL,GAA6BA,oBAA7B;IACA,KAAK,CAAAuoD,eAAL,GAAwBA,eAAxB;IACA,KAAKzhE,QAAL,GAAgBA,QAAhB;IAEA,KAAK,CAAA41D,SAAL,CAAgB0M,QAAhB,CAAyB,IAAzB;EAjBC;EAoBH,IAAI9e,OAAJA,CAAA,EAAc;IACZ,OAAO,KAAK,CAAAue,OAAL,CAAcpvD,IAAd,KAAuB,CAA9B;EADY;EAQd+/C,cAAclqD,IAAd,EAAoB;IAClB,KAAK,CAAAotD,SAAL,CAAgBlD,aAAhB,CAA8BlqD,IAA9B;EADkB;EAQpB+5D,WAAW/5D,IAAA,GAAO,KAAK,CAAAotD,SAAL,CAAgB4M,OAAhB,EAAlB,EAA6C;IAC3C,KAAK,CAAAz5C,OAAL;IACA,IAAIvgB,IAAA,KAAS9O,yBAAA,CAAqB0D,GAAlC,EAAuC;MAErC,KAAK69D,oBAAL,CAA0B,KAA1B;MACA,KAAKwH,YAAL;IAHqC,CAAvC,MAIO;MACL,KAAKC,WAAL;IADK;IAIP,IAAIl6D,IAAA,KAAS9O,yBAAA,CAAqBmgC,IAAlC,EAAwC;MACtC,MAAM;QAAEn5B;MAAF,IAAgB,KAAKqG,GAA3B;MACA,WAAW+4D,UAAX,IAAyByB,qBAAA,CAAsB,CAAAa,WAAtB,CAAmC52D,MAAnC,EAAzB,EAAsE;QACpE9K,SAAA,CAAU2U,MAAV,CACE,GAAGyqD,UAAA,CAAWpkD,KAAM,SADtB,EAEElT,IAAA,KAASs3D,UAAA,CAAWvP,WAFtB;MADoE;MAMtE,KAAKxpD,GAAL,CAAS1D,MAAT,GAAkB,KAAlB;IARsC;EAVG;EAsB7C43D,qBAAqB0H,YAArB,EAAmC;IACjC,IACE,CAACA,YAAD,IACA,KAAK,CAAA/M,SAAL,CAAgB4M,OAAhB,OAA8B9oE,yBAAA,CAAqB0D,GAFrD,EAGE;MACA;IADA;IAIF,IAAI,CAACulE,YAAL,EAAmB;MAGjB,WAAW7M,MAAX,IAAqB,KAAK,CAAAiM,OAAL,CAAcv2D,MAAd,EAArB,EAA6C;QAC3C,IAAIsqD,MAAA,CAAOtS,OAAP,EAAJ,EAAsB;UACpBsS,MAAA,CAAOyF,eAAP;UACA;QAFoB;MADqB;IAH5B;IAWnB,MAAMzF,MAAA,GAAS,KAAK,CAAA8M,qBAAL,CACb;MAAEp4C,OAAA,EAAS,CAAX;MAAcC,OAAA,EAAS;IAAvB,CADa,EAEM,KAFN,CAAf;IAIAqrC,MAAA,CAAOyF,eAAP;EAvBiC;EA8BnC9I,gBAAgBM,SAAhB,EAA2B;IACzB,KAAK,CAAA6C,SAAL,CAAgBnD,eAAhB,CAAgCM,SAAhC;EADyB;EAQ3BpB,YAAYl4C,MAAZ,EAAoB;IAClB,KAAK,CAAAm8C,SAAL,CAAgBjE,WAAhB,CAA4Bl4C,MAA5B;EADkB;EAIpBopD,oBAAoB/sC,OAAA,GAAU,KAA9B,EAAqC;IACnC,KAAK/uB,GAAL,CAASrG,SAAT,CAAmB2U,MAAnB,CAA0B,UAA1B,EAAsC,CAACygB,OAAvC;EADmC;EAQrCgtC,OAAA,EAAS;IACP,KAAKD,mBAAL,CAAyB,IAAzB;IACA,MAAME,oBAAA,GAAuB,IAAIz3D,GAAJ,EAA7B;IACA,WAAWwqD,MAAX,IAAqB,KAAK,CAAAiM,OAAL,CAAcv2D,MAAd,EAArB,EAA6C;MAC3CsqD,MAAA,CAAOhB,aAAP;MACA,IAAIgB,MAAA,CAAOZ,mBAAX,EAAgC;QAC9B6N,oBAAA,CAAqBpiE,GAArB,CAAyBm1D,MAAA,CAAOZ,mBAAhC;MAD8B;IAFW;IAO7C,IAAI,CAAC,KAAK,CAAAuM,eAAV,EAA4B;MAC1B;IAD0B;IAI5B,MAAMuB,SAAA,GAAY,KAAK,CAAAvB,eAAL,CAAsBpnD,sBAAtB,EAAlB;IACA,WAAW3F,QAAX,IAAuBsuD,SAAvB,EAAkC;MAEhCtuD,QAAA,CAAS5M,IAAT;MACA,IAAI,KAAK,CAAA8tD,SAAL,CAAgBqN,0BAAhB,CAA2CvuD,QAAA,CAASrZ,IAAT,CAAc+E,EAAzD,CAAJ,EAAkE;QAChE;MADgE;MAGlE,IAAI2iE,oBAAA,CAAqBt7D,GAArB,CAAyBiN,QAAA,CAASrZ,IAAT,CAAc+E,EAAvC,CAAJ,EAAgD;QAC9C;MAD8C;MAGhD,MAAM01D,MAAA,GAAS,KAAKH,WAAL,CAAiBjhD,QAAjB,CAAf;MACA,IAAI,CAACohD,MAAL,EAAa;QACX;MADW;MAGb,KAAKoN,YAAL,CAAkBpN,MAAlB;MACAA,MAAA,CAAOhB,aAAP;IAdgC;EAf3B;EAoCTqO,QAAA,EAAU;IACR,KAAK,CAAAjB,WAAL,GAAoB,IAApB;IACA,KAAKW,mBAAL,CAAyB,KAAzB;IACA,MAAMO,mBAAA,GAAsB,IAAI93D,GAAJ,EAA5B;IACA,WAAWwqD,MAAX,IAAqB,KAAK,CAAAiM,OAAL,CAAcv2D,MAAd,EAArB,EAA6C;MAC3CsqD,MAAA,CAAOjB,cAAP;MACA,IAAI,CAACiB,MAAA,CAAOZ,mBAAR,IAA+BY,MAAA,CAAO55C,SAAP,OAAuB,IAA1D,EAAgE;QAC9DknD,mBAAA,CAAoBziE,GAApB,CAAwBm1D,MAAA,CAAOZ,mBAA/B;QACA;MAF8D;MAIhE,KAAK36C,qBAAL,CAA2Bu7C,MAAA,CAAOZ,mBAAlC,GAAwDttD,IAAxD;MACAkuD,MAAA,CAAOziD,MAAP;IAP2C;IAU7C,IAAI,KAAK,CAAAouD,eAAT,EAA2B;MAEzB,MAAMuB,SAAA,GAAY,KAAK,CAAAvB,eAAL,CAAsBpnD,sBAAtB,EAAlB;MACA,WAAW3F,QAAX,IAAuBsuD,SAAvB,EAAkC;QAChC,MAAM;UAAE5iE;QAAF,IAASsU,QAAA,CAASrZ,IAAxB;QACA,IACE+nE,mBAAA,CAAoB37D,GAApB,CAAwBrH,EAAxB,KACA,KAAK,CAAAw1D,SAAL,CAAgBqN,0BAAhB,CAA2C7iE,EAA3C,CAFF,EAGE;UACA;QADA;QAGFsU,QAAA,CAAS9M,IAAT;MARgC;IAHT;IAe3B,KAAK,CAAAmhB,OAAL;IACA,IAAI,KAAKy6B,OAAT,EAAkB;MAChB,KAAKz8C,GAAL,CAAS1D,MAAT,GAAkB,IAAlB;IADgB;IAGlB,MAAM;MAAE3C;IAAF,IAAgB,KAAKqG,GAA3B;IACA,WAAW+4D,UAAX,IAAyByB,qBAAA,CAAsB,CAAAa,WAAtB,CAAmC52D,MAAnC,EAAzB,EAAsE;MACpE9K,SAAA,CAAU2S,MAAV,CAAiB,GAAGysD,UAAA,CAAWpkD,KAAM,SAArC;IADoE;IAItE,KAAK,CAAAwmD,WAAL,GAAoB,KAApB;EAtCQ;EAyCV3nD,sBAAsBna,EAAtB,EAA0B;IACxB,OAAO,KAAK,CAAAqhE,eAAL,EAAuBlnD,qBAAvB,CAA6Cna,EAA7C,KAAoD,IAA3D;EADwB;EAQ1BijE,gBAAgBvN,MAAhB,EAAwB;IACtB,MAAMwN,aAAA,GAAgB,KAAK,CAAA1N,SAAL,CAAgB2N,SAAhB,EAAtB;IACA,IAAID,aAAA,KAAkBxN,MAAtB,EAA8B;MAC5B;IAD4B;IAI9B,KAAK,CAAAF,SAAL,CAAgByN,eAAhB,CAAgCvN,MAAhC;EANsB;EASxB4M,YAAA,EAAc;IACZ,KAAK37D,GAAL,CAAS2B,gBAAT,CAA0B,aAA1B,EAAyC,KAAK,CAAAk5D,gBAA9C;IACA,KAAK76D,GAAL,CAAS2B,gBAAT,CAA0B,WAA1B,EAAuC,KAAK,CAAAg5D,cAA5C;EAFY;EAKde,aAAA,EAAe;IACb,KAAK17D,GAAL,CAASuM,mBAAT,CAA6B,aAA7B,EAA4C,KAAK,CAAAsuD,gBAAjD;IACA,KAAK76D,GAAL,CAASuM,mBAAT,CAA6B,WAA7B,EAA0C,KAAK,CAAAouD,cAA/C;EAFa;EAKf8B,OAAO1N,MAAP,EAAe;IACb,KAAK,CAAAiM,OAAL,CAAchoD,GAAd,CAAkB+7C,MAAA,CAAO11D,EAAzB,EAA6B01D,MAA7B;IACA,MAAM;MAAEZ;IAAF,IAA0BY,MAAhC;IACA,IACEZ,mBAAA,IACA,KAAK,CAAAU,SAAL,CAAgBqN,0BAAhB,CAA2C/N,mBAA3C,CAFF,EAGE;MACA,KAAK,CAAAU,SAAL,CAAgB6N,8BAAhB,CAA+C3N,MAA/C;IADA;EANW;EAWf4N,OAAO5N,MAAP,EAAe;IACb,KAAK,CAAAiM,OAAL,CAAc3mD,MAAd,CAAqB06C,MAAA,CAAO11D,EAA5B;IACA,KAAK,CAAA8Y,oBAAL,EAA4ByqD,wBAA5B,CAAqD7N,MAAA,CAAOJ,UAA5D;IAEA,IAAI,CAAC,KAAK,CAAAwM,WAAN,IAAsBpM,MAAA,CAAOZ,mBAAjC,EAAsD;MACpD,KAAK,CAAAU,SAAL,CAAgBgO,2BAAhB,CAA4C9N,MAA5C;IADoD;EAJzC;EAafziD,OAAOyiD,MAAP,EAAe;IAIb,KAAK4N,MAAL,CAAY5N,MAAZ;IACA,KAAK,CAAAF,SAAL,CAAgBiO,YAAhB,CAA6B/N,MAA7B;IACAA,MAAA,CAAO/uD,GAAP,CAAWsM,MAAX;IACAyiD,MAAA,CAAOxD,eAAP,GAAyB,KAAzB;IAEA,IAAI,CAAC,KAAK,CAAA2P,YAAV,EAAyB;MACvB,KAAKhH,oBAAL,CAA+C,KAA/C;IADuB;EATZ;EAmBf6I,aAAahO,MAAb,EAAqB;IACnB,IAAIA,MAAA,CAAOz2D,MAAP,KAAkB,IAAtB,EAA4B;MAC1B;IAD0B;IAI5B,IAAIy2D,MAAA,CAAOZ,mBAAX,EAAgC;MAC9B,KAAK,CAAAU,SAAL,CAAgBgO,2BAAhB,CAA4C9N,MAAA,CAAOZ,mBAAnD;MACAz6C,8BAAA,CAAiBspD,uBAAjB,CAAyCjO,MAAzC;MACAA,MAAA,CAAOZ,mBAAP,GAA6B,IAA7B;IAH8B;IAMhC,KAAKsO,MAAL,CAAY1N,MAAZ;IACAA,MAAA,CAAOz2D,MAAP,EAAeqkE,MAAf,CAAsB5N,MAAtB;IACAA,MAAA,CAAO/I,SAAP,CAAiB,IAAjB;IACA,IAAI+I,MAAA,CAAO/uD,GAAP,IAAc+uD,MAAA,CAAOxD,eAAzB,EAA0C;MACxCwD,MAAA,CAAO/uD,GAAP,CAAWsM,MAAX;MACA,KAAKtM,GAAL,CAASX,MAAT,CAAgB0vD,MAAA,CAAO/uD,GAAvB;IAFwC;EAdvB;EAwBrBpG,IAAIm1D,MAAJ,EAAY;IACV,KAAKgO,YAAL,CAAkBhO,MAAlB;IACA,KAAK,CAAAF,SAAL,CAAgBoO,SAAhB,CAA0BlO,MAA1B;IACA,KAAK0N,MAAL,CAAY1N,MAAZ;IAEA,IAAI,CAACA,MAAA,CAAOxD,eAAZ,EAA6B;MAC3B,MAAMvrD,GAAA,GAAM+uD,MAAA,CAAO9uD,MAAP,EAAZ;MACA,KAAKD,GAAL,CAASX,MAAT,CAAgBW,GAAhB;MACA+uD,MAAA,CAAOxD,eAAP,GAAyB,IAAzB;IAH2B;IAO7BwD,MAAA,CAAO5B,iBAAP;IACA4B,MAAA,CAAO5C,SAAP;IACA,KAAK,CAAA0C,SAAL,CAAgB0F,sBAAhB,CAAuCxF,MAAvC;EAdU;EAiBZmO,gBAAgBnO,MAAhB,EAAwB;IACtB,IAAI,CAACA,MAAA,CAAOxD,eAAZ,EAA6B;MAC3B;IAD2B;IAI7B,MAAM;MAAEzhD;IAAF,IAAoB5Q,QAA1B;IACA,IAAI61D,MAAA,CAAO/uD,GAAP,CAAWs0D,QAAX,CAAoBxqD,aAApB,KAAsC,CAAC,KAAK,CAAAixD,oBAAhD,EAAuE;MAKrEhM,MAAA,CAAO7C,mBAAP,GAA6B,KAA7B;MACA,KAAK,CAAA6O,oBAAL,GAA6Bn+D,UAAA,CAAW,MAAM;QAC5C,KAAK,CAAAm+D,oBAAL,GAA6B,IAA7B;QACA,IAAI,CAAChM,MAAA,CAAO/uD,GAAP,CAAWs0D,QAAX,CAAoBp7D,QAAA,CAAS4Q,aAA7B,CAAL,EAAkD;UAChDilD,MAAA,CAAO/uD,GAAP,CAAW2B,gBAAX,CACE,SADF,EAEE,MAAM;YACJotD,MAAA,CAAO7C,mBAAP,GAA6B,IAA7B;UADI,CAFR,EAKE;YAAEiR,IAAA,EAAM;UAAR,CALF;UAOArzD,aAAA,CAAcnN,KAAd;QARgD,CAAlD,MASO;UACLoyD,MAAA,CAAO7C,mBAAP,GAA6B,IAA7B;QADK;MAXqC,CAAjB,EAc1B,CAd0B,CAA7B;IANqE;IAuBvE6C,MAAA,CAAOO,mBAAP,GAA6B,KAAK,CAAAn9C,oBAAL,EAA4BM,gBAA5B,CAC3B,KAAKzS,GADsB,EAE3B+uD,MAAA,CAAO/uD,GAFoB,EAG3B+uD,MAAA,CAAOJ,UAHoB,EAIP,IAJO,CAA7B;EA7BsB;EAyCxBwN,aAAapN,MAAb,EAAqB;IACnB,IAAIA,MAAA,CAAOqO,gBAAP,EAAJ,EAA+B;MAC7BrO,MAAA,CAAOz2D,MAAP,KAAkB,IAAlB;MACAy2D,MAAA,CAAOzD,OAAP;IAF6B,CAA/B,MAGO;MACL,KAAK1xD,GAAL,CAASm1D,MAAT;IADK;EAJY;EAarB8J,kBAAkB9J,MAAlB,EAA0B;IACxB,MAAMlE,GAAA,GAAMA,CAAA,KAAMkE,MAAA,CAAO5D,UAAP,CAAkBG,OAAlB,CAA0ByD,MAA1B,CAAlB;IACA,MAAMjE,IAAA,GAAOA,CAAA,KAAM;MACjBiE,MAAA,CAAOziD,MAAP;IADiB,CAAnB;IAIA,KAAKs+C,WAAL,CAAiB;MAAEC,GAAF;MAAOC,IAAP;MAAaC,QAAA,EAAU;IAAvB,CAAjB;EANwB;EAa1BsS,UAAA,EAAY;IACV,OAAO,KAAK,CAAAxO,SAAL,CAAgByO,KAAhB,EAAP;EADU;EASZ,CAAAC,gBAAiB7qD,MAAjB,EAAyB;IACvB,MAAMqmD,UAAA,GAAayB,qBAAA,CAAsB,CAAAa,WAAtB,CAAmCt3D,GAAnC,CACjB,KAAK,CAAA8qD,SAAL,CAAgB4M,OAAhB,EADiB,CAAnB;IAGA,OAAO1C,UAAA,GAAa,IAAIA,UAAA,CAAWrsD,SAAX,CAAqBnV,WAAzB,CAAqCmb,MAArC,CAAb,GAA4D,IAAnE;EAJuB;EAYzBilD,YAAYl2D,IAAZ,EAAkBiR,MAAlB,EAA0B;IACxB,KAAK,CAAAm8C,SAAL,CAAgBlD,aAAhB,CAA8BlqD,IAA9B;IACA,KAAK,CAAAotD,SAAL,CAAgB2M,UAAhB,CAA2B/5D,IAA3B;IAEA,MAAM;MAAEgiB,OAAF;MAAWC;IAAX,IAAuB,KAAK,CAAA85C,cAAL,EAA7B;IACA,MAAMnkE,EAAA,GAAK,KAAKgkE,SAAL,EAAX;IACA,MAAMtO,MAAA,GAAS,KAAK,CAAAwO,eAAL,CAAsB;MACnCjlE,MAAA,EAAQ,IAD2B;MAEnCe,EAFmC;MAGnCzI,CAAA,EAAG6yB,OAHgC;MAInCzyB,CAAA,EAAG0yB,OAJgC;MAKnCmrC,SAAA,EAAW,KAAK,CAAAA,SALmB;MAMnCvC,UAAA,EAAY,IANuB;MAOnC,GAAG55C;IAPgC,CAAtB,CAAf;IASA,IAAIq8C,MAAJ,EAAY;MACV,KAAKn1D,GAAL,CAASm1D,MAAT;IADU;EAfY;EAyB1BH,YAAYt6D,IAAZ,EAAkB;IAChB,OACEkmE,qBAAA,CAAsB,CAAAa,WAAtB,CACGt3D,GADH,CACOzP,IAAA,CAAKC,cAAL,IAAuBD,IAAA,CAAKkN,oBADnC,GAEIotD,WAFJ,CAEgBt6D,IAFhB,EAEsB,IAFtB,EAE4B,KAAK,CAAAu6D,SAFjC,KAEgD,IAHlD;EADgB;EAclB,CAAAgN,sBAAuB9/D,KAAvB,EAA8BuwD,UAA9B,EAA0C;IACxC,MAAMjzD,EAAA,GAAK,KAAKgkE,SAAL,EAAX;IACA,MAAMtO,MAAA,GAAS,KAAK,CAAAwO,eAAL,CAAsB;MACnCjlE,MAAA,EAAQ,IAD2B;MAEnCe,EAFmC;MAGnCzI,CAAA,EAAGmL,KAAA,CAAM0nB,OAH0B;MAInCzyB,CAAA,EAAG+K,KAAA,CAAM2nB,OAJ0B;MAKnCmrC,SAAA,EAAW,KAAK,CAAAA,SALmB;MAMnCvC;IANmC,CAAtB,CAAf;IAQA,IAAIyC,MAAJ,EAAY;MACV,KAAKn1D,GAAL,CAASm1D,MAAT;IADU;IAIZ,OAAOA,MAAP;EAdwC;EAiB1C,CAAAyO,eAAA,EAAkB;IAChB,MAAM;MAAE5sE,CAAF;MAAKI,CAAL;MAAQgD,KAAR;MAAeC;IAAf,IAA0B,KAAK+L,GAAL,CAAS+sD,qBAAT,EAAhC;IACA,MAAM/pB,GAAA,GAAM3yC,IAAA,CAAKE,GAAL,CAAS,CAAT,EAAYK,CAAZ,CAAZ;IACA,MAAMsyC,GAAA,GAAM7yC,IAAA,CAAKE,GAAL,CAAS,CAAT,EAAYS,CAAZ,CAAZ;IACA,MAAMoyC,GAAA,GAAM/yC,IAAA,CAAKG,GAAL,CAASwtB,MAAA,CAAOy/C,UAAhB,EAA4B7sE,CAAA,GAAIoD,KAAhC,CAAZ;IACA,MAAMsvC,GAAA,GAAMjzC,IAAA,CAAKG,GAAL,CAASwtB,MAAA,CAAO0/C,WAAhB,EAA6B1sE,CAAA,GAAIiD,MAAjC,CAAZ;IACA,MAAM4tD,OAAA,GAAW,CAAA7e,GAAA,GAAMI,GAAN,IAAa,CAAd,GAAkBxyC,CAAlC;IACA,MAAMkxD,OAAA,GAAW,CAAA5e,GAAA,GAAMI,GAAN,IAAa,CAAd,GAAkBtyC,CAAlC;IACA,MAAM,CAACyyB,OAAD,EAAUC,OAAV,IACJ,KAAKzqB,QAAL,CAAciB,QAAd,GAAyB,GAAzB,KAAiC,CAAjC,GACI,CAAC2nD,OAAD,EAAUC,OAAV,CADJ,GAEI,CAACA,OAAD,EAAUD,OAAV,CAHN;IAKA,OAAO;MAAEp+B,OAAF;MAAWC;IAAX,CAAP;EAbgB;EAmBlBi6C,aAAA,EAAe;IACb,KAAK,CAAA9B,qBAAL,CACE,KAAK,CAAA2B,cAAL,EADF,EAEqB,IAFrB;EADa;EAWfI,YAAY7O,MAAZ,EAAoB;IAClB,KAAK,CAAAF,SAAL,CAAgB+O,WAAhB,CAA4B7O,MAA5B;EADkB;EAQpB8O,eAAe9O,MAAf,EAAuB;IACrB,KAAK,CAAAF,SAAL,CAAgBgP,cAAhB,CAA+B9O,MAA/B;EADqB;EAQvB+O,WAAW/O,MAAX,EAAmB;IACjB,OAAO,KAAK,CAAAF,SAAL,CAAgBiP,UAAhB,CAA2B/O,MAA3B,CAAP;EADiB;EAQnBgP,SAAShP,MAAT,EAAiB;IACf,KAAK,CAAAF,SAAL,CAAgBkP,QAAhB,CAAyBhP,MAAzB;EADe;EAQjB6L,UAAU7+D,KAAV,EAAiB;IACf,MAAM;MAAE+J;IAAF,IAAYhT,gBAAA,CAAY+S,QAA9B;IACA,IAAI9J,KAAA,CAAMq4D,MAAN,KAAiB,CAAjB,IAAuBr4D,KAAA,CAAMiK,OAAN,IAAiBF,KAA5C,EAAoD;MAElD;IAFkD;IAKpD,IAAI/J,KAAA,CAAMI,MAAN,KAAiB,KAAK6D,GAA1B,EAA+B;MAC7B;IAD6B;IAI/B,IAAI,CAAC,KAAK,CAAAi7D,cAAV,EAA2B;MAKzB;IALyB;IAO3B,KAAK,CAAAA,cAAL,GAAuB,KAAvB;IAEA,IAAI,CAAC,KAAK,CAAAR,UAAV,EAAuB;MACrB,KAAK,CAAAA,UAAL,GAAmB,IAAnB;MACA;IAFqB;IAKvB,IAAI,KAAK,CAAA5L,SAAL,CAAgB4M,OAAhB,OAA8B9oE,yBAAA,CAAqBsE,KAAvD,EAA8D;MAC5D,KAAK,CAAA43D,SAAL,CAAgBmP,WAAhB;MACA;IAF4D;IAK9D,KAAK,CAAAnC,qBAAL,CAA4B9/D,KAA5B,EAAsD,KAAtD;EA9Be;EAqCjB++D,YAAY/+D,KAAZ,EAAmB;IACjB,IAAI,KAAK,CAAAk/D,cAAT,EAA0B;MAMxB,KAAK,CAAAA,cAAL,GAAuB,KAAvB;MACA;IAPwB;IAS1B,MAAM;MAAEn1D;IAAF,IAAYhT,gBAAA,CAAY+S,QAA9B;IACA,IAAI9J,KAAA,CAAMq4D,MAAN,KAAiB,CAAjB,IAAuBr4D,KAAA,CAAMiK,OAAN,IAAiBF,KAA5C,EAAoD;MAElD;IAFkD;IAKpD,IAAI/J,KAAA,CAAMI,MAAN,KAAiB,KAAK6D,GAA1B,EAA+B;MAC7B;IAD6B;IAI/B,KAAK,CAAAi7D,cAAL,GAAuB,IAAvB;IAEA,MAAMlM,MAAA,GAAS,KAAK,CAAAF,SAAL,CAAgB2N,SAAhB,EAAf;IACA,KAAK,CAAA/B,UAAL,GAAmB,CAAC1L,MAAD,IAAWA,MAAA,CAAOtS,OAAP,EAA9B;EAvBiB;EAiCnBwhB,cAAclP,MAAd,EAAsBn+D,CAAtB,EAAyBI,CAAzB,EAA4B;IAC1B,MAAM2G,KAAA,GAAQ,KAAK,CAAAk3D,SAAL,CAAgBqP,UAAhB,CAA2BttE,CAA3B,EAA8BI,CAA9B,CAAd;IACA,IAAI2G,KAAA,KAAU,IAAV,IAAkBA,KAAA,KAAU,IAAhC,EAAsC;MACpC,OAAO,KAAP;IADoC;IAGtCA,KAAA,CAAMolE,YAAN,CAAmBhO,MAAnB;IACA,OAAO,IAAP;EAN0B;EAY5BvwC,QAAA,EAAU;IACR,IAAI,KAAK,CAAAqwC,SAAL,CAAgB2N,SAAhB,IAA6BlkE,MAA7B,KAAwC,IAA5C,EAAkD;MAEhD,KAAK,CAAAu2D,SAAL,CAAgBzF,cAAhB;MACA,KAAK,CAAAyF,SAAL,CAAgByN,eAAhB,CAAgC,IAAhC;IAHgD;IAMlD,IAAI,KAAK,CAAAvB,oBAAT,EAAgC;MAC9Bh2C,YAAA,CAAa,KAAK,CAAAg2C,oBAAlB;MACA,KAAK,CAAAA,oBAAL,GAA6B,IAA7B;IAF8B;IAKhC,WAAWhM,MAAX,IAAqB,KAAK,CAAAiM,OAAL,CAAcv2D,MAAd,EAArB,EAA6C;MAC3C,KAAK,CAAA0N,oBAAL,EAA4ByqD,wBAA5B,CAAqD7N,MAAA,CAAOJ,UAA5D;MACAI,MAAA,CAAO/I,SAAP,CAAiB,IAAjB;MACA+I,MAAA,CAAOxD,eAAP,GAAyB,KAAzB;MACAwD,MAAA,CAAO/uD,GAAP,CAAWsM,MAAX;IAJ2C;IAM7C,KAAKtM,GAAL,GAAW,IAAX;IACA,KAAK,CAAAg7D,OAAL,CAAc5tD,KAAd;IACA,KAAK,CAAAyhD,SAAL,CAAgBsP,WAAhB,CAA4B,IAA5B;EApBQ;EAuBV,CAAAn8C,QAAA,EAAW;IAIT,KAAK,CAAAk5C,YAAL,GAAqB,IAArB;IACA,WAAWnM,MAAX,IAAqB,KAAK,CAAAiM,OAAL,CAAcv2D,MAAd,EAArB,EAA6C;MAC3C,IAAIsqD,MAAA,CAAOtS,OAAP,EAAJ,EAAsB;QACpBsS,MAAA,CAAOziD,MAAP;MADoB;IADqB;IAK7C,KAAK,CAAA4uD,YAAL,GAAqB,KAArB;EAVS;EAiBXj7D,OAAO;IAAEhH;EAAF,CAAP,EAAqB;IACnB,KAAKA,QAAL,GAAgBA,QAAhB;IACA1F,oCAAA,CAAmB,KAAKyM,GAAxB,EAA6B/G,QAA7B;IACA,WAAW81D,MAAX,IAAqB,KAAK,CAAAF,SAAL,CAAgBuP,UAAhB,CAA2B,KAAK17C,SAAhC,CAArB,EAAiE;MAC/D,KAAK9oB,GAAL,CAASm1D,MAAT;IAD+D;IAGjE,KAAKyM,UAAL;EANmB;EAarBroD,OAAO;IAAEla;EAAF,CAAP,EAAqB;IAInB,KAAK,CAAA41D,SAAL,CAAgBzF,cAAhB;IAEA,KAAKnwD,QAAL,GAAgBA,QAAhB;IACA1F,oCAAA,CAAmB,KAAKyM,GAAxB,EAA6B;MAAE9F,QAAA,EAAUjB,QAAA,CAASiB;IAArB,CAA7B;IACA,KAAKshE,UAAL;EARmB;EAerB,IAAInN,cAAJA,CAAA,EAAqB;IACnB,MAAM;MAAEx0D,SAAF;MAAaC;IAAb,IAA4B,KAAKb,QAAL,CAAcgB,OAAhD;IACA,OAAO,CAACJ,SAAD,EAAYC,UAAZ,CAAP;EAFmB;AAvrBK;;;;;;;;;;;;;;;;;;;;;ACrC5B;AAEA,MAAMukE,aAAN,CAAoB;EAClB,CAAAC,OAAA,GAAW,IAAX;EAEA,CAAAvP,MAAA;EAEA,CAAAwP,OAAA,GAAW,IAAX;EAEAhnE,YAAYw3D,MAAZ,EAAoB;IAClB,KAAK,CAAAA,MAAL,GAAeA,MAAf;EADkB;EAIpB9uD,OAAA,EAAS;IACP,MAAMu+D,WAAA,GAAe,KAAK,CAAAF,OAAL,GAAgBplE,QAAA,CAASC,aAAT,CAAuB,KAAvB,CAArC;IACAqlE,WAAA,CAAY1vD,SAAZ,GAAwB,aAAxB;IACA0vD,WAAA,CAAY78D,gBAAZ,CAA6B,aAA7B,EAA4CmiD,2BAA5C;IACA0a,WAAA,CAAY78D,gBAAZ,CAA6B,aAA7B,EAA4C08D,aAAA,CAAc,CAAAI,WAA1D;IAEA,MAAMF,OAAA,GAAW,KAAK,CAAAA,OAAL,GAAgBrlE,QAAA,CAASC,aAAT,CAAuB,KAAvB,CAAjC;IACAolE,OAAA,CAAQzvD,SAAR,GAAoB,SAApB;IACA0vD,WAAA,CAAYn/D,MAAZ,CAAmBk/D,OAAnB;IAEA,KAAK,CAAAG,eAAL;IAEA,OAAOF,WAAP;EAZO;EAeT,OAAO,CAAAC,WAAPA,CAAoB5vD,CAApB,EAAuB;IACrBA,CAAA,CAAE8vD,eAAF;EADqB;EAIvB,CAAAC,QAAS/vD,CAAT,EAAY;IACV,KAAK,CAAAkgD,MAAL,CAAa7C,mBAAb,GAAmC,KAAnC;IACAr9C,CAAA,CAAElE,cAAF;IACAkE,CAAA,CAAE8vD,eAAF;EAHU;EAMZ,CAAAE,SAAUhwD,CAAV,EAAa;IACX,KAAK,CAAAkgD,MAAL,CAAa7C,mBAAb,GAAmC,IAAnC;IACAr9C,CAAA,CAAElE,cAAF;IACAkE,CAAA,CAAE8vD,eAAF;EAHW;EAMb,CAAAG,sBAAuB5gE,OAAvB,EAAgC;IAI9BA,OAAA,CAAQyD,gBAAR,CAAyB,SAAzB,EAAoC,KAAK,CAAAi9D,OAAL,CAAc1wD,IAAd,CAAmB,IAAnB,CAApC,EAA8D;MAC5D6wD,OAAA,EAAS;IADmD,CAA9D;IAGA7gE,OAAA,CAAQyD,gBAAR,CAAyB,UAAzB,EAAqC,KAAK,CAAAk9D,QAAL,CAAe3wD,IAAf,CAAoB,IAApB,CAArC,EAAgE;MAC9D6wD,OAAA,EAAS;IADqD,CAAhE;IAGA7gE,OAAA,CAAQyD,gBAAR,CAAyB,aAAzB,EAAwCmiD,2BAAxC;EAV8B;EAahC/iD,KAAA,EAAO;IACL,KAAK,CAAAu9D,OAAL,CAAc3kE,SAAd,CAAwBC,GAAxB,CAA4B,QAA5B;EADK;EAIPiH,KAAA,EAAO;IACL,KAAK,CAAAy9D,OAAL,CAAc3kE,SAAd,CAAwB2S,MAAxB,CAA+B,QAA/B;EADK;EAIP,CAAAoyD,gBAAA,EAAmB;IACjB,MAAMtK,MAAA,GAASl7D,QAAA,CAASC,aAAT,CAAuB,QAAvB,CAAf;IACAi7D,MAAA,CAAOtlD,SAAP,GAAmB,QAAnB;IACAslD,MAAA,CAAO96D,QAAP,GAAkB,CAAlB;IACA86D,MAAA,CAAOh7D,YAAP,CAAoB,cAApB,EAAoC,4BAApC;IACA,KAAK,CAAA0lE,qBAAL,CAA4B1K,MAA5B;IACAA,MAAA,CAAOzyD,gBAAP,CAAwB,OAAxB,EAAiCkN,CAAA,IAAK;MACpC,KAAK,CAAAkgD,MAAL,CAAa5D,UAAb,CAAwB92C,MAAxB;IADoC,CAAtC;IAGA,KAAK,CAAAkqD,OAAL,CAAcl/D,MAAd,CAAqB+0D,MAArB;EATiB;EAYnB9nD,OAAA,EAAS;IACP,KAAK,CAAAgyD,OAAL,CAAchyD,MAAd;EADO;AA3ES;;;ACCpB;AAMA;AACA;AACA;AAcA,MAAMoH,gBAAN,CAAuB;EACrB,CAAAurD,cAAA,GAAkB,IAAlB;EAEA,CAAA9E,OAAA,GAAW,EAAX;EAEA,CAAA+E,iBAAA,GAAqB,KAArB;EAEA,CAAAC,aAAA,GAAiB,IAAjB;EAEA,CAAAC,cAAA,GAAkB,IAAlB;EAEA,CAAAC,qBAAA,GAAyB,IAAzB;EAEA,CAAAC,sBAAA,GAA0B,KAA1B;EAEA,CAAAC,eAAA,GAAmB,KAAnB;EAEA,CAAAC,WAAA,GAAe,IAAf;EAEA,CAAAC,eAAA,GAAmB,IAAnB;EAEA,CAAAC,YAAA,GAAgB,KAAKzT,OAAL,CAAa/9C,IAAb,CAAkB,IAAlB,CAAhB;EAEA,CAAAyxD,aAAA,GAAiB,KAAKC,QAAL,CAAc1xD,IAAd,CAAmB,IAAnB,CAAjB;EAEA,CAAAswD,WAAA,GAAe,IAAf;EAEA,CAAAqB,kBAAA,GAAsB,EAAtB;EAEA,CAAAC,cAAA,GAAkB,KAAlB;EAEA,CAAA9T,SAAA,GAAa,KAAb;EAEA,CAAAP,YAAA,GAAgB,KAAhB;EAEA,CAAAsU,2BAAA,GAA+B,KAA/B;EAEA,CAAAC,gBAAA,GAAoB,IAApB;EAEA3T,eAAA,GAAkBvuD,MAAA,CAAO3J,MAAP,CAAc,IAAd,CAAlB;EAEAg3D,UAAA,GAAa,IAAb;EAEAe,mBAAA,GAAsB,IAAtB;EAEAgC,YAAA,GAAe,IAAf;EAEA,CAAA+R,WAAA,GAAe,KAAf;EAEA,CAAAzmE,MAAA,GAAUka,gBAAA,CAAiBwsD,OAAjB,EAAV;EAEA,OAAOC,gBAAP,GAA0B,CAAC,CAA3B;EAEA,OAAOhR,aAAP,GAAuB,IAAI6P,kBAAJ,EAAvB;EAEA,OAAOkB,OAAP,GAAiB,CAAjB;EAIA,OAAOE,iBAAP,GAA2B,CAA3B;EAEA,WAAWC,uBAAXA,CAAA,EAAqC;IACnC,MAAMC,MAAA,GAAS5sD,gBAAA,CAAiBhH,SAAjB,CAA2B6zD,mBAA1C;IACA,MAAMvX,KAAA,GAAQrB,+BAAA,CAA0BsB,eAAxC;IACA,MAAMC,GAAA,GAAMvB,+BAAA,CAA0BwB,aAAtC;IAEA,OAAOn2D,eAAA,CACL,IADK,EAEL,yBAFK,EAGL,IAAI60D,qBAAJ,CAAoB,CAClB,CAAC,CAAC,WAAD,EAAc,eAAd,CAAD,EAAiCyY,MAAjC,EAAyC;MAAEvuB,IAAA,EAAM,CAAC,CAACiX,KAAF,EAAS,CAAT;IAAR,CAAzC,CADkB,EAElB,CACE,CAAC,gBAAD,EAAmB,qBAAnB,CADF,EAEEsX,MAFF,EAGE;MAAEvuB,IAAA,EAAM,CAAC,CAACmX,GAAF,EAAO,CAAP;IAAR,CAHF,CAFkB,EAOlB,CAAC,CAAC,YAAD,EAAe,gBAAf,CAAD,EAAmCoX,MAAnC,EAA2C;MAAEvuB,IAAA,EAAM,CAACiX,KAAD,EAAQ,CAAR;IAAR,CAA3C,CAPkB,EAQlB,CACE,CAAC,iBAAD,EAAoB,sBAApB,CADF,EAEEsX,MAFF,EAGE;MAAEvuB,IAAA,EAAM,CAACmX,GAAD,EAAM,CAAN;IAAR,CAHF,CARkB,EAalB,CAAC,CAAC,SAAD,EAAY,aAAZ,CAAD,EAA6BoX,MAA7B,EAAqC;MAAEvuB,IAAA,EAAM,CAAC,CAAD,EAAI,CAACiX,KAAL;IAAR,CAArC,CAbkB,EAclB,CAAC,CAAC,cAAD,EAAiB,mBAAjB,CAAD,EAAwCsX,MAAxC,EAAgD;MAAEvuB,IAAA,EAAM,CAAC,CAAD,EAAI,CAACmX,GAAL;IAAR,CAAhD,CAdkB,EAelB,CAAC,CAAC,WAAD,EAAc,eAAd,CAAD,EAAiCoX,MAAjC,EAAyC;MAAEvuB,IAAA,EAAM,CAAC,CAAD,EAAIiX,KAAJ;IAAR,CAAzC,CAfkB,EAgBlB,CAAC,CAAC,gBAAD,EAAmB,qBAAnB,CAAD,EAA4CsX,MAA5C,EAAoD;MAAEvuB,IAAA,EAAM,CAAC,CAAD,EAAImX,GAAJ;IAAR,CAApD,CAhBkB,EAiBlB,CACE,CAAC,QAAD,EAAW,YAAX,CADF,EAEEx1C,gBAAA,CAAiBhH,SAAjB,CAA2B8zD,yBAF7B,CAjBkB,CAApB,CAHK,CAAP;EALmC;EAoCrCjpE,YAAYnD,UAAZ,EAAwB;IACtB,IAAI,KAAKmD,WAAL,KAAqBmc,gBAAzB,EAA2C;MACzCzgB,oBAAA,CAAY,qCAAZ;IADyC;IAI3C,KAAKqF,MAAL,GAAclE,UAAA,CAAWkE,MAAzB;IACA,KAAKe,EAAL,GAAUjF,UAAA,CAAWiF,EAArB;IACA,KAAKrF,KAAL,GAAa,KAAKC,MAAL,GAAc,IAA3B;IACA,KAAKyuB,SAAL,GAAiBtuB,UAAA,CAAWkE,MAAX,CAAkBoqB,SAAnC;IACA,KAAK7kB,IAAL,GAAYzJ,UAAA,CAAWyJ,IAAvB;IACA,KAAKmC,GAAL,GAAW,IAAX;IACA,KAAKmrD,UAAL,GAAkB/2D,UAAA,CAAWy6D,SAA7B;IACA,KAAKV,mBAAL,GAA2B,IAA3B;IACA,KAAKmD,oBAAL,GAA4B,KAA5B;IACA,KAAKjF,eAAL,CAAqBC,UAArB,GAAkCl4D,UAAA,CAAWk4D,UAA7C;IACA,KAAKgD,mBAAL,GAA2B,IAA3B;IAEA,MAAM;MACJp1D,QADI;MAEJD,OAAA,EAAS;QAAEJ,SAAF;QAAaC,UAAb;QAAyBC,KAAzB;QAAgCC;MAAhC;IAFL,IAGF,KAAK1B,MAAL,CAAYW,QAHhB;IAKA,KAAKiB,QAAL,GAAgBA,QAAhB;IACA,KAAKumE,YAAL,GACG,OAAMvmE,QAAN,GAAiB,KAAKixD,UAAL,CAAgBuV,cAAhB,CAA+BxmE,QAAhD,IAA4D,GAD/D;IAEA,KAAKm0D,cAAL,GAAsB,CAACx0D,SAAD,EAAYC,UAAZ,CAAtB;IACA,KAAKw0D,eAAL,GAAuB,CAACv0D,KAAD,EAAQC,KAAR,CAAvB;IAEA,MAAM,CAAChG,KAAD,EAAQC,MAAR,IAAkB,KAAK64D,gBAA7B;IACA,KAAKl8D,CAAL,GAASwD,UAAA,CAAWxD,CAAX,GAAeoD,KAAxB;IACA,KAAKhD,CAAL,GAASoD,UAAA,CAAWpD,CAAX,GAAeiD,MAAxB;IAEA,KAAKs3D,eAAL,GAAuB,KAAvB;IACA,KAAKuD,OAAL,GAAe,KAAf;EAjCsB;EAoCxB,IAAIiK,UAAJA,CAAA,EAAiB;IACf,OAAOj7D,MAAA,CAAO6iE,cAAP,CAAsB,IAAtB,EAA4BppE,WAA5B,CAAwCod,KAA/C;EADe;EAIjB,WAAW80C,iBAAXA,CAAA,EAA+B;IAC7B,OAAOz2D,eAAA,CACL,IADK,EAEL,mBAFK,EAGL,KAAKm8D,aAAL,CAAmByR,UAAnB,CAA8B,YAA9B,CAHK,CAAP;EAD6B;EAQ/B,OAAO5D,uBAAPA,CAA+BjO,MAA/B,EAAuC;IACrC,MAAM8R,UAAA,GAAa,IAAIC,UAAJ,CAAe;MAChCznE,EAAA,EAAI01D,MAAA,CAAOz2D,MAAP,CAAc+kE,SAAd,EAD4B;MAEhC/kE,MAAA,EAAQy2D,MAAA,CAAOz2D,MAFiB;MAGhCu2D,SAAA,EAAWE,MAAA,CAAO5D;IAHc,CAAf,CAAnB;IAKA0V,UAAA,CAAW1S,mBAAX,GAAiCY,MAAA,CAAOZ,mBAAxC;IACA0S,UAAA,CAAW/R,OAAX,GAAqB,IAArB;IACA+R,UAAA,CAAW1V,UAAX,CAAsBoJ,sBAAtB,CAA6CsM,UAA7C;EARqC;EAevC,OAAOnX,UAAPA,CAAkBC,IAAlB,EAAwB5nD,OAAA,GAAU,IAAlC,EAAwC;IACtC2R,gBAAA,CAAiBw6C,YAAjB,KAAkC,IAAIpqD,GAAJ,CAChC,CACE,oCADF,EAEE,yCAFF,EAGE,0CAHF,EAIE,oCAJF,EAKE,sCALF,EAME,qCANF,EAOE,wCAPF,EAQE,wCARF,EASE,yCATF,EAUE,uCAVF,EAWE,uCAXF,EAYEhS,GAZF,CAYMgH,GAAA,IAAO,CACXA,GADW,EAEX6wD,IAAA,CAAK5lD,GAAL,CAASjL,GAAA,CAAImQ,UAAJ,CAAe,UAAf,EAA2BlY,CAAA,IAAM,IAAGA,CAAA,CAAEsU,WAAF,EAAJ,EAAhC,CAAT,CAFW,CAZb,CADgC,CAAlC;IAkBA,IAAItD,OAAA,EAAS6nD,OAAb,EAAsB;MACpB,WAAW9wD,GAAX,IAAkBiJ,OAAA,CAAQ6nD,OAA1B,EAAmC;QACjCl2C,gBAAA,CAAiBw6C,YAAjB,CAA8Bl7C,GAA9B,CAAkCla,GAAlC,EAAuC6wD,IAAA,CAAK5lD,GAAL,CAASjL,GAAT,CAAvC;MADiC;IADf;IAKtB,IAAI4a,gBAAA,CAAiBysD,gBAAjB,KAAsC,CAAC,CAA3C,EAA8C;MAC5C;IAD4C;IAG9C,MAAM5mE,KAAA,GAAQmnD,gBAAA,CAAiBxnD,QAAA,CAAS2wD,eAA1B,CAAd;IACAn2C,gBAAA,CAAiBysD,gBAAjB,GACErW,UAAA,CAAWvwD,KAAA,CAAMonD,gBAAN,CAAuB,iBAAvB,CAAX,KAAyD,CAD3D;EA5BsC;EAqCxC,OAAOoJ,mBAAPA,CAA2Bp1C,KAA3B,EAAkCosD,MAAlC,EAA0C;EAM1C,WAAW1W,yBAAXA,CAAA,EAAuC;IACrC,OAAO,EAAP;EADqC;EAUvC,OAAOmN,wBAAPA,CAAgCC,IAAhC,EAAsC;IACpC,OAAO,KAAP;EADoC;EAUtC,OAAOC,KAAPA,CAAajqD,IAAb,EAAmBnV,MAAnB,EAA2B;IACzBrF,oBAAA,CAAY,iBAAZ;EADyB;EAQ3B,IAAIq3D,kBAAJA,CAAA,EAAyB;IACvB,OAAO,EAAP;EADuB;EAIzB,IAAIwB,YAAJA,CAAA,EAAmB;IACjB,OAAO,KAAK,CAAAmU,WAAZ;EADiB;EAInB,IAAInU,YAAJA,CAAiBhnD,KAAjB,EAAwB;IACtB,KAAK,CAAAm7D,WAAL,GAAoBn7D,KAApB;IACA,KAAK9E,GAAL,EAAUrG,SAAV,CAAoB2U,MAApB,CAA2B,WAA3B,EAAwCxJ,KAAxC;EAFsB;EAQxB,IAAIk8D,cAAJA,CAAA,EAAqB;IACnB,OAAO,IAAP;EADmB;EAIrBzU,OAAA,EAAS;IACP,MAAM,CAAC1yD,SAAD,EAAYC,UAAZ,IAA0B,KAAKu0D,cAArC;IACA,QAAQ,KAAKnB,cAAb;MACE,KAAK,EAAL;QACE,KAAKt8D,CAAL,IAAW,KAAKqD,MAAL,GAAc6F,UAAf,IAA8BD,SAAA,GAAY,CAAZ,CAAxC;QACA,KAAK7I,CAAL,IAAW,KAAKgD,KAAL,GAAa6F,SAAd,IAA4BC,UAAA,GAAa,CAAb,CAAtC;QACA;MACF,KAAK,GAAL;QACE,KAAKlJ,CAAL,IAAU,KAAKoD,KAAL,GAAa,CAAvB;QACA,KAAKhD,CAAL,IAAU,KAAKiD,MAAL,GAAc,CAAxB;QACA;MACF,KAAK,GAAL;QACE,KAAKrD,CAAL,IAAW,KAAKqD,MAAL,GAAc6F,UAAf,IAA8BD,SAAA,GAAY,CAAZ,CAAxC;QACA,KAAK7I,CAAL,IAAW,KAAKgD,KAAL,GAAa6F,SAAd,IAA4BC,UAAA,GAAa,CAAb,CAAtC;QACA;MACF;QACE,KAAKlJ,CAAL,IAAU,KAAKoD,KAAL,GAAa,CAAvB;QACA,KAAKhD,CAAL,IAAU,KAAKiD,MAAL,GAAc,CAAxB;QACA;IAhBJ;IAkBA,KAAKk5D,iBAAL;EApBO;EA2BTvC,YAAYl4C,MAAZ,EAAoB;IAClB,KAAKy4C,UAAL,CAAgBP,WAAhB,CAA4Bl4C,MAA5B;EADkB;EAIpB,IAAIs6C,YAAJA,CAAA,EAAmB;IACjB,OAAO,KAAK7B,UAAL,CAAgB6B,YAAvB;EADiB;EAOnBwH,gBAAA,EAAkB;IAChB,KAAKx0D,GAAL,CAASzG,KAAT,CAAeC,MAAf,GAAwB,CAAxB;EADgB;EAOlBw6D,gBAAA,EAAkB;IAChB,KAAKh0D,GAAL,CAASzG,KAAT,CAAeC,MAAf,GAAwB,KAAK,CAAAA,MAA7B;EADgB;EAIlBwsD,UAAU1tD,MAAV,EAAkB;IAChB,IAAIA,MAAA,KAAW,IAAf,EAAqB;MACnB,KAAKoqB,SAAL,GAAiBpqB,MAAA,CAAOoqB,SAAxB;MACA,KAAK2rC,cAAL,GAAsB/1D,MAAA,CAAO+1D,cAA7B;IAFmB,CAArB,MAGO;MAEL,KAAK,CAAA4S,YAAL;IAFK;IAIP,KAAK3oE,MAAL,GAAcA,MAAd;EARgB;EAclB2zD,QAAQlwD,KAAR,EAAe;IACb,IAAI,CAAC,KAAKmwD,mBAAV,EAA+B;MAC7B;IAD6B;IAG/B,IAAI,CAAC,KAAK,CAAA4T,cAAV,EAA2B;MACzB,KAAKxnE,MAAL,CAAYslE,WAAZ,CAAwB,IAAxB;IADyB,CAA3B,MAEO;MACL,KAAK,CAAAkC,cAAL,GAAuB,KAAvB;IADK;EANM;EAefF,SAAS7jE,KAAT,EAAgB;IACd,IAAI,CAAC,KAAKmwD,mBAAV,EAA+B;MAC7B;IAD6B;IAI/B,IAAI,CAAC,KAAKX,eAAV,EAA2B;MACzB;IADyB;IAQ3B,MAAMpvD,MAAA,GAASJ,KAAA,CAAM4K,aAArB;IACA,IAAIxK,MAAA,EAAQ+kE,OAAR,CAAiB,IAAG,KAAK7nE,EAAT,EAAhB,CAAJ,EAAoC;MAClC;IADkC;IAIpC0C,KAAA,CAAM4O,cAAN;IAEA,IAAI,CAAC,KAAKrS,MAAL,EAAa6oE,mBAAlB,EAAuC;MACrC,KAAK/X,cAAL;IADqC;EApBzB;EAyBhBA,eAAA,EAAiB;IACf,IAAI,KAAK3M,OAAL,EAAJ,EAAoB;MAClB,KAAKnwC,MAAL;IADkB,CAApB,MAEO;MACL,KAAK8gD,MAAL;IADK;EAHQ;EAWjBA,OAAA,EAAS;IACP,KAAKmH,sBAAL;EADO;EAITA,uBAAA,EAAyB;IACvB,KAAKpJ,UAAL,CAAgBoJ,sBAAhB,CAAuC,IAAvC;EADuB;EAWzB9F,MAAM79D,CAAN,EAASI,CAAT,EAAY8xC,EAAZ,EAAgBC,EAAhB,EAAoB;IAClB,MAAM,CAAC/uC,KAAD,EAAQC,MAAR,IAAkB,KAAK64D,gBAA7B;IACA,CAAChqB,EAAD,EAAKC,EAAL,IAAW,KAAKq+B,uBAAL,CAA6Bt+B,EAA7B,EAAiCC,EAAjC,CAAX;IAEA,KAAKnyC,CAAL,GAAU,CAAAA,CAAA,GAAIkyC,EAAJ,IAAU9uC,KAApB;IACA,KAAKhD,CAAL,GAAU,CAAAA,CAAA,GAAI+xC,EAAJ,IAAU9uC,MAApB;IAEA,KAAKk5D,iBAAL;EAPkB;EAUpB,CAAAp3B,UAAW,CAAC/hC,KAAD,EAAQC,MAAR,CAAX,EAA4BrD,CAA5B,EAA+BI,CAA/B,EAAkC;IAChC,CAACJ,CAAD,EAAII,CAAJ,IAAS,KAAKowE,uBAAL,CAA6BxwE,CAA7B,EAAgCI,CAAhC,CAAT;IAEA,KAAKJ,CAAL,IAAUA,CAAA,GAAIoD,KAAd;IACA,KAAKhD,CAAL,IAAUA,CAAA,GAAIiD,MAAd;IAEA,KAAKk5D,iBAAL;EANgC;EAclCp3B,UAAUnlC,CAAV,EAAaI,CAAb,EAAgB;IACd,KAAK,CAAA+kC,SAAL,CAAgB,KAAK+2B,gBAArB,EAAuCl8D,CAAvC,EAA0CI,CAA1C;EADc;EAUhBqwE,gBAAgBzwE,CAAhB,EAAmBI,CAAnB,EAAsB;IACpB,KAAK,CAAA+kC,SAAL,CAAgB,KAAKs4B,cAArB,EAAqCz9D,CAArC,EAAwCI,CAAxC;IACA,KAAKgP,GAAL,CAASshE,cAAT,CAAwB;MAAEC,KAAA,EAAO;IAAT,CAAxB;EAFoB;EAKtBC,KAAK1+B,EAAL,EAASC,EAAT,EAAa;IACX,MAAM,CAAC5yB,WAAD,EAAc08C,YAAd,IAA8B,KAAKC,gBAAzC;IACA,KAAKl8D,CAAL,IAAUkyC,EAAA,GAAK3yB,WAAf;IACA,KAAKnf,CAAL,IAAU+xC,EAAA,GAAK8pB,YAAf;IACA,IAAI,KAAKv0D,MAAL,KAAgB,KAAK1H,CAAL,GAAS,CAAT,IAAc,KAAKA,CAAL,GAAS,CAAvB,IAA4B,KAAKI,CAAL,GAAS,CAArC,IAA0C,KAAKA,CAAL,GAAS,CAAnD,CAApB,EAA2E;MASzE,MAAM;QAAEJ,CAAF;QAAKI;MAAL,IAAW,KAAKgP,GAAL,CAAS+sD,qBAAT,EAAjB;MACA,IAAI,KAAKz0D,MAAL,CAAY2lE,aAAZ,CAA0B,IAA1B,EAAgCrtE,CAAhC,EAAmCI,CAAnC,CAAJ,EAA2C;QACzC,KAAKJ,CAAL,IAAUP,IAAA,CAAKC,KAAL,CAAW,KAAKM,CAAhB,CAAV;QACA,KAAKI,CAAL,IAAUX,IAAA,CAAKC,KAAL,CAAW,KAAKU,CAAhB,CAAV;MAFyC;IAV8B;IAmB3E,IAAI;MAAEJ,CAAF;MAAKI;IAAL,IAAW,IAAf;IACA,MAAM,CAACywE,EAAD,EAAKC,EAAL,IAAW,KAAK,CAAAC,kBAAL,EAAjB;IACA/wE,CAAA,IAAK6wE,EAAL;IACAzwE,CAAA,IAAK0wE,EAAL;IAEA,KAAK1hE,GAAL,CAASzG,KAAT,CAAe+B,IAAf,GAAsB,GAAI,OAAM1K,CAAN,EAASgxE,OAAV,CAAkB,CAAlB,CAAqB,GAA9C;IACA,KAAK5hE,GAAL,CAASzG,KAAT,CAAegC,GAAf,GAAqB,GAAI,OAAMvK,CAAN,EAAS4wE,OAAV,CAAkB,CAAlB,CAAqB,GAA7C;IACA,KAAK5hE,GAAL,CAASshE,cAAT,CAAwB;MAAEC,KAAA,EAAO;IAAT,CAAxB;EA9BW;EAiCb,CAAAI,mBAAA,EAAsB;IACpB,MAAM,CAACxxD,WAAD,EAAc08C,YAAd,IAA8B,KAAKC,gBAAzC;IACA,MAAM;MAAEqT;IAAF,IAAuBzsD,gBAA7B;IACA,MAAM9iB,CAAA,GAAIuvE,gBAAA,GAAmBhwD,WAA7B;IACA,MAAMnf,CAAA,GAAImvE,gBAAA,GAAmBtT,YAA7B;IACA,QAAQ,KAAK3yD,QAAb;MACE,KAAK,EAAL;QACE,OAAO,CAAC,CAACtJ,CAAF,EAAKI,CAAL,CAAP;MACF,KAAK,GAAL;QACE,OAAO,CAACJ,CAAD,EAAII,CAAJ,CAAP;MACF,KAAK,GAAL;QACE,OAAO,CAACJ,CAAD,EAAI,CAACI,CAAL,CAAP;MACF;QACE,OAAO,CAAC,CAACJ,CAAF,EAAK,CAACI,CAAN,CAAP;IARJ;EALoB;EAiBtBm8D,kBAAA,EAAoB;IAClB,MAAM,CAACtzD,SAAD,EAAYC,UAAZ,IAA0B,KAAKu0D,cAArC;IACA,IAAI;MAAEz9D,CAAF;MAAKI,CAAL;MAAQgD,KAAR;MAAeC;IAAf,IAA0B,IAA9B;IACAD,KAAA,IAAS6F,SAAT;IACA5F,MAAA,IAAU6F,UAAV;IACAlJ,CAAA,IAAKiJ,SAAL;IACA7I,CAAA,IAAK8I,UAAL;IAEA,QAAQ,KAAKI,QAAb;MACE,KAAK,CAAL;QACEtJ,CAAA,GAAIP,IAAA,CAAKE,GAAL,CAAS,CAAT,EAAYF,IAAA,CAAKG,GAAL,CAASqJ,SAAA,GAAY7F,KAArB,EAA4BpD,CAA5B,CAAZ,CAAJ;QACAI,CAAA,GAAIX,IAAA,CAAKE,GAAL,CAAS,CAAT,EAAYF,IAAA,CAAKG,GAAL,CAASsJ,UAAA,GAAa7F,MAAtB,EAA8BjD,CAA9B,CAAZ,CAAJ;QACA;MACF,KAAK,EAAL;QACEJ,CAAA,GAAIP,IAAA,CAAKE,GAAL,CAAS,CAAT,EAAYF,IAAA,CAAKG,GAAL,CAASqJ,SAAA,GAAY5F,MAArB,EAA6BrD,CAA7B,CAAZ,CAAJ;QACAI,CAAA,GAAIX,IAAA,CAAKG,GAAL,CAASsJ,UAAT,EAAqBzJ,IAAA,CAAKE,GAAL,CAASyD,KAAT,EAAgBhD,CAAhB,CAArB,CAAJ;QACA;MACF,KAAK,GAAL;QACEJ,CAAA,GAAIP,IAAA,CAAKG,GAAL,CAASqJ,SAAT,EAAoBxJ,IAAA,CAAKE,GAAL,CAASyD,KAAT,EAAgBpD,CAAhB,CAApB,CAAJ;QACAI,CAAA,GAAIX,IAAA,CAAKG,GAAL,CAASsJ,UAAT,EAAqBzJ,IAAA,CAAKE,GAAL,CAAS0D,MAAT,EAAiBjD,CAAjB,CAArB,CAAJ;QACA;MACF,KAAK,GAAL;QACEJ,CAAA,GAAIP,IAAA,CAAKG,GAAL,CAASqJ,SAAT,EAAoBxJ,IAAA,CAAKE,GAAL,CAAS0D,MAAT,EAAiBrD,CAAjB,CAApB,CAAJ;QACAI,CAAA,GAAIX,IAAA,CAAKE,GAAL,CAAS,CAAT,EAAYF,IAAA,CAAKG,GAAL,CAASsJ,UAAA,GAAa9F,KAAtB,EAA6BhD,CAA7B,CAAZ,CAAJ;QACA;IAhBJ;IAmBA,KAAKJ,CAAL,GAASA,CAAA,IAAKiJ,SAAd;IACA,KAAK7I,CAAL,GAASA,CAAA,IAAK8I,UAAd;IAEA,MAAM,CAAC2nE,EAAD,EAAKC,EAAL,IAAW,KAAK,CAAAC,kBAAL,EAAjB;IACA/wE,CAAA,IAAK6wE,EAAL;IACAzwE,CAAA,IAAK0wE,EAAL;IAEA,MAAM;MAAEnoE;IAAF,IAAY,KAAKyG,GAAvB;IACAzG,KAAA,CAAM+B,IAAN,GAAa,GAAI,OAAM1K,CAAN,EAASgxE,OAAV,CAAkB,CAAlB,CAAqB,GAArC;IACAroE,KAAA,CAAMgC,GAAN,GAAY,GAAI,OAAMvK,CAAN,EAAS4wE,OAAV,CAAkB,CAAlB,CAAqB,GAApC;IAEA,KAAKzN,SAAL;EAtCkB;EAyCpB,OAAO,CAAA0N,WAAPA,CAAoBjxE,CAApB,EAAuBI,CAAvB,EAA0BwK,KAA1B,EAAiC;IAC/B,QAAQA,KAAR;MACE,KAAK,EAAL;QACE,OAAO,CAACxK,CAAD,EAAI,CAACJ,CAAL,CAAP;MACF,KAAK,GAAL;QACE,OAAO,CAAC,CAACA,CAAF,EAAK,CAACI,CAAN,CAAP;MACF,KAAK,GAAL;QACE,OAAO,CAAC,CAACA,CAAF,EAAKJ,CAAL,CAAP;MACF;QACE,OAAO,CAACA,CAAD,EAAII,CAAJ,CAAP;IARJ;EAD+B;EAkBjCowE,wBAAwBxwE,CAAxB,EAA2BI,CAA3B,EAA8B;IAC5B,OAAO0iB,gBAAA,CAAiB,CAAAmuD,WAAjB,CAA8BjxE,CAA9B,EAAiCI,CAAjC,EAAoC,KAAKk8D,cAAzC,CAAP;EAD4B;EAS9BkB,wBAAwBx9D,CAAxB,EAA2BI,CAA3B,EAA8B;IAC5B,OAAO0iB,gBAAA,CAAiB,CAAAmuD,WAAjB,CAA8BjxE,CAA9B,EAAiCI,CAAjC,EAAoC,MAAM,KAAKk8D,cAA/C,CAAP;EAD4B;EAI9B,CAAA4U,kBAAmB5nE,QAAnB,EAA6B;IAC3B,QAAQA,QAAR;MACE,KAAK,EAAL;QAAS;UACP,MAAM,CAACL,SAAD,EAAYC,UAAZ,IAA0B,KAAKu0D,cAArC;UACA,OAAO,CAAC,CAAD,EAAI,CAACx0D,SAAD,GAAaC,UAAjB,EAA6BA,UAAA,GAAaD,SAA1C,EAAqD,CAArD,CAAP;QAFO;MAIT,KAAK,GAAL;QACE,OAAO,CAAC,CAAC,CAAF,EAAK,CAAL,EAAQ,CAAR,EAAW,CAAC,CAAZ,CAAP;MACF,KAAK,GAAL;QAAU;UACR,MAAM,CAACA,SAAD,EAAYC,UAAZ,IAA0B,KAAKu0D,cAArC;UACA,OAAO,CAAC,CAAD,EAAIx0D,SAAA,GAAYC,UAAhB,EAA4B,CAACA,UAAD,GAAcD,SAA1C,EAAqD,CAArD,CAAP;QAFQ;MAIV;QACE,OAAO,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,CAAP;IAZJ;EAD2B;EAiB7B,IAAI4wD,WAAJA,CAAA,EAAkB;IAChB,OAAO,KAAKU,UAAL,CAAgBuV,cAAhB,CAA+BqB,SAAtC;EADgB;EAIlB,IAAI7U,cAAJA,CAAA,EAAqB;IACnB,OAAQ,MAAK/B,UAAL,CAAgBuV,cAAhB,CAA+BxmE,QAA/B,GAA0C,KAAKumE,YAA/C,IAA+D,GAAvE;EADmB;EAIrB,IAAI3T,gBAAJA,CAAA,EAAuB;IACrB,MAAM;MACJrC,WADI;MAEJ4D,cAAA,EAAgB,CAACx0D,SAAD,EAAYC,UAAZ;IAFZ,IAGF,IAHJ;IAIA,MAAMkoE,WAAA,GAAcnoE,SAAA,GAAY4wD,WAAhC;IACA,MAAMwX,YAAA,GAAenoE,UAAA,GAAa2wD,WAAlC;IACA,OAAO33D,gBAAA,CAAY6yD,mBAAZ,GACH,CAACt1D,IAAA,CAAKsX,KAAL,CAAWq6D,WAAX,CAAD,EAA0B3xE,IAAA,CAAKsX,KAAL,CAAWs6D,YAAX,CAA1B,CADG,GAEH,CAACD,WAAD,EAAcC,YAAd,CAFJ;EAPqB;EAiBvBpN,QAAQ7gE,KAAR,EAAeC,MAAf,EAAuB;IACrB,MAAM,CAACkc,WAAD,EAAc08C,YAAd,IAA8B,KAAKC,gBAAzC;IACA,KAAK9sD,GAAL,CAASzG,KAAT,CAAevF,KAAf,GAAuB,GAAI,CAAC,MAAMA,KAAP,GAAgBmc,WAAhB,EAA6ByxD,OAA9B,CAAsC,CAAtC,CAAyC,GAAnE;IACA,IAAI,CAAC,KAAK,CAAArC,eAAV,EAA4B;MAC1B,KAAKv/D,GAAL,CAASzG,KAAT,CAAetF,MAAf,GAAwB,GAAI,CAAC,MAAMA,MAAP,GAAiB44D,YAAjB,EAA+B+U,OAAhC,CAAwC,CAAxC,CAA2C,GAAtE;IAD0B;IAG5B,KAAK,CAAAzC,aAAL,EAAqBxlE,SAArB,CAA+B2U,MAA/B,CACE,OADF,EAEEta,KAAA,GAAQ0f,gBAAA,CAAiB0sD,iBAAzB,IACEnsE,MAAA,GAASyf,gBAAA,CAAiB0sD,iBAH9B;EANqB;EAavBlL,QAAA,EAAU;IACR,MAAM;MAAE37D;IAAF,IAAY,KAAKyG,GAAvB;IACA,MAAM;MAAE/L,MAAF;MAAUD;IAAV,IAAoBuF,KAA1B;IACA,MAAM2oE,YAAA,GAAeluE,KAAA,CAAMmuE,QAAN,CAAe,GAAf,CAArB;IACA,MAAMC,aAAA,GAAgB,CAAC,KAAK,CAAA7C,eAAN,IAA0BtrE,MAAA,CAAOkuE,QAAP,CAAgB,GAAhB,CAAhD;IACA,IAAID,YAAA,IAAgBE,aAApB,EAAmC;MACjC;IADiC;IAInC,MAAM,CAACjyD,WAAD,EAAc08C,YAAd,IAA8B,KAAKC,gBAAzC;IACA,IAAI,CAACoV,YAAL,EAAmB;MACjB3oE,KAAA,CAAMvF,KAAN,GAAc,GAAI,CAAC,MAAM81D,UAAA,CAAW91D,KAAX,CAAP,GAA4Bmc,WAA5B,EAAyCyxD,OAA1C,CAAkD,CAAlD,CAAqD,GAAtE;IADiB;IAGnB,IAAI,CAAC,KAAK,CAAArC,eAAN,IAA0B,CAAC6C,aAA/B,EAA8C;MAC5C7oE,KAAA,CAAMtF,MAAN,GAAe,GAAI,CAAC,MAAM61D,UAAA,CAAW71D,MAAX,CAAP,GAA6B44D,YAA7B,EAA2C+U,OAA5C,CAChB,CADgB,CAEhB,GAFF;IAD4C;EAbtC;EAwBVvW,sBAAA,EAAwB;IACtB,OAAO,CAAC,CAAD,EAAI,CAAJ,CAAP;EADsB;EAIxB,CAAAgX,eAAA,EAAkB;IAChB,IAAI,KAAK,CAAA7C,WAAT,EAAuB;MACrB;IADqB;IAGvB,KAAK,CAAAA,WAAL,GAAoBtmE,QAAA,CAASC,aAAT,CAAuB,KAAvB,CAApB;IACA,KAAK,CAAAqmE,WAAL,CAAkB7lE,SAAlB,CAA4BC,GAA5B,CAAgC,UAAhC;IAIA,MAAM0oE,OAAA,GAAU,KAAKhR,oBAAL,GACZ,CAAC,SAAD,EAAY,UAAZ,EAAwB,aAAxB,EAAuC,YAAvC,CADY,GAEZ,CACE,SADF,EAEE,WAFF,EAGE,UAHF,EAIE,aAJF,EAKE,aALF,EAME,cANF,EAOE,YAPF,EAQE,YARF,CAFJ;IAYA,WAAWzzD,IAAX,IAAmBykE,OAAnB,EAA4B;MAC1B,MAAMtiE,GAAA,GAAM9G,QAAA,CAASC,aAAT,CAAuB,KAAvB,CAAZ;MACA,KAAK,CAAAqmE,WAAL,CAAkBngE,MAAlB,CAAyBW,GAAzB;MACAA,GAAA,CAAIrG,SAAJ,CAAcC,GAAd,CAAkB,SAAlB,EAA6BiE,IAA7B;MACAmC,GAAA,CAAI5G,YAAJ,CAAiB,mBAAjB,EAAsCyE,IAAtC;MACAmC,GAAA,CAAI2B,gBAAJ,CACE,aADF,EAEE,KAAK,CAAA4gE,kBAAL,CAAyBr0D,IAAzB,CAA8B,IAA9B,EAAoCrQ,IAApC,CAFF;MAIAmC,GAAA,CAAI2B,gBAAJ,CAAqB,aAArB,EAAoCmiD,2BAApC;MACA9jD,GAAA,CAAI1G,QAAJ,GAAe,CAAC,CAAhB;IAV0B;IAY5B,KAAK0G,GAAL,CAASqM,OAAT,CAAiB,KAAK,CAAAmzD,WAAtB;EAjCgB;EAoClB,CAAA+C,mBAAoB1kE,IAApB,EAA0B9B,KAA1B,EAAiC;IAC/BA,KAAA,CAAM4O,cAAN;IACA,MAAM;MAAE7E;IAAF,IAAYhT,gBAAA,CAAY+S,QAA9B;IACA,IAAI9J,KAAA,CAAMq4D,MAAN,KAAiB,CAAjB,IAAuBr4D,KAAA,CAAMiK,OAAN,IAAiBF,KAA5C,EAAoD;MAClD;IADkD;IAIpD,KAAK,CAAA08D,mBAAL,CAA0B,KAA1B;IAEA,MAAMC,uBAAA,GAA0B,KAAK,CAAAC,kBAAL,CAAyBx0D,IAAzB,CAA8B,IAA9B,EAAoCrQ,IAApC,CAAhC;IACA,MAAM8kE,cAAA,GAAiB,KAAK7W,YAA5B;IACA,KAAKA,YAAL,GAAoB,KAApB;IACA,MAAM8W,kBAAA,GAAqB;MAAEC,OAAA,EAAS,IAAX;MAAiB9D,OAAA,EAAS;IAA1B,CAA3B;IACA,KAAKzmE,MAAL,CAAYwjE,mBAAZ,CAAgC,KAAhC;IACA99C,MAAA,CAAOrc,gBAAP,CACE,aADF,EAEE8gE,uBAFF,EAGEG,kBAHF;IAKA,MAAME,MAAA,GAAS,KAAKlyE,CAApB;IACA,MAAMmyE,MAAA,GAAS,KAAK/xE,CAApB;IACA,MAAMgyE,UAAA,GAAa,KAAKhvE,KAAxB;IACA,MAAMivE,WAAA,GAAc,KAAKhvE,MAAzB;IACA,MAAMivE,iBAAA,GAAoB,KAAK5qE,MAAL,CAAY0H,GAAZ,CAAgBzG,KAAhB,CAAsB4pE,MAAhD;IACA,MAAMC,WAAA,GAAc,KAAKpjE,GAAL,CAASzG,KAAT,CAAe4pE,MAAnC;IACA,KAAKnjE,GAAL,CAASzG,KAAT,CAAe4pE,MAAf,GAAwB,KAAK7qE,MAAL,CAAY0H,GAAZ,CAAgBzG,KAAhB,CAAsB4pE,MAAtB,GACtBnlD,MAAA,CAAO0iC,gBAAP,CAAwB3kD,KAAA,CAAMI,MAA9B,EAAsCgnE,MADxC;IAGA,MAAME,iBAAA,GAAoBA,CAAA,KAAM;MAC9B,KAAK/qE,MAAL,CAAYwjE,mBAAZ,CAAgC,IAAhC;MACA,KAAK,CAAA0G,mBAAL,CAA0B,IAA1B;MACA,KAAK1W,YAAL,GAAoB6W,cAApB;MACA3kD,MAAA,CAAOzR,mBAAP,CAA2B,WAA3B,EAAwC82D,iBAAxC;MACArlD,MAAA,CAAOzR,mBAAP,CAA2B,MAA3B,EAAmC82D,iBAAnC;MACArlD,MAAA,CAAOzR,mBAAP,CACE,aADF,EAEEk2D,uBAFF,EAGEG,kBAHF;MAKA,KAAKtqE,MAAL,CAAY0H,GAAZ,CAAgBzG,KAAhB,CAAsB4pE,MAAtB,GAA+BD,iBAA/B;MACA,KAAKljE,GAAL,CAASzG,KAAT,CAAe4pE,MAAf,GAAwBC,WAAxB;MAEA,KAAK,CAAAE,oBAAL,CAA2BR,MAA3B,EAAmCC,MAAnC,EAA2CC,UAA3C,EAAuDC,WAAvD;IAd8B,CAAhC;IAgBAjlD,MAAA,CAAOrc,gBAAP,CAAwB,WAAxB,EAAqC0hE,iBAArC;IAGArlD,MAAA,CAAOrc,gBAAP,CAAwB,MAAxB,EAAgC0hE,iBAAhC;EA/C+B;EAkDjC,CAAAC,qBAAsBR,MAAtB,EAA8BC,MAA9B,EAAsCC,UAAtC,EAAkDC,WAAlD,EAA+D;IAC7D,MAAMM,IAAA,GAAO,KAAK3yE,CAAlB;IACA,MAAM4yE,IAAA,GAAO,KAAKxyE,CAAlB;IACA,MAAMs+C,QAAA,GAAW,KAAKt7C,KAAtB;IACA,MAAMu7C,SAAA,GAAY,KAAKt7C,MAAvB;IACA,IACEsvE,IAAA,KAAST,MAAT,IACAU,IAAA,KAAST,MADT,IAEAzzB,QAAA,KAAa0zB,UAFb,IAGAzzB,SAAA,KAAc0zB,WAJhB,EAKE;MACA;IADA;IAIF,KAAKrY,WAAL,CAAiB;MACfC,GAAA,EAAKA,CAAA,KAAM;QACT,KAAK72D,KAAL,GAAas7C,QAAb;QACA,KAAKr7C,MAAL,GAAcs7C,SAAd;QACA,KAAK3+C,CAAL,GAAS2yE,IAAT;QACA,KAAKvyE,CAAL,GAASwyE,IAAT;QACA,MAAM,CAACrzD,WAAD,EAAc08C,YAAd,IAA8B,KAAKC,gBAAzC;QACA,KAAK+H,OAAL,CAAa1kD,WAAA,GAAcm/B,QAA3B,EAAqCud,YAAA,GAAetd,SAApD;QACA,KAAK4d,iBAAL;MAPS,CADI;MAUfrC,IAAA,EAAMA,CAAA,KAAM;QACV,KAAK92D,KAAL,GAAagvE,UAAb;QACA,KAAK/uE,MAAL,GAAcgvE,WAAd;QACA,KAAKryE,CAAL,GAASkyE,MAAT;QACA,KAAK9xE,CAAL,GAAS+xE,MAAT;QACA,MAAM,CAAC5yD,WAAD,EAAc08C,YAAd,IAA8B,KAAKC,gBAAzC;QACA,KAAK+H,OAAL,CAAa1kD,WAAA,GAAc6yD,UAA3B,EAAuCnW,YAAA,GAAeoW,WAAtD;QACA,KAAK9V,iBAAL;MAPU,CAVG;MAmBfpC,QAAA,EAAU;IAnBK,CAAjB;EAd6D;EAqC/D,CAAA2X,mBAAoB7kE,IAApB,EAA0B9B,KAA1B,EAAiC;IAC/B,MAAM,CAACoU,WAAD,EAAc08C,YAAd,IAA8B,KAAKC,gBAAzC;IACA,MAAMgW,MAAA,GAAS,KAAKlyE,CAApB;IACA,MAAMmyE,MAAA,GAAS,KAAK/xE,CAApB;IACA,MAAMgyE,UAAA,GAAa,KAAKhvE,KAAxB;IACA,MAAMivE,WAAA,GAAc,KAAKhvE,MAAzB;IACA,MAAMwvE,QAAA,GAAW/vD,gBAAA,CAAiB8iD,QAAjB,GAA4BrmD,WAA7C;IACA,MAAMuzD,SAAA,GAAYhwD,gBAAA,CAAiB8iD,QAAjB,GAA4B3J,YAA9C;IAKA,MAAMllD,KAAA,GAAQ/W,CAAA,IAAKP,IAAA,CAAKsX,KAAL,CAAW/W,CAAA,GAAI,KAAf,IAAwB,KAA3C;IACA,MAAM+yE,cAAA,GAAiB,KAAK,CAAA7B,iBAAL,CAAwB,KAAK5nE,QAA7B,CAAvB;IACA,MAAM0pE,MAAA,GAASA,CAAChzE,CAAD,EAAII,CAAJ,KAAU,CACvB2yE,cAAA,CAAe,CAAf,IAAoB/yE,CAApB,GAAwB+yE,cAAA,CAAe,CAAf,IAAoB3yE,CADrB,EAEvB2yE,cAAA,CAAe,CAAf,IAAoB/yE,CAApB,GAAwB+yE,cAAA,CAAe,CAAf,IAAoB3yE,CAFrB,CAAzB;IAIA,MAAM6yE,iBAAA,GAAoB,KAAK,CAAA/B,iBAAL,CAAwB,MAAM,KAAK5nE,QAAnC,CAA1B;IACA,MAAM4pE,SAAA,GAAYA,CAAClzE,CAAD,EAAII,CAAJ,KAAU,CAC1B6yE,iBAAA,CAAkB,CAAlB,IAAuBjzE,CAAvB,GAA2BizE,iBAAA,CAAkB,CAAlB,IAAuB7yE,CADxB,EAE1B6yE,iBAAA,CAAkB,CAAlB,IAAuBjzE,CAAvB,GAA2BizE,iBAAA,CAAkB,CAAlB,IAAuB7yE,CAFxB,CAA5B;IAIA,IAAI+yE,QAAJ;IACA,IAAIC,WAAJ;IACA,IAAIC,UAAA,GAAa,KAAjB;IACA,IAAIC,YAAA,GAAe,KAAnB;IAEA,QAAQrmE,IAAR;MACE,KAAK,SAAL;QACEomE,UAAA,GAAa,IAAb;QACAF,QAAA,GAAWA,CAACxoB,CAAD,EAAIC,CAAJ,KAAU,CAAC,CAAD,EAAI,CAAJ,CAArB;QACAwoB,WAAA,GAAcA,CAACzoB,CAAD,EAAIC,CAAJ,KAAU,CAACD,CAAD,EAAIC,CAAJ,CAAxB;QACA;MACF,KAAK,WAAL;QACEuoB,QAAA,GAAWA,CAACxoB,CAAD,EAAIC,CAAJ,KAAU,CAACD,CAAA,GAAI,CAAL,EAAQ,CAAR,CAArB;QACAyoB,WAAA,GAAcA,CAACzoB,CAAD,EAAIC,CAAJ,KAAU,CAACD,CAAA,GAAI,CAAL,EAAQC,CAAR,CAAxB;QACA;MACF,KAAK,UAAL;QACEyoB,UAAA,GAAa,IAAb;QACAF,QAAA,GAAWA,CAACxoB,CAAD,EAAIC,CAAJ,KAAU,CAACD,CAAD,EAAI,CAAJ,CAArB;QACAyoB,WAAA,GAAcA,CAACzoB,CAAD,EAAIC,CAAJ,KAAU,CAAC,CAAD,EAAIA,CAAJ,CAAxB;QACA;MACF,KAAK,aAAL;QACE0oB,YAAA,GAAe,IAAf;QACAH,QAAA,GAAWA,CAACxoB,CAAD,EAAIC,CAAJ,KAAU,CAACD,CAAD,EAAIC,CAAA,GAAI,CAAR,CAArB;QACAwoB,WAAA,GAAcA,CAACzoB,CAAD,EAAIC,CAAJ,KAAU,CAAC,CAAD,EAAIA,CAAA,GAAI,CAAR,CAAxB;QACA;MACF,KAAK,aAAL;QACEyoB,UAAA,GAAa,IAAb;QACAF,QAAA,GAAWA,CAACxoB,CAAD,EAAIC,CAAJ,KAAU,CAACD,CAAD,EAAIC,CAAJ,CAArB;QACAwoB,WAAA,GAAcA,CAACzoB,CAAD,EAAIC,CAAJ,KAAU,CAAC,CAAD,EAAI,CAAJ,CAAxB;QACA;MACF,KAAK,cAAL;QACEuoB,QAAA,GAAWA,CAACxoB,CAAD,EAAIC,CAAJ,KAAU,CAACD,CAAA,GAAI,CAAL,EAAQC,CAAR,CAArB;QACAwoB,WAAA,GAAcA,CAACzoB,CAAD,EAAIC,CAAJ,KAAU,CAACD,CAAA,GAAI,CAAL,EAAQ,CAAR,CAAxB;QACA;MACF,KAAK,YAAL;QACE0oB,UAAA,GAAa,IAAb;QACAF,QAAA,GAAWA,CAACxoB,CAAD,EAAIC,CAAJ,KAAU,CAAC,CAAD,EAAIA,CAAJ,CAArB;QACAwoB,WAAA,GAAcA,CAACzoB,CAAD,EAAIC,CAAJ,KAAU,CAACD,CAAD,EAAI,CAAJ,CAAxB;QACA;MACF,KAAK,YAAL;QACE2oB,YAAA,GAAe,IAAf;QACAH,QAAA,GAAWA,CAACxoB,CAAD,EAAIC,CAAJ,KAAU,CAAC,CAAD,EAAIA,CAAA,GAAI,CAAR,CAArB;QACAwoB,WAAA,GAAcA,CAACzoB,CAAD,EAAIC,CAAJ,KAAU,CAACD,CAAD,EAAIC,CAAA,GAAI,CAAR,CAAxB;QACA;IAtCJ;IAyCA,MAAM2oB,KAAA,GAAQJ,QAAA,CAASf,UAAT,EAAqBC,WAArB,CAAd;IACA,MAAMmB,aAAA,GAAgBJ,WAAA,CAAYhB,UAAZ,EAAwBC,WAAxB,CAAtB;IACA,IAAIoB,mBAAA,GAAsBT,MAAA,CAAO,GAAGQ,aAAV,CAA1B;IACA,MAAME,SAAA,GAAY38D,KAAA,CAAMm7D,MAAA,GAASuB,mBAAA,CAAoB,CAApB,CAAf,CAAlB;IACA,MAAME,SAAA,GAAY58D,KAAA,CAAMo7D,MAAA,GAASsB,mBAAA,CAAoB,CAApB,CAAf,CAAlB;IACA,IAAIG,MAAA,GAAS,CAAb;IACA,IAAIC,MAAA,GAAS,CAAb;IAEA,IAAI,CAACC,MAAD,EAASC,MAAT,IAAmB,KAAKvD,uBAAL,CACrBrlE,KAAA,CAAM6oE,SADe,EAErB7oE,KAAA,CAAM8oE,SAFe,CAAvB;IAIA,CAACH,MAAD,EAASC,MAAT,IAAmBb,SAAA,CAAUY,MAAA,GAASv0D,WAAnB,EAAgCw0D,MAAA,GAAS9X,YAAzC,CAAnB;IAEA,IAAIoX,UAAJ,EAAgB;MACd,MAAMa,OAAA,GAAUz0E,IAAA,CAAKqzC,KAAL,CAAWs/B,UAAX,EAAuBC,WAAvB,CAAhB;MACAuB,MAAA,GAASC,MAAA,GAASp0E,IAAA,CAAKE,GAAL,CAChBF,IAAA,CAAKG,GAAL,CACEH,IAAA,CAAKqzC,KAAL,CACE0gC,aAAA,CAAc,CAAd,IAAmBD,KAAA,CAAM,CAAN,CAAnB,GAA8BO,MADhC,EAEEN,aAAA,CAAc,CAAd,IAAmBD,KAAA,CAAM,CAAN,CAAnB,GAA8BQ,MAFhC,IAGIG,OAJN,EAME,IAAI9B,UANN,EAOE,IAAIC,WAPN,CADgB,EAWhBQ,QAAA,GAAWT,UAXK,EAYhBU,SAAA,GAAYT,WAZI,CAAlB;IAFc,CAAhB,MAgBO,IAAIiB,YAAJ,EAAkB;MACvBM,MAAA,GACEn0E,IAAA,CAAKE,GAAL,CACEkzE,QADF,EAEEpzE,IAAA,CAAKG,GAAL,CAAS,CAAT,EAAYH,IAAA,CAAKwX,GAAL,CAASu8D,aAAA,CAAc,CAAd,IAAmBD,KAAA,CAAM,CAAN,CAAnB,GAA8BO,MAAvC,CAAZ,CAFF,IAGI1B,UAJN;IADuB,CAAlB,MAMA;MACLyB,MAAA,GACEp0E,IAAA,CAAKE,GAAL,CACEmzE,SADF,EAEErzE,IAAA,CAAKG,GAAL,CAAS,CAAT,EAAYH,IAAA,CAAKwX,GAAL,CAASu8D,aAAA,CAAc,CAAd,IAAmBD,KAAA,CAAM,CAAN,CAAnB,GAA8BQ,MAAvC,CAAZ,CAFF,IAGI1B,WAJN;IADK;IAQP,MAAM3zB,QAAA,GAAW3nC,KAAA,CAAMq7D,UAAA,GAAawB,MAAnB,CAAjB;IACA,MAAMj1B,SAAA,GAAY5nC,KAAA,CAAMs7D,WAAA,GAAcwB,MAApB,CAAlB;IACAJ,mBAAA,GAAsBT,MAAA,CAAO,GAAGI,WAAA,CAAY10B,QAAZ,EAAsBC,SAAtB,CAAV,CAAtB;IACA,MAAMg0B,IAAA,GAAOe,SAAA,GAAYD,mBAAA,CAAoB,CAApB,CAAzB;IACA,MAAMb,IAAA,GAAOe,SAAA,GAAYF,mBAAA,CAAoB,CAApB,CAAzB;IAEA,KAAKrwE,KAAL,GAAas7C,QAAb;IACA,KAAKr7C,MAAL,GAAcs7C,SAAd;IACA,KAAK3+C,CAAL,GAAS2yE,IAAT;IACA,KAAKvyE,CAAL,GAASwyE,IAAT;IAEA,KAAK3O,OAAL,CAAa1kD,WAAA,GAAcm/B,QAA3B,EAAqCud,YAAA,GAAetd,SAApD;IACA,KAAK4d,iBAAL;EA7H+B;EAgIjC,MAAM6L,gBAANA,CAAA,EAAyB;IACvB,IAAI,KAAK,CAAAmG,aAAT,EAAyB;MACvB;IADuB;IAGzB,MAAMhF,OAAA,GAAW,KAAK,CAAAgF,aAAL,GAAsBjmE,QAAA,CAASC,aAAT,CAAuB,QAAvB,CAAvC;IACAghE,OAAA,CAAQrrD,SAAR,GAAoB,SAApB;IACA,MAAM6zC,GAAA,GAAM,MAAMjvC,gBAAA,CAAiBw6C,YAAjB,CAA8BnqD,GAA9B,CAChB,oCADgB,CAAlB;IAGAo2D,OAAA,CAAQxxD,WAAR,GAAsBg6C,GAAtB;IACAwX,OAAA,CAAQ/gE,YAAR,CAAqB,YAArB,EAAmCupD,GAAnC;IACAwX,OAAA,CAAQ7gE,QAAR,GAAmB,GAAnB;IACA6gE,OAAA,CAAQx4D,gBAAR,CAAyB,aAAzB,EAAwCmiD,2BAAxC;IACAqW,OAAA,CAAQx4D,gBAAR,CAAyB,aAAzB,EAAwC5F,KAAA,IAASA,KAAA,CAAM4iE,eAAN,EAAjD;IAEA,MAAMoG,OAAA,GAAUhpE,KAAA,IAAS;MACvB,KAAK,CAAAojE,aAAL,CAAoB7iE,MAApB,GAA6B,IAA7B;MACAP,KAAA,CAAM4O,cAAN;MACA,KAAKwgD,UAAL,CAAgB6Z,WAAhB,CAA4B,IAA5B;IAHuB,CAAzB;IAKA7K,OAAA,CAAQx4D,gBAAR,CAAyB,OAAzB,EAAkCojE,OAAlC,EAA2C;MAAEhG,OAAA,EAAS;IAAX,CAA3C;IACA5E,OAAA,CAAQx4D,gBAAR,CAAyB,SAAzB,EAAoC5F,KAAA,IAAS;MAC3C,IAAIA,KAAA,CAAMI,MAAN,KAAiBg+D,OAAjB,IAA4Bp+D,KAAA,CAAMyM,GAAN,KAAc,OAA9C,EAAuD;QACrD,KAAK,CAAA82D,sBAAL,GAA+B,IAA/B;QACAyF,OAAA,CAAQhpE,KAAR;MAFqD;IADZ,CAA7C;IAMA,KAAK,CAAAkpE,qBAAL;IACA,KAAKjlE,GAAL,CAASX,MAAT,CAAgB86D,OAAhB;IACA,IAAI,CAACzmD,gBAAA,CAAiB0sD,iBAAtB,EAAyC;MAGvC,MAAM8E,OAAA,GAAU,EAAhB;MACAxxD,gBAAA,CAAiB0sD,iBAAjB,GAAqC/vE,IAAA,CAAKG,GAAL,CACnC,GADmC,EAEnCH,IAAA,CAAKsX,KAAL,CAAWwyD,OAAA,CAAQpN,qBAAR,GAAgC/4D,KAAhC,IAAyC,IAAIkxE,OAAA,GAAU,GAAd,CAApD,CAFmC,CAArC;IAJuC;EA7BlB;EAwCzB,MAAM,CAAAD,qBAANA,CAAA,EAA+B;IAC7B,MAAM7Q,MAAA,GAAS,KAAK,CAAA+K,aAApB;IACA,IAAI,CAAC/K,MAAL,EAAa;MACX;IADW;IAGb,IAAI,CAAC,KAAK,CAAA+F,OAAN,IAAkB,CAAC,KAAK,CAAA+E,iBAA5B,EAAgD;MAC9C9K,MAAA,CAAOz6D,SAAP,CAAiB2S,MAAjB,CAAwB,MAAxB;MACA,KAAK,CAAA8yD,cAAL,EAAsB9yD,MAAtB;MACA;IAH8C;IAKhD8nD,MAAA,CAAOz6D,SAAP,CAAiBC,GAAjB,CAAqB,MAArB;IAEA8Z,gBAAA,CAAiBw6C,YAAjB,CACGnqD,GADH,CACO,yCADP,EAEGyY,IAFH,CAEQmmC,GAAA,IAAO;MACXyR,MAAA,CAAOh7D,YAAP,CAAoB,YAApB,EAAkCupD,GAAlC;IADW,CAFf;IAKA,IAAIwiB,OAAA,GAAU,KAAK,CAAA/F,cAAnB;IACA,IAAI,CAAC+F,OAAL,EAAc;MACZ,KAAK,CAAA/F,cAAL,GAAuB+F,OAAA,GAAUjsE,QAAA,CAASC,aAAT,CAAuB,MAAvB,CAAjC;MACAgsE,OAAA,CAAQr2D,SAAR,GAAoB,SAApB;MACAq2D,OAAA,CAAQ/rE,YAAR,CAAqB,MAArB,EAA6B,SAA7B;MACA,MAAMC,EAAA,GAAM8rE,OAAA,CAAQ9rE,EAAR,GAAc,oBAAmB,KAAKA,EAAzB,EAAzB;MACA+6D,MAAA,CAAOh7D,YAAP,CAAoB,kBAApB,EAAwCC,EAAxC;MAEA,MAAM+rE,qBAAA,GAAwB,GAA9B;MACAhR,MAAA,CAAOzyD,gBAAP,CAAwB,YAAxB,EAAsC,MAAM;QAC1C,KAAK,CAAA09D,qBAAL,GAA8BziE,UAAA,CAAW,MAAM;UAC7C,KAAK,CAAAyiE,qBAAL,GAA8B,IAA9B;UACA,KAAK,CAAAD,cAAL,CAAqBzlE,SAArB,CAA+BC,GAA/B,CAAmC,MAAnC;UACA,KAAKuxD,UAAL,CAAgB2N,SAAhB,CAA0Bj3D,QAA1B,CAAmC,iBAAnC,EAAsD;YACpDC,MAAA,EAAQ,IAD4C;YAEpD0sB,OAAA,EAAS;cACP3pB,IAAA,EAAM,SADC;cAEPxQ,OAAA,EAAS,KAAK0kE,UAFP;cAGPzkE,IAAA,EAAM;gBACJ0J,MAAA,EAAQ;cADJ;YAHC;UAF2C,CAAtD;QAH6C,CAAjB,EAa3BonE,qBAb2B,CAA9B;MAD0C,CAA5C;MAgBAhR,MAAA,CAAOzyD,gBAAP,CAAwB,YAAxB,EAAsC,MAAM;QAC1C,IAAI,KAAK,CAAA09D,qBAAT,EAAiC;UAC/Bt6C,YAAA,CAAa,KAAK,CAAAs6C,qBAAlB;UACA,KAAK,CAAAA,qBAAL,GAA8B,IAA9B;QAF+B;QAIjC,KAAK,CAAAD,cAAL,EAAsBzlE,SAAtB,CAAgC2S,MAAhC,CAAuC,MAAvC;MAL0C,CAA5C;IAxBY;IAgCd64D,OAAA,CAAQ3Y,SAAR,GAAoB,KAAK,CAAA0S,iBAAL,GAChB,MAAMxrD,gBAAA,CAAiBw6C,YAAjB,CAA8BnqD,GAA9B,CACJ,0CADI,CADU,GAIhB,KAAK,CAAAo2D,OAJT;IAMA,IAAI,CAACgL,OAAA,CAAQllB,UAAb,EAAyB;MACvBmU,MAAA,CAAO/0D,MAAP,CAAc8lE,OAAd;IADuB;IAIzB,MAAMjnE,OAAA,GAAU,KAAKw7D,kBAAL,EAAhB;IACAx7D,OAAA,EAAS9E,YAAT,CAAsB,kBAAtB,EAA0C+rE,OAAA,CAAQ9rE,EAAlD;EA7D6B;EAgE/B,CAAAmpE,oBAAqBzzC,OAAA,GAAU,KAA/B,EAAsC;IACpC,IAAI,CAAC,KAAK,CAAAowC,aAAV,EAA0B;MACxB;IADwB;IAG1B,IAAI,CAACpwC,OAAD,IAAY,KAAK,CAAAswC,qBAArB,EAA6C;MAC3Ct6C,YAAA,CAAa,KAAK,CAAAs6C,qBAAlB;MACA,KAAK,CAAAA,qBAAL,GAA8B,IAA9B;IAF2C;IAI7C,KAAK,CAAAF,aAAL,CAAoBliE,QAApB,GAA+B,CAAC8xB,OAAhC;EARoC;EAWtCs2C,cAAA,EAAgB;IACd,IAAI,CAAC,KAAK,CAAAlG,aAAV,EAA0B;MACxB;IADwB;IAG1B,KAAK,CAAAA,aAAL,CAAoB7iE,MAApB,GAA6B,KAA7B;IACA,KAAK,CAAA6iE,aAAL,CAAoBxiE,KAApB,CAA0B;MAAE2oE,YAAA,EAAc,KAAK,CAAAhG;IAArB,CAA1B;IACA,KAAK,CAAAA,sBAAL,GAA+B,KAA/B;EANc;EAShBiG,eAAA,EAAiB;IACf,IAAI,KAAK,CAAA/G,WAAL,IAAqB,KAAK,CAAA/S,YAA9B,EAA6C;MAC3C;IAD2C;IAG7C,KAAK,CAAA+S,WAAL,GAAoB,IAAIH,aAAJ,CAAkB,IAAlB,CAApB;IACA,KAAKr+D,GAAL,CAASX,MAAT,CAAgB,KAAK,CAAAm/D,WAAL,CAAkBv+D,MAAlB,EAAhB;EALe;EAQjBulE,kBAAA,EAAoB;IAClB,IAAI,CAAC,KAAK,CAAAhH,WAAV,EAAwB;MACtB;IADsB;IAGxB,KAAK,CAAAA,WAAL,CAAkBlyD,MAAlB;IACA,KAAK,CAAAkyD,WAAL,GAAoB,IAApB;EALkB;EAQpBiH,oBAAA,EAAsB;IACpB,OAAO,KAAKzlE,GAAL,CAAS+sD,qBAAT,EAAP;EADoB;EAItB,IAAIkN,WAAJA,CAAA,EAAkB;IAChB,OAAO;MACLE,OAAA,EAAS,KAAK,CAAAA,OADT;MAELD,UAAA,EAAY,KAAK,CAAAgF;IAFZ,CAAP;EADgB;EAUlB,IAAIjF,WAAJA,CAAgB;IAAEE,OAAF;IAAWD;EAAX,CAAhB,EAAyC;IACvC,IAAI,KAAK,CAAAC,OAAL,KAAkBA,OAAlB,IAA6B,KAAK,CAAA+E,iBAAL,KAA4BhF,UAA7D,EAAyE;MACvE;IADuE;IAGzE,KAAK,CAAAC,OAAL,GAAgBA,OAAhB;IACA,KAAK,CAAA+E,iBAAL,GAA0BhF,UAA1B;IACA,KAAK,CAAA+K,qBAAL;EANuC;EAazChlE,OAAA,EAAS;IACP,KAAKD,GAAL,GAAW9G,QAAA,CAASC,aAAT,CAAuB,KAAvB,CAAX;IACA,KAAK6G,GAAL,CAAS5G,YAAT,CAAsB,sBAAtB,EAA+C,OAAM,KAAKc,QAAX,IAAuB,GAAtE;IACA,KAAK8F,GAAL,CAAS8O,SAAT,GAAqB,KAAKjR,IAA1B;IACA,KAAKmC,GAAL,CAAS5G,YAAT,CAAsB,IAAtB,EAA4B,KAAKC,EAAjC;IACA,KAAK2G,GAAL,CAAS5G,YAAT,CAAsB,UAAtB,EAAkC,CAAlC;IAEA,KAAK46D,eAAL;IAEA,KAAKh0D,GAAL,CAAS2B,gBAAT,CAA0B,SAA1B,EAAqC,KAAK,CAAA+9D,YAA1C;IACA,KAAK1/D,GAAL,CAAS2B,gBAAT,CAA0B,UAA1B,EAAsC,KAAK,CAAAg+D,aAA3C;IAEA,MAAM,CAACxvD,WAAD,EAAc08C,YAAd,IAA8B,KAAKC,gBAAzC;IACA,IAAI,KAAKI,cAAL,GAAsB,GAAtB,KAA8B,CAAlC,EAAqC;MACnC,KAAKltD,GAAL,CAASzG,KAAT,CAAemsE,QAAf,GAA0B,GAAI,CAAC,MAAM7Y,YAAP,GAAuB18C,WAAvB,EAAoCyxD,OAArC,CAC3B,CAD2B,CAE3B,GAFF;MAGA,KAAK5hE,GAAL,CAASzG,KAAT,CAAeosE,SAAf,GAA2B,GACzB,CAAC,MAAMx1D,WAAP,GACA08C,YADA,EAEA+U,OAH4B,CAGpB,CAHoB,CAGjB,GAHb;IAJmC;IAUrC,MAAM,CAAC9+B,EAAD,EAAKC,EAAL,IAAW,KAAKsoB,qBAAL,EAAjB;IACA,KAAKt1B,SAAL,CAAe+M,EAAf,EAAmBC,EAAnB;IAEA6kB,oBAAA,CAAW,IAAX,EAAiB,KAAK5nD,GAAtB,EAA2B,CAAC,aAAD,CAA3B;IAEA,OAAO,KAAKA,GAAZ;EA5BO;EAmCT86D,YAAY/+D,KAAZ,EAAmB;IACjB,MAAM;MAAE+J;IAAF,IAAYhT,gBAAA,CAAY+S,QAA9B;IACA,IAAI9J,KAAA,CAAMq4D,MAAN,KAAiB,CAAjB,IAAuBr4D,KAAA,CAAMiK,OAAN,IAAiBF,KAA5C,EAAoD;MAElD/J,KAAA,CAAM4O,cAAN;MACA;IAHkD;IAMpD,KAAK,CAAAm1D,cAAL,GAAuB,IAAvB;IAEA,KAAK,CAAA8F,gBAAL,CAAuB7pE,KAAvB;EAViB;EAanB,CAAA6pE,iBAAkB7pE,KAAlB,EAAyB;IACvB,IAAI,CAAC,KAAK+vD,YAAV,EAAwB;MACtB;IADsB;IAIxB,MAAMgS,UAAA,GAAa,KAAK3S,UAAL,CAAgB2S,UAAhB,CAA2B,IAA3B,CAAnB;IACA,KAAK3S,UAAL,CAAgBya,gBAAhB;IAEA,IAAIhD,kBAAJ,EAAwBiD,mBAAxB;IACA,IAAI/H,UAAJ,EAAgB;MACd8E,kBAAA,GAAqB;QAAEC,OAAA,EAAS,IAAX;QAAiB9D,OAAA,EAAS;MAA1B,CAArB;MACA8G,mBAAA,GAAsBh3D,CAAA,IAAK;QACzB,MAAM,CAACi0B,EAAD,EAAKC,EAAL,IAAW,KAAKq+B,uBAAL,CAA6BvyD,CAAA,CAAE+1D,SAA/B,EAA0C/1D,CAAA,CAAEg2D,SAA5C,CAAjB;QACA,KAAK1Z,UAAL,CAAgB2a,mBAAhB,CAAoChjC,EAApC,EAAwCC,EAAxC;MAFyB,CAA3B;MAIA/kB,MAAA,CAAOrc,gBAAP,CACE,aADF,EAEEkkE,mBAFF,EAGEjD,kBAHF;IANc;IAahB,MAAMS,iBAAA,GAAoBA,CAAA,KAAM;MAC9BrlD,MAAA,CAAOzR,mBAAP,CAA2B,WAA3B,EAAwC82D,iBAAxC;MACArlD,MAAA,CAAOzR,mBAAP,CAA2B,MAA3B,EAAmC82D,iBAAnC;MACA,IAAIvF,UAAJ,EAAgB;QACd9/C,MAAA,CAAOzR,mBAAP,CACE,aADF,EAEEs5D,mBAFF,EAGEjD,kBAHF;MADc;MAQhB,KAAK,CAAA9C,cAAL,GAAuB,KAAvB;MACA,IAAI,CAAC,KAAK3U,UAAL,CAAgB4a,cAAhB,EAAL,EAAuC;QACrC,MAAM;UAAEjgE;QAAF,IAAYhT,gBAAA,CAAY+S,QAA9B;QACA,IACG9J,KAAA,CAAMiK,OAAN,IAAiB,CAACF,KAAnB,IACA/J,KAAA,CAAMyK,QADN,IAECzK,KAAA,CAAMgK,OAAN,IAAiBD,KAHpB,EAIE;UACA,KAAKxN,MAAL,CAAYulE,cAAZ,CAA2B,IAA3B;QADA,CAJF,MAMO;UACL,KAAKvlE,MAAL,CAAYslE,WAAZ,CAAwB,IAAxB;QADK;MAR8B;IAZT,CAAhC;IAyBA5/C,MAAA,CAAOrc,gBAAP,CAAwB,WAAxB,EAAqC0hE,iBAArC;IAIArlD,MAAA,CAAOrc,gBAAP,CAAwB,MAAxB,EAAgC0hE,iBAAhC;EAnDuB;EAsDzBlP,UAAA,EAAY;IAIV,IAAI,KAAK,CAAA6L,gBAAT,EAA4B;MAC1Bj7C,YAAA,CAAa,KAAK,CAAAi7C,gBAAlB;IAD0B;IAG5B,KAAK,CAAAA,gBAAL,GAAyBpjE,UAAA,CAAW,MAAM;MACxC,KAAK,CAAAojE,gBAAL,GAAyB,IAAzB;MACA,KAAK1nE,MAAL,EAAa4kE,eAAb,CAA6B,IAA7B;IAFwC,CAAjB,EAGtB,CAHsB,CAAzB;EAPU;EAaZ8I,sBAAsB1tE,MAAtB,EAA8B1H,CAA9B,EAAiCI,CAAjC,EAAoC;IAClCsH,MAAA,CAAOykE,YAAP,CAAoB,IAApB;IACA,KAAKnsE,CAAL,GAASA,CAAT;IACA,KAAKI,CAAL,GAASA,CAAT;IACA,KAAKm8D,iBAAL;EAJkC;EAUpC+B,QAAQpsB,EAAR,EAAYC,EAAZ,EAAgB;IACd,MAAMvf,KAAA,GAAQ,KAAKinC,WAAnB;IACA,MAAM,CAAC5wD,SAAD,EAAYC,UAAZ,IAA0B,KAAKu0D,cAArC;IACA,MAAM,CAACt0D,KAAD,EAAQC,KAAR,IAAiB,KAAKs0D,eAA5B;IACA,MAAMsH,MAAA,GAAS9yB,EAAA,GAAKtf,KAApB;IACA,MAAMqyC,MAAA,GAAS9yB,EAAA,GAAKvf,KAApB;IACA,MAAM5yB,CAAA,GAAI,KAAKA,CAAL,GAASiJ,SAAnB;IACA,MAAM7I,CAAA,GAAI,KAAKA,CAAL,GAAS8I,UAAnB;IACA,MAAM9F,KAAA,GAAQ,KAAKA,KAAL,GAAa6F,SAA3B;IACA,MAAM5F,MAAA,GAAS,KAAKA,MAAL,GAAc6F,UAA7B;IAEA,QAAQ,KAAKI,QAAb;MACE,KAAK,CAAL;QACE,OAAO,CACLtJ,CAAA,GAAIglE,MAAJ,GAAa77D,KADR,EAELD,UAAA,GAAa9I,CAAb,GAAiB6kE,MAAjB,GAA0B5hE,MAA1B,GAAmC+F,KAF9B,EAGLpJ,CAAA,GAAIglE,MAAJ,GAAa5hE,KAAb,GAAqB+F,KAHhB,EAILD,UAAA,GAAa9I,CAAb,GAAiB6kE,MAAjB,GAA0B77D,KAJrB,CAAP;MAMF,KAAK,EAAL;QACE,OAAO,CACLpJ,CAAA,GAAIilE,MAAJ,GAAa97D,KADR,EAELD,UAAA,GAAa9I,CAAb,GAAiB4kE,MAAjB,GAA0B57D,KAFrB,EAGLpJ,CAAA,GAAIilE,MAAJ,GAAa5hE,MAAb,GAAsB8F,KAHjB,EAILD,UAAA,GAAa9I,CAAb,GAAiB4kE,MAAjB,GAA0B5hE,KAA1B,GAAkCgG,KAJ7B,CAAP;MAMF,KAAK,GAAL;QACE,OAAO,CACLpJ,CAAA,GAAIglE,MAAJ,GAAa5hE,KAAb,GAAqB+F,KADhB,EAELD,UAAA,GAAa9I,CAAb,GAAiB6kE,MAAjB,GAA0B77D,KAFrB,EAGLpJ,CAAA,GAAIglE,MAAJ,GAAa77D,KAHR,EAILD,UAAA,GAAa9I,CAAb,GAAiB6kE,MAAjB,GAA0B5hE,MAA1B,GAAmC+F,KAJ9B,CAAP;MAMF,KAAK,GAAL;QACE,OAAO,CACLpJ,CAAA,GAAIilE,MAAJ,GAAa5hE,MAAb,GAAsB8F,KADjB,EAELD,UAAA,GAAa9I,CAAb,GAAiB4kE,MAAjB,GAA0B5hE,KAA1B,GAAkCgG,KAF7B,EAGLpJ,CAAA,GAAIilE,MAAJ,GAAa97D,KAHR,EAILD,UAAA,GAAa9I,CAAb,GAAiB4kE,MAAjB,GAA0B57D,KAJrB,CAAP;MAMF;QACE,MAAM,IAAI2e,KAAJ,CAAU,kBAAV,CAAN;IA9BJ;EAXc;EA6ChBstD,uBAAuBlyE,IAAvB,EAA6B+F,UAA7B,EAAyC;IACvC,MAAM,CAACq9B,EAAD,EAAKE,EAAL,EAASE,EAAT,EAAaC,EAAb,IAAmBzjC,IAAzB;IAEA,MAAMC,KAAA,GAAQujC,EAAA,GAAKJ,EAAnB;IACA,MAAMljC,MAAA,GAASujC,EAAA,GAAKH,EAApB;IAEA,QAAQ,KAAKn9B,QAAb;MACE,KAAK,CAAL;QACE,OAAO,CAACi9B,EAAD,EAAKr9B,UAAA,GAAa09B,EAAlB,EAAsBxjC,KAAtB,EAA6BC,MAA7B,CAAP;MACF,KAAK,EAAL;QACE,OAAO,CAACkjC,EAAD,EAAKr9B,UAAA,GAAau9B,EAAlB,EAAsBpjC,MAAtB,EAA8BD,KAA9B,CAAP;MACF,KAAK,GAAL;QACE,OAAO,CAACujC,EAAD,EAAKz9B,UAAA,GAAau9B,EAAlB,EAAsBrjC,KAAtB,EAA6BC,MAA7B,CAAP;MACF,KAAK,GAAL;QACE,OAAO,CAACsjC,EAAD,EAAKz9B,UAAA,GAAa09B,EAAlB,EAAsBvjC,MAAtB,EAA8BD,KAA9B,CAAP;MACF;QACE,MAAM,IAAI2kB,KAAJ,CAAU,kBAAV,CAAN;IAVJ;EANuC;EAuBzCwzC,UAAA,EAAY;EAMZ1P,QAAA,EAAU;IACR,OAAO,KAAP;EADQ;EAOV+O,eAAA,EAAiB;IACf,KAAK,CAAAC,YAAL,GAAqB,IAArB;EADe;EAOjBM,gBAAA,EAAkB;IAChB,KAAK,CAAAN,YAAL,GAAqB,KAArB;EADgB;EAQlBA,aAAA,EAAe;IACb,OAAO,KAAK,CAAAA,YAAZ;EADa;EASfiC,wBAAA,EAA0B;IACxB,OAAO,KAAK,CAAAqS,2BAAZ;EADwB;EAQ1B3C,iBAAA,EAAmB;IACjB,OAAO,KAAKp9D,GAAL,IAAY,CAAC,KAAKurD,eAAzB;EADiB;EASnBD,QAAA,EAAU;IACR,KAAKtrD,GAAL,EAAU2B,gBAAV,CAA2B,SAA3B,EAAsC,KAAK,CAAA+9D,YAA3C;IACA,KAAK1/D,GAAL,EAAU2B,gBAAV,CAA2B,UAA3B,EAAuC,KAAK,CAAAg+D,aAA5C;EAFQ;EAeVxqD,UAAU65C,YAAA,GAAe,KAAzB,EAAgCh6C,OAAA,GAAU,IAA1C,EAAgD;IAC9C/hB,oBAAA,CAAY,gCAAZ;EAD8C;EAahD,OAAO27D,WAAPA,CAAmBt6D,IAAnB,EAAyBgE,MAAzB,EAAiCu2D,SAAjC,EAA4C;IAC1C,MAAME,MAAA,GAAS,IAAI,KAAKriD,SAAL,CAAenV,WAAnB,CAA+B;MAC5Ce,MAD4C;MAE5Ce,EAAA,EAAIf,MAAA,CAAO+kE,SAAP,EAFwC;MAG5CxO;IAH4C,CAA/B,CAAf;IAKAE,MAAA,CAAO70D,QAAP,GAAkB5F,IAAA,CAAK4F,QAAvB;IAEA,MAAM,CAACL,SAAD,EAAYC,UAAZ,IAA0Bi1D,MAAA,CAAOV,cAAvC;IACA,MAAM,CAACz9D,CAAD,EAAII,CAAJ,EAAOgD,KAAP,EAAcC,MAAd,IAAwB86D,MAAA,CAAOkX,sBAAP,CAC5B3xE,IAAA,CAAKP,IADuB,EAE5B+F,UAF4B,CAA9B;IAIAi1D,MAAA,CAAOn+D,CAAP,GAAWA,CAAA,GAAIiJ,SAAf;IACAk1D,MAAA,CAAO/9D,CAAP,GAAWA,CAAA,GAAI8I,UAAf;IACAi1D,MAAA,CAAO/6D,KAAP,GAAeA,KAAA,GAAQ6F,SAAvB;IACAk1D,MAAA,CAAO96D,MAAP,GAAgBA,MAAA,GAAS6F,UAAzB;IAEA,OAAOi1D,MAAP;EAlB0C;EAyB5CziD,OAAA,EAAS;IACP,KAAKtM,GAAL,CAASuM,mBAAT,CAA6B,SAA7B,EAAwC,KAAK,CAAAmzD,YAA7C;IACA,KAAK1/D,GAAL,CAASuM,mBAAT,CAA6B,UAA7B,EAAyC,KAAK,CAAAozD,aAA9C;IAEA,IAAI,CAAC,KAAKljB,OAAL,EAAL,EAAqB;MAGnB,KAAK2Q,MAAL;IAHmB;IAKrB,IAAI,KAAK90D,MAAT,EAAiB;MACf,KAAKA,MAAL,CAAYgU,MAAZ,CAAmB,IAAnB;IADe,CAAjB,MAEO;MACL,KAAK6+C,UAAL,CAAgB2R,YAAhB,CAA6B,IAA7B;IADK;IAMP,KAAK,CAAAqC,aAAL,EAAqB7yD,MAArB;IACA,KAAK,CAAA6yD,aAAL,GAAsB,IAAtB;IACA,KAAK,CAAAC,cAAL,GAAuB,IAAvB;IACA,IAAI,KAAK,CAAAY,gBAAT,EAA4B;MAC1Bj7C,YAAA,CAAa,KAAK,CAAAi7C,gBAAlB;MACA,KAAK,CAAAA,gBAAL,GAAyB,IAAzB;IAF0B;IAI5B,KAAK,CAAAiB,YAAL;IACA,KAAKuE,iBAAL;EAzBO;EA+BT,IAAI5Q,WAAJA,CAAA,EAAkB;IAChB,OAAO,KAAP;EADgB;EAOlBsR,cAAA,EAAgB;IACd,IAAI,KAAKtR,WAAT,EAAsB;MACpB,KAAK,CAAAyN,cAAL;MACA,KAAK,CAAA7C,WAAL,CAAkB7lE,SAAlB,CAA4B2S,MAA5B,CAAmC,QAAnC;MACAs7C,oBAAA,CAAW,IAAX,EAAiB,KAAK5nD,GAAtB,EAA2B,CAAC,SAAD,CAA3B;IAHoB;EADR;EAYhB6tD,QAAQ9xD,KAAR,EAAe;IACb,IACE,CAAC,KAAK64D,WAAN,IACA74D,KAAA,CAAMI,MAAN,KAAiB,KAAK6D,GADtB,IAEAjE,KAAA,CAAMyM,GAAN,KAAc,OAHhB,EAIE;MACA;IADA;IAGF,KAAK2iD,UAAL,CAAgByS,WAAhB,CAA4B,IAA5B;IACA,KAAK,CAAA6B,eAAL,GAAwB;MACtBqD,MAAA,EAAQ,KAAKlyE,CADS;MAEtBmyE,MAAA,EAAQ,KAAK/xE,CAFS;MAGtBgyE,UAAA,EAAY,KAAKhvE,KAHK;MAItBivE,WAAA,EAAa,KAAKhvE;IAJI,CAAxB;IAMA,MAAMsZ,QAAA,GAAW,KAAK,CAAAiyD,WAAL,CAAkBjyD,QAAnC;IACA,IAAI,CAAC,KAAK,CAAA0xD,cAAV,EAA2B;MACzB,KAAK,CAAAA,cAAL,GAAuB79D,KAAA,CAAMmS,IAAN,CAAWhG,QAAX,CAAvB;MACA,MAAM44D,mBAAA,GAAsB,KAAK,CAAAC,cAAL,CAAqBl4D,IAArB,CAA0B,IAA1B,CAA5B;MACA,MAAMm4D,gBAAA,GAAmB,KAAK,CAAAC,WAAL,CAAkBp4D,IAAlB,CAAuB,IAAvB,CAAzB;MACA,WAAWlO,GAAX,IAAkB,KAAK,CAAAi/D,cAAvB,EAAwC;QACtC,MAAMphE,IAAA,GAAOmC,GAAA,CAAIY,YAAJ,CAAiB,mBAAjB,CAAb;QACAZ,GAAA,CAAI5G,YAAJ,CAAiB,MAAjB,EAAyB,YAAzB;QACA4G,GAAA,CAAI2B,gBAAJ,CAAqB,SAArB,EAAgCwkE,mBAAhC;QACAnmE,GAAA,CAAI2B,gBAAJ,CAAqB,MAArB,EAA6B0kE,gBAA7B;QACArmE,GAAA,CAAI2B,gBAAJ,CAAqB,OAArB,EAA8B,KAAK,CAAA4kE,YAAL,CAAmBr4D,IAAnB,CAAwB,IAAxB,EAA8BrQ,IAA9B,CAA9B;QACA6V,gBAAA,CAAiBw6C,YAAjB,CACGnqD,GADH,CACQ,8BAA6BlG,IAA9B,EADP,EAEG2e,IAFH,CAEQmmC,GAAA,IAAO3iD,GAAA,CAAI5G,YAAJ,CAAiB,YAAjB,EAA+BupD,GAA/B,CAFf;MANsC;IAJf;IAkB3B,MAAM4S,KAAA,GAAQ,KAAK,CAAA0J,cAAL,CAAqB,CAArB,CAAd;IACA,IAAIuH,aAAA,GAAgB,CAApB;IACA,WAAWxmE,GAAX,IAAkBuN,QAAlB,EAA4B;MAC1B,IAAIvN,GAAA,KAAQu1D,KAAZ,EAAmB;QACjB;MADiB;MAGnBiR,aAAA;IAJ0B;IAM5B,MAAMC,iBAAA,GACD,OAAM,KAAKvsE,QAAX,GAAsB,KAAKgzD,cAA3B,IAA6C,GAA/C,GAAsD,EAAvD,IACC,KAAK,CAAA+R,cAAL,CAAqBpgE,MAArB,GAA8B,CAA9B,CAFH;IAIA,IAAI4nE,iBAAA,KAAsBD,aAA1B,EAAyC;MAGvC,IAAIC,iBAAA,GAAoBD,aAAxB,EAAuC;QACrC,KAAK,IAAIv5D,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIu5D,aAAA,GAAgBC,iBAApC,EAAuDx5D,CAAA,EAAvD,EAA4D;UAC1D,KAAK,CAAAuyD,WAAL,CAAkBngE,MAAlB,CAAyB,KAAK,CAAAmgE,WAAL,CAAkBhtD,UAA3C;QAD0D;MADvB,CAAvC,MAIO,IAAIi0D,iBAAA,GAAoBD,aAAxB,EAAuC;QAC5C,KAAK,IAAIv5D,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIw5D,iBAAA,GAAoBD,aAAxC,EAAuDv5D,CAAA,EAAvD,EAA4D;UAC1D,KAAK,CAAAuyD,WAAL,CAAkBhtD,UAAlB,CAA6BhF,MAA7B,CAAoC,KAAK,CAAAgyD,WAAL,CAAkBh0D,SAAtD;QAD0D;MADhB;MAM9C,IAAIyB,CAAA,GAAI,CAAR;MACA,WAAWy5D,KAAX,IAAoBn5D,QAApB,EAA8B;QAC5B,MAAMvN,GAAA,GAAM,KAAK,CAAAi/D,cAAL,CAAqBhyD,CAAA,EAArB,CAAZ;QACA,MAAMpP,IAAA,GAAOmC,GAAA,CAAIY,YAAJ,CAAiB,mBAAjB,CAAb;QACA8S,gBAAA,CAAiBw6C,YAAjB,CACGnqD,GADH,CACQ,8BAA6BlG,IAA9B,EADP,EAEG2e,IAFH,CAEQmmC,GAAA,IAAO+jB,KAAA,CAAMttE,YAAN,CAAmB,YAAnB,EAAiCupD,GAAjC,CAFf;MAH4B;IAdS;IAuBzC,KAAK,CAAAgkB,kBAAL,CAAyB,CAAzB;IACA,KAAK,CAAA5G,2BAAL,GAAoC,IAApC;IACA,KAAK,CAAAP,WAAL,CAAkBhtD,UAAlB,CAA6B7V,KAA7B,CAAmC;MAAE2oE,YAAA,EAAc;IAAhB,CAAnC;IACAvpE,KAAA,CAAM4O,cAAN;IACA5O,KAAA,CAAM6qE,wBAAN;EAzEa;EA4Ef,CAAAR,eAAgBrqE,KAAhB,EAAuB;IACrB2X,gBAAA,CAAiB2sD,uBAAjB,CAAyChd,IAAzC,CAA8C,IAA9C,EAAoDtnD,KAApD;EADqB;EAIvB,CAAAuqE,YAAavqE,KAAb,EAAoB;IAClB,IACE,KAAK,CAAAgkE,2BAAL,IACAhkE,KAAA,CAAM4K,aAAN,EAAqBs5C,UAArB,KAAoC,KAAK,CAAAuf,WAF3C,EAGE;MACA,KAAK,CAAAyB,YAAL;IADA;EAJgB;EASpB,CAAAsF,aAAc1oE,IAAd,EAAoB;IAClB,KAAK,CAAAgiE,kBAAL,GAA2B,KAAK,CAAAE,2BAAL,GAAoCliE,IAApC,GAA2C,EAAtE;EADkB;EAIpB,CAAA8oE,mBAAoB7hE,KAApB,EAA2B;IACzB,IAAI,CAAC,KAAK,CAAAm6D,cAAV,EAA2B;MACzB;IADyB;IAG3B,WAAWj/D,GAAX,IAAkB,KAAK,CAAAi/D,cAAvB,EAAwC;MACtCj/D,GAAA,CAAI1G,QAAJ,GAAewL,KAAf;IADsC;EAJf;EAS3By7D,oBAAoB3vE,CAApB,EAAuBI,CAAvB,EAA0B;IACxB,IAAI,CAAC,KAAK,CAAA+uE,2BAAV,EAAwC;MACtC;IADsC;IAGxC,KAAK,CAAA2C,kBAAL,CAAyB,KAAK,CAAA7C,kBAA9B,EAAmD;MACjD+E,SAAA,EAAWh0E,CADsC;MAEjDi0E,SAAA,EAAW7zE;IAFsC,CAAnD;EAJwB;EAU1B,CAAAiwE,aAAA,EAAgB;IACd,KAAK,CAAAlB,2BAAL,GAAoC,KAApC;IACA,KAAK,CAAA4G,kBAAL,CAAyB,CAAC,CAA1B;IACA,IAAI,KAAK,CAAAlH,eAAT,EAA2B;MACzB,MAAM;QAAEqD,MAAF;QAAUC,MAAV;QAAkBC,UAAlB;QAA8BC;MAA9B,IAA8C,KAAK,CAAAxD,eAAzD;MACA,KAAK,CAAA6D,oBAAL,CAA2BR,MAA3B,EAAmCC,MAAnC,EAA2CC,UAA3C,EAAuDC,WAAvD;MACA,KAAK,CAAAxD,eAAL,GAAwB,IAAxB;IAHyB;EAHb;EAUhBe,0BAAA,EAA4B;IAC1B,KAAK,CAAAS,YAAL;IACA,KAAKjhE,GAAL,CAASrD,KAAT;EAF0B;EAQ5Bs3D,OAAA,EAAS;IACP,KAAKiS,aAAL;IACA,KAAKlmE,GAAL,EAAUrG,SAAV,CAAoBC,GAApB,CAAwB,gBAAxB;IACA,KAAK2rE,cAAL;IACA,KAAK,CAAA/G,WAAL,EAAmB39D,IAAnB;EAJO;EAUTk9D,SAAA,EAAW;IACT,KAAK,CAAAyB,WAAL,EAAmB7lE,SAAnB,CAA6BC,GAA7B,CAAiC,QAAjC;IACA,KAAKoG,GAAL,EAAUrG,SAAV,CAAoB2S,MAApB,CAA2B,gBAA3B;IACA,IAAI,KAAKtM,GAAL,EAAUs0D,QAAV,CAAmBp7D,QAAA,CAAS4Q,aAA5B,CAAJ,EAAgD;MAG9C,KAAKqhD,UAAL,CAAgB6B,YAAhB,CAA6BhtD,GAA7B,CAAiCrD,KAAjC;IAH8C;IAKhD,KAAK,CAAA6hE,WAAL,EAAmBz9D,IAAnB;EARS;EAgBXmpD,aAAarlD,IAAb,EAAmBC,KAAnB,EAA0B;EAM1BgpD,eAAA,EAAiB;IACf,IAAI,KAAK,CAAAqR,aAAT,EAAyB;MACvB,KAAK,CAAAA,aAAL,CAAoB7iE,MAApB,GAA6B,IAA7B;IADuB;EADV;EAUjByxD,cAAA,EAAgB;IACd,IAAI,KAAK,CAAAoR,aAAT,EAAyB;MACvB,KAAK,CAAAA,aAAL,CAAoB7iE,MAApB,GAA6B,KAA7B;IADuB;EADX;EAShBqxD,gBAAA,EAAkB;EAKlB+L,mBAAA,EAAqB;IACnB,OAAO,IAAP;EADmB;EAQrB,IAAI/K,UAAJA,CAAA,EAAiB;IACf,OAAO,KAAK3uD,GAAZ;EADe;EAQjB,IAAIgsD,SAAJA,CAAA,EAAgB;IACd,OAAO,KAAK,CAAAA,SAAZ;EADc;EAQhB,IAAIA,SAAJA,CAAclnD,KAAd,EAAqB;IACnB,KAAK,CAAAknD,SAAL,GAAkBlnD,KAAlB;IACA,IAAI,CAAC,KAAKxM,MAAV,EAAkB;MAChB;IADgB;IAGlB,IAAIwM,KAAJ,EAAW;MACT,KAAKxM,MAAL,CAAYslE,WAAZ,CAAwB,IAAxB;MACA,KAAKtlE,MAAL,CAAYgkE,eAAZ,CAA4B,IAA5B;IAFS,CAAX,MAGO;MACL,KAAKhkE,MAAL,CAAYgkE,eAAZ,CAA4B,IAA5B;IADK;EARY;EAkBrBxH,eAAe9gE,KAAf,EAAsBC,MAAtB,EAA8B;IAC5B,KAAK,CAAAsrE,eAAL,GAAwB,IAAxB;IACA,MAAMsH,WAAA,GAAc7yE,KAAA,GAAQC,MAA5B;IACA,MAAM;MAAEsF;IAAF,IAAY,KAAKyG,GAAvB;IACAzG,KAAA,CAAMstE,WAAN,GAAoBA,WAApB;IACAttE,KAAA,CAAMtF,MAAN,GAAe,MAAf;EAL4B;EAQ9B,WAAWuiE,QAAXA,CAAA,EAAsB;IACpB,OAAO,EAAP;EADoB;AA5lDD;AAkmDvB,MAAMsK,UAAN,SAAyBptD,gBAAzB,CAA0C;EACxCnc,YAAYmb,MAAZ,EAAoB;IAClB,MAAMA,MAAN;IACA,KAAKy7C,mBAAL,GAA2Bz7C,MAAA,CAAOy7C,mBAAlC;IACA,KAAKW,OAAL,GAAe,IAAf;EAHkB;EAMpB35C,UAAA,EAAY;IACV,OAAO;MACL9b,EAAA,EAAI,KAAK80D,mBADJ;MAELW,OAAA,EAAS,IAFJ;MAGLpsC,SAAA,EAAW,KAAKA;IAHX,CAAP;EADU;AAP4B;;;;;;;;;;;AC3nD1C,MAAMokD,QAAN,CAAe;EACb,CAAAngC,GAAA;EAEA,CAAAogC,aAAA,GAAiB,EAAjB;EAEA,CAAAC,SAAA,GAAa,EAAb;EAcAzvE,YAAY0vE,KAAZ,EAAmBzsE,WAAA,GAAc,CAAjC,EAAoC0sE,WAAA,GAAc,CAAlD,EAAqDC,KAAA,GAAQ,IAA7D,EAAmE;IACjE,IAAI/gC,IAAA,GAAOc,QAAX;IACA,IAAIb,IAAA,GAAO,CAACa,QAAZ;IACA,IAAI9O,IAAA,GAAO8O,QAAX;IACA,IAAI7O,IAAA,GAAO,CAAC6O,QAAZ;IAIA,MAAMkgC,gBAAA,GAAmB,CAAzB;IACA,MAAMC,OAAA,GAAU,MAAM,CAACD,gBAAvB;IAGA,WAAW;MAAEx2E,CAAF;MAAKI,CAAL;MAAQgD,KAAR;MAAeC;IAAf,CAAX,IAAsCgzE,KAAtC,EAA6C;MAC3C,MAAM9vC,EAAA,GAAK9mC,IAAA,CAAKC,KAAL,CAAY,CAAAM,CAAA,GAAI4J,WAAJ,IAAmB6sE,OAA/B,IAA0CA,OAArD;MACA,MAAM9vC,EAAA,GAAKlnC,IAAA,CAAKmlC,IAAL,CAAW,CAAA5kC,CAAA,GAAIoD,KAAJ,GAAYwG,WAAZ,IAA2B6sE,OAAtC,IAAiDA,OAA5D;MACA,MAAMhwC,EAAA,GAAKhnC,IAAA,CAAKC,KAAL,CAAY,CAAAU,CAAA,GAAIwJ,WAAJ,IAAmB6sE,OAA/B,IAA0CA,OAArD;MACA,MAAM7vC,EAAA,GAAKnnC,IAAA,CAAKmlC,IAAL,CAAW,CAAAxkC,CAAA,GAAIiD,MAAJ,GAAauG,WAAb,IAA4B6sE,OAAvC,IAAkDA,OAA7D;MACA,MAAM/rE,IAAA,GAAO,CAAC67B,EAAD,EAAKE,EAAL,EAASG,EAAT,EAAa,IAAb,CAAb;MACA,MAAM8vC,KAAA,GAAQ,CAAC/vC,EAAD,EAAKF,EAAL,EAASG,EAAT,EAAa,KAAb,CAAd;MACA,KAAK,CAAAuvC,aAAL,CAAoBtnE,IAApB,CAAyBnE,IAAzB,EAA+BgsE,KAA/B;MAEAlhC,IAAA,GAAO/1C,IAAA,CAAKG,GAAL,CAAS41C,IAAT,EAAejP,EAAf,CAAP;MACAkP,IAAA,GAAOh2C,IAAA,CAAKE,GAAL,CAAS81C,IAAT,EAAe9O,EAAf,CAAP;MACAa,IAAA,GAAO/nC,IAAA,CAAKG,GAAL,CAAS4nC,IAAT,EAAef,EAAf,CAAP;MACAgB,IAAA,GAAOhoC,IAAA,CAAKE,GAAL,CAAS8nC,IAAT,EAAeb,EAAf,CAAP;IAZ2C;IAe7C,MAAMmF,SAAA,GAAY0J,IAAA,GAAOD,IAAP,GAAc,IAAI8gC,WAApC;IACA,MAAMtqC,UAAA,GAAavE,IAAA,GAAOD,IAAP,GAAc,IAAI8uC,WAArC;IACA,MAAMK,WAAA,GAAcnhC,IAAA,GAAO8gC,WAA3B;IACA,MAAMM,WAAA,GAAcpvC,IAAA,GAAO8uC,WAA3B;IACA,MAAMO,QAAA,GAAW,KAAK,CAAAV,aAAL,CAAoBhU,EAApB,CAAuBoU,KAAA,GAAQ,CAAC,CAAT,GAAa,CAAC,CAArC,CAAjB;IACA,MAAMjU,SAAA,GAAY,CAACuU,QAAA,CAAS,CAAT,CAAD,EAAcA,QAAA,CAAS,CAAT,CAAd,CAAlB;IAGA,WAAWC,IAAX,IAAmB,KAAK,CAAAX,aAAxB,EAAwC;MACtC,MAAM,CAACn2E,CAAD,EAAIymC,EAAJ,EAAQG,EAAR,IAAckwC,IAApB;MACAA,IAAA,CAAK,CAAL,IAAW,CAAA92E,CAAA,GAAI22E,WAAJ,IAAmB5qC,SAA9B;MACA+qC,IAAA,CAAK,CAAL,IAAW,CAAArwC,EAAA,GAAKmwC,WAAL,IAAoB5qC,UAA/B;MACA8qC,IAAA,CAAK,CAAL,IAAW,CAAAlwC,EAAA,GAAKgwC,WAAL,IAAoB5qC,UAA/B;IAJsC;IAOxC,KAAK,CAAA+J,GAAL,GAAY;MACV/1C,CAAA,EAAG22E,WADO;MAEVv2E,CAAA,EAAGw2E,WAFO;MAGVxzE,KAAA,EAAO2oC,SAHG;MAIV1oC,MAAA,EAAQ2oC,UAJE;MAKVs2B;IALU,CAAZ;EA1CiE;EAmDnEyU,YAAA,EAAc;IAGZ,KAAK,CAAAZ,aAAL,CAAoBa,IAApB,CACE,CAACtmC,CAAD,EAAI3vC,CAAJ,KAAU2vC,CAAA,CAAE,CAAF,IAAO3vC,CAAA,CAAE,CAAF,CAAP,IAAe2vC,CAAA,CAAE,CAAF,IAAO3vC,CAAA,CAAE,CAAF,CAAtB,IAA8B2vC,CAAA,CAAE,CAAF,IAAO3vC,CAAA,CAAE,CAAF,CADjD;IAYA,MAAMk2E,oBAAA,GAAuB,EAA7B;IACA,WAAWH,IAAX,IAAmB,KAAK,CAAAX,aAAxB,EAAwC;MACtC,IAAIW,IAAA,CAAK,CAAL,CAAJ,EAAa;QAEXG,oBAAA,CAAqBpoE,IAArB,CAA0B,GAAG,KAAK,CAAAqoE,SAAL,CAAgBJ,IAAhB,CAA7B;QACA,KAAK,CAAAr6D,MAAL,CAAaq6D,IAAb;MAHW,CAAb,MAIO;QAEL,KAAK,CAAAp7D,MAAL,CAAao7D,IAAb;QACAG,oBAAA,CAAqBpoE,IAArB,CAA0B,GAAG,KAAK,CAAAqoE,SAAL,CAAgBJ,IAAhB,CAA7B;MAHK;IAL+B;IAWxC,OAAO,KAAK,CAAAC,WAAL,CAAkBE,oBAAlB,CAAP;EA3BY;EA8Bd,CAAAF,YAAaE,oBAAb,EAAmC;IACjC,MAAME,KAAA,GAAQ,EAAd;IACA,MAAMC,QAAA,GAAW,IAAIzjE,GAAJ,EAAjB;IAEA,WAAWmjE,IAAX,IAAmBG,oBAAnB,EAAyC;MACvC,MAAM,CAACj3E,CAAD,EAAIymC,EAAJ,EAAQG,EAAR,IAAckwC,IAApB;MACAK,KAAA,CAAMtoE,IAAN,CAAW,CAAC7O,CAAD,EAAIymC,EAAJ,EAAQqwC,IAAR,CAAX,EAA0B,CAAC92E,CAAD,EAAI4mC,EAAJ,EAAQkwC,IAAR,CAA1B;IAFuC;IAUzCK,KAAA,CAAMH,IAAN,CAAW,CAACtmC,CAAD,EAAI3vC,CAAJ,KAAU2vC,CAAA,CAAE,CAAF,IAAO3vC,CAAA,CAAE,CAAF,CAAP,IAAe2vC,CAAA,CAAE,CAAF,IAAO3vC,CAAA,CAAE,CAAF,CAA3C;IACA,KAAK,IAAIsb,CAAA,GAAI,CAAR,EAAWwD,EAAA,GAAKs3D,KAAA,CAAMlpE,MAAtB,EAA8BoO,CAAA,GAAIwD,EAAvC,EAA2CxD,CAAA,IAAK,CAAhD,EAAmD;MACjD,MAAMg7D,KAAA,GAAQF,KAAA,CAAM96D,CAAN,EAAS,CAAT,CAAd;MACA,MAAMi7D,KAAA,GAAQH,KAAA,CAAM96D,CAAA,GAAI,CAAV,EAAa,CAAb,CAAd;MACAg7D,KAAA,CAAMxoE,IAAN,CAAWyoE,KAAX;MACAA,KAAA,CAAMzoE,IAAN,CAAWwoE,KAAX;MACAD,QAAA,CAASpuE,GAAT,CAAaquE,KAAb;MACAD,QAAA,CAASpuE,GAAT,CAAasuE,KAAb;IANiD;IAQnD,MAAM5hB,QAAA,GAAW,EAAjB;IACA,IAAI6hB,OAAJ;IAEA,OAAOH,QAAA,CAASp8D,IAAT,GAAgB,CAAvB,EAA0B;MACxB,MAAM87D,IAAA,GAAOM,QAAA,CAASvjE,MAAT,GAAkB2jE,IAAlB,GAAyBtjE,KAAtC;MACA,IAAI,CAAClU,CAAD,EAAIymC,EAAJ,EAAQG,EAAR,EAAYywC,KAAZ,EAAmBC,KAAnB,IAA4BR,IAAhC;MACAM,QAAA,CAAS3zD,MAAT,CAAgBqzD,IAAhB;MACA,IAAIW,UAAA,GAAaz3E,CAAjB;MACA,IAAI03E,UAAA,GAAajxC,EAAjB;MAEA8wC,OAAA,GAAU,CAACv3E,CAAD,EAAI4mC,EAAJ,CAAV;MACA8uB,QAAA,CAAS7mD,IAAT,CAAc0oE,OAAd;MAEA,OAAO,IAAP,EAAa;QACX,IAAIt5D,CAAJ;QACA,IAAIm5D,QAAA,CAAStnE,GAAT,CAAaunE,KAAb,CAAJ,EAAyB;UACvBp5D,CAAA,GAAIo5D,KAAJ;QADuB,CAAzB,MAEO,IAAID,QAAA,CAAStnE,GAAT,CAAawnE,KAAb,CAAJ,EAAyB;UAC9Br5D,CAAA,GAAIq5D,KAAJ;QAD8B,CAAzB,MAEA;UACL;QADK;QAIPF,QAAA,CAAS3zD,MAAT,CAAgBxF,CAAhB;QACA,CAACje,CAAD,EAAIymC,EAAJ,EAAQG,EAAR,EAAYywC,KAAZ,EAAmBC,KAAnB,IAA4Br5D,CAA5B;QAEA,IAAIw5D,UAAA,KAAez3E,CAAnB,EAAsB;UACpBu3E,OAAA,CAAQ1oE,IAAR,CAAa4oE,UAAb,EAAyBC,UAAzB,EAAqC13E,CAArC,EAAwC03E,UAAA,KAAejxC,EAAf,GAAoBA,EAApB,GAAyBG,EAAjE;UACA6wC,UAAA,GAAaz3E,CAAb;QAFoB;QAItB03E,UAAA,GAAaA,UAAA,KAAejxC,EAAf,GAAoBG,EAApB,GAAyBH,EAAtC;MAjBW;MAmBb8wC,OAAA,CAAQ1oE,IAAR,CAAa4oE,UAAb,EAAyBC,UAAzB;IA7BwB;IA+B1B,OAAO;MAAEhiB,QAAF;MAAY3f,GAAA,EAAK,KAAK,CAAAA;IAAtB,CAAP;EAzDiC;EA4DnC,CAAA4hC,aAAcv3E,CAAd,EAAiB;IACf,MAAMw3E,KAAA,GAAQ,KAAK,CAAAxB,SAAnB;IACA,IAAI1nB,KAAA,GAAQ,CAAZ;IACA,IAAIv/B,GAAA,GAAMyoD,KAAA,CAAM3pE,MAAN,GAAe,CAAzB;IAEA,OAAOygD,KAAA,IAASv/B,GAAhB,EAAqB;MACnB,MAAM0oD,MAAA,GAAUnpB,KAAA,GAAQv/B,GAAT,IAAiB,CAAhC;MACA,MAAMsX,EAAA,GAAKmxC,KAAA,CAAMC,MAAN,EAAc,CAAd,CAAX;MACA,IAAIpxC,EAAA,KAAOrmC,CAAX,EAAc;QACZ,OAAOy3E,MAAP;MADY;MAGd,IAAIpxC,EAAA,GAAKrmC,CAAT,EAAY;QACVsuD,KAAA,GAAQmpB,MAAA,GAAS,CAAjB;MADU,CAAZ,MAEO;QACL1oD,GAAA,GAAM0oD,MAAA,GAAS,CAAf;MADK;IARY;IAYrB,OAAO1oD,GAAA,GAAM,CAAb;EAjBe;EAoBjB,CAAA1S,OAAQ,GAAGgqB,EAAH,EAAOG,EAAP,CAAR,EAAoB;IAClB,MAAMxqB,KAAA,GAAQ,KAAK,CAAAu7D,YAAL,CAAmBlxC,EAAnB,CAAd;IACA,KAAK,CAAA2vC,SAAL,CAAgB0B,MAAhB,CAAuB17D,KAAvB,EAA8B,CAA9B,EAAiC,CAACqqB,EAAD,EAAKG,EAAL,CAAjC;EAFkB;EAKpB,CAAAlrB,OAAQ,GAAG+qB,EAAH,EAAOG,EAAP,CAAR,EAAoB;IAClB,MAAMxqB,KAAA,GAAQ,KAAK,CAAAu7D,YAAL,CAAmBlxC,EAAnB,CAAd;IACA,KAAK,IAAIpqB,CAAA,GAAID,KAAR,EAAeC,CAAA,GAAI,KAAK,CAAA+5D,SAAL,CAAgBnoE,MAAxC,EAAgDoO,CAAA,EAAhD,EAAqD;MACnD,MAAM,CAACqyC,KAAD,EAAQv/B,GAAR,IAAe,KAAK,CAAAinD,SAAL,CAAgB/5D,CAAhB,CAArB;MACA,IAAIqyC,KAAA,KAAUjoB,EAAd,EAAkB;QAChB;MADgB;MAGlB,IAAIioB,KAAA,KAAUjoB,EAAV,IAAgBtX,GAAA,KAAQyX,EAA5B,EAAgC;QAC9B,KAAK,CAAAwvC,SAAL,CAAgB0B,MAAhB,CAAuBz7D,CAAvB,EAA0B,CAA1B;QACA;MAF8B;IALmB;IAUrD,KAAK,IAAIA,CAAA,GAAID,KAAA,GAAQ,CAAhB,EAAmBC,CAAA,IAAK,CAA7B,EAAgCA,CAAA,EAAhC,EAAqC;MACnC,MAAM,CAACqyC,KAAD,EAAQv/B,GAAR,IAAe,KAAK,CAAAinD,SAAL,CAAgB/5D,CAAhB,CAArB;MACA,IAAIqyC,KAAA,KAAUjoB,EAAd,EAAkB;QAChB;MADgB;MAGlB,IAAIioB,KAAA,KAAUjoB,EAAV,IAAgBtX,GAAA,KAAQyX,EAA5B,EAAgC;QAC9B,KAAK,CAAAwvC,SAAL,CAAgB0B,MAAhB,CAAuBz7D,CAAvB,EAA0B,CAA1B;QACA;MAF8B;IALG;EAZnB;EAwBpB,CAAA66D,UAAWJ,IAAX,EAAiB;IACf,MAAM,CAAC92E,CAAD,EAAIymC,EAAJ,EAAQG,EAAR,IAAckwC,IAApB;IACA,MAAMl4C,OAAA,GAAU,CAAC,CAAC5+B,CAAD,EAAIymC,EAAJ,EAAQG,EAAR,CAAD,CAAhB;IACA,MAAMxqB,KAAA,GAAQ,KAAK,CAAAu7D,YAAL,CAAmB/wC,EAAnB,CAAd;IACA,KAAK,IAAIvqB,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAID,KAApB,EAA2BC,CAAA,EAA3B,EAAgC;MAC9B,MAAM,CAACqyC,KAAD,EAAQv/B,GAAR,IAAe,KAAK,CAAAinD,SAAL,CAAgB/5D,CAAhB,CAArB;MACA,KAAK,IAAI+rB,CAAA,GAAI,CAAR,EAAW0F,EAAA,GAAKlP,OAAA,CAAQ3wB,MAAxB,EAAgCm6B,CAAA,GAAI0F,EAAzC,EAA6C1F,CAAA,EAA7C,EAAkD;QAChD,MAAM,GAAGtB,EAAH,EAAOixC,EAAP,IAAan5C,OAAA,CAAQwJ,CAAR,CAAnB;QACA,IAAIjZ,GAAA,IAAO2X,EAAP,IAAaixC,EAAA,IAAMrpB,KAAvB,EAA8B;UAG5B;QAH4B;QAK9B,IAAI5nB,EAAA,IAAM4nB,KAAV,EAAiB;UACf,IAAIqpB,EAAA,GAAK5oD,GAAT,EAAc;YACZyP,OAAA,CAAQwJ,CAAR,EAAW,CAAX,IAAgBjZ,GAAhB;UADY,CAAd,MAEO;YACL,IAAI2e,EAAA,KAAO,CAAX,EAAc;cACZ,OAAO,EAAP;YADY;YAIdlP,OAAA,CAAQk5C,MAAR,CAAe1vC,CAAf,EAAkB,CAAlB;YACAA,CAAA;YACA0F,EAAA;UAPK;UASP;QAZe;QAcjBlP,OAAA,CAAQwJ,CAAR,EAAW,CAAX,IAAgBsmB,KAAhB;QACA,IAAIqpB,EAAA,GAAK5oD,GAAT,EAAc;UACZyP,OAAA,CAAQ/vB,IAAR,CAAa,CAAC7O,CAAD,EAAImvB,GAAJ,EAAS4oD,EAAT,CAAb;QADY;MAtBkC;IAFpB;IA6BhC,OAAOn5C,OAAP;EAjCe;AAjNJ;;;;;;;;;;;;;;;;;;ACIf;AAUA;AAOA,SAASo4B,UAATA,CAAoBrzC,GAApB,EAAyBrW,OAAzB,EAAkC2I,KAAlC,EAAyC;EACvC,WAAWhJ,IAAX,IAAmBgJ,KAAnB,EAA0B;IACxB3I,OAAA,CAAQyD,gBAAR,CAAyB9D,IAAzB,EAA+B0W,GAAA,CAAI1W,IAAJ,EAAUqQ,IAAV,CAAeqG,GAAf,CAA/B;EADwB;AADa;AAWzC,SAASk7C,YAATA,CAAsBlJ,OAAtB,EAA+B;EAC7B,OAAOl2D,IAAA,CAAKsX,KAAL,CAAWtX,IAAA,CAAKG,GAAL,CAAS,GAAT,EAAcH,IAAA,CAAKE,GAAL,CAAS,CAAT,EAAY,MAAMg2D,OAAlB,CAAd,CAAX,EACJ91D,QADI,CACK,EADL,EAEJC,QAFI,CAEK,CAFL,EAEQ,GAFR,CAAP;AAD6B;AAS/B,MAAMo4E,SAAN,CAAgB;EACd,CAAAzvE,EAAA,GAAM,CAAN;EAMAikE,MAAA,EAAQ;IACN,OAAO,GAAGsL,mEAAH,GAA4B,KAAK,CAAAvvE,EAAL,EAA5B,EAAP;EADM;AAPM;AAoBhB,MAAM0vE,YAAN,CAAmB;EACjB,CAAAC,MAAA,GAAUH,wDAAA,EAAV;EAEA,CAAAxvE,EAAA,GAAM,CAAN;EAEA,CAAA6oC,KAAA,GAAS,IAAT;EAEA,WAAW+mC,mBAAXA,CAAA,EAAiC;IAM/B,MAAM9pE,GAAA,GAAO,sKAAb;IACA,MAAMiU,MAAA,GAAS,IAAIomD,eAAJ,CAAoB,CAApB,EAAuB,CAAvB,CAAf;IACA,MAAM7lC,GAAA,GAAMvgB,MAAA,CAAOof,UAAP,CAAkB,IAAlB,CAAZ;IACA,MAAMrtB,KAAA,GAAQ,IAAI+jE,KAAJ,EAAd;IACA/jE,KAAA,CAAMC,GAAN,GAAYjG,GAAZ;IACA,MAAMod,OAAA,GAAUpX,KAAA,CAAMgkE,MAAN,GAAe3sD,IAAf,CAAoB,MAAM;MACxCmX,GAAA,CAAI8P,SAAJ,CAAct+B,KAAd,EAAqB,CAArB,EAAwB,CAAxB,EAA2B,CAA3B,EAA8B,CAA9B,EAAiC,CAAjC,EAAoC,CAApC,EAAuC,CAAvC,EAA0C,CAA1C;MACA,OAAO,IAAI+4B,WAAJ,CAAgBvK,GAAA,CAAIkX,YAAJ,CAAiB,CAAjB,EAAoB,CAApB,EAAuB,CAAvB,EAA0B,CAA1B,EAA6Bv2C,IAA7B,CAAkCypB,MAAlD,EAA0D,CAA1D,MAAiE,CAAxE;IAFwC,CAA1B,CAAhB;IAKA,OAAO/qB,uDAAA,CAAO,IAAP,EAAa,qBAAb,EAAoCupB,OAApC,CAAP;EAhB+B;EAmBjC,MAAM,CAAAxY,GAANA,CAAWyE,GAAX,EAAgB4gE,OAAhB,EAAyB;IACvB,KAAK,CAAAlnC,KAAL,KAAgB,IAAIp+B,GAAJ,EAAhB;IACA,IAAIxP,IAAA,GAAO,KAAK,CAAA4tC,KAAL,CAAYn+B,GAAZ,CAAgByE,GAAhB,CAAX;IACA,IAAIlU,IAAA,KAAS,IAAb,EAAmB;MAEjB,OAAO,IAAP;IAFiB;IAInB,IAAIA,IAAA,EAAM8gB,MAAV,EAAkB;MAChB9gB,IAAA,CAAK+0E,UAAL,IAAmB,CAAnB;MACA,OAAO/0E,IAAP;IAFgB;IAIlB,IAAI;MACFA,IAAA,KAAS;QACP8gB,MAAA,EAAQ,IADD;QAEP/b,EAAA,EAAK,SAAQ,KAAK,CAAA2vE,MAAQ,IAAG,KAAK,CAAA3vE,EAAL,EAAzB,EAFG;QAGPgwE,UAAA,EAAY,CAHL;QAIPlS,KAAA,EAAO;MAJA,CAAT;MAMA,IAAIhyD,KAAJ;MACA,IAAI,OAAOikE,OAAP,KAAmB,QAAvB,EAAiC;QAC/B90E,IAAA,CAAK6N,GAAL,GAAWinE,OAAX;QACAjkE,KAAA,GAAQ,MAAM07C,4DAAA,CAAUuoB,OAAV,EAAmB,MAAnB,CAAd;MAF+B,CAAjC,MAGO;QACLjkE,KAAA,GAAQ7Q,IAAA,CAAKud,IAAL,GAAYu3D,OAApB;MADK;MAIP,IAAIjkE,KAAA,CAAMN,IAAN,KAAe,eAAnB,EAAoC;QAGlC,MAAMykE,4BAAA,GAA+BP,YAAA,CAAaE,mBAAlD;QACA,MAAMM,UAAA,GAAa,IAAIC,UAAJ,EAAnB;QACA,MAAMC,YAAA,GAAe,IAAIP,KAAJ,EAArB;QACA,MAAMQ,YAAA,GAAe,IAAI7sD,OAAJ,CAAY,CAACC,OAAD,EAAUe,MAAV,KAAqB;UACpD4rD,YAAA,CAAaE,MAAb,GAAsB,MAAM;YAC1Br1E,IAAA,CAAK8gB,MAAL,GAAcq0D,YAAd;YACAn1E,IAAA,CAAK6iE,KAAL,GAAa,IAAb;YACAr6C,OAAA;UAH0B,CAA5B;UAKAysD,UAAA,CAAWI,MAAX,GAAoB,YAAY;YAC9B,MAAMxnE,GAAA,GAAO7N,IAAA,CAAKs1E,MAAL,GAAcL,UAAA,CAAWM,MAAtC;YAGAJ,YAAA,CAAarkE,GAAb,GAAoB,OAAMkkE,4BAAP,IACf,GAAGnnE,GAAI,qCADQ,GAEfA,GAFJ;UAJ8B,CAAhC;UAQAsnE,YAAA,CAAaK,OAAb,GAAuBP,UAAA,CAAWO,OAAX,GAAqBjsD,MAA5C;QAdoD,CAAjC,CAArB;QAgBA0rD,UAAA,CAAWQ,aAAX,CAAyB5kE,KAAzB;QACA,MAAMukE,YAAN;MAvBkC,CAApC,MAwBO;QACLp1E,IAAA,CAAK8gB,MAAL,GAAc,MAAM40D,iBAAA,CAAkB7kE,KAAlB,CAApB;MADK;MAGP7Q,IAAA,CAAK+0E,UAAL,GAAkB,CAAlB;IA1CE,CAAJ,CA2CE,OAAOx6D,CAAP,EAAU;MACVm1C,OAAA,CAAQt+B,KAAR,CAAc7W,CAAd;MACAva,IAAA,GAAO,IAAP;IAFU;IAIZ,KAAK,CAAA4tC,KAAL,CAAYlvB,GAAZ,CAAgBxK,GAAhB,EAAqBlU,IAArB;IACA,IAAIA,IAAJ,EAAU;MACR,KAAK,CAAA4tC,KAAL,CAAYlvB,GAAZ,CAAgB1e,IAAA,CAAK+E,EAArB,EAAyB/E,IAAzB;IADQ;IAGV,OAAOA,IAAP;EA9DuB;EAiEzB,MAAM+jE,WAANA,CAAkBxmD,IAAlB,EAAwB;IACtB,MAAM;MAAEo4D,YAAF;MAAgBpsE,IAAhB;MAAsB+N,IAAtB;MAA4B/G;IAA5B,IAAqCgN,IAA3C;IACA,OAAO,KAAK,CAAA9N,GAAL,CAAU,GAAGkmE,YAAa,IAAGpsE,IAAK,IAAG+N,IAAK,IAAG/G,IAAnC,EAAV,EAAqDgN,IAArD,CAAP;EAFsB;EAKxB,MAAMumD,UAANA,CAAiBj2D,GAAjB,EAAsB;IACpB,OAAO,KAAK,CAAA4B,GAAL,CAAU5B,GAAV,EAAeA,GAAf,CAAP;EADoB;EAItB,MAAMg2D,SAANA,CAAgB9+D,EAAhB,EAAoB;IAClB,KAAK,CAAA6oC,KAAL,KAAgB,IAAIp+B,GAAJ,EAAhB;IACA,MAAMxP,IAAA,GAAO,KAAK,CAAA4tC,KAAL,CAAYn+B,GAAZ,CAAgB1K,EAAhB,CAAb;IACA,IAAI,CAAC/E,IAAL,EAAW;MACT,OAAO,IAAP;IADS;IAGX,IAAIA,IAAA,CAAK8gB,MAAT,EAAiB;MACf9gB,IAAA,CAAK+0E,UAAL,IAAmB,CAAnB;MACA,OAAO/0E,IAAP;IAFe;IAKjB,IAAIA,IAAA,CAAKud,IAAT,EAAe;MACb,OAAO,KAAKwmD,WAAL,CAAiB/jE,IAAA,CAAKud,IAAtB,CAAP;IADa;IAGf,OAAO,KAAKumD,UAAL,CAAgB9jE,IAAA,CAAK6N,GAArB,CAAP;EAdkB;EAiBpB03D,UAAUxgE,EAAV,EAAc;IACZ,MAAM/E,IAAA,GAAO,KAAK,CAAA4tC,KAAL,CAAYn+B,GAAZ,CAAgB1K,EAAhB,CAAb;IACA,IAAI,CAAC/E,IAAA,EAAM6iE,KAAX,EAAkB;MAChB,OAAO,IAAP;IADgB;IAGlB,OAAO7iE,IAAA,CAAKs1E,MAAZ;EALY;EAQdnR,SAASp/D,EAAT,EAAa;IACX,KAAK,CAAA6oC,KAAL,KAAgB,IAAIp+B,GAAJ,EAAhB;IACA,MAAMxP,IAAA,GAAO,KAAK,CAAA4tC,KAAL,CAAYn+B,GAAZ,CAAgB1K,EAAhB,CAAb;IACA,IAAI,CAAC/E,IAAL,EAAW;MACT;IADS;IAGXA,IAAA,CAAK+0E,UAAL,IAAmB,CAAnB;IACA,IAAI/0E,IAAA,CAAK+0E,UAAL,KAAoB,CAAxB,EAA2B;MACzB;IADyB;IAG3B/0E,IAAA,CAAK8gB,MAAL,GAAc,IAAd;EAVW;EAiBb4kD,UAAU3gE,EAAV,EAAc;IACZ,OAAOA,EAAA,CAAGg0C,UAAH,CAAe,SAAQ,KAAK,CAAA27B,MAAQ,GAApC,CAAP;EADY;AA9IG;AAyJnB,MAAMkB,cAAN,CAAqB;EACnB,CAAAC,QAAA,GAAY,EAAZ;EAEA,CAAAC,MAAA,GAAU,KAAV;EAEA,CAAA1tC,OAAA;EAEA,CAAAwhB,QAAA,GAAY,CAAC,CAAb;EAEA3mD,YAAYmlC,OAAA,GAAU,GAAtB,EAA2B;IACzB,KAAK,CAAAA,OAAL,GAAgBA,OAAhB;EADyB;EAkB3B9iC,IAAI;IACFixD,GADE;IAEFC,IAFE;IAGFC,QAHE;IAIFlmD,IAAA,GAAOqW,GAJL;IAKF8vC,mBAAA,GAAsB,KALpB;IAMFC,QAAA,GAAW;EANT,CAAJ,EAOG;IACD,IAAIF,QAAJ,EAAc;MACZF,GAAA;IADY;IAId,IAAI,KAAK,CAAAuf,MAAT,EAAkB;MAChB;IADgB;IAIlB,MAAM9tC,IAAA,GAAO;MAAEuuB,GAAF;MAAOC,IAAP;MAAajmD;IAAb,CAAb;IACA,IAAI,KAAK,CAAAq5C,QAAL,KAAmB,CAAC,CAAxB,EAA2B;MACzB,IAAI,KAAK,CAAAisB,QAAL,CAAetrE,MAAf,GAAwB,CAA5B,EAA+B;QAG7B,KAAK,CAAAsrE,QAAL,CAAetrE,MAAf,GAAwB,CAAxB;MAH6B;MAK/B,KAAK,CAAAq/C,QAAL,GAAiB,CAAjB;MACA,KAAK,CAAAisB,QAAL,CAAe1qE,IAAf,CAAoB68B,IAApB;MACA;IARyB;IAW3B,IAAI0uB,mBAAA,IAAuB,KAAK,CAAAmf,QAAL,CAAe,KAAK,CAAAjsB,QAApB,EAA+Br5C,IAA/B,KAAwCA,IAAnE,EAAyE;MAIvE,IAAIomD,QAAJ,EAAc;QACZ3uB,IAAA,CAAKwuB,IAAL,GAAY,KAAK,CAAAqf,QAAL,CAAe,KAAK,CAAAjsB,QAApB,EAA+B4M,IAA3C;MADY;MAGd,KAAK,CAAAqf,QAAL,CAAe,KAAK,CAAAjsB,QAApB,IAAiC5hB,IAAjC;MACA;IARuE;IAWzE,MAAM8rC,IAAA,GAAO,KAAK,CAAAlqB,QAAL,GAAiB,CAA9B;IACA,IAAIkqB,IAAA,KAAS,KAAK,CAAA1rC,OAAlB,EAA4B;MAC1B,KAAK,CAAAytC,QAAL,CAAezB,MAAf,CAAsB,CAAtB,EAAyB,CAAzB;IAD0B,CAA5B,MAEO;MACL,KAAK,CAAAxqB,QAAL,GAAiBkqB,IAAjB;MACA,IAAIA,IAAA,GAAO,KAAK,CAAA+B,QAAL,CAAetrE,MAA1B,EAAkC;QAChC,KAAK,CAAAsrE,QAAL,CAAezB,MAAf,CAAsBN,IAAtB;MADgC;IAF7B;IAOP,KAAK,CAAA+B,QAAL,CAAe1qE,IAAf,CAAoB68B,IAApB;EA1CC;EAgDHwuB,KAAA,EAAO;IACL,IAAI,KAAK,CAAA5M,QAAL,KAAmB,CAAC,CAAxB,EAA2B;MAEzB;IAFyB;IAM3B,KAAK,CAAAksB,MAAL,GAAe,IAAf;IACA,KAAK,CAAAD,QAAL,CAAe,KAAK,CAAAjsB,QAApB,EAA+B4M,IAA/B;IACA,KAAK,CAAAsf,MAAL,GAAe,KAAf;IAEA,KAAK,CAAAlsB,QAAL,IAAkB,CAAlB;EAXK;EAiBPmsB,KAAA,EAAO;IACL,IAAI,KAAK,CAAAnsB,QAAL,GAAiB,KAAK,CAAAisB,QAAL,CAAetrE,MAAf,GAAwB,CAA7C,EAAgD;MAC9C,KAAK,CAAAq/C,QAAL,IAAkB,CAAlB;MAGA,KAAK,CAAAksB,MAAL,GAAe,IAAf;MACA,KAAK,CAAAD,QAAL,CAAe,KAAK,CAAAjsB,QAApB,EAA+B2M,GAA/B;MACA,KAAK,CAAAuf,MAAL,GAAe,KAAf;IAN8C;EAD3C;EAePE,mBAAA,EAAqB;IACnB,OAAO,KAAK,CAAApsB,QAAL,KAAmB,CAAC,CAA3B;EADmB;EAQrBqsB,mBAAA,EAAqB;IACnB,OAAO,KAAK,CAAArsB,QAAL,GAAiB,KAAK,CAAAisB,QAAL,CAAetrE,MAAf,GAAwB,CAAhD;EADmB;EAIrB2f,QAAA,EAAU;IACR,KAAK,CAAA2rD,QAAL,GAAiB,IAAjB;EADQ;AA9HS;AAuIrB,MAAMtiB,eAAN,CAAsB;EAOpBtwD,YAAYizE,SAAZ,EAAuB;IACrB,KAAKzsD,MAAL,GAAc,EAAd;IACA,KAAKysD,SAAL,GAAiB,IAAI1mE,GAAJ,EAAjB;IACA,KAAK2mE,OAAL,GAAe,IAAIlmE,GAAJ,EAAf;IAEA,MAAM;MAAEuB;IAAF,IAAYhT,wDAAA,CAAY+S,QAA9B;IACA,WAAW,CAAC9H,IAAD,EAAOooB,QAAP,EAAiBpkB,OAAA,GAAU,EAA3B,CAAX,IAA6CyoE,SAA7C,EAAwD;MACtD,WAAWhiE,GAAX,IAAkBzK,IAAlB,EAAwB;QACtB,MAAM2sE,QAAA,GAAWliE,GAAA,CAAI6kC,UAAJ,CAAe,MAAf,CAAjB;QACA,IAAIvnC,KAAA,IAAS4kE,QAAb,EAAuB;UACrB,KAAKF,SAAL,CAAex3D,GAAf,CAAmBxK,GAAA,CAAIhW,KAAJ,CAAU,CAAV,CAAnB,EAAiC;YAAE2zB,QAAF;YAAYpkB;UAAZ,CAAjC;UACA,KAAK0oE,OAAL,CAAa7wE,GAAb,CAAiB4O,GAAA,CAAIgI,KAAJ,CAAU,GAAV,EAAeuiD,EAAf,CAAkB,CAAC,CAAnB,CAAjB;QAFqB,CAAvB,MAGO,IAAI,CAACjtD,KAAD,IAAU,CAAC4kE,QAAf,EAAyB;UAC9B,KAAKF,SAAL,CAAex3D,GAAf,CAAmBxK,GAAnB,EAAwB;YAAE2d,QAAF;YAAYpkB;UAAZ,CAAxB;UACA,KAAK0oE,OAAL,CAAa7wE,GAAb,CAAiB4O,GAAA,CAAIgI,KAAJ,CAAU,GAAV,EAAeuiD,EAAf,CAAkB,CAAC,CAAnB,CAAjB;QAF8B;MALV;IAD8B;EANnC;EA0BvB,CAAA59C,UAAWpZ,KAAX,EAAkB;IAChB,IAAIA,KAAA,CAAM6U,MAAV,EAAkB;MAChB,KAAKmN,MAAL,CAAYte,IAAZ,CAAiB,KAAjB;IADgB;IAGlB,IAAI1D,KAAA,CAAMiK,OAAV,EAAmB;MACjB,KAAK+X,MAAL,CAAYte,IAAZ,CAAiB,MAAjB;IADiB;IAGnB,IAAI1D,KAAA,CAAMgK,OAAV,EAAmB;MACjB,KAAKgY,MAAL,CAAYte,IAAZ,CAAiB,MAAjB;IADiB;IAGnB,IAAI1D,KAAA,CAAMyK,QAAV,EAAoB;MAClB,KAAKuX,MAAL,CAAYte,IAAZ,CAAiB,OAAjB;IADkB;IAGpB,KAAKse,MAAL,CAAYte,IAAZ,CAAiB1D,KAAA,CAAMyM,GAAvB;IACA,MAAM1P,GAAA,GAAM,KAAKilB,MAAL,CAAY/rB,IAAZ,CAAiB,GAAjB,CAAZ;IACA,KAAK+rB,MAAL,CAAYlf,MAAZ,GAAqB,CAArB;IAEA,OAAO/F,GAAP;EAjBgB;EA2BlBuqD,KAAK0F,IAAL,EAAWhtD,KAAX,EAAkB;IAChB,IAAI,CAAC,KAAK0uE,OAAL,CAAa/pE,GAAb,CAAiB3E,KAAA,CAAMyM,GAAvB,CAAL,EAAkC;MAChC;IADgC;IAGlC,MAAMoN,IAAA,GAAO,KAAK40D,SAAL,CAAezmE,GAAf,CAAmB,KAAK,CAAAoR,SAAL,CAAgBpZ,KAAhB,CAAnB,CAAb;IACA,IAAI,CAAC6Z,IAAL,EAAW;MACT;IADS;IAGX,MAAM;MACJuQ,QADI;MAEJpkB,OAAA,EAAS;QAAEsnD,OAAA,GAAU,KAAZ;QAAmBtX,IAAA,GAAO,EAA1B;QAA8BwX,OAAA,GAAU;MAAxC;IAFL,IAGF3zC,IAHJ;IAKA,IAAI2zC,OAAA,IAAW,CAACA,OAAA,CAAQR,IAAR,EAAchtD,KAAd,CAAhB,EAAsC;MACpC;IADoC;IAGtCoqB,QAAA,CAASjY,IAAT,CAAc66C,IAAd,EAAoB,GAAGhX,IAAvB;IAIA,IAAI,CAACsX,OAAL,EAAc;MACZttD,KAAA,CAAM4iE,eAAN;MACA5iE,KAAA,CAAM4O,cAAN;IAFY;EApBE;AA5DE;AAuFtB,MAAMq0D,YAAN,CAAmB;EACjB,OAAO2L,cAAP,GAAwB,IAAI7mE,GAAJ,CAAQ,CAC9B,CAAC,YAAD,EAAe,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,CAAf,CAD8B,EAE9B,CAAC,QAAD,EAAW,CAAC,GAAD,EAAM,GAAN,EAAW,GAAX,CAAX,CAF8B,CAAR,CAAxB;EAKA,IAAI61B,OAAJA,CAAA,EAAc;IASZ,MAAM5C,MAAA,GAAS,IAAIjzB,GAAJ,CAAQ,CACrB,CAAC,YAAD,EAAe,IAAf,CADqB,EAErB,CAAC,QAAD,EAAW,IAAX,CAFqB,CAAR,CAAf;IAIAshD,iEAAA,CAAeruB,MAAf;IACA,OAAO/jC,uDAAA,CAAO,IAAP,EAAa,SAAb,EAAwB+jC,MAAxB,CAAP;EAdY;EAyBdq4B,QAAQv9D,KAAR,EAAe;IACb,MAAMU,GAAA,GAAM0sD,yDAAA,CAAOptD,KAAP,CAAZ;IACA,IAAI,CAACmsB,MAAA,CAAO4sD,UAAP,CAAkB,yBAAlB,EAA6CvmB,OAAlD,EAA2D;MACzD,OAAO9xD,GAAP;IADyD;IAI3D,WAAW,CAACsL,IAAD,EAAOgtE,GAAP,CAAX,IAA0B,KAAKlxC,OAA/B,EAAwC;MACtC,IAAIkxC,GAAA,CAAIC,KAAJ,CAAU,CAACl6E,CAAD,EAAIqc,CAAJ,KAAUrc,CAAA,KAAM2B,GAAA,CAAI0a,CAAJ,CAA1B,CAAJ,EAAuC;QACrC,OAAO+xD,YAAA,CAAa2L,cAAb,CAA4B5mE,GAA5B,CAAgClG,IAAhC,CAAP;MADqC;IADD;IAKxC,OAAOtL,GAAP;EAXa;EAqBfquE,WAAW/iE,IAAX,EAAiB;IACf,MAAMtL,GAAA,GAAM,KAAKonC,OAAL,CAAa51B,GAAb,CAAiBlG,IAAjB,CAAZ;IACA,IAAI,CAACtL,GAAL,EAAU;MACR,OAAOsL,IAAP;IADQ;IAGV,OAAO3K,iDAAA,CAAKmI,YAAL,CAAkB,GAAG9I,GAArB,CAAP;EALe;AApDA;AAqEnB,MAAMo1D,yBAAN,CAAgC;EAC9B,CAAAojB,YAAA,GAAgB,IAAhB;EAEA,CAAAC,UAAA,GAAc,IAAIlnE,GAAJ,EAAd;EAEA,CAAAmnE,SAAA,GAAa,IAAInnE,GAAJ,EAAb;EAEA,CAAAonE,cAAA,GAAkB,IAAlB;EAEA,CAAAjzE,iBAAA,GAAqB,IAArB;EAEA,CAAAkzE,cAAA,GAAkB,IAAIjB,cAAJ,EAAlB;EAEA,CAAAkB,gBAAA,GAAoB,CAApB;EAEA,CAAAC,4BAAA,GAAgC,IAAI9mE,GAAJ,EAAhC;EAEA,CAAA+mE,eAAA,GAAmB,IAAnB;EAEA,CAAAjQ,WAAA,GAAe,IAAf;EAEA,CAAAkQ,gBAAA,GAAoB,IAAIhnE,GAAJ,EAApB;EAEA,CAAAgX,aAAA,GAAiB,IAAjB;EAEA,CAAAiwD,2BAAA,GAA+B,IAA/B;EAEA,CAAAC,SAAA,GAAa,IAAI3C,SAAJ,EAAb;EAEA,CAAA4C,SAAA,GAAa,KAAb;EAEA,CAAAC,SAAA,GAAa,KAAb;EAEA,CAAAC,iBAAA,GAAqB,IAArB;EAEA,CAAAnqE,IAAA,GAAQ9O,iEAAA,CAAqBmgC,IAA7B;EAEA,CAAA+4C,eAAA,GAAmB,IAAItnE,GAAJ,EAAnB;EAEA,CAAAkgB,UAAA,GAAc,IAAd;EAEA,CAAAqnD,SAAA,GAAa,KAAKC,IAAL,CAAU79D,IAAV,CAAe,IAAf,CAAb;EAEA,CAAA89D,UAAA,GAAc,KAAKrvE,KAAL,CAAWuR,IAAX,CAAgB,IAAhB,CAAd;EAEA,CAAA+9D,SAAA,GAAa,KAAKC,IAAL,CAAUh+D,IAAV,CAAe,IAAf,CAAb;EAEA,CAAAi+D,QAAA,GAAY,KAAKC,GAAL,CAASl+D,IAAT,CAAc,IAAd,CAAZ;EAEA,CAAAm+D,UAAA,GAAc,KAAK3U,KAAL,CAAWxpD,IAAX,CAAgB,IAAhB,CAAd;EAEA,CAAAo+D,YAAA,GAAgB,KAAKze,OAAL,CAAa3/C,IAAb,CAAkB,IAAlB,CAAhB;EAEA,CAAAq+D,oBAAA,GAAwB,KAAKC,eAAL,CAAqBt+D,IAArB,CAA0B,IAA1B,CAAxB;EAEA,CAAAu+D,mBAAA,GAAuB,KAAKC,cAAL,CAAoBx+D,IAApB,CAAyB,IAAzB,CAAvB;EAEA,CAAAy+D,oBAAA,GAAwB,KAAKra,eAAL,CAAqBpkD,IAArB,CAA0B,IAA1B,CAAxB;EAEA,CAAA0+D,uBAAA,GAA2B,KAAKC,kBAAL,CAAwB3+D,IAAxB,CAA6B,IAA7B,CAA3B;EAEA,CAAA4+D,cAAA,GAAkB;IAChB9gB,SAAA,EAAW,KADK;IAEhBvP,OAAA,EAAS,IAFO;IAGhB6tB,kBAAA,EAAoB,KAHJ;IAIhBC,kBAAA,EAAoB,KAJJ;IAKhBwC,iBAAA,EAAmB;EALH,CAAlB;EAQA,CAAAC,WAAA,GAAe,CAAC,CAAD,EAAI,CAAJ,CAAf;EAEA,CAAAC,oBAAA,GAAwB,IAAxB;EAEA,CAAA10E,SAAA,GAAa,IAAb;EAEA,CAAA20E,MAAA,GAAU,IAAV;EAEA,OAAOjkB,eAAP,GAAyB,CAAzB;EAEA,OAAOE,aAAP,GAAuB,EAAvB;EAEA,WAAWP,gBAAXA,CAAA,EAA8B;IAC5B,MAAMC,KAAA,GAAQlB,yBAAA,CAA0Bj7C,SAAxC;IAEA,MAAMo8C,YAAA,GAAeC,IAAA,IAAQ;MAG3B,OACEA,IAAA,CAAK,CAAAxwD,SAAL,CAAgB+7D,QAAhB,CAAyBp7D,QAAA,CAAS4Q,aAAlC,KACAi/C,IAAA,CAAKokB,qBAAL,EAFF;IAH2B,CAA7B;IASA,MAAMC,gBAAA,GAAmBA,CAACC,KAAD,EAAQ;MAAElxE,MAAA,EAAQmxE;IAAV,CAAR,KAA2B;MAClD,IAAIA,EAAA,YAAcC,gBAAlB,EAAoC;QAClC,MAAM;UAAE1oE;QAAF,IAAWyoE,EAAjB;QACA,OAAOzoE,IAAA,KAAS,MAAT,IAAmBA,IAAA,KAAS,QAAnC;MAFkC;MAIpC,OAAO,IAAP;IALkD,CAApD;IAQA,MAAMmkD,KAAA,GAAQ,KAAKC,eAAnB;IACA,MAAMC,GAAA,GAAM,KAAKC,aAAjB;IAEA,OAAOn2D,uDAAA,CACL,IADK,EAEL,kBAFK,EAGL,IAAI60D,eAAJ,CAAoB,CAClB,CACE,CAAC,QAAD,EAAW,YAAX,CADF,EAEEgB,KAAA,CAAM2kB,SAFR,EAGE;MAAEjkB,OAAA,EAAS6jB;IAAX,CAHF,CADkB,EAMlB,CAAC,CAAC,QAAD,EAAW,YAAX,CAAD,EAA2BvkB,KAAA,CAAMiC,IAAjC,EAAuC;MAAEvB,OAAA,EAAS6jB;IAAX,CAAvC,CANkB,EAOlB,CAGE,CACE,QADF,EAEE,cAFF,EAGE,kBAHF,EAIE,cAJF,EAKE,kBALF,CAHF,EAUEvkB,KAAA,CAAMwhB,IAVR,EAWE;MAAE9gB,OAAA,EAAS6jB;IAAX,CAXF,CAPkB,EAoBlB,CACE,CACE,WADF,EAEE,eAFF,EAGE,gBAHF,EAIE,iBAJF,EAKE,eALF,EAME,mBANF,EAOE,oBAPF,EAQE,QARF,EASE,aATF,EAUE,cAVF,EAWE,YAXF,CADF,EAcEvkB,KAAA,CAAMx0C,MAdR,EAeE;MAAEk1C,OAAA,EAAS6jB;IAAX,CAfF,CApBkB,EAqClB,CACE,CAAC,OAAD,EAAU,WAAV,CADF,EAEEvkB,KAAA,CAAM4kB,wBAFR,EAGE;MAIElkB,OAAA,EAASA,CAACR,IAAD,EAAO;QAAE5sD,MAAA,EAAQmxE;MAAV,CAAP,KACP,EAAEA,EAAA,YAAcI,iBAAd,CAAF,IACA3kB,IAAA,CAAK,CAAAxwD,SAAL,CAAgB+7D,QAAhB,CAAyBgZ,EAAzB,CADA,IAEA,CAACvkB,IAAA,CAAKiY;IAPV,CAHF,CArCkB,EAkDlB,CACE,CAAC,GAAD,EAAM,OAAN,CADF,EAEEnY,KAAA,CAAM4kB,wBAFR,EAGE;MAIElkB,OAAA,EAASR,IAAA,IAAQA,IAAA,CAAK,CAAAxwD,SAAL,CAAgB+7D,QAAhB,CAAyBp7D,QAAA,CAAS4Q,aAAlC;IAJnB,CAHF,CAlDkB,EA4DlB,CAAC,CAAC,QAAD,EAAW,YAAX,CAAD,EAA2B++C,KAAA,CAAMmV,WAAjC,CA5DkB,EA6DlB,CACE,CAAC,WAAD,EAAc,eAAd,CADF,EAEEnV,KAAA,CAAMuC,wBAFR,EAGE;MAAErZ,IAAA,EAAM,CAAC,CAACiX,KAAF,EAAS,CAAT,CAAR;MAAqBO,OAAA,EAAST;IAA9B,CAHF,CA7DkB,EAkElB,CACE,CAAC,gBAAD,EAAmB,qBAAnB,CADF,EAEED,KAAA,CAAMuC,wBAFR,EAGE;MAAErZ,IAAA,EAAM,CAAC,CAACmX,GAAF,EAAO,CAAP,CAAR;MAAmBK,OAAA,EAAST;IAA5B,CAHF,CAlEkB,EAuElB,CACE,CAAC,YAAD,EAAe,gBAAf,CADF,EAEED,KAAA,CAAMuC,wBAFR,EAGE;MAAErZ,IAAA,EAAM,CAACiX,KAAD,EAAQ,CAAR,CAAR;MAAoBO,OAAA,EAAST;IAA7B,CAHF,CAvEkB,EA4ElB,CACE,CAAC,iBAAD,EAAoB,sBAApB,CADF,EAEED,KAAA,CAAMuC,wBAFR,EAGE;MAAErZ,IAAA,EAAM,CAACmX,GAAD,EAAM,CAAN,CAAR;MAAkBK,OAAA,EAAST;IAA3B,CAHF,CA5EkB,EAiFlB,CACE,CAAC,SAAD,EAAY,aAAZ,CADF,EAEED,KAAA,CAAMuC,wBAFR,EAGE;MAAErZ,IAAA,EAAM,CAAC,CAAD,EAAI,CAACiX,KAAL,CAAR;MAAqBO,OAAA,EAAST;IAA9B,CAHF,CAjFkB,EAsFlB,CACE,CAAC,cAAD,EAAiB,mBAAjB,CADF,EAEED,KAAA,CAAMuC,wBAFR,EAGE;MAAErZ,IAAA,EAAM,CAAC,CAAD,EAAI,CAACmX,GAAL,CAAR;MAAmBK,OAAA,EAAST;IAA5B,CAHF,CAtFkB,EA2FlB,CACE,CAAC,WAAD,EAAc,eAAd,CADF,EAEED,KAAA,CAAMuC,wBAFR,EAGE;MAAErZ,IAAA,EAAM,CAAC,CAAD,EAAIiX,KAAJ,CAAR;MAAoBO,OAAA,EAAST;IAA7B,CAHF,CA3FkB,EAgGlB,CACE,CAAC,gBAAD,EAAmB,qBAAnB,CADF,EAEED,KAAA,CAAMuC,wBAFR,EAGE;MAAErZ,IAAA,EAAM,CAAC,CAAD,EAAImX,GAAJ,CAAR;MAAkBK,OAAA,EAAST;IAA3B,CAHF,CAhGkB,CAApB,CAHK,CAAP;EAvB4B;EAmI9BvxD,YACEgB,SADF,EAEE20E,MAFF,EAGEhC,cAHF,EAIEtpE,QAJF,EAKE+rE,WALF,EAMElpD,UANF,EAOE;IACA,KAAK,CAAAlsB,SAAL,GAAkBA,SAAlB;IACA,KAAK,CAAA20E,MAAL,GAAeA,MAAf;IACA,KAAK,CAAAhC,cAAL,GAAuBA,cAAvB;IACA,KAAKpS,SAAL,GAAiBl3D,QAAjB;IACA,KAAKk3D,SAAL,CAAe8U,GAAf,CAAmB,eAAnB,EAAoC,KAAK,CAAArB,oBAAzC;IACA,KAAKzT,SAAL,CAAe8U,GAAf,CAAmB,cAAnB,EAAmC,KAAK,CAAAnB,mBAAxC;IACA,KAAK3T,SAAL,CAAe8U,GAAf,CAAmB,eAAnB,EAAoC,KAAK,CAAAjB,oBAAzC;IACA,KAAK7T,SAAL,CAAe8U,GAAf,CAAmB,kBAAnB,EAAuC,KAAK,CAAAhB,uBAA5C;IACA,KAAK,CAAA30E,iBAAL,GAA0B01E,WAAA,CAAY11E,iBAAtC;IACA,KAAK,CAAAsjB,aAAL,GAAsBoyD,WAAA,CAAYpyD,aAAlC;IACA,KAAK,CAAAkJ,UAAL,GAAmBA,UAAnB;IACA,KAAKi8C,cAAL,GAAsB;MACpBqB,SAAA,EAAW9iC,4DAAA,CAAcuM,gBADL;MAEpBtxC,QAAA,EAAU;IAFU,CAAtB;EAZA;EAkBFskB,QAAA,EAAU;IACR,KAAK,CAAAqvD,qBAAL;IACA,KAAK,CAAAC,kBAAL;IACA,KAAKhV,SAAL,CAAeiV,IAAf,CAAoB,eAApB,EAAqC,KAAK,CAAAxB,oBAA1C;IACA,KAAKzT,SAAL,CAAeiV,IAAf,CAAoB,cAApB,EAAoC,KAAK,CAAAtB,mBAAzC;IACA,KAAK3T,SAAL,CAAeiV,IAAf,CAAoB,eAApB,EAAqC,KAAK,CAAApB,oBAA1C;IACA,KAAK7T,SAAL,CAAeiV,IAAf,CAAoB,kBAApB,EAAwC,KAAK,CAAAnB,uBAA7C;IACA,WAAWj1E,KAAX,IAAoB,KAAK,CAAAszE,SAAL,CAAgBxmE,MAAhB,EAApB,EAA8C;MAC5C9M,KAAA,CAAM6mB,OAAN;IAD4C;IAG9C,KAAK,CAAAysD,SAAL,CAAgB79D,KAAhB;IACA,KAAK,CAAA49D,UAAL,CAAiB59D,KAAjB;IACA,KAAK,CAAAm+D,gBAAL,CAAuBn+D,KAAvB;IACA,KAAK,CAAA29D,YAAL,GAAqB,IAArB;IACA,KAAK,CAAAc,eAAL,CAAsBz+D,KAAtB;IACA,KAAK,CAAA+9D,cAAL,CAAqB3sD,OAArB;IACA,KAAK,CAAA0sD,cAAL,CAAqB1sD,OAArB;IACA,IAAI,KAAK,CAAAgtD,2BAAT,EAAuC;MACrCzmD,YAAA,CAAa,KAAK,CAAAymD,2BAAlB;MACA,KAAK,CAAAA,2BAAL,GAAoC,IAApC;IAFqC;IAIvC,IAAI,KAAK,CAAAyB,oBAAT,EAAgC;MAC9BloD,YAAA,CAAa,KAAK,CAAAkoD,oBAAlB;MACA,KAAK,CAAAA,oBAAL,GAA6B,IAA7B;IAF8B;EArBxB;EA2BV,IAAItvB,SAAJA,CAAA,EAAgB;IACd,OAAO3qD,uDAAA,CACL,IADK,EAEL,WAFK,EAGL,KAAK,CAAAyxB,UAAL,GACI,KAAK,CAAAlJ,aAAL,CAAoB0W,YAApB,CACE,KAAK,CAAAxN,UAAL,CAAiBmqB,UADnB,EAEE,KAAK,CAAAnqB,UAAL,CAAiBF,UAFnB,CADJ,GAKI,MARC,CAAP;EADc;EAahB,IAAIypD,SAAJA,CAAA,EAAgB;IACd,OAAOh7E,uDAAA,CACL,IADK,EAEL,WAFK,EAGL0tD,gBAAA,CAAiB,KAAK,CAAAnoD,SAAtB,EAAkCy1E,SAH7B,CAAP;EADc;EAQhBhJ,YAAYjW,MAAZ,EAAoB;IAClB,KAAK,CAAAmc,cAAL,EAAsBlG,WAAtB,CAAkC,IAAlC,EAAwCjW,MAAxC;EADkB;EAIpB2d,eAAe;IAAEhsD;EAAF,CAAf,EAA+B;IAC7B,KAAK,CAAA0qD,gBAAL,GAAyB1qD,UAAA,GAAa,CAAtC;EAD6B;EAI/ButD,mBAAA,EAAqB;IACnB,KAAK,CAAA11E,SAAL,CAAgBoE,KAAhB;EADmB;EAIrBuhE,WAAWttE,CAAX,EAAcI,CAAd,EAAiB;IACf,WAAW2G,KAAX,IAAoB,KAAK,CAAAszE,SAAL,CAAgBxmE,MAAhB,EAApB,EAA8C;MAC5C,MAAM;QACJ7T,CAAA,EAAGs9E,MADC;QAEJl9E,CAAA,EAAGm9E,MAFC;QAGJn6E,KAHI;QAIJC;MAJI,IAKF0D,KAAA,CAAMqI,GAAN,CAAU+sD,qBAAV,EALJ;MAMA,IACEn8D,CAAA,IAAKs9E,MAAL,IACAt9E,CAAA,IAAKs9E,MAAA,GAASl6E,KADd,IAEAhD,CAAA,IAAKm9E,MAFL,IAGAn9E,CAAA,IAAKm9E,MAAA,GAASl6E,MAJhB,EAKE;QACA,OAAO0D,KAAP;MADA;IAZ0C;IAgB9C,OAAO,IAAP;EAjBe;EAoBjBy2E,kBAAkBtpE,KAAA,GAAQ,KAA1B,EAAiC;IAC/B,KAAK,CAAAooE,MAAL,CAAavzE,SAAb,CAAuB2U,MAAvB,CAA8B,cAA9B,EAA8CxJ,KAA9C;EAD+B;EAIjCutD,iBAAiBtD,MAAjB,EAAyB;IACvB,KAAK,CAAAwc,gBAAL,CAAuB3xE,GAAvB,CAA2Bm1D,MAA3B;EADuB;EAIzBqD,oBAAoBrD,MAApB,EAA4B;IAC1B,KAAK,CAAAwc,gBAAL,CAAuBl3D,MAAvB,CAA8B06C,MAA9B;EAD0B;EAI5BuD,gBAAgB;IAAE9uC;EAAF,CAAhB,EAA2B;IACzB,KAAK4lC,cAAL;IACA,KAAKsX,cAAL,CAAoBqB,SAApB,GAAgCv+C,KAAA,GAAQyb,4DAAA,CAAcuM,gBAAtD;IACA,WAAWujB,MAAX,IAAqB,KAAK,CAAAwc,gBAA1B,EAA6C;MAC3Cxc,MAAA,CAAOuD,eAAP;IAD2C;EAHpB;EAQ3Bua,mBAAmB;IAAEwB;EAAF,CAAnB,EAAsC;IACpC,KAAKjlB,cAAL;IACA,KAAKsX,cAAL,CAAoBxmE,QAApB,GAA+Bm0E,aAA/B;EAFoC;EAStC9Z,uBAAuBxF,MAAvB,EAA+B;IAC7B,IACE,CAACA,MAAA,CAAOtS,OAAP,EAAD,IACA,KAAK,CAAAxkD,iBADL,IAEA,CAAC,KAAK,CAAAA,iBAAL,CAAwByI,GAAxB,CAA4BquD,MAAA,CAAO11D,EAAnC,CAHH,EAIE;MACA,KAAK,CAAApB,iBAAL,CAAwBmE,QAAxB,CAAiC2yD,MAAA,CAAO11D,EAAxC,EAA4C01D,MAA5C;IADA;EAL2B;EAU/B,CAAAuf,gBAAA,EAAmB;IACjBtwD,MAAA,CAAOrc,gBAAP,CAAwB,OAAxB,EAAiC,KAAK,CAAAqqE,UAAtC;IACAhuD,MAAA,CAAOrc,gBAAP,CAAwB,MAAxB,EAAgC,KAAK,CAAAmqE,SAArC;EAFiB;EAKnB,CAAAgC,mBAAA,EAAsB;IACpB9vD,MAAA,CAAOzR,mBAAP,CAA2B,OAA3B,EAAoC,KAAK,CAAAy/D,UAAzC;IACAhuD,MAAA,CAAOzR,mBAAP,CAA2B,MAA3B,EAAmC,KAAK,CAAAu/D,SAAxC;EAFoB;EAKtBC,KAAA,EAAO;IACL,IAAI,CAAC,KAAKwC,YAAV,EAAwB;MACtB;IADsB;IAOxB,MAAM;MAAEzkE;IAAF,IAAoB5Q,QAA1B;IACA,WAAW61D,MAAX,IAAqB,KAAK,CAAA8c,eAA1B,EAA4C;MAC1C,IAAI9c,MAAA,CAAO/uD,GAAP,CAAWs0D,QAAX,CAAoBxqD,aAApB,CAAJ,EAAwC;QACtC,KAAK,CAAA8hE,iBAAL,GAA0B,CAAC7c,MAAD,EAASjlD,aAAT,CAA1B;QACAilD,MAAA,CAAO7C,mBAAP,GAA6B,KAA7B;QACA;MAHsC;IADE;EATvC;EAkBPvvD,MAAA,EAAQ;IACN,IAAI,CAAC,KAAK,CAAAivE,iBAAV,EAA8B;MAC5B;IAD4B;IAG9B,MAAM,CAAC4C,UAAD,EAAa5C,iBAAb,IAAkC,KAAK,CAAAA,iBAA7C;IACA,KAAK,CAAAA,iBAAL,GAA0B,IAA1B;IACAA,iBAAA,CAAkBjqE,gBAAlB,CACE,SADF,EAEE,MAAM;MACJ6sE,UAAA,CAAWtiB,mBAAX,GAAiC,IAAjC;IADI,CAFR,EAKE;MAAEiR,IAAA,EAAM;IAAR,CALF;IAOAyO,iBAAA,CAAkBjvE,KAAlB;EAbM;EAgBR,CAAA8xE,mBAAA,EAAsB;IAGpBzwD,MAAA,CAAOrc,gBAAP,CAAwB,SAAxB,EAAmC,KAAK,CAAA2qE,YAAxC;EAHoB;EAMtB,CAAAuB,sBAAA,EAAyB;IACvB7vD,MAAA,CAAOzR,mBAAP,CAA2B,SAA3B,EAAsC,KAAK,CAAA+/D,YAA3C;EADuB;EAIzB,CAAAoC,sBAAA,EAAyB;IACvBx1E,QAAA,CAASyI,gBAAT,CAA0B,MAA1B,EAAkC,KAAK,CAAAsqE,SAAvC;IACA/yE,QAAA,CAASyI,gBAAT,CAA0B,KAA1B,EAAiC,KAAK,CAAAwqE,QAAtC;IACAjzE,QAAA,CAASyI,gBAAT,CAA0B,OAA1B,EAAmC,KAAK,CAAA0qE,UAAxC;EAHuB;EAMzB,CAAAsC,yBAAA,EAA4B;IAC1Bz1E,QAAA,CAASqT,mBAAT,CAA6B,MAA7B,EAAqC,KAAK,CAAA0/D,SAA1C;IACA/yE,QAAA,CAASqT,mBAAT,CAA6B,KAA7B,EAAoC,KAAK,CAAA4/D,QAAzC;IACAjzE,QAAA,CAASqT,mBAAT,CAA6B,OAA7B,EAAsC,KAAK,CAAA8/D,UAA3C;EAH0B;EAM5BuC,iBAAA,EAAmB;IACjB,KAAK,CAAAH,kBAAL;IACA,KAAK,CAAAC,qBAAL;EAFiB;EAKnBG,oBAAA,EAAsB;IACpB,KAAK,CAAAhB,qBAAL;IACA,KAAK,CAAAc,wBAAL;EAFoB;EAStBzC,KAAKnwE,KAAL,EAAY;IACVA,KAAA,CAAM4O,cAAN;IAGA,KAAK,CAAAogE,YAAL,EAAoB3hB,cAApB;IAEA,IAAI,CAAC,KAAKmlB,YAAV,EAAwB;MACtB;IADsB;IAIxB,MAAMvT,OAAA,GAAU,EAAhB;IACA,WAAWjM,MAAX,IAAqB,KAAK,CAAA8c,eAA1B,EAA4C;MAC1C,MAAM32D,UAAA,GAAa65C,MAAA,CAAO55C,SAAP,CAAsC,IAAtC,CAAnB;MACA,IAAID,UAAJ,EAAgB;QACd8lD,OAAA,CAAQv7D,IAAR,CAAayV,UAAb;MADc;IAF0B;IAM5C,IAAI8lD,OAAA,CAAQn8D,MAAR,KAAmB,CAAvB,EAA0B;MACxB;IADwB;IAI1B9C,KAAA,CAAM+yE,aAAN,CAAoBC,OAApB,CAA4B,mBAA5B,EAAiDzpE,IAAA,CAAKC,SAAL,CAAey1D,OAAf,CAAjD;EArBU;EA4BZoR,IAAIrwE,KAAJ,EAAW;IACT,KAAKmwE,IAAL,CAAUnwE,KAAV;IACA,KAAKsY,MAAL;EAFS;EASXqjD,MAAM37D,KAAN,EAAa;IACXA,KAAA,CAAM4O,cAAN;IACA,MAAM;MAAEmkE;IAAF,IAAoB/yE,KAA1B;IACA,WAAW0R,IAAX,IAAmBqhE,aAAA,CAAc3hE,KAAjC,EAAwC;MACtC,WAAW4rD,UAAX,IAAyB,KAAK,CAAAsC,WAA9B,EAA4C;QAC1C,IAAItC,UAAA,CAAWvB,wBAAX,CAAoC/pD,IAAA,CAAK5I,IAAzC,CAAJ,EAAoD;UAClDk0D,UAAA,CAAWrB,KAAX,CAAiBjqD,IAAjB,EAAuB,KAAKu/C,YAA5B;UACA;QAFkD;MADV;IADN;IASxC,IAAI14D,IAAA,GAAOw6E,aAAA,CAAcltD,OAAd,CAAsB,mBAAtB,CAAX;IACA,IAAI,CAACttB,IAAL,EAAW;MACT;IADS;IAIX,IAAI;MACFA,IAAA,GAAOgR,IAAA,CAAK0pE,KAAL,CAAW16E,IAAX,CAAP;IADE,CAAJ,CAEE,OAAOoqB,EAAP,EAAW;MACXvrB,qDAAA,CAAM,WAAUurB,EAAA,CAAGkK,OAAQ,IAA3B;MACA;IAFW;IAKb,IAAI,CAACxnB,KAAA,CAAMC,OAAN,CAAc/M,IAAd,CAAL,EAA0B;MACxB;IADwB;IAI1B,KAAK0pE,WAAL;IACA,MAAMrmE,KAAA,GAAQ,KAAKq1D,YAAnB;IAEA,IAAI;MACF,MAAMiiB,UAAA,GAAa,EAAnB;MACA,WAAWlgB,MAAX,IAAqBz6D,IAArB,EAA2B;QACzB,MAAM46E,kBAAA,GAAqBv3E,KAAA,CAAMi3D,WAAN,CAAkBG,MAAlB,CAA3B;QACA,IAAI,CAACmgB,kBAAL,EAAyB;UACvB;QADuB;QAGzBD,UAAA,CAAWxvE,IAAX,CAAgByvE,kBAAhB;MALyB;MAQ3B,MAAMrkB,GAAA,GAAMA,CAAA,KAAM;QAChB,WAAWkE,MAAX,IAAqBkgB,UAArB,EAAiC;UAC/B,KAAK,CAAAE,gBAAL,CAAuBpgB,MAAvB;QAD+B;QAGjC,KAAK,CAAAqgB,aAAL,CAAoBH,UAApB;MAJgB,CAAlB;MAMA,MAAMnkB,IAAA,GAAOA,CAAA,KAAM;QACjB,WAAWiE,MAAX,IAAqBkgB,UAArB,EAAiC;UAC/BlgB,MAAA,CAAOziD,MAAP;QAD+B;MADhB,CAAnB;MAKA,KAAKs+C,WAAL,CAAiB;QAAEC,GAAF;QAAOC,IAAP;QAAaC,QAAA,EAAU;MAAvB,CAAjB;IArBE,CAAJ,CAsBE,OAAOrsC,EAAP,EAAW;MACXvrB,qDAAA,CAAM,WAAUurB,EAAA,CAAGkK,OAAQ,IAA3B;IADW;EArDF;EA8DbilC,QAAQ9xD,KAAR,EAAe;IACb,IAAI,CAAC,KAAKszE,wBAAV,EAAoC;MAClC1nB,yBAAA,CAA0BiB,gBAA1B,CAA2CvF,IAA3C,CAAgD,IAAhD,EAAsDtnD,KAAtD;IADkC;EADvB;EAYfywE,gBAAgBh+C,OAAhB,EAAyB;IACvB,IAAI,CAAC,MAAD,EAAS,MAAT,EAAiB,QAAjB,EAA2B,WAA3B,EAAwCloB,QAAxC,CAAiDkoB,OAAA,CAAQ3wB,IAAzD,CAAJ,EAAoE;MAClE,KAAK2wB,OAAA,CAAQ3wB,IAAb;IADkE;EAD7C;EAWzB,CAAAyxE,qBAAsB9gD,OAAtB,EAA+B;IAC7B,MAAM+gD,UAAA,GAAazxE,MAAA,CAAOQ,OAAP,CAAekwB,OAAf,EAAwBghC,IAAxB,CACjB,CAAC,CAAChnD,GAAD,EAAM1D,KAAN,CAAD,KAAkB,KAAK,CAAAgoE,cAAL,CAAqBtkE,GAArB,MAA8B1D,KAD/B,CAAnB;IAIA,IAAIyqE,UAAJ,EAAgB;MACd,KAAKzW,SAAL,CAAej3D,QAAf,CAAwB,+BAAxB,EAAyD;QACvDC,MAAA,EAAQ,IAD+C;QAEvD0sB,OAAA,EAAS1wB,MAAA,CAAOsW,MAAP,CAAc,KAAK,CAAA04D,cAAnB,EAAoCt+C,OAApC;MAF8C,CAAzD;IADc;EALa;EAa/B,CAAAghD,iBAAkBhhD,OAAlB,EAA2B;IACzB,KAAKsqC,SAAL,CAAej3D,QAAf,CAAwB,+BAAxB,EAAyD;MACvDC,MAAA,EAAQ,IAD+C;MAEvD0sB;IAFuD,CAAzD;EADyB;EAa3Bk9B,gBAAgBM,SAAhB,EAA2B;IACzB,IAAIA,SAAJ,EAAe;MACb,KAAK,CAAAsiB,eAAL;MACA,KAAK,CAAAG,kBAAL;MACA,KAAK,CAAAC,qBAAL;MACA,KAAK,CAAAY,oBAAL,CAA2B;QACzBtjB,SAAA,EAAW,KAAK,CAAAvqD,IAAL,KAAe9O,iEAAA,CAAqBmgC,IADtB;QAEzB2pB,OAAA,EAAS,KAAK,CAAAA,OAAL,EAFgB;QAGzB6tB,kBAAA,EAAoB,KAAK,CAAAa,cAAL,CAAqBb,kBAArB,EAHK;QAIzBC,kBAAA,EAAoB,KAAK,CAAAY,cAAL,CAAqBZ,kBAArB,EAJK;QAKzBwC,iBAAA,EAAmB;MALM,CAA3B;IAJa,CAAf,MAWO;MACL,KAAK,CAAAe,kBAAL;MACA,KAAK,CAAAD,qBAAL;MACA,KAAK,CAAAc,wBAAL;MACA,KAAK,CAAAW,oBAAL,CAA2B;QACzBtjB,SAAA,EAAW;MADc,CAA3B;MAGA,KAAKoiB,iBAAL,CAAuB,KAAvB;IAPK;EAZkB;EAuB3B9S,oBAAoBhE,KAApB,EAA2B;IACzB,IAAI,KAAK,CAAA+D,WAAT,EAAuB;MACrB;IADqB;IAGvB,KAAK,CAAAA,WAAL,GAAoB/D,KAApB;IACA,WAAWyB,UAAX,IAAyB,KAAK,CAAAsC,WAA9B,EAA4C;MAC1C,KAAK,CAAAmU,gBAAL,CAAuBzW,UAAA,CAAW1O,yBAAlC;IAD0C;EALnB;EAc3BiT,MAAA,EAAQ;IACN,OAAO,KAAK,CAAAmO,SAAL,CAAgBnO,KAAhB,EAAP;EADM;EAIR,IAAItQ,YAAJA,CAAA,EAAmB;IACjB,OAAO,KAAK,CAAAie,SAAL,CAAgBlnE,GAAhB,CAAoB,KAAK,CAAAqnE,gBAAzB,CAAP;EADiB;EAInBqE,SAAS/sD,SAAT,EAAoB;IAClB,OAAO,KAAK,CAAAuoD,SAAL,CAAgBlnE,GAAhB,CAAoB2e,SAApB,CAAP;EADkB;EAIpB,IAAI0oD,gBAAJA,CAAA,EAAuB;IACrB,OAAO,KAAK,CAAAA,gBAAZ;EADqB;EAQvB7P,SAAS5jE,KAAT,EAAgB;IACd,KAAK,CAAAszE,SAAL,CAAgBj4D,GAAhB,CAAoBrb,KAAA,CAAM+qB,SAA1B,EAAqC/qB,KAArC;IACA,IAAI,KAAK,CAAA+zE,SAAT,EAAqB;MACnB/zE,KAAA,CAAMokE,MAAN;IADmB,CAArB,MAEO;MACLpkE,KAAA,CAAMykE,OAAN;IADK;EAJO;EAahB+B,YAAYxmE,KAAZ,EAAmB;IACjB,KAAK,CAAAszE,SAAL,CAAgB52D,MAAhB,CAAuB1c,KAAA,CAAM+qB,SAA7B;EADiB;EAWnB84C,WAAW/5D,IAAX,EAAiBC,MAAA,GAAS,IAA1B,EAAgCguE,cAAA,GAAiB,KAAjD,EAAwD;IACtD,IAAI,KAAK,CAAAjuE,IAAL,KAAeA,IAAnB,EAAyB;MACvB;IADuB;IAGzB,KAAK,CAAAA,IAAL,GAAaA,IAAb;IACA,IAAIA,IAAA,KAAS9O,iEAAA,CAAqBmgC,IAAlC,EAAwC;MACtC,KAAK44B,eAAL,CAAqB,KAArB;MACA,KAAK,CAAAikB,UAAL;MACA;IAHsC;IAKxC,KAAKjkB,eAAL,CAAqB,IAArB;IACA,KAAK,CAAAkkB,SAAL;IACA,KAAK5R,WAAL;IACA,WAAWrmE,KAAX,IAAoB,KAAK,CAAAszE,SAAL,CAAgBxmE,MAAhB,EAApB,EAA8C;MAC5C9M,KAAA,CAAM6jE,UAAN,CAAiB/5D,IAAjB;IAD4C;IAG9C,IAAI,CAACC,MAAD,IAAWguE,cAAf,EAA+B;MAC7B,KAAKjC,wBAAL;MACA;IAF6B;IAK/B,IAAI,CAAC/rE,MAAL,EAAa;MACX;IADW;IAGb,WAAWqtD,MAAX,IAAqB,KAAK,CAAAic,UAAL,CAAiBvmE,MAAjB,EAArB,EAAgD;MAC9C,IAAIsqD,MAAA,CAAOZ,mBAAP,KAA+BzsD,MAAnC,EAA2C;QACzC,KAAKk8D,WAAL,CAAiB7O,MAAjB;QACAA,MAAA,CAAOpB,eAAP;QACA;MAHyC;IADG;EAxBM;EAiCxD8f,yBAAA,EAA2B;IACzB,KAAKzgB,YAAL,CAAkB2Q,YAAlB;EADyB;EAS3BhS,cAAclqD,IAAd,EAAoB;IAClB,IAAIA,IAAA,KAAS,KAAK,CAAAA,IAAlB,EAAyB;MACvB;IADuB;IAGzB,KAAKq3D,SAAL,CAAej3D,QAAf,CAAwB,4BAAxB,EAAsD;MACpDC,MAAA,EAAQ,IAD4C;MAEpDL;IAFoD,CAAtD;EAJkB;EAepByoD,aAAarlD,IAAb,EAAmBC,KAAnB,EAA0B;IACxB,IAAI,CAAC,KAAK,CAAAu2D,WAAV,EAAwB;MACtB;IADsB;IAGxB,IAAIx2D,IAAA,KAAS6iD,uEAAA,CAA2BmoB,MAAxC,EAAgD;MAC9C,KAAK7iB,YAAL,CAAkB2Q,YAAlB;MACA;IAF8C;IAKhD,WAAW5O,MAAX,IAAqB,KAAK,CAAA8c,eAA1B,EAA4C;MAC1C9c,MAAA,CAAO7E,YAAP,CAAoBrlD,IAApB,EAA0BC,KAA1B;IAD0C;IAI5C,WAAWi0D,UAAX,IAAyB,KAAK,CAAAsC,WAA9B,EAA4C;MAC1CtC,UAAA,CAAWhP,mBAAX,CAA+BllD,IAA/B,EAAqCC,KAArC;IAD0C;EAbpB;EAkB1BkzD,cAAc8X,QAAA,GAAW,KAAzB,EAAgC;IAC9B,IAAI,KAAK,CAAAnE,SAAL,KAAoBmE,QAAxB,EAAkC;MAChC;IADgC;IAGlC,KAAK,CAAAnE,SAAL,GAAkBmE,QAAlB;IACA,WAAWn4E,KAAX,IAAoB,KAAK,CAAAszE,SAAL,CAAgBxmE,MAAhB,EAApB,EAA8C;MAC5C,IAAIqrE,QAAJ,EAAc;QACZn4E,KAAA,CAAM+jE,YAAN;MADY,CAAd,MAEO;QACL/jE,KAAA,CAAMgkE,WAAN;MADK;MAGPhkE,KAAA,CAAMqI,GAAN,CAAUrG,SAAV,CAAoB2U,MAApB,CAA2B,SAA3B,EAAsCwhE,QAAtC;IAN4C;EALhB;EAkBhC,CAAAF,UAAA,EAAa;IACX,IAAI,CAAC,KAAK,CAAAlE,SAAV,EAAsB;MACpB,KAAK,CAAAA,SAAL,GAAkB,IAAlB;MACA,WAAW/zE,KAAX,IAAoB,KAAK,CAAAszE,SAAL,CAAgBxmE,MAAhB,EAApB,EAA8C;QAC5C9M,KAAA,CAAMokE,MAAN;MAD4C;IAF1B;EADX;EAYb,CAAA4T,WAAA,EAAc;IACZ,KAAK3R,WAAL;IACA,IAAI,KAAK,CAAA0N,SAAT,EAAqB;MACnB,KAAK,CAAAA,SAAL,GAAkB,KAAlB;MACA,WAAW/zE,KAAX,IAAoB,KAAK,CAAAszE,SAAL,CAAgBxmE,MAAhB,EAApB,EAA8C;QAC5C9M,KAAA,CAAMykE,OAAN;MAD4C;IAF3B;EAFT;EAedgC,WAAW17C,SAAX,EAAsB;IACpB,MAAMs4C,OAAA,GAAU,EAAhB;IACA,WAAWjM,MAAX,IAAqB,KAAK,CAAAic,UAAL,CAAiBvmE,MAAjB,EAArB,EAAgD;MAC9C,IAAIsqD,MAAA,CAAOrsC,SAAP,KAAqBA,SAAzB,EAAoC;QAClCs4C,OAAA,CAAQv7D,IAAR,CAAasvD,MAAb;MADkC;IADU;IAKhD,OAAOiM,OAAP;EAPoB;EAetB+U,UAAU12E,EAAV,EAAc;IACZ,OAAO,KAAK,CAAA2xE,UAAL,CAAiBjnE,GAAjB,CAAqB1K,EAArB,CAAP;EADY;EAQd4jE,UAAUlO,MAAV,EAAkB;IAChB,KAAK,CAAAic,UAAL,CAAiBh4D,GAAjB,CAAqB+7C,MAAA,CAAO11D,EAA5B,EAAgC01D,MAAhC;EADgB;EAQlB+N,aAAa/N,MAAb,EAAqB;IACnB,IAAIA,MAAA,CAAO/uD,GAAP,CAAWs0D,QAAX,CAAoBp7D,QAAA,CAAS4Q,aAA7B,CAAJ,EAAiD;MAC/C,IAAI,KAAK,CAAA0hE,2BAAT,EAAuC;QACrCzmD,YAAA,CAAa,KAAK,CAAAymD,2BAAlB;MADqC;MAGvC,KAAK,CAAAA,2BAAL,GAAoC5uE,UAAA,CAAW,MAAM;QAGnD,KAAKqxE,kBAAL;QACA,KAAK,CAAAzC,2BAAL,GAAoC,IAApC;MAJmD,CAAjB,EAKjC,CALiC,CAApC;IAJ+C;IAWjD,KAAK,CAAAR,UAAL,CAAiB32D,MAAjB,CAAwB06C,MAAA,CAAO11D,EAA/B;IACA,KAAK0kE,QAAL,CAAchP,MAAd;IACA,IACE,CAACA,MAAA,CAAOZ,mBAAR,IACA,CAAC,KAAK,CAAAkd,4BAAL,CAAmC3qE,GAAnC,CAAuCquD,MAAA,CAAOZ,mBAA9C,CAFH,EAGE;MACA,KAAK,CAAAl2D,iBAAL,EAAyBqU,MAAzB,CAAgCyiD,MAAA,CAAO11D,EAAvC;IADA;EAjBiB;EA0BrBwjE,4BAA4B9N,MAA5B,EAAoC;IAClC,KAAK,CAAAsc,4BAAL,CAAmCzxE,GAAnC,CAAuCm1D,MAAA,CAAOZ,mBAA9C;IACAY,MAAA,CAAOD,OAAP,GAAiB,IAAjB;EAFkC;EAUpCoN,2BAA2B/N,mBAA3B,EAAgD;IAC9C,OAAO,KAAK,CAAAkd,4BAAL,CAAmC3qE,GAAnC,CAAuCytD,mBAAvC,CAAP;EAD8C;EAQhDuO,+BAA+B3N,MAA/B,EAAuC;IACrC,KAAK,CAAAsc,4BAAL,CAAmCh3D,MAAnC,CAA0C06C,MAAA,CAAOZ,mBAAjD;IACAY,MAAA,CAAOD,OAAP,GAAiB,KAAjB;EAFqC;EASvC,CAAAqgB,iBAAkBpgB,MAAlB,EAA0B;IACxB,MAAMp3D,KAAA,GAAQ,KAAK,CAAAszE,SAAL,CAAgBlnE,GAAhB,CAAoBgrD,MAAA,CAAOrsC,SAA3B,CAAd;IACA,IAAI/qB,KAAJ,EAAW;MACTA,KAAA,CAAMwkE,YAAN,CAAmBpN,MAAnB;IADS,CAAX,MAEO;MACL,KAAKkO,SAAL,CAAelO,MAAf;IADK;EAJiB;EAa1BuN,gBAAgBvN,MAAhB,EAAwB;IACtB,IAAI,KAAK,CAAAgc,YAAL,KAAuBhc,MAA3B,EAAmC;MACjC;IADiC;IAInC,KAAK,CAAAgc,YAAL,GAAqBhc,MAArB;IACA,IAAIA,MAAJ,EAAY;MACV,KAAK,CAAAygB,gBAAL,CAAuBzgB,MAAA,CAAOzE,kBAA9B;IADU;EANU;EAexBuT,eAAe9O,MAAf,EAAuB;IACrB,IAAI,KAAK,CAAA8c,eAAL,CAAsBnrE,GAAtB,CAA0BquD,MAA1B,CAAJ,EAAuC;MACrC,KAAK,CAAA8c,eAAL,CAAsBx3D,MAAtB,CAA6B06C,MAA7B;MACAA,MAAA,CAAOgP,QAAP;MACA,KAAK,CAAAuR,oBAAL,CAA2B;QACzBvC,iBAAA,EAAmB,KAAKwB;MADC,CAA3B;MAGA;IANqC;IAQvC,KAAK,CAAA1C,eAAL,CAAsBjyE,GAAtB,CAA0Bm1D,MAA1B;IACAA,MAAA,CAAOkF,MAAP;IACA,KAAK,CAAAub,gBAAL,CAAuBzgB,MAAA,CAAOzE,kBAA9B;IACA,KAAK,CAAAglB,oBAAL,CAA2B;MACzBvC,iBAAA,EAAmB;IADM,CAA3B;EAZqB;EAqBvBnP,YAAY7O,MAAZ,EAAoB;IAClB,WAAWihB,EAAX,IAAiB,KAAK,CAAAnE,eAAtB,EAAwC;MACtC,IAAImE,EAAA,KAAOjhB,MAAX,EAAmB;QACjBihB,EAAA,CAAGjS,QAAH;MADiB;IADmB;IAKxC,KAAK,CAAA8N,eAAL,CAAsBz+D,KAAtB;IAEA,KAAK,CAAAy+D,eAAL,CAAsBjyE,GAAtB,CAA0Bm1D,MAA1B;IACAA,MAAA,CAAOkF,MAAP;IACA,KAAK,CAAAub,gBAAL,CAAuBzgB,MAAA,CAAOzE,kBAA9B;IACA,KAAK,CAAAglB,oBAAL,CAA2B;MACzBvC,iBAAA,EAAmB;IADM,CAA3B;EAXkB;EAoBpBjP,WAAW/O,MAAX,EAAmB;IACjB,OAAO,KAAK,CAAA8c,eAAL,CAAsBnrE,GAAtB,CAA0BquD,MAA1B,CAAP;EADiB;EAInB,IAAIkhB,mBAAJA,CAAA,EAA0B;IACxB,OAAO,KAAK,CAAApE,eAAL,CAAsBpnE,MAAtB,GAA+B2jE,IAA/B,GAAsCtjE,KAA7C;EADwB;EAQ1Bi5D,SAAShP,MAAT,EAAiB;IACfA,MAAA,CAAOgP,QAAP;IACA,KAAK,CAAA8N,eAAL,CAAsBx3D,MAAtB,CAA6B06C,MAA7B;IACA,KAAK,CAAAugB,oBAAL,CAA2B;MACzBvC,iBAAA,EAAmB,KAAKwB;IADC,CAA3B;EAHe;EAQjB,IAAIA,YAAJA,CAAA,EAAmB;IACjB,OAAO,KAAK,CAAA1C,eAAL,CAAsBjgE,IAAtB,KAA+B,CAAtC;EADiB;EAInB,IAAIo1D,cAAJA,CAAA,EAAqB;IACnB,OACE,KAAK,CAAA6K,eAAL,CAAsBjgE,IAAtB,KAA+B,CAA/B,IACA,KAAKqkE,mBAAL,CAAyBjP,cAF3B;EADmB;EAUrBlW,KAAA,EAAO;IACL,KAAK,CAAAqgB,cAAL,CAAqBrgB,IAArB;IACA,KAAK,CAAAwkB,oBAAL,CAA2B;MACzBhF,kBAAA,EAAoB,KAAK,CAAAa,cAAL,CAAqBb,kBAArB,EADK;MAEzBC,kBAAA,EAAoB,IAFK;MAGzB9tB,OAAA,EAAS,KAAK,CAAAA,OAAL;IAHgB,CAA3B;EAFK;EAYP4tB,KAAA,EAAO;IACL,KAAK,CAAAc,cAAL,CAAqBd,IAArB;IACA,KAAK,CAAAiF,oBAAL,CAA2B;MACzBhF,kBAAA,EAAoB,IADK;MAEzBC,kBAAA,EAAoB,KAAK,CAAAY,cAAL,CAAqBZ,kBAArB,EAFK;MAGzB9tB,OAAA,EAAS,KAAK,CAAAA,OAAL;IAHgB,CAA3B;EAFK;EAaPmO,YAAYl4C,MAAZ,EAAoB;IAClB,KAAK,CAAAy4D,cAAL,CAAqBvxE,GAArB,CAAyB8Y,MAAzB;IACA,KAAK,CAAA48D,oBAAL,CAA2B;MACzBhF,kBAAA,EAAoB,IADK;MAEzBC,kBAAA,EAAoB,KAFK;MAGzB9tB,OAAA,EAAS,KAAK,CAAAA,OAAL;IAHgB,CAA3B;EAFkB;EASpB,CAAAA,QAAA,EAAW;IACT,IAAI,KAAK,CAAAuuB,UAAL,CAAiBp/D,IAAjB,KAA0B,CAA9B,EAAiC;MAC/B,OAAO,IAAP;IAD+B;IAIjC,IAAI,KAAK,CAAAo/D,UAAL,CAAiBp/D,IAAjB,KAA0B,CAA9B,EAAiC;MAC/B,WAAWmjD,MAAX,IAAqB,KAAK,CAAAic,UAAL,CAAiBvmE,MAAjB,EAArB,EAAgD;QAC9C,OAAOsqD,MAAA,CAAOtS,OAAP,EAAP;MAD8C;IADjB;IAMjC,OAAO,KAAP;EAXS;EAiBXpoC,OAAA,EAAS;IACP,KAAK+0C,cAAL;IACA,IAAI,CAAC,KAAKmlB,YAAV,EAAwB;MACtB;IADsB;IAIxB,MAAMvT,OAAA,GAAU,CAAC,GAAG,KAAK,CAAA6Q,eAAT,CAAhB;IACA,MAAMhhB,GAAA,GAAMA,CAAA,KAAM;MAChB,WAAWkE,MAAX,IAAqBiM,OAArB,EAA8B;QAC5BjM,MAAA,CAAOziD,MAAP;MAD4B;IADd,CAAlB;IAKA,MAAMw+C,IAAA,GAAOA,CAAA,KAAM;MACjB,WAAWiE,MAAX,IAAqBiM,OAArB,EAA8B;QAC5B,KAAK,CAAAmU,gBAAL,CAAuBpgB,MAAvB;MAD4B;IADb,CAAnB;IAMA,KAAKnE,WAAL,CAAiB;MAAEC,GAAF;MAAOC,IAAP;MAAaC,QAAA,EAAU;IAAvB,CAAjB;EAlBO;EAqBT3B,eAAA,EAAiB;IAEf,KAAK,CAAA2hB,YAAL,EAAoB3hB,cAApB;EAFe;EAKjB+jB,sBAAA,EAAwB;IACtB,OAAO,KAAK,CAAApC,YAAL,IAAsB,KAAKwD,YAAlC;EADsB;EAQxB,CAAAa,cAAepU,OAAf,EAAwB;IACtB,KAAK,CAAA6Q,eAAL,CAAsBz+D,KAAtB;IACA,WAAW2hD,MAAX,IAAqBiM,OAArB,EAA8B;MAC5B,IAAIjM,MAAA,CAAOtS,OAAP,EAAJ,EAAsB;QACpB;MADoB;MAGtB,KAAK,CAAAovB,eAAL,CAAsBjyE,GAAtB,CAA0Bm1D,MAA1B;MACAA,MAAA,CAAOkF,MAAP;IAL4B;IAO9B,KAAK,CAAAqb,oBAAL,CAA2B;MAAEvC,iBAAA,EAAmB;IAArB,CAA3B;EATsB;EAexBS,UAAA,EAAY;IACV,WAAWze,MAAX,IAAqB,KAAK,CAAA8c,eAA1B,EAA4C;MAC1C9c,MAAA,CAAO3B,MAAP;IAD0C;IAG5C,KAAK,CAAAgiB,aAAL,CAAoB,KAAK,CAAApE,UAAL,CAAiBvmE,MAAjB,EAApB;EAJU;EAUZu5D,YAAA,EAAc;IACZ,IAAI,KAAK,CAAA+M,YAAT,EAAwB;MAEtB,KAAK,CAAAA,YAAL,CAAmB3hB,cAAnB;MACA;IAHsB;IAMxB,IAAI,CAAC,KAAKmlB,YAAV,EAAwB;MACtB;IADsB;IAGxB,WAAWxf,MAAX,IAAqB,KAAK,CAAA8c,eAA1B,EAA4C;MAC1C9c,MAAA,CAAOgP,QAAP;IAD0C;IAG5C,KAAK,CAAA8N,eAAL,CAAsBz+D,KAAtB;IACA,KAAK,CAAAkiE,oBAAL,CAA2B;MACzBvC,iBAAA,EAAmB;IADM,CAA3B;EAdY;EAmBd3hB,yBAAyBx6D,CAAzB,EAA4BI,CAA5B,EAA+Bk/E,QAAA,GAAW,KAA1C,EAAiD;IAC/C,IAAI,CAACA,QAAL,EAAe;MACb,KAAK9mB,cAAL;IADa;IAGf,IAAI,CAAC,KAAKmlB,YAAV,EAAwB;MACtB;IADsB;IAIxB,KAAK,CAAAvB,WAAL,CAAkB,CAAlB,KAAwBp8E,CAAxB;IACA,KAAK,CAAAo8E,WAAL,CAAkB,CAAlB,KAAwBh8E,CAAxB;IACA,MAAM,CAACm/E,MAAD,EAASC,MAAT,IAAmB,KAAK,CAAApD,WAA9B;IACA,MAAMhS,OAAA,GAAU,CAAC,GAAG,KAAK,CAAA6Q,eAAT,CAAhB;IAIA,MAAM5S,YAAA,GAAe,IAArB;IAEA,IAAI,KAAK,CAAAgU,oBAAT,EAAgC;MAC9BloD,YAAA,CAAa,KAAK,CAAAkoD,oBAAlB;IAD8B;IAIhC,KAAK,CAAAA,oBAAL,GAA6BrwE,UAAA,CAAW,MAAM;MAC5C,KAAK,CAAAqwE,oBAAL,GAA6B,IAA7B;MACA,KAAK,CAAAD,WAAL,CAAkB,CAAlB,IAAuB,KAAK,CAAAA,WAAL,CAAkB,CAAlB,IAAuB,CAA9C;MAEA,KAAKpiB,WAAL,CAAiB;QACfC,GAAA,EAAKA,CAAA,KAAM;UACT,WAAWkE,MAAX,IAAqBiM,OAArB,EAA8B;YAC5B,IAAI,KAAK,CAAAgQ,UAAL,CAAiBtqE,GAAjB,CAAqBquD,MAAA,CAAO11D,EAA5B,CAAJ,EAAqC;cACnC01D,MAAA,CAAOsS,eAAP,CAAuB8O,MAAvB,EAA+BC,MAA/B;YADmC;UADT;QADrB,CADI;QAQftlB,IAAA,EAAMA,CAAA,KAAM;UACV,WAAWiE,MAAX,IAAqBiM,OAArB,EAA8B;YAC5B,IAAI,KAAK,CAAAgQ,UAAL,CAAiBtqE,GAAjB,CAAqBquD,MAAA,CAAO11D,EAA5B,CAAJ,EAAqC;cACnC01D,MAAA,CAAOsS,eAAP,CAAuB,CAAC8O,MAAxB,EAAgC,CAACC,MAAjC;YADmC;UADT;QADpB,CARG;QAefrlB,QAAA,EAAU;MAfK,CAAjB;IAJ4C,CAAjB,EAqB1BkO,YArB0B,CAA7B;IAuBA,WAAWlK,MAAX,IAAqBiM,OAArB,EAA8B;MAC5BjM,MAAA,CAAOsS,eAAP,CAAuBzwE,CAAvB,EAA0BI,CAA1B;IAD4B;EA5CiB;EAoDjD40E,iBAAA,EAAmB;IAGjB,IAAI,CAAC,KAAK2I,YAAV,EAAwB;MACtB;IADsB;IAIxB,KAAKH,iBAAL,CAAuB,IAAvB;IACA,KAAK,CAAA9C,eAAL,GAAwB,IAAIxnE,GAAJ,EAAxB;IACA,WAAWirD,MAAX,IAAqB,KAAK,CAAA8c,eAA1B,EAA4C;MAC1C,KAAK,CAAAP,eAAL,CAAsBt4D,GAAtB,CAA0B+7C,MAA1B,EAAkC;QAChC+T,MAAA,EAAQ/T,MAAA,CAAOn+D,CADiB;QAEhCmyE,MAAA,EAAQhU,MAAA,CAAO/9D,CAFiB;QAGhCq/E,cAAA,EAAgBthB,MAAA,CAAOrsC,SAHS;QAIhC6gD,IAAA,EAAM,CAJ0B;QAKhCC,IAAA,EAAM,CAL0B;QAMhC8M,YAAA,EAAc,CAAC;MANiB,CAAlC;IAD0C;EAT3B;EAyBnBvK,eAAA,EAAiB;IACf,IAAI,CAAC,KAAK,CAAAuF,eAAV,EAA4B;MAC1B,OAAO,KAAP;IAD0B;IAG5B,KAAK8C,iBAAL,CAAuB,KAAvB;IACA,MAAMt8E,GAAA,GAAM,KAAK,CAAAw5E,eAAjB;IACA,KAAK,CAAAA,eAAL,GAAwB,IAAxB;IACA,IAAIiF,sBAAA,GAAyB,KAA7B;IAEA,WAAW,CAAC;MAAE3/E,CAAF;MAAKI,CAAL;MAAQ0xB;IAAR,CAAD,EAAsB5d,KAAtB,CAAX,IAA2ChT,GAA3C,EAAgD;MAC9CgT,KAAA,CAAMy+D,IAAN,GAAa3yE,CAAb;MACAkU,KAAA,CAAM0+D,IAAN,GAAaxyE,CAAb;MACA8T,KAAA,CAAMwrE,YAAN,GAAqB5tD,SAArB;MACA6tD,sBAAA,KACE3/E,CAAA,KAAMkU,KAAA,CAAMg+D,MAAZ,IACA9xE,CAAA,KAAM8T,KAAA,CAAMi+D,MADZ,IAEArgD,SAAA,KAAc5d,KAAA,CAAMurE,cAHtB;IAJ8C;IAUhD,IAAI,CAACE,sBAAL,EAA6B;MAC3B,OAAO,KAAP;IAD2B;IAI7B,MAAMC,IAAA,GAAOA,CAACzhB,MAAD,EAASn+D,CAAT,EAAYI,CAAZ,EAAe0xB,SAAf,KAA6B;MACxC,IAAI,KAAK,CAAAsoD,UAAL,CAAiBtqE,GAAjB,CAAqBquD,MAAA,CAAO11D,EAA5B,CAAJ,EAAqC;QAInC,MAAMf,MAAA,GAAS,KAAK,CAAA2yE,SAAL,CAAgBlnE,GAAhB,CAAoB2e,SAApB,CAAf;QACA,IAAIpqB,MAAJ,EAAY;UACVy2D,MAAA,CAAOiX,qBAAP,CAA6B1tE,MAA7B,EAAqC1H,CAArC,EAAwCI,CAAxC;QADU,CAAZ,MAEO;UACL+9D,MAAA,CAAOrsC,SAAP,GAAmBA,SAAnB;UACAqsC,MAAA,CAAOn+D,CAAP,GAAWA,CAAX;UACAm+D,MAAA,CAAO/9D,CAAP,GAAWA,CAAX;QAHK;MAP4B;IADG,CAA1C;IAgBA,KAAK45D,WAAL,CAAiB;MACfC,GAAA,EAAKA,CAAA,KAAM;QACT,WAAW,CAACkE,MAAD,EAAS;UAAEwU,IAAF;UAAQC,IAAR;UAAc8M;QAAd,CAAT,CAAX,IAAqDx+E,GAArD,EAA0D;UACxD0+E,IAAA,CAAKzhB,MAAL,EAAawU,IAAb,EAAmBC,IAAnB,EAAyB8M,YAAzB;QADwD;MADjD,CADI;MAMfxlB,IAAA,EAAMA,CAAA,KAAM;QACV,WAAW,CAACiE,MAAD,EAAS;UAAE+T,MAAF;UAAUC,MAAV;UAAkBsN;QAAlB,CAAT,CAAX,IAA2Dv+E,GAA3D,EAAgE;UAC9D0+E,IAAA,CAAKzhB,MAAL,EAAa+T,MAAb,EAAqBC,MAArB,EAA6BsN,cAA7B;QAD8D;MADtD,CANG;MAWftlB,QAAA,EAAU;IAXK,CAAjB;IAcA,OAAO,IAAP;EArDe;EA6DjB+a,oBAAoBhjC,EAApB,EAAwBC,EAAxB,EAA4B;IAC1B,IAAI,CAAC,KAAK,CAAAuoC,eAAV,EAA4B;MAC1B;IAD0B;IAG5B,WAAWvc,MAAX,IAAqB,KAAK,CAAAuc,eAAL,CAAsBvtE,IAAtB,EAArB,EAAmD;MACjDgxD,MAAA,CAAOyS,IAAP,CAAY1+B,EAAZ,EAAgBC,EAAhB;IADiD;EAJzB;EAc5BuoB,QAAQyD,MAAR,EAAgB;IACd,IAAIA,MAAA,CAAOz2D,MAAP,KAAkB,IAAtB,EAA4B;MAC1B,MAAMA,MAAA,GAAS,KAAKm3E,QAAL,CAAc1gB,MAAA,CAAOrsC,SAArB,CAAf;MACA,IAAIpqB,MAAJ,EAAY;QACVA,MAAA,CAAOykE,YAAP,CAAoBhO,MAApB;QACAz2D,MAAA,CAAO6jE,YAAP,CAAoBpN,MAApB;MAFU,CAAZ,MAGO;QACL,KAAKkO,SAAL,CAAelO,MAAf;QACA,KAAKwF,sBAAL,CAA4BxF,MAA5B;QACAA,MAAA,CAAOzD,OAAP;MAHK;IALmB,CAA5B,MAUO;MACLyD,MAAA,CAAOz2D,MAAP,CAAc6jE,YAAd,CAA2BpN,MAA3B;IADK;EAXO;EAgBhB,IAAIsgB,wBAAJA,CAAA,EAA+B;IAC7B,OACE,KAAK7S,SAAL,IAAkB9O,uBAAlB,MACC,KAAK,CAAAme,eAAL,CAAsBjgE,IAAtB,KAA+B,CAA/B,IACC,KAAKqkE,mBAAL,CAAyBviB,uBAAzB,EAHJ;EAD6B;EAa/B+iB,SAAS1hB,MAAT,EAAiB;IACf,OAAO,KAAK,CAAAgc,YAAL,KAAuBhc,MAA9B;EADe;EAQjByN,UAAA,EAAY;IACV,OAAO,KAAK,CAAAuO,YAAZ;EADU;EAQZtP,QAAA,EAAU;IACR,OAAO,KAAK,CAAAh6D,IAAZ;EADQ;EAIV,IAAIy2D,YAAJA,CAAA,EAAmB;IACjB,OAAOllE,uDAAA,CAAO,IAAP,EAAa,cAAb,EAA6B,IAAI+1E,YAAJ,EAA7B,CAAP;EADiB;AAtxCW;;;;;;;;;;;;;ACzfhC;AAMA;AAOA;AAMA,SAAS+H,kBAATA,CAA4BC,OAA5B,EAAqC53D,eAArC,EAAsD63D,eAAtD,EAAuE;EACrE,OAAO;IACLC,MAAA,EAAQ,KADH;IAELF,OAFK;IAGLG,MAAA,EAAQF,eAAA,CAAgBE,MAHnB;IAILzvE,IAAA,EAAM,MAJD;IAKL0vE,WAAA,EAAah4D,eAAA,GAAkB,SAAlB,GAA8B,aALtC;IAMLi4D,QAAA,EAAU;EANL,CAAP;AADqE;AAWvE,SAASC,aAATA,CAAuBn4D,WAAvB,EAAoC;EAClC,MAAM63D,OAAA,GAAU,IAAIO,OAAJ,EAAhB;EACA,WAAW7oC,QAAX,IAAuBvvB,WAAvB,EAAoC;IAClC,MAAMpU,KAAA,GAAQoU,WAAA,CAAYuvB,QAAZ,CAAd;IACA,IAAI3jC,KAAA,KAAU8E,SAAd,EAAyB;MACvB;IADuB;IAGzBmnE,OAAA,CAAQ1xE,MAAR,CAAeopC,QAAf,EAAyB3jC,KAAzB;EALkC;EAOpC,OAAOisE,OAAP;AATkC;AAYpC,SAASQ,cAATA,CAAwB98D,GAAxB,EAA6B;EAC3B,IAAIA,GAAA,YAAe0J,UAAnB,EAA+B;IAC7B,OAAO1J,GAAA,CAAIsJ,MAAX;EAD6B;EAG/B,IAAItJ,GAAA,YAAe8Y,WAAnB,EAAgC;IAC9B,OAAO9Y,GAAP;EAD8B;EAGhCthB,qDAAA,CAAM,4CAA2CshB,GAA5C,EAAL;EACA,OAAO,IAAI0J,UAAJ,CAAe1J,GAAf,EAAoBsJ,MAA3B;AAR2B;AAY7B,MAAMjG,cAAN,CAAqB;EACnBvgB,YAAYuK,MAAZ,EAAoB;IAClB,KAAKA,MAAL,GAAcA,MAAd;IACA,KAAK0vE,MAAL,GAAc,YAAYz/D,IAAZ,CAAiBjQ,MAAA,CAAOK,GAAxB,CAAd;IACA,KAAK+W,WAAL,GAAoB,KAAKs4D,MAAL,IAAe1vE,MAAA,CAAOoX,WAAvB,IAAuC,EAA1D;IAEA,KAAKu4D,kBAAL,GAA0B,IAA1B;IACA,KAAKC,oBAAL,GAA4B,EAA5B;EANkB;EASpB,IAAIC,sBAAJA,CAAA,EAA6B;IAC3B,OAAO,KAAKF,kBAAL,EAAyBG,OAAzB,IAAoC,CAA3C;EAD2B;EAI7BxkD,cAAA,EAAgB;IACd1X,uDAAA,CACE,CAAC,KAAK+7D,kBADR,EAEE,uDAFF;IAIA,KAAKA,kBAAL,GAA0B,IAAII,oBAAJ,CAAyB,IAAzB,CAA1B;IACA,OAAO,KAAKJ,kBAAZ;EANc;EAShBtjD,eAAe7O,KAAf,EAAsBS,GAAtB,EAA2B;IACzB,IAAIA,GAAA,IAAO,KAAK4xD,sBAAhB,EAAwC;MACtC,OAAO,IAAP;IADsC;IAGxC,MAAMpqD,MAAA,GAAS,IAAIuqD,yBAAJ,CAA8B,IAA9B,EAAoCxyD,KAApC,EAA2CS,GAA3C,CAAf;IACA,KAAK2xD,oBAAL,CAA0BjyE,IAA1B,CAA+B8nB,MAA/B;IACA,OAAOA,MAAP;EANyB;EAS3B2F,kBAAkBlH,MAAlB,EAA0B;IACxB,KAAKyrD,kBAAL,EAAyBxpD,MAAzB,CAAgCjC,MAAhC;IAEA,WAAWuB,MAAX,IAAqB,KAAKmqD,oBAAL,CAA0Bl/E,KAA1B,CAAgC,CAAhC,CAArB,EAAyD;MACvD+0B,MAAA,CAAOU,MAAP,CAAcjC,MAAd;IADuD;EAHjC;AAhCP;AA0CrB,MAAM6rD,oBAAN,CAA2B;EACzBt6E,YAAYw6E,MAAZ,EAAoB;IAClB,KAAKC,OAAL,GAAeD,MAAf;IACA,KAAKE,OAAL,GAAe,IAAf;IACA,KAAKL,OAAL,GAAe,CAAf;IACA,KAAKM,SAAL,GAAiB,IAAjB;IACA,MAAMpwE,MAAA,GAASiwE,MAAA,CAAOjwE,MAAtB;IACA,KAAKqwE,gBAAL,GAAwBrwE,MAAA,CAAOqX,eAAP,IAA0B,KAAlD;IACA,KAAKi5D,cAAL,GAAsBtwE,MAAA,CAAOjD,MAA7B;IACA,KAAKwzE,kBAAL,GAA0B,IAAIl8D,8DAAJ,EAA1B;IACA,KAAKm8D,aAAL,GAAqBxwE,MAAA,CAAOgZ,YAAP,IAAuB,KAA5C;IACA,KAAKy3D,eAAL,GAAuBzwE,MAAA,CAAOyX,cAA9B;IACA,IAAI,CAAC,KAAKg5D,eAAN,IAAyB,CAAC,KAAKD,aAAnC,EAAkD;MAChD,KAAKA,aAAL,GAAqB,IAArB;IADgD;IAIlD,KAAKE,gBAAL,GAAwB,IAAIC,eAAJ,EAAxB;IACA,KAAKC,qBAAL,GAA6B,CAAC5wE,MAAA,CAAOiZ,aAArC;IACA,KAAK43D,iBAAL,GAAyB,CAAC7wE,MAAA,CAAOgZ,YAAjC;IAEA,KAAK83D,QAAL,GAAgBvB,aAAA,CAAc,KAAKW,OAAL,CAAa94D,WAA3B,CAAhB;IAEA,MAAM/W,GAAA,GAAML,MAAA,CAAOK,GAAnB;IACAktB,KAAA,CACEltB,GADF,EAEE2uE,kBAAA,CACE,KAAK8B,QADP,EAEE,KAAKT,gBAFP,EAGE,KAAKK,gBAHP,CAFF,EAQGh2D,IARH,CAQQskC,QAAA,IAAY;MAChB,IAAI,CAAC+vB,yEAAA,CAAuB/vB,QAAA,CAASvyB,MAAhC,CAAL,EAA8C;QAC5C,MAAMmiD,4EAAA,CAA0B5vB,QAAA,CAASvyB,MAAnC,EAA2CpsB,GAA3C,CAAN;MAD4C;MAG9C,KAAK8vE,OAAL,GAAenxB,QAAA,CAAS1C,IAAT,CAAcz2B,SAAd,EAAf;MACA,KAAK0qD,kBAAL,CAAwBv1D,OAAxB;MAEA,MAAM+1D,iBAAA,GAAoBh1E,IAAA,IAAQ;QAChC,OAAOijD,QAAA,CAASiwB,OAAT,CAAiBhtE,GAAjB,CAAqBlG,IAArB,CAAP;MADgC,CAAlC;MAGA,MAAM;QAAEi1E,kBAAF;QAAsBC;MAAtB,IACJnC,mFAAA,CAAiC;QAC/BiC,iBAD+B;QAE/BrB,MAAA,EAAQ,KAAKQ,OAAL,CAAaR,MAFU;QAG/Bj4D,cAAA,EAAgB,KAAKg5D,eAHU;QAI/Bz3D,YAAA,EAAc,KAAKw3D;MAJY,CAAjC,CADF;MAQA,KAAKK,iBAAL,GAAyBG,kBAAzB;MAEA,KAAKV,cAAL,GAAsBW,eAAA,IAAmB,KAAKX,cAA9C;MAEA,KAAKF,SAAL,GAAiBvB,4EAAA,CAA0BkC,iBAA1B,CAAjB;MAIA,IAAI,CAAC,KAAKH,qBAAN,IAA+B,KAAKC,iBAAxC,EAA2D;QACzD,KAAK1qD,MAAL,CAAY,IAAIzS,2DAAJ,CAAmB,wBAAnB,CAAZ;MADyD;IA1B3C,CARpB,EAsCGmI,KAtCH,CAsCS,KAAK00D,kBAAL,CAAwBx0D,MAtCjC;IAwCA,KAAKU,UAAL,GAAkB,IAAlB;EA9DkB;EAiEpB,IAAIuP,YAAJA,CAAA,EAAmB;IACjB,OAAO,KAAKukD,kBAAL,CAAwB91D,OAA/B;EADiB;EAInB,IAAI3Y,QAAJA,CAAA,EAAe;IACb,OAAO,KAAKsuE,SAAZ;EADa;EAIf,IAAIjkD,aAAJA,CAAA,EAAoB;IAClB,OAAO,KAAKmkD,cAAZ;EADkB;EAIpB,IAAIpkD,gBAAJA,CAAA,EAAuB;IACrB,OAAO,KAAK2kD,iBAAZ;EADqB;EAIvB,IAAI5kD,oBAAJA,CAAA,EAA2B;IACzB,OAAO,KAAK2kD,qBAAZ;EADyB;EAI3B,MAAMlrD,IAANA,CAAA,EAAa;IACX,MAAM,KAAK6qD,kBAAL,CAAwB91D,OAA9B;IACA,MAAM;MAAEzX,KAAF;MAAS2iB;IAAT,IAAkB,MAAM,KAAKwqD,OAAL,CAAazqD,IAAb,EAA9B;IACA,IAAIC,IAAJ,EAAU;MACR,OAAO;QAAE3iB,KAAF;QAAS2iB;MAAT,CAAP;IADQ;IAGV,KAAKmqD,OAAL,IAAgB9sE,KAAA,CAAMsZ,UAAtB;IACA,KAAKG,UAAL,GAAkB;MAChBkB,MAAA,EAAQ,KAAKmyD,OADG;MAEhBlyD,KAAA,EAAO,KAAK0yD;IAFI,CAAlB;IAKA,OAAO;MAAEttE,KAAA,EAAOysE,cAAA,CAAezsE,KAAf,CAAT;MAAgC2iB,IAAA,EAAM;IAAtC,CAAP;EAZW;EAebQ,OAAOjC,MAAP,EAAe;IACb,KAAKisD,OAAL,EAAchqD,MAAd,CAAqBjC,MAArB;IACA,KAAKwsD,gBAAL,CAAsBxyD,KAAtB;EAFa;AArGU;AA4G3B,MAAM8xD,yBAAN,CAAgC;EAC9Bv6E,YAAYw6E,MAAZ,EAAoBzyD,KAApB,EAA2BS,GAA3B,EAAgC;IAC9B,KAAKiyD,OAAL,GAAeD,MAAf;IACA,KAAKE,OAAL,GAAe,IAAf;IACA,KAAKL,OAAL,GAAe,CAAf;IACA,MAAM9vE,MAAA,GAASiwE,MAAA,CAAOjwE,MAAtB;IACA,KAAKqwE,gBAAL,GAAwBrwE,MAAA,CAAOqX,eAAP,IAA0B,KAAlD;IACA,KAAK65D,eAAL,GAAuB,IAAI78D,8DAAJ,EAAvB;IACA,KAAKu8D,qBAAL,GAA6B,CAAC5wE,MAAA,CAAOiZ,aAArC;IAEA,KAAKy3D,gBAAL,GAAwB,IAAIC,eAAJ,EAAxB;IACA,KAAKG,QAAL,GAAgBvB,aAAA,CAAc,KAAKW,OAAL,CAAa94D,WAA3B,CAAhB;IACA,KAAK05D,QAAL,CAAcvzE,MAAd,CAAqB,OAArB,EAA+B,SAAQigB,KAAM,IAAGS,GAAA,GAAM,CAAxB,EAA9B;IAEA,MAAM5d,GAAA,GAAML,MAAA,CAAOK,GAAnB;IACAktB,KAAA,CACEltB,GADF,EAEE2uE,kBAAA,CACE,KAAK8B,QADP,EAEE,KAAKT,gBAFP,EAGE,KAAKK,gBAHP,CAFF,EAQGh2D,IARH,CAQQskC,QAAA,IAAY;MAChB,IAAI,CAAC+vB,yEAAA,CAAuB/vB,QAAA,CAASvyB,MAAhC,CAAL,EAA8C;QAC5C,MAAMmiD,4EAAA,CAA0B5vB,QAAA,CAASvyB,MAAnC,EAA2CpsB,GAA3C,CAAN;MAD4C;MAG9C,KAAK6wE,eAAL,CAAqBl2D,OAArB;MACA,KAAKm1D,OAAL,GAAenxB,QAAA,CAAS1C,IAAT,CAAcz2B,SAAd,EAAf;IALgB,CARpB,EAeGhK,KAfH,CAeS,KAAKq1D,eAAL,CAAqBn1D,MAf9B;IAiBA,KAAKU,UAAL,GAAkB,IAAlB;EA/B8B;EAkChC,IAAIwP,oBAAJA,CAAA,EAA2B;IACzB,OAAO,KAAK2kD,qBAAZ;EADyB;EAI3B,MAAMlrD,IAANA,CAAA,EAAa;IACX,MAAM,KAAKwrD,eAAL,CAAqBz2D,OAA3B;IACA,MAAM;MAAEzX,KAAF;MAAS2iB;IAAT,IAAkB,MAAM,KAAKwqD,OAAL,CAAazqD,IAAb,EAA9B;IACA,IAAIC,IAAJ,EAAU;MACR,OAAO;QAAE3iB,KAAF;QAAS2iB;MAAT,CAAP;IADQ;IAGV,KAAKmqD,OAAL,IAAgB9sE,KAAA,CAAMsZ,UAAtB;IACA,KAAKG,UAAL,GAAkB;MAAEkB,MAAA,EAAQ,KAAKmyD;IAAf,CAAlB;IAEA,OAAO;MAAE9sE,KAAA,EAAOysE,cAAA,CAAezsE,KAAf,CAAT;MAAgC2iB,IAAA,EAAM;IAAtC,CAAP;EATW;EAYbQ,OAAOjC,MAAP,EAAe;IACb,KAAKisD,OAAL,EAAchqD,MAAd,CAAqBjC,MAArB;IACA,KAAKwsD,gBAAL,CAAsBxyD,KAAtB;EAFa;AAnDe;;;;;;;;;;;;;AC5MhC;AAWA,MAAM7I,UAAN,CAAiB;EACf,CAAAg8D,WAAA,GAAe,IAAI5uE,GAAJ,EAAf;EAEAhN,YAAY;IACVqjB,aAAA,GAAgBC,UAAA,CAAW3hB,QADjB;IAEVsiB,YAAA,GAAe;EAFL,CAAZ,EAGG;IACD,KAAKolC,SAAL,GAAiBhmC,aAAjB;IAEA,KAAKw4D,eAAL,GAAuB,IAAI7uE,GAAJ,EAAvB;IACA,KAAKiX,YAAL,GAGM,IAHN;IAME,KAAK63D,eAAL,GAAuB,EAAvB;IACA,KAAKC,cAAL,GAAsB,CAAtB;EAXD;EAeHC,kBAAkBC,cAAlB,EAAkC;IAChC,KAAKJ,eAAL,CAAqBx5E,GAArB,CAAyB45E,cAAzB;IACA,KAAK5yB,SAAL,CAAe6yB,KAAf,CAAqB75E,GAArB,CAAyB45E,cAAzB;EAFgC;EAKlCE,qBAAqBF,cAArB,EAAqC;IACnC,KAAKJ,eAAL,CAAqB/+D,MAArB,CAA4Bm/D,cAA5B;IACA,KAAK5yB,SAAL,CAAe6yB,KAAf,CAAqBp/D,MAArB,CAA4Bm/D,cAA5B;EAFmC;EAKrCG,WAAW/xC,IAAX,EAAiB;IACf,IAAI,CAAC,KAAKpmB,YAAV,EAAwB;MACtB,KAAKA,YAAL,GAAoB,KAAKolC,SAAL,CAAeznD,aAAf,CAA6B,OAA7B,CAApB;MACA,KAAKynD,SAAL,CAAeiJ,eAAf,CACG8C,oBADH,CACwB,MADxB,EACgC,CADhC,EAEGttD,MAFH,CAEU,KAAKmc,YAFf;IAFsB;IAMxB,MAAMo4D,UAAA,GAAa,KAAKp4D,YAAL,CAAkBq4D,KAArC;IACAD,UAAA,CAAWD,UAAX,CAAsB/xC,IAAtB,EAA4BgyC,UAAA,CAAWE,QAAX,CAAoBj1E,MAAhD;EARe;EAWjBuO,MAAA,EAAQ;IACN,WAAWomE,cAAX,IAA6B,KAAKJ,eAAlC,EAAmD;MACjD,KAAKxyB,SAAL,CAAe6yB,KAAf,CAAqBp/D,MAArB,CAA4Bm/D,cAA5B;IADiD;IAGnD,KAAKJ,eAAL,CAAqBhmE,KAArB;IACA,KAAK,CAAA+lE,WAAL,CAAkB/lE,KAAlB;IAEA,IAAI,KAAKoO,YAAT,EAAuB;MAErB,KAAKA,YAAL,CAAkBlP,MAAlB;MACA,KAAKkP,YAAL,GAAoB,IAApB;IAHqB;EAPjB;EAcR,MAAMu4D,cAANA,CAAqB;IAAE1/B,cAAA,EAAgBz+B,IAAlB;IAAwBo+D;EAAxB,CAArB,EAA6D;IAC3D,IAAI,CAACp+D,IAAD,IAAS,KAAK,CAAAu9D,WAAL,CAAkBzyE,GAAlB,CAAsBkV,IAAA,CAAKu+B,UAA3B,CAAb,EAAqD;MACnD;IADmD;IAGrDz+B,uDAAA,CACE,CAAC,KAAK+E,eADR,EAEE,mEAFF;IAKA,IAAI,KAAKw5D,yBAAT,EAAoC;MAClC,MAAM;QAAE9/B,UAAF;QAAc/uC,GAAd;QAAmB7L;MAAnB,IAA6Bqc,IAAnC;MACA,MAAMs+D,QAAA,GAAW,IAAIC,QAAJ,CAAahgC,UAAb,EAAyB/uC,GAAzB,EAA8B7L,KAA9B,CAAjB;MACA,KAAKg6E,iBAAL,CAAuBW,QAAvB;MACA,IAAI;QACF,MAAMA,QAAA,CAASE,IAAT,EAAN;QACA,KAAK,CAAAjB,WAAL,CAAkBv5E,GAAlB,CAAsBu6C,UAAtB;QACA6/B,YAAA,GAAep+D,IAAf;MAHE,CAAJ,CAIE,MAAM;QACNziB,qDAAA,CACG,4BAA2ByiB,IAAA,CAAKy+D,YAAa,sDADhD;QAIA,KAAKX,oBAAL,CAA0BQ,QAA1B;MALM;MAOR;IAfkC;IAkBpCjhF,4DAAA,CACE,+DADF;EA3B2D;EAgC7D,MAAMib,IAANA,CAAW8gB,IAAX,EAAiB;IAEf,IAAIA,IAAA,CAAKslD,QAAL,IAAkBtlD,IAAA,CAAKymB,WAAL,IAAoB,CAACzmB,IAAA,CAAKqlB,cAAhD,EAAiE;MAC/D;IAD+D;IAGjErlB,IAAA,CAAKslD,QAAL,GAAgB,IAAhB;IAEA,IAAItlD,IAAA,CAAKqlB,cAAT,EAAyB;MACvB,MAAM,KAAK0/B,cAAL,CAAoB/kD,IAApB,CAAN;MACA;IAFuB;IAKzB,IAAI,KAAKilD,yBAAT,EAAoC;MAClC,MAAMT,cAAA,GAAiBxkD,IAAA,CAAKulD,oBAAL,EAAvB;MACA,IAAIf,cAAJ,EAAoB;QAClB,KAAKD,iBAAL,CAAuBC,cAAvB;QACA,IAAI;UACF,MAAMA,cAAA,CAAe/zD,MAArB;QADE,CAAJ,CAEE,OAAOf,EAAP,EAAW;UACXvrB,qDAAA,CAAM,wBAAuBqgF,cAAA,CAAegB,MAAO,OAAM91D,EAAG,IAA5D;UAGAsQ,IAAA,CAAKvU,eAAL,GAAuB,IAAvB;UACA,MAAMiE,EAAN;QALW;MAJK;MAYpB;IAdkC;IAkBpC,MAAMkjB,IAAA,GAAO5S,IAAA,CAAKylD,kBAAL,EAAb;IACA,IAAI7yC,IAAJ,EAAU;MACR,KAAK+xC,UAAL,CAAgB/xC,IAAhB;MAEA,IAAI,KAAK8yC,0BAAT,EAAqC;QACnC;MADmC;MAMrC,MAAM,IAAI73D,OAAJ,CAAYC,OAAA,IAAW;QAC3B,MAAMukC,OAAA,GAAU,KAAKszB,qBAAL,CAA2B73D,OAA3B,CAAhB;QACA,KAAK83D,qBAAL,CAA2B5lD,IAA3B,EAAiCqyB,OAAjC;MAF2B,CAAvB,CAAN;IATQ;EA/BK;EAgDjB,IAAI4yB,yBAAJA,CAAA,EAAgC;IAC9B,MAAMY,QAAA,GAAW,CAAC,CAAC,KAAKj0B,SAAL,EAAgB6yB,KAAnC;IAQA,OAAOzgF,uDAAA,CAAO,IAAP,EAAa,2BAAb,EAA0C6hF,QAA1C,CAAP;EAT8B;EAYhC,IAAIH,0BAAJA,CAAA,EAAiC;IAK/B,IAAII,SAAA,GAAY,KAAhB;IAEE,IAAI/+D,qDAAJ,EAAc;MAEZ++D,SAAA,GAAY,IAAZ;IAFY,CAAd,MAGO,IACL,OAAOC,SAAP,KAAqB,WAArB,IACA,OAAOA,SAAA,EAAWC,SAAlB,KAAgC,QADhC,IAIA,iCAAiCjjE,IAAjC,CAAsCgjE,SAAA,CAAUC,SAAhD,CALK,EAML;MAEAF,SAAA,GAAY,IAAZ;IAFA;IAKJ,OAAO9hF,uDAAA,CAAO,IAAP,EAAa,4BAAb,EAA2C8hF,SAA3C,CAAP;EArB+B;EAwBjCH,sBAAsBxuD,QAAtB,EAAgC;IAK9B,SAAS8uD,eAATA,CAAA,EAA2B;MACzBv/D,uDAAA,CAAO,CAAC2rC,OAAA,CAAQ55B,IAAhB,EAAsB,2CAAtB;MACA45B,OAAA,CAAQ55B,IAAR,GAAe,IAAf;MAGA,OAAO4rD,eAAA,CAAgBx0E,MAAhB,GAAyB,CAAzB,IAA8Bw0E,eAAA,CAAgB,CAAhB,EAAmB5rD,IAAxD,EAA8D;QAC5D,MAAMytD,YAAA,GAAe7B,eAAA,CAAgB9sE,KAAhB,EAArB;QACA3J,UAAA,CAAWs4E,YAAA,CAAa/uD,QAAxB,EAAkC,CAAlC;MAF4D;IALrC;IAW3B,MAAM;MAAEktD;IAAF,IAAsB,IAA5B;IACA,MAAMhyB,OAAA,GAAU;MACd55B,IAAA,EAAM,KADQ;MAEdhC,QAAA,EAAUwvD,eAFI;MAGd9uD;IAHc,CAAhB;IAKAktD,eAAA,CAAgB5zE,IAAhB,CAAqB4hD,OAArB;IACA,OAAOA,OAAP;EAvB8B;EA0BhC,IAAI8zB,aAAJA,CAAA,EAAoB;IAOlB,MAAMC,QAAA,GAAWC,IAAA,CACf,yEACE,sEADF,GAEE,sEAFF,GAGE,sEAHF,GAIE,sEAJF,GAKE,sEALF,GAME,sEANF,GAOE,sEAPF,GAQE,sEARF,GASE,sEATF,GAUE,sEAVF,GAWE,sEAXF,GAYE,sEAZF,GAaE,sEAbF,GAcE,sEAdF,GAeE,sEAfF,GAgBE,sEAhBF,GAiBE,sEAjBF,GAkBE,sEAlBF,GAmBE,sEAnBF,GAoBE,sEApBF,GAqBE,sEAtBa,CAAjB;IAwBA,OAAOriF,uDAAA,CAAO,IAAP,EAAa,eAAb,EAA8BoiF,QAA9B,CAAP;EA/BkB;EAkCpBR,sBAAsB5lD,IAAtB,EAA4BqyB,OAA5B,EAAqC;IAWnC,SAASi0B,KAATA,CAAehhF,IAAf,EAAqBsjD,MAArB,EAA6B;MAC3B,OACGtjD,IAAA,CAAKihF,UAAL,CAAgB39B,MAAhB,KAA2B,EAA5B,GACCtjD,IAAA,CAAKihF,UAAL,CAAgB39B,MAAA,GAAS,CAAzB,KAA+B,EADhC,GAECtjD,IAAA,CAAKihF,UAAL,CAAgB39B,MAAA,GAAS,CAAzB,KAA+B,CAFhC,GAGCtjD,IAAA,CAAKihF,UAAL,CAAgB39B,MAAA,GAAS,CAAzB,IAA8B,IAJjC;IAD2B;IAQ7B,SAAS49B,YAATA,CAAsB7f,CAAtB,EAAyB/d,MAAzB,EAAiCtrC,MAAjC,EAAyCe,MAAzC,EAAiD;MAC/C,MAAMooE,MAAA,GAAS9f,CAAA,CAAEjrD,SAAF,CAAY,CAAZ,EAAektC,MAAf,CAAf;MACA,MAAM89B,MAAA,GAAS/f,CAAA,CAAEjrD,SAAF,CAAYktC,MAAA,GAAStrC,MAArB,CAAf;MACA,OAAOmpE,MAAA,GAASpoE,MAAT,GAAkBqoE,MAAzB;IAH+C;IAKjD,IAAIzoE,CAAJ,EAAOwD,EAAP;IAGA,MAAM2C,MAAA,GAAS,KAAKwtC,SAAL,CAAeznD,aAAf,CAA6B,QAA7B,CAAf;IACAia,MAAA,CAAOpf,KAAP,GAAe,CAAf;IACAof,MAAA,CAAOnf,MAAP,GAAgB,CAAhB;IACA,MAAM0/B,GAAA,GAAMvgB,MAAA,CAAOof,UAAP,CAAkB,IAAlB,CAAZ;IAEA,IAAImjD,MAAA,GAAS,CAAb;IACA,SAASC,WAATA,CAAqB/3E,IAArB,EAA2BsoB,QAA3B,EAAqC;MAEnC,IAAI,EAAEwvD,MAAF,GAAW,EAAf,EAAmB;QACjBxiF,qDAAA,CAAK,8BAAL;QACAgzB,QAAA;QACA;MAHiB;MAKnBwN,GAAA,CAAI3E,IAAJ,GAAW,UAAUnxB,IAArB;MACA81B,GAAA,CAAIiiB,QAAJ,CAAa,GAAb,EAAkB,CAAlB,EAAqB,EAArB;MACA,MAAMzmB,SAAA,GAAYwE,GAAA,CAAIkX,YAAJ,CAAiB,CAAjB,EAAoB,CAApB,EAAuB,CAAvB,EAA0B,CAA1B,CAAlB;MACA,IAAI1b,SAAA,CAAU76B,IAAV,CAAe,CAAf,IAAoB,CAAxB,EAA2B;QACzB6xB,QAAA;QACA;MAFyB;MAI3BvpB,UAAA,CAAWg5E,WAAA,CAAY1nE,IAAZ,CAAiB,IAAjB,EAAuBrQ,IAAvB,EAA6BsoB,QAA7B,CAAX;IAdmC;IAiBrC,MAAMmtD,cAAA,GAAkB,KAAIvlC,IAAA,CAAKC,GAAL,EAAL,GAAkB,KAAKslC,cAAL,EAAlB,EAAvB;IAMA,IAAIh/E,IAAA,GAAO,KAAK6gF,aAAhB;IACA,MAAMU,cAAA,GAAiB,GAAvB;IACAvhF,IAAA,GAAOkhF,YAAA,CACLlhF,IADK,EAELuhF,cAFK,EAGLvC,cAAA,CAAez0E,MAHV,EAILy0E,cAJK,CAAP;IAOA,MAAMwC,mBAAA,GAAsB,EAA5B;IACA,MAAMC,UAAA,GAAa,UAAnB;IACA,IAAIC,QAAA,GAAWV,KAAA,CAAMhhF,IAAN,EAAYwhF,mBAAZ,CAAf;IACA,KAAK7oE,CAAA,GAAI,CAAJ,EAAOwD,EAAA,GAAK6iE,cAAA,CAAez0E,MAAf,GAAwB,CAAzC,EAA4CoO,CAAA,GAAIwD,EAAhD,EAAoDxD,CAAA,IAAK,CAAzD,EAA4D;MAC1D+oE,QAAA,GAAYA,QAAA,GAAWD,UAAX,GAAwBT,KAAA,CAAMhC,cAAN,EAAsBrmE,CAAtB,CAAzB,GAAqD,CAAhE;IAD0D;IAG5D,IAAIA,CAAA,GAAIqmE,cAAA,CAAez0E,MAAvB,EAA+B;MAE7Bm3E,QAAA,GAAYA,QAAA,GAAWD,UAAX,GAAwBT,KAAA,CAAMhC,cAAA,GAAiB,KAAvB,EAA8BrmE,CAA9B,CAAzB,GAA6D,CAAxE;IAF6B;IAI/B3Y,IAAA,GAAOkhF,YAAA,CAAalhF,IAAb,EAAmBwhF,mBAAnB,EAAwC,CAAxC,EAA2C5C,yDAAA,CAAS8C,QAAT,CAA3C,CAAP;IAEA,MAAM7zE,GAAA,GAAO,iCAAgC8zE,IAAA,CAAK3hF,IAAL,CAAW,IAAxD;IACA,MAAMstC,IAAA,GAAQ,4BAA2B0xC,cAAe,SAAQnxE,GAAI,GAApE;IACA,KAAKwxE,UAAL,CAAgB/xC,IAAhB;IAEA,MAAM5hC,GAAA,GAAM,KAAK4gD,SAAL,CAAeznD,aAAf,CAA6B,KAA7B,CAAZ;IACA6G,GAAA,CAAIzG,KAAJ,CAAUgD,UAAV,GAAuB,QAAvB;IACAyD,GAAA,CAAIzG,KAAJ,CAAUvF,KAAV,GAAkBgM,GAAA,CAAIzG,KAAJ,CAAUtF,MAAV,GAAmB,MAArC;IACA+L,GAAA,CAAIzG,KAAJ,CAAU2kD,QAAV,GAAqB,UAArB;IACAl+C,GAAA,CAAIzG,KAAJ,CAAUgC,GAAV,GAAgByE,GAAA,CAAIzG,KAAJ,CAAU+B,IAAV,GAAiB,KAAjC;IAEA,WAAWuC,IAAX,IAAmB,CAACmxB,IAAA,CAAKmlB,UAAN,EAAkBm/B,cAAlB,CAAnB,EAAsD;MACpD,MAAMjuB,IAAA,GAAO,KAAKzE,SAAL,CAAeznD,aAAf,CAA6B,MAA7B,CAAb;MACAksD,IAAA,CAAK18C,WAAL,GAAmB,IAAnB;MACA08C,IAAA,CAAK9rD,KAAL,CAAW28E,UAAX,GAAwBr4E,IAAxB;MACAmC,GAAA,CAAIX,MAAJ,CAAWgmD,IAAX;IAJoD;IAMtD,KAAKzE,SAAL,CAAexC,IAAf,CAAoB/+C,MAApB,CAA2BW,GAA3B;IAEA41E,WAAA,CAAYtC,cAAZ,EAA4B,MAAM;MAChCtzE,GAAA,CAAIsM,MAAJ;MACA+0C,OAAA,CAAQ57B,QAAR;IAFgC,CAAlC;EA/FmC;AAxOtB;AA+UjB,MAAMvO,cAAN,CAAqB;EACnB3f,YACE4+E,cADF,EAEE;IACE77D,eAAA,GAAkB,IADpB;IAEEG,eAAA,GAAkB,KAFpB;IAGEN,YAAA,GAAe,KAHjB;IAIE0U,WAAA,GAAc;EAJhB,CAFF,EAQE;IACA,KAAKunD,cAAL,GAAsBt4E,MAAA,CAAO3J,MAAP,CAAc,IAAd,CAAtB;IAEA,WAAW8Y,CAAX,IAAgBkpE,cAAhB,EAAgC;MAC9B,KAAKlpE,CAAL,IAAUkpE,cAAA,CAAelpE,CAAf,CAAV;IAD8B;IAGhC,KAAKqN,eAAL,GAAuBA,eAAA,KAAoB,KAA3C;IACA,KAAKG,eAAL,GAAuBA,eAAA,KAAoB,IAA3C;IACA,KAAKN,YAAL,GAAoBA,YAAA,KAAiB,IAArC;IACA,KAAK65D,YAAL,GAAoBnlD,WAApB;EATA;EAYF0lD,qBAAA,EAAuB;IACrB,IAAI,CAAC,KAAKjgF,IAAN,IAAc,KAAKmmB,eAAvB,EAAwC;MACtC,OAAO,IAAP;IADsC;IAGxC,IAAI+4D,cAAJ;IACA,IAAI,CAAC,KAAK6C,WAAV,EAAuB;MACrB7C,cAAA,GAAiB,IAAIW,QAAJ,CAAa,KAAKhgC,UAAlB,EAA8B,KAAK7/C,IAAnC,EAAyC,EAAzC,CAAjB;IADqB,CAAvB,MAEO;MACL,MAAMggD,GAAA,GAAM;QACVgiC,MAAA,EAAQ,KAAKD,WAAL,CAAiBE;MADf,CAAZ;MAGA,IAAI,KAAKF,WAAL,CAAiBG,WAArB,EAAkC;QAChCliC,GAAA,CAAI/6C,KAAJ,GAAa,WAAU,KAAK88E,WAAL,CAAiBG,WAAY,KAApD;MADgC;MAGlChD,cAAA,GAAiB,IAAIW,QAAJ,CACf,KAAKkC,WAAL,CAAiBH,UADF,EAEf,KAAK5hF,IAFU,EAGfggD,GAHe,CAAjB;IAPK;IAcP,KAAK0/B,YAAL,GAAoB,IAApB;IACA,OAAOR,cAAP;EAtBqB;EAyBvBiB,mBAAA,EAAqB;IACnB,IAAI,CAAC,KAAKngF,IAAN,IAAc,KAAKmmB,eAAvB,EAAwC;MACtC,OAAO,IAAP;IADsC;IAGxC,MAAMnmB,IAAA,GAAO2+E,8DAAA,CAAc,KAAK3+E,IAAnB,CAAb;IAEA,MAAM6N,GAAA,GAAO,YAAW,KAAKs0E,QAAS,WAAUR,IAAA,CAAK3hF,IAAL,CAAW,IAA3D;IACA,IAAIstC,IAAJ;IACA,IAAI,CAAC,KAAKy0C,WAAV,EAAuB;MACrBz0C,IAAA,GAAQ,4BAA2B,KAAKuS,UAAW,SAAQhyC,GAAI,GAA/D;IADqB,CAAvB,MAEO;MACL,IAAImyC,GAAA,GAAO,gBAAe,KAAK+hC,WAAL,CAAiBE,UAAW,GAAtD;MACA,IAAI,KAAKF,WAAL,CAAiBG,WAArB,EAAkC;QAChCliC,GAAA,IAAQ,uBAAsB,KAAK+hC,WAAL,CAAiBG,WAAY,MAA3D;MADgC;MAGlC50C,IAAA,GAAQ,4BAA2B,KAAKy0C,WAAL,CAAiBH,UAAW,KAAI5hC,GAAI,OAAMnyC,GAAI,GAAjF;IALK;IAQP,KAAK6xE,YAAL,GAAoB,IAApB,EAA0B7xE,GAA1B;IACA,OAAOy/B,IAAP;EAnBmB;EAsBrB8T,iBAAiBzyB,IAAjB,EAAuBkyB,SAAvB,EAAkC;IAChC,IAAI,KAAKihC,cAAL,CAAoBjhC,SAApB,MAAmCvrC,SAAvC,EAAkD;MAChD,OAAO,KAAKwsE,cAAL,CAAoBjhC,SAApB,CAAP;IADgD;IAIlD,IAAIuhC,IAAJ;IACA,IAAI;MACFA,IAAA,GAAOzzD,IAAA,CAAKlf,GAAL,CAAS,KAAKowC,UAAL,GAAkB,QAAlB,GAA6BgB,SAAtC,CAAP;IADE,CAAJ,CAEE,OAAOz2B,EAAP,EAAW;MACX,IAAI,CAAC,KAAKvE,YAAV,EAAwB;QACtB,MAAMuE,EAAN;MADsB;MAGxBvrB,qDAAA,CAAM,2CAA0CurB,EAAG,IAAnD;MAEA,OAAQ,KAAK03D,cAAL,CAAoBjhC,SAApB,IAAiC,UAAUpkD,CAAV,EAAa6a,IAAb,EAAmB,EAA5D;IANW;IAYb,IAAI,KAAK0O,eAAL,IAAwBxnB,wDAAA,CAAYwnB,eAAxC,EAAyD;MACvD,MAAMq8D,KAAA,GAAQ,EAAd;MACA,WAAWrhD,OAAX,IAAsBohD,IAAtB,EAA4B;QAC1B,MAAM3kC,IAAA,GAAOzc,OAAA,CAAQyc,IAAR,KAAiBnoC,SAAjB,GAA6B0rB,OAAA,CAAQyc,IAAR,CAAa//C,IAAb,CAAkB,GAAlB,CAA7B,GAAsD,EAAnE;QACA2kF,KAAA,CAAMl3E,IAAN,CAAW,IAAX,EAAiB61B,OAAA,CAAQu1B,GAAzB,EAA8B,GAA9B,EAAmC9Y,IAAnC,EAAyC,MAAzC;MAF0B;MAK5B,OAAQ,KAAKqkC,cAAL,CAAoBjhC,SAApB,IAAiC,IAAIyhC,QAAJ,CACvC,GADuC,EAEvC,MAFuC,EAGvCD,KAAA,CAAM3kF,IAAN,CAAW,EAAX,CAHuC,CAAzC;IAPuD;IAezD,OAAQ,KAAKokF,cAAL,CAAoBjhC,SAApB,IAAiC,UAAUpkD,CAAV,EAAa6a,IAAb,EAAmB;MAC1D,WAAW0pB,OAAX,IAAsBohD,IAAtB,EAA4B;QAC1B,IAAIphD,OAAA,CAAQu1B,GAAR,KAAgB,OAApB,EAA6B;UAC3Bv1B,OAAA,CAAQyc,IAAR,GAAe,CAACnmC,IAAD,EAAO,CAACA,IAAR,CAAf;QAD2B;QAI7B7a,CAAA,CAAEukC,OAAA,CAAQu1B,GAAV,EAAezc,KAAf,CAAqBr9C,CAArB,EAAwBukC,OAAA,CAAQyc,IAAhC;MAL0B;IAD8B,CAA5D;EAnCgC;AApEf;;;;;;;;;;;;AC1VrB;AAEA,MAAMp6B,QAAN,CAAe;EACb,CAAAk/D,WAAA;EAEA,CAAAviF,IAAA;EAEAiD,YAAY;IAAEu/E,UAAF;IAAc1N;EAAd,CAAZ,EAAqC;IACnC,KAAK,CAAAyN,WAAL,GAAoBC,UAApB;IACA,KAAK,CAAAxiF,IAAL,GAAa80E,OAAb;EAFmC;EAKrC2N,OAAA,EAAS;IACP,OAAO,KAAK,CAAAziF,IAAZ;EADO;EAITyP,IAAIlG,IAAJ,EAAU;IACR,OAAO,KAAK,CAAAg5E,WAAL,CAAkB9yE,GAAlB,CAAsBlG,IAAtB,KAA+B,IAAtC;EADQ;EAIV+W,OAAA,EAAS;IACP,OAAOnB,8DAAA,CAAc,KAAK,CAAAojE,WAAnB,CAAP;EADO;EAITn2E,IAAI7C,IAAJ,EAAU;IACR,OAAO,KAAK,CAAAg5E,WAAL,CAAkBn2E,GAAlB,CAAsB7C,IAAtB,CAAP;EADQ;AAtBG;;;;;;;;;;;;;ACFf;AACA;AAMA;AAMA,MAAMm5E,WAAA,GAAc,GAApB;AACA,MAAMC,wBAAA,GAA2B,GAAjC;AAEA,SAAS1F,cAATA,CAAwB2F,GAAxB,EAA6B;EAC3B,MAAM5iF,IAAA,GAAO4iF,GAAA,CAAIp2B,QAAjB;EACA,IAAI,OAAOxsD,IAAP,KAAgB,QAApB,EAA8B;IAC5B,OAAOA,IAAP;EAD4B;EAG9B,OAAOgiB,8DAAA,CAAchiB,IAAd,EAAoBypB,MAA3B;AAL2B;AAQ7B,MAAMo5D,cAAN,CAAqB;EACnB5/E,YAAY4K,GAAZ,EAAiB4vC,IAAA,GAAO,EAAxB,EAA4B;IAC1B,KAAK5vC,GAAL,GAAWA,GAAX;IACA,KAAKqvE,MAAL,GAAc,YAAYz/D,IAAZ,CAAiB5P,GAAjB,CAAd;IACA,KAAK+W,WAAL,GAAoB,KAAKs4D,MAAL,IAAez/B,IAAA,CAAK74B,WAArB,IAAqCpb,MAAA,CAAO3J,MAAP,CAAc,IAAd,CAAxD;IACA,KAAKglB,eAAL,GAAuB44B,IAAA,CAAK54B,eAAL,IAAwB,KAA/C;IAEA,KAAKi+D,SAAL,GAAiB,CAAjB;IACA,KAAKC,eAAL,GAAuBv5E,MAAA,CAAO3J,MAAP,CAAc,IAAd,CAAvB;EAP0B;EAU5BmjF,aAAah4D,KAAb,EAAoBS,GAApB,EAAyBkJ,SAAzB,EAAoC;IAClC,MAAM8oB,IAAA,GAAO;MACXzyB,KADW;MAEXS;IAFW,CAAb;IAIA,WAAWw3D,IAAX,IAAmBtuD,SAAnB,EAA8B;MAC5B8oB,IAAA,CAAKwlC,IAAL,IAAatuD,SAAA,CAAUsuD,IAAV,CAAb;IAD4B;IAG9B,OAAO,KAAKl2B,OAAL,CAAatP,IAAb,CAAP;EARkC;EAWpCylC,YAAYvuD,SAAZ,EAAuB;IACrB,OAAO,KAAKo4B,OAAL,CAAap4B,SAAb,CAAP;EADqB;EAIvBo4B,QAAQtP,IAAR,EAAc;IACZ,MAAMmlC,GAAA,GAAM,IAAI51B,cAAJ,EAAZ;IACA,MAAMm2B,KAAA,GAAQ,KAAKL,SAAL,EAAd;IACA,MAAMM,cAAA,GAAkB,KAAKL,eAAL,CAAqBI,KAArB,IAA8B;MAAEP;IAAF,CAAtD;IAEAA,GAAA,CAAInpE,IAAJ,CAAS,KAAT,EAAgB,KAAK5L,GAArB;IACA+0E,GAAA,CAAI/9D,eAAJ,GAAsB,KAAKA,eAA3B;IACA,WAAWsvB,QAAX,IAAuB,KAAKvvB,WAA5B,EAAyC;MACvC,MAAMpU,KAAA,GAAQ,KAAKoU,WAAL,CAAiBuvB,QAAjB,CAAd;MACA,IAAI3jC,KAAA,KAAU8E,SAAd,EAAyB;QACvB;MADuB;MAGzBstE,GAAA,CAAIS,gBAAJ,CAAqBlvC,QAArB,EAA+B3jC,KAA/B;IALuC;IAOzC,IAAI,KAAK0sE,MAAL,IAAe,WAAWz/B,IAA1B,IAAkC,SAASA,IAA/C,EAAqD;MACnDmlC,GAAA,CAAIS,gBAAJ,CAAqB,OAArB,EAA+B,SAAQ5lC,IAAA,CAAKzyB,KAAM,IAAGyyB,IAAA,CAAKhyB,GAAL,GAAW,CAAlC,EAA9B;MACA23D,cAAA,CAAeE,cAAf,GAAgCX,wBAAhC;IAFmD,CAArD,MAGO;MACLS,cAAA,CAAeE,cAAf,GAAgCZ,WAAhC;IADK;IAGPE,GAAA,CAAI31B,YAAJ,GAAmB,aAAnB;IAEA,IAAIxP,IAAA,CAAK8lC,OAAT,EAAkB;MAChBX,GAAA,CAAIpN,OAAJ,GAAc,UAAU73D,GAAV,EAAe;QAC3B8/B,IAAA,CAAK8lC,OAAL,CAAaX,GAAA,CAAI3oD,MAAjB;MAD2B,CAA7B;IADgB;IAKlB2oD,GAAA,CAAI11B,kBAAJ,GAAyB,KAAKs2B,aAAL,CAAmB5pE,IAAnB,CAAwB,IAAxB,EAA8BupE,KAA9B,CAAzB;IACAP,GAAA,CAAIa,UAAJ,GAAiB,KAAKx5D,UAAL,CAAgBrQ,IAAhB,CAAqB,IAArB,EAA2BupE,KAA3B,CAAjB;IAEAC,cAAA,CAAeM,iBAAf,GAAmCjmC,IAAA,CAAKimC,iBAAxC;IACAN,cAAA,CAAeO,MAAf,GAAwBlmC,IAAA,CAAKkmC,MAA7B;IACAP,cAAA,CAAeG,OAAf,GAAyB9lC,IAAA,CAAK8lC,OAA9B;IACAH,cAAA,CAAen5D,UAAf,GAA4BwzB,IAAA,CAAKxzB,UAAjC;IAEA24D,GAAA,CAAIx5D,IAAJ,CAAS,IAAT;IAEA,OAAO+5D,KAAP;EArCY;EAwCdl5D,WAAWk5D,KAAX,EAAkBxlE,GAAlB,EAAuB;IACrB,MAAMylE,cAAA,GAAiB,KAAKL,eAAL,CAAqBI,KAArB,CAAvB;IACA,IAAI,CAACC,cAAL,EAAqB;MACnB;IADmB;IAGrBA,cAAA,CAAen5D,UAAf,GAA4BtM,GAA5B;EALqB;EAQvB6lE,cAAcL,KAAd,EAAqBxlE,GAArB,EAA0B;IACxB,MAAMylE,cAAA,GAAiB,KAAKL,eAAL,CAAqBI,KAArB,CAAvB;IACA,IAAI,CAACC,cAAL,EAAqB;MACnB;IADmB;IAIrB,MAAMR,GAAA,GAAMQ,cAAA,CAAeR,GAA3B;IACA,IAAIA,GAAA,CAAIz1B,UAAJ,IAAkB,CAAlB,IAAuBi2B,cAAA,CAAeM,iBAA1C,EAA6D;MAC3DN,cAAA,CAAeM,iBAAf;MACA,OAAON,cAAA,CAAeM,iBAAtB;IAF2D;IAK7D,IAAId,GAAA,CAAIz1B,UAAJ,KAAmB,CAAvB,EAA0B;MACxB;IADwB;IAI1B,IAAI,EAAEg2B,KAAA,IAAS,KAAKJ,eAAd,CAAN,EAAsC;MAGpC;IAHoC;IAMtC,OAAO,KAAKA,eAAL,CAAqBI,KAArB,CAAP;IAGA,IAAIP,GAAA,CAAI3oD,MAAJ,KAAe,CAAf,IAAoB,KAAKijD,MAA7B,EAAqC;MACnCkG,cAAA,CAAeG,OAAf,GAAyBX,GAAA,CAAI3oD,MAA7B;MACA;IAFmC;IAIrC,MAAM2pD,SAAA,GAAYhB,GAAA,CAAI3oD,MAAJ,IAAcyoD,WAAhC;IAKA,MAAMmB,4BAAA,GACJD,SAAA,KAAclB,WAAd,IACAU,cAAA,CAAeE,cAAf,KAAkCX,wBAFpC;IAIA,IACE,CAACkB,4BAAD,IACAD,SAAA,KAAcR,cAAA,CAAeE,cAF/B,EAGE;MACAF,cAAA,CAAeG,OAAf,GAAyBX,GAAA,CAAI3oD,MAA7B;MACA;IAFA;IAKF,MAAMhP,KAAA,GAAQgyD,cAAA,CAAe2F,GAAf,CAAd;IACA,IAAIgB,SAAA,KAAcjB,wBAAlB,EAA4C;MAC1C,MAAMmB,WAAA,GAAclB,GAAA,CAAIrE,iBAAJ,CAAsB,eAAtB,CAApB;MACA,MAAMxuB,OAAA,GAAU,2BAA2BhB,IAA3B,CAAgC+0B,WAAhC,CAAhB;MACAV,cAAA,CAAeO,MAAf,CAAsB;QACpB34D,KAAA,EAAOxO,QAAA,CAASuzC,OAAA,CAAQ,CAAR,CAAT,EAAqB,EAArB,CADa;QAEpB9kC;MAFoB,CAAtB;IAH0C,CAA5C,MAOO,IAAIA,KAAJ,EAAW;MAChBm4D,cAAA,CAAeO,MAAf,CAAsB;QACpB34D,KAAA,EAAO,CADa;QAEpBC;MAFoB,CAAtB;IADgB,CAAX,MAKA;MACLm4D,cAAA,CAAeG,OAAf,GAAyBX,GAAA,CAAI3oD,MAA7B;IADK;EA3DiB;EAgE1B8pD,cAAcZ,KAAd,EAAqB;IACnB,OAAO,KAAKJ,eAAL,CAAqBI,KAArB,EAA4BP,GAAnC;EADmB;EAIrBoB,iBAAiBb,KAAjB,EAAwB;IACtB,OAAOA,KAAA,IAAS,KAAKJ,eAArB;EADsB;EAIxBkB,aAAad,KAAb,EAAoB;IAClB,MAAMP,GAAA,GAAM,KAAKG,eAAL,CAAqBI,KAArB,EAA4BP,GAAxC;IACA,OAAO,KAAKG,eAAL,CAAqBI,KAArB,CAAP;IACAP,GAAA,CAAIl3D,KAAJ;EAHkB;AAlJD;AA0JrB,MAAMjI,gBAAN,CAAuB;EACrBxgB,YAAYuK,MAAZ,EAAoB;IAClB,KAAK02E,OAAL,GAAe12E,MAAf;IACA,KAAK22E,QAAL,GAAgB,IAAItB,cAAJ,CAAmBr1E,MAAA,CAAOK,GAA1B,EAA+B;MAC7C+W,WAAA,EAAapX,MAAA,CAAOoX,WADyB;MAE7CC,eAAA,EAAiBrX,MAAA,CAAOqX;IAFqB,CAA/B,CAAhB;IAIA,KAAKo5D,eAAL,GAAuBzwE,MAAA,CAAOyX,cAA9B;IACA,KAAKk4D,kBAAL,GAA0B,IAA1B;IACA,KAAKC,oBAAL,GAA4B,EAA5B;EARkB;EAWpBgH,4BAA4BnxD,MAA5B,EAAoC;IAClC,MAAMta,CAAA,GAAI,KAAKykE,oBAAL,CAA0BiH,OAA1B,CAAkCpxD,MAAlC,CAAV;IACA,IAAIta,CAAA,IAAK,CAAT,EAAY;MACV,KAAKykE,oBAAL,CAA0BhJ,MAA1B,CAAiCz7D,CAAjC,EAAoC,CAApC;IADU;EAFsB;EAOpCmgB,cAAA,EAAgB;IACd1X,uDAAA,CACE,CAAC,KAAK+7D,kBADR,EAEE,yDAFF;IAIA,KAAKA,kBAAL,GAA0B,IAAImH,iCAAJ,CACxB,KAAKH,QADmB,EAExB,KAAKD,OAFmB,CAA1B;IAIA,OAAO,KAAK/G,kBAAZ;EATc;EAYhBtjD,eAAe7O,KAAf,EAAsBS,GAAtB,EAA2B;IACzB,MAAMwH,MAAA,GAAS,IAAIsxD,kCAAJ,CACb,KAAKJ,QADQ,EAEbn5D,KAFa,EAGbS,GAHa,CAAf;IAKAwH,MAAA,CAAOuxD,QAAP,GAAkB,KAAKJ,2BAAL,CAAiCxqE,IAAjC,CAAsC,IAAtC,CAAlB;IACA,KAAKwjE,oBAAL,CAA0BjyE,IAA1B,CAA+B8nB,MAA/B;IACA,OAAOA,MAAP;EARyB;EAW3B2F,kBAAkBlH,MAAlB,EAA0B;IACxB,KAAKyrD,kBAAL,EAAyBxpD,MAAzB,CAAgCjC,MAAhC;IAEA,WAAWuB,MAAX,IAAqB,KAAKmqD,oBAAL,CAA0Bl/E,KAA1B,CAAgC,CAAhC,CAArB,EAAyD;MACvD+0B,MAAA,CAAOU,MAAP,CAAcjC,MAAd;IADuD;EAHjC;AA1CL;AAoDvB,MAAM4yD,iCAAN,CAAwC;EACtCrhF,YAAYwhF,OAAZ,EAAqBj3E,MAArB,EAA6B;IAC3B,KAAK22E,QAAL,GAAgBM,OAAhB;IAEA,MAAMhnC,IAAA,GAAO;MACXimC,iBAAA,EAAmB,KAAKgB,kBAAL,CAAwB9qE,IAAxB,CAA6B,IAA7B,CADR;MAEX+pE,MAAA,EAAQ,KAAKgB,OAAL,CAAa/qE,IAAb,CAAkB,IAAlB,CAFG;MAGX2pE,OAAA,EAAS,KAAKqB,QAAL,CAAchrE,IAAd,CAAmB,IAAnB,CAHE;MAIXqQ,UAAA,EAAY,KAAK46D,WAAL,CAAiBjrE,IAAjB,CAAsB,IAAtB;IAJD,CAAb;IAMA,KAAKkrE,IAAL,GAAYt3E,MAAA,CAAOK,GAAnB;IACA,KAAKk3E,cAAL,GAAsBN,OAAA,CAAQvB,WAAR,CAAoBzlC,IAApB,CAAtB;IACA,KAAKunC,0BAAL,GAAkC,IAAInjE,8DAAJ,EAAlC;IACA,KAAKm8D,aAAL,GAAqBxwE,MAAA,CAAOgZ,YAAP,IAAuB,KAA5C;IACA,KAAKs3D,cAAL,GAAsBtwE,MAAA,CAAOjD,MAA7B;IACA,KAAK0zE,eAAL,GAAuBzwE,MAAA,CAAOyX,cAA9B;IACA,IAAI,CAAC,KAAKg5D,eAAN,IAAyB,CAAC,KAAKD,aAAnC,EAAkD;MAChD,KAAKA,aAAL,GAAqB,IAArB;IADgD;IAIlD,KAAKI,qBAAL,GAA6B,KAA7B;IACA,KAAKC,iBAAL,GAAyB,KAAzB;IAEA,KAAK4G,aAAL,GAAqB,EAArB;IACA,KAAKC,SAAL,GAAiB,EAAjB;IACA,KAAKC,KAAL,GAAa,KAAb;IACA,KAAKC,YAAL,GAAoB9vE,SAApB;IACA,KAAKsoE,SAAL,GAAiB,IAAjB;IAEA,KAAK3zD,UAAL,GAAkB,IAAlB;EA5B2B;EA+B7By6D,mBAAA,EAAqB;IACnB,MAAMW,gBAAA,GAAmB,KAAKN,cAA9B;IACA,MAAMO,cAAA,GAAiB,KAAKnB,QAAL,CAAcJ,aAAd,CAA4BsB,gBAA5B,CAAvB;IAEA,MAAM9G,iBAAA,GAAoBh1E,IAAA,IAAQ;MAChC,OAAO+7E,cAAA,CAAe/G,iBAAf,CAAiCh1E,IAAjC,CAAP;IADgC,CAAlC;IAGA,MAAM;MAAEi1E,kBAAF;MAAsBC;IAAtB,IACJnC,mFAAA,CAAiC;MAC/BiC,iBAD+B;MAE/BrB,MAAA,EAAQ,KAAKiH,QAAL,CAAcjH,MAFS;MAG/Bj4D,cAAA,EAAgB,KAAKg5D,eAHU;MAI/Bz3D,YAAA,EAAc,KAAKw3D;IAJY,CAAjC,CADF;IAQA,IAAIQ,kBAAJ,EAAwB;MACtB,KAAKH,iBAAL,GAAyB,IAAzB;IADsB;IAIxB,KAAKP,cAAL,GAAsBW,eAAA,IAAmB,KAAKX,cAA9C;IAEA,KAAKF,SAAL,GAAiBvB,4EAAA,CAA0BkC,iBAA1B,CAAjB;IAEA,IAAI,KAAKF,iBAAT,EAA4B;MAK1B,KAAK8F,QAAL,CAAcF,YAAd,CAA2BoB,gBAA3B;IAL0B;IAQ5B,KAAKL,0BAAL,CAAgCx8D,OAAhC;EA/BmB;EAkCrBm8D,QAAQ3kF,IAAR,EAAc;IACZ,IAAIA,IAAJ,EAAU;MACR,IAAI,KAAKklF,SAAL,CAAe36E,MAAf,GAAwB,CAA5B,EAA+B;QAC7B,MAAMg7E,iBAAA,GAAoB,KAAKL,SAAL,CAAejzE,KAAf,EAA1B;QACAszE,iBAAA,CAAkB/8D,OAAlB,CAA0B;UAAEhY,KAAA,EAAOxQ,IAAA,CAAKirB,KAAd;UAAqBkI,IAAA,EAAM;QAA3B,CAA1B;MAF6B,CAA/B,MAGO;QACL,KAAK8xD,aAAL,CAAmB95E,IAAnB,CAAwBnL,IAAA,CAAKirB,KAA7B;MADK;IAJC;IAQV,KAAKk6D,KAAL,GAAa,IAAb;IACA,IAAI,KAAKF,aAAL,CAAmB16E,MAAnB,GAA4B,CAAhC,EAAmC;MACjC;IADiC;IAGnC,WAAWg7E,iBAAX,IAAgC,KAAKL,SAArC,EAAgD;MAC9CK,iBAAA,CAAkB/8D,OAAlB,CAA0B;QAAEhY,KAAA,EAAO8E,SAAT;QAAoB6d,IAAA,EAAM;MAA1B,CAA1B;IAD8C;IAGhD,KAAK+xD,SAAL,CAAe36E,MAAf,GAAwB,CAAxB;EAhBY;EAmBdq6E,SAAS3qD,MAAT,EAAiB;IACf,KAAKmrD,YAAL,GAAoBhJ,4EAAA,CAA0BniD,MAA1B,EAAkC,KAAK6qD,IAAvC,CAApB;IACA,KAAKE,0BAAL,CAAgCz7D,MAAhC,CAAuC,KAAK67D,YAA5C;IACA,WAAWG,iBAAX,IAAgC,KAAKL,SAArC,EAAgD;MAC9CK,iBAAA,CAAkBh8D,MAAlB,CAAyB,KAAK67D,YAA9B;IAD8C;IAGhD,KAAKF,SAAL,CAAe36E,MAAf,GAAwB,CAAxB;IACA,KAAK06E,aAAL,CAAmB16E,MAAnB,GAA4B,CAA5B;EAPe;EAUjBs6E,YAAYlnE,GAAZ,EAAiB;IACf,KAAKsM,UAAL,GAAkB;MAChBkB,MAAA,EAAQxN,GAAA,CAAIwN,MADI;MAEhBC,KAAA,EAAOzN,GAAA,CAAI6nE,gBAAJ,GAAuB7nE,GAAA,CAAIyN,KAA3B,GAAmC,KAAK0yD;IAF/B,CAAlB;EADe;EAOjB,IAAIxuE,QAAJA,CAAA,EAAe;IACb,OAAO,KAAKsuE,SAAZ;EADa;EAIf,IAAIlkD,gBAAJA,CAAA,EAAuB;IACrB,OAAO,KAAK2kD,iBAAZ;EADqB;EAIvB,IAAI5kD,oBAAJA,CAAA,EAA2B;IACzB,OAAO,KAAK2kD,qBAAZ;EADyB;EAI3B,IAAIzkD,aAAJA,CAAA,EAAoB;IAClB,OAAO,KAAKmkD,cAAZ;EADkB;EAIpB,IAAItkD,YAAJA,CAAA,EAAmB;IACjB,OAAO,KAAKwrD,0BAAL,CAAgC/8D,OAAvC;EADiB;EAInB,MAAMiL,IAANA,CAAA,EAAa;IACX,IAAI,KAAKkyD,YAAT,EAAuB;MACrB,MAAM,KAAKA,YAAX;IADqB;IAGvB,IAAI,KAAKH,aAAL,CAAmB16E,MAAnB,GAA4B,CAAhC,EAAmC;MACjC,MAAM0gB,KAAA,GAAQ,KAAKg6D,aAAL,CAAmBhzE,KAAnB,EAAd;MACA,OAAO;QAAEzB,KAAA,EAAOya,KAAT;QAAgBkI,IAAA,EAAM;MAAtB,CAAP;IAFiC;IAInC,IAAI,KAAKgyD,KAAT,EAAgB;MACd,OAAO;QAAE30E,KAAA,EAAO8E,SAAT;QAAoB6d,IAAA,EAAM;MAA1B,CAAP;IADc;IAGhB,MAAMoyD,iBAAA,GAAoB,IAAI1jE,8DAAJ,EAA1B;IACA,KAAKqjE,SAAL,CAAe/5E,IAAf,CAAoBo6E,iBAApB;IACA,OAAOA,iBAAA,CAAkBt9D,OAAzB;EAbW;EAgBb0L,OAAOjC,MAAP,EAAe;IACb,KAAKyzD,KAAL,GAAa,IAAb;IACA,KAAKH,0BAAL,CAAgCz7D,MAAhC,CAAuCmI,MAAvC;IACA,WAAW6zD,iBAAX,IAAgC,KAAKL,SAArC,EAAgD;MAC9CK,iBAAA,CAAkB/8D,OAAlB,CAA0B;QAAEhY,KAAA,EAAO8E,SAAT;QAAoB6d,IAAA,EAAM;MAA1B,CAA1B;IAD8C;IAGhD,KAAK+xD,SAAL,CAAe36E,MAAf,GAAwB,CAAxB;IACA,IAAI,KAAK45E,QAAL,CAAcH,gBAAd,CAA+B,KAAKe,cAApC,CAAJ,EAAyD;MACvD,KAAKZ,QAAL,CAAcF,YAAd,CAA2B,KAAKc,cAAhC;IADuD;IAGzD,KAAK5H,kBAAL,GAA0B,IAA1B;EAVa;AA1IuB;AAyJxC,MAAMoH,kCAAN,CAAyC;EACvCthF,YAAYwhF,OAAZ,EAAqBz5D,KAArB,EAA4BS,GAA5B,EAAiC;IAC/B,KAAK04D,QAAL,GAAgBM,OAAhB;IAEA,MAAMhnC,IAAA,GAAO;MACXkmC,MAAA,EAAQ,KAAKgB,OAAL,CAAa/qE,IAAb,CAAkB,IAAlB,CADG;MAEX2pE,OAAA,EAAS,KAAKqB,QAAL,CAAchrE,IAAd,CAAmB,IAAnB,CAFE;MAGXqQ,UAAA,EAAY,KAAK46D,WAAL,CAAiBjrE,IAAjB,CAAsB,IAAtB;IAHD,CAAb;IAKA,KAAKkrE,IAAL,GAAYL,OAAA,CAAQ52E,GAApB;IACA,KAAK43E,UAAL,GAAkBhB,OAAA,CAAQzB,YAAR,CAAqBh4D,KAArB,EAA4BS,GAA5B,EAAiCgyB,IAAjC,CAAlB;IACA,KAAKynC,SAAL,GAAiB,EAAjB;IACA,KAAKQ,YAAL,GAAoB,IAApB;IACA,KAAKP,KAAL,GAAa,KAAb;IACA,KAAKC,YAAL,GAAoB9vE,SAApB;IAEA,KAAK2U,UAAL,GAAkB,IAAlB;IACA,KAAKu6D,QAAL,GAAgB,IAAhB;EAhB+B;EAmBjCmB,OAAA,EAAS;IACP,KAAKnB,QAAL,GAAgB,IAAhB;EADO;EAITG,QAAQ3kF,IAAR,EAAc;IACZ,MAAMirB,KAAA,GAAQjrB,IAAA,CAAKirB,KAAnB;IACA,IAAI,KAAKi6D,SAAL,CAAe36E,MAAf,GAAwB,CAA5B,EAA+B;MAC7B,MAAMg7E,iBAAA,GAAoB,KAAKL,SAAL,CAAejzE,KAAf,EAA1B;MACAszE,iBAAA,CAAkB/8D,OAAlB,CAA0B;QAAEhY,KAAA,EAAOya,KAAT;QAAgBkI,IAAA,EAAM;MAAtB,CAA1B;IAF6B,CAA/B,MAGO;MACL,KAAKuyD,YAAL,GAAoBz6D,KAApB;IADK;IAGP,KAAKk6D,KAAL,GAAa,IAAb;IACA,WAAWI,iBAAX,IAAgC,KAAKL,SAArC,EAAgD;MAC9CK,iBAAA,CAAkB/8D,OAAlB,CAA0B;QAAEhY,KAAA,EAAO8E,SAAT;QAAoB6d,IAAA,EAAM;MAA1B,CAA1B;IAD8C;IAGhD,KAAK+xD,SAAL,CAAe36E,MAAf,GAAwB,CAAxB;IACA,KAAKo7E,MAAL;EAbY;EAgBdf,SAAS3qD,MAAT,EAAiB;IACf,KAAKmrD,YAAL,GAAoBhJ,4EAAA,CAA0BniD,MAA1B,EAAkC,KAAK6qD,IAAvC,CAApB;IACA,WAAWS,iBAAX,IAAgC,KAAKL,SAArC,EAAgD;MAC9CK,iBAAA,CAAkBh8D,MAAlB,CAAyB,KAAK67D,YAA9B;IAD8C;IAGhD,KAAKF,SAAL,CAAe36E,MAAf,GAAwB,CAAxB;IACA,KAAKm7E,YAAL,GAAoB,IAApB;EANe;EASjBb,YAAYlnE,GAAZ,EAAiB;IACf,IAAI,CAAC,KAAK8b,oBAAV,EAAgC;MAC9B,KAAKxP,UAAL,GAAkB;QAAEkB,MAAA,EAAQxN,GAAA,CAAIwN;MAAd,CAAlB;IAD8B;EADjB;EAMjB,IAAIsO,oBAAJA,CAAA,EAA2B;IACzB,OAAO,KAAP;EADyB;EAI3B,MAAMvG,IAANA,CAAA,EAAa;IACX,IAAI,KAAKkyD,YAAT,EAAuB;MACrB,MAAM,KAAKA,YAAX;IADqB;IAGvB,IAAI,KAAKM,YAAL,KAAsB,IAA1B,EAAgC;MAC9B,MAAMz6D,KAAA,GAAQ,KAAKy6D,YAAnB;MACA,KAAKA,YAAL,GAAoB,IAApB;MACA,OAAO;QAAEl1E,KAAA,EAAOya,KAAT;QAAgBkI,IAAA,EAAM;MAAtB,CAAP;IAH8B;IAKhC,IAAI,KAAKgyD,KAAT,EAAgB;MACd,OAAO;QAAE30E,KAAA,EAAO8E,SAAT;QAAoB6d,IAAA,EAAM;MAA1B,CAAP;IADc;IAGhB,MAAMoyD,iBAAA,GAAoB,IAAI1jE,8DAAJ,EAA1B;IACA,KAAKqjE,SAAL,CAAe/5E,IAAf,CAAoBo6E,iBAApB;IACA,OAAOA,iBAAA,CAAkBt9D,OAAzB;EAdW;EAiBb0L,OAAOjC,MAAP,EAAe;IACb,KAAKyzD,KAAL,GAAa,IAAb;IACA,WAAWI,iBAAX,IAAgC,KAAKL,SAArC,EAAgD;MAC9CK,iBAAA,CAAkB/8D,OAAlB,CAA0B;QAAEhY,KAAA,EAAO8E,SAAT;QAAoB6d,IAAA,EAAM;MAA1B,CAA1B;IAD8C;IAGhD,KAAK+xD,SAAL,CAAe36E,MAAf,GAAwB,CAAxB;IACA,IAAI,KAAK45E,QAAL,CAAcH,gBAAd,CAA+B,KAAKyB,UAApC,CAAJ,EAAqD;MACnD,KAAKtB,QAAL,CAAcF,YAAd,CAA2B,KAAKwB,UAAhC;IADmD;IAGrD,KAAKE,MAAL;EATa;AA5EwB;;;;;;;;;;;;;;;;;;;;AC/XzC;AAeA,SAASC,uCAATA,CAAiDC,kBAAjD,EAAqE;EACnE,IAAIC,kBAAA,GAAqB,IAAzB;EAGA,IAAIljD,GAAA,GAAMmjD,aAAA,CAAc,aAAd,EAA6B,GAA7B,EAAkCh3B,IAAlC,CAAuC82B,kBAAvC,CAAV;EACA,IAAIjjD,GAAJ,EAAS;IACPA,GAAA,GAAMA,GAAA,CAAI,CAAJ,CAAN;IACA,IAAItzB,QAAA,GAAW02E,cAAA,CAAepjD,GAAf,CAAf;IACAtzB,QAAA,GAAW22E,QAAA,CAAS32E,QAAT,CAAX;IACAA,QAAA,GAAW42E,aAAA,CAAc52E,QAAd,CAAX;IACAA,QAAA,GAAW62E,aAAA,CAAc72E,QAAd,CAAX;IACA,OAAO82E,aAAA,CAAc92E,QAAd,CAAP;EANO;EAYTszB,GAAA,GAAMyjD,eAAA,CAAgBR,kBAAhB,CAAN;EACA,IAAIjjD,GAAJ,EAAS;IAEP,MAAMtzB,QAAA,GAAW62E,aAAA,CAAcvjD,GAAd,CAAjB;IACA,OAAOwjD,aAAA,CAAc92E,QAAd,CAAP;EAHO;EAOTszB,GAAA,GAAMmjD,aAAA,CAAc,UAAd,EAA0B,GAA1B,EAA+Bh3B,IAA/B,CAAoC82B,kBAApC,CAAN;EACA,IAAIjjD,GAAJ,EAAS;IACPA,GAAA,GAAMA,GAAA,CAAI,CAAJ,CAAN;IACA,IAAItzB,QAAA,GAAW02E,cAAA,CAAepjD,GAAf,CAAf;IACAtzB,QAAA,GAAW62E,aAAA,CAAc72E,QAAd,CAAX;IACA,OAAO82E,aAAA,CAAc92E,QAAd,CAAP;EAJO;EAUT,SAASy2E,aAATA,CAAuBO,gBAAvB,EAAyCC,KAAzC,EAAgD;IAC9C,OAAO,IAAIz2B,MAAJ,CACL,gBACEw2B,gBADF,GAEE,WAFF,GAKE,GALF,GAME,kBANF,GAOE,GAPF,GAQE,yBARF,GASE,GAVG,EAWLC,KAXK,CAAP;EAD8C;EAehD,SAASC,UAATA,CAAoBC,QAApB,EAA8Bj2E,KAA9B,EAAqC;IACnC,IAAIi2E,QAAJ,EAAc;MACZ,IAAI,CAAC,iBAAiBhpE,IAAjB,CAAsBjN,KAAtB,CAAL,EAAmC;QACjC,OAAOA,KAAP;MADiC;MAGnC,IAAI;QACF,MAAMk2E,OAAA,GAAU,IAAIC,WAAJ,CAAgBF,QAAhB,EAA0B;UAAEG,KAAA,EAAO;QAAT,CAA1B,CAAhB;QACA,MAAMn9D,MAAA,GAASzH,sBAAA,CAAcxR,KAAd,CAAf;QACAA,KAAA,GAAQk2E,OAAA,CAAQ7R,MAAR,CAAeprD,MAAf,CAAR;QACAq8D,kBAAA,GAAqB,KAArB;MAJE,CAAJ,CAKE,MAAM;IATI;IAad,OAAOt1E,KAAP;EAdmC;EAgBrC,SAAS41E,aAATA,CAAuB51E,KAAvB,EAA8B;IAC5B,IAAIs1E,kBAAA,IAAsB,cAAcroE,IAAd,CAAmBjN,KAAnB,CAA1B,EAAqD;MAEnDA,KAAA,GAAQg2E,UAAA,CAAW,OAAX,EAAoBh2E,KAApB,CAAR;MACA,IAAIs1E,kBAAJ,EAAwB;QAEtBt1E,KAAA,GAAQg2E,UAAA,CAAW,YAAX,EAAyBh2E,KAAzB,CAAR;MAFsB;IAH2B;IAQrD,OAAOA,KAAP;EAT4B;EAW9B,SAAS61E,eAATA,CAAyBQ,qBAAzB,EAAgD;IAC9C,MAAM92B,OAAA,GAAU,EAAhB;IACA,IAAI55C,KAAJ;IAGA,MAAM2wE,IAAA,GAAOf,aAAA,CAAc,iCAAd,EAAiD,IAAjD,CAAb;IACA,OAAQ,CAAA5vE,KAAA,GAAQ2wE,IAAA,CAAK/3B,IAAL,CAAU83B,qBAAV,CAAR,MAA8C,IAAtD,EAA4D;MAC1D,IAAI,GAAG/qF,CAAH,EAAMirF,IAAN,EAAYC,IAAZ,IAAoB7wE,KAAxB;MACAra,CAAA,GAAI0gB,QAAA,CAAS1gB,CAAT,EAAY,EAAZ,CAAJ;MACA,IAAIA,CAAA,IAAKi0D,OAAT,EAAkB;QAEhB,IAAIj0D,CAAA,KAAM,CAAV,EAAa;UACX;QADW;QAGb;MALgB;MAOlBi0D,OAAA,CAAQj0D,CAAR,IAAa,CAACirF,IAAD,EAAOC,IAAP,CAAb;IAV0D;IAY5D,MAAMC,KAAA,GAAQ,EAAd;IACA,KAAK,IAAInrF,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIi0D,OAAA,CAAQxlD,MAA5B,EAAoC,EAAEzO,CAAtC,EAAyC;MACvC,IAAI,EAAEA,CAAA,IAAKi0D,OAAL,CAAN,EAAqB;QAEnB;MAFmB;MAIrB,IAAI,CAACg3B,IAAD,EAAOC,IAAP,IAAej3B,OAAA,CAAQj0D,CAAR,CAAnB;MACAkrF,IAAA,GAAOhB,cAAA,CAAegB,IAAf,CAAP;MACA,IAAID,IAAJ,EAAU;QACRC,IAAA,GAAOf,QAAA,CAASe,IAAT,CAAP;QACA,IAAIlrF,CAAA,KAAM,CAAV,EAAa;UACXkrF,IAAA,GAAOd,aAAA,CAAcc,IAAd,CAAP;QADW;MAFL;MAMVC,KAAA,CAAM97E,IAAN,CAAW67E,IAAX;IAbuC;IAezC,OAAOC,KAAA,CAAMvpF,IAAN,CAAW,EAAX,CAAP;EAlC8C;EAoChD,SAASsoF,cAATA,CAAwBx1E,KAAxB,EAA+B;IAC7B,IAAIA,KAAA,CAAMuoC,UAAN,CAAiB,GAAjB,CAAJ,EAA2B;MACzB,MAAMkuC,KAAA,GAAQz2E,KAAA,CAAMtS,KAAN,CAAY,CAAZ,EAAege,KAAf,CAAqB,KAArB,CAAd;MAEA,KAAK,IAAIvD,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIsuE,KAAA,CAAM18E,MAA1B,EAAkC,EAAEoO,CAApC,EAAuC;QACrC,MAAMuuE,SAAA,GAAYD,KAAA,CAAMtuE,CAAN,EAAS0rE,OAAT,CAAiB,GAAjB,CAAlB;QACA,IAAI6C,SAAA,KAAc,CAAC,CAAnB,EAAsB;UACpBD,KAAA,CAAMtuE,CAAN,IAAWsuE,KAAA,CAAMtuE,CAAN,EAASza,KAAT,CAAe,CAAf,EAAkBgpF,SAAlB,CAAX;UACAD,KAAA,CAAM18E,MAAN,GAAeoO,CAAA,GAAI,CAAnB;QAFoB;QAItBsuE,KAAA,CAAMtuE,CAAN,IAAWsuE,KAAA,CAAMtuE,CAAN,EAAShE,UAAT,CAAoB,QAApB,EAA8B,IAA9B,CAAX;MANqC;MAQvCnE,KAAA,GAAQy2E,KAAA,CAAMvpF,IAAN,CAAW,GAAX,CAAR;IAXyB;IAa3B,OAAO8S,KAAP;EAd6B;EAgB/B,SAAS01E,aAATA,CAAuBiB,QAAvB,EAAiC;IAE/B,MAAMC,WAAA,GAAcD,QAAA,CAAS9C,OAAT,CAAiB,GAAjB,CAApB;IACA,IAAI+C,WAAA,KAAgB,CAAC,CAArB,EAAwB;MAItB,OAAOD,QAAP;IAJsB;IAMxB,MAAMV,QAAA,GAAWU,QAAA,CAASjpF,KAAT,CAAe,CAAf,EAAkBkpF,WAAlB,CAAjB;IACA,MAAMC,SAAA,GAAYF,QAAA,CAASjpF,KAAT,CAAekpF,WAAA,GAAc,CAA7B,CAAlB;IAEA,MAAM52E,KAAA,GAAQ62E,SAAA,CAAU/uB,OAAV,CAAkB,SAAlB,EAA6B,EAA7B,CAAd;IACA,OAAOkuB,UAAA,CAAWC,QAAX,EAAqBj2E,KAArB,CAAP;EAb+B;EAejC,SAAS21E,aAATA,CAAuB31E,KAAvB,EAA8B;IAW5B,IAAI,CAACA,KAAA,CAAMuoC,UAAN,CAAiB,IAAjB,CAAD,IAA2B,uBAAuBt7B,IAAvB,CAA4BjN,KAA5B,CAA/B,EAAmE;MACjE,OAAOA,KAAP;IADiE;IAUnE,OAAOA,KAAA,CAAMmE,UAAN,CACL,gDADK,EAEL,UAAUo7C,OAAV,EAAmBu3B,OAAnB,EAA4Bb,QAA5B,EAAsC35B,IAAtC,EAA4C;MAC1C,IAAI25B,QAAA,KAAa,GAAb,IAAoBA,QAAA,KAAa,GAArC,EAA0C;QAExC35B,IAAA,GAAOA,IAAA,CAAKn4C,UAAL,CAAgB,GAAhB,EAAqB,GAArB,CAAP;QACAm4C,IAAA,GAAOA,IAAA,CAAKn4C,UAAL,CAAgB,oBAAhB,EAAsC,UAAUwB,KAAV,EAAiBoxE,GAAjB,EAAsB;UACjE,OAAOC,MAAA,CAAOC,YAAP,CAAoBjrE,QAAA,CAAS+qE,GAAT,EAAc,EAAd,CAApB,CAAP;QADiE,CAA5D,CAAP;QAGA,OAAOf,UAAA,CAAWc,OAAX,EAAoBx6B,IAApB,CAAP;MANwC;MAQ1C,IAAI;QACFA,IAAA,GAAOi0B,IAAA,CAAKj0B,IAAL,CAAP;MADE,CAAJ,CAEE,MAAM;MACR,OAAO05B,UAAA,CAAWc,OAAX,EAAoBx6B,IAApB,CAAP;IAZ0C,CAFvC,CAAP;EArB4B;EAwC9B,OAAO,EAAP;AAzLmE;;;;;ACfrE;AAKA;AACA;AAEA,SAASwvB,gCAATA,CAA0C;EACxCiC,iBADwC;EAExCrB,MAFwC;EAGxCj4D,cAHwC;EAIxCuB;AAJwC,CAA1C,EAKG;EAOD,MAAMkhE,YAAA,GAAe;IACnBlJ,kBAAA,EAAoB,KADD;IAEnBC,eAAA,EAAiBnpE;EAFE,CAArB;EAKA,MAAM/K,MAAA,GAASiS,QAAA,CAAS+hE,iBAAA,CAAkB,gBAAlB,CAAT,EAA8C,EAA9C,CAAf;EACA,IAAI,CAACr5D,MAAA,CAAOC,SAAP,CAAiB5a,MAAjB,CAAL,EAA+B;IAC7B,OAAOm9E,YAAP;EAD6B;EAI/BA,YAAA,CAAajJ,eAAb,GAA+Bl0E,MAA/B;EAEA,IAAIA,MAAA,IAAU,IAAI0a,cAAlB,EAAkC;IAGhC,OAAOyiE,YAAP;EAHgC;EAMlC,IAAIlhE,YAAA,IAAgB,CAAC02D,MAArB,EAA6B;IAC3B,OAAOwK,YAAP;EAD2B;EAG7B,IAAInJ,iBAAA,CAAkB,eAAlB,MAAuC,OAA3C,EAAoD;IAClD,OAAOmJ,YAAP;EADkD;EAIpD,MAAMC,eAAA,GAAkBpJ,iBAAA,CAAkB,kBAAlB,KAAyC,UAAjE;EACA,IAAIoJ,eAAA,KAAoB,UAAxB,EAAoC;IAClC,OAAOD,YAAP;EADkC;EAIpCA,YAAA,CAAalJ,kBAAb,GAAkC,IAAlC;EACA,OAAOkJ,YAAP;AAtCC;AAyCH,SAASrL,yBAATA,CAAmCkC,iBAAnC,EAAsD;EACpD,MAAMsH,kBAAA,GAAqBtH,iBAAA,CAAkB,qBAAlB,CAA3B;EACA,IAAIsH,kBAAJ,EAAwB;IACtB,IAAIv2E,QAAA,GAAWs2E,uCAAA,CAAwCC,kBAAxC,CAAf;IACA,IAAIv2E,QAAA,CAAS0C,QAAT,CAAkB,GAAlB,CAAJ,EAA4B;MAC1B,IAAI;QACF1C,QAAA,GAAW2/C,kBAAA,CAAmB3/C,QAAnB,CAAX;MADE,CAAJ,CAEE,MAAM;IAHkB;IAK5B,IAAIi/C,2BAAA,CAAUj/C,QAAV,CAAJ,EAAyB;MACvB,OAAOA,QAAP;IADuB;EAPH;EAWxB,OAAO,IAAP;AAboD;AAgBtD,SAAS8sE,yBAATA,CAAmCniD,MAAnC,EAA2CpsB,GAA3C,EAAgD;EAC9C,IAAIosB,MAAA,KAAW,GAAX,IAAmBA,MAAA,KAAW,CAAX,IAAgBpsB,GAAA,CAAIkrC,UAAJ,CAAe,OAAf,CAAvC,EAAiE;IAC/D,OAAO,IAAIp3B,wBAAJ,CAAwB,kBAAkB9T,GAAlB,GAAwB,IAAhD,CAAP;EAD+D;EAGjE,OAAO,IAAIoU,gCAAJ,CACJ,+BAA8BgY,MAAO,2BAA0BpsB,GAAI,IAD/D,EAELosB,MAFK,CAAP;AAJ8C;AAUhD,SAASsiD,sBAATA,CAAgCtiD,MAAhC,EAAwC;EACtC,OAAOA,MAAA,KAAW,GAAX,IAAkBA,MAAA,KAAW,GAApC;AADsC;;;;;;;;;;;;;;AChFxC;AAOA;AAKA;AAMA,IAAI2tD,EAAJ,EAAQC,IAAR,EAAcC,KAAd,EAAqBj6E,GAArB;AACA,IAAI4T,qDAAJ,EAAc;EAEZmmE,EAAA,GAAK,MAAM3wD,sBAAA,CAAuB,IAAvB,CAAX;EACA4wD,IAAA,GAAO,MAAM5wD,sBAAA,CAAuB,MAAvB,CAAb;EACA6wD,KAAA,GAAQ,MAAM7wD,sBAAA,CAAuB,OAAvB,CAAd;EACAppB,GAAA,GAAM,MAAMopB,sBAAA,CAAuB,KAAvB,CAAZ;AALY;AAQd,MAAM8wD,YAAA,GAAe,yBAArB;AAEA,SAASC,QAATA,CAAkBC,SAAlB,EAA6B;EAC3B,MAAMC,SAAA,GAAYr6E,GAAA,CAAI6sE,KAAJ,CAAUuN,SAAV,CAAlB;EACA,IAAIC,SAAA,CAAU34B,QAAV,KAAuB,OAAvB,IAAkC24B,SAAA,CAAUC,IAAhD,EAAsD;IACpD,OAAOD,SAAP;EADoD;EAItD,IAAI,gBAAgBzqE,IAAhB,CAAqBwqE,SAArB,CAAJ,EAAqC;IACnC,OAAOp6E,GAAA,CAAI6sE,KAAJ,CAAW,WAAUuN,SAAX,EAAV,CAAP;EADmC;EAIrC,IAAI,CAACC,SAAA,CAAUC,IAAf,EAAqB;IACnBD,SAAA,CAAU34B,QAAV,GAAqB,OAArB;EADmB;EAGrB,OAAO24B,SAAP;AAb2B;AAgB7B,MAAMxkE,aAAN,CAAoB;EAClBzgB,YAAYuK,MAAZ,EAAoB;IAClB,KAAKA,MAAL,GAAcA,MAAd;IACA,KAAKK,GAAL,GAAWm6E,QAAA,CAASx6E,MAAA,CAAOK,GAAhB,CAAX;IACA,KAAKqvE,MAAL,GACE,KAAKrvE,GAAL,CAAS0hD,QAAT,KAAsB,OAAtB,IAAiC,KAAK1hD,GAAL,CAAS0hD,QAAT,KAAsB,QADzD;IAGA,KAAK64B,OAAL,GAAe,KAAKv6E,GAAL,CAAS0hD,QAAT,KAAsB,OAArC;IACA,KAAK3qC,WAAL,GAAoB,KAAKs4D,MAAL,IAAe1vE,MAAA,CAAOoX,WAAvB,IAAuC,EAA1D;IAEA,KAAKu4D,kBAAL,GAA0B,IAA1B;IACA,KAAKC,oBAAL,GAA4B,EAA5B;EAVkB;EAapB,IAAIC,sBAAJA,CAAA,EAA6B;IAC3B,OAAO,KAAKF,kBAAL,EAAyBG,OAAzB,IAAoC,CAA3C;EAD2B;EAI7BxkD,cAAA,EAAgB;IACd1X,uDAAA,CACE,CAAC,KAAK+7D,kBADR,EAEE,sDAFF;IAIA,KAAKA,kBAAL,GAA0B,KAAKiL,OAAL,GACtB,IAAIC,yBAAJ,CAA8B,IAA9B,CADsB,GAEtB,IAAIC,uBAAJ,CAA4B,IAA5B,CAFJ;IAGA,OAAO,KAAKnL,kBAAZ;EARc;EAWhBtjD,eAAemxB,KAAf,EAAsBv/B,GAAtB,EAA2B;IACzB,IAAIA,GAAA,IAAO,KAAK4xD,sBAAhB,EAAwC;MACtC,OAAO,IAAP;IADsC;IAGxC,MAAMzjD,WAAA,GAAc,KAAKwuD,OAAL,GAChB,IAAIG,0BAAJ,CAA+B,IAA/B,EAAqCv9B,KAArC,EAA4Cv/B,GAA5C,CADgB,GAEhB,IAAI+8D,wBAAJ,CAA6B,IAA7B,EAAmCx9B,KAAnC,EAA0Cv/B,GAA1C,CAFJ;IAGA,KAAK2xD,oBAAL,CAA0BjyE,IAA1B,CAA+ByuB,WAA/B;IACA,OAAOA,WAAP;EARyB;EAW3BhB,kBAAkBlH,MAAlB,EAA0B;IACxB,KAAKyrD,kBAAL,EAAyBxpD,MAAzB,CAAgCjC,MAAhC;IAEA,WAAWuB,MAAX,IAAqB,KAAKmqD,oBAAL,CAA0Bl/E,KAA1B,CAAgC,CAAhC,CAArB,EAAyD;MACvD+0B,MAAA,CAAOU,MAAP,CAAcjC,MAAd;IADuD;EAHjC;AAxCR;AAiDpB,MAAM+2D,cAAN,CAAqB;EACnBxlF,YAAYw6E,MAAZ,EAAoB;IAClB,KAAKqH,IAAL,GAAYrH,MAAA,CAAO5vE,GAAnB;IACA,KAAKs3E,KAAL,GAAa,KAAb;IACA,KAAKC,YAAL,GAAoB,IAApB;IACA,KAAKn7D,UAAL,GAAkB,IAAlB;IACA,MAAMzc,MAAA,GAASiwE,MAAA,CAAOjwE,MAAtB;IACA,KAAKswE,cAAL,GAAsBtwE,MAAA,CAAOjD,MAA7B;IACA,KAAK+yE,OAAL,GAAe,CAAf;IACA,KAAKM,SAAL,GAAiB,IAAjB;IAEA,KAAKI,aAAL,GAAqBxwE,MAAA,CAAOgZ,YAAP,IAAuB,KAA5C;IACA,KAAKy3D,eAAL,GAAuBzwE,MAAA,CAAOyX,cAA9B;IACA,IAAI,CAAC,KAAKg5D,eAAN,IAAyB,CAAC,KAAKD,aAAnC,EAAkD;MAChD,KAAKA,aAAL,GAAqB,IAArB;IADgD;IAIlD,KAAKI,qBAAL,GAA6B,CAAC5wE,MAAA,CAAOiZ,aAArC;IACA,KAAK43D,iBAAL,GAAyB,CAAC7wE,MAAA,CAAOgZ,YAAjC;IAEA,KAAKkiE,eAAL,GAAuB,IAAvB;IACA,KAAKhK,eAAL,GAAuB,IAAI78D,8DAAJ,EAAvB;IACA,KAAKk8D,kBAAL,GAA0B,IAAIl8D,8DAAJ,EAA1B;EArBkB;EAwBpB,IAAI2X,YAAJA,CAAA,EAAmB;IACjB,OAAO,KAAKukD,kBAAL,CAAwB91D,OAA/B;EADiB;EAInB,IAAI3Y,QAAJA,CAAA,EAAe;IACb,OAAO,KAAKsuE,SAAZ;EADa;EAIf,IAAIjkD,aAAJA,CAAA,EAAoB;IAClB,OAAO,KAAKmkD,cAAZ;EADkB;EAIpB,IAAIpkD,gBAAJA,CAAA,EAAuB;IACrB,OAAO,KAAK2kD,iBAAZ;EADqB;EAIvB,IAAI5kD,oBAAJA,CAAA,EAA2B;IACzB,OAAO,KAAK2kD,qBAAZ;EADyB;EAI3B,MAAMlrD,IAANA,CAAA,EAAa;IACX,MAAM,KAAKwrD,eAAL,CAAqBz2D,OAA3B;IACA,IAAI,KAAKk9D,KAAT,EAAgB;MACd,OAAO;QAAE30E,KAAA,EAAO8E,SAAT;QAAoB6d,IAAA,EAAM;MAA1B,CAAP;IADc;IAGhB,IAAI,KAAKiyD,YAAT,EAAuB;MACrB,MAAM,KAAKA,YAAX;IADqB;IAIvB,MAAMn6D,KAAA,GAAQ,KAAKy9D,eAAL,CAAqBx1D,IAArB,EAAd;IACA,IAAIjI,KAAA,KAAU,IAAd,EAAoB;MAClB,KAAKyzD,eAAL,GAAuB,IAAI78D,8DAAJ,EAAvB;MACA,OAAO,KAAKqR,IAAL,EAAP;IAFkB;IAIpB,KAAKoqD,OAAL,IAAgBryD,KAAA,CAAM1gB,MAAtB;IACA,KAAK0f,UAAL,GAAkB;MAChBkB,MAAA,EAAQ,KAAKmyD,OADG;MAEhBlyD,KAAA,EAAO,KAAK0yD;IAFI,CAAlB;IAMA,MAAMr0D,MAAA,GAAS,IAAII,UAAJ,CAAeoB,KAAf,EAAsBxB,MAArC;IACA,OAAO;MAAEjZ,KAAA,EAAOiZ,MAAT;MAAiB0J,IAAA,EAAM;IAAvB,CAAP;EAtBW;EAyBbQ,OAAOjC,MAAP,EAAe;IAGb,IAAI,CAAC,KAAKg3D,eAAV,EAA2B;MACzB,KAAKC,MAAL,CAAYj3D,MAAZ;MACA;IAFyB;IAI3B,KAAKg3D,eAAL,CAAqBx+D,OAArB,CAA6BwH,MAA7B;EAPa;EAUfi3D,OAAOj3D,MAAP,EAAe;IACb,KAAK0zD,YAAL,GAAoB1zD,MAApB;IACA,KAAKgtD,eAAL,CAAqBl2D,OAArB;EAFa;EAKfogE,mBAAmB71D,cAAnB,EAAmC;IACjC,KAAK21D,eAAL,GAAuB31D,cAAvB;IACAA,cAAA,CAAemD,EAAf,CAAkB,UAAlB,EAA8B,MAAM;MAClC,KAAKwoD,eAAL,CAAqBl2D,OAArB;IADkC,CAApC;IAIAuK,cAAA,CAAemD,EAAf,CAAkB,KAAlB,EAAyB,MAAM;MAE7BnD,cAAA,CAAe7I,OAAf;MACA,KAAKi7D,KAAL,GAAa,IAAb;MACA,KAAKzG,eAAL,CAAqBl2D,OAArB;IAJ6B,CAA/B;IAOAuK,cAAA,CAAemD,EAAf,CAAkB,OAAlB,EAA2BxE,MAAA,IAAU;MACnC,KAAKi3D,MAAL,CAAYj3D,MAAZ;IADmC,CAArC;IAMA,IAAI,CAAC,KAAK0sD,qBAAN,IAA+B,KAAKC,iBAAxC,EAA2D;MACzD,KAAKsK,MAAL,CAAY,IAAIznE,2DAAJ,CAAmB,uBAAnB,CAAZ;IADyD;IAK3D,IAAI,KAAKkkE,YAAT,EAAuB;MACrB,KAAKsD,eAAL,CAAqBx+D,OAArB,CAA6B,KAAKk7D,YAAlC;IADqB;EAxBU;AArFhB;AAmHrB,MAAMyD,eAAN,CAAsB;EACpB5lF,YAAYw6E,MAAZ,EAAoB;IAClB,KAAKqH,IAAL,GAAYrH,MAAA,CAAO5vE,GAAnB;IACA,KAAKs3E,KAAL,GAAa,KAAb;IACA,KAAKC,YAAL,GAAoB,IAApB;IACA,KAAKn7D,UAAL,GAAkB,IAAlB;IACA,KAAKqzD,OAAL,GAAe,CAAf;IACA,KAAKoL,eAAL,GAAuB,IAAvB;IACA,KAAKhK,eAAL,GAAuB,IAAI78D,8DAAJ,EAAvB;IACA,MAAMrU,MAAA,GAASiwE,MAAA,CAAOjwE,MAAtB;IACA,KAAK4wE,qBAAL,GAA6B,CAAC5wE,MAAA,CAAOiZ,aAArC;EATkB;EAYpB,IAAIgT,oBAAJA,CAAA,EAA2B;IACzB,OAAO,KAAK2kD,qBAAZ;EADyB;EAI3B,MAAMlrD,IAANA,CAAA,EAAa;IACX,MAAM,KAAKwrD,eAAL,CAAqBz2D,OAA3B;IACA,IAAI,KAAKk9D,KAAT,EAAgB;MACd,OAAO;QAAE30E,KAAA,EAAO8E,SAAT;QAAoB6d,IAAA,EAAM;MAA1B,CAAP;IADc;IAGhB,IAAI,KAAKiyD,YAAT,EAAuB;MACrB,MAAM,KAAKA,YAAX;IADqB;IAIvB,MAAMn6D,KAAA,GAAQ,KAAKy9D,eAAL,CAAqBx1D,IAArB,EAAd;IACA,IAAIjI,KAAA,KAAU,IAAd,EAAoB;MAClB,KAAKyzD,eAAL,GAAuB,IAAI78D,8DAAJ,EAAvB;MACA,OAAO,KAAKqR,IAAL,EAAP;IAFkB;IAIpB,KAAKoqD,OAAL,IAAgBryD,KAAA,CAAM1gB,MAAtB;IACA,KAAK0f,UAAL,GAAkB;MAAEkB,MAAA,EAAQ,KAAKmyD;IAAf,CAAlB;IAGA,MAAM7zD,MAAA,GAAS,IAAII,UAAJ,CAAeoB,KAAf,EAAsBxB,MAArC;IACA,OAAO;MAAEjZ,KAAA,EAAOiZ,MAAT;MAAiB0J,IAAA,EAAM;IAAvB,CAAP;EAnBW;EAsBbQ,OAAOjC,MAAP,EAAe;IAGb,IAAI,CAAC,KAAKg3D,eAAV,EAA2B;MACzB,KAAKC,MAAL,CAAYj3D,MAAZ;MACA;IAFyB;IAI3B,KAAKg3D,eAAL,CAAqBx+D,OAArB,CAA6BwH,MAA7B;EAPa;EAUfi3D,OAAOj3D,MAAP,EAAe;IACb,KAAK0zD,YAAL,GAAoB1zD,MAApB;IACA,KAAKgtD,eAAL,CAAqBl2D,OAArB;EAFa;EAKfogE,mBAAmB71D,cAAnB,EAAmC;IACjC,KAAK21D,eAAL,GAAuB31D,cAAvB;IACAA,cAAA,CAAemD,EAAf,CAAkB,UAAlB,EAA8B,MAAM;MAClC,KAAKwoD,eAAL,CAAqBl2D,OAArB;IADkC,CAApC;IAIAuK,cAAA,CAAemD,EAAf,CAAkB,KAAlB,EAAyB,MAAM;MAE7BnD,cAAA,CAAe7I,OAAf;MACA,KAAKi7D,KAAL,GAAa,IAAb;MACA,KAAKzG,eAAL,CAAqBl2D,OAArB;IAJ6B,CAA/B;IAOAuK,cAAA,CAAemD,EAAf,CAAkB,OAAlB,EAA2BxE,MAAA,IAAU;MACnC,KAAKi3D,MAAL,CAAYj3D,MAAZ;IADmC,CAArC;IAKA,IAAI,KAAK0zD,YAAT,EAAuB;MACrB,KAAKsD,eAAL,CAAqBx+D,OAArB,CAA6B,KAAKk7D,YAAlC;IADqB;EAlBU;AAtDf;AA8EtB,SAAS0D,oBAATA,CAA8BZ,SAA9B,EAAyCzL,OAAzC,EAAkD;EAChD,OAAO;IACLltB,QAAA,EAAU24B,SAAA,CAAU34B,QADf;IAELw5B,IAAA,EAAMb,SAAA,CAAUa,IAFX;IAGLZ,IAAA,EAAMD,SAAA,CAAUc,QAHX;IAILvhE,IAAA,EAAMygE,SAAA,CAAUzgE,IAJX;IAKLyoB,IAAA,EAAMg4C,SAAA,CAAUh4C,IALX;IAMLysC,MAAA,EAAQ,KANH;IAOLF;EAPK,CAAP;AADgD;AAYlD,MAAM6L,uBAAN,SAAsCG,cAAtC,CAAqD;EACnDxlF,YAAYw6E,MAAZ,EAAoB;IAClB,MAAMA,MAAN;IAEA,MAAMwL,cAAA,GAAiBz8B,QAAA,IAAY;MACjC,IAAIA,QAAA,CAAS08B,UAAT,KAAwB,GAA5B,EAAiC;QAC/B,MAAM93D,KAAA,GAAQ,IAAIzP,gEAAJ,CAAyB,gBAAe,KAAKmjE,IAAK,IAAlD,CAAd;QACA,KAAKM,YAAL,GAAoBh0D,KAApB;QACA,KAAK2sD,kBAAL,CAAwBx0D,MAAxB,CAA+B6H,KAA/B;QACA;MAJ+B;MAMjC,KAAK2sD,kBAAL,CAAwBv1D,OAAxB;MACA,KAAKogE,kBAAL,CAAwBp8B,QAAxB;MAEA,MAAM+xB,iBAAA,GAAoBh1E,IAAA,IAAQ;QAGhC,OAAO,KAAKm/E,eAAL,CAAqBjM,OAArB,CAA6BlzE,IAAA,CAAKwH,WAAL,EAA7B,CAAP;MAHgC,CAAlC;MAKA,MAAM;QAAEytE,kBAAF;QAAsBC;MAAtB,IACJnC,mFAAA,CAAiC;QAC/BiC,iBAD+B;QAE/BrB,MAAA,EAAQO,MAAA,CAAOP,MAFgB;QAG/Bj4D,cAAA,EAAgB,KAAKg5D,eAHU;QAI/Bz3D,YAAA,EAAc,KAAKw3D;MAJY,CAAjC,CADF;MAQA,KAAKK,iBAAL,GAAyBG,kBAAzB;MAEA,KAAKV,cAAL,GAAsBW,eAAA,IAAmB,KAAKX,cAA9C;MAEA,KAAKF,SAAL,GAAiBvB,4EAAA,CAA0BkC,iBAA1B,CAAjB;IA3BiC,CAAnC;IA8BA,KAAK4K,QAAL,GAAgB,IAAhB;IACA,IAAI,KAAKrE,IAAL,CAAUv1B,QAAV,KAAuB,OAA3B,EAAoC;MAClC,KAAK45B,QAAL,GAAgBtB,IAAA,CAAK96B,OAAL,CACd+7B,oBAAA,CAAqB,KAAKhE,IAA1B,EAAgCrH,MAAA,CAAO74D,WAAvC,CADc,EAEdqkE,cAFc,CAAhB;IADkC,CAApC,MAKO;MACL,KAAKE,QAAL,GAAgBrB,KAAA,CAAM/6B,OAAN,CACd+7B,oBAAA,CAAqB,KAAKhE,IAA1B,EAAgCrH,MAAA,CAAO74D,WAAvC,CADc,EAEdqkE,cAFc,CAAhB;IADK;IAOP,KAAKE,QAAL,CAAcjzD,EAAd,CAAiB,OAAjB,EAA0BxE,MAAA,IAAU;MAClC,KAAK0zD,YAAL,GAAoB1zD,MAApB;MACA,KAAKqsD,kBAAL,CAAwBx0D,MAAxB,CAA+BmI,MAA/B;IAFkC,CAApC;IAOA,KAAKy3D,QAAL,CAAc19D,GAAd;EArDkB;AAD+B;AA0DrD,MAAM+8D,wBAAN,SAAuCK,eAAvC,CAAuD;EACrD5lF,YAAYw6E,MAAZ,EAAoBzyB,KAApB,EAA2Bv/B,GAA3B,EAAgC;IAC9B,MAAMgyD,MAAN;IAEA,KAAK2L,YAAL,GAAoB,EAApB;IACA,WAAWj1C,QAAX,IAAuBspC,MAAA,CAAO74D,WAA9B,EAA2C;MACzC,MAAMpU,KAAA,GAAQitE,MAAA,CAAO74D,WAAP,CAAmBuvB,QAAnB,CAAd;MACA,IAAI3jC,KAAA,KAAU8E,SAAd,EAAyB;QACvB;MADuB;MAGzB,KAAK8zE,YAAL,CAAkBj1C,QAAlB,IAA8B3jC,KAA9B;IALyC;IAO3C,KAAK44E,YAAL,CAAkBC,KAAlB,GAA2B,SAAQr+B,KAAM,IAAGv/B,GAAA,GAAM,CAAxB,EAA1B;IAEA,MAAMw9D,cAAA,GAAiBz8B,QAAA,IAAY;MACjC,IAAIA,QAAA,CAAS08B,UAAT,KAAwB,GAA5B,EAAiC;QAC/B,MAAM93D,KAAA,GAAQ,IAAIzP,gEAAJ,CAAyB,gBAAe,KAAKmjE,IAAK,IAAlD,CAAd;QACA,KAAKM,YAAL,GAAoBh0D,KAApB;QACA;MAH+B;MAKjC,KAAKw3D,kBAAL,CAAwBp8B,QAAxB;IANiC,CAAnC;IASA,KAAK28B,QAAL,GAAgB,IAAhB;IACA,IAAI,KAAKrE,IAAL,CAAUv1B,QAAV,KAAuB,OAA3B,EAAoC;MAClC,KAAK45B,QAAL,GAAgBtB,IAAA,CAAK96B,OAAL,CACd+7B,oBAAA,CAAqB,KAAKhE,IAA1B,EAAgC,KAAKsE,YAArC,CADc,EAEdH,cAFc,CAAhB;IADkC,CAApC,MAKO;MACL,KAAKE,QAAL,GAAgBrB,KAAA,CAAM/6B,OAAN,CACd+7B,oBAAA,CAAqB,KAAKhE,IAA1B,EAAgC,KAAKsE,YAArC,CADc,EAEdH,cAFc,CAAhB;IADK;IAOP,KAAKE,QAAL,CAAcjzD,EAAd,CAAiB,OAAjB,EAA0BxE,MAAA,IAAU;MAClC,KAAK0zD,YAAL,GAAoB1zD,MAApB;IADkC,CAApC;IAGA,KAAKy3D,QAAL,CAAc19D,GAAd;EAtC8B;AADqB;AA2CvD,MAAM48D,yBAAN,SAAwCI,cAAxC,CAAuD;EACrDxlF,YAAYw6E,MAAZ,EAAoB;IAClB,MAAMA,MAAN;IAEA,IAAIvtC,IAAA,GAAO+e,kBAAA,CAAmB,KAAK61B,IAAL,CAAU50C,IAA7B,CAAX;IAGA,IAAI63C,YAAA,CAAatqE,IAAb,CAAkB,KAAKqnE,IAAL,CAAUh2E,IAA5B,CAAJ,EAAuC;MACrCohC,IAAA,GAAOA,IAAA,CAAKooB,OAAL,CAAa,KAAb,EAAoB,EAApB,CAAP;IADqC;IAIvCsvB,EAAA,CAAG0B,KAAH,CAASp5C,IAAT,EAAe,CAAC9e,KAAD,EAAQm4D,IAAR,KAAiB;MAC9B,IAAIn4D,KAAJ,EAAW;QACT,IAAIA,KAAA,CAAM4I,IAAN,KAAe,QAAnB,EAA6B;UAC3B5I,KAAA,GAAQ,IAAIzP,gEAAJ,CAAyB,gBAAeuuB,IAAK,IAA7C,CAAR;QAD2B;QAG7B,KAAKk1C,YAAL,GAAoBh0D,KAApB;QACA,KAAK2sD,kBAAL,CAAwBx0D,MAAxB,CAA+B6H,KAA/B;QACA;MANS;MASX,KAAK0sD,cAAL,GAAsByL,IAAA,CAAKjyE,IAA3B;MAEA,KAAKsxE,kBAAL,CAAwBhB,EAAA,CAAG4B,gBAAH,CAAoBt5C,IAApB,CAAxB;MACA,KAAK6tC,kBAAL,CAAwBv1D,OAAxB;IAb8B,CAAhC;EAVkB;AADiC;AA6BvD,MAAM+/D,0BAAN,SAAyCM,eAAzC,CAAyD;EACvD5lF,YAAYw6E,MAAZ,EAAoBzyB,KAApB,EAA2Bv/B,GAA3B,EAAgC;IAC9B,MAAMgyD,MAAN;IAEA,IAAIvtC,IAAA,GAAO+e,kBAAA,CAAmB,KAAK61B,IAAL,CAAU50C,IAA7B,CAAX;IAGA,IAAI63C,YAAA,CAAatqE,IAAb,CAAkB,KAAKqnE,IAAL,CAAUh2E,IAA5B,CAAJ,EAAuC;MACrCohC,IAAA,GAAOA,IAAA,CAAKooB,OAAL,CAAa,KAAb,EAAoB,EAApB,CAAP;IADqC;IAIvC,KAAKswB,kBAAL,CAAwBhB,EAAA,CAAG4B,gBAAH,CAAoBt5C,IAApB,EAA0B;MAAE8a,KAAF;MAASv/B,GAAA,EAAKA,GAAA,GAAM;IAApB,CAA1B,CAAxB;EAV8B;AADuB;;;;;;;;;;;;;;;;;;;AC7azD;AAMA;AAEA;AAMA,IAAIm8D,EAAJ,EAAQ9oE,MAAR,EAAgB2qE,eAAhB;AACA,IAAIhoE,qDAAJ,EAAc;EAEZmmE,EAAA,GAAK,MAAM3wD,sBAAA,CAAuB,IAAvB,CAAX;EAEA,IAAI;IACFnY,MAAA,GAAS,MAAMmY,sBAAA,CAAuB,QAAvB,CAAf;EADE,CAAJ,CAEE,MAAM;EACR,IAAI;IACFwyD,eAAA,GAAkB,MAAMxyD,sBAAA,CAAuB,iBAAvB,CAAxB;EADE,CAAJ,CAEE,MAAM;AATI;AAYd;AA8BA,MAAMs1B,SAAA,GAAY,SAAAA,CAAU1+C,GAAV,EAAe;EAC/B,OAAO,IAAI0a,OAAJ,CAAY,CAACC,OAAD,EAAUe,MAAV,KAAqB;IACtCq+D,EAAA,CAAG8B,QAAH,CAAY77E,GAAZ,EAAiB,CAACujB,KAAD,EAAQpxB,IAAR,KAAiB;MAChC,IAAIoxB,KAAA,IAAS,CAACpxB,IAAd,EAAoB;QAClBupB,MAAA,CAAO,IAAIlF,KAAJ,CAAU+M,KAAV,CAAP;QACA;MAFkB;MAIpB5I,OAAA,CAAQ,IAAIqB,UAAJ,CAAe7pB,IAAf,CAAR;IALgC,CAAlC;EADsC,CAAjC,CAAP;AAD+B,CAAjC;AAYA,MAAMgjB,iBAAN,SAAgCwa,+DAAhC,CAAkD;AAElD,MAAM1a,iBAAN,SAAgCkb,+DAAhC,CAAkD;EAIhDC,cAAcv+B,KAAd,EAAqBC,MAArB,EAA6B;IAC3B,OAAOmf,MAAA,CAAO4+C,YAAP,CAAoBh+D,KAApB,EAA2BC,MAA3B,CAAP;EAD2B;AAJmB;AASlD,MAAMojB,qBAAN,SAAoCsb,mEAApC,CAA0D;EAIxDI,WAAW5wB,GAAX,EAAgBywB,eAAhB,EAAiC;IAC/B,OAAOiuB,SAAA,CAAU1+C,GAAV,EAAeqa,IAAf,CAAoBloB,IAAA,IAAQ;MACjC,OAAO;QAAEstD,QAAA,EAAUttD,IAAZ;QAAkBs+B;MAAlB,CAAP;IADiC,CAA5B,CAAP;EAD+B;AAJuB;AAW1D,MAAMrb,2BAAN,SAA0Cyb,yEAA1C,CAAsE;EAIpED,WAAW5wB,GAAX,EAAgB;IACd,OAAO0+C,SAAA,CAAU1+C,GAAV,CAAP;EADc;AAJoD;;;;;;;;;;;;;;;AC3FtE;AACA;AAEA,MAAM87E,QAAA,GAAWC,MAAA,CAAO,UAAP,CAAjB;AAEA,MAAMC,oBAAN,CAA2B;EACzB,CAAAhiC,OAAA,GAAW,IAAX;EAEA5kD,YAAYsG,IAAZ,EAAkB+R,MAAlB,EAA0B;IACxB,KAAK/R,IAAL,GAAYA,IAAZ;IACA,KAAK+R,MAAL,GAAcA,MAAd;EAFwB;EAQ1B,IAAIusC,OAAJA,CAAA,EAAc;IACZ,OAAO,KAAK,CAAAA,OAAZ;EADY;EAOdiiC,YAAYC,QAAZ,EAAsBliC,OAAtB,EAA+B;IAC7B,IAAIkiC,QAAA,KAAaJ,QAAjB,EAA2B;MACzBhrF,4DAAA,CAAY,uCAAZ;IADyB;IAG3B,KAAK,CAAAkpD,OAAL,GAAgBA,OAAhB;EAJ6B;AAlBN;AA0B3B,MAAMvkC,qBAAN,CAA4B;EAC1B,CAAA0mE,aAAA,GAAiB,IAAjB;EAEA,CAAAC,MAAA,GAAU,IAAIz6E,GAAJ,EAAV;EAEA,CAAA06E,WAAA,GAAe,IAAf;EAEA,CAAAC,KAAA,GAAS,IAAT;EAEAlnF,YAAYjD,IAAZ,EAAkB;IAChB,KAAKuJ,IAAL,GAAY,IAAZ;IACA,KAAK6gF,OAAL,GAAe,IAAf;IAEA,IAAIpqF,IAAA,KAAS,IAAb,EAAmB;MACjB;IADiB;IAGnB,KAAKuJ,IAAL,GAAYvJ,IAAA,CAAKuJ,IAAjB;IACA,KAAK6gF,OAAL,GAAepqF,IAAA,CAAKoqF,OAApB;IACA,KAAK,CAAAD,KAAL,GAAcnqF,IAAA,CAAKmqF,KAAnB;IACA,WAAW9kC,KAAX,IAAoBrlD,IAAA,CAAKiqF,MAAzB,EAAiC;MAC/B,KAAK,CAAAA,MAAL,CAAavrE,GAAb,CACE2mC,KAAA,CAAMtgD,EADR,EAEE,IAAI8kF,oBAAJ,CAAyBxkC,KAAA,CAAM97C,IAA/B,EAAqC87C,KAAA,CAAM/pC,MAA3C,CAFF;IAD+B;IAOjC,IAAItb,IAAA,CAAKqqF,SAAL,KAAmB,KAAvB,EAA8B;MAC5B,WAAWhlC,KAAX,IAAoB,KAAK,CAAA4kC,MAAL,CAAa95E,MAAb,EAApB,EAA2C;QACzCk1C,KAAA,CAAMykC,WAAN,CAAkBH,QAAlB,EAA4B,KAA5B;MADyC;IADf;IAM9B,WAAWzzD,EAAX,IAAiBl2B,IAAA,CAAKk2B,EAAtB,EAA0B;MACxB,KAAK,CAAA+zD,MAAL,CAAax6E,GAAb,CAAiBymB,EAAjB,EAAqB4zD,WAArB,CAAiCH,QAAjC,EAA2C,IAA3C;IADwB;IAI1B,WAAWW,GAAX,IAAkBtqF,IAAA,CAAKsqF,GAAvB,EAA4B;MAC1B,KAAK,CAAAL,MAAL,CAAax6E,GAAb,CAAiB66E,GAAjB,EAAsBR,WAAtB,CAAkCH,QAAlC,EAA4C,KAA5C;IAD0B;IAK5B,KAAK,CAAAO,WAAL,GAAoB,KAAKK,OAAL,EAApB;EAhCgB;EAmClB,CAAAC,6BAA8BtW,KAA9B,EAAqC;IACnC,MAAM3pE,MAAA,GAAS2pE,KAAA,CAAM3pE,MAArB;IACA,IAAIA,MAAA,GAAS,CAAb,EAAgB;MACd,OAAO,IAAP;IADc;IAGhB,MAAMkgF,QAAA,GAAWvW,KAAA,CAAM,CAAN,CAAjB;IACA,KAAK,IAAIv7D,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIpO,MAApB,EAA4BoO,CAAA,EAA5B,EAAiC;MAC/B,MAAM/O,OAAA,GAAUsqE,KAAA,CAAMv7D,CAAN,CAAhB;MACA,IAAI+xE,KAAJ;MACA,IAAI59E,KAAA,CAAMC,OAAN,CAAcnD,OAAd,CAAJ,EAA4B;QAC1B8gF,KAAA,GAAQ,KAAK,CAAAF,4BAAL,CAAmC5gF,OAAnC,CAAR;MAD0B,CAA5B,MAEO,IAAI,KAAK,CAAAqgF,MAAL,CAAa79E,GAAb,CAAiBxC,OAAjB,CAAJ,EAA+B;QACpC8gF,KAAA,GAAQ,KAAK,CAAAT,MAAL,CAAax6E,GAAb,CAAiB7F,OAAjB,EAA0Bi+C,OAAlC;MADoC,CAA/B,MAEA;QACLhpD,qDAAA,CAAM,qCAAoC+K,OAArC,EAAL;QACA,OAAO,IAAP;MAFK;MAIP,QAAQ6gF,QAAR;QACE,KAAK,KAAL;UACE,IAAI,CAACC,KAAL,EAAY;YACV,OAAO,KAAP;UADU;UAGZ;QACF,KAAK,IAAL;UACE,IAAIA,KAAJ,EAAW;YACT,OAAO,IAAP;UADS;UAGX;QACF,KAAK,KAAL;UACE,OAAO,CAACA,KAAR;QACF;UACE,OAAO,IAAP;MAdJ;IAX+B;IA4BjC,OAAOD,QAAA,KAAa,KAApB;EAlCmC;EAqCrCluE,UAAU8oC,KAAV,EAAiB;IACf,IAAI,KAAK,CAAA4kC,MAAL,CAAa3yE,IAAb,KAAsB,CAA1B,EAA6B;MAC3B,OAAO,IAAP;IAD2B;IAG7B,IAAI,CAAC+tC,KAAL,EAAY;MACVxmD,qDAAA,CAAK,qCAAL;MACA,OAAO,IAAP;IAFU;IAIZ,IAAIwmD,KAAA,CAAM90C,IAAN,KAAe,KAAnB,EAA0B;MACxB,IAAI,CAAC,KAAK,CAAA05E,MAAL,CAAa79E,GAAb,CAAiBi5C,KAAA,CAAMtgD,EAAvB,CAAL,EAAiC;QAC/BlG,qDAAA,CAAM,qCAAoCwmD,KAAA,CAAMtgD,EAA3C,EAAL;QACA,OAAO,IAAP;MAF+B;MAIjC,OAAO,KAAK,CAAAklF,MAAL,CAAax6E,GAAb,CAAiB41C,KAAA,CAAMtgD,EAAvB,EAA2B8iD,OAAlC;IALwB,CAA1B,MAMO,IAAIxC,KAAA,CAAM90C,IAAN,KAAe,MAAnB,EAA2B;MAEhC,IAAI80C,KAAA,CAAMslC,UAAV,EAAsB;QACpB,OAAO,KAAK,CAAAH,4BAAL,CAAmCnlC,KAAA,CAAMslC,UAAzC,CAAP;MADoB;MAGtB,IAAI,CAACtlC,KAAA,CAAMulC,MAAP,IAAiBvlC,KAAA,CAAMulC,MAAN,KAAiB,OAAtC,EAA+C;QAE7C,WAAW7lF,EAAX,IAAiBsgD,KAAA,CAAMz0C,GAAvB,EAA4B;UAC1B,IAAI,CAAC,KAAK,CAAAq5E,MAAL,CAAa79E,GAAb,CAAiBrH,EAAjB,CAAL,EAA2B;YACzBlG,qDAAA,CAAM,qCAAoCkG,EAArC,EAAL;YACA,OAAO,IAAP;UAFyB;UAI3B,IAAI,KAAK,CAAAklF,MAAL,CAAax6E,GAAb,CAAiB1K,EAAjB,EAAqB8iD,OAAzB,EAAkC;YAChC,OAAO,IAAP;UADgC;QALR;QAS5B,OAAO,KAAP;MAX6C,CAA/C,MAYO,IAAIxC,KAAA,CAAMulC,MAAN,KAAiB,OAArB,EAA8B;QACnC,WAAW7lF,EAAX,IAAiBsgD,KAAA,CAAMz0C,GAAvB,EAA4B;UAC1B,IAAI,CAAC,KAAK,CAAAq5E,MAAL,CAAa79E,GAAb,CAAiBrH,EAAjB,CAAL,EAA2B;YACzBlG,qDAAA,CAAM,qCAAoCkG,EAArC,EAAL;YACA,OAAO,IAAP;UAFyB;UAI3B,IAAI,CAAC,KAAK,CAAAklF,MAAL,CAAax6E,GAAb,CAAiB1K,EAAjB,EAAqB8iD,OAA1B,EAAmC;YACjC,OAAO,KAAP;UADiC;QALT;QAS5B,OAAO,IAAP;MAVmC,CAA9B,MAWA,IAAIxC,KAAA,CAAMulC,MAAN,KAAiB,QAArB,EAA+B;QACpC,WAAW7lF,EAAX,IAAiBsgD,KAAA,CAAMz0C,GAAvB,EAA4B;UAC1B,IAAI,CAAC,KAAK,CAAAq5E,MAAL,CAAa79E,GAAb,CAAiBrH,EAAjB,CAAL,EAA2B;YACzBlG,qDAAA,CAAM,qCAAoCkG,EAArC,EAAL;YACA,OAAO,IAAP;UAFyB;UAI3B,IAAI,CAAC,KAAK,CAAAklF,MAAL,CAAax6E,GAAb,CAAiB1K,EAAjB,EAAqB8iD,OAA1B,EAAmC;YACjC,OAAO,IAAP;UADiC;QALT;QAS5B,OAAO,KAAP;MAVoC,CAA/B,MAWA,IAAIxC,KAAA,CAAMulC,MAAN,KAAiB,QAArB,EAA+B;QACpC,WAAW7lF,EAAX,IAAiBsgD,KAAA,CAAMz0C,GAAvB,EAA4B;UAC1B,IAAI,CAAC,KAAK,CAAAq5E,MAAL,CAAa79E,GAAb,CAAiBrH,EAAjB,CAAL,EAA2B;YACzBlG,qDAAA,CAAM,qCAAoCkG,EAArC,EAAL;YACA,OAAO,IAAP;UAFyB;UAI3B,IAAI,KAAK,CAAAklF,MAAL,CAAax6E,GAAb,CAAiB1K,EAAjB,EAAqB8iD,OAAzB,EAAkC;YAChC,OAAO,KAAP;UADgC;QALR;QAS5B,OAAO,IAAP;MAVoC;MAYtChpD,qDAAA,CAAM,mCAAkCwmD,KAAA,CAAMulC,MAAO,GAArD;MACA,OAAO,IAAP;IApDgC;IAsDlC/rF,qDAAA,CAAM,sBAAqBwmD,KAAA,CAAM90C,IAAK,GAAtC;IACA,OAAO,IAAP;EArEe;EAwEjBs6E,cAAc9lF,EAAd,EAAkB8iD,OAAA,GAAU,IAA5B,EAAkC;IAChC,IAAI,CAAC,KAAK,CAAAoiC,MAAL,CAAa79E,GAAb,CAAiBrH,EAAjB,CAAL,EAA2B;MACzBlG,qDAAA,CAAM,qCAAoCkG,EAArC,EAAL;MACA;IAFyB;IAI3B,KAAK,CAAAklF,MAAL,CAAax6E,GAAb,CAAiB1K,EAAjB,EAAqB+kF,WAArB,CAAiCH,QAAjC,EAA2C,CAAC,CAAC9hC,OAA7C;IAEA,KAAK,CAAAmiC,aAAL,GAAsB,IAAtB;EAPgC;EAUlC,IAAIc,oBAAJA,CAAA,EAA2B;IACzB,OAAO,KAAK,CAAAZ,WAAL,KAAsB,IAAtB,IAA8B,KAAKK,OAAL,OAAmB,KAAK,CAAAL,WAA7D;EADyB;EAI3Ba,SAAA,EAAW;IACT,IAAI,CAAC,KAAK,CAAAd,MAAL,CAAa3yE,IAAlB,EAAwB;MACtB,OAAO,IAAP;IADsB;IAGxB,IAAI,KAAK,CAAA6yE,KAAT,EAAiB;MACf,OAAO,KAAK,CAAAA,KAAL,CAAYjsF,KAAZ,EAAP;IADe;IAGjB,OAAO,CAAC,GAAG,KAAK,CAAA+rF,MAAL,CAAaxgF,IAAb,EAAJ,CAAP;EAPS;EAUXuhF,UAAA,EAAY;IACV,OAAO,KAAK,CAAAf,MAAL,CAAa3yE,IAAb,GAAoB,CAApB,GAAwB6H,8DAAA,CAAc,KAAK,CAAA8qE,MAAnB,CAAxB,GAAsD,IAA7D;EADU;EAIZgB,SAASlmF,EAAT,EAAa;IACX,OAAO,KAAK,CAAAklF,MAAL,CAAax6E,GAAb,CAAiB1K,EAAjB,KAAwB,IAA/B;EADW;EAIbwlF,QAAA,EAAU;IACR,IAAI,KAAK,CAAAP,aAAL,KAAwB,IAA5B,EAAkC;MAChC,OAAO,KAAK,CAAAA,aAAZ;IADgC;IAGlC,MAAMxqE,IAAA,GAAO,IAAIH,kEAAJ,EAAb;IAEA,WAAW,CAACta,EAAD,EAAKsgD,KAAL,CAAX,IAA0B,KAAK,CAAA4kC,MAA/B,EAAwC;MACtCzqE,IAAA,CAAKX,MAAL,CAAY,GAAG9Z,EAAG,IAAGsgD,KAAA,CAAMwC,OAAf,EAAZ;IADsC;IAGxC,OAAQ,KAAK,CAAAmiC,aAAL,GAAsBxqE,IAAA,CAAKuB,SAAL,EAA9B;EATQ;AAzLgB;;;;;;;;;;;;;;;AC5B5B;AAMA;AA6CA,MAAMmqE,uBAAA,GAA0B,MAAhC;AACA,MAAM7rF,iBAAA,GAAoB,EAA1B;AACA,MAAM8rF,mBAAA,GAAsB,GAA5B;AACA,MAAMC,WAAA,GAAc,IAAI57E,GAAJ,EAApB;AAEA,SAAS67E,MAATA,CAAgB/zE,IAAhB,EAAsB2O,0BAAtB,EAAkD;EAChD,IAAIoZ,GAAJ;EACA,IAAIpZ,0BAAA,IAA8BznB,wDAAA,CAAYynB,0BAA9C,EAA0E;IACxEoZ,GAAA,GAAM,IAAI6lC,eAAJ,CAAoB5tD,IAApB,EAA0BA,IAA1B,EAAgC4mB,UAAhC,CAA2C,IAA3C,EAAiD;MAAEgX,KAAA,EAAO;IAAT,CAAjD,CAAN;EADwE,CAA1E,MAEO;IACL,MAAMp2B,MAAA,GAASla,QAAA,CAASC,aAAT,CAAuB,QAAvB,CAAf;IACAia,MAAA,CAAOpf,KAAP,GAAeof,MAAA,CAAOnf,MAAP,GAAgB2X,IAA/B;IACA+nB,GAAA,GAAMvgB,MAAA,CAAOof,UAAP,CAAkB,IAAlB,EAAwB;MAAEgX,KAAA,EAAO;IAAT,CAAxB,CAAN;EAHK;EAMP,OAAO7V,GAAP;AAVgD;AAalD,SAASisD,SAATA,CAAmB1J,UAAnB,EAA+B37D,0BAA/B,EAA2D;EACzD,MAAMslE,YAAA,GAAeH,WAAA,CAAY37E,GAAZ,CAAgBmyE,UAAhB,CAArB;EACA,IAAI2J,YAAJ,EAAkB;IAChB,OAAOA,YAAP;EADgB;EAIlB,MAAMlsD,GAAA,GAAMgsD,MAAA,CAAOhsF,iBAAP,EAA0B4mB,0BAA1B,CAAZ;EAEAoZ,GAAA,CAAI3E,IAAJ,GAAW,GAAGr7B,iBAAkB,MAAKuiF,UAA1B,EAAX;EACA,MAAM4J,OAAA,GAAUnsD,GAAA,CAAI6jB,WAAJ,CAAgB,EAAhB,CAAhB;EAGA,IAAIuoC,MAAA,GAASD,OAAA,CAAQE,qBAArB;EACA,IAAIC,OAAA,GAAU5vF,IAAA,CAAKwX,GAAL,CAASi4E,OAAA,CAAQI,sBAAjB,CAAd;EACA,IAAIH,MAAJ,EAAY;IACV,MAAMI,KAAA,GAAQJ,MAAA,IAAUA,MAAA,GAASE,OAAT,CAAxB;IACAP,WAAA,CAAY1sE,GAAZ,CAAgBkjE,UAAhB,EAA4BiK,KAA5B;IAEAxsD,GAAA,CAAIvgB,MAAJ,CAAWpf,KAAX,GAAmB2/B,GAAA,CAAIvgB,MAAJ,CAAWnf,MAAX,GAAoB,CAAvC;IACA,OAAOksF,KAAP;EALU;EAYZxsD,GAAA,CAAIoJ,WAAJ,GAAkB,KAAlB;EACApJ,GAAA,CAAIkC,SAAJ,CAAc,CAAd,EAAiB,CAAjB,EAAoBliC,iBAApB,EAAuCA,iBAAvC;EACAggC,GAAA,CAAIkiB,UAAJ,CAAe,GAAf,EAAoB,CAApB,EAAuB,CAAvB;EACA,IAAIuqC,MAAA,GAASzsD,GAAA,CAAIkX,YAAJ,CACX,CADW,EAEX,CAFW,EAGXl3C,iBAHW,EAIXA,iBAJW,EAKXW,IALF;EAMA2rF,OAAA,GAAU,CAAV;EACA,KAAK,IAAIhzE,CAAA,GAAImzE,MAAA,CAAOvhF,MAAP,GAAgB,CAAhB,GAAoB,CAA5B,EAA+BoO,CAAA,IAAK,CAAzC,EAA4CA,CAAA,IAAK,CAAjD,EAAoD;IAClD,IAAImzE,MAAA,CAAOnzE,CAAP,IAAY,CAAhB,EAAmB;MACjBgzE,OAAA,GAAU5vF,IAAA,CAAKmlC,IAAL,CAAUvoB,CAAA,GAAI,CAAJ,GAAQtZ,iBAAlB,CAAV;MACA;IAFiB;EAD+B;EAUpDggC,GAAA,CAAIkC,SAAJ,CAAc,CAAd,EAAiB,CAAjB,EAAoBliC,iBAApB,EAAuCA,iBAAvC;EACAggC,GAAA,CAAIkiB,UAAJ,CAAe,GAAf,EAAoB,CAApB,EAAuBliD,iBAAvB;EACAysF,MAAA,GAASzsD,GAAA,CAAIkX,YAAJ,CAAiB,CAAjB,EAAoB,CAApB,EAAuBl3C,iBAAvB,EAA0CA,iBAA1C,EAA6DW,IAAtE;EACAyrF,MAAA,GAAS,CAAT;EACA,KAAK,IAAI9yE,CAAA,GAAI,CAAR,EAAWwD,EAAA,GAAK2vE,MAAA,CAAOvhF,MAAvB,EAA+BoO,CAAA,GAAIwD,EAAxC,EAA4CxD,CAAA,IAAK,CAAjD,EAAoD;IAClD,IAAImzE,MAAA,CAAOnzE,CAAP,IAAY,CAAhB,EAAmB;MACjB8yE,MAAA,GAASpsF,iBAAA,GAAoBtD,IAAA,CAAKC,KAAL,CAAW2c,CAAA,GAAI,CAAJ,GAAQtZ,iBAAnB,CAA7B;MACA;IAFiB;EAD+B;EAOpDggC,GAAA,CAAIvgB,MAAJ,CAAWpf,KAAX,GAAmB2/B,GAAA,CAAIvgB,MAAJ,CAAWnf,MAAX,GAAoB,CAAvC;EAEA,IAAI8rF,MAAJ,EAAY;IACV,MAAMI,KAAA,GAAQJ,MAAA,IAAUA,MAAA,GAASE,OAAT,CAAxB;IACAP,WAAA,CAAY1sE,GAAZ,CAAgBkjE,UAAhB,EAA4BiK,KAA5B;IACA,OAAOA,KAAP;EAHU;EAMZT,WAAA,CAAY1sE,GAAZ,CAAgBkjE,UAAhB,EAA4BuJ,mBAA5B;EACA,OAAOA,mBAAP;AAlEyD;AAqE3D,SAASY,UAATA,CAAoBxnE,IAApB,EAA0BynE,IAA1B,EAAgC54D,MAAhC,EAAwC;EAEtC,MAAM64D,OAAA,GAAUrnF,QAAA,CAASC,aAAT,CAAuB,MAAvB,CAAhB;EACA,MAAMqnF,iBAAA,GAAoB;IACxBhlF,KAAA,EAAO,CADiB;IAExB8+C,WAAA,EAAa,CAFW;IAGxBmmC,OAAA,EAASH,IAAA,CAAKxnF,GAAL,KAAa,EAHE;IAIxB4nF,MAAA,EAAQJ,IAAA,CAAKI,MAJW;IAKxBn5E,QAAA,EAAU;EALc,CAA1B;EAOAsR,IAAA,CAAK8nE,SAAL,CAAelhF,IAAf,CAAoB8gF,OAApB;EAEA,MAAMz9C,EAAA,GAAK5vC,iDAAA,CAAKoxB,SAAL,CAAezL,IAAA,CAAK+nE,UAApB,EAAgCN,IAAA,CAAKh8D,SAArC,CAAX;EACA,IAAI9oB,KAAA,GAAQnL,IAAA,CAAKwwF,KAAL,CAAW/9C,EAAA,CAAG,CAAH,CAAX,EAAkBA,EAAA,CAAG,CAAH,CAAlB,CAAZ;EACA,MAAMvpC,KAAA,GAAQmuB,MAAA,CAAO44D,IAAA,CAAKQ,QAAZ,CAAd;EACA,IAAIvnF,KAAA,CAAM48C,QAAV,EAAoB;IAClB36C,KAAA,IAASnL,IAAA,CAAK0wF,EAAL,GAAU,CAAnB;EADkB;EAIpB,MAAM7K,UAAA,GACHr9D,IAAA,CAAKmoE,qBAAL,IAA8BznF,KAAA,CAAM0nF,gBAArC,IAA0D1nF,KAAA,CAAM28E,UADlE;EAEA,MAAMgL,UAAA,GAAa7wF,IAAA,CAAKqzC,KAAL,CAAWZ,EAAA,CAAG,CAAH,CAAX,EAAkBA,EAAA,CAAG,CAAH,CAAlB,CAAnB;EACA,MAAMq+C,UAAA,GACJD,UAAA,GAAatB,SAAA,CAAU1J,UAAV,EAAsBr9D,IAAA,CAAKuoE,2BAA3B,CADf;EAGA,IAAI9lF,IAAJ,EAAUC,GAAV;EACA,IAAIC,KAAA,KAAU,CAAd,EAAiB;IACfF,IAAA,GAAOwnC,EAAA,CAAG,CAAH,CAAP;IACAvnC,GAAA,GAAMunC,EAAA,CAAG,CAAH,IAAQq+C,UAAd;EAFe,CAAjB,MAGO;IACL7lF,IAAA,GAAOwnC,EAAA,CAAG,CAAH,IAAQq+C,UAAA,GAAa9wF,IAAA,CAAKgxF,GAAL,CAAS7lF,KAAT,CAA5B;IACAD,GAAA,GAAMunC,EAAA,CAAG,CAAH,IAAQq+C,UAAA,GAAa9wF,IAAA,CAAKixF,GAAL,CAAS9lF,KAAT,CAA3B;EAFK;EAKP,MAAM+lF,cAAA,GAAiB,2BAAvB;EACA,MAAMC,QAAA,GAAWjB,OAAA,CAAQhnF,KAAzB;EAGA,IAAIsf,IAAA,CAAK4oE,UAAL,KAAoB5oE,IAAA,CAAK6oE,cAA7B,EAA6C;IAC3CF,QAAA,CAASlmF,IAAT,GAAgB,GAAI,CAAC,MAAMA,IAAP,GAAeud,IAAA,CAAK8oE,UAApB,EAAgC/f,OAAjC,CAAyC,CAAzC,CAA4C,GAA/D;IACA4f,QAAA,CAASjmF,GAAT,GAAe,GAAI,CAAC,MAAMA,GAAP,GAAcsd,IAAA,CAAK+oE,WAAnB,EAAgChgB,OAAjC,CAAyC,CAAzC,CAA4C,GAA9D;EAF2C,CAA7C,MAGO;IAEL4f,QAAA,CAASlmF,IAAT,GAAgB,GAAGimF,cAAH,GAAoBjmF,IAAA,CAAKsmE,OAAL,CAAa,CAAb,CAAgB,KAApD;IACA4f,QAAA,CAASjmF,GAAT,GAAe,GAAGgmF,cAAH,GAAoBhmF,GAAA,CAAIqmE,OAAJ,CAAY,CAAZ,CAAe,KAAlD;EAHK;EAKP4f,QAAA,CAASj6E,QAAT,GAAoB,GAAGg6E,cAAH,GAAoBL,UAAA,CAAWtf,OAAX,CAAmB,CAAnB,CAAsB,KAA9D;EACA4f,QAAA,CAAStL,UAAT,GAAsBA,UAAtB;EAEAsK,iBAAA,CAAkBj5E,QAAlB,GAA6B25E,UAA7B;EAGAX,OAAA,CAAQnnF,YAAR,CAAqB,MAArB,EAA6B,cAA7B;EAEAmnF,OAAA,CAAQ53E,WAAR,GAAsB23E,IAAA,CAAKxnF,GAA3B;EAEAynF,OAAA,CAAQlxE,GAAR,GAAcixE,IAAA,CAAKjxE,GAAnB;EAIA,IAAIwJ,IAAA,CAAKmoE,qBAAT,EAAgC;IAC9BT,OAAA,CAAQsB,OAAR,CAAgBf,QAAhB,GACEvnF,KAAA,CAAMuoF,0BAAN,IAAoCxB,IAAA,CAAKQ,QAD3C;EAD8B;EAIhC,IAAItlF,KAAA,KAAU,CAAd,EAAiB;IACfglF,iBAAA,CAAkBhlF,KAAlB,GAA0BA,KAAA,IAAS,MAAMnL,IAAA,CAAK0wF,EAAX,CAAnC;EADe;EAMjB,IAAIgB,eAAA,GAAkB,KAAtB;EACA,IAAIzB,IAAA,CAAKxnF,GAAL,CAAS+F,MAAT,GAAkB,CAAtB,EAAyB;IACvBkjF,eAAA,GAAkB,IAAlB;EADuB,CAAzB,MAEO,IAAIzB,IAAA,CAAKxnF,GAAL,KAAa,GAAb,IAAoBwnF,IAAA,CAAKh8D,SAAL,CAAe,CAAf,MAAsBg8D,IAAA,CAAKh8D,SAAL,CAAe,CAAf,CAA9C,EAAiE;IACtE,MAAM09D,SAAA,GAAY3xF,IAAA,CAAKwX,GAAL,CAASy4E,IAAA,CAAKh8D,SAAL,CAAe,CAAf,CAAT,CAAlB;MACE29D,SAAA,GAAY5xF,IAAA,CAAKwX,GAAL,CAASy4E,IAAA,CAAKh8D,SAAL,CAAe,CAAf,CAAT,CADd;IAIA,IACE09D,SAAA,KAAcC,SAAd,IACA5xF,IAAA,CAAKE,GAAL,CAASyxF,SAAT,EAAoBC,SAApB,IAAiC5xF,IAAA,CAAKG,GAAL,CAASwxF,SAAT,EAAoBC,SAApB,CAAjC,GAAkE,GAFpE,EAGE;MACAF,eAAA,GAAkB,IAAlB;IADA;EARoE;EAYxE,IAAIA,eAAJ,EAAqB;IACnBvB,iBAAA,CAAkBlmC,WAAlB,GAAgC/gD,KAAA,CAAM48C,QAAN,GAAiBmqC,IAAA,CAAKrsF,MAAtB,GAA+BqsF,IAAA,CAAKtsF,KAApE;EADmB;EAGrB6kB,IAAA,CAAKqpE,kBAAL,CAAwBlvE,GAAxB,CAA4ButE,OAA5B,EAAqCC,iBAArC;EACA,IAAI3nE,IAAA,CAAKspE,iBAAT,EAA4B;IAC1BtpE,IAAA,CAAKupE,WAAL,CAAiB7B,OAAjB;EAD0B;AAzFU;AA8FxC,SAAS8B,MAATA,CAAgB3vE,MAAhB,EAAwB;EACtB,MAAM;IAAE1S,GAAF;IAAOwjB,KAAP;IAAcglB,UAAd;IAA0B7U,GAA1B;IAA+B2uD,YAA/B;IAA6CC;EAA7C,IAAgE7vE,MAAtE;EACA,MAAM;IAAEnZ;EAAF,IAAYyG,GAAlB;EACA,IAAIskB,SAAA,GAAY,EAAhB;EACA,IAAIkkB,UAAA,CAAW8R,WAAX,KAA2B,CAA3B,IAAgC9R,UAAA,CAAWi4C,OAA/C,EAAwD;IACtD,MAAM;MAAEvK;IAAF,IAAiB38E,KAAvB;IACA,MAAM;MAAE+gD,WAAF;MAAe/yC;IAAf,IAA4BihC,UAAlC;IAEA,IAAI85C,YAAA,KAAiB/6E,QAAjB,IAA6Bg7E,cAAA,KAAmBrM,UAApD,EAAgE;MAC9DviD,GAAA,CAAI3E,IAAJ,GAAW,GAAGznB,QAAA,GAAWic,KAAM,MAAK0yD,UAAzB,EAAX;MACAxjE,MAAA,CAAO4vE,YAAP,GAAsB/6E,QAAtB;MACAmL,MAAA,CAAO6vE,cAAP,GAAwBrM,UAAxB;IAH8D;IAOhE,MAAM;MAAEliF;IAAF,IAAY2/B,GAAA,CAAI6jB,WAAJ,CAAgBx3C,GAAA,CAAI2I,WAApB,CAAlB;IAEA,IAAI3U,KAAA,GAAQ,CAAZ,EAAe;MACbswB,SAAA,GAAa,UAAUg2B,WAAA,GAAc92B,KAAf,GAAwBxvB,KAAM,GAApD;IADa;EAbuC;EAiBxD,IAAIw0C,UAAA,CAAWhtC,KAAX,KAAqB,CAAzB,EAA4B;IAC1B8oB,SAAA,GAAa,UAASkkB,UAAA,CAAWhtC,KAAM,QAAO8oB,SAAlC,EAAZ;EAD0B;EAG5B,IAAIA,SAAA,CAAUzlB,MAAV,GAAmB,CAAvB,EAA0B;IACxBtF,KAAA,CAAM+qB,SAAN,GAAkBA,SAAlB;EADwB;AAxBJ;AA6BxB,SAASrkB,MAATA,CAAgB4Y,IAAhB,EAAsB;EACpB,IAAIA,IAAA,CAAK2pE,SAAT,EAAoB;IAClB;EADkB;EAGpB,MAAMC,QAAA,GAAW5pE,IAAA,CAAK8nE,SAAtB;EACA,MAAM76D,UAAA,GAAajN,IAAA,CAAK+E,WAAxB;EACA,MAAM8kE,cAAA,GAAiBD,QAAA,CAAS5jF,MAAhC;EAIA,IAAI6jF,cAAA,GAAiBlD,uBAArB,EAA8C;IAC5C15D,UAAA,CAAWhJ,OAAX;IACA;EAF4C;EAK9C,IAAI,CAACjE,IAAA,CAAKspE,iBAAV,EAA6B;IAC3B,WAAW5B,OAAX,IAAsBkC,QAAtB,EAAgC;MAC9B5pE,IAAA,CAAKupE,WAAL,CAAiB7B,OAAjB;IAD8B;EADL;EAK7Bz6D,UAAA,CAAWhJ,OAAX;AApBoB;AAuBtB,MAAM6lE,mBAAN,CAA0B;EACxBprF,YAAY;IACVqrF,iBADU;IAEVrqF,SAFU;IAGVU,QAHU;IAIVwpF,QAJU;IAKVjC,iBALU;IAMVqC,mBANU;IAOVtoE;EAPU,CAAZ,EAQG;IACD,KAAKuoE,kBAAL,GAA0BF,iBAA1B;IACA,KAAKT,iBAAL,GAAyBS,iBAAA,YAA6BG,cAAtD;IACA,KAAKtB,UAAL,GAAkB,KAAKC,cAAL,GAAsBnpF,SAAxC;IACA,KAAKooF,SAAL,GAAiB8B,QAAA,IAAY,EAA7B;IACA,KAAKO,oBAAL,GAA4BH,mBAAA,IAAuB,EAAnD;IACA,KAAKzB,2BAAL,GAAmC7mE,0BAAnC;IACA,KAAKymE,qBAAL,GAA6B,CAAC,CAACnmE,UAAA,CAAWiU,aAAX,EAA0BC,OAAzD;IAEA,KAAKkjD,OAAL,GAAe,IAAf;IACA,KAAKiQ,kBAAL,GAA0B1B,iBAAA,IAAqB,IAAIn2D,OAAJ,EAA/C;IACA,KAAKm4D,SAAL,GAAiB,KAAjB;IACA,KAAK5kE,WAAL,GAAmB,IAAIzH,8DAAJ,EAAnB;IACA,KAAK8sE,iBAAL,GAAyB;MACvBX,YAAA,EAAc,IADS;MAEvBC,cAAA,EAAgB,IAFO;MAGvBviF,GAAA,EAAK,IAHkB;MAIvBwjB,KAAA,EAAOvqB,QAAA,CAASuqB,KAAT,IAAkB3I,UAAA,CAAW0wB,gBAAX,IAA+B,CAA/B,CAJF;MAKvB/C,UAAA,EAAY,IALW;MAMvB7U,GAAA,EAAKgsD,MAAA,CAAO,CAAP,EAAUplE,0BAAV;IANkB,CAAzB;IAQA,MAAM;MAAE1gB,SAAF;MAAaC,UAAb;MAAyBC,KAAzB;MAAgCC;IAAhC,IAA0Cf,QAAA,CAASgB,OAAzD;IACA,KAAK2mF,UAAL,GAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAC,CAAX,EAAc,CAAC7mF,KAAf,EAAsBC,KAAA,GAAQF,UAA9B,CAAlB;IACA,KAAK6nF,UAAL,GAAkB9nF,SAAlB;IACA,KAAK+nF,WAAL,GAAmB9nF,UAAnB;IAEAvG,qEAAA,CAAmBgF,SAAnB,EAA8BU,QAA9B;IAGA,KAAK2kB,WAAL,CAAiBrB,OAAjB,CACG2S,OADH,CACW,MAAM;MACb,KAAK+zD,iBAAL,GAAyB,IAAzB;IADa,CADjB,EAIGtlE,KAJH,CAIS,MAAM,EAJf;EA7BC;EA0CH,IAAIpB,OAAJA,CAAA,EAAc;IACZ,OAAO,KAAKqB,WAAL,CAAiBrB,OAAxB;EADY;EAOd0L,OAAA,EAAS;IACP,KAAKu6D,SAAL,GAAiB,IAAjB;IACA,IAAI,KAAKvQ,OAAT,EAAkB;MAChB,KAAKA,OAAL,CACGhqD,MADH,CACU,IAAIzS,2DAAJ,CAAmB,2BAAnB,CADV,EAEGmI,KAFH,CAES,MAAM,EAFf;MAKA,KAAKs0D,OAAL,GAAe,IAAf;IANgB;IAQlB,KAAKr0D,WAAL,CAAiBC,MAAjB,CAAwB,IAAIrI,2DAAJ,CAAmB,2BAAnB,CAAxB;EAVO;EAgBT0tE,cAAc/1E,KAAd,EAAqBg2E,UAArB,EAAiC;IAC/B,WAAW11E,IAAX,IAAmBN,KAAnB,EAA0B;MACxB,IAAIM,IAAA,CAAK3U,GAAL,KAAa8Q,SAAjB,EAA4B;QAC1B,IACE6D,IAAA,CAAK5I,IAAL,KAAc,yBAAd,IACA4I,IAAA,CAAK5I,IAAL,KAAc,oBAFhB,EAGE;UACA,MAAMvM,MAAA,GAAS,KAAKmpF,UAApB;UACA,KAAKA,UAAL,GAAkBvoF,QAAA,CAASC,aAAT,CAAuB,MAAvB,CAAlB;UACA,KAAKsoF,UAAL,CAAgB9nF,SAAhB,CAA0BC,GAA1B,CAA8B,eAA9B;UACA,IAAI6T,IAAA,CAAKpU,EAAL,KAAY,IAAhB,EAAsB;YACpB,KAAKooF,UAAL,CAAgBroF,YAAhB,CAA6B,IAA7B,EAAmC,GAAGqU,IAAA,CAAKpU,EAAR,EAAnC;UADoB;UAGtBf,MAAA,CAAO+G,MAAP,CAAc,KAAKoiF,UAAnB;QAPA,CAHF,MAWO,IAAIh0E,IAAA,CAAK5I,IAAL,KAAc,kBAAlB,EAAsC;UAC3C,KAAK48E,UAAL,GAAkB,KAAKA,UAAL,CAAgBxhC,UAAlC;QAD2C;QAG7C;MAf0B;MAiB5B,KAAK+iC,oBAAL,CAA0BvjF,IAA1B,CAA+BgO,IAAA,CAAK3U,GAApC;MACAunF,UAAA,CAAW,IAAX,EAAiB5yE,IAAjB,EAAuB01E,UAAvB;IAnBwB;EADK;EA2BjCf,YAAY7B,OAAZ,EAAqB;IACnB,MAAMC,iBAAA,GAAqB,KAAKyC,iBAAL,CAAuBz6C,UAAvB,GACzB,KAAK05C,kBAAL,CAAwBn+E,GAAxB,CAA4Bw8E,OAA5B,CADF;IAEA,KAAK0C,iBAAL,CAAuBjjF,GAAvB,GAA6BugF,OAA7B;IACA8B,MAAA,CAAO,KAAKY,iBAAZ;IAEA,IAAIzC,iBAAA,CAAkBC,OAAtB,EAA+B;MAC7B,KAAKgB,UAAL,CAAgBpiF,MAAhB,CAAuBkhF,OAAvB;IAD6B;IAG/B,IAAIC,iBAAA,CAAkBE,MAAtB,EAA8B;MAC5B,MAAM0C,EAAA,GAAKlqF,QAAA,CAASC,aAAT,CAAuB,IAAvB,CAAX;MACAiqF,EAAA,CAAGhqF,YAAH,CAAgB,MAAhB,EAAwB,cAAxB;MACA,KAAKqoF,UAAL,CAAgBpiF,MAAhB,CAAuB+jF,EAAvB;IAH4B;EATX;EAmBrBC,QAAA,EAAU;IACR,MAAMv9D,UAAA,GAAa,IAAI3P,8DAAJ,EAAnB;IACA,IAAIgtE,UAAA,GAAarlF,MAAA,CAAO3J,MAAP,CAAc,IAAd,CAAjB;IAEA,IAAI,KAAKguF,iBAAT,EAA4B;MAC1B,MAAM76D,IAAA,GAAOA,CAAA,KAAM;QACjB,KAAK2qD,OAAL,CAAazqD,IAAb,GAAoBhL,IAApB,CAAyB,CAAC;UAAE1X,KAAF;UAAS2iB;QAAT,CAAD,KAAqB;UAC5C,IAAIA,IAAJ,EAAU;YACR3B,UAAA,CAAWhJ,OAAX;YACA;UAFQ;UAKVhf,MAAA,CAAOsW,MAAP,CAAc+uE,UAAd,EAA0Br+E,KAAA,CAAM4iB,MAAhC;UACA,KAAKw7D,aAAL,CAAmBp+E,KAAA,CAAMqI,KAAzB,EAAgCg2E,UAAhC;UACA77D,IAAA;QAR4C,CAA9C,EASGxB,UAAA,CAAWjI,MATd;MADiB,CAAnB;MAaA,KAAKo0D,OAAL,GAAe,KAAK6Q,kBAAL,CAAwBn7D,SAAxB,EAAf;MACAL,IAAA;IAf0B,CAA5B,MAgBO,IAAI,KAAKw7D,kBAAT,EAA6B;MAClC,MAAM;QAAE31E,KAAF;QAASua;MAAT,IAAoB,KAAKo7D,kBAA/B;MACA,KAAKI,aAAL,CAAmB/1E,KAAnB,EAA0Bua,MAA1B;MACA5B,UAAA,CAAWhJ,OAAX;IAHkC,CAA7B,MAIA;MACL,MAAM,IAAInE,KAAJ,CAAU,6CAAV,CAAN;IADK;IAIPmN,UAAA,CAAWvJ,OAAX,CAAmBC,IAAnB,CAAwB,MAAM;MAC5B2mE,UAAA,GAAa,IAAb;MACAljF,MAAA,CAAO,IAAP;IAF4B,CAA9B,EAGG,KAAK2d,WAAL,CAAiBC,MAHpB;EA5BQ;AAxHc;AA+J1B,SAASylE,eAATA,CAAyB5wE,MAAzB,EAAiC;EAC/B,MAAMmG,IAAA,GAAO,IAAI8pE,mBAAJ,CAAwBjwE,MAAxB,CAAb;EACAmG,IAAA,CAAKwqE,OAAL;EACA,OAAOxqE,IAAP;AAH+B;AAUjC,SAAS0qE,eAATA,CAAyB;EACvBhrF,SADuB;EAEvBU,QAFuB;EAGvBwpF,QAHuB;EAIvBjC,iBAJuB;EAKvBjmE,0BALuB;EAMvBkrC,UAAA,GAAa,IANU;EAOvB+9B,WAAA,GAAc;AAPS,CAAzB,EAQG;EACD,IAAI/9B,UAAJ,EAAgB;IACdlyD,qEAAA,CAAmBgF,SAAnB,EAA8B;MAAE2B,QAAA,EAAUjB,QAAA,CAASiB;IAArB,CAA9B;EADc;EAIhB,IAAIspF,WAAJ,EAAiB;IACf,MAAM7vD,GAAA,GAAMgsD,MAAA,CAAO,CAAP,EAAUplE,0BAAV,CAAZ;IACA,MAAMiJ,KAAA,GAAQvqB,QAAA,CAASuqB,KAAT,IAAkB3I,UAAA,CAAW0wB,gBAAX,IAA+B,CAA/B,CAAhC;IACA,MAAM74B,MAAA,GAAS;MACb4vE,YAAA,EAAc,IADD;MAEbC,cAAA,EAAgB,IAFH;MAGbviF,GAAA,EAAK,IAHQ;MAIbwjB,KAJa;MAKbglB,UAAA,EAAY,IALC;MAMb7U;IANa,CAAf;IAQA,WAAW3zB,GAAX,IAAkByiF,QAAlB,EAA4B;MAC1B/vE,MAAA,CAAO81B,UAAP,GAAoBg4C,iBAAA,CAAkBz8E,GAAlB,CAAsB/D,GAAtB,CAApB;MACA0S,MAAA,CAAO1S,GAAP,GAAaA,GAAb;MACAqiF,MAAA,CAAO3vE,MAAP;IAH0B;EAXb;AALhB;;;;;;;;;;;;;AC3cH;AACA;AAGA,MAAMmF,sBAAN,CAA6B;EAC3BtgB,YACE;IACEsH,MADF;IAEEme,WAFF;IAGEC,eAAA,GAAkB,KAHpB;IAIEC,0BAAA,GAA6B,IAJ/B;IAKEpC,YAAA,GAAe,KALjB;IAMEC,aAAA,GAAgB;EANlB,CADF,EASE0oE,qBATF,EAUE;IACA/tE,uDAAA,CACE+tE,qBADF,EAEE,6EAFF;IAKA,KAAKC,aAAL,GAAqB,EAArB;IACA,KAAKC,gBAAL,GAAwB1mE,eAAxB;IACA,KAAK2mE,2BAAL,GAAmC1mE,0BAAnC;IAEA,IAAIF,WAAA,EAAane,MAAb,GAAsB,CAA1B,EAA6B;MAG3B,MAAMkf,MAAA,GACJf,WAAA,YAAuBmB,UAAvB,IACAnB,WAAA,CAAYoB,UAAZ,KAA2BpB,WAAA,CAAYe,MAAZ,CAAmBK,UAD9C,GAEIpB,WAAA,CAAYe,MAFhB,GAGI,IAAII,UAAJ,CAAenB,WAAf,EAA4Be,MAJlC;MAKA,KAAK2lE,aAAL,CAAmBjkF,IAAnB,CAAwBse,MAAxB;IAR2B;IAW7B,KAAK8lE,sBAAL,GAA8BJ,qBAA9B;IACA,KAAK/Q,qBAAL,GAA6B,CAAC33D,aAA9B;IACA,KAAK43D,iBAAL,GAAyB,CAAC73D,YAA1B;IACA,KAAKs3D,cAAL,GAAsBvzE,MAAtB;IAEA,KAAK4yE,kBAAL,GAA0B,IAA1B;IACA,KAAKqS,aAAL,GAAqB,EAArB;IAEA,KAAKD,sBAAL,CAA4B7kE,gBAA5B,CAA6C,CAACM,KAAD,EAAQC,KAAR,KAAkB;MAC7D,KAAKwkE,cAAL,CAAoB;QAAEzkE,KAAF;QAASC;MAAT,CAApB;IAD6D,CAA/D;IAIA,KAAKskE,sBAAL,CAA4B3kE,mBAA5B,CAAgD,CAACO,MAAD,EAASC,KAAT,KAAmB;MACjE,KAAKy5D,WAAL,CAAiB;QAAE15D,MAAF;QAAUC;MAAV,CAAjB;IADiE,CAAnE;IAIA,KAAKmkE,sBAAL,CAA4B1kE,0BAA5B,CAAuDI,KAAA,IAAS;MAC9D,KAAKwkE,cAAL,CAAoB;QAAExkE;MAAF,CAApB;IAD8D,CAAhE;IAIA,KAAKskE,sBAAL,CAA4BzkE,0BAA5B,CAAuD,MAAM;MAC3D,KAAK4kE,kBAAL;IAD2D,CAA7D;IAIA,KAAKH,sBAAL,CAA4BhkE,cAA5B;EA7CA;EAgDFkkE,eAAe;IAAEzkE,KAAF;IAASC;EAAT,CAAf,EAAiC;IAG/B,MAAMxB,MAAA,GACJwB,KAAA,YAAiBpB,UAAjB,IACAoB,KAAA,CAAMnB,UAAN,KAAqBmB,KAAA,CAAMxB,MAAN,CAAaK,UADlC,GAEImB,KAAA,CAAMxB,MAFV,GAGI,IAAII,UAAJ,CAAeoB,KAAf,EAAsBxB,MAJ5B;IAMA,IAAIuB,KAAA,KAAU1V,SAAd,EAAyB;MACvB,IAAI,KAAK6nE,kBAAT,EAA6B;QAC3B,KAAKA,kBAAL,CAAwBwS,QAAxB,CAAiClmE,MAAjC;MAD2B,CAA7B,MAEO;QACL,KAAK2lE,aAAL,CAAmBjkF,IAAnB,CAAwBse,MAAxB;MADK;IAHgB,CAAzB,MAMO;MACL,MAAMmmE,KAAA,GAAQ,KAAKJ,aAAL,CAAmBt0B,IAAnB,CAAwB,UAAUthC,WAAV,EAAuB;QAC3D,IAAIA,WAAA,CAAYi2D,MAAZ,KAAuB7kE,KAA3B,EAAkC;UAChC,OAAO,KAAP;QADgC;QAGlC4O,WAAA,CAAY+1D,QAAZ,CAAqBlmE,MAArB;QACA,OAAO,IAAP;MAL2D,CAA/C,CAAd;MAOArI,uDAAA,CACEwuE,KADF,EAEE,yEAFF;IARK;EAfwB;EA8BjC,IAAIvS,sBAAJA,CAAA,EAA6B;IAC3B,OAAO,KAAKF,kBAAL,EAAyBG,OAAzB,IAAoC,CAA3C;EAD2B;EAI7BuH,YAAYlnE,GAAZ,EAAiB;IACf,IAAIA,GAAA,CAAIyN,KAAJ,KAAc9V,SAAlB,EAA6B;MAE3B,KAAKk6E,aAAL,CAAmB,CAAnB,GAAuBvlE,UAAvB,GAAoC;QAAEkB,MAAA,EAAQxN,GAAA,CAAIwN;MAAd,CAApC;IAF2B,CAA7B,MAGO;MACL,KAAKgyD,kBAAL,EAAyBlzD,UAAzB,GAAsC;QACpCkB,MAAA,EAAQxN,GAAA,CAAIwN,MADwB;QAEpCC,KAAA,EAAOzN,GAAA,CAAIyN;MAFyB,CAAtC;IADK;EAJQ;EAYjBskE,mBAAA,EAAqB;IACnB,KAAKvS,kBAAL,EAAyBx0D,eAAzB;IACA,KAAK0mE,gBAAL,GAAwB,IAAxB;EAFmB;EAKrBS,mBAAmB78D,MAAnB,EAA2B;IACzB,MAAMta,CAAA,GAAI,KAAK62E,aAAL,CAAmBnL,OAAnB,CAA2BpxD,MAA3B,CAAV;IACA,IAAIta,CAAA,IAAK,CAAT,EAAY;MACV,KAAK62E,aAAL,CAAmBpb,MAAnB,CAA0Bz7D,CAA1B,EAA6B,CAA7B;IADU;EAFa;EAO3BmgB,cAAA,EAAgB;IACd1X,uDAAA,CACE,CAAC,KAAK+7D,kBADR,EAEE,+DAFF;IAIA,MAAM4S,YAAA,GAAe,KAAKX,aAA1B;IACA,KAAKA,aAAL,GAAqB,IAArB;IACA,OAAO,IAAIY,4BAAJ,CACL,IADK,EAELD,YAFK,EAGL,KAAKV,gBAHA,EAIL,KAAKC,2BAJA,CAAP;EAPc;EAehBz1D,eAAe7O,KAAf,EAAsBS,GAAtB,EAA2B;IACzB,IAAIA,GAAA,IAAO,KAAK4xD,sBAAhB,EAAwC;MACtC,OAAO,IAAP;IADsC;IAGxC,MAAMpqD,MAAA,GAAS,IAAIg9D,iCAAJ,CAAsC,IAAtC,EAA4CjlE,KAA5C,EAAmDS,GAAnD,CAAf;IACA,KAAK8jE,sBAAL,CAA4B/jE,gBAA5B,CAA6CR,KAA7C,EAAoDS,GAApD;IACA,KAAK+jE,aAAL,CAAmBrkF,IAAnB,CAAwB8nB,MAAxB;IACA,OAAOA,MAAP;EAPyB;EAU3B2F,kBAAkBlH,MAAlB,EAA0B;IACxB,KAAKyrD,kBAAL,EAAyBxpD,MAAzB,CAAgCjC,MAAhC;IAEA,WAAWuB,MAAX,IAAqB,KAAKu8D,aAAL,CAAmBtxF,KAAnB,CAAyB,CAAzB,CAArB,EAAkD;MAChD+0B,MAAA,CAAOU,MAAP,CAAcjC,MAAd;IADgD;IAGlD,KAAK69D,sBAAL,CAA4B7jE,KAA5B;EANwB;AA9IC;AAyJ7B,MAAMskE,4BAAN,CAAmC;EACjC/sF,YACEw6E,MADF,EAEEsS,YAFF,EAGEpnE,eAAA,GAAkB,KAHpB,EAIEC,0BAAA,GAA6B,IAJ/B,EAKE;IACA,KAAK80D,OAAL,GAAeD,MAAf;IACA,KAAK0H,KAAL,GAAax8D,eAAA,IAAmB,KAAhC;IACA,KAAKi1D,SAAL,GAAiBrvB,4DAAA,CAAU3lC,0BAAV,IACbA,0BADa,GAEb,IAFJ;IAGA,KAAKwmE,aAAL,GAAqBW,YAAA,IAAgB,EAArC;IACA,KAAKzS,OAAL,GAAe,CAAf;IACA,WAAWryD,KAAX,IAAoB,KAAKmkE,aAAzB,EAAwC;MACtC,KAAK9R,OAAL,IAAgBryD,KAAA,CAAMnB,UAAtB;IADsC;IAGxC,KAAKo7D,SAAL,GAAiB,EAAjB;IACA,KAAKgL,aAAL,GAAqB3nE,OAAA,CAAQC,OAAR,EAArB;IACAi1D,MAAA,CAAON,kBAAP,GAA4B,IAA5B;IAEA,KAAKlzD,UAAL,GAAkB,IAAlB;EAfA;EAkBF0lE,SAAS1kE,KAAT,EAAgB;IACd,IAAI,KAAKk6D,KAAT,EAAgB;MACd;IADc;IAGhB,IAAI,KAAKD,SAAL,CAAe36E,MAAf,GAAwB,CAA5B,EAA+B;MAC7B,MAAMg7E,iBAAA,GAAoB,KAAKL,SAAL,CAAejzE,KAAf,EAA1B;MACAszE,iBAAA,CAAkB/8D,OAAlB,CAA0B;QAAEhY,KAAA,EAAOya,KAAT;QAAgBkI,IAAA,EAAM;MAAtB,CAA1B;IAF6B,CAA/B,MAGO;MACL,KAAKi8D,aAAL,CAAmBjkF,IAAnB,CAAwB8f,KAAxB;IADK;IAGP,KAAKqyD,OAAL,IAAgBryD,KAAA,CAAMnB,UAAtB;EAVc;EAahB,IAAI0P,YAAJA,CAAA,EAAmB;IACjB,OAAO,KAAK02D,aAAZ;EADiB;EAInB,IAAI5gF,QAAJA,CAAA,EAAe;IACb,OAAO,KAAKsuE,SAAZ;EADa;EAIf,IAAIlkD,gBAAJA,CAAA,EAAuB;IACrB,OAAO,KAAKgkD,OAAL,CAAaW,iBAApB;EADqB;EAIvB,IAAI5kD,oBAAJA,CAAA,EAA2B;IACzB,OAAO,KAAKikD,OAAL,CAAaU,qBAApB;EADyB;EAI3B,IAAIzkD,aAAJA,CAAA,EAAoB;IAClB,OAAO,KAAK+jD,OAAL,CAAaI,cAApB;EADkB;EAIpB,MAAM5qD,IAANA,CAAA,EAAa;IACX,IAAI,KAAKk8D,aAAL,CAAmB7kF,MAAnB,GAA4B,CAAhC,EAAmC;MACjC,MAAM0gB,KAAA,GAAQ,KAAKmkE,aAAL,CAAmBn9E,KAAnB,EAAd;MACA,OAAO;QAAEzB,KAAA,EAAOya,KAAT;QAAgBkI,IAAA,EAAM;MAAtB,CAAP;IAFiC;IAInC,IAAI,KAAKgyD,KAAT,EAAgB;MACd,OAAO;QAAE30E,KAAA,EAAO8E,SAAT;QAAoB6d,IAAA,EAAM;MAA1B,CAAP;IADc;IAGhB,MAAMoyD,iBAAA,GAAoB,IAAI1jE,8DAAJ,EAA1B;IACA,KAAKqjE,SAAL,CAAe/5E,IAAf,CAAoBo6E,iBAApB;IACA,OAAOA,iBAAA,CAAkBt9D,OAAzB;EAVW;EAab0L,OAAOjC,MAAP,EAAe;IACb,KAAKyzD,KAAL,GAAa,IAAb;IACA,WAAWI,iBAAX,IAAgC,KAAKL,SAArC,EAAgD;MAC9CK,iBAAA,CAAkB/8D,OAAlB,CAA0B;QAAEhY,KAAA,EAAO8E,SAAT;QAAoB6d,IAAA,EAAM;MAA1B,CAA1B;IAD8C;IAGhD,KAAK+xD,SAAL,CAAe36E,MAAf,GAAwB,CAAxB;EALa;EAQfoe,gBAAA,EAAkB;IAChB,IAAI,KAAKw8D,KAAT,EAAgB;MACd;IADc;IAGhB,KAAKA,KAAL,GAAa,IAAb;EAJgB;AA9Ee;AAuFnC,MAAM8K,iCAAN,CAAwC;EACtChtF,YAAYw6E,MAAZ,EAAoBzyD,KAApB,EAA2BS,GAA3B,EAAgC;IAC9B,KAAKiyD,OAAL,GAAeD,MAAf;IACA,KAAKoS,MAAL,GAAc7kE,KAAd;IACA,KAAKmlE,IAAL,GAAY1kE,GAAZ;IACA,KAAKi6D,YAAL,GAAoB,IAApB;IACA,KAAKR,SAAL,GAAiB,EAAjB;IACA,KAAKC,KAAL,GAAa,KAAb;IAEA,KAAKl7D,UAAL,GAAkB,IAAlB;EAR8B;EAWhC0lE,SAAS1kE,KAAT,EAAgB;IACd,IAAI,KAAKk6D,KAAT,EAAgB;MACd;IADc;IAGhB,IAAI,KAAKD,SAAL,CAAe36E,MAAf,KAA0B,CAA9B,EAAiC;MAC/B,KAAKm7E,YAAL,GAAoBz6D,KAApB;IAD+B,CAAjC,MAEO;MACL,MAAMmlE,kBAAA,GAAqB,KAAKlL,SAAL,CAAejzE,KAAf,EAA3B;MACAm+E,kBAAA,CAAmB5nE,OAAnB,CAA2B;QAAEhY,KAAA,EAAOya,KAAT;QAAgBkI,IAAA,EAAM;MAAtB,CAA3B;MACA,WAAWoyD,iBAAX,IAAgC,KAAKL,SAArC,EAAgD;QAC9CK,iBAAA,CAAkB/8D,OAAlB,CAA0B;UAAEhY,KAAA,EAAO8E,SAAT;UAAoB6d,IAAA,EAAM;QAA1B,CAA1B;MAD8C;MAGhD,KAAK+xD,SAAL,CAAe36E,MAAf,GAAwB,CAAxB;IANK;IAQP,KAAK46E,KAAL,GAAa,IAAb;IACA,KAAKzH,OAAL,CAAaoS,kBAAb,CAAgC,IAAhC;EAfc;EAkBhB,IAAIr2D,oBAAJA,CAAA,EAA2B;IACzB,OAAO,KAAP;EADyB;EAI3B,MAAMvG,IAANA,CAAA,EAAa;IACX,IAAI,KAAKwyD,YAAT,EAAuB;MACrB,MAAMz6D,KAAA,GAAQ,KAAKy6D,YAAnB;MACA,KAAKA,YAAL,GAAoB,IAApB;MACA,OAAO;QAAEl1E,KAAA,EAAOya,KAAT;QAAgBkI,IAAA,EAAM;MAAtB,CAAP;IAHqB;IAKvB,IAAI,KAAKgyD,KAAT,EAAgB;MACd,OAAO;QAAE30E,KAAA,EAAO8E,SAAT;QAAoB6d,IAAA,EAAM;MAA1B,CAAP;IADc;IAGhB,MAAMoyD,iBAAA,GAAoB,IAAI1jE,8DAAJ,EAA1B;IACA,KAAKqjE,SAAL,CAAe/5E,IAAf,CAAoBo6E,iBAApB;IACA,OAAOA,iBAAA,CAAkBt9D,OAAzB;EAXW;EAcb0L,OAAOjC,MAAP,EAAe;IACb,KAAKyzD,KAAL,GAAa,IAAb;IACA,WAAWI,iBAAX,IAAgC,KAAKL,SAArC,EAAgD;MAC9CK,iBAAA,CAAkB/8D,OAAlB,CAA0B;QAAEhY,KAAA,EAAO8E,SAAT;QAAoB6d,IAAA,EAAM;MAA1B,CAA1B;IAD8C;IAGhD,KAAK+xD,SAAL,CAAe36E,MAAf,GAAwB,CAAxB;IACA,KAAKmzE,OAAL,CAAaoS,kBAAb,CAAgC,IAAhC;EANa;AAhDuB;;;;;;;;;;;AC7OxC,MAAM3sE,mBAAA,GAAsB3Z,MAAA,CAAO3J,MAAP,CAAc,IAAd,CAA5B;AAEAsjB,mBAAA,CAAoBuE,UAApB,GAAiC,IAAjC;AACAvE,mBAAA,CAAoB+R,SAApB,GAAgC,EAAhC;;;;;;;;;;;;ACVA;AAYA,MAAM/1B,QAAN,CAAe;EACb,OAAOkxF,YAAPA,CAAoBh1E,IAApB,EAA0BtW,EAA1B,EAA8B6E,OAA9B,EAAuCyG,OAAvC,EAAgDiL,MAAhD,EAAwD;IACtD,MAAMzR,UAAA,GAAawG,OAAA,CAAQ+D,QAAR,CAAiBrP,EAAjB,EAAqB;MAAEyL,KAAA,EAAO;IAAT,CAArB,CAAnB;IACA,QAAQ5G,OAAA,CAAQL,IAAhB;MACE,KAAK,UAAL;QACE,IAAIM,UAAA,CAAW2G,KAAX,KAAqB,IAAzB,EAA+B;UAC7B6K,IAAA,CAAKhH,WAAL,GAAmBxK,UAAA,CAAW2G,KAA9B;QAD6B;QAG/B,IAAI8K,MAAA,KAAW,OAAf,EAAwB;UACtB;QADsB;QAGxBD,IAAA,CAAKhO,gBAAL,CAAsB,OAAtB,EAA+B5F,KAAA,IAAS;UACtC4I,OAAA,CAAQvI,QAAR,CAAiB/C,EAAjB,EAAqB;YAAEyL,KAAA,EAAO/I,KAAA,CAAMI,MAAN,CAAa2I;UAAtB,CAArB;QADsC,CAAxC;QAGA;MACF,KAAK,OAAL;QACE,IACE5G,OAAA,CAAQgnD,UAAR,CAAmBrgD,IAAnB,KAA4B,OAA5B,IACA3G,OAAA,CAAQgnD,UAAR,CAAmBrgD,IAAnB,KAA4B,UAF9B,EAGE;UACA,IAAI1G,UAAA,CAAW2G,KAAX,KAAqB5G,OAAA,CAAQgnD,UAAR,CAAmB0/B,KAA5C,EAAmD;YACjDj1E,IAAA,CAAKvW,YAAL,CAAkB,SAAlB,EAA6B,IAA7B;UADiD,CAAnD,MAEO,IAAI+E,UAAA,CAAW2G,KAAX,KAAqB5G,OAAA,CAAQgnD,UAAR,CAAmB2/B,MAA5C,EAAoD;YAGzDl1E,IAAA,CAAKxH,eAAL,CAAqB,SAArB;UAHyD;UAK3D,IAAIyH,MAAA,KAAW,OAAf,EAAwB;YACtB;UADsB;UAGxBD,IAAA,CAAKhO,gBAAL,CAAsB,QAAtB,EAAgC5F,KAAA,IAAS;YACvC4I,OAAA,CAAQvI,QAAR,CAAiB/C,EAAjB,EAAqB;cACnByL,KAAA,EAAO/I,KAAA,CAAMI,MAAN,CAAa8O,OAAb,GACHlP,KAAA,CAAMI,MAAN,CAAayE,YAAb,CAA0B,OAA1B,CADG,GAEH7E,KAAA,CAAMI,MAAN,CAAayE,YAAb,CAA0B,QAA1B;YAHe,CAArB;UADuC,CAAzC;QAXA,CAHF,MAqBO;UACL,IAAIzC,UAAA,CAAW2G,KAAX,KAAqB,IAAzB,EAA+B;YAC7B6K,IAAA,CAAKvW,YAAL,CAAkB,OAAlB,EAA2B+E,UAAA,CAAW2G,KAAtC;UAD6B;UAG/B,IAAI8K,MAAA,KAAW,OAAf,EAAwB;YACtB;UADsB;UAGxBD,IAAA,CAAKhO,gBAAL,CAAsB,OAAtB,EAA+B5F,KAAA,IAAS;YACtC4I,OAAA,CAAQvI,QAAR,CAAiB/C,EAAjB,EAAqB;cAAEyL,KAAA,EAAO/I,KAAA,CAAMI,MAAN,CAAa2I;YAAtB,CAArB;UADsC,CAAxC;QAPK;QAWP;MACF,KAAK,QAAL;QACE,IAAI3G,UAAA,CAAW2G,KAAX,KAAqB,IAAzB,EAA+B;UAC7B6K,IAAA,CAAKvW,YAAL,CAAkB,OAAlB,EAA2B+E,UAAA,CAAW2G,KAAtC;UACA,WAAWiH,MAAX,IAAqB7N,OAAA,CAAQqP,QAA7B,EAAuC;YACrC,IAAIxB,MAAA,CAAOm5C,UAAP,CAAkBpgD,KAAlB,KAA4B3G,UAAA,CAAW2G,KAA3C,EAAkD;cAChDiH,MAAA,CAAOm5C,UAAP,CAAkBl5C,QAAlB,GAA6B,IAA7B;YADgD,CAAlD,MAEO,IAAID,MAAA,CAAOm5C,UAAP,CAAkBl4B,cAAlB,CAAiC,UAAjC,CAAJ,EAAkD;cACvD,OAAOjhB,MAAA,CAAOm5C,UAAP,CAAkBl5C,QAAzB;YADuD;UAHpB;QAFV;QAU/B2D,IAAA,CAAKhO,gBAAL,CAAsB,OAAtB,EAA+B5F,KAAA,IAAS;UACtC,MAAMgG,OAAA,GAAUhG,KAAA,CAAMI,MAAN,CAAa4F,OAA7B;UACA,MAAM+C,KAAA,GACJ/C,OAAA,CAAQ0K,aAAR,KAA0B,CAAC,CAA3B,GACI,EADJ,GAEI1K,OAAA,CAAQA,OAAA,CAAQ0K,aAAhB,EAA+B3H,KAHrC;UAIAH,OAAA,CAAQvI,QAAR,CAAiB/C,EAAjB,EAAqB;YAAEyL;UAAF,CAArB;QANsC,CAAxC;QAQA;IAjEJ;EAFsD;EAuExD,OAAOggF,aAAPA,CAAqB;IAAEn1E,IAAF;IAAQzR,OAAR;IAAiByG,OAAA,GAAU,IAA3B;IAAiCiL,MAAjC;IAAyChY;EAAzC,CAArB,EAA6E;IAC3E,MAAM;MAAEstD;IAAF,IAAiBhnD,OAAvB;IACA,MAAM6mF,mBAAA,GAAsBp1E,IAAA,YAAgBq1E,iBAA5C;IAEA,IAAI9/B,UAAA,CAAWrgD,IAAX,KAAoB,OAAxB,EAAiC;MAG/BqgD,UAAA,CAAWrnD,IAAX,GAAkB,GAAGqnD,UAAA,CAAWrnD,IAAK,IAAG+R,MAAtB,EAAlB;IAH+B;IAKjC,WAAW,CAACpH,GAAD,EAAM1D,KAAN,CAAX,IAA2BhH,MAAA,CAAOQ,OAAP,CAAe4mD,UAAf,CAA3B,EAAuD;MACrD,IAAIpgD,KAAA,KAAU,IAAV,IAAkBA,KAAA,KAAU8E,SAAhC,EAA2C;QACzC;MADyC;MAI3C,QAAQpB,GAAR;QACE,KAAK,OAAL;UACE,IAAI1D,KAAA,CAAMjG,MAAV,EAAkB;YAChB8Q,IAAA,CAAKvW,YAAL,CAAkBoP,GAAlB,EAAuB1D,KAAA,CAAM9S,IAAN,CAAW,GAAX,CAAvB;UADgB;UAGlB;QACF,KAAK,QAAL;UAIE;QACF,KAAK,IAAL;UACE2d,IAAA,CAAKvW,YAAL,CAAkB,iBAAlB,EAAqC0L,KAArC;UACA;QACF,KAAK,OAAL;UACEhH,MAAA,CAAOsW,MAAP,CAAczE,IAAA,CAAKpW,KAAnB,EAA0BuL,KAA1B;UACA;QACF,KAAK,aAAL;UACE6K,IAAA,CAAKhH,WAAL,GAAmB7D,KAAnB;UACA;QACF;UACE,IAAI,CAACigF,mBAAD,IAAyBv8E,GAAA,KAAQ,MAAR,IAAkBA,GAAA,KAAQ,WAAvD,EAAqE;YACnEmH,IAAA,CAAKvW,YAAL,CAAkBoP,GAAlB,EAAuB1D,KAAvB;UADmE;MArBzE;IALqD;IAgCvD,IAAIigF,mBAAJ,EAAyB;MACvBntF,WAAA,CAAYwK,iBAAZ,CACEuN,IADF,EAEEu1C,UAAA,CAAW9hD,IAFb,EAGE8hD,UAAA,CAAW7iD,SAHb;IADuB;IASzB,IAAIsC,OAAA,IAAWugD,UAAA,CAAW+/B,MAA1B,EAAkC;MAChC,KAAKN,YAAL,CAAkBh1E,IAAlB,EAAwBu1C,UAAA,CAAW+/B,MAAnC,EAA2C/mF,OAA3C,EAAoDyG,OAApD;IADgC;EAlDyC;EA4D7E,OAAO1E,MAAPA,CAAc7L,UAAd,EAA0B;IACxB,MAAMuQ,OAAA,GAAUvQ,UAAA,CAAW6D,iBAA3B;IACA,MAAML,WAAA,GAAcxD,UAAA,CAAWwD,WAA/B;IACA,MAAMquD,IAAA,GAAO7xD,UAAA,CAAWsb,OAAxB;IACA,MAAME,MAAA,GAASxb,UAAA,CAAWwb,MAAX,IAAqB,SAApC;IACA,MAAMs1E,QAAA,GAAWhsF,QAAA,CAASC,aAAT,CAAuB8sD,IAAA,CAAKpoD,IAA5B,CAAjB;IACA,IAAIooD,IAAA,CAAKf,UAAT,EAAqB;MACnB,KAAK4/B,aAAL,CAAmB;QACjBn1E,IAAA,EAAMu1E,QADW;QAEjBhnF,OAAA,EAAS+nD,IAFQ;QAGjBr2C,MAHiB;QAIjBhY;MAJiB,CAAnB;IADmB;IASrB,MAAMutF,gBAAA,GAAmBv1E,MAAA,KAAW,UAApC;IACA,MAAMw1E,OAAA,GAAUhxF,UAAA,CAAW4L,GAA3B;IACAolF,OAAA,CAAQ/lF,MAAR,CAAe6lF,QAAf;IAEA,IAAI9wF,UAAA,CAAW6E,QAAf,EAAyB;MACvB,MAAMqrB,SAAA,GAAa,UAASlwB,UAAA,CAAW6E,QAAX,CAAoBqrB,SAApB,CAA8BtyB,IAA9B,CAAmC,GAAnC,CAAwC,GAApE;MACAozF,OAAA,CAAQ7rF,KAAR,CAAc+qB,SAAd,GAA0BA,SAA1B;IAFuB;IAMzB,IAAI6gE,gBAAJ,EAAsB;MACpBC,OAAA,CAAQhsF,YAAR,CAAqB,OAArB,EAA8B,kBAA9B;IADoB;IAKtB,MAAMqpF,QAAA,GAAW,EAAjB;IAIA,IAAIx8B,IAAA,CAAK14C,QAAL,CAAc1O,MAAd,KAAyB,CAA7B,EAAgC;MAC9B,IAAIonD,IAAA,CAAKnhD,KAAT,EAAgB;QACd,MAAMugF,IAAA,GAAOnsF,QAAA,CAASyX,cAAT,CAAwBs1C,IAAA,CAAKnhD,KAA7B,CAAb;QACAogF,QAAA,CAAS7lF,MAAT,CAAgBgmF,IAAhB;QACA,IAAIF,gBAAA,IAAoBltE,iDAAA,CAAQqtE,eAAR,CAAwBr/B,IAAA,CAAKpoD,IAA7B,CAAxB,EAA4D;UAC1D4kF,QAAA,CAAShjF,IAAT,CAAc4lF,IAAd;QAD0D;MAH9C;MAOhB,OAAO;QAAE5C;MAAF,CAAP;IAR8B;IAWhC,MAAM8C,KAAA,GAAQ,CAAC,CAACt/B,IAAD,EAAO,CAAC,CAAR,EAAWi/B,QAAX,CAAD,CAAd;IAEA,OAAOK,KAAA,CAAM1mF,MAAN,GAAe,CAAtB,EAAyB;MACvB,MAAM,CAACvG,MAAD,EAAS2U,CAAT,EAAY0C,IAAZ,IAAoB41E,KAAA,CAAMxyB,EAAN,CAAS,CAAC,CAAV,CAA1B;MACA,IAAI9lD,CAAA,GAAI,CAAJ,KAAU3U,MAAA,CAAOiV,QAAP,CAAgB1O,MAA9B,EAAsC;QACpC0mF,KAAA,CAAM3zC,GAAN;QACA;MAFoC;MAKtC,MAAM80B,KAAA,GAAQpuE,MAAA,CAAOiV,QAAP,CAAgB,EAAEg4E,KAAA,CAAMxyB,EAAN,CAAS,CAAC,CAAV,EAAa,CAAb,CAAlB,CAAd;MACA,IAAI2T,KAAA,KAAU,IAAd,EAAoB;QAClB;MADkB;MAIpB,MAAM;QAAE7oE;MAAF,IAAW6oE,KAAjB;MACA,IAAI7oE,IAAA,KAAS,OAAb,EAAsB;QACpB,MAAMwnF,IAAA,GAAOnsF,QAAA,CAASyX,cAAT,CAAwB+1D,KAAA,CAAM5hE,KAA9B,CAAb;QACA29E,QAAA,CAAShjF,IAAT,CAAc4lF,IAAd;QACA11E,IAAA,CAAKtQ,MAAL,CAAYgmF,IAAZ;QACA;MAJoB;MAOtB,MAAMG,SAAA,GAAY9e,KAAA,EAAOxhB,UAAP,EAAmBugC,KAAnB,GACdvsF,QAAA,CAASilD,eAAT,CAAyBuoB,KAAA,CAAMxhB,UAAN,CAAiBugC,KAA1C,EAAiD5nF,IAAjD,CADc,GAEd3E,QAAA,CAASC,aAAT,CAAuB0E,IAAvB,CAFJ;MAIA8R,IAAA,CAAKtQ,MAAL,CAAYmmF,SAAZ;MACA,IAAI9e,KAAA,CAAMxhB,UAAV,EAAsB;QACpB,KAAK4/B,aAAL,CAAmB;UACjBn1E,IAAA,EAAM61E,SADW;UAEjBtnF,OAAA,EAASwoE,KAFQ;UAGjB/hE,OAHiB;UAIjBiL,MAJiB;UAKjBhY;QALiB,CAAnB;MADoB;MAUtB,IAAI8uE,KAAA,CAAMn5D,QAAN,EAAgB1O,MAAhB,GAAyB,CAA7B,EAAgC;QAC9B0mF,KAAA,CAAM9lF,IAAN,CAAW,CAACinE,KAAD,EAAQ,CAAC,CAAT,EAAY8e,SAAZ,CAAX;MAD8B,CAAhC,MAEO,IAAI9e,KAAA,CAAM5hE,KAAV,EAAiB;QACtB,MAAMugF,IAAA,GAAOnsF,QAAA,CAASyX,cAAT,CAAwB+1D,KAAA,CAAM5hE,KAA9B,CAAb;QACA,IAAIqgF,gBAAA,IAAoBltE,iDAAA,CAAQqtE,eAAR,CAAwBznF,IAAxB,CAAxB,EAAuD;UACrD4kF,QAAA,CAAShjF,IAAT,CAAc4lF,IAAd;QADqD;QAGvDG,SAAA,CAAUnmF,MAAV,CAAiBgmF,IAAjB;MALsB;IArCD;IA8DzB,WAAW/X,EAAX,IAAiB8X,OAAA,CAAQM,gBAAR,CACf,uDADe,CAAjB,EAEG;MACDpY,EAAA,CAAGl0E,YAAH,CAAgB,UAAhB,EAA4B,IAA5B;IADC;IAIH,OAAO;MACLqpF;IADK,CAAP;EAnHwB;EA6H1B,OAAOtvE,MAAPA,CAAc/e,UAAd,EAA0B;IACxB,MAAMkwB,SAAA,GAAa,UAASlwB,UAAA,CAAW6E,QAAX,CAAoBqrB,SAApB,CAA8BtyB,IAA9B,CAAmC,GAAnC,CAAwC,GAApE;IACAoC,UAAA,CAAW4L,GAAX,CAAezG,KAAf,CAAqB+qB,SAArB,GAAiCA,SAAjC;IACAlwB,UAAA,CAAW4L,GAAX,CAAe1D,MAAf,GAAwB,KAAxB;EAHwB;AAjQb;;;;;;;;;;;ACff,MAAM2b,OAAN,CAAc;EAUZ,OAAOtP,WAAPA,CAAmBye,GAAnB,EAAwB;IACtB,MAAMja,KAAA,GAAQ,EAAd;IACA,MAAMw4E,MAAA,GAAS;MACbx4E,KADa;MAEbua,MAAA,EAAQ5pB,MAAA,CAAO3J,MAAP,CAAc,IAAd;IAFK,CAAf;IAIA,SAASyxF,IAATA,CAAcP,IAAd,EAAoB;MAClB,IAAI,CAACA,IAAL,EAAW;QACT;MADS;MAGX,IAAIvsF,GAAA,GAAM,IAAV;MACA,MAAM+E,IAAA,GAAOwnF,IAAA,CAAKxnF,IAAlB;MACA,IAAIA,IAAA,KAAS,OAAb,EAAsB;QACpB/E,GAAA,GAAMusF,IAAA,CAAKvgF,KAAX;MADoB,CAAtB,MAEO,IAAI,CAACmT,OAAA,CAAQqtE,eAAR,CAAwBznF,IAAxB,CAAL,EAAoC;QACzC;MADyC,CAApC,MAEA,IAAIwnF,IAAA,EAAMngC,UAAN,EAAkBv8C,WAAtB,EAAmC;QACxC7P,GAAA,GAAMusF,IAAA,CAAKngC,UAAL,CAAgBv8C,WAAtB;MADwC,CAAnC,MAEA,IAAI08E,IAAA,CAAKvgF,KAAT,EAAgB;QACrBhM,GAAA,GAAMusF,IAAA,CAAKvgF,KAAX;MADqB;MAGvB,IAAIhM,GAAA,KAAQ,IAAZ,EAAkB;QAChBqU,KAAA,CAAM1N,IAAN,CAAW;UACT3G;QADS,CAAX;MADgB;MAKlB,IAAI,CAACusF,IAAA,CAAK93E,QAAV,EAAoB;QAClB;MADkB;MAGpB,WAAWm5D,KAAX,IAAoB2e,IAAA,CAAK93E,QAAzB,EAAmC;QACjCq4E,IAAA,CAAKlf,KAAL;MADiC;IAvBjB;IA2BpBkf,IAAA,CAAKx+D,GAAL;IACA,OAAOu+D,MAAP;EAlCsB;EA2CxB,OAAOL,eAAPA,CAAuBznF,IAAvB,EAA6B;IAC3B,OAAO,EACLA,IAAA,KAAS,UAAT,IACAA,IAAA,KAAS,OADT,IAEAA,IAAA,KAAS,QAFT,IAGAA,IAAA,KAAS,QAHT,CADF;EAD2B;AArDjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACSd;AAqBA;AAOA;AAcA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA,MAAMqoF,YAAA,GAC8B,SADpC;AAGA,MAAMC,UAAA,GAC8B,WADpC;;;;;;;;;;;;;;AClEA;AAWA,MAAMC,YAAA,GAAe;EACnBC,OAAA,EAAS,CADU;EAEnBC,IAAA,EAAM,CAFa;EAGnBC,KAAA,EAAO;AAHY,CAArB;AAMA,MAAMC,UAAA,GAAa;EACjBH,OAAA,EAAS,CADQ;EAEjBI,MAAA,EAAQ,CAFS;EAGjBC,eAAA,EAAiB,CAHA;EAIjBC,KAAA,EAAO,CAJU;EAKjBC,OAAA,EAAS,CALQ;EAMjBL,KAAA,EAAO,CANU;EAOjBM,IAAA,EAAM,CAPW;EAQjBC,aAAA,EAAe,CARE;EASjBC,cAAA,EAAgB;AATC,CAAnB;AAYA,SAASC,UAATA,CAAoBhhE,MAApB,EAA4B;EAC1B,IACE,EACEA,MAAA,YAAkBrN,KAAlB,IACC,OAAOqN,MAAP,KAAkB,QAAlB,IAA8BA,MAAA,KAAW,IAD1C,CAFJ,EAKE;IACA/yB,qDAAA,CACE,gEADF;EADA;EAKF,QAAQ+yB,MAAA,CAAOnoB,IAAf;IACE,KAAK,gBAAL;MACE,OAAO,IAAI2X,oDAAJ,CAAmBwQ,MAAA,CAAO4C,OAA1B,CAAP;IACF,KAAK,qBAAL;MACE,OAAO,IAAI3S,yDAAJ,CAAwB+P,MAAA,CAAO4C,OAA/B,CAAP;IACF,KAAK,mBAAL;MACE,OAAO,IAAI1S,uDAAJ,CAAsB8P,MAAA,CAAO4C,OAA7B,EAAsC5C,MAAA,CAAOsI,IAA7C,CAAP;IACF,KAAK,6BAAL;MACE,OAAO,IAAI/X,iEAAJ,CAAgCyP,MAAA,CAAO4C,OAAvC,EAAgD5C,MAAA,CAAOuI,MAAvD,CAAP;IACF,KAAK,uBAAL;MACE,OAAO,IAAI/X,2DAAJ,CAA0BwP,MAAA,CAAO4C,OAAjC,EAA0C5C,MAAA,CAAOwI,OAAjD,CAAP;IACF;MACE,OAAO,IAAIhY,2DAAJ,CAA0BwP,MAAA,CAAO4C,OAAjC,EAA0C5C,MAAA,CAAOv1B,QAAP,EAA1C,CAAP;EAZJ;AAX0B;AA2B5B,MAAMinB,cAAN,CAAqB;EACnBngB,YAAY0vF,UAAZ,EAAwBC,UAAxB,EAAoCC,MAApC,EAA4C;IAC1C,KAAKF,UAAL,GAAkBA,UAAlB;IACA,KAAKC,UAAL,GAAkBA,UAAlB;IACA,KAAKC,MAAL,GAAcA,MAAd;IACA,KAAKC,UAAL,GAAkB,CAAlB;IACA,KAAKC,QAAL,GAAgB,CAAhB;IACA,KAAKC,WAAL,GAAmBxpF,MAAA,CAAO3J,MAAP,CAAc,IAAd,CAAnB;IACA,KAAKozF,iBAAL,GAAyBzpF,MAAA,CAAO3J,MAAP,CAAc,IAAd,CAAzB;IACA,KAAKqzF,oBAAL,GAA4B1pF,MAAA,CAAO3J,MAAP,CAAc,IAAd,CAA5B;IACA,KAAKszF,aAAL,GAAqB3pF,MAAA,CAAO3J,MAAP,CAAc,IAAd,CAArB;IAEA,KAAKuzF,kBAAL,GAA0B3rF,KAAA,IAAS;MACjC,MAAMzH,IAAA,GAAOyH,KAAA,CAAMzH,IAAnB;MACA,IAAIA,IAAA,CAAK4yF,UAAL,KAAoB,KAAKD,UAA7B,EAAyC;QACvC;MADuC;MAGzC,IAAI3yF,IAAA,CAAKy9E,MAAT,EAAiB;QACf,KAAK,CAAA4V,oBAAL,CAA2BrzF,IAA3B;QACA;MAFe;MAIjB,IAAIA,IAAA,CAAK6xB,QAAT,EAAmB;QACjB,MAAMihE,UAAA,GAAa9yF,IAAA,CAAK8yF,UAAxB;QACA,MAAMthE,UAAA,GAAa,KAAK0hE,oBAAL,CAA0BJ,UAA1B,CAAnB;QACA,IAAI,CAACthE,UAAL,EAAiB;UACf,MAAM,IAAInN,KAAJ,CAAW,2BAA0ByuE,UAA3B,EAAV,CAAN;QADe;QAGjB,OAAO,KAAKI,oBAAL,CAA0BJ,UAA1B,CAAP;QAEA,IAAI9yF,IAAA,CAAK6xB,QAAL,KAAkBigE,YAAA,CAAaE,IAAnC,EAAyC;UACvCxgE,UAAA,CAAWhJ,OAAX,CAAmBxoB,IAAA,CAAKA,IAAxB;QADuC,CAAzC,MAEO,IAAIA,IAAA,CAAK6xB,QAAL,KAAkBigE,YAAA,CAAaG,KAAnC,EAA0C;UAC/CzgE,UAAA,CAAWjI,MAAX,CAAkBmpE,UAAA,CAAW1yF,IAAA,CAAK0xB,MAAhB,CAAlB;QAD+C,CAA1C,MAEA;UACL,MAAM,IAAIrN,KAAJ,CAAU,0BAAV,CAAN;QADK;QAGP;MAfiB;MAiBnB,MAAM3a,MAAA,GAAS,KAAKypF,aAAL,CAAmBnzF,IAAA,CAAK0J,MAAxB,CAAf;MACA,IAAI,CAACA,MAAL,EAAa;QACX,MAAM,IAAI2a,KAAJ,CAAW,+BAA8BrkB,IAAA,CAAK0J,MAApC,EAAV,CAAN;MADW;MAGb,IAAI1J,IAAA,CAAK8yF,UAAT,EAAqB;QACnB,MAAMQ,YAAA,GAAe,KAAKX,UAA1B;QACA,MAAMY,YAAA,GAAevzF,IAAA,CAAK2yF,UAA1B;QAEA,IAAIpqE,OAAJ,CAAY,UAAUC,OAAV,EAAmB;UAC7BA,OAAA,CAAQ9e,MAAA,CAAO1J,IAAA,CAAKA,IAAZ,CAAR;QAD6B,CAA/B,EAEGkoB,IAFH,CAGE,UAAUqtD,MAAV,EAAkB;UAChBsd,MAAA,CAAOh+D,WAAP,CAAmB;YACjB89D,UAAA,EAAYW,YADK;YAEjBV,UAAA,EAAYW,YAFK;YAGjB1hE,QAAA,EAAUigE,YAAA,CAAaE,IAHN;YAIjBc,UAAA,EAAY9yF,IAAA,CAAK8yF,UAJA;YAKjB9yF,IAAA,EAAMu1E;UALW,CAAnB;QADgB,CAHpB,EAYE,UAAU7jD,MAAV,EAAkB;UAChBmhE,MAAA,CAAOh+D,WAAP,CAAmB;YACjB89D,UAAA,EAAYW,YADK;YAEjBV,UAAA,EAAYW,YAFK;YAGjB1hE,QAAA,EAAUigE,YAAA,CAAaG,KAHN;YAIjBa,UAAA,EAAY9yF,IAAA,CAAK8yF,UAJA;YAKjBphE,MAAA,EAAQghE,UAAA,CAAWhhE,MAAX;UALS,CAAnB;QADgB,CAZpB;QAsBA;MA1BmB;MA4BrB,IAAI1xB,IAAA,CAAK+yF,QAAT,EAAmB;QACjB,KAAK,CAAAS,gBAAL,CAAuBxzF,IAAvB;QACA;MAFiB;MAInB0J,MAAA,CAAO1J,IAAA,CAAKA,IAAZ;IA9DiC,CAAnC;IAgEA6yF,MAAA,CAAOxlF,gBAAP,CAAwB,SAAxB,EAAmC,KAAK+lF,kBAAxC;EA3E0C;EA8E5Cl9D,GAAGnsB,UAAH,EAAe0pF,OAAf,EAAwB;IAOtB,MAAMC,EAAA,GAAK,KAAKP,aAAhB;IACA,IAAIO,EAAA,CAAG3pF,UAAH,CAAJ,EAAoB;MAClB,MAAM,IAAIsa,KAAJ,CAAW,0CAAyCta,UAAW,GAA/D,CAAN;IADkB;IAGpB2pF,EAAA,CAAG3pF,UAAH,IAAiB0pF,OAAjB;EAXsB;EAoBxBrqE,KAAKrf,UAAL,EAAiB/J,IAAjB,EAAuB2zF,SAAvB,EAAkC;IAChC,KAAKd,MAAL,CAAYh+D,WAAZ,CACE;MACE89D,UAAA,EAAY,KAAKA,UADnB;MAEEC,UAAA,EAAY,KAAKA,UAFnB;MAGElpF,MAAA,EAAQK,UAHV;MAIE/J;IAJF,CADF,EAOE2zF,SAPF;EADgC;EAoBlCnqE,gBAAgBzf,UAAhB,EAA4B/J,IAA5B,EAAkC2zF,SAAlC,EAA6C;IAC3C,MAAMb,UAAA,GAAa,KAAKA,UAAL,EAAnB;IACA,MAAMthE,UAAA,GAAa,IAAI3P,uDAAJ,EAAnB;IACA,KAAKqxE,oBAAL,CAA0BJ,UAA1B,IAAwCthE,UAAxC;IACA,IAAI;MACF,KAAKqhE,MAAL,CAAYh+D,WAAZ,CACE;QACE89D,UAAA,EAAY,KAAKA,UADnB;QAEEC,UAAA,EAAY,KAAKA,UAFnB;QAGElpF,MAAA,EAAQK,UAHV;QAIE+oF,UAJF;QAKE9yF;MALF,CADF,EAQE2zF,SARF;IADE,CAAJ,CAWE,OAAOvpE,EAAP,EAAW;MACXoH,UAAA,CAAWjI,MAAX,CAAkBa,EAAlB;IADW;IAGb,OAAOoH,UAAA,CAAWvJ,OAAlB;EAlB2C;EA+B7C0K,eAAe5oB,UAAf,EAA2B/J,IAA3B,EAAiC4zF,gBAAjC,EAAmDD,SAAnD,EAA8D;IAC5D,MAAMZ,QAAA,GAAW,KAAKA,QAAL,EAAjB;MACEJ,UAAA,GAAa,KAAKA,UADpB;MAEEC,UAAA,GAAa,KAAKA,UAFpB;MAGEC,MAAA,GAAS,KAAKA,MAHhB;IAKA,OAAO,IAAIpE,cAAJ,CACL;MACEzjC,KAAA,EAAO6oC,UAAA,IAAc;QACnB,MAAMC,eAAA,GAAkB,IAAIjyE,uDAAJ,EAAxB;QACA,KAAKoxE,iBAAL,CAAuBF,QAAvB,IAAmC;UACjCc,UADiC;UAEjCE,SAAA,EAAWD,eAFsB;UAGjCE,QAAA,EAAU,IAHuB;UAIjCC,UAAA,EAAY,IAJqB;UAKjCC,QAAA,EAAU;QALuB,CAAnC;QAOArB,MAAA,CAAOh+D,WAAP,CACE;UACE89D,UADF;UAEEC,UAFF;UAGElpF,MAAA,EAAQK,UAHV;UAIEgpF,QAJF;UAKE/yF,IALF;UAMEm0F,WAAA,EAAaN,UAAA,CAAWM;QAN1B,CADF,EASER,SATF;QAYA,OAAOG,eAAA,CAAgB7rE,OAAvB;MArBmB,CADvB;MAyBEmsE,IAAA,EAAMP,UAAA,IAAc;QAClB,MAAMQ,cAAA,GAAiB,IAAIxyE,uDAAJ,EAAvB;QACA,KAAKoxE,iBAAL,CAAuBF,QAAvB,EAAiCiB,QAAjC,GAA4CK,cAA5C;QACAxB,MAAA,CAAOh+D,WAAP,CAAmB;UACjB89D,UADiB;UAEjBC,UAFiB;UAGjBnV,MAAA,EAAQyU,UAAA,CAAWK,IAHF;UAIjBQ,QAJiB;UAKjBoB,WAAA,EAAaN,UAAA,CAAWM;QALP,CAAnB;QASA,OAAOE,cAAA,CAAepsE,OAAtB;MAZkB,CAzBtB;MAwCE0L,MAAA,EAAQjC,MAAA,IAAU;QAChBtQ,gDAAA,CAAOsQ,MAAA,YAAkBrN,KAAzB,EAAgC,iCAAhC;QACA,MAAMiwE,gBAAA,GAAmB,IAAIzyE,uDAAJ,EAAzB;QACA,KAAKoxE,iBAAL,CAAuBF,QAAvB,EAAiCkB,UAAjC,GAA8CK,gBAA9C;QACA,KAAKrB,iBAAL,CAAuBF,QAAvB,EAAiCmB,QAAjC,GAA4C,IAA5C;QACArB,MAAA,CAAOh+D,WAAP,CAAmB;UACjB89D,UADiB;UAEjBC,UAFiB;UAGjBnV,MAAA,EAAQyU,UAAA,CAAWC,MAHF;UAIjBY,QAJiB;UAKjBrhE,MAAA,EAAQghE,UAAA,CAAWhhE,MAAX;QALS,CAAnB;QAQA,OAAO4iE,gBAAA,CAAiBrsE,OAAxB;MAbgB;IAxCpB,CADK,EAyDL2rE,gBAzDK,CAAP;EAN4D;EAmE9D,CAAAJ,iBAAkBxzF,IAAlB,EAAwB;IACtB,MAAM+yF,QAAA,GAAW/yF,IAAA,CAAK+yF,QAAtB;MACEJ,UAAA,GAAa,KAAKA,UADpB;MAEEC,UAAA,GAAa5yF,IAAA,CAAK2yF,UAFpB;MAGEE,MAAA,GAAS,KAAKA,MAHhB;IAIA,MAAMp+B,IAAA,GAAO,IAAb;MACE/qD,MAAA,GAAS,KAAKypF,aAAL,CAAmBnzF,IAAA,CAAK0J,MAAxB,CADX;IAGA,MAAM6qF,UAAA,GAAa;MACjBr7D,QAAQjO,KAAR,EAAe3T,IAAA,GAAO,CAAtB,EAAyBq8E,SAAzB,EAAoC;QAClC,IAAI,KAAKa,WAAT,EAAsB;UACpB;QADoB;QAGtB,MAAMC,eAAA,GAAkB,KAAKN,WAA7B;QACA,KAAKA,WAAL,IAAoB78E,IAApB;QAIA,IAAIm9E,eAAA,GAAkB,CAAlB,IAAuB,KAAKN,WAAL,IAAoB,CAA/C,EAAkD;UAChD,KAAKO,cAAL,GAAsB,IAAI7yE,uDAAJ,EAAtB;UACA,KAAKuX,KAAL,GAAa,KAAKs7D,cAAL,CAAoBzsE,OAAjC;QAFgD;QAIlD4qE,MAAA,CAAOh+D,WAAP,CACE;UACE89D,UADF;UAEEC,UAFF;UAGEnV,MAAA,EAAQyU,UAAA,CAAWI,OAHrB;UAIES,QAJF;UAKE9nE;QALF,CADF,EAQE0oE,SARF;MAbkC,CADnB;MA0BjB36D,MAAA,EAAQ;QACN,IAAI,KAAKw7D,WAAT,EAAsB;UACpB;QADoB;QAGtB,KAAKA,WAAL,GAAmB,IAAnB;QACA3B,MAAA,CAAOh+D,WAAP,CAAmB;UACjB89D,UADiB;UAEjBC,UAFiB;UAGjBnV,MAAA,EAAQyU,UAAA,CAAWG,KAHF;UAIjBU;QAJiB,CAAnB;QAMA,OAAOt+B,IAAA,CAAKu+B,WAAL,CAAiBD,QAAjB,CAAP;MAXM,CA1BS;MAwCjB3hE,MAAMM,MAAN,EAAc;QACZtQ,gDAAA,CAAOsQ,MAAA,YAAkBrN,KAAzB,EAAgC,gCAAhC;QACA,IAAI,KAAKmwE,WAAT,EAAsB;UACpB;QADoB;QAGtB,KAAKA,WAAL,GAAmB,IAAnB;QACA3B,MAAA,CAAOh+D,WAAP,CAAmB;UACjB89D,UADiB;UAEjBC,UAFiB;UAGjBnV,MAAA,EAAQyU,UAAA,CAAWD,KAHF;UAIjBc,QAJiB;UAKjBrhE,MAAA,EAAQghE,UAAA,CAAWhhE,MAAX;QALS,CAAnB;MANY,CAxCG;MAuDjBgjE,cAAA,EAAgB,IAAI7yE,uDAAJ,EAvDC;MAwDjBkX,MAAA,EAAQ,IAxDS;MAyDjBI,QAAA,EAAU,IAzDO;MA0DjBq7D,WAAA,EAAa,KA1DI;MA2DjBL,WAAA,EAAan0F,IAAA,CAAKm0F,WA3DD;MA4DjB/6D,KAAA,EAAO;IA5DU,CAAnB;IA+DAm7D,UAAA,CAAWG,cAAX,CAA0BlsE,OAA1B;IACA+rE,UAAA,CAAWn7D,KAAX,GAAmBm7D,UAAA,CAAWG,cAAX,CAA0BzsE,OAA7C;IACA,KAAK+qE,WAAL,CAAiBD,QAAjB,IAA6BwB,UAA7B;IAEA,IAAIhsE,OAAJ,CAAY,UAAUC,OAAV,EAAmB;MAC7BA,OAAA,CAAQ9e,MAAA,CAAO1J,IAAA,CAAKA,IAAZ,EAAkBu0F,UAAlB,CAAR;IAD6B,CAA/B,EAEGrsE,IAFH,CAGE,YAAY;MACV2qE,MAAA,CAAOh+D,WAAP,CAAmB;QACjB89D,UADiB;QAEjBC,UAFiB;QAGjBnV,MAAA,EAAQyU,UAAA,CAAWO,cAHF;QAIjBM,QAJiB;QAKjBl/D,OAAA,EAAS;MALQ,CAAnB;IADU,CAHd,EAYE,UAAUnC,MAAV,EAAkB;MAChBmhE,MAAA,CAAOh+D,WAAP,CAAmB;QACjB89D,UADiB;QAEjBC,UAFiB;QAGjBnV,MAAA,EAAQyU,UAAA,CAAWO,cAHF;QAIjBM,QAJiB;QAKjBrhE,MAAA,EAAQghE,UAAA,CAAWhhE,MAAX;MALS,CAAnB;IADgB,CAZpB;EA3EsB;EAmGxB,CAAA2hE,qBAAsBrzF,IAAtB,EAA4B;IAC1B,MAAM+yF,QAAA,GAAW/yF,IAAA,CAAK+yF,QAAtB;MACEJ,UAAA,GAAa,KAAKA,UADpB;MAEEC,UAAA,GAAa5yF,IAAA,CAAK2yF,UAFpB;MAGEE,MAAA,GAAS,KAAKA,MAHhB;IAIA,MAAM8B,gBAAA,GAAmB,KAAK1B,iBAAL,CAAuBF,QAAvB,CAAzB;MACEwB,UAAA,GAAa,KAAKvB,WAAL,CAAiBD,QAAjB,CADf;IAGA,QAAQ/yF,IAAA,CAAKy9E,MAAb;MACE,KAAKyU,UAAA,CAAWO,cAAhB;QACE,IAAIzyF,IAAA,CAAK6zB,OAAT,EAAkB;UAChB8gE,gBAAA,CAAiBZ,SAAjB,CAA2BvrE,OAA3B;QADgB,CAAlB,MAEO;UACLmsE,gBAAA,CAAiBZ,SAAjB,CAA2BxqE,MAA3B,CAAkCmpE,UAAA,CAAW1yF,IAAA,CAAK0xB,MAAhB,CAAlC;QADK;QAGP;MACF,KAAKwgE,UAAA,CAAWM,aAAhB;QACE,IAAIxyF,IAAA,CAAK6zB,OAAT,EAAkB;UAChB8gE,gBAAA,CAAiBX,QAAjB,CAA0BxrE,OAA1B;QADgB,CAAlB,MAEO;UACLmsE,gBAAA,CAAiBX,QAAjB,CAA0BzqE,MAA1B,CAAiCmpE,UAAA,CAAW1yF,IAAA,CAAK0xB,MAAhB,CAAjC;QADK;QAGP;MACF,KAAKwgE,UAAA,CAAWK,IAAhB;QAEE,IAAI,CAACgC,UAAL,EAAiB;UACf1B,MAAA,CAAOh+D,WAAP,CAAmB;YACjB89D,UADiB;YAEjBC,UAFiB;YAGjBnV,MAAA,EAAQyU,UAAA,CAAWM,aAHF;YAIjBO,QAJiB;YAKjBl/D,OAAA,EAAS;UALQ,CAAnB;UAOA;QARe;QAYjB,IAAI0gE,UAAA,CAAWJ,WAAX,IAA0B,CAA1B,IAA+Bn0F,IAAA,CAAKm0F,WAAL,GAAmB,CAAtD,EAAyD;UACvDI,UAAA,CAAWG,cAAX,CAA0BlsE,OAA1B;QADuD;QAIzD+rE,UAAA,CAAWJ,WAAX,GAAyBn0F,IAAA,CAAKm0F,WAA9B;QAEA,IAAI5rE,OAAJ,CAAY,UAAUC,OAAV,EAAmB;UAC7BA,OAAA,CAAQ+rE,UAAA,CAAWx7D,MAAX,IAAR;QAD6B,CAA/B,EAEG7Q,IAFH,CAGE,YAAY;UACV2qE,MAAA,CAAOh+D,WAAP,CAAmB;YACjB89D,UADiB;YAEjBC,UAFiB;YAGjBnV,MAAA,EAAQyU,UAAA,CAAWM,aAHF;YAIjBO,QAJiB;YAKjBl/D,OAAA,EAAS;UALQ,CAAnB;QADU,CAHd,EAYE,UAAUnC,MAAV,EAAkB;UAChBmhE,MAAA,CAAOh+D,WAAP,CAAmB;YACjB89D,UADiB;YAEjBC,UAFiB;YAGjBnV,MAAA,EAAQyU,UAAA,CAAWM,aAHF;YAIjBO,QAJiB;YAKjBrhE,MAAA,EAAQghE,UAAA,CAAWhhE,MAAX;UALS,CAAnB;QADgB,CAZpB;QAsBA;MACF,KAAKwgE,UAAA,CAAWI,OAAhB;QACElxE,gDAAA,CAAOuzE,gBAAP,EAAyB,uCAAzB;QACA,IAAIA,gBAAA,CAAiBT,QAArB,EAA+B;UAC7B;QAD6B;QAG/BS,gBAAA,CAAiBd,UAAjB,CAA4B36D,OAA5B,CAAoCl5B,IAAA,CAAKirB,KAAzC;QACA;MACF,KAAKinE,UAAA,CAAWG,KAAhB;QACEjxE,gDAAA,CAAOuzE,gBAAP,EAAyB,qCAAzB;QACA,IAAIA,gBAAA,CAAiBT,QAArB,EAA+B;UAC7B;QAD6B;QAG/BS,gBAAA,CAAiBT,QAAjB,GAA4B,IAA5B;QACAS,gBAAA,CAAiBd,UAAjB,CAA4B76D,KAA5B;QACA,KAAK,CAAA47D,sBAAL,CAA6BD,gBAA7B,EAA+C5B,QAA/C;QACA;MACF,KAAKb,UAAA,CAAWD,KAAhB;QACE7wE,gDAAA,CAAOuzE,gBAAP,EAAyB,qCAAzB;QACAA,gBAAA,CAAiBd,UAAjB,CAA4BziE,KAA5B,CAAkCshE,UAAA,CAAW1yF,IAAA,CAAK0xB,MAAhB,CAAlC;QACA,KAAK,CAAAkjE,sBAAL,CAA6BD,gBAA7B,EAA+C5B,QAA/C;QACA;MACF,KAAKb,UAAA,CAAWE,eAAhB;QACE,IAAIpyF,IAAA,CAAK6zB,OAAT,EAAkB;UAChB8gE,gBAAA,CAAiBV,UAAjB,CAA4BzrE,OAA5B;QADgB,CAAlB,MAEO;UACLmsE,gBAAA,CAAiBV,UAAjB,CAA4B1qE,MAA5B,CAAmCmpE,UAAA,CAAW1yF,IAAA,CAAK0xB,MAAhB,CAAnC;QADK;QAGP,KAAK,CAAAkjE,sBAAL,CAA6BD,gBAA7B,EAA+C5B,QAA/C;QACA;MACF,KAAKb,UAAA,CAAWC,MAAhB;QACE,IAAI,CAACoC,UAAL,EAAiB;UACf;QADe;QAIjB,IAAIhsE,OAAJ,CAAY,UAAUC,OAAV,EAAmB;UAC7BA,OAAA,CAAQ+rE,UAAA,CAAWp7D,QAAX,GAAsBu5D,UAAA,CAAW1yF,IAAA,CAAK0xB,MAAhB,CAAtB,CAAR;QAD6B,CAA/B,EAEGxJ,IAFH,CAGE,YAAY;UACV2qE,MAAA,CAAOh+D,WAAP,CAAmB;YACjB89D,UADiB;YAEjBC,UAFiB;YAGjBnV,MAAA,EAAQyU,UAAA,CAAWE,eAHF;YAIjBW,QAJiB;YAKjBl/D,OAAA,EAAS;UALQ,CAAnB;QADU,CAHd,EAYE,UAAUnC,MAAV,EAAkB;UAChBmhE,MAAA,CAAOh+D,WAAP,CAAmB;YACjB89D,UADiB;YAEjBC,UAFiB;YAGjBnV,MAAA,EAAQyU,UAAA,CAAWE,eAHF;YAIjBW,QAJiB;YAKjBrhE,MAAA,EAAQghE,UAAA,CAAWhhE,MAAX;UALS,CAAnB;QADgB,CAZpB;QAsBA6iE,UAAA,CAAWG,cAAX,CAA0BnrE,MAA1B,CAAiCmpE,UAAA,CAAW1yF,IAAA,CAAK0xB,MAAhB,CAAjC;QACA6iE,UAAA,CAAWC,WAAX,GAAyB,IAAzB;QACA,OAAO,KAAKxB,WAAL,CAAiBD,QAAjB,CAAP;QACA;MACF;QACE,MAAM,IAAI1uE,KAAJ,CAAU,wBAAV,CAAN;IAvHJ;EAR0B;EAmI5B,MAAM,CAAAuwE,sBAANA,CAA8BD,gBAA9B,EAAgD5B,QAAhD,EAA0D;IAGxD,MAAMxqE,OAAA,CAAQssE,UAAR,CAAmB,CACvBF,gBAAA,CAAiBZ,SAAjB,EAA4B9rE,OADL,EAEvB0sE,gBAAA,CAAiBX,QAAjB,EAA2B/rE,OAFJ,EAGvB0sE,gBAAA,CAAiBV,UAAjB,EAA6BhsE,OAHN,CAAnB,CAAN;IAKA,OAAO,KAAKgrE,iBAAL,CAAuBF,QAAvB,CAAP;EARwD;EAW1D7oE,QAAA,EAAU;IACR,KAAK2oE,MAAL,CAAY56E,mBAAZ,CAAgC,SAAhC,EAA2C,KAAKm7E,kBAAhD;EADQ;AA1cS;;;;;;;;;;;;ACpDrB;AAEA,MAAM0B,IAAA,GAAO,UAAb;AAEA,MAAMC,SAAA,GAAY,UAAlB;AACA,MAAMC,QAAA,GAAW,MAAjB;AAEA,MAAM31E,cAAN,CAAqB;EACnBpc,YAAYgyF,IAAZ,EAAkB;IAChB,KAAKC,EAAL,GAAUD,IAAA,GAAOA,IAAA,GAAO,UAAd,GAA2BH,IAArC;IACA,KAAKK,EAAL,GAAUF,IAAA,GAAOA,IAAA,GAAO,UAAd,GAA2BH,IAArC;EAFgB;EAKlBj2E,OAAOgxC,KAAP,EAAc;IACZ,IAAI7vD,IAAJ,EAAUuK,MAAV;IACA,IAAI,OAAOslD,KAAP,KAAiB,QAArB,EAA+B;MAC7B7vD,IAAA,GAAO,IAAI6pB,UAAJ,CAAegmC,KAAA,CAAMtlD,MAAN,GAAe,CAA9B,CAAP;MACAA,MAAA,GAAS,CAAT;MACA,KAAK,IAAIoO,CAAA,GAAI,CAAR,EAAWwD,EAAA,GAAK0zC,KAAA,CAAMtlD,MAAtB,EAA8BoO,CAAA,GAAIwD,EAAvC,EAA2CxD,CAAA,EAA3C,EAAgD;QAC9C,MAAMqhB,IAAA,GAAO61B,KAAA,CAAMoxB,UAAN,CAAiBtoE,CAAjB,CAAb;QACA,IAAIqhB,IAAA,IAAQ,IAAZ,EAAkB;UAChBh6B,IAAA,CAAKuK,MAAA,EAAL,IAAiByvB,IAAjB;QADgB,CAAlB,MAEO;UACLh6B,IAAA,CAAKuK,MAAA,EAAL,IAAiByvB,IAAA,KAAS,CAA1B;UACAh6B,IAAA,CAAKuK,MAAA,EAAL,IAAiByvB,IAAA,GAAO,IAAxB;QAFK;MAJuC;IAHnB,CAA/B,MAYO,IAAIxY,uDAAA,CAAcquC,KAAd,CAAJ,EAA0B;MAC/B7vD,IAAA,GAAO6vD,KAAA,CAAM3xD,KAAN,EAAP;MACAqM,MAAA,GAASvK,IAAA,CAAK8pB,UAAd;IAF+B,CAA1B,MAGA;MACL,MAAM,IAAIzF,KAAJ,CACJ,iDACE,kCAFE,CAAN;IADK;IAOP,MAAM+wE,WAAA,GAAc7qF,MAAA,IAAU,CAA9B;IACA,MAAM8qF,UAAA,GAAa9qF,MAAA,GAAS6qF,WAAA,GAAc,CAA1C;IAEA,MAAME,UAAA,GAAa,IAAI1rD,WAAJ,CAAgB5pC,IAAA,CAAKypB,MAArB,EAA6B,CAA7B,EAAgC2rE,WAAhC,CAAnB;IACA,IAAIG,EAAA,GAAK,CAAT;MACEC,EAAA,GAAK,CADP;IAEA,IAAIN,EAAA,GAAK,KAAKA,EAAd;MACEC,EAAA,GAAK,KAAKA,EADZ;IAEA,MAAMM,EAAA,GAAK,UAAX;MACEC,EAAA,GAAK,UADP;IAEA,MAAMC,MAAA,GAASF,EAAA,GAAKT,QAApB;MACEY,MAAA,GAASF,EAAA,GAAKV,QADhB;IAGA,KAAK,IAAIr8E,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIy8E,WAApB,EAAiCz8E,CAAA,EAAjC,EAAsC;MACpC,IAAIA,CAAA,GAAI,CAAR,EAAW;QACT48E,EAAA,GAAKD,UAAA,CAAW38E,CAAX,CAAL;QACA48E,EAAA,GAAOA,EAAA,GAAKE,EAAN,GAAYV,SAAb,GAA4BQ,EAAA,GAAKI,MAAN,GAAgBX,QAAhD;QACAO,EAAA,GAAMA,EAAA,IAAM,EAAP,GAAcA,EAAA,KAAO,EAA1B;QACAA,EAAA,GAAOA,EAAA,GAAKG,EAAN,GAAYX,SAAb,GAA4BQ,EAAA,GAAKK,MAAN,GAAgBZ,QAAhD;QACAE,EAAA,IAAMK,EAAN;QACAL,EAAA,GAAMA,EAAA,IAAM,EAAP,GAAcA,EAAA,KAAO,EAA1B;QACAA,EAAA,GAAKA,EAAA,GAAK,CAAL,GAAS,UAAd;MAPS,CAAX,MAQO;QACLM,EAAA,GAAKF,UAAA,CAAW38E,CAAX,CAAL;QACA68E,EAAA,GAAOA,EAAA,GAAKC,EAAN,GAAYV,SAAb,GAA4BS,EAAA,GAAKG,MAAN,GAAgBX,QAAhD;QACAQ,EAAA,GAAMA,EAAA,IAAM,EAAP,GAAcA,EAAA,KAAO,EAA1B;QACAA,EAAA,GAAOA,EAAA,GAAKE,EAAN,GAAYX,SAAb,GAA4BS,EAAA,GAAKI,MAAN,GAAgBZ,QAAhD;QACAG,EAAA,IAAMK,EAAN;QACAL,EAAA,GAAMA,EAAA,IAAM,EAAP,GAAcA,EAAA,KAAO,EAA1B;QACAA,EAAA,GAAKA,EAAA,GAAK,CAAL,GAAS,UAAd;MAPK;IAT6B;IAoBtCI,EAAA,GAAK,CAAL;IAEA,QAAQF,UAAR;MACE,KAAK,CAAL;QACEE,EAAA,IAAMv1F,IAAA,CAAKo1F,WAAA,GAAc,CAAd,GAAkB,CAAvB,KAA6B,EAAnC;MAEF,KAAK,CAAL;QACEG,EAAA,IAAMv1F,IAAA,CAAKo1F,WAAA,GAAc,CAAd,GAAkB,CAAvB,KAA6B,CAAnC;MAEF,KAAK,CAAL;QACEG,EAAA,IAAMv1F,IAAA,CAAKo1F,WAAA,GAAc,CAAnB,CAAN;QAGAG,EAAA,GAAOA,EAAA,GAAKE,EAAN,GAAYV,SAAb,GAA4BQ,EAAA,GAAKI,MAAN,GAAgBX,QAAhD;QACAO,EAAA,GAAMA,EAAA,IAAM,EAAP,GAAcA,EAAA,KAAO,EAA1B;QACAA,EAAA,GAAOA,EAAA,GAAKG,EAAN,GAAYX,SAAb,GAA4BQ,EAAA,GAAKK,MAAN,GAAgBZ,QAAhD;QACA,IAAII,WAAA,GAAc,CAAlB,EAAqB;UACnBF,EAAA,IAAMK,EAAN;QADmB,CAArB,MAEO;UACLJ,EAAA,IAAMI,EAAN;QADK;IAhBX;IAqBA,KAAKL,EAAL,GAAUA,EAAV;IACA,KAAKC,EAAL,GAAUA,EAAV;EAjFY;EAoFdp0E,UAAA,EAAY;IACV,IAAIm0E,EAAA,GAAK,KAAKA,EAAd;MACEC,EAAA,GAAK,KAAKA,EADZ;IAGAD,EAAA,IAAMC,EAAA,KAAO,CAAb;IACAD,EAAA,GAAOA,EAAA,GAAK,UAAN,GAAoBH,SAArB,GAAoCG,EAAA,GAAK,MAAN,GAAgBF,QAAxD;IACAG,EAAA,GACIA,EAAA,GAAK,UAAN,GAAoBJ,SAArB,GACE,CAAE,CAACI,EAAA,IAAM,EAAP,GAAcD,EAAA,KAAO,EAArB,IAA4B,UAA9B,GAA4CH,SAA5C,MAA2D,EAF/D;IAGAG,EAAA,IAAMC,EAAA,KAAO,CAAb;IACAD,EAAA,GAAOA,EAAA,GAAK,UAAN,GAAoBH,SAArB,GAAoCG,EAAA,GAAK,MAAN,GAAgBF,QAAxD;IACAG,EAAA,GACIA,EAAA,GAAK,UAAN,GAAoBJ,SAArB,GACE,CAAE,CAACI,EAAA,IAAM,EAAP,GAAcD,EAAA,KAAO,EAArB,IAA4B,UAA9B,GAA4CH,SAA5C,MAA2D,EAF/D;IAGAG,EAAA,IAAMC,EAAA,KAAO,CAAb;IAEA,OACG,CAAAD,EAAA,KAAO,CAAP,EAAU/4F,QAAX,CAAoB,EAApB,EAAwBC,QAAxB,CAAiC,CAAjC,EAAoC,GAApC,IACC,CAAA+4F,EAAA,KAAO,CAAP,EAAUh5F,QAAX,CAAoB,EAApB,EAAwBC,QAAxB,CAAiC,CAAjC,EAAoC,GAApC,CAFF;EAhBU;AA1FO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACNrB,MAAMqlB,QAAA,GAEJ,OAAOo0E,OAAP,KAAmB,QADnB,IAEAA,OAAA,GAAU,EAAV,KAAiB,kBAFjB,IAGA,CAACA,OAAA,CAAQC,QAAR,CAAiBC,EAHlB,IAIA,EAAEF,OAAA,CAAQC,QAAR,CAAiBE,QAAjB,IAA6BH,OAAA,CAAQtlF,IAArC,IAA6CslF,OAAA,CAAQtlF,IAAR,KAAiB,SAA9D,CALJ;AAOA,MAAMg6B,eAAA,GAAkB,CAAC,CAAD,EAAI,CAAJ,EAAO,CAAP,EAAU,CAAV,EAAa,CAAb,EAAgB,CAAhB,CAAxB;AACA,MAAMD,oBAAA,GAAuB,CAAC,KAAD,EAAQ,CAAR,EAAW,CAAX,EAAc,KAAd,EAAqB,CAArB,EAAwB,CAAxB,CAA7B;AAEA,MAAM5oB,uBAAA,GAA0B,IAAhC;AAIA,MAAMjjB,WAAA,GAAc,IAApB;AACA,MAAMw3F,mBAAA,GAAsB,IAA5B;AACA,MAAMC,eAAA,GAAkBD,mBAAA,GAAsBx3F,WAA9C;AAcA,MAAMqjB,mBAAA,GAAsB;EAC1BoW,GAAA,EAAK,IADqB;EAE1BD,OAAA,EAAS,IAFiB;EAG1BtH,KAAA,EAAO,IAHmB;EAI1BwlE,IAAA,EAAM,IAJoB;EAK1B79D,iBAAA,EAAmB,IALO;EAM1BE,mBAAA,EAAqB,IANK;EAO1BJ,mBAAA,EAAqB,IAPK;EAQ1BK,MAAA,EAAQ;AARkB,CAA5B;AAWA,MAAMtX,cAAA,GAAiB;EACrBgX,OAAA,EAAS,CADY;EAErBpI,MAAA,EAAQ,CAFa;EAGrBsI,YAAA,EAAc,CAHO;EAIrBE,cAAA,EAAgB;AAJK,CAAvB;AAOA,MAAM+7C,sBAAA,GAAyB,wBAA/B;AAEA,MAAMj2E,oBAAA,GAAuB;EAC3B85B,OAAA,EAAS,CAAC,CADiB;EAE3BqG,IAAA,EAAM,CAFqB;EAG3Br9B,QAAA,EAAU,CAHiB;EAI3BgB,SAAA,EAAW,CAJgB;EAK3BQ,KAAA,EAAO,EALoB;EAM3BZ,GAAA,EAAK;AANsB,CAA7B;AASA,MAAMqxD,0BAAA,GAA6B;EACjCgjC,MAAA,EAAQ,CADyB;EAEjC7a,MAAA,EAAQ,CAFyB;EAGjC7lB,aAAA,EAAe,EAHkB;EAIjCC,cAAA,EAAgB,EAJiB;EAKjC0gC,gBAAA,EAAkB,EALe;EAMjCn5B,SAAA,EAAW,EANsB;EAOjCD,aAAA,EAAe,EAPkB;EAQjCE,WAAA,EAAa;AARoB,CAAnC;AAYA,MAAMu0B,cAAA,GAAiB;EACrB/gE,KAAA,EAAO,IADc;EAErB2lE,eAAA,EAAiB,IAFI;EAGrBC,IAAA,EAAM,IAHe;EAIrBC,kBAAA,EAAoB,IAJC;EAKrBC,sBAAA,EAAwB,KALH;EAMrBC,sBAAA,EAAwB,KANH;EAOrBC,QAAA,EAAU,KAPW;EAQrBC,kBAAA,EAAoB;AARC,CAAvB;AAWA,MAAMnsD,iBAAA,GAAoB;EACxBxL,IAAA,EAAM,CADkB;EAExBC,MAAA,EAAQ,CAFgB;EAGxBmiB,WAAA,EAAa,CAHW;EAIxBqC,SAAA,EAAW,CAJa;EAKxBmzC,gBAAA,EAAkB,CALM;EAMxBC,kBAAA,EAAoB,CANI;EAOxBC,uBAAA,EAAyB,CAPD;EAQxBC,WAAA,EAAa,CARW;EASxBh2C,gBAAA,EAAkB,CATM;EAUxBE,gBAAA,EAAkB;AAVM,CAA1B;AAaA,MAAMvY,SAAA,GAAY;EAChBG,cAAA,EAAgB,CADA;EAEhBE,SAAA,EAAW,CAFK;EAGhB6K,UAAA,EAAY;AAHI,CAAlB;AAMA,MAAMt1C,cAAA,GAAiB;EACrB6B,IAAA,EAAM,CADe;EAErBF,IAAA,EAAM,CAFe;EAGrBiB,QAAA,EAAU,CAHW;EAIrBE,IAAA,EAAM,CAJe;EAKrBE,MAAA,EAAQ,CALa;EAMrBE,MAAA,EAAQ,CANa;EAOrBQ,OAAA,EAAS,CAPY;EAQrBN,QAAA,EAAU,CARW;EASrBQ,SAAA,EAAW,CATU;EAUrBE,SAAA,EAAW,EAVU;EAWrBE,QAAA,EAAU,EAXW;EAYrBE,SAAA,EAAW,EAZU;EAarBE,KAAA,EAAO,EAbc;EAcrBd,KAAA,EAAO,EAdc;EAerBE,GAAA,EAAK,EAfgB;EAgBrBd,KAAA,EAAO,EAhBc;EAiBrB4B,cAAA,EAAgB,EAjBK;EAkBrBo0F,KAAA,EAAO,EAlBc;EAmBrBC,KAAA,EAAO,EAnBc;EAoBrB52F,MAAA,EAAQ,EApBa;EAqBrB62F,MAAA,EAAQ,EArBa;EAsBrBC,WAAA,EAAa,EAtBQ;EAuBrBC,OAAA,EAAS,EAvBY;EAwBrBC,SAAA,EAAW,EAxBU;EAyBrBC,MAAA,EAAQ,EAzBa;EA0BrBC,MAAA,EAAQ;AA1Ba,CAAvB;AA6BA,MAAMC,mBAAA,GAAsB;EAC1BC,KAAA,EAAO,OADmB;EAE1BC,KAAA,EAAO;AAFmB,CAA5B;AAKA,MAAMC,cAAA,GAAiB;EACrBl0C,SAAA,EAAW,IADU;EAErBm0C,MAAA,EAAQ,IAFa;EAGrBlnE,KAAA,EAAO,IAHc;EAIrBmnE,MAAA,EAAQ,IAJa;EAKrBC,QAAA,EAAU,IALW;EAMrBC,MAAA,EAAQ,IANa;EAOrBC,QAAA,EAAU,IAPW;EAQrBC,MAAA,EAAQ,IARa;EASrBC,YAAA,EAAc,KATO;EAUrBC,cAAA,EAAgB;AAVK,CAAvB;AAaA,MAAMC,mBAAA,GAAsB;EAC1BJ,QAAA,EAAU,SADgB;EAE1BK,QAAA,EAAU,SAFgB;EAG1BC,QAAA,EAAU,SAHgB;EAI1BC,SAAA,EAAW,SAJe;EAK1BC,QAAA,EAAU,SALgB;EAM1BC,aAAA,EAAe,SANW;EAO1BC,KAAA,EAAO,SAPmB;EAQ1BC,UAAA,EAAY,SARc;EAS1BC,KAAA,EAAO,SATmB;EAU1BC,IAAA,EAAM,SAVoB;EAW1BC,IAAA,EAAM,SAXoB;EAY1BC,UAAA,EAAY,SAZc;EAa1BC,WAAA,EAAa,SAba;EAc1BC,eAAA,EAAiB,SAdS;EAe1BC,WAAA,EAAa,SAfa;EAgB1BC,IAAA,EAAM,SAhBoB;EAiB1BC,QAAA,EAAU,SAjBgB;EAkB1BC,cAAA,EAAgB,SAlBU;EAmB1BC,iBAAA,EAAmB;AAnBO,CAA5B;AAsBA,MAAMn7F,yBAAA,GAA4B;EAChCqI,KAAA,EAAO,CADyB;EAEhCC,MAAA,EAAQ,CAFwB;EAGhCC,OAAA,EAAS,CAHuB;EAIhCC,KAAA,EAAO,CAJyB;EAKhCvE,SAAA,EAAW;AALqB,CAAlC;AAQA,MAAMm3F,yBAAA,GAA4B;EAChCC,CAAA,EAAG,aAD6B;EAEhCC,CAAA,EAAG,YAF6B;EAGhCC,CAAA,EAAG,YAH6B;EAIhCC,CAAA,EAAG,UAJ6B;EAKhCC,EAAA,EAAI,OAL4B;EAMhCC,EAAA,EAAI,MAN4B;EAOhCC,EAAA,EAAI,UAP4B;EAQhCC,EAAA,EAAI,WAR4B;EAShCC,EAAA,EAAI,aAT4B;EAUhCxN,EAAA,EAAI,eAV4B;EAWhCyN,CAAA,EAAG,WAX6B;EAYhCC,CAAA,EAAG,QAZ6B;EAahCC,CAAA,EAAG,UAb6B;EAchCC,CAAA,EAAG;AAd6B,CAAlC;AAiBA,MAAMC,uBAAA,GAA0B;EAC9BC,EAAA,EAAI,WAD0B;EAE9BC,EAAA,EAAI,UAF0B;EAG9BC,EAAA,EAAI,SAH0B;EAI9BC,EAAA,EAAI,WAJ0B;EAK9BC,EAAA,EAAI;AAL0B,CAAhC;AAQA,MAAMC,mBAAA,GAAsB;EAC1BC,CAAA,EAAG,UADuB;EAE1BR,CAAA,EAAG;AAFuB,CAA5B;AAKA,MAAM1I,cAAA,GAAiB;EACrBmJ,MAAA,EAAQ,CADa;EAErBC,QAAA,EAAU,CAFW;EAGrBC,KAAA,EAAO;AAHc,CAAvB;AAMA,MAAMz9D,mBAAA,GAAsB;EAC1BiB,IAAA,EAAM,CADoB;EAE1BD,MAAA,EAAQ;AAFkB,CAA5B;AAMA,MAAMiM,GAAA,GAAM;EAKVqP,UAAA,EAAY,CALF;EAMVmC,YAAA,EAAc,CANJ;EAOVC,UAAA,EAAY,CAPF;EAQVC,WAAA,EAAa,CARH;EASVC,aAAA,EAAe,CATL;EAUVE,OAAA,EAAS,CAVC;EAWVG,kBAAA,EAAoB,CAXV;EAYVC,WAAA,EAAa,CAZH;EAaVE,SAAA,EAAW,CAbD;EAcV3U,IAAA,EAAM,EAdI;EAeVwD,OAAA,EAAS,EAfC;EAgBVxb,SAAA,EAAW,EAhBD;EAiBVkc,MAAA,EAAQ,EAjBE;EAkBVE,MAAA,EAAQ,EAlBE;EAmBV6R,OAAA,EAAS,EAnBC;EAoBVC,QAAA,EAAU,EApBA;EAqBVC,QAAA,EAAU,EArBA;EAsBV1R,SAAA,EAAW,EAtBD;EAuBVqR,SAAA,EAAW,EAvBD;EAwBVM,MAAA,EAAQ,EAxBE;EAyBVG,WAAA,EAAa,EAzBH;EA0BV3c,IAAA,EAAM,EA1BI;EA2BV6c,MAAA,EAAQ,EA3BE;EA4BVC,UAAA,EAAY,EA5BF;EA6BVC,YAAA,EAAc,EA7BJ;EA8BVC,eAAA,EAAiB,EA9BP;EA+BVC,iBAAA,EAAmB,EA/BT;EAgCVrW,OAAA,EAAS,EAhCC;EAiCV/I,IAAA,EAAM,EAjCI;EAkCVqf,MAAA,EAAQ,EAlCE;EAmCVC,SAAA,EAAW,EAnCD;EAoCVC,OAAA,EAAS,EApCC;EAqCVI,cAAA,EAAgB,EArCN;EAsCVE,cAAA,EAAgB,EAtCN;EAuCVC,SAAA,EAAW,EAvCD;EAwCVC,UAAA,EAAY,EAxCF;EAyCV3C,OAAA,EAAS,EAzCC;EA0CVwD,oBAAA,EAAsB,EA1CZ;EA2CVC,WAAA,EAAa,EA3CH;EA4CVE,QAAA,EAAU,EA5CA;EA6CVC,kBAAA,EAAoB,EA7CV;EA8CVC,aAAA,EAAe,EA9CL;EA+CVC,QAAA,EAAU,EA/CA;EAgDVc,QAAA,EAAU,EAhDA;EAiDVw5C,cAAA,EAAgB,EAjDN;EAkDVC,gBAAA,EAAkB,EAlDR;EAmDVC,0BAAA,EAA4B,EAnDlB;EAoDVp3C,YAAA,EAAc,EApDJ;EAqDVG,qBAAA,EAAuB,EArDb;EAsDVk3C,mBAAA,EAAqB,EAtDX;EAuDVC,iBAAA,EAAmB,EAvDT;EAwDVC,cAAA,EAAgB,EAxDN;EAyDV72C,eAAA,EAAiB,EAzDP;EA0DV82C,YAAA,EAAc,EA1DJ;EA2DV52C,aAAA,EAAe,EA3DL;EA4DV62C,aAAA,EAAe,EA5DL;EA6DVC,WAAA,EAAa,EA7DH;EA8DV72C,iBAAA,EAAmB,EA9DT;EA+DVC,eAAA,EAAiB,EA/DP;EAgEV62C,kBAAA,EAAoB,EAhEV;EAiEVC,gBAAA,EAAkB,EAjER;EAkEV72C,WAAA,EAAa,EAlEH;EAmEVE,gBAAA,EAAkB,EAnER;EAoEVC,cAAA,EAAgB,EApEN;EAqEV22C,cAAA,EAAgB,EArEN;EAsEVC,YAAA,EAAc,EAtEJ;EAuEVp0C,SAAA,EAAW,EAvED;EAwEVE,cAAA,EAAgB,EAxEN;EAyEVC,kBAAA,EAAoB,EAzEV;EA0EVE,uBAAA,EAAyB,EA1Ef;EA2EVE,gBAAA,EAAkB,EA3ER;EA4EVC,WAAA,EAAa,EA5EH;EA6EVC,SAAA,EAAW,EA7ED;EA8EVhD,qBAAA,EAAuB,EA9Eb;EA+EVC,mBAAA,EAAqB,EA/EX;EAgFVC,UAAA,EAAY,EAhFF;EAiFVS,QAAA,EAAU,EAjFA;EAoFVE,eAAA,EAAiB,EApFP;EAqFVK,aAAA,EAAe,EArFL;EAuFVC,qBAAA,EAAuB,EAvFb;EAwFVO,0BAAA,EAA4B,EAxFlB;EAyFVE,iBAAA,EAAmB,EAzFT;EA0FVC,uBAAA,EAAyB,EA1Ff;EA2FVI,4BAAA,EAA8B,EA3FpB;EA4FVH,uBAAA,EAAyB,EA5Ff;EA6FVT,2BAAA,EAA6B,EA7FnB;EA8FViB,wBAAA,EAA0B,EA9FhB;EA+FVjK,aAAA,EAAe;AA/FL,CAAZ;AAkGA,MAAMk0C,iBAAA,GAAoB;EACxBqK,aAAA,EAAe,CADS;EAExBC,kBAAA,EAAoB;AAFI,CAA1B;AAKA,IAAIz2E,SAAA,GAAYqsE,cAAA,CAAeoJ,QAA/B;AAEA,SAASh5E,iBAATA,CAA2Bi6E,KAA3B,EAAkC;EAChC,IAAI92E,MAAA,CAAOC,SAAP,CAAiB62E,KAAjB,CAAJ,EAA6B;IAC3B12E,SAAA,GAAY02E,KAAZ;EAD2B;AADG;AAMlC,SAAS36E,iBAATA,CAAA,EAA6B;EAC3B,OAAOiE,SAAP;AAD2B;AAO7B,SAAShE,IAATA,CAAc+sC,GAAd,EAAmB;EACjB,IAAI/oC,SAAA,IAAaqsE,cAAA,CAAeqJ,KAAhC,EAAuC;IACrCtrC,OAAA,CAAQC,GAAR,CAAa,SAAQtB,GAAT,EAAZ;EADqC;AADtB;AAOnB,SAASxvD,IAATA,CAAcwvD,GAAd,EAAmB;EACjB,IAAI/oC,SAAA,IAAaqsE,cAAA,CAAeoJ,QAAhC,EAA0C;IACxCrrC,OAAA,CAAQC,GAAR,CAAa,YAAWtB,GAAZ,EAAZ;EADwC;AADzB;AAMnB,SAAS1vD,WAATA,CAAqB0vD,GAArB,EAA0B;EACxB,MAAM,IAAIhqC,KAAJ,CAAUgqC,GAAV,CAAN;AADwB;AAI1B,SAASjtC,MAATA,CAAgB66E,IAAhB,EAAsB5tC,GAAtB,EAA2B;EACzB,IAAI,CAAC4tC,IAAL,EAAW;IACTt9F,WAAA,CAAY0vD,GAAZ;EADS;AADc;AAO3B,SAAS6tC,gBAATA,CAA0BruF,GAA1B,EAA+B;EAC7B,QAAQA,GAAA,EAAK0hD,QAAb;IACE,KAAK,OAAL;IACA,KAAK,QAAL;IACA,KAAK,MAAL;IACA,KAAK,SAAL;IACA,KAAK,MAAL;MACE,OAAO,IAAP;IACF;MACE,OAAO,KAAP;EARJ;AAD6B;AAqB/B,SAASgiC,sBAATA,CAAgC1jF,GAAhC,EAAqCwZ,OAAA,GAAU,IAA/C,EAAqD5Z,OAAA,GAAU,IAA/D,EAAqE;EACnE,IAAI,CAACI,GAAL,EAAU;IACR,OAAO,IAAP;EADQ;EAGV,IAAI;IACF,IAAIJ,OAAA,IAAW,OAAOI,GAAP,KAAe,QAA9B,EAAwC;MAEtC,IAAIJ,OAAA,CAAQ0uF,kBAAR,IAA8BtuF,GAAA,CAAIkrC,UAAJ,CAAe,MAAf,CAAlC,EAA0D;QACxD,MAAMqjD,IAAA,GAAOvuF,GAAA,CAAIsI,KAAJ,CAAU,KAAV,CAAb;QAGA,IAAIimF,IAAA,EAAM7xF,MAAN,IAAgB,CAApB,EAAuB;UACrBsD,GAAA,GAAO,UAASA,GAAV,EAAN;QADqB;MAJiC;MAW1D,IAAIJ,OAAA,CAAQ4uF,kBAAZ,EAAgC;QAC9B,IAAI;UACFxuF,GAAA,GAAMyuF,kBAAA,CAAmBzuF,GAAnB,CAAN;QADE,CAAJ,CAEE,MAAM;MAHsB;IAbM;IAoBxC,MAAM0uF,WAAA,GAAcl1E,OAAA,GAAU,IAAIjD,GAAJ,CAAQvW,GAAR,EAAawZ,OAAb,CAAV,GAAkC,IAAIjD,GAAJ,CAAQvW,GAAR,CAAtD;IACA,IAAIquF,gBAAA,CAAiBK,WAAjB,CAAJ,EAAmC;MACjC,OAAOA,WAAP;IADiC;EAtBjC,CAAJ,CAyBE,MAAM;EAGR,OAAO,IAAP;AAhCmE;AAmCrE,SAAS79F,MAATA,CAAgBuhB,GAAhB,EAAqBgjE,IAArB,EAA2BzyE,KAA3B,EAAkCgsF,eAAA,GAAkB,KAApD,EAA2D;EAOzDhzF,MAAA,CAAOizF,cAAP,CAAsBx8E,GAAtB,EAA2BgjE,IAA3B,EAAiC;IAC/BzyE,KAD+B;IAE/BksF,UAAA,EAAY,CAACF,eAFkB;IAG/BG,YAAA,EAAc,IAHiB;IAI/BC,QAAA,EAAU;EAJqB,CAAjC;EAMA,OAAOpsF,KAAP;AAbyD;AAmB3D,MAAMw4C,aAAA,GAAiB,SAAS6zC,oBAATA,CAAA,EAAgC;EAErD,SAAS7zC,aAATA,CAAuB10B,OAAvB,EAAgC/qB,IAAhC,EAAsC;IACpC,IAAI,KAAKtG,WAAL,KAAqB+lD,aAAzB,EAAwC;MACtCrqD,WAAA,CAAY,kCAAZ;IADsC;IAGxC,KAAK21B,OAAL,GAAeA,OAAf;IACA,KAAK/qB,IAAL,GAAYA,IAAZ;EALoC;EAOtCy/C,aAAA,CAAc5wC,SAAd,GAA0B,IAAIiM,KAAJ,EAA1B;EACA2kC,aAAA,CAAc/lD,WAAd,GAA4B+lD,aAA5B;EAEA,OAAOA,aAAP;AAZqD,CAAjC,EAAtB;AAeA,MAAMpnC,iBAAN,SAAgConC,aAAhC,CAA8C;EAC5C/lD,YAAYorD,GAAZ,EAAiBr0B,IAAjB,EAAuB;IACrB,MAAMq0B,GAAN,EAAW,mBAAX;IACA,KAAKr0B,IAAL,GAAYA,IAAZ;EAFqB;AADqB;AAO9C,MAAM9X,qBAAN,SAAoC8mC,aAApC,CAAkD;EAChD/lD,YAAYorD,GAAZ,EAAiBn0B,OAAjB,EAA0B;IACxB,MAAMm0B,GAAN,EAAW,uBAAX;IACA,KAAKn0B,OAAL,GAAeA,OAAf;EAFwB;AADsB;AAOlD,MAAM3Y,mBAAN,SAAkCynC,aAAlC,CAAgD;EAC9C/lD,YAAYorD,GAAZ,EAAiB;IACf,MAAMA,GAAN,EAAW,qBAAX;EADe;AAD6B;AAMhD,MAAM1sC,mBAAN,SAAkCqnC,aAAlC,CAAgD;EAC9C/lD,YAAYorD,GAAZ,EAAiB;IACf,MAAMA,GAAN,EAAW,qBAAX;EADe;AAD6B;AAMhD,MAAMpsC,2BAAN,SAA0C+mC,aAA1C,CAAwD;EACtD/lD,YAAYorD,GAAZ,EAAiBp0B,MAAjB,EAAyB;IACvB,MAAMo0B,GAAN,EAAW,6BAAX;IACA,KAAKp0B,MAAL,GAAcA,MAAd;EAFuB;AAD6B;AAUxD,MAAM6E,WAAN,SAA0BkqB,aAA1B,CAAwC;EACtC/lD,YAAYorD,GAAZ,EAAiB;IACf,MAAMA,GAAN,EAAW,aAAX;EADe;AADqB;AASxC,MAAMntC,cAAN,SAA6B8nC,aAA7B,CAA2C;EACzC/lD,YAAYorD,GAAZ,EAAiB;IACf,MAAMA,GAAN,EAAW,gBAAX;EADe;AADwB;AAM3C,SAASswB,aAATA,CAAuBj8C,KAAvB,EAA8B;EAC5B,IAAI,OAAOA,KAAP,KAAiB,QAAjB,IAA6BA,KAAA,EAAOn4B,MAAP,KAAkB+K,SAAnD,EAA8D;IAC5D3W,WAAA,CAAY,oCAAZ;EAD4D;EAG9D,MAAM4L,MAAA,GAASm4B,KAAA,CAAMn4B,MAArB;EACA,MAAMuyF,kBAAA,GAAqB,IAA3B;EACA,IAAIvyF,MAAA,GAASuyF,kBAAb,EAAiC;IAC/B,OAAOtV,MAAA,CAAOC,YAAP,CAAoB3tC,KAApB,CAA0B,IAA1B,EAAgCpX,KAAhC,CAAP;EAD+B;EAGjC,MAAMq6D,MAAA,GAAS,EAAf;EACA,KAAK,IAAIpkF,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIpO,MAApB,EAA4BoO,CAAA,IAAKmkF,kBAAjC,EAAqD;IACnD,MAAME,QAAA,GAAWjhG,IAAA,CAAKG,GAAL,CAASyc,CAAA,GAAImkF,kBAAb,EAAiCvyF,MAAjC,CAAjB;IACA,MAAM0gB,KAAA,GAAQyX,KAAA,CAAMoR,QAAN,CAAen7B,CAAf,EAAkBqkF,QAAlB,CAAd;IACAD,MAAA,CAAO5xF,IAAP,CAAYq8E,MAAA,CAAOC,YAAP,CAAoB3tC,KAApB,CAA0B,IAA1B,EAAgC7uB,KAAhC,CAAZ;EAHmD;EAKrD,OAAO8xE,MAAA,CAAOr/F,IAAP,CAAY,EAAZ,CAAP;AAf4B;AAkB9B,SAASskB,aAATA,CAAuBxd,GAAvB,EAA4B;EAC1B,IAAI,OAAOA,GAAP,KAAe,QAAnB,EAA6B;IAC3B7F,WAAA,CAAY,oCAAZ;EAD2B;EAG7B,MAAM4L,MAAA,GAAS/F,GAAA,CAAI+F,MAAnB;EACA,MAAMm4B,KAAA,GAAQ,IAAI7Y,UAAJ,CAAetf,MAAf,CAAd;EACA,KAAK,IAAIoO,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAIpO,MAApB,EAA4B,EAAEoO,CAA9B,EAAiC;IAC/B+pB,KAAA,CAAM/pB,CAAN,IAAWnU,GAAA,CAAIy8E,UAAJ,CAAetoE,CAAf,IAAoB,IAA/B;EAD+B;EAGjC,OAAO+pB,KAAP;AAT0B;AAY5B,SAASk8C,QAATA,CAAkBpuE,KAAlB,EAAyB;EAOvB,OAAOg3E,MAAA,CAAOC,YAAP,CACJj3E,KAAA,IAAS,EAAV,GAAgB,IADX,EAEJA,KAAA,IAAS,EAAV,GAAgB,IAFX,EAGJA,KAAA,IAAS,CAAV,GAAe,IAHV,EAILA,KAAA,GAAQ,IAJH,CAAP;AAPuB;AAezB,SAASysF,UAATA,CAAoBh9E,GAApB,EAAyB;EACvB,OAAOzW,MAAA,CAAOC,IAAP,CAAYwW,GAAZ,EAAiB1V,MAAxB;AADuB;AAMzB,SAAS4U,aAATA,CAAuB3hB,GAAvB,EAA4B;EAC1B,MAAMyiB,GAAA,GAAMzW,MAAA,CAAO3J,MAAP,CAAc,IAAd,CAAZ;EACA,WAAW,CAACqU,GAAD,EAAM1D,KAAN,CAAX,IAA2BhT,GAA3B,EAAgC;IAC9ByiB,GAAA,CAAI/L,GAAJ,IAAW1D,KAAX;EAD8B;EAGhC,OAAOyP,GAAP;AAL0B;AAS5B,SAASqpB,cAATA,CAAA,EAA0B;EACxB,MAAM4zD,OAAA,GAAU,IAAIrzE,UAAJ,CAAe,CAAf,CAAhB;EACAqzE,OAAA,CAAQ,CAAR,IAAa,CAAb;EACA,MAAMC,MAAA,GAAS,IAAIvzD,WAAJ,CAAgBszD,OAAA,CAAQzzE,MAAxB,EAAgC,CAAhC,EAAmC,CAAnC,CAAf;EACA,OAAO0zE,MAAA,CAAO,CAAP,MAAc,CAArB;AAJwB;AAQ1B,SAASn3E,eAATA,CAAA,EAA2B;EACzB,IAAI;IACF,IAAIs8D,QAAJ,CAAa,EAAb;IACA,OAAO,IAAP;EAFE,CAAJ,CAGE,MAAM;IACN,OAAO,KAAP;EADM;AAJiB;AAS3B,MAAM9jF,WAAN,CAAkB;EAChB,WAAW8qC,cAAXA,CAAA,EAA4B;IAC1B,OAAO5qC,MAAA,CAAO,IAAP,EAAa,gBAAb,EAA+B4qC,cAAA,EAA/B,CAAP;EAD0B;EAI5B,WAAWtjB,eAAXA,CAAA,EAA6B;IAC3B,OAAOtnB,MAAA,CAAO,IAAP,EAAa,iBAAb,EAAgCsnB,eAAA,EAAhC,CAAP;EAD2B;EAI7B,WAAWC,0BAAXA,CAAA,EAAwC;IACtC,OAAOvnB,MAAA,CACL,IADK,EAEL,4BAFK,EAGL,OAAOwmE,eAAP,KAA2B,WAHtB,CAAP;EADsC;EAQxC,WAAW3zD,QAAXA,CAAA,EAAsB;IACpB,IAEG,OAAOkvE,SAAP,KAAqB,WAArB,IACC,OAAOA,SAAA,EAAWlvE,QAAlB,KAA+B,QAHnC,EAIE;MACA,OAAO7S,MAAA,CAAO,IAAP,EAAa,UAAb,EAAyB;QAC9B8S,KAAA,EAAOivE,SAAA,CAAUlvE,QAAV,CAAmBS,QAAnB,CAA4B,KAA5B;MADuB,CAAzB,CAAP;IADA;IAKF,OAAOtT,MAAA,CAAO,IAAP,EAAa,UAAb,EAAyB;MAAE8S,KAAA,EAAO;IAAT,CAAzB,CAAP;EAVoB;EAatB,WAAW6/C,mBAAXA,CAAA,EAAiC;IAC/B,OAAO3yD,MAAA,CACL,IADK,EAEL,qBAFK,EAGL6nB,UAAA,CAAW5L,GAAX,EAAgBC,QAAhB,GAA2B,0BAA3B,CAHK,CAAP;EAD+B;AA9BjB;AAuClB,MAAMwiF,UAAA,GAAa,CAAC,GAAGtwF,KAAA,CAAM,GAAN,EAAWrD,IAAX,EAAJ,EAAuBjM,GAAvB,CAA2B1B,CAAA,IAC5CA,CAAA,CAAEK,QAAF,CAAW,EAAX,EAAeC,QAAf,CAAwB,CAAxB,EAA2B,GAA3B,CADiB,CAAnB;AAIA,MAAMwC,IAAN,CAAW;EACT,OAAOmI,YAAPA,CAAoB3J,CAApB,EAAuBN,CAAvB,EAA0BO,CAA1B,EAA6B;IAC3B,OAAQ,IAAG+/F,UAAA,CAAWhgG,CAAX,CAAJ,GAAoBggG,UAAA,CAAWtgG,CAAX,CAApB,GAAoCsgG,UAAA,CAAW//F,CAAX,CAApC,EAAP;EAD2B;EAO7B,OAAO80C,WAAPA,CAAmBniB,SAAnB,EAA8BkiB,MAA9B,EAAsC;IACpC,IAAImrD,IAAJ;IACA,IAAIrtE,SAAA,CAAU,CAAV,CAAJ,EAAkB;MAChB,IAAIA,SAAA,CAAU,CAAV,IAAe,CAAnB,EAAsB;QACpBqtE,IAAA,GAAOnrD,MAAA,CAAO,CAAP,CAAP;QACAA,MAAA,CAAO,CAAP,IAAYA,MAAA,CAAO,CAAP,CAAZ;QACAA,MAAA,CAAO,CAAP,IAAYmrD,IAAZ;MAHoB;MAKtBnrD,MAAA,CAAO,CAAP,KAAaliB,SAAA,CAAU,CAAV,CAAb;MACAkiB,MAAA,CAAO,CAAP,KAAaliB,SAAA,CAAU,CAAV,CAAb;MAEA,IAAIA,SAAA,CAAU,CAAV,IAAe,CAAnB,EAAsB;QACpBqtE,IAAA,GAAOnrD,MAAA,CAAO,CAAP,CAAP;QACAA,MAAA,CAAO,CAAP,IAAYA,MAAA,CAAO,CAAP,CAAZ;QACAA,MAAA,CAAO,CAAP,IAAYmrD,IAAZ;MAHoB;MAKtBnrD,MAAA,CAAO,CAAP,KAAaliB,SAAA,CAAU,CAAV,CAAb;MACAkiB,MAAA,CAAO,CAAP,KAAaliB,SAAA,CAAU,CAAV,CAAb;IAfgB,CAAlB,MAgBO;MACLqtE,IAAA,GAAOnrD,MAAA,CAAO,CAAP,CAAP;MACAA,MAAA,CAAO,CAAP,IAAYA,MAAA,CAAO,CAAP,CAAZ;MACAA,MAAA,CAAO,CAAP,IAAYmrD,IAAZ;MACAA,IAAA,GAAOnrD,MAAA,CAAO,CAAP,CAAP;MACAA,MAAA,CAAO,CAAP,IAAYA,MAAA,CAAO,CAAP,CAAZ;MACAA,MAAA,CAAO,CAAP,IAAYmrD,IAAZ;MAEA,IAAIrtE,SAAA,CAAU,CAAV,IAAe,CAAnB,EAAsB;QACpBqtE,IAAA,GAAOnrD,MAAA,CAAO,CAAP,CAAP;QACAA,MAAA,CAAO,CAAP,IAAYA,MAAA,CAAO,CAAP,CAAZ;QACAA,MAAA,CAAO,CAAP,IAAYmrD,IAAZ;MAHoB;MAKtBnrD,MAAA,CAAO,CAAP,KAAaliB,SAAA,CAAU,CAAV,CAAb;MACAkiB,MAAA,CAAO,CAAP,KAAaliB,SAAA,CAAU,CAAV,CAAb;MAEA,IAAIA,SAAA,CAAU,CAAV,IAAe,CAAnB,EAAsB;QACpBqtE,IAAA,GAAOnrD,MAAA,CAAO,CAAP,CAAP;QACAA,MAAA,CAAO,CAAP,IAAYA,MAAA,CAAO,CAAP,CAAZ;QACAA,MAAA,CAAO,CAAP,IAAYmrD,IAAZ;MAHoB;MAKtBnrD,MAAA,CAAO,CAAP,KAAaliB,SAAA,CAAU,CAAV,CAAb;MACAkiB,MAAA,CAAO,CAAP,KAAaliB,SAAA,CAAU,CAAV,CAAb;IAtBK;IAwBPkiB,MAAA,CAAO,CAAP,KAAaliB,SAAA,CAAU,CAAV,CAAb;IACAkiB,MAAA,CAAO,CAAP,KAAaliB,SAAA,CAAU,CAAV,CAAb;IACAkiB,MAAA,CAAO,CAAP,KAAaliB,SAAA,CAAU,CAAV,CAAb;IACAkiB,MAAA,CAAO,CAAP,KAAaliB,SAAA,CAAU,CAAV,CAAb;EA7CoC;EAiDtC,OAAOA,SAAPA,CAAiBstE,EAAjB,EAAqBC,EAArB,EAAyB;IACvB,OAAO,CACLD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAAR,GAAgBD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CADnB,EAELD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAAR,GAAgBD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAFnB,EAGLD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAAR,GAAgBD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAHnB,EAILD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAAR,GAAgBD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAJnB,EAKLD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAAR,GAAgBD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAAxB,GAAgCD,EAAA,CAAG,CAAH,CAL3B,EAMLA,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAAR,GAAgBD,EAAA,CAAG,CAAH,IAAQC,EAAA,CAAG,CAAH,CAAxB,GAAgCD,EAAA,CAAG,CAAH,CAN3B,CAAP;EADuB;EAYzB,OAAOzrD,cAAPA,CAAsB71B,CAAtB,EAAyBrf,CAAzB,EAA4B;IAC1B,MAAM6gG,EAAA,GAAKxhF,CAAA,CAAE,CAAF,IAAOrf,CAAA,CAAE,CAAF,CAAP,GAAcqf,CAAA,CAAE,CAAF,IAAOrf,CAAA,CAAE,CAAF,CAArB,GAA4BA,CAAA,CAAE,CAAF,CAAvC;IACA,MAAM8gG,EAAA,GAAKzhF,CAAA,CAAE,CAAF,IAAOrf,CAAA,CAAE,CAAF,CAAP,GAAcqf,CAAA,CAAE,CAAF,IAAOrf,CAAA,CAAE,CAAF,CAArB,GAA4BA,CAAA,CAAE,CAAF,CAAvC;IACA,OAAO,CAAC6gG,EAAD,EAAKC,EAAL,CAAP;EAH0B;EAM5B,OAAOrvC,qBAAPA,CAA6BpyC,CAA7B,EAAgCrf,CAAhC,EAAmC;IACjC,MAAMswC,CAAA,GAAItwC,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAAP,GAAcA,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAA/B;IACA,MAAM6gG,EAAA,GAAM,CAAAxhF,CAAA,CAAE,CAAF,IAAOrf,CAAA,CAAE,CAAF,CAAP,GAAcqf,CAAA,CAAE,CAAF,IAAOrf,CAAA,CAAE,CAAF,CAArB,GAA4BA,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAAnC,GAA0CA,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAAjD,IAAyDswC,CAArE;IACA,MAAMwwD,EAAA,GAAM,EAACzhF,CAAA,CAAE,CAAF,CAAD,GAAQrf,CAAA,CAAE,CAAF,CAAR,GAAeqf,CAAA,CAAE,CAAF,IAAOrf,CAAA,CAAE,CAAF,CAAtB,GAA6BA,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAApC,GAA2CA,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAAlD,IAA0DswC,CAAtE;IACA,OAAO,CAACuwD,EAAD,EAAKC,EAAL,CAAP;EAJiC;EASnC,OAAO/hD,0BAAPA,CAAkCt+C,CAAlC,EAAqCT,CAArC,EAAwC;IACtC,MAAMulC,EAAA,GAAK,KAAK2P,cAAL,CAAoBz0C,CAApB,EAAuBT,CAAvB,CAAX;IACA,MAAMwlC,EAAA,GAAK,KAAK0P,cAAL,CAAoBz0C,CAAA,CAAEc,KAAF,CAAQ,CAAR,EAAW,CAAX,CAApB,EAAmCvB,CAAnC,CAAX;IACA,MAAMylC,EAAA,GAAK,KAAKyP,cAAL,CAAoB,CAACz0C,CAAA,CAAE,CAAF,CAAD,EAAOA,CAAA,CAAE,CAAF,CAAP,CAApB,EAAkCT,CAAlC,CAAX;IACA,MAAMq1C,EAAA,GAAK,KAAKH,cAAL,CAAoB,CAACz0C,CAAA,CAAE,CAAF,CAAD,EAAOA,CAAA,CAAE,CAAF,CAAP,CAApB,EAAkCT,CAAlC,CAAX;IACA,OAAO,CACLZ,IAAA,CAAKG,GAAL,CAASgmC,EAAA,CAAG,CAAH,CAAT,EAAgBC,EAAA,CAAG,CAAH,CAAhB,EAAuBC,EAAA,CAAG,CAAH,CAAvB,EAA8B4P,EAAA,CAAG,CAAH,CAA9B,CADK,EAELj2C,IAAA,CAAKG,GAAL,CAASgmC,EAAA,CAAG,CAAH,CAAT,EAAgBC,EAAA,CAAG,CAAH,CAAhB,EAAuBC,EAAA,CAAG,CAAH,CAAvB,EAA8B4P,EAAA,CAAG,CAAH,CAA9B,CAFK,EAGLj2C,IAAA,CAAKE,GAAL,CAASimC,EAAA,CAAG,CAAH,CAAT,EAAgBC,EAAA,CAAG,CAAH,CAAhB,EAAuBC,EAAA,CAAG,CAAH,CAAvB,EAA8B4P,EAAA,CAAG,CAAH,CAA9B,CAHK,EAILj2C,IAAA,CAAKE,GAAL,CAASimC,EAAA,CAAG,CAAH,CAAT,EAAgBC,EAAA,CAAG,CAAH,CAAhB,EAAuBC,EAAA,CAAG,CAAH,CAAvB,EAA8B4P,EAAA,CAAG,CAAH,CAA9B,CAJK,CAAP;EALsC;EAaxC,OAAO0I,gBAAPA,CAAwB/9C,CAAxB,EAA2B;IACzB,MAAMswC,CAAA,GAAItwC,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAAP,GAAcA,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAA/B;IACA,OAAO,CACLA,CAAA,CAAE,CAAF,IAAOswC,CADF,EAEL,CAACtwC,CAAA,CAAE,CAAF,CAAD,GAAQswC,CAFH,EAGL,CAACtwC,CAAA,CAAE,CAAF,CAAD,GAAQswC,CAHH,EAILtwC,CAAA,CAAE,CAAF,IAAOswC,CAJF,EAKJ,CAAAtwC,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAAP,GAAcA,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAArB,IAA6BswC,CALzB,EAMJ,CAAAtwC,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAAP,GAAcA,CAAA,CAAE,CAAF,IAAOA,CAAA,CAAE,CAAF,CAArB,IAA6BswC,CANzB,CAAP;EAFyB;EAe3B,OAAO9G,6BAAPA,CAAqCxpC,CAArC,EAAwC;IACtC,MAAM+gG,SAAA,GAAY,CAAC/gG,CAAA,CAAE,CAAF,CAAD,EAAOA,CAAA,CAAE,CAAF,CAAP,EAAaA,CAAA,CAAE,CAAF,CAAb,EAAmBA,CAAA,CAAE,CAAF,CAAnB,CAAlB;IAGA,MAAMqwC,CAAA,GAAIrwC,CAAA,CAAE,CAAF,IAAO+gG,SAAA,CAAU,CAAV,CAAP,GAAsB/gG,CAAA,CAAE,CAAF,IAAO+gG,SAAA,CAAU,CAAV,CAAvC;IACA,MAAMrgG,CAAA,GAAIV,CAAA,CAAE,CAAF,IAAO+gG,SAAA,CAAU,CAAV,CAAP,GAAsB/gG,CAAA,CAAE,CAAF,IAAO+gG,SAAA,CAAU,CAAV,CAAvC;IACA,MAAMjhG,CAAA,GAAIE,CAAA,CAAE,CAAF,IAAO+gG,SAAA,CAAU,CAAV,CAAP,GAAsB/gG,CAAA,CAAE,CAAF,IAAO+gG,SAAA,CAAU,CAAV,CAAvC;IACA,MAAMzwD,CAAA,GAAItwC,CAAA,CAAE,CAAF,IAAO+gG,SAAA,CAAU,CAAV,CAAP,GAAsB/gG,CAAA,CAAE,CAAF,IAAO+gG,SAAA,CAAU,CAAV,CAAvC;IAGA,MAAMz8B,KAAA,GAAS,CAAAj0B,CAAA,GAAIC,CAAJ,IAAS,CAAxB;IACA,MAAMojB,MAAA,GAASt0D,IAAA,CAAK4hG,IAAL,CAAW,CAAA3wD,CAAA,GAAIC,CAAJ,KAAU,CAAX,GAAe,KAAKD,CAAA,GAAIC,CAAJ,GAAQxwC,CAAA,GAAIY,CAAZ,CAA9B,IAAgD,CAA/D;IACA,MAAMugG,EAAA,GAAK38B,KAAA,GAAQ5Q,MAAR,IAAkB,CAA7B;IACA,MAAMwtC,EAAA,GAAK58B,KAAA,GAAQ5Q,MAAR,IAAkB,CAA7B;IAGA,OAAO,CAACt0D,IAAA,CAAK4hG,IAAL,CAAUC,EAAV,CAAD,EAAgB7hG,IAAA,CAAK4hG,IAAL,CAAUE,EAAV,CAAhB,CAAP;EAhBsC;EAuBxC,OAAO93F,aAAPA,CAAqBtG,IAArB,EAA2B;IACzB,MAAMrC,CAAA,GAAIqC,IAAA,CAAKvB,KAAL,CAAW,CAAX,CAAV;IACA,IAAIuB,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAd,EAAuB;MACrBrC,CAAA,CAAE,CAAF,IAAOqC,IAAA,CAAK,CAAL,CAAP;MACArC,CAAA,CAAE,CAAF,IAAOqC,IAAA,CAAK,CAAL,CAAP;IAFqB;IAIvB,IAAIA,IAAA,CAAK,CAAL,IAAUA,IAAA,CAAK,CAAL,CAAd,EAAuB;MACrBrC,CAAA,CAAE,CAAF,IAAOqC,IAAA,CAAK,CAAL,CAAP;MACArC,CAAA,CAAE,CAAF,IAAOqC,IAAA,CAAK,CAAL,CAAP;IAFqB;IAIvB,OAAOrC,CAAP;EAVyB;EAgB3B,OAAOse,SAAPA,CAAiBoiF,KAAjB,EAAwBC,KAAxB,EAA+B;IAC7B,MAAMC,IAAA,GAAOjiG,IAAA,CAAKE,GAAL,CACXF,IAAA,CAAKG,GAAL,CAAS4hG,KAAA,CAAM,CAAN,CAAT,EAAmBA,KAAA,CAAM,CAAN,CAAnB,CADW,EAEX/hG,IAAA,CAAKG,GAAL,CAAS6hG,KAAA,CAAM,CAAN,CAAT,EAAmBA,KAAA,CAAM,CAAN,CAAnB,CAFW,CAAb;IAIA,MAAME,KAAA,GAAQliG,IAAA,CAAKG,GAAL,CACZH,IAAA,CAAKE,GAAL,CAAS6hG,KAAA,CAAM,CAAN,CAAT,EAAmBA,KAAA,CAAM,CAAN,CAAnB,CADY,EAEZ/hG,IAAA,CAAKE,GAAL,CAAS8hG,KAAA,CAAM,CAAN,CAAT,EAAmBA,KAAA,CAAM,CAAN,CAAnB,CAFY,CAAd;IAIA,IAAIC,IAAA,GAAOC,KAAX,EAAkB;MAChB,OAAO,IAAP;IADgB;IAGlB,MAAMC,IAAA,GAAOniG,IAAA,CAAKE,GAAL,CACXF,IAAA,CAAKG,GAAL,CAAS4hG,KAAA,CAAM,CAAN,CAAT,EAAmBA,KAAA,CAAM,CAAN,CAAnB,CADW,EAEX/hG,IAAA,CAAKG,GAAL,CAAS6hG,KAAA,CAAM,CAAN,CAAT,EAAmBA,KAAA,CAAM,CAAN,CAAnB,CAFW,CAAb;IAIA,MAAMI,KAAA,GAAQpiG,IAAA,CAAKG,GAAL,CACZH,IAAA,CAAKE,GAAL,CAAS6hG,KAAA,CAAM,CAAN,CAAT,EAAmBA,KAAA,CAAM,CAAN,CAAnB,CADY,EAEZ/hG,IAAA,CAAKE,GAAL,CAAS8hG,KAAA,CAAM,CAAN,CAAT,EAAmBA,KAAA,CAAM,CAAN,CAAnB,CAFY,CAAd;IAIA,IAAIG,IAAA,GAAOC,KAAX,EAAkB;MAChB,OAAO,IAAP;IADgB;IAIlB,OAAO,CAACH,IAAD,EAAOE,IAAP,EAAaD,KAAb,EAAoBE,KAApB,CAAP;EAxB6B;EA4B/B,OAAO7rD,iBAAPA,CAAyBpL,EAAzB,EAA6BC,EAA7B,EAAiCtE,EAAjC,EAAqCE,EAArC,EAAyCE,EAAzC,EAA6CC,EAA7C,EAAiDC,EAAjD,EAAqDC,EAArD,EAAyD;IACvD,MAAMg7D,OAAA,GAAU,EAAhB;MACE34C,MAAA,GAAS,CAAC,EAAD,EAAK,EAAL,CADX;IAEA,IAAIzY,CAAJ,EAAO3vC,CAAP,EAAUZ,CAAV,EAAa4hG,CAAb,EAAgBC,EAAhB,EAAoBC,EAApB,EAAwBC,IAAxB,EAA8BC,QAA9B;IACA,KAAK,IAAI9lF,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI,CAApB,EAAuB,EAAEA,CAAzB,EAA4B;MAC1B,IAAIA,CAAA,KAAM,CAAV,EAAa;QACXtb,CAAA,GAAI,IAAI6pC,EAAJ,GAAS,KAAKrE,EAAd,GAAmB,IAAII,EAA3B;QACA+J,CAAA,GAAI,CAAC,CAAD,GAAK9F,EAAL,GAAU,IAAIrE,EAAd,GAAmB,IAAII,EAAvB,GAA4B,IAAIE,EAApC;QACA1mC,CAAA,GAAI,IAAIomC,EAAJ,GAAS,IAAIqE,EAAjB;MAHW,CAAb,MAIO;QACL7pC,CAAA,GAAI,IAAI8pC,EAAJ,GAAS,KAAKpE,EAAd,GAAmB,IAAIG,EAA3B;QACA8J,CAAA,GAAI,CAAC,CAAD,GAAK7F,EAAL,GAAU,IAAIpE,EAAd,GAAmB,IAAIG,EAAvB,GAA4B,IAAIE,EAApC;QACA3mC,CAAA,GAAI,IAAIsmC,EAAJ,GAAS,IAAIoE,EAAjB;MAHK;MAKP,IAAIprC,IAAA,CAAKwX,GAAL,CAASy5B,CAAT,IAAc,KAAlB,EAAyB;QACvB,IAAIjxC,IAAA,CAAKwX,GAAL,CAASlW,CAAT,IAAc,KAAlB,EAAyB;UACvB;QADuB;QAGzBghG,CAAA,GAAI,CAAC5hG,CAAD,GAAKY,CAAT;QACA,IAAI,IAAIghG,CAAJ,IAASA,CAAA,GAAI,CAAjB,EAAoB;UAClBD,OAAA,CAAQjzF,IAAR,CAAakzF,CAAb;QADkB;QAGpB;MARuB;MAUzBG,IAAA,GAAOnhG,CAAA,GAAIA,CAAJ,GAAQ,IAAIZ,CAAJ,GAAQuwC,CAAvB;MACAyxD,QAAA,GAAW1iG,IAAA,CAAK4hG,IAAL,CAAUa,IAAV,CAAX;MACA,IAAIA,IAAA,GAAO,CAAX,EAAc;QACZ;MADY;MAGdF,EAAA,GAAM,EAACjhG,CAAD,GAAKohG,QAAL,KAAkB,IAAIzxD,CAAJ,CAAxB;MACA,IAAI,IAAIsxD,EAAJ,IAAUA,EAAA,GAAK,CAAnB,EAAsB;QACpBF,OAAA,CAAQjzF,IAAR,CAAamzF,EAAb;MADoB;MAGtBC,EAAA,GAAM,EAAClhG,CAAD,GAAKohG,QAAL,KAAkB,IAAIzxD,CAAJ,CAAxB;MACA,IAAI,IAAIuxD,EAAJ,IAAUA,EAAA,GAAK,CAAnB,EAAsB;QACpBH,OAAA,CAAQjzF,IAAR,CAAaozF,EAAb;MADoB;IA9BI;IAmC5B,IAAI75D,CAAA,GAAI05D,OAAA,CAAQ7zF,MAAhB;MACEm0F,EADF;IAEA,MAAMC,IAAA,GAAOj6D,CAAb;IACA,OAAOA,CAAA,EAAP,EAAY;MACV25D,CAAA,GAAID,OAAA,CAAQ15D,CAAR,CAAJ;MACAg6D,EAAA,GAAK,IAAIL,CAAT;MACA54C,MAAA,CAAO,CAAP,EAAU/gB,CAAV,IACEg6D,EAAA,GAAKA,EAAL,GAAUA,EAAV,GAAex3D,EAAf,GACA,IAAIw3D,EAAJ,GAASA,EAAT,GAAcL,CAAd,GAAkBx7D,EADlB,GAEA,IAAI67D,EAAJ,GAASL,CAAT,GAAaA,CAAb,GAAiBp7D,EAFjB,GAGAo7D,CAAA,GAAIA,CAAJ,GAAQA,CAAR,GAAYl7D,EAJd;MAKAsiB,MAAA,CAAO,CAAP,EAAU/gB,CAAV,IACEg6D,EAAA,GAAKA,EAAL,GAAUA,EAAV,GAAev3D,EAAf,GACA,IAAIu3D,EAAJ,GAASA,EAAT,GAAcL,CAAd,GAAkBt7D,EADlB,GAEA,IAAI27D,EAAJ,GAASL,CAAT,GAAaA,CAAb,GAAiBn7D,EAFjB,GAGAm7D,CAAA,GAAIA,CAAJ,GAAQA,CAAR,GAAYj7D,EAJd;IARU;IAeZqiB,MAAA,CAAO,CAAP,EAAUk5C,IAAV,IAAkBz3D,EAAlB;IACAue,MAAA,CAAO,CAAP,EAAUk5C,IAAV,IAAkBx3D,EAAlB;IACAse,MAAA,CAAO,CAAP,EAAUk5C,IAAA,GAAO,CAAjB,IAAsBx7D,EAAtB;IACAsiB,MAAA,CAAO,CAAP,EAAUk5C,IAAA,GAAO,CAAjB,IAAsBv7D,EAAtB;IACAqiB,MAAA,CAAO,CAAP,EAAUl7C,MAAV,GAAmBk7C,MAAA,CAAO,CAAP,EAAUl7C,MAAV,GAAmBo0F,IAAA,GAAO,CAA7C;IAEA,OAAO,CACL5iG,IAAA,CAAKG,GAAL,CAAS,GAAGupD,MAAA,CAAO,CAAP,CAAZ,CADK,EAEL1pD,IAAA,CAAKG,GAAL,CAAS,GAAGupD,MAAA,CAAO,CAAP,CAAZ,CAFK,EAGL1pD,IAAA,CAAKE,GAAL,CAAS,GAAGwpD,MAAA,CAAO,CAAP,CAAZ,CAHK,EAIL1pD,IAAA,CAAKE,GAAL,CAAS,GAAGwpD,MAAA,CAAO,CAAP,CAAZ,CAJK,CAAP;EA/DuD;AAnLhD;AA2PX,MAAMm5C,uBAAA,GAA0B,iDAC9B,CAD8B,EAC3B,CAD2B,EACxB,CADwB,EACrB,CADqB,EAClB,CADkB,EACf,CADe,EACZ,CADY,EACT,CADS,EACN,CADM,EACH,CADG,EACA,CADA,EACG,CADH,EACM,CADN,EACS,CADT,EACY,CADZ,EACe,CADf,EACkB,CADlB,EACqB,CADrB,EACwB,CADxB,EAC2B,CAD3B,EAC8B,CAD9B,EACiC,CADjC,EACoC,CADpC,EACuC,CADvC,EAC0C,KAD1C,EAE9B,KAF8B,EAEvB,KAFuB,EAEhB,KAFgB,EAET,KAFS,EAEF,KAFE,EAEK,KAFL,EAEY,KAFZ,EAEmB,CAFnB,EAEsB,CAFtB,EAEyB,CAFzB,EAE4B,CAF5B,EAE+B,CAF/B,EAEkC,CAFlC,EAEqC,CAFrC,EAEwC,CAFxC,EAE2C,CAF3C,EAE8C,CAF9C,EAG9B,CAH8B,EAG3B,CAH2B,EAGxB,CAHwB,EAGrB,CAHqB,EAGlB,CAHkB,EAGf,CAHe,EAGZ,CAHY,EAGT,CAHS,EAGN,CAHM,EAGH,CAHG,EAGA,CAHA,EAGG,CAHH,EAGM,CAHN,EAGS,CAHT,EAGY,CAHZ,EAGe,CAHf,EAGkB,CAHlB,EAGqB,CAHrB,EAGwB,CAHxB,EAG2B,CAH3B,EAG8B,CAH9B,EAGiC,CAHjC,EAGoC,CAHpC,EAGuC,CAHvC,EAG0C,CAH1C,EAG6C,CAH7C,EAI9B,CAJ8B,EAI3B,CAJ2B,EAIxB,CAJwB,EAIrB,CAJqB,EAIlB,CAJkB,EAIf,CAJe,EAIZ,CAJY,EAIT,CAJS,EAIN,CAJM,EAIH,CAJG,EAIA,CAJA,EAIG,CAJH,EAIM,CAJN,EAIS,CAJT,EAIY,CAJZ,EAIe,CAJf,EAIkB,CAJlB,EAIqB,CAJrB,EAIwB,CAJxB,EAI2B,CAJ3B,EAI8B,CAJ9B,EAIiC,CAJjC,EAIoC,CAJpC,EAIuC,CAJvC,EAI0C,CAJ1C,EAI6C,CAJ7C,EAK9B,CAL8B,EAK3B,CAL2B,EAKxB,CALwB,EAKrB,CALqB,EAKlB,CALkB,EAKf,CALe,EAKZ,CALY,EAKT,CALS,EAKN,CALM,EAKH,CALG,EAKA,CALA,EAKG,CALH,EAKM,CALN,EAKS,CALT,EAKY,CALZ,EAKe,CALf,EAKkB,CALlB,EAKqB,CALrB,EAKwB,CALxB,EAK2B,CAL3B,EAK8B,CAL9B,EAKiC,CALjC,EAKoC,CALpC,EAKuC,CALvC,EAK0C,CAL1C,EAK6C,CAL7C,EAM9B,CAN8B,EAM3B,CAN2B,EAMxB,CANwB,EAMrB,CANqB,EAMlB,CANkB,EAMf,CANe,EAMZ,CANY,EAMT,CANS,EAMN,MANM,EAME,MANF,EAMU,MANV,EAMkB,MANlB,EAM0B,MAN1B,EAMkC,MANlC,EAM0C,KAN1C,EAO9B,MAP8B,EAOtB,MAPsB,EAOd,MAPc,EAON,MAPM,EAOE,MAPF,EAOU,MAPV,EAOkB,MAPlB,EAO0B,MAP1B,EAOkC,MAPlC,EAQ9B,MAR8B,EAQtB,MARsB,EAQd,MARc,EAQN,MARM,EAQE,MARF,EAQU,KARV,EAQiB,KARjB,EAQwB,KARxB,EAQ+B,KAR/B,EAQsC,KARtC,EAS9B,KAT8B,EASvB,KATuB,EAShB,KATgB,EAST,KATS,EASF,KATE,EASK,CATL,EASQ,MATR,CAAhC;AAYA,SAASC,iBAATA,CAA2Br6F,GAA3B,EAAgC;EAI9B,IAAIA,GAAA,CAAI,CAAJ,KAAU,MAAd,EAAsB;IACpB,IAAIiiF,QAAJ;IACA,IAAIjiF,GAAA,CAAI,CAAJ,MAAW,MAAX,IAAqBA,GAAA,CAAI,CAAJ,MAAW,MAApC,EAA4C;MAC1CiiF,QAAA,GAAW,UAAX;MACA,IAAIjiF,GAAA,CAAI+F,MAAJ,GAAa,CAAb,KAAmB,CAAvB,EAA0B;QACxB/F,GAAA,GAAMA,GAAA,CAAItG,KAAJ,CAAU,CAAV,EAAa,CAAC,CAAd,CAAN;MADwB;IAFgB,CAA5C,MAKO,IAAIsG,GAAA,CAAI,CAAJ,MAAW,MAAX,IAAqBA,GAAA,CAAI,CAAJ,MAAW,MAApC,EAA4C;MACjDiiF,QAAA,GAAW,UAAX;MACA,IAAIjiF,GAAA,CAAI+F,MAAJ,GAAa,CAAb,KAAmB,CAAvB,EAA0B;QACxB/F,GAAA,GAAMA,GAAA,CAAItG,KAAJ,CAAU,CAAV,EAAa,CAAC,CAAd,CAAN;MADwB;IAFuB,CAA5C,MAKA,IAAIsG,GAAA,CAAI,CAAJ,MAAW,MAAX,IAAqBA,GAAA,CAAI,CAAJ,MAAW,MAAhC,IAA0CA,GAAA,CAAI,CAAJ,MAAW,MAAzD,EAAiE;MACtEiiF,QAAA,GAAW,OAAX;IADsE;IAIxE,IAAIA,QAAJ,EAAc;MACZ,IAAI;QACF,MAAMC,OAAA,GAAU,IAAIC,WAAJ,CAAgBF,QAAhB,EAA0B;UAAEG,KAAA,EAAO;QAAT,CAA1B,CAAhB;QACA,MAAMn9D,MAAA,GAASzH,aAAA,CAAcxd,GAAd,CAAf;QACA,MAAMs6F,OAAA,GAAUpY,OAAA,CAAQ7R,MAAR,CAAeprD,MAAf,CAAhB;QACA,IAAI,CAACq1E,OAAA,CAAQ9sF,QAAR,CAAiB,MAAjB,CAAL,EAA+B;UAC7B,OAAO8sF,OAAP;QAD6B;QAG/B,OAAOA,OAAA,CAAQnqF,UAAR,CAAmB,yBAAnB,EAA8C,EAA9C,CAAP;MAPE,CAAJ,CAQE,OAAOyV,EAAP,EAAW;QACXvrB,IAAA,CAAM,uBAAsBurB,EAAG,IAA/B;MADW;IATD;EAhBM;EA+BtB,MAAM2yE,MAAA,GAAS,EAAf;EACA,KAAK,IAAIpkF,CAAA,GAAI,CAAR,EAAWwD,EAAA,GAAK3X,GAAA,CAAI+F,MAApB,EAA4BoO,CAAA,GAAIwD,EAArC,EAAyCxD,CAAA,EAAzC,EAA8C;IAC5C,MAAMomF,QAAA,GAAWv6F,GAAA,CAAIy8E,UAAJ,CAAetoE,CAAf,CAAjB;IACA,IAAIomF,QAAA,KAAa,IAAjB,EAAuB;MAErB,OAAO,EAAEpmF,CAAF,GAAMwD,EAAN,IAAY3X,GAAA,CAAIy8E,UAAJ,CAAetoE,CAAf,MAAsB,IAAzC,EAA+C;MAC/C;IAHqB;IAKvB,MAAMqhB,IAAA,GAAO4kE,uBAAA,CAAwBG,QAAxB,CAAb;IACAhC,MAAA,CAAO5xF,IAAP,CAAY6uB,IAAA,GAAOwtD,MAAA,CAAOC,YAAP,CAAoBztD,IAApB,CAAP,GAAmCx1B,GAAA,CAAIw6F,MAAJ,CAAWrmF,CAAX,CAA/C;EAR4C;EAU9C,OAAOokF,MAAA,CAAOr/F,IAAP,CAAY,EAAZ,CAAP;AA9C8B;AAiDhC,SAAS4+F,kBAATA,CAA4B93F,GAA5B,EAAiC;EAC/B,OAAOyqD,kBAAA,CAAmBgwC,MAAA,CAAOz6F,GAAP,CAAnB,CAAP;AAD+B;AAIjC,SAAS06F,kBAATA,CAA4B16F,GAA5B,EAAiC;EAC/B,OAAOyhF,QAAA,CAASkZ,kBAAA,CAAmB36F,GAAnB,CAAT,CAAP;AAD+B;AAIjC,SAASgd,aAATA,CAAuB49E,CAAvB,EAA0B;EACxB,OAAO,OAAOA,CAAP,KAAa,QAAb,IAAyBA,CAAA,EAAGt1E,UAAH,KAAkBxU,SAAlD;AADwB;AAI1B,SAAS+pF,YAATA,CAAsBC,IAAtB,EAA4BC,IAA5B,EAAkC;EAChC,IAAID,IAAA,CAAK/0F,MAAL,KAAgBg1F,IAAA,CAAKh1F,MAAzB,EAAiC;IAC/B,OAAO,KAAP;EAD+B;EAGjC,KAAK,IAAIoO,CAAA,GAAI,CAAR,EAAWwD,EAAA,GAAKmjF,IAAA,CAAK/0F,MAArB,EAA6BoO,CAAA,GAAIwD,EAAtC,EAA0CxD,CAAA,EAA1C,EAA+C;IAC7C,IAAI2mF,IAAA,CAAK3mF,CAAL,MAAY4mF,IAAA,CAAK5mF,CAAL,CAAhB,EAAyB;MACvB,OAAO,KAAP;IADuB;EADoB;EAK/C,OAAO,IAAP;AATgC;AAYlC,SAAS6mF,mBAATA,CAA6BxkF,IAAA,GAAO,IAAIy+B,IAAJ,EAApC,EAAgD;EAC9C,MAAMhwB,MAAA,GAAS,CACbzO,IAAA,CAAKykF,cAAL,GAAsBtjG,QAAtB,EADa,EAEZ,CAAA6e,IAAA,CAAK0kF,WAAL,KAAqB,CAArB,EAAwBvjG,QAAzB,GAAoCC,QAApC,CAA6C,CAA7C,EAAgD,GAAhD,CAFa,EAGb4e,IAAA,CAAK2kF,UAAL,GAAkBxjG,QAAlB,GAA6BC,QAA7B,CAAsC,CAAtC,EAAyC,GAAzC,CAHa,EAIb4e,IAAA,CAAK4kF,WAAL,GAAmBzjG,QAAnB,GAA8BC,QAA9B,CAAuC,CAAvC,EAA0C,GAA1C,CAJa,EAKb4e,IAAA,CAAK6kF,aAAL,GAAqB1jG,QAArB,GAAgCC,QAAhC,CAAyC,CAAzC,EAA4C,GAA5C,CALa,EAMb4e,IAAA,CAAK8kF,aAAL,GAAqB3jG,QAArB,GAAgCC,QAAhC,CAAyC,CAAzC,EAA4C,GAA5C,CANa,CAAf;EASA,OAAOqtB,MAAA,CAAO/rB,IAAP,CAAY,EAAZ,CAAP;AAV8C;AAahD,MAAMmkB,iBAAN,CAAwB;EACtB,CAAA0Z,OAAA,GAAW,KAAX;EAEAt4B,YAAA,EAAc;IAIZ,KAAKglB,OAAL,GAAe,IAAIM,OAAJ,CAAY,CAACC,OAAD,EAAUe,MAAV,KAAqB;MAI9C,KAAKf,OAAL,GAAexoB,IAAA,IAAQ;QACrB,KAAK,CAAAu7B,OAAL,GAAgB,IAAhB;QACA/S,OAAA,CAAQxoB,IAAR;MAFqB,CAAvB;MAQA,KAAKupB,MAAL,GAAcmI,MAAA,IAAU;QAItB,KAAK,CAAA6J,OAAL,GAAgB,IAAhB;QACAhS,MAAA,CAAOmI,MAAP;MALsB,CAAxB;IAZ8C,CAAjC,CAAf;EAJY;EA6Bd,IAAI6J,OAAJA,CAAA,EAAc;IACZ,OAAO,KAAK,CAAAA,OAAZ;EADY;AAhCQ;AAqCxB,IAAIwkE,cAAA,GAAiB,IAArB;AACA,IAAIC,gBAAA,GAAmB,IAAvB;AACA,SAASxO,gBAATA,CAA0BhtF,GAA1B,EAA+B;EAC7B,IAAI,CAACu7F,cAAL,EAAqB;IAOnBA,cAAA,GACE,0UADF;IAEAC,gBAAA,GAAmB,IAAIxwF,GAAJ,CAAQ,CAAC,CAAC,GAAD,EAAM,IAAN,CAAD,CAAR,CAAnB;EATmB;EAWrB,OAAOhL,GAAA,CAAImQ,UAAJ,CAAeorF,cAAf,EAA+B,CAACE,CAAD,EAAI/9D,EAAJ,EAAQC,EAAR,KAAe;IACnD,OAAOD,EAAA,GAAKA,EAAA,CAAGg+D,SAAH,CAAa,MAAb,CAAL,GAA4BF,gBAAA,CAAiBvwF,GAAjB,CAAqB0yB,EAArB,CAAnC;EADmD,CAA9C,CAAP;AAZ6B;AAiB/B,SAASoyC,OAATA,CAAA,EAAmB;EACjB,IAEG,OAAO4rB,MAAP,KAAkB,WAAlB,IAAiC,OAAOA,MAAA,EAAQC,UAAf,KAA8B,UAFlE,EAGE;IACA,OAAOD,MAAA,CAAOC,UAAP,EAAP;EADA;EAGF,MAAMC,GAAA,GAAM,IAAIx2E,UAAJ,CAAe,EAAf,CAAZ;EACA,IACE,OAAOs2E,MAAP,KAAkB,WAAlB,IACA,OAAOA,MAAA,EAAQG,eAAf,KAAmC,UAFrC,EAGE;IACAH,MAAA,CAAOG,eAAP,CAAuBD,GAAvB;EADA,CAHF,MAKO;IACL,KAAK,IAAI1nF,CAAA,GAAI,CAAR,EAAWA,CAAA,GAAI,EAApB,EAAwBA,CAAA,EAAxB,EAA6B;MAC3B0nF,GAAA,CAAI1nF,CAAJ,IAAS5c,IAAA,CAAKC,KAAL,CAAWD,IAAA,CAAKwkG,MAAL,KAAgB,GAA3B,CAAT;IAD2B;EADxB;EAKP,OAAO5hB,aAAA,CAAc0hB,GAAd,CAAP;AAlBiB;AAqBnB,MAAM/hG,gBAAA,GAAmB,oBAAzB;;;;;;;SC7iCA;SACA;;SAEA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;SACA;;SAEA;SACA;;SAEA;SACA;SACA;;;;;UCtBA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA,IAAI;UACJ;UACA;UACA,IAAI;UACJ;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA,CAAC;UACD;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA,EAAE;UACF;UACA,sGAAsG;UACtG;UACA;UACA;UACA;UACA;UACA;UACA;UACA,GAAG;UACH;UACA;UACA;UACA;UACA;UACA,GAAG;UACH;UACA,EAAE;UACF;UACA;;;;;UChEA;UACA;UACA;UACA;UACA,yCAAyC,wCAAwC;UACjF;UACA;UACA;;;;;UCPA;;;;;SEAA;SACA;SACA;SACA","sources":["webpack://pdf.js/src/shared/scripting_utils.js","webpack://pdf.js/src/display/annotation_layer.js","webpack://pdf.js/src/display/annotation_storage.js","webpack://pdf.js/src/display/api.js","webpack://pdf.js/src/display/base_factory.js","webpack://pdf.js/src/display/pattern_helper.js","webpack://pdf.js/src/shared/image_utils.js","webpack://pdf.js/src/display/canvas.js","webpack://pdf.js/src/display/display_utils.js","webpack://pdf.js/src/display/draw_layer.js","webpack://pdf.js/src/display/editor/freetext.js","webpack://pdf.js/src/display/editor/ink.js","webpack://pdf.js/src/display/editor/stamp.js","webpack://pdf.js/src/display/editor/annotation_editor_layer.js","webpack://pdf.js/src/display/editor/toolbar.js","webpack://pdf.js/src/display/editor/editor.js","webpack://pdf.js/src/display/editor/outliner.js","webpack://pdf.js/src/display/editor/tools.js","webpack://pdf.js/src/display/fetch_stream.js","webpack://pdf.js/src/display/font_loader.js","webpack://pdf.js/src/display/metadata.js","webpack://pdf.js/src/display/network.js","webpack://pdf.js/src/display/content_disposition.js","webpack://pdf.js/src/display/network_utils.js","webpack://pdf.js/src/display/node_stream.js","webpack://pdf.js/src/display/node_utils.js","webpack://pdf.js/src/display/optional_content_config.js","webpack://pdf.js/src/display/text_layer.js","webpack://pdf.js/src/display/transport_stream.js","webpack://pdf.js/src/display/worker_options.js","webpack://pdf.js/src/display/xfa_layer.js","webpack://pdf.js/src/display/xfa_text.js","webpack://pdf.js/src/pdf.js","webpack://pdf.js/src/shared/message_handler.js","webpack://pdf.js/src/shared/murmurhash3.js","webpack://pdf.js/src/shared/util.js","webpack://pdf.js/webpack/bootstrap","webpack://pdf.js/webpack/runtime/async module","webpack://pdf.js/webpack/runtime/define property getters","webpack://pdf.js/webpack/runtime/hasOwnProperty shorthand","webpack://pdf.js/webpack/before-startup","webpack://pdf.js/webpack/startup","webpack://pdf.js/webpack/after-startup"],"sourcesContent":["/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * PLEASE NOTE: This file is currently imported in both the `../display/` and\n * `../scripting_api/` folders, hence be EXTREMELY careful about\n * introducing any dependencies here since that can lead to an\n * unexpected/unnecessary size increase of the *built* files.\n */\n\nfunction makeColorComp(n) {\n return Math.floor(Math.max(0, Math.min(1, n)) * 255)\n .toString(16)\n .padStart(2, \"0\");\n}\n\nfunction scaleAndClamp(x) {\n return Math.max(0, Math.min(255, 255 * x));\n}\n\n// PDF specifications section 10.3\nclass ColorConverters {\n static CMYK_G([c, y, m, k]) {\n return [\"G\", 1 - Math.min(1, 0.3 * c + 0.59 * m + 0.11 * y + k)];\n }\n\n static G_CMYK([g]) {\n return [\"CMYK\", 0, 0, 0, 1 - g];\n }\n\n static G_RGB([g]) {\n return [\"RGB\", g, g, g];\n }\n\n static G_rgb([g]) {\n g = scaleAndClamp(g);\n return [g, g, g];\n }\n\n static G_HTML([g]) {\n const G = makeColorComp(g);\n return `#${G}${G}${G}`;\n }\n\n static RGB_G([r, g, b]) {\n return [\"G\", 0.3 * r + 0.59 * g + 0.11 * b];\n }\n\n static RGB_rgb(color) {\n return color.map(scaleAndClamp);\n }\n\n static RGB_HTML(color) {\n return `#${color.map(makeColorComp).join(\"\")}`;\n }\n\n static T_HTML() {\n return \"#00000000\";\n }\n\n static T_rgb() {\n return [null];\n }\n\n static CMYK_RGB([c, y, m, k]) {\n return [\n \"RGB\",\n 1 - Math.min(1, c + k),\n 1 - Math.min(1, m + k),\n 1 - Math.min(1, y + k),\n ];\n }\n\n static CMYK_rgb([c, y, m, k]) {\n return [\n scaleAndClamp(1 - Math.min(1, c + k)),\n scaleAndClamp(1 - Math.min(1, m + k)),\n scaleAndClamp(1 - Math.min(1, y + k)),\n ];\n }\n\n static CMYK_HTML(components) {\n const rgb = this.CMYK_RGB(components).slice(1);\n return this.RGB_HTML(rgb);\n }\n\n static RGB_CMYK([r, g, b]) {\n const c = 1 - r;\n const m = 1 - g;\n const y = 1 - b;\n const k = Math.min(c, m, y);\n return [\"CMYK\", c, m, y, k];\n }\n}\n\nexport { ColorConverters };\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./api\").PDFPageProxy} PDFPageProxy */\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../../web/text_accessibility.js\").TextAccessibilityManager} TextAccessibilityManager */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../../web/interfaces\").IDownloadManager} IDownloadManager */\n/** @typedef {import(\"../../web/interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport {\n AnnotationBorderStyleType,\n AnnotationEditorType,\n AnnotationPrefix,\n AnnotationType,\n FeatureTest,\n LINE_FACTOR,\n shadow,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n DOMSVGFactory,\n getFilenameFromUrl,\n PDFDateString,\n setLayerDimensions,\n} from \"./display_utils.js\";\nimport { AnnotationStorage } from \"./annotation_storage.js\";\nimport { ColorConverters } from \"../shared/scripting_utils.js\";\nimport { XfaLayer } from \"./xfa_layer.js\";\n\nconst DEFAULT_TAB_INDEX = 1000;\nconst DEFAULT_FONT_SIZE = 9;\nconst GetElementsByNameSet = new WeakSet();\n\nfunction getRectDims(rect) {\n return {\n width: rect[2] - rect[0],\n height: rect[3] - rect[1],\n };\n}\n\n/**\n * @typedef {Object} AnnotationElementParameters\n * @property {Object} data\n * @property {HTMLDivElement} layer\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} [downloadManager]\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {Object} svgFactory\n * @property {boolean} [enableScripting]\n * @property {boolean} [hasJSActions]\n * @property {Object} [fieldObjects]\n */\n\nclass AnnotationElementFactory {\n /**\n * @param {AnnotationElementParameters} parameters\n * @returns {AnnotationElement}\n */\n static create(parameters) {\n const subtype = parameters.data.annotationType;\n\n switch (subtype) {\n case AnnotationType.LINK:\n return new LinkAnnotationElement(parameters);\n\n case AnnotationType.TEXT:\n return new TextAnnotationElement(parameters);\n\n case AnnotationType.WIDGET:\n const fieldType = parameters.data.fieldType;\n\n switch (fieldType) {\n case \"Tx\":\n return new TextWidgetAnnotationElement(parameters);\n case \"Btn\":\n if (parameters.data.radioButton) {\n return new RadioButtonWidgetAnnotationElement(parameters);\n } else if (parameters.data.checkBox) {\n return new CheckboxWidgetAnnotationElement(parameters);\n }\n return new PushButtonWidgetAnnotationElement(parameters);\n case \"Ch\":\n return new ChoiceWidgetAnnotationElement(parameters);\n case \"Sig\":\n return new SignatureWidgetAnnotationElement(parameters);\n }\n return new WidgetAnnotationElement(parameters);\n\n case AnnotationType.POPUP:\n return new PopupAnnotationElement(parameters);\n\n case AnnotationType.FREETEXT:\n return new FreeTextAnnotationElement(parameters);\n\n case AnnotationType.LINE:\n return new LineAnnotationElement(parameters);\n\n case AnnotationType.SQUARE:\n return new SquareAnnotationElement(parameters);\n\n case AnnotationType.CIRCLE:\n return new CircleAnnotationElement(parameters);\n\n case AnnotationType.POLYLINE:\n return new PolylineAnnotationElement(parameters);\n\n case AnnotationType.CARET:\n return new CaretAnnotationElement(parameters);\n\n case AnnotationType.INK:\n return new InkAnnotationElement(parameters);\n\n case AnnotationType.POLYGON:\n return new PolygonAnnotationElement(parameters);\n\n case AnnotationType.HIGHLIGHT:\n return new HighlightAnnotationElement(parameters);\n\n case AnnotationType.UNDERLINE:\n return new UnderlineAnnotationElement(parameters);\n\n case AnnotationType.SQUIGGLY:\n return new SquigglyAnnotationElement(parameters);\n\n case AnnotationType.STRIKEOUT:\n return new StrikeOutAnnotationElement(parameters);\n\n case AnnotationType.STAMP:\n return new StampAnnotationElement(parameters);\n\n case AnnotationType.FILEATTACHMENT:\n return new FileAttachmentAnnotationElement(parameters);\n\n default:\n return new AnnotationElement(parameters);\n }\n }\n}\n\nclass AnnotationElement {\n #hasBorder = false;\n\n constructor(\n parameters,\n {\n isRenderable = false,\n ignoreBorder = false,\n createQuadrilaterals = false,\n } = {}\n ) {\n this.isRenderable = isRenderable;\n this.data = parameters.data;\n this.layer = parameters.layer;\n this.linkService = parameters.linkService;\n this.downloadManager = parameters.downloadManager;\n this.imageResourcesPath = parameters.imageResourcesPath;\n this.renderForms = parameters.renderForms;\n this.svgFactory = parameters.svgFactory;\n this.annotationStorage = parameters.annotationStorage;\n this.enableScripting = parameters.enableScripting;\n this.hasJSActions = parameters.hasJSActions;\n this._fieldObjects = parameters.fieldObjects;\n this.parent = parameters.parent;\n\n if (isRenderable) {\n this.container = this._createContainer(ignoreBorder);\n }\n if (createQuadrilaterals) {\n this._createQuadrilaterals();\n }\n }\n\n static _hasPopupData({ titleObj, contentsObj, richText }) {\n return !!(titleObj?.str || contentsObj?.str || richText?.str);\n }\n\n get hasPopupData() {\n return AnnotationElement._hasPopupData(this.data);\n }\n\n /**\n * Create an empty container for the annotation's HTML element.\n *\n * @private\n * @param {boolean} ignoreBorder\n * @memberof AnnotationElement\n * @returns {HTMLElement} A section element.\n */\n _createContainer(ignoreBorder) {\n const {\n data,\n parent: { page, viewport },\n } = this;\n\n const container = document.createElement(\"section\");\n container.setAttribute(\"data-annotation-id\", data.id);\n if (!(this instanceof WidgetAnnotationElement)) {\n container.tabIndex = DEFAULT_TAB_INDEX;\n }\n\n // The accessibility manager will move the annotation in the DOM in\n // order to match the visual ordering.\n // But if an annotation is above an other one, then we must draw it\n // after the other one whatever the order is in the DOM, hence the\n // use of the z-index.\n container.style.zIndex = this.parent.zIndex++;\n\n if (this.data.popupRef) {\n container.setAttribute(\"aria-haspopup\", \"dialog\");\n }\n\n if (data.noRotate) {\n container.classList.add(\"norotate\");\n }\n\n const { pageWidth, pageHeight, pageX, pageY } = viewport.rawDims;\n\n if (!data.rect || this instanceof PopupAnnotationElement) {\n const { rotation } = data;\n if (!data.hasOwnCanvas && rotation !== 0) {\n this.setRotation(rotation, container);\n }\n return container;\n }\n\n const { width, height } = getRectDims(data.rect);\n\n // Do *not* modify `data.rect`, since that will corrupt the annotation\n // position on subsequent calls to `_createContainer` (see issue 6804).\n const rect = Util.normalizeRect([\n data.rect[0],\n page.view[3] - data.rect[1] + page.view[1],\n data.rect[2],\n page.view[3] - data.rect[3] + page.view[1],\n ]);\n\n if (!ignoreBorder && data.borderStyle.width > 0) {\n container.style.borderWidth = `${data.borderStyle.width}px`;\n\n const horizontalRadius = data.borderStyle.horizontalCornerRadius;\n const verticalRadius = data.borderStyle.verticalCornerRadius;\n if (horizontalRadius > 0 || verticalRadius > 0) {\n const radius = `calc(${horizontalRadius}px * var(--scale-factor)) / calc(${verticalRadius}px * var(--scale-factor))`;\n container.style.borderRadius = radius;\n } else if (this instanceof RadioButtonWidgetAnnotationElement) {\n const radius = `calc(${width}px * var(--scale-factor)) / calc(${height}px * var(--scale-factor))`;\n container.style.borderRadius = radius;\n }\n\n switch (data.borderStyle.style) {\n case AnnotationBorderStyleType.SOLID:\n container.style.borderStyle = \"solid\";\n break;\n\n case AnnotationBorderStyleType.DASHED:\n container.style.borderStyle = \"dashed\";\n break;\n\n case AnnotationBorderStyleType.BEVELED:\n warn(\"Unimplemented border style: beveled\");\n break;\n\n case AnnotationBorderStyleType.INSET:\n warn(\"Unimplemented border style: inset\");\n break;\n\n case AnnotationBorderStyleType.UNDERLINE:\n container.style.borderBottomStyle = \"solid\";\n break;\n\n default:\n break;\n }\n\n const borderColor = data.borderColor || null;\n if (borderColor) {\n this.#hasBorder = true;\n container.style.borderColor = Util.makeHexColor(\n borderColor[0] | 0,\n borderColor[1] | 0,\n borderColor[2] | 0\n );\n } else {\n // Transparent (invisible) border, so do not draw it at all.\n container.style.borderWidth = 0;\n }\n }\n\n container.style.left = `${(100 * (rect[0] - pageX)) / pageWidth}%`;\n container.style.top = `${(100 * (rect[1] - pageY)) / pageHeight}%`;\n\n const { rotation } = data;\n if (data.hasOwnCanvas || rotation === 0) {\n container.style.width = `${(100 * width) / pageWidth}%`;\n container.style.height = `${(100 * height) / pageHeight}%`;\n } else {\n this.setRotation(rotation, container);\n }\n\n return container;\n }\n\n setRotation(angle, container = this.container) {\n if (!this.data.rect) {\n return;\n }\n const { pageWidth, pageHeight } = this.parent.viewport.rawDims;\n const { width, height } = getRectDims(this.data.rect);\n\n let elementWidth, elementHeight;\n if (angle % 180 === 0) {\n elementWidth = (100 * width) / pageWidth;\n elementHeight = (100 * height) / pageHeight;\n } else {\n elementWidth = (100 * height) / pageWidth;\n elementHeight = (100 * width) / pageHeight;\n }\n\n container.style.width = `${elementWidth}%`;\n container.style.height = `${elementHeight}%`;\n\n container.setAttribute(\"data-main-rotation\", (360 - angle) % 360);\n }\n\n get _commonActions() {\n const setColor = (jsName, styleName, event) => {\n const color = event.detail[jsName];\n const colorType = color[0];\n const colorArray = color.slice(1);\n event.target.style[styleName] =\n ColorConverters[`${colorType}_HTML`](colorArray);\n this.annotationStorage.setValue(this.data.id, {\n [styleName]: ColorConverters[`${colorType}_rgb`](colorArray),\n });\n };\n\n return shadow(this, \"_commonActions\", {\n display: event => {\n const { display } = event.detail;\n // See scripting/constants.js for the values of `Display`.\n // 0 = visible, 1 = hidden, 2 = noPrint and 3 = noView.\n const hidden = display % 2 === 1;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noView: hidden,\n noPrint: display === 1 || display === 2,\n });\n },\n print: event => {\n this.annotationStorage.setValue(this.data.id, {\n noPrint: !event.detail.print,\n });\n },\n hidden: event => {\n const { hidden } = event.detail;\n this.container.style.visibility = hidden ? \"hidden\" : \"visible\";\n this.annotationStorage.setValue(this.data.id, {\n noPrint: hidden,\n noView: hidden,\n });\n },\n focus: event => {\n setTimeout(() => event.target.focus({ preventScroll: false }), 0);\n },\n userName: event => {\n // tooltip\n event.target.title = event.detail.userName;\n },\n readonly: event => {\n event.target.disabled = event.detail.readonly;\n },\n required: event => {\n this._setRequired(event.target, event.detail.required);\n },\n bgColor: event => {\n setColor(\"bgColor\", \"backgroundColor\", event);\n },\n fillColor: event => {\n setColor(\"fillColor\", \"backgroundColor\", event);\n },\n fgColor: event => {\n setColor(\"fgColor\", \"color\", event);\n },\n textColor: event => {\n setColor(\"textColor\", \"color\", event);\n },\n borderColor: event => {\n setColor(\"borderColor\", \"borderColor\", event);\n },\n strokeColor: event => {\n setColor(\"strokeColor\", \"borderColor\", event);\n },\n rotation: event => {\n const angle = event.detail.rotation;\n this.setRotation(angle);\n this.annotationStorage.setValue(this.data.id, {\n rotation: angle,\n });\n },\n });\n }\n\n _dispatchEventFromSandbox(actions, jsEvent) {\n const commonActions = this._commonActions;\n for (const name of Object.keys(jsEvent.detail)) {\n const action = actions[name] || commonActions[name];\n action?.(jsEvent);\n }\n }\n\n _setDefaultPropertiesFromJS(element) {\n if (!this.enableScripting) {\n return;\n }\n\n // Some properties may have been updated thanks to JS.\n const storedData = this.annotationStorage.getRawValue(this.data.id);\n if (!storedData) {\n return;\n }\n\n const commonActions = this._commonActions;\n for (const [actionName, detail] of Object.entries(storedData)) {\n const action = commonActions[actionName];\n if (action) {\n const eventProxy = {\n detail: {\n [actionName]: detail,\n },\n target: element,\n };\n action(eventProxy);\n // The action has been consumed: no need to keep it.\n delete storedData[actionName];\n }\n }\n }\n\n /**\n * Create quadrilaterals from the annotation's quadpoints.\n *\n * @private\n * @memberof AnnotationElement\n */\n _createQuadrilaterals() {\n if (!this.container) {\n return;\n }\n const { quadPoints } = this.data;\n if (!quadPoints) {\n return;\n }\n\n const [rectBlX, rectBlY, rectTrX, rectTrY] = this.data.rect;\n\n if (quadPoints.length === 1) {\n const [, { x: trX, y: trY }, { x: blX, y: blY }] = quadPoints[0];\n if (\n rectTrX === trX &&\n rectTrY === trY &&\n rectBlX === blX &&\n rectBlY === blY\n ) {\n // The quadpoints cover the whole annotation rectangle, so no need to\n // create a quadrilateral.\n return;\n }\n }\n\n const { style } = this.container;\n let svgBuffer;\n if (this.#hasBorder) {\n const { borderColor, borderWidth } = style;\n style.borderWidth = 0;\n svgBuffer = [\n \"url('data:image/svg+xml;utf8,\",\n `<svg xmlns=\"http://www.w3.org/2000/svg\"`,\n ` preserveAspectRatio=\"none\" viewBox=\"0 0 1 1\">`,\n `<g fill=\"transparent\" stroke=\"${borderColor}\" stroke-width=\"${borderWidth}\">`,\n ];\n this.container.classList.add(\"hasBorder\");\n }\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n this.container.classList.add(\"hasClipPath\");\n }\n\n const width = rectTrX - rectBlX;\n const height = rectTrY - rectBlY;\n\n const { svgFactory } = this;\n const svg = svgFactory.createElement(\"svg\");\n svg.classList.add(\"quadrilateralsContainer\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n const defs = svgFactory.createElement(\"defs\");\n svg.append(defs);\n const clipPath = svgFactory.createElement(\"clipPath\");\n const id = `clippath_${this.data.id}`;\n clipPath.setAttribute(\"id\", id);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n defs.append(clipPath);\n\n for (const [, { x: trX, y: trY }, { x: blX, y: blY }] of quadPoints) {\n const rect = svgFactory.createElement(\"rect\");\n const x = (blX - rectBlX) / width;\n const y = (rectTrY - trY) / height;\n const rectWidth = (trX - blX) / width;\n const rectHeight = (trY - blY) / height;\n rect.setAttribute(\"x\", x);\n rect.setAttribute(\"y\", y);\n rect.setAttribute(\"width\", rectWidth);\n rect.setAttribute(\"height\", rectHeight);\n clipPath.append(rect);\n svgBuffer?.push(\n `<rect vector-effect=\"non-scaling-stroke\" x=\"${x}\" y=\"${y}\" width=\"${rectWidth}\" height=\"${rectHeight}\"/>`\n );\n }\n\n if (this.#hasBorder) {\n svgBuffer.push(`</g></svg>')`);\n style.backgroundImage = svgBuffer.join(\"\");\n }\n\n this.container.append(svg);\n this.container.style.clipPath = `url(#${id})`;\n }\n\n /**\n * Create a popup for the annotation's HTML element. This is used for\n * annotations that do not have a Popup entry in the dictionary, but\n * are of a type that works with popups (such as Highlight annotations).\n *\n * @private\n * @memberof AnnotationElement\n */\n _createPopup() {\n const { container, data } = this;\n container.setAttribute(\"aria-haspopup\", \"dialog\");\n\n const popup = new PopupAnnotationElement({\n data: {\n color: data.color,\n titleObj: data.titleObj,\n modificationDate: data.modificationDate,\n contentsObj: data.contentsObj,\n richText: data.richText,\n parentRect: data.rect,\n borderStyle: 0,\n id: `popup_${data.id}`,\n rotation: data.rotation,\n },\n parent: this.parent,\n elements: [this],\n });\n this.parent.div.append(popup.render());\n }\n\n /**\n * Render the annotation's HTML element(s).\n *\n * @public\n * @memberof AnnotationElement\n */\n render() {\n unreachable(\"Abstract method `AnnotationElement.render` called\");\n }\n\n /**\n * @private\n * @returns {Array}\n */\n _getElementsByName(name, skipId = null) {\n const fields = [];\n\n if (this._fieldObjects) {\n const fieldObj = this._fieldObjects[name];\n if (fieldObj) {\n for (const { page, id, exportValues } of fieldObj) {\n if (page === -1) {\n continue;\n }\n if (id === skipId) {\n continue;\n }\n const exportValue =\n typeof exportValues === \"string\" ? exportValues : null;\n\n const domElement = document.querySelector(\n `[data-element-id=\"${id}\"]`\n );\n if (domElement && !GetElementsByNameSet.has(domElement)) {\n warn(`_getElementsByName - element not allowed: ${id}`);\n continue;\n }\n fields.push({ id, exportValue, domElement });\n }\n }\n return fields;\n }\n // Fallback to a regular DOM lookup, to ensure that the standalone\n // viewer components won't break.\n for (const domElement of document.getElementsByName(name)) {\n const { exportValue } = domElement;\n const id = domElement.getAttribute(\"data-element-id\");\n if (id === skipId) {\n continue;\n }\n if (!GetElementsByNameSet.has(domElement)) {\n continue;\n }\n fields.push({ id, exportValue, domElement });\n }\n return fields;\n }\n\n show() {\n if (this.container) {\n this.container.hidden = false;\n }\n this.popup?.maybeShow();\n }\n\n hide() {\n if (this.container) {\n this.container.hidden = true;\n }\n this.popup?.forceHide();\n }\n\n /**\n * Get the HTML element(s) which can trigger a popup when clicked or hovered.\n *\n * @public\n * @memberof AnnotationElement\n * @returns {Array<HTMLElement>|HTMLElement} An array of elements or an\n * element.\n */\n getElementsToTriggerPopup() {\n return this.container;\n }\n\n addHighlightArea() {\n const triggers = this.getElementsToTriggerPopup();\n if (Array.isArray(triggers)) {\n for (const element of triggers) {\n element.classList.add(\"highlightArea\");\n }\n } else {\n triggers.classList.add(\"highlightArea\");\n }\n }\n\n get _isEditable() {\n return false;\n }\n\n _editOnDoubleClick() {\n if (!this._isEditable) {\n return;\n }\n const {\n annotationEditorType: mode,\n data: { id: editId },\n } = this;\n this.container.addEventListener(\"dblclick\", () => {\n this.linkService.eventBus?.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode,\n editId,\n });\n });\n }\n}\n\nclass LinkAnnotationElement extends AnnotationElement {\n constructor(parameters, options = null) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: !!options?.ignoreBorder,\n createQuadrilaterals: true,\n });\n this.isTooltipOnly = parameters.data.isTooltipOnly;\n }\n\n render() {\n const { data, linkService } = this;\n const link = document.createElement(\"a\");\n link.setAttribute(\"data-element-id\", data.id);\n let isBound = false;\n\n if (data.url) {\n linkService.addLinkAttributes(link, data.url, data.newWindow);\n isBound = true;\n } else if (data.action) {\n this._bindNamedAction(link, data.action);\n isBound = true;\n } else if (data.attachment) {\n this.#bindAttachment(link, data.attachment, data.attachmentDest);\n isBound = true;\n } else if (data.setOCGState) {\n this.#bindSetOCGState(link, data.setOCGState);\n isBound = true;\n } else if (data.dest) {\n this._bindLink(link, data.dest);\n isBound = true;\n } else {\n if (\n data.actions &&\n (data.actions.Action ||\n data.actions[\"Mouse Up\"] ||\n data.actions[\"Mouse Down\"]) &&\n this.enableScripting &&\n this.hasJSActions\n ) {\n this._bindJSAction(link, data);\n isBound = true;\n }\n\n if (data.resetForm) {\n this._bindResetFormAction(link, data.resetForm);\n isBound = true;\n } else if (this.isTooltipOnly && !isBound) {\n this._bindLink(link, \"\");\n isBound = true;\n }\n }\n\n this.container.classList.add(\"linkAnnotation\");\n if (isBound) {\n this.container.append(link);\n }\n\n return this.container;\n }\n\n #setInternalLink() {\n this.container.setAttribute(\"data-internal-link\", \"\");\n }\n\n /**\n * Bind internal links to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} destination\n * @memberof LinkAnnotationElement\n */\n _bindLink(link, destination) {\n link.href = this.linkService.getDestinationHash(destination);\n link.onclick = () => {\n if (destination) {\n this.linkService.goToDestination(destination);\n }\n return false;\n };\n if (destination || destination === /* isTooltipOnly = */ \"\") {\n this.#setInternalLink();\n }\n }\n\n /**\n * Bind named actions to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} action\n * @memberof LinkAnnotationElement\n */\n _bindNamedAction(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeNamedAction(action);\n return false;\n };\n this.#setInternalLink();\n }\n\n /**\n * Bind attachments to the link element.\n * @param {Object} link\n * @param {Object} attachment\n * @param {str} [dest]\n */\n #bindAttachment(link, attachment, dest = null) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.downloadManager?.openOrDownloadData(\n attachment.content,\n attachment.filename,\n dest\n );\n return false;\n };\n this.#setInternalLink();\n }\n\n /**\n * Bind SetOCGState actions to the link element.\n * @param {Object} link\n * @param {Object} action\n */\n #bindSetOCGState(link, action) {\n link.href = this.linkService.getAnchorUrl(\"\");\n link.onclick = () => {\n this.linkService.executeSetOCGState(action);\n return false;\n };\n this.#setInternalLink();\n }\n\n /**\n * Bind JS actions to the link element.\n *\n * @private\n * @param {Object} link\n * @param {Object} data\n * @memberof LinkAnnotationElement\n */\n _bindJSAction(link, data) {\n link.href = this.linkService.getAnchorUrl(\"\");\n const map = new Map([\n [\"Action\", \"onclick\"],\n [\"Mouse Up\", \"onmouseup\"],\n [\"Mouse Down\", \"onmousedown\"],\n ]);\n for (const name of Object.keys(data.actions)) {\n const jsName = map.get(name);\n if (!jsName) {\n continue;\n }\n link[jsName] = () => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: data.id,\n name,\n },\n });\n return false;\n };\n }\n\n if (!link.onclick) {\n link.onclick = () => false;\n }\n this.#setInternalLink();\n }\n\n _bindResetFormAction(link, resetForm) {\n const otherClickAction = link.onclick;\n if (!otherClickAction) {\n link.href = this.linkService.getAnchorUrl(\"\");\n }\n this.#setInternalLink();\n\n if (!this._fieldObjects) {\n warn(\n `_bindResetFormAction - \"resetForm\" action not supported, ` +\n \"ensure that the `fieldObjects` parameter is provided.\"\n );\n if (!otherClickAction) {\n link.onclick = () => false;\n }\n return;\n }\n\n link.onclick = () => {\n otherClickAction?.();\n\n const {\n fields: resetFormFields,\n refs: resetFormRefs,\n include,\n } = resetForm;\n\n const allFields = [];\n if (resetFormFields.length !== 0 || resetFormRefs.length !== 0) {\n const fieldIds = new Set(resetFormRefs);\n for (const fieldName of resetFormFields) {\n const fields = this._fieldObjects[fieldName] || [];\n for (const { id } of fields) {\n fieldIds.add(id);\n }\n }\n for (const fields of Object.values(this._fieldObjects)) {\n for (const field of fields) {\n if (fieldIds.has(field.id) === include) {\n allFields.push(field);\n }\n }\n }\n } else {\n for (const fields of Object.values(this._fieldObjects)) {\n allFields.push(...fields);\n }\n }\n\n const storage = this.annotationStorage;\n const allIds = [];\n for (const field of allFields) {\n const { id } = field;\n allIds.push(id);\n switch (field.type) {\n case \"text\": {\n const value = field.defaultValue || \"\";\n storage.setValue(id, { value });\n break;\n }\n case \"checkbox\":\n case \"radiobutton\": {\n const value = field.defaultValue === field.exportValues;\n storage.setValue(id, { value });\n break;\n }\n case \"combobox\":\n case \"listbox\": {\n const value = field.defaultValue || \"\";\n storage.setValue(id, { value });\n break;\n }\n default:\n continue;\n }\n\n const domElement = document.querySelector(`[data-element-id=\"${id}\"]`);\n if (!domElement) {\n continue;\n } else if (!GetElementsByNameSet.has(domElement)) {\n warn(`_bindResetFormAction - element not allowed: ${id}`);\n continue;\n }\n domElement.dispatchEvent(new Event(\"resetform\"));\n }\n\n if (this.enableScripting) {\n // Update the values in the sandbox.\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: \"app\",\n ids: allIds,\n name: \"ResetForm\",\n },\n });\n }\n\n return false;\n };\n }\n}\n\nclass TextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: true });\n }\n\n render() {\n this.container.classList.add(\"textAnnotation\");\n\n const image = document.createElement(\"img\");\n image.src =\n this.imageResourcesPath +\n \"annotation-\" +\n this.data.name.toLowerCase() +\n \".svg\";\n image.setAttribute(\"data-l10n-id\", \"pdfjs-text-annotation-type\");\n image.setAttribute(\n \"data-l10n-args\",\n JSON.stringify({ type: this.data.name })\n );\n\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n this.container.append(image);\n return this.container;\n }\n}\n\nclass WidgetAnnotationElement extends AnnotationElement {\n render() {\n // Show only the container for unsupported field types.\n if (this.data.alternativeText) {\n this.container.title = this.data.alternativeText;\n }\n\n return this.container;\n }\n\n showElementAndHideCanvas(element) {\n if (this.data.hasOwnCanvas) {\n if (element.previousSibling?.nodeName === \"CANVAS\") {\n element.previousSibling.hidden = true;\n }\n element.hidden = false;\n }\n }\n\n _getKeyModifier(event) {\n return FeatureTest.platform.isMac ? event.metaKey : event.ctrlKey;\n }\n\n _setEventListener(element, elementData, baseName, eventName, valueGetter) {\n if (baseName.includes(\"mouse\")) {\n // Mouse events\n element.addEventListener(baseName, event => {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n shift: event.shiftKey,\n modifier: this._getKeyModifier(event),\n },\n });\n });\n } else {\n // Non-mouse events\n element.addEventListener(baseName, event => {\n if (baseName === \"blur\") {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n elementData.focused = false;\n } else if (baseName === \"focus\") {\n if (elementData.focused) {\n return;\n }\n elementData.focused = true;\n }\n\n if (!valueGetter) {\n return;\n }\n\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id: this.data.id,\n name: eventName,\n value: valueGetter(event),\n },\n });\n });\n }\n }\n\n _setEventListeners(element, elementData, names, getter) {\n for (const [baseName, eventName] of names) {\n if (eventName === \"Action\" || this.data.actions?.[eventName]) {\n if (eventName === \"Focus\" || eventName === \"Blur\") {\n elementData ||= { focused: false };\n }\n this._setEventListener(\n element,\n elementData,\n baseName,\n eventName,\n getter\n );\n if (eventName === \"Focus\" && !this.data.actions?.Blur) {\n // Ensure that elementData will have the correct value.\n this._setEventListener(element, elementData, \"blur\", \"Blur\", null);\n } else if (eventName === \"Blur\" && !this.data.actions?.Focus) {\n this._setEventListener(element, elementData, \"focus\", \"Focus\", null);\n }\n }\n }\n }\n\n _setBackgroundColor(element) {\n const color = this.data.backgroundColor || null;\n element.style.backgroundColor =\n color === null\n ? \"transparent\"\n : Util.makeHexColor(color[0], color[1], color[2]);\n }\n\n /**\n * Apply text styles to the text in the element.\n *\n * @private\n * @param {HTMLDivElement} element\n * @memberof TextWidgetAnnotationElement\n */\n _setTextStyle(element) {\n const TEXT_ALIGNMENT = [\"left\", \"center\", \"right\"];\n const { fontColor } = this.data.defaultAppearanceData;\n const fontSize =\n this.data.defaultAppearanceData.fontSize || DEFAULT_FONT_SIZE;\n\n const style = element.style;\n\n // TODO: If the font-size is zero, calculate it based on the height and\n // width of the element.\n // Not setting `style.fontSize` will use the default font-size for now.\n\n // We don't use the font, as specified in the PDF document, for the <input>\n // element. Hence using the original `fontSize` could look bad, which is why\n // it's instead based on the field height.\n // If the height is \"big\" then it could lead to a too big font size\n // so in this case use the one we've in the pdf (hence the min).\n let computedFontSize;\n const BORDER_SIZE = 2;\n const roundToOneDecimal = x => Math.round(10 * x) / 10;\n if (this.data.multiLine) {\n const height = Math.abs(\n this.data.rect[3] - this.data.rect[1] - BORDER_SIZE\n );\n const numberOfLines = Math.round(height / (LINE_FACTOR * fontSize)) || 1;\n const lineHeight = height / numberOfLines;\n computedFontSize = Math.min(\n fontSize,\n roundToOneDecimal(lineHeight / LINE_FACTOR)\n );\n } else {\n const height = Math.abs(\n this.data.rect[3] - this.data.rect[1] - BORDER_SIZE\n );\n computedFontSize = Math.min(\n fontSize,\n roundToOneDecimal(height / LINE_FACTOR)\n );\n }\n style.fontSize = `calc(${computedFontSize}px * var(--scale-factor))`;\n\n style.color = Util.makeHexColor(fontColor[0], fontColor[1], fontColor[2]);\n\n if (this.data.textAlignment !== null) {\n style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];\n }\n }\n\n _setRequired(element, isRequired) {\n if (isRequired) {\n element.setAttribute(\"required\", true);\n } else {\n element.removeAttribute(\"required\");\n }\n element.setAttribute(\"aria-required\", isRequired);\n }\n}\n\nclass TextWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n const isRenderable =\n parameters.renderForms ||\n parameters.data.hasOwnCanvas ||\n (!parameters.data.hasAppearance && !!parameters.data.fieldValue);\n super(parameters, { isRenderable });\n }\n\n setPropertyOnSiblings(base, key, value, keyInStorage) {\n const storage = this.annotationStorage;\n for (const element of this._getElementsByName(\n base.name,\n /* skipId = */ base.id\n )) {\n if (element.domElement) {\n element.domElement[key] = value;\n }\n storage.setValue(element.id, { [keyInStorage]: value });\n }\n }\n\n render() {\n const storage = this.annotationStorage;\n const id = this.data.id;\n\n this.container.classList.add(\"textWidgetAnnotation\");\n\n let element = null;\n if (this.renderForms) {\n // NOTE: We cannot set the values using `element.value` below, since it\n // prevents the AnnotationLayer rasterizer in `test/driver.js`\n // from parsing the elements correctly for the reference tests.\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue,\n });\n let textContent = storedData.value || \"\";\n const maxLen = storage.getValue(id, {\n charLimit: this.data.maxLen,\n }).charLimit;\n if (maxLen && textContent.length > maxLen) {\n textContent = textContent.slice(0, maxLen);\n }\n\n let fieldFormattedValues =\n storedData.formattedValue || this.data.textContent?.join(\"\\n\") || null;\n if (fieldFormattedValues && this.data.comb) {\n fieldFormattedValues = fieldFormattedValues.replaceAll(/\\s+/g, \"\");\n }\n\n const elementData = {\n userValue: textContent,\n formattedValue: fieldFormattedValues,\n lastCommittedValue: null,\n commitKey: 1,\n focused: false,\n };\n\n if (this.data.multiLine) {\n element = document.createElement(\"textarea\");\n element.textContent = fieldFormattedValues ?? textContent;\n if (this.data.doNotScroll) {\n element.style.overflowY = \"hidden\";\n }\n } else {\n element = document.createElement(\"input\");\n element.type = \"text\";\n element.setAttribute(\"value\", fieldFormattedValues ?? textContent);\n if (this.data.doNotScroll) {\n element.style.overflowX = \"hidden\";\n }\n }\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n\n element.disabled = this.data.readOnly;\n element.name = this.data.fieldName;\n element.tabIndex = DEFAULT_TAB_INDEX;\n\n this._setRequired(element, this.data.required);\n\n if (maxLen) {\n element.maxLength = maxLen;\n }\n\n element.addEventListener(\"input\", event => {\n storage.setValue(id, { value: event.target.value });\n this.setPropertyOnSiblings(\n element,\n \"value\",\n event.target.value,\n \"value\"\n );\n elementData.formattedValue = null;\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue ?? \"\";\n element.value = elementData.userValue = defaultValue;\n elementData.formattedValue = null;\n });\n\n let blurListener = event => {\n const { formattedValue } = elementData;\n if (formattedValue !== null && formattedValue !== undefined) {\n event.target.value = formattedValue;\n }\n // Reset the cursor position to the start of the field (issue 12359).\n event.target.scrollLeft = 0;\n };\n\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"focus\", event => {\n if (elementData.focused) {\n return;\n }\n const { target } = event;\n if (elementData.userValue) {\n target.value = elementData.userValue;\n }\n elementData.lastCommittedValue = target.value;\n elementData.commitKey = 1;\n if (!this.data.actions?.Focus) {\n elementData.focused = true;\n }\n });\n\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n this.showElementAndHideCanvas(jsEvent.target);\n const actions = {\n value(event) {\n elementData.userValue = event.detail.value ?? \"\";\n storage.setValue(id, { value: elementData.userValue.toString() });\n event.target.value = elementData.userValue;\n },\n formattedValue(event) {\n const { formattedValue } = event.detail;\n elementData.formattedValue = formattedValue;\n if (\n formattedValue !== null &&\n formattedValue !== undefined &&\n event.target !== document.activeElement\n ) {\n // Input hasn't the focus so display formatted string\n event.target.value = formattedValue;\n }\n storage.setValue(id, {\n formattedValue,\n });\n },\n selRange(event) {\n event.target.setSelectionRange(...event.detail.selRange);\n },\n charLimit: event => {\n const { charLimit } = event.detail;\n const { target } = event;\n if (charLimit === 0) {\n target.removeAttribute(\"maxLength\");\n return;\n }\n\n target.setAttribute(\"maxLength\", charLimit);\n let value = elementData.userValue;\n if (!value || value.length <= charLimit) {\n return;\n }\n value = value.slice(0, charLimit);\n target.value = elementData.userValue = value;\n storage.setValue(id, { value });\n\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: 1,\n selStart: target.selectionStart,\n selEnd: target.selectionEnd,\n },\n });\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n // Even if the field hasn't any actions\n // leaving it can still trigger some actions with Calculate\n element.addEventListener(\"keydown\", event => {\n elementData.commitKey = 1;\n // If the key is one of Escape, Enter then the data are committed.\n // If we've a Tab then data will be committed on blur.\n let commitKey = -1;\n if (event.key === \"Escape\") {\n commitKey = 0;\n } else if (event.key === \"Enter\" && !this.data.multiLine) {\n // When we've a multiline field, \"Enter\" key is a key as the other\n // hence we don't commit the data (Acrobat behaves the same way)\n // (see issue #15627).\n commitKey = 2;\n } else if (event.key === \"Tab\") {\n elementData.commitKey = 3;\n }\n if (commitKey === -1) {\n return;\n }\n const { value } = event.target;\n if (elementData.lastCommittedValue === value) {\n return;\n }\n elementData.lastCommittedValue = value;\n // Save the entered value\n elementData.userValue = value;\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd,\n },\n });\n });\n const _blurListener = blurListener;\n blurListener = null;\n element.addEventListener(\"blur\", event => {\n if (!elementData.focused || !event.relatedTarget) {\n return;\n }\n if (!this.data.actions?.Blur) {\n elementData.focused = false;\n }\n const { value } = event.target;\n elementData.userValue = value;\n if (elementData.lastCommittedValue !== value) {\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n willCommit: true,\n commitKey: elementData.commitKey,\n selStart: event.target.selectionStart,\n selEnd: event.target.selectionEnd,\n },\n });\n }\n _blurListener(event);\n });\n\n if (this.data.actions?.Keystroke) {\n element.addEventListener(\"beforeinput\", event => {\n elementData.lastCommittedValue = null;\n const { data, target } = event;\n const { value, selectionStart, selectionEnd } = target;\n\n let selStart = selectionStart,\n selEnd = selectionEnd;\n\n switch (event.inputType) {\n // https://rawgit.com/w3c/input-events/v1/index.html#interface-InputEvent-Attributes\n case \"deleteWordBackward\": {\n const match = value\n .substring(0, selectionStart)\n .match(/\\w*[^\\w]*$/);\n if (match) {\n selStart -= match[0].length;\n }\n break;\n }\n case \"deleteWordForward\": {\n const match = value\n .substring(selectionStart)\n .match(/^[^\\w]*\\w*/);\n if (match) {\n selEnd += match[0].length;\n }\n break;\n }\n case \"deleteContentBackward\":\n if (selectionStart === selectionEnd) {\n selStart -= 1;\n }\n break;\n case \"deleteContentForward\":\n if (selectionStart === selectionEnd) {\n selEnd += 1;\n }\n break;\n }\n\n // We handle the event ourselves.\n event.preventDefault();\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value,\n change: data || \"\",\n willCommit: false,\n selStart,\n selEnd,\n },\n });\n });\n }\n\n this._setEventListeners(\n element,\n elementData,\n [\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.value\n );\n }\n\n if (blurListener) {\n element.addEventListener(\"blur\", blurListener);\n }\n\n if (this.data.comb) {\n const fieldWidth = this.data.rect[2] - this.data.rect[0];\n const combWidth = fieldWidth / maxLen;\n\n element.classList.add(\"comb\");\n element.style.letterSpacing = `calc(${combWidth}px * var(--scale-factor) - 1ch)`;\n }\n } else {\n element = document.createElement(\"div\");\n element.textContent = this.data.fieldValue;\n element.style.verticalAlign = \"middle\";\n element.style.display = \"table-cell\";\n\n if (this.data.hasOwnCanvas) {\n element.hidden = true;\n }\n }\n\n this._setTextStyle(element);\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n\n this.container.append(element);\n return this.container;\n }\n}\n\nclass SignatureWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: !!parameters.data.hasOwnCanvas });\n }\n}\n\nclass CheckboxWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: parameters.renderForms });\n }\n\n render() {\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.exportValue === data.fieldValue,\n }).value;\n if (typeof value === \"string\") {\n // The value has been changed through js and set in annotationStorage.\n value = value !== \"Off\";\n storage.setValue(id, { value });\n }\n\n this.container.classList.add(\"buttonWidgetAnnotation\", \"checkBox\");\n\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"checkbox\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.setAttribute(\"exportValue\", data.exportValue);\n element.tabIndex = DEFAULT_TAB_INDEX;\n\n element.addEventListener(\"change\", event => {\n const { name, checked } = event.target;\n for (const checkbox of this._getElementsByName(name, /* skipId = */ id)) {\n const curChecked = checked && checkbox.exportValue === data.exportValue;\n if (checkbox.domElement) {\n checkbox.domElement.checked = curChecked;\n }\n storage.setValue(checkbox.id, { value: curChecked });\n }\n storage.setValue(id, { value: checked });\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue || \"Off\";\n event.target.checked = defaultValue === data.exportValue;\n });\n\n if (this.enableScripting && this.hasJSActions) {\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n event.target.checked = event.detail.value !== \"Off\";\n storage.setValue(id, { value: event.target.checked });\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n this._setEventListeners(\n element,\n null,\n [\n [\"change\", \"Validate\"],\n [\"change\", \"Action\"],\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.checked\n );\n }\n\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n\n this.container.append(element);\n return this.container;\n }\n}\n\nclass RadioButtonWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: parameters.renderForms });\n }\n\n render() {\n this.container.classList.add(\"buttonWidgetAnnotation\", \"radioButton\");\n const storage = this.annotationStorage;\n const data = this.data;\n const id = data.id;\n let value = storage.getValue(id, {\n value: data.fieldValue === data.buttonValue,\n }).value;\n if (typeof value === \"string\") {\n // The value has been changed through js and set in annotationStorage.\n value = value !== data.buttonValue;\n storage.setValue(id, { value });\n }\n\n if (value) {\n // It's possible that multiple radio buttons are checked.\n // So if this one is checked we just reset the other ones.\n // (see bug 1864136). Then when the other ones will be rendered they will\n // unchecked (because of their value in the storage).\n // Consequently, the first checked radio button will be the only checked\n // one.\n for (const radio of this._getElementsByName(\n data.fieldName,\n /* skipId = */ id\n )) {\n storage.setValue(radio.id, { value: false });\n }\n }\n\n const element = document.createElement(\"input\");\n GetElementsByNameSet.add(element);\n element.setAttribute(\"data-element-id\", id);\n\n element.disabled = data.readOnly;\n this._setRequired(element, this.data.required);\n element.type = \"radio\";\n element.name = data.fieldName;\n if (value) {\n element.setAttribute(\"checked\", true);\n }\n element.tabIndex = DEFAULT_TAB_INDEX;\n\n element.addEventListener(\"change\", event => {\n const { name, checked } = event.target;\n for (const radio of this._getElementsByName(name, /* skipId = */ id)) {\n storage.setValue(radio.id, { value: false });\n }\n storage.setValue(id, { value: checked });\n });\n\n element.addEventListener(\"resetform\", event => {\n const defaultValue = data.defaultFieldValue;\n event.target.checked =\n defaultValue !== null &&\n defaultValue !== undefined &&\n defaultValue === data.buttonValue;\n });\n\n if (this.enableScripting && this.hasJSActions) {\n const pdfButtonValue = data.buttonValue;\n element.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value: event => {\n const checked = pdfButtonValue === event.detail.value;\n for (const radio of this._getElementsByName(event.target.name)) {\n const curChecked = checked && radio.id === id;\n if (radio.domElement) {\n radio.domElement.checked = curChecked;\n }\n storage.setValue(radio.id, { value: curChecked });\n }\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n this._setEventListeners(\n element,\n null,\n [\n [\"change\", \"Validate\"],\n [\"change\", \"Action\"],\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n ],\n event => event.target.checked\n );\n }\n\n this._setBackgroundColor(element);\n this._setDefaultPropertiesFromJS(element);\n\n this.container.append(element);\n return this.container;\n }\n}\n\nclass PushButtonWidgetAnnotationElement extends LinkAnnotationElement {\n constructor(parameters) {\n super(parameters, { ignoreBorder: parameters.data.hasAppearance });\n }\n\n render() {\n // The rendering and functionality of a push button widget annotation is\n // equal to that of a link annotation, but may have more functionality, such\n // as performing actions on form fields (resetting, submitting, et cetera).\n const container = super.render();\n container.classList.add(\"buttonWidgetAnnotation\", \"pushButton\");\n\n if (this.data.alternativeText) {\n container.title = this.data.alternativeText;\n }\n\n const linkElement = container.lastChild;\n if (this.enableScripting && this.hasJSActions && linkElement) {\n this._setDefaultPropertiesFromJS(linkElement);\n\n linkElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n this._dispatchEventFromSandbox({}, jsEvent);\n });\n }\n\n return container;\n }\n}\n\nclass ChoiceWidgetAnnotationElement extends WidgetAnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: parameters.renderForms });\n }\n\n render() {\n this.container.classList.add(\"choiceWidgetAnnotation\");\n const storage = this.annotationStorage;\n const id = this.data.id;\n\n const storedData = storage.getValue(id, {\n value: this.data.fieldValue,\n });\n\n const selectElement = document.createElement(\"select\");\n GetElementsByNameSet.add(selectElement);\n selectElement.setAttribute(\"data-element-id\", id);\n\n selectElement.disabled = this.data.readOnly;\n this._setRequired(selectElement, this.data.required);\n selectElement.name = this.data.fieldName;\n selectElement.tabIndex = DEFAULT_TAB_INDEX;\n\n let addAnEmptyEntry = this.data.combo && this.data.options.length > 0;\n\n if (!this.data.combo) {\n // List boxes have a size and (optionally) multiple selection.\n selectElement.size = this.data.options.length;\n if (this.data.multiSelect) {\n selectElement.multiple = true;\n }\n }\n\n selectElement.addEventListener(\"resetform\", event => {\n const defaultValue = this.data.defaultFieldValue;\n for (const option of selectElement.options) {\n option.selected = option.value === defaultValue;\n }\n });\n\n // Insert the options into the choice field.\n for (const option of this.data.options) {\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = option.displayValue;\n optionElement.value = option.exportValue;\n if (storedData.value.includes(option.exportValue)) {\n optionElement.setAttribute(\"selected\", true);\n addAnEmptyEntry = false;\n }\n selectElement.append(optionElement);\n }\n\n let removeEmptyEntry = null;\n if (addAnEmptyEntry) {\n const noneOptionElement = document.createElement(\"option\");\n noneOptionElement.value = \" \";\n noneOptionElement.setAttribute(\"hidden\", true);\n noneOptionElement.setAttribute(\"selected\", true);\n selectElement.prepend(noneOptionElement);\n\n removeEmptyEntry = () => {\n noneOptionElement.remove();\n selectElement.removeEventListener(\"input\", removeEmptyEntry);\n removeEmptyEntry = null;\n };\n selectElement.addEventListener(\"input\", removeEmptyEntry);\n }\n\n const getValue = isExport => {\n const name = isExport ? \"value\" : \"textContent\";\n const { options, multiple } = selectElement;\n if (!multiple) {\n return options.selectedIndex === -1\n ? null\n : options[options.selectedIndex][name];\n }\n return Array.prototype.filter\n .call(options, option => option.selected)\n .map(option => option[name]);\n };\n\n let selectedValues = getValue(/* isExport */ false);\n\n const getItems = event => {\n const options = event.target.options;\n return Array.prototype.map.call(options, option => {\n return { displayValue: option.textContent, exportValue: option.value };\n });\n };\n\n if (this.enableScripting && this.hasJSActions) {\n selectElement.addEventListener(\"updatefromsandbox\", jsEvent => {\n const actions = {\n value(event) {\n removeEmptyEntry?.();\n const value = event.detail.value;\n const values = new Set(Array.isArray(value) ? value : [value]);\n for (const option of selectElement.options) {\n option.selected = values.has(option.value);\n }\n storage.setValue(id, {\n value: getValue(/* isExport */ true),\n });\n selectedValues = getValue(/* isExport */ false);\n },\n multipleSelection(event) {\n selectElement.multiple = true;\n },\n remove(event) {\n const options = selectElement.options;\n const index = event.detail.remove;\n options[index].selected = false;\n selectElement.remove(index);\n if (options.length > 0) {\n const i = Array.prototype.findIndex.call(\n options,\n option => option.selected\n );\n if (i === -1) {\n options[0].selected = true;\n }\n }\n storage.setValue(id, {\n value: getValue(/* isExport */ true),\n items: getItems(event),\n });\n selectedValues = getValue(/* isExport */ false);\n },\n clear(event) {\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n storage.setValue(id, { value: null, items: [] });\n selectedValues = getValue(/* isExport */ false);\n },\n insert(event) {\n const { index, displayValue, exportValue } = event.detail.insert;\n const selectChild = selectElement.children[index];\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n\n if (selectChild) {\n selectChild.before(optionElement);\n } else {\n selectElement.append(optionElement);\n }\n storage.setValue(id, {\n value: getValue(/* isExport */ true),\n items: getItems(event),\n });\n selectedValues = getValue(/* isExport */ false);\n },\n items(event) {\n const { items } = event.detail;\n while (selectElement.length !== 0) {\n selectElement.remove(0);\n }\n for (const item of items) {\n const { displayValue, exportValue } = item;\n const optionElement = document.createElement(\"option\");\n optionElement.textContent = displayValue;\n optionElement.value = exportValue;\n selectElement.append(optionElement);\n }\n if (selectElement.options.length > 0) {\n selectElement.options[0].selected = true;\n }\n storage.setValue(id, {\n value: getValue(/* isExport */ true),\n items: getItems(event),\n });\n selectedValues = getValue(/* isExport */ false);\n },\n indices(event) {\n const indices = new Set(event.detail.indices);\n for (const option of event.target.options) {\n option.selected = indices.has(option.index);\n }\n storage.setValue(id, {\n value: getValue(/* isExport */ true),\n });\n selectedValues = getValue(/* isExport */ false);\n },\n editable(event) {\n event.target.disabled = !event.detail.editable;\n },\n };\n this._dispatchEventFromSandbox(actions, jsEvent);\n });\n\n selectElement.addEventListener(\"input\", event => {\n const exportValue = getValue(/* isExport */ true);\n storage.setValue(id, { value: exportValue });\n\n event.preventDefault();\n\n this.linkService.eventBus?.dispatch(\"dispatcheventinsandbox\", {\n source: this,\n detail: {\n id,\n name: \"Keystroke\",\n value: selectedValues,\n changeEx: exportValue,\n willCommit: false,\n commitKey: 1,\n keyDown: false,\n },\n });\n });\n\n this._setEventListeners(\n selectElement,\n null,\n [\n [\"focus\", \"Focus\"],\n [\"blur\", \"Blur\"],\n [\"mousedown\", \"Mouse Down\"],\n [\"mouseenter\", \"Mouse Enter\"],\n [\"mouseleave\", \"Mouse Exit\"],\n [\"mouseup\", \"Mouse Up\"],\n [\"input\", \"Action\"],\n [\"input\", \"Validate\"],\n ],\n event => event.target.value\n );\n } else {\n selectElement.addEventListener(\"input\", function (event) {\n storage.setValue(id, { value: getValue(/* isExport */ true) });\n });\n }\n\n if (this.data.combo) {\n this._setTextStyle(selectElement);\n } else {\n // Just use the default font size...\n // it's a bit hard to guess what is a good size.\n }\n this._setBackgroundColor(selectElement);\n this._setDefaultPropertiesFromJS(selectElement);\n\n this.container.append(selectElement);\n return this.container;\n }\n}\n\nclass PopupAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n const { data, elements } = parameters;\n super(parameters, { isRenderable: AnnotationElement._hasPopupData(data) });\n this.elements = elements;\n }\n\n render() {\n this.container.classList.add(\"popupAnnotation\");\n\n const popup = new PopupElement({\n container: this.container,\n color: this.data.color,\n titleObj: this.data.titleObj,\n modificationDate: this.data.modificationDate,\n contentsObj: this.data.contentsObj,\n richText: this.data.richText,\n rect: this.data.rect,\n parentRect: this.data.parentRect || null,\n parent: this.parent,\n elements: this.elements,\n open: this.data.open,\n });\n\n const elementIds = [];\n for (const element of this.elements) {\n element.popup = popup;\n elementIds.push(element.data.id);\n element.addHighlightArea();\n }\n\n this.container.setAttribute(\n \"aria-controls\",\n elementIds.map(id => `${AnnotationPrefix}${id}`).join(\",\")\n );\n\n return this.container;\n }\n}\n\nclass PopupElement {\n #boundKeyDown = this.#keyDown.bind(this);\n\n #boundHide = this.#hide.bind(this);\n\n #boundShow = this.#show.bind(this);\n\n #boundToggle = this.#toggle.bind(this);\n\n #color = null;\n\n #container = null;\n\n #contentsObj = null;\n\n #dateObj = null;\n\n #elements = null;\n\n #parent = null;\n\n #parentRect = null;\n\n #pinned = false;\n\n #popup = null;\n\n #rect = null;\n\n #richText = null;\n\n #titleObj = null;\n\n #wasVisible = false;\n\n constructor({\n container,\n color,\n elements,\n titleObj,\n modificationDate,\n contentsObj,\n richText,\n parent,\n rect,\n parentRect,\n open,\n }) {\n this.#container = container;\n this.#titleObj = titleObj;\n this.#contentsObj = contentsObj;\n this.#richText = richText;\n this.#parent = parent;\n this.#color = color;\n this.#rect = rect;\n this.#parentRect = parentRect;\n this.#elements = elements;\n\n // The modification date is shown in the popup instead of the creation\n // date if it is available and can be parsed correctly, which is\n // consistent with other viewers such as Adobe Acrobat.\n this.#dateObj = PDFDateString.toDateObject(modificationDate);\n\n this.trigger = elements.flatMap(e => e.getElementsToTriggerPopup());\n // Attach the event listeners to the trigger element.\n for (const element of this.trigger) {\n element.addEventListener(\"click\", this.#boundToggle);\n element.addEventListener(\"mouseenter\", this.#boundShow);\n element.addEventListener(\"mouseleave\", this.#boundHide);\n element.classList.add(\"popupTriggerArea\");\n }\n\n // Attach the event listener to toggle the popup with the keyboard.\n for (const element of elements) {\n element.container?.addEventListener(\"keydown\", this.#boundKeyDown);\n }\n\n this.#container.hidden = true;\n if (open) {\n this.#toggle();\n }\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n // Since the popup is lazily created, we need to ensure that it'll be\n // created and displayed during reference tests.\n this.#parent.popupShow.push(async () => {\n if (this.#container.hidden) {\n this.#show();\n }\n });\n }\n }\n\n render() {\n if (this.#popup) {\n return;\n }\n\n const {\n page: { view },\n viewport: {\n rawDims: { pageWidth, pageHeight, pageX, pageY },\n },\n } = this.#parent;\n const popup = (this.#popup = document.createElement(\"div\"));\n popup.className = \"popup\";\n\n if (this.#color) {\n const baseColor = (popup.style.outlineColor = Util.makeHexColor(\n ...this.#color\n ));\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n CSS.supports(\"background-color\", \"color-mix(in srgb, red 30%, white)\")\n ) {\n popup.style.backgroundColor = `color-mix(in srgb, ${baseColor} 30%, white)`;\n } else {\n // color-mix isn't supported in some browsers hence this version.\n // See https://developer.mozilla.org/en-US/docs/Web/CSS/color_value/color-mix#browser_compatibility\n // TODO: Use color-mix when it's supported everywhere.\n // Enlighten the color.\n const BACKGROUND_ENLIGHT = 0.7;\n popup.style.backgroundColor = Util.makeHexColor(\n ...this.#color.map(c =>\n Math.floor(BACKGROUND_ENLIGHT * (255 - c) + c)\n )\n );\n }\n }\n\n const header = document.createElement(\"span\");\n header.className = \"header\";\n const title = document.createElement(\"h1\");\n header.append(title);\n ({ dir: title.dir, str: title.textContent } = this.#titleObj);\n popup.append(header);\n\n if (this.#dateObj) {\n const modificationDate = document.createElement(\"span\");\n modificationDate.classList.add(\"popupDate\");\n modificationDate.setAttribute(\n \"data-l10n-id\",\n \"pdfjs-annotation-date-string\"\n );\n modificationDate.setAttribute(\n \"data-l10n-args\",\n JSON.stringify({\n date: this.#dateObj.toLocaleDateString(),\n time: this.#dateObj.toLocaleTimeString(),\n })\n );\n header.append(modificationDate);\n }\n\n const contentsObj = this.#contentsObj;\n const richText = this.#richText;\n if (\n richText?.str &&\n (!contentsObj?.str || contentsObj.str === richText.str)\n ) {\n XfaLayer.render({\n xfaHtml: richText.html,\n intent: \"richText\",\n div: popup,\n });\n popup.lastChild.classList.add(\"richText\", \"popupContent\");\n } else {\n const contents = this._formatContents(contentsObj);\n popup.append(contents);\n }\n\n let useParentRect = !!this.#parentRect;\n let rect = useParentRect ? this.#parentRect : this.#rect;\n for (const element of this.#elements) {\n if (!rect || Util.intersect(element.data.rect, rect) !== null) {\n rect = element.data.rect;\n useParentRect = true;\n break;\n }\n }\n\n const normalizedRect = Util.normalizeRect([\n rect[0],\n view[3] - rect[1] + view[1],\n rect[2],\n view[3] - rect[3] + view[1],\n ]);\n\n const HORIZONTAL_SPACE_AFTER_ANNOTATION = 5;\n const parentWidth = useParentRect\n ? rect[2] - rect[0] + HORIZONTAL_SPACE_AFTER_ANNOTATION\n : 0;\n const popupLeft = normalizedRect[0] + parentWidth;\n const popupTop = normalizedRect[1];\n\n const { style } = this.#container;\n style.left = `${(100 * (popupLeft - pageX)) / pageWidth}%`;\n style.top = `${(100 * (popupTop - pageY)) / pageHeight}%`;\n\n this.#container.append(popup);\n }\n\n /**\n * Format the contents of the popup by adding newlines where necessary.\n *\n * @private\n * @param {Object<string, string>} contentsObj\n * @memberof PopupElement\n * @returns {HTMLParagraphElement}\n */\n _formatContents({ str, dir }) {\n const p = document.createElement(\"p\");\n p.classList.add(\"popupContent\");\n p.dir = dir;\n const lines = str.split(/(?:\\r\\n?|\\n)/);\n for (let i = 0, ii = lines.length; i < ii; ++i) {\n const line = lines[i];\n p.append(document.createTextNode(line));\n if (i < ii - 1) {\n p.append(document.createElement(\"br\"));\n }\n }\n return p;\n }\n\n #keyDown(event) {\n if (event.altKey || event.shiftKey || event.ctrlKey || event.metaKey) {\n return;\n }\n\n if (event.key === \"Enter\" || (event.key === \"Escape\" && this.#pinned)) {\n this.#toggle();\n }\n }\n\n /**\n * Toggle the visibility of the popup.\n */\n #toggle() {\n this.#pinned = !this.#pinned;\n if (this.#pinned) {\n this.#show();\n this.#container.addEventListener(\"click\", this.#boundToggle);\n this.#container.addEventListener(\"keydown\", this.#boundKeyDown);\n } else {\n this.#hide();\n this.#container.removeEventListener(\"click\", this.#boundToggle);\n this.#container.removeEventListener(\"keydown\", this.#boundKeyDown);\n }\n }\n\n /**\n * Show the popup.\n */\n #show() {\n if (!this.#popup) {\n this.render();\n }\n if (!this.isVisible) {\n this.#container.hidden = false;\n this.#container.style.zIndex =\n parseInt(this.#container.style.zIndex) + 1000;\n } else if (this.#pinned) {\n this.#container.classList.add(\"focused\");\n }\n }\n\n /**\n * Hide the popup.\n */\n #hide() {\n this.#container.classList.remove(\"focused\");\n if (this.#pinned || !this.isVisible) {\n return;\n }\n this.#container.hidden = true;\n this.#container.style.zIndex =\n parseInt(this.#container.style.zIndex) - 1000;\n }\n\n forceHide() {\n this.#wasVisible = this.isVisible;\n if (!this.#wasVisible) {\n return;\n }\n this.#container.hidden = true;\n }\n\n maybeShow() {\n if (!this.#wasVisible) {\n return;\n }\n this.#wasVisible = false;\n this.#container.hidden = false;\n }\n\n get isVisible() {\n return this.#container.hidden === false;\n }\n}\n\nclass FreeTextAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n this.textContent = parameters.data.textContent;\n this.textPosition = parameters.data.textPosition;\n this.annotationEditorType = AnnotationEditorType.FREETEXT;\n }\n\n render() {\n this.container.classList.add(\"freeTextAnnotation\");\n\n if (this.textContent) {\n const content = document.createElement(\"div\");\n content.classList.add(\"annotationTextContent\");\n content.setAttribute(\"role\", \"comment\");\n for (const line of this.textContent) {\n const lineSpan = document.createElement(\"span\");\n lineSpan.textContent = line;\n content.append(lineSpan);\n }\n this.container.append(content);\n }\n\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n this._editOnDoubleClick();\n\n return this.container;\n }\n\n get _isEditable() {\n return this.data.hasOwnCanvas;\n }\n}\n\nclass LineAnnotationElement extends AnnotationElement {\n #line = null;\n\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n }\n\n render() {\n this.container.classList.add(\"lineAnnotation\");\n\n // Create an invisible line with the same starting and ending coordinates\n // that acts as the trigger for the popup. Only the line itself should\n // trigger the popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(\n width,\n height,\n /* skipDimensions = */ true\n );\n\n // PDF coordinates are calculated from a bottom left origin, so transform\n // the line coordinates to a top left origin for the SVG element.\n const line = (this.#line = this.svgFactory.createElement(\"svg:line\"));\n line.setAttribute(\"x1\", data.rect[2] - data.lineCoordinates[0]);\n line.setAttribute(\"y1\", data.rect[3] - data.lineCoordinates[1]);\n line.setAttribute(\"x2\", data.rect[2] - data.lineCoordinates[2]);\n line.setAttribute(\"y2\", data.rect[3] - data.lineCoordinates[3]);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n line.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n line.setAttribute(\"stroke\", \"transparent\");\n line.setAttribute(\"fill\", \"transparent\");\n\n svg.append(line);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the line instead\n // of to the entire container (which is the default).\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n return this.container;\n }\n\n getElementsToTriggerPopup() {\n return this.#line;\n }\n\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\n\nclass SquareAnnotationElement extends AnnotationElement {\n #square = null;\n\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n }\n\n render() {\n this.container.classList.add(\"squareAnnotation\");\n\n // Create an invisible square with the same rectangle that acts as the\n // trigger for the popup. Only the square itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(\n width,\n height,\n /* skipDimensions = */ true\n );\n\n // The browser draws half of the borders inside the square and half of\n // the borders outside the square by default. This behavior cannot be\n // changed programmatically, so correct for that here.\n const borderWidth = data.borderStyle.width;\n const square = (this.#square = this.svgFactory.createElement(\"svg:rect\"));\n square.setAttribute(\"x\", borderWidth / 2);\n square.setAttribute(\"y\", borderWidth / 2);\n square.setAttribute(\"width\", width - borderWidth);\n square.setAttribute(\"height\", height - borderWidth);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n square.setAttribute(\"stroke-width\", borderWidth || 1);\n square.setAttribute(\"stroke\", \"transparent\");\n square.setAttribute(\"fill\", \"transparent\");\n\n svg.append(square);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the square instead\n // of to the entire container (which is the default).\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n return this.container;\n }\n\n getElementsToTriggerPopup() {\n return this.#square;\n }\n\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\n\nclass CircleAnnotationElement extends AnnotationElement {\n #circle = null;\n\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n }\n\n render() {\n this.container.classList.add(\"circleAnnotation\");\n\n // Create an invisible circle with the same ellipse that acts as the\n // trigger for the popup. Only the circle itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(\n width,\n height,\n /* skipDimensions = */ true\n );\n\n // The browser draws half of the borders inside the circle and half of\n // the borders outside the circle by default. This behavior cannot be\n // changed programmatically, so correct for that here.\n const borderWidth = data.borderStyle.width;\n const circle = (this.#circle =\n this.svgFactory.createElement(\"svg:ellipse\"));\n circle.setAttribute(\"cx\", width / 2);\n circle.setAttribute(\"cy\", height / 2);\n circle.setAttribute(\"rx\", width / 2 - borderWidth / 2);\n circle.setAttribute(\"ry\", height / 2 - borderWidth / 2);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n circle.setAttribute(\"stroke-width\", borderWidth || 1);\n circle.setAttribute(\"stroke\", \"transparent\");\n circle.setAttribute(\"fill\", \"transparent\");\n\n svg.append(circle);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the circle instead\n // of to the entire container (which is the default).\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n return this.container;\n }\n\n getElementsToTriggerPopup() {\n return this.#circle;\n }\n\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\n\nclass PolylineAnnotationElement extends AnnotationElement {\n #polyline = null;\n\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n\n this.containerClassName = \"polylineAnnotation\";\n this.svgElementName = \"svg:polyline\";\n }\n\n render() {\n this.container.classList.add(this.containerClassName);\n\n // Create an invisible polyline with the same points that acts as the\n // trigger for the popup. Only the polyline itself should trigger the\n // popup, not the entire container.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(\n width,\n height,\n /* skipDimensions = */ true\n );\n\n // Convert the vertices array to a single points string that the SVG\n // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n // calculated from a bottom left origin, so transform the polyline\n // coordinates to a top left origin for the SVG element.\n let points = [];\n for (const coordinate of data.vertices) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(x + \",\" + y);\n }\n points = points.join(\" \");\n\n const polyline = (this.#polyline = this.svgFactory.createElement(\n this.svgElementName\n ));\n polyline.setAttribute(\"points\", points);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n\n svg.append(polyline);\n this.container.append(svg);\n\n // Create the popup ourselves so that we can bind it to the polyline\n // instead of to the entire container (which is the default).\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n return this.container;\n }\n\n getElementsToTriggerPopup() {\n return this.#polyline;\n }\n\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\n\nclass PolygonAnnotationElement extends PolylineAnnotationElement {\n constructor(parameters) {\n // Polygons are specific forms of polylines, so reuse their logic.\n super(parameters);\n\n this.containerClassName = \"polygonAnnotation\";\n this.svgElementName = \"svg:polygon\";\n }\n}\n\nclass CaretAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n }\n\n render() {\n this.container.classList.add(\"caretAnnotation\");\n\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n}\n\nclass InkAnnotationElement extends AnnotationElement {\n #polylines = [];\n\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n\n this.containerClassName = \"inkAnnotation\";\n\n // Use the polyline SVG element since it allows us to use coordinates\n // directly and to draw both straight lines and curves.\n this.svgElementName = \"svg:polyline\";\n this.annotationEditorType = AnnotationEditorType.INK;\n }\n\n render() {\n this.container.classList.add(this.containerClassName);\n\n // Create an invisible polyline with the same points that acts as the\n // trigger for the popup.\n const data = this.data;\n const { width, height } = getRectDims(data.rect);\n const svg = this.svgFactory.create(\n width,\n height,\n /* skipDimensions = */ true\n );\n\n for (const inkList of data.inkLists) {\n // Convert the ink list to a single points string that the SVG\n // polyline element expects (\"x1,y1 x2,y2 ...\"). PDF coordinates are\n // calculated from a bottom left origin, so transform the polyline\n // coordinates to a top left origin for the SVG element.\n let points = [];\n for (const coordinate of inkList) {\n const x = coordinate.x - data.rect[0];\n const y = data.rect[3] - coordinate.y;\n points.push(`${x},${y}`);\n }\n points = points.join(\" \");\n\n const polyline = this.svgFactory.createElement(this.svgElementName);\n this.#polylines.push(polyline);\n polyline.setAttribute(\"points\", points);\n // Ensure that the 'stroke-width' is always non-zero, since otherwise it\n // won't be possible to open/close the popup (note e.g. issue 11122).\n polyline.setAttribute(\"stroke-width\", data.borderStyle.width || 1);\n polyline.setAttribute(\"stroke\", \"transparent\");\n polyline.setAttribute(\"fill\", \"transparent\");\n\n // Create the popup ourselves so that we can bind it to the polyline\n // instead of to the entire container (which is the default).\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n svg.append(polyline);\n }\n\n this.container.append(svg);\n return this.container;\n }\n\n getElementsToTriggerPopup() {\n return this.#polylines;\n }\n\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n}\n\nclass HighlightAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n this.container.classList.add(\"highlightAnnotation\");\n return this.container;\n }\n}\n\nclass UnderlineAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n this.container.classList.add(\"underlineAnnotation\");\n return this.container;\n }\n}\n\nclass SquigglyAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n this.container.classList.add(\"squigglyAnnotation\");\n return this.container;\n }\n}\n\nclass StrikeOutAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, {\n isRenderable: true,\n ignoreBorder: true,\n createQuadrilaterals: true,\n });\n }\n\n render() {\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n\n this.container.classList.add(\"strikeoutAnnotation\");\n return this.container;\n }\n}\n\nclass StampAnnotationElement extends AnnotationElement {\n constructor(parameters) {\n super(parameters, { isRenderable: true, ignoreBorder: true });\n }\n\n render() {\n this.container.classList.add(\"stampAnnotation\");\n\n if (!this.data.popupRef && this.hasPopupData) {\n this._createPopup();\n }\n return this.container;\n }\n}\n\nclass FileAttachmentAnnotationElement extends AnnotationElement {\n #trigger = null;\n\n constructor(parameters) {\n super(parameters, { isRenderable: true });\n\n const { filename, content } = this.data.file;\n this.filename = getFilenameFromUrl(filename, /* onlyStripPath = */ true);\n this.content = content;\n\n this.linkService.eventBus?.dispatch(\"fileattachmentannotation\", {\n source: this,\n filename,\n content,\n });\n }\n\n render() {\n this.container.classList.add(\"fileAttachmentAnnotation\");\n\n const { container, data } = this;\n let trigger;\n if (data.hasAppearance || data.fillAlpha === 0) {\n trigger = document.createElement(\"div\");\n } else {\n // Unfortunately it seems that it's not clearly specified exactly what\n // names are actually valid, since Table 184 contains:\n // Conforming readers shall provide predefined icon appearances for at\n // least the following standard names: GraphPushPin, PaperclipTag.\n // Additional names may be supported as well. Default value: PushPin.\n trigger = document.createElement(\"img\");\n trigger.src = `${this.imageResourcesPath}annotation-${\n /paperclip/i.test(data.name) ? \"paperclip\" : \"pushpin\"\n }.svg`;\n\n if (data.fillAlpha && data.fillAlpha < 1) {\n trigger.style = `filter: opacity(${Math.round(\n data.fillAlpha * 100\n )}%);`;\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n this.container.classList.add(\"hasFillAlpha\");\n }\n }\n }\n trigger.addEventListener(\"dblclick\", this.#download.bind(this));\n this.#trigger = trigger;\n\n const { isMac } = FeatureTest.platform;\n container.addEventListener(\"keydown\", evt => {\n if (evt.key === \"Enter\" && (isMac ? evt.metaKey : evt.ctrlKey)) {\n this.#download();\n }\n });\n\n if (!data.popupRef && this.hasPopupData) {\n this._createPopup();\n } else {\n trigger.classList.add(\"popupTriggerArea\");\n }\n\n container.append(trigger);\n return container;\n }\n\n getElementsToTriggerPopup() {\n return this.#trigger;\n }\n\n addHighlightArea() {\n this.container.classList.add(\"highlightArea\");\n }\n\n /**\n * Download the file attachment associated with this annotation.\n */\n #download() {\n this.downloadManager?.openOrDownloadData(this.content, this.filename);\n }\n}\n\n/**\n * @typedef {Object} AnnotationLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Array} annotations\n * @property {PDFPageProxy} page\n * @property {IPDFLinkService} linkService\n * @property {IDownloadManager} downloadManager\n * @property {AnnotationStorage} [annotationStorage]\n * @property {string} [imageResourcesPath] - Path for image resources, mainly\n * for annotation icons. Include trailing slash.\n * @property {boolean} renderForms\n * @property {boolean} [enableScripting] - Enable embedded script execution.\n * @property {boolean} [hasJSActions] - Some fields have JS actions.\n * The default value is `false`.\n * @property {Object<string, Array<Object>> | null} [fieldObjects]\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap]\n * @property {TextAccessibilityManager} [accessibilityManager]\n */\n\n/**\n * Manage the layer containing all the annotations.\n */\nclass AnnotationLayer {\n #accessibilityManager = null;\n\n #annotationCanvasMap = null;\n\n #editableAnnotations = new Map();\n\n constructor({\n div,\n accessibilityManager,\n annotationCanvasMap,\n page,\n viewport,\n }) {\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationCanvasMap = annotationCanvasMap;\n this.page = page;\n this.viewport = viewport;\n this.zIndex = 0;\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n // For testing purposes.\n Object.defineProperty(this, \"showPopups\", {\n value: async () => {\n for (const show of this.popupShow) {\n await show();\n }\n },\n });\n this.popupShow = [];\n }\n }\n\n #appendElement(element, id) {\n const contentElement = element.firstChild || element;\n contentElement.id = `${AnnotationPrefix}${id}`;\n\n this.div.append(element);\n this.#accessibilityManager?.moveElementInDOM(\n this.div,\n element,\n contentElement,\n /* isRemovable = */ false\n );\n }\n\n /**\n * Render a new annotation layer with all annotation elements.\n *\n * @param {AnnotationLayerParameters} params\n * @memberof AnnotationLayer\n */\n async render(params) {\n const { annotations } = params;\n const layer = this.div;\n setLayerDimensions(layer, this.viewport);\n\n const popupToElements = new Map();\n const elementParams = {\n data: null,\n layer,\n linkService: params.linkService,\n downloadManager: params.downloadManager,\n imageResourcesPath: params.imageResourcesPath || \"\",\n renderForms: params.renderForms !== false,\n svgFactory: new DOMSVGFactory(),\n annotationStorage: params.annotationStorage || new AnnotationStorage(),\n enableScripting: params.enableScripting === true,\n hasJSActions: params.hasJSActions,\n fieldObjects: params.fieldObjects,\n parent: this,\n elements: null,\n };\n\n for (const data of annotations) {\n if (data.noHTML) {\n continue;\n }\n const isPopupAnnotation = data.annotationType === AnnotationType.POPUP;\n if (!isPopupAnnotation) {\n const { width, height } = getRectDims(data.rect);\n if (width <= 0 || height <= 0) {\n continue; // Ignore empty annotations.\n }\n } else {\n const elements = popupToElements.get(data.id);\n if (!elements) {\n // Ignore popup annotations without a corresponding annotation.\n continue;\n }\n elementParams.elements = elements;\n }\n elementParams.data = data;\n const element = AnnotationElementFactory.create(elementParams);\n\n if (!element.isRenderable) {\n continue;\n }\n\n if (!isPopupAnnotation && data.popupRef) {\n const elements = popupToElements.get(data.popupRef);\n if (!elements) {\n popupToElements.set(data.popupRef, [element]);\n } else {\n elements.push(element);\n }\n }\n\n if (element.annotationEditorType > 0) {\n this.#editableAnnotations.set(element.data.id, element);\n }\n\n const rendered = element.render();\n if (data.hidden) {\n rendered.style.visibility = \"hidden\";\n }\n this.#appendElement(rendered, data.id);\n }\n\n this.#setAnnotationCanvasMap();\n }\n\n /**\n * Update the annotation elements on existing annotation layer.\n *\n * @param {AnnotationLayerParameters} viewport\n * @memberof AnnotationLayer\n */\n update({ viewport }) {\n const layer = this.div;\n this.viewport = viewport;\n setLayerDimensions(layer, { rotation: viewport.rotation });\n\n this.#setAnnotationCanvasMap();\n layer.hidden = false;\n }\n\n #setAnnotationCanvasMap() {\n if (!this.#annotationCanvasMap) {\n return;\n }\n const layer = this.div;\n for (const [id, canvas] of this.#annotationCanvasMap) {\n const element = layer.querySelector(`[data-annotation-id=\"${id}\"]`);\n if (!element) {\n continue;\n }\n\n const { firstChild } = element;\n if (!firstChild) {\n element.append(canvas);\n } else if (firstChild.nodeName === \"CANVAS\") {\n firstChild.replaceWith(canvas);\n } else {\n firstChild.before(canvas);\n }\n }\n this.#annotationCanvasMap.clear();\n }\n\n getEditableAnnotations() {\n return Array.from(this.#editableAnnotations.values());\n }\n\n getEditableAnnotation(id) {\n return this.#editableAnnotations.get(id);\n }\n}\n\nexport {\n AnnotationLayer,\n FreeTextAnnotationElement,\n InkAnnotationElement,\n StampAnnotationElement,\n};\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { objectFromMap, unreachable } from \"../shared/util.js\";\nimport { AnnotationEditor } from \"./editor/editor.js\";\nimport { MurmurHash3_64 } from \"../shared/murmurhash3.js\";\n\nconst SerializableEmpty = Object.freeze({\n map: null,\n hash: \"\",\n transfer: undefined,\n});\n\n/**\n * Key/value storage for annotation data in forms.\n */\nclass AnnotationStorage {\n #modified = false;\n\n #storage = new Map();\n\n constructor() {\n // Callbacks to signal when the modification state is set or reset.\n // This is used by the viewer to only bind on `beforeunload` if forms\n // are actually edited to prevent doing so unconditionally since that\n // can have undesirable effects.\n this.onSetModified = null;\n this.onResetModified = null;\n this.onAnnotationEditor = null;\n }\n\n /**\n * Get the value for a given key if it exists, or return the default value.\n * @param {string} key\n * @param {Object} defaultValue\n * @returns {Object}\n */\n getValue(key, defaultValue) {\n const value = this.#storage.get(key);\n if (value === undefined) {\n return defaultValue;\n }\n\n return Object.assign(defaultValue, value);\n }\n\n /**\n * Get the value for a given key.\n * @param {string} key\n * @returns {Object}\n */\n getRawValue(key) {\n return this.#storage.get(key);\n }\n\n /**\n * Remove a value from the storage.\n * @param {string} key\n */\n remove(key) {\n this.#storage.delete(key);\n\n if (this.#storage.size === 0) {\n this.resetModified();\n }\n\n if (typeof this.onAnnotationEditor === \"function\") {\n for (const value of this.#storage.values()) {\n if (value instanceof AnnotationEditor) {\n return;\n }\n }\n this.onAnnotationEditor(null);\n }\n }\n\n /**\n * Set the value for a given key\n * @param {string} key\n * @param {Object} value\n */\n setValue(key, value) {\n const obj = this.#storage.get(key);\n let modified = false;\n if (obj !== undefined) {\n for (const [entry, val] of Object.entries(value)) {\n if (obj[entry] !== val) {\n modified = true;\n obj[entry] = val;\n }\n }\n } else {\n modified = true;\n this.#storage.set(key, value);\n }\n if (modified) {\n this.#setModified();\n }\n\n if (\n value instanceof AnnotationEditor &&\n typeof this.onAnnotationEditor === \"function\"\n ) {\n this.onAnnotationEditor(value.constructor._type);\n }\n }\n\n /**\n * Check if the storage contains the given key.\n * @param {string} key\n * @returns {boolean}\n */\n has(key) {\n return this.#storage.has(key);\n }\n\n /**\n * @returns {Object | null}\n */\n getAll() {\n return this.#storage.size > 0 ? objectFromMap(this.#storage) : null;\n }\n\n /**\n * @param {Object} obj\n */\n setAll(obj) {\n for (const [key, val] of Object.entries(obj)) {\n this.setValue(key, val);\n }\n }\n\n get size() {\n return this.#storage.size;\n }\n\n #setModified() {\n if (!this.#modified) {\n this.#modified = true;\n if (typeof this.onSetModified === \"function\") {\n this.onSetModified();\n }\n }\n }\n\n resetModified() {\n if (this.#modified) {\n this.#modified = false;\n if (typeof this.onResetModified === \"function\") {\n this.onResetModified();\n }\n }\n }\n\n /**\n * @returns {PrintAnnotationStorage}\n */\n get print() {\n return new PrintAnnotationStorage(this);\n }\n\n /**\n * PLEASE NOTE: Only intended for usage within the API itself.\n * @ignore\n */\n get serializable() {\n if (this.#storage.size === 0) {\n return SerializableEmpty;\n }\n const map = new Map(),\n hash = new MurmurHash3_64(),\n transfer = [];\n const context = Object.create(null);\n let hasBitmap = false;\n\n for (const [key, val] of this.#storage) {\n const serialized =\n val instanceof AnnotationEditor\n ? val.serialize(/* isForCopying = */ false, context)\n : val;\n if (serialized) {\n map.set(key, serialized);\n\n hash.update(`${key}:${JSON.stringify(serialized)}`);\n hasBitmap ||= !!serialized.bitmap;\n }\n }\n\n if (hasBitmap) {\n // We must transfer the bitmap data separately, since it can be changed\n // during serialization with SVG images.\n for (const value of map.values()) {\n if (value.bitmap) {\n transfer.push(value.bitmap);\n }\n }\n }\n\n return map.size > 0\n ? { map, hash: hash.hexdigest(), transfer }\n : SerializableEmpty;\n }\n}\n\n/**\n * A special `AnnotationStorage` for use during printing, where the serializable\n * data is *frozen* upon initialization, to prevent scripting from modifying its\n * contents. (Necessary since printing is triggered synchronously in browsers.)\n */\nclass PrintAnnotationStorage extends AnnotationStorage {\n #serializable;\n\n constructor(parent) {\n super();\n const { map, hash, transfer } = parent.serializable;\n // Create a *copy* of the data, since Objects are passed by reference in JS.\n const clone = structuredClone(map, transfer ? { transfer } : null);\n\n this.#serializable = { map: clone, hash, transfer };\n }\n\n /**\n * @returns {PrintAnnotationStorage}\n */\n // eslint-disable-next-line getter-return\n get print() {\n unreachable(\"Should not call PrintAnnotationStorage.print\");\n }\n\n /**\n * PLEASE NOTE: Only intended for usage within the API itself.\n * @ignore\n */\n get serializable() {\n return this.#serializable;\n }\n}\n\nexport { AnnotationStorage, PrintAnnotationStorage, SerializableEmpty };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @module pdfjsLib\n */\n\nimport {\n AbortException,\n AnnotationMode,\n assert,\n getVerbosityLevel,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isNodeJS,\n MAX_IMAGE_SIZE_TO_CACHE,\n MissingPDFException,\n PasswordException,\n PromiseCapability,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n stringToBytes,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n warn,\n} from \"../shared/util.js\";\nimport {\n AnnotationStorage,\n PrintAnnotationStorage,\n SerializableEmpty,\n} from \"./annotation_storage.js\";\nimport {\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMFilterFactory,\n DOMStandardFontDataFactory,\n isDataScheme,\n isValidFetchUrl,\n PageViewport,\n RenderingCancelledException,\n StatTimer,\n} from \"./display_utils.js\";\nimport { FontFaceObject, FontLoader } from \"./font_loader.js\";\nimport {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeFilterFactory,\n NodeStandardFontDataFactory,\n} from \"display-node_utils\";\nimport { CanvasGraphics } from \"./canvas.js\";\nimport { GlobalWorkerOptions } from \"./worker_options.js\";\nimport { MessageHandler } from \"../shared/message_handler.js\";\nimport { Metadata } from \"./metadata.js\";\nimport { OptionalContentConfig } from \"./optional_content_config.js\";\nimport { PDFDataTransportStream } from \"./transport_stream.js\";\nimport { PDFFetchStream } from \"display-fetch_stream\";\nimport { PDFNetworkStream } from \"display-network\";\nimport { PDFNodeStream } from \"display-node_stream\";\nimport { XfaText } from \"./xfa_text.js\";\n\nconst DEFAULT_RANGE_CHUNK_SIZE = 65536; // 2^16 = 65536\nconst RENDERING_CANCELLED_TIMEOUT = 100; // ms\nconst DELAYED_CLEANUP_TIMEOUT = 5000; // ms\n\nconst DefaultCanvasFactory =\n typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n ? NodeCanvasFactory\n : DOMCanvasFactory;\nconst DefaultCMapReaderFactory =\n typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n ? NodeCMapReaderFactory\n : DOMCMapReaderFactory;\nconst DefaultFilterFactory =\n typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n ? NodeFilterFactory\n : DOMFilterFactory;\nconst DefaultStandardFontDataFactory =\n typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"GENERIC\") && isNodeJS\n ? NodeStandardFontDataFactory\n : DOMStandardFontDataFactory;\n\n/**\n * @typedef { Int8Array | Uint8Array | Uint8ClampedArray |\n * Int16Array | Uint16Array |\n * Int32Array | Uint32Array | Float32Array |\n * Float64Array\n * } TypedArray\n */\n\n/**\n * @typedef { TypedArray | ArrayBuffer | Array<number> | string } BinaryData\n */\n\n/**\n * @typedef {Object} RefProxy\n * @property {number} num\n * @property {number} gen\n */\n\n/**\n * Document initialization / loading parameters object.\n *\n * @typedef {Object} DocumentInitParameters\n * @property {string | URL} [url] - The URL of the PDF.\n * @property {BinaryData} [data] - Binary PDF data.\n * Use TypedArrays (Uint8Array) to improve the memory usage. If PDF data is\n * BASE64-encoded, use `atob()` to convert it to a binary string first.\n *\n * NOTE: If TypedArrays are used they will generally be transferred to the\n * worker-thread. This will help reduce main-thread memory usage, however\n * it will take ownership of the TypedArrays.\n * @property {Object} [httpHeaders] - Basic authentication headers.\n * @property {boolean} [withCredentials] - Indicates whether or not\n * cross-site Access-Control requests should be made using credentials such\n * as cookies or authorization headers. The default is `false`.\n * @property {string} [password] - For decrypting password-protected PDFs.\n * @property {number} [length] - The PDF file length. It's used for progress\n * reports and range requests operations.\n * @property {PDFDataRangeTransport} [range] - Allows for using a custom range\n * transport implementation.\n * @property {number} [rangeChunkSize] - Specify maximum number of bytes fetched\n * per range request. The default value is {@link DEFAULT_RANGE_CHUNK_SIZE}.\n * @property {PDFWorker} [worker] - The worker that will be used for loading and\n * parsing the PDF data.\n * @property {number} [verbosity] - Controls the logging level; the constants\n * from {@link VerbosityLevel} should be used.\n * @property {string} [docBaseUrl] - The base URL of the document, used when\n * attempting to recover valid absolute URLs for annotations, and outline\n * items, that (incorrectly) only specify relative URLs.\n * @property {string} [cMapUrl] - The URL where the predefined Adobe CMaps are\n * located. Include the trailing slash.\n * @property {boolean} [cMapPacked] - Specifies if the Adobe CMaps are binary\n * packed or not. The default value is `true`.\n * @property {Object} [CMapReaderFactory] - The factory that will be used when\n * reading built-in CMap files. Providing a custom factory is useful for\n * environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMCMapReaderFactory}.\n * @property {boolean} [useSystemFonts] - When `true`, fonts that aren't\n * embedded in the PDF document will fallback to a system font.\n * The default value is `true` in web environments and `false` in Node.js;\n * unless `disableFontFace === true` in which case this defaults to `false`\n * regardless of the environment (to prevent completely broken fonts).\n * @property {string} [standardFontDataUrl] - The URL where the standard font\n * files are located. Include the trailing slash.\n * @property {Object} [StandardFontDataFactory] - The factory that will be used\n * when reading the standard font files. Providing a custom factory is useful\n * for environments without Fetch API or `XMLHttpRequest` support, such as\n * Node.js. The default value is {DOMStandardFontDataFactory}.\n * @property {boolean} [useWorkerFetch] - Enable using the Fetch API in the\n * worker-thread when reading CMap and standard font files. When `true`,\n * the `CMapReaderFactory` and `StandardFontDataFactory` options are ignored.\n * The default value is `true` in web environments and `false` in Node.js.\n * @property {boolean} [stopAtErrors] - Reject certain promises, e.g.\n * `getOperatorList`, `getTextContent`, and `RenderTask`, when the associated\n * PDF data cannot be successfully parsed, instead of attempting to recover\n * whatever possible of the data. The default value is `false`.\n * @property {number} [maxImageSize] - The maximum allowed image size in total\n * pixels, i.e. width * height. Images above this value will not be rendered.\n * Use -1 for no limit, which is also the default value.\n * @property {boolean} [isEvalSupported] - Determines if we can evaluate strings\n * as JavaScript. Primarily used to improve performance of font rendering, and\n * when parsing PDF functions. The default value is `true`.\n * @property {boolean} [isOffscreenCanvasSupported] - Determines if we can use\n * `OffscreenCanvas` in the worker. Primarily used to improve performance of\n * image conversion/rendering.\n * The default value is `true` in web environments and `false` in Node.js.\n * @property {number} [canvasMaxAreaInBytes] - The integer value is used to\n * know when an image must be resized (uses `OffscreenCanvas` in the worker).\n * If it's -1 then a possibly slow algorithm is used to guess the max value.\n * @property {boolean} [disableFontFace] - By default fonts are converted to\n * OpenType fonts and loaded via the Font Loading API or `@font-face` rules.\n * If disabled, fonts will be rendered using a built-in font renderer that\n * constructs the glyphs with primitive path commands.\n * The default value is `false` in web environments and `true` in Node.js.\n * @property {boolean} [fontExtraProperties] - Include additional properties,\n * which are unused during rendering of PDF documents, when exporting the\n * parsed font data from the worker-thread. This may be useful for debugging\n * purposes (and backwards compatibility), but note that it will lead to\n * increased memory usage. The default value is `false`.\n * @property {boolean} [enableXfa] - Render Xfa forms if any.\n * The default value is `false`.\n * @property {HTMLDocument} [ownerDocument] - Specify an explicit document\n * context to create elements with and to load resources, such as fonts,\n * into. Defaults to the current document.\n * @property {boolean} [disableRange] - Disable range request loading of PDF\n * files. When enabled, and if the server supports partial content requests,\n * then the PDF will be fetched in chunks. The default value is `false`.\n * @property {boolean} [disableStream] - Disable streaming of PDF file data.\n * By default PDF.js attempts to load PDF files in chunks. The default value\n * is `false`.\n * @property {boolean} [disableAutoFetch] - Disable pre-fetching of PDF file\n * data. When range requests are enabled PDF.js will automatically keep\n * fetching more data even if it isn't needed to display the current page.\n * The default value is `false`.\n *\n * NOTE: It is also necessary to disable streaming, see above, in order for\n * disabling of pre-fetching to work correctly.\n * @property {boolean} [pdfBug] - Enables special hooks for debugging PDF.js\n * (see `web/debugger.js`). The default value is `false`.\n * @property {Object} [canvasFactory] - The factory instance that will be used\n * when creating canvases. The default value is {new DOMCanvasFactory()}.\n * @property {Object} [filterFactory] - A factory instance that will be used\n * to create SVG filters when rendering some images on the main canvas.\n */\n\n/**\n * This is the main entry point for loading a PDF and interacting with it.\n *\n * NOTE: If a URL is used to fetch the PDF data a standard Fetch API call (or\n * XHR as fallback) is used, which means it must follow same origin rules,\n * e.g. no cross-domain requests without CORS.\n *\n * @param {string | URL | TypedArray | ArrayBuffer | DocumentInitParameters}\n * src - Can be a URL where a PDF file is located, a typed array (Uint8Array)\n * already populated with data, or a parameter object.\n * @returns {PDFDocumentLoadingTask}\n */\nfunction getDocument(src) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n if (typeof src === \"string\" || src instanceof URL) {\n src = { url: src };\n } else if (isArrayBuffer(src)) {\n src = { data: src };\n }\n }\n if (typeof src !== \"object\") {\n throw new Error(\"Invalid parameter in getDocument, need parameter object.\");\n }\n if (!src.url && !src.data && !src.range) {\n throw new Error(\n \"Invalid parameter object: need either .data, .range or .url\"\n );\n }\n const task = new PDFDocumentLoadingTask();\n const { docId } = task;\n\n const url = src.url ? getUrlProp(src.url) : null;\n const data = src.data ? getDataProp(src.data) : null;\n const httpHeaders = src.httpHeaders || null;\n const withCredentials = src.withCredentials === true;\n const password = src.password ?? null;\n const rangeTransport =\n src.range instanceof PDFDataRangeTransport ? src.range : null;\n const rangeChunkSize =\n Number.isInteger(src.rangeChunkSize) && src.rangeChunkSize > 0\n ? src.rangeChunkSize\n : DEFAULT_RANGE_CHUNK_SIZE;\n let worker = src.worker instanceof PDFWorker ? src.worker : null;\n const verbosity = src.verbosity;\n // Ignore \"data:\"-URLs, since they can't be used to recover valid absolute\n // URLs anyway. We want to avoid sending them to the worker-thread, since\n // they contain the *entire* PDF document and can thus be arbitrarily long.\n const docBaseUrl =\n typeof src.docBaseUrl === \"string\" && !isDataScheme(src.docBaseUrl)\n ? src.docBaseUrl\n : null;\n const cMapUrl = typeof src.cMapUrl === \"string\" ? src.cMapUrl : null;\n const cMapPacked = src.cMapPacked !== false;\n const CMapReaderFactory = src.CMapReaderFactory || DefaultCMapReaderFactory;\n const standardFontDataUrl =\n typeof src.standardFontDataUrl === \"string\"\n ? src.standardFontDataUrl\n : null;\n const StandardFontDataFactory =\n src.StandardFontDataFactory || DefaultStandardFontDataFactory;\n const ignoreErrors = src.stopAtErrors !== true;\n const maxImageSize =\n Number.isInteger(src.maxImageSize) && src.maxImageSize > -1\n ? src.maxImageSize\n : -1;\n const isEvalSupported = src.isEvalSupported !== false;\n const isOffscreenCanvasSupported =\n typeof src.isOffscreenCanvasSupported === \"boolean\"\n ? src.isOffscreenCanvasSupported\n : !isNodeJS;\n const canvasMaxAreaInBytes = Number.isInteger(src.canvasMaxAreaInBytes)\n ? src.canvasMaxAreaInBytes\n : -1;\n const disableFontFace =\n typeof src.disableFontFace === \"boolean\" ? src.disableFontFace : isNodeJS;\n const fontExtraProperties = src.fontExtraProperties === true;\n const enableXfa = src.enableXfa === true;\n const ownerDocument = src.ownerDocument || globalThis.document;\n const disableRange = src.disableRange === true;\n const disableStream = src.disableStream === true;\n const disableAutoFetch = src.disableAutoFetch === true;\n const pdfBug = src.pdfBug === true;\n\n // Parameters whose default values depend on other parameters.\n const length = rangeTransport ? rangeTransport.length : src.length ?? NaN;\n const useSystemFonts =\n typeof src.useSystemFonts === \"boolean\"\n ? src.useSystemFonts\n : !isNodeJS && !disableFontFace;\n const useWorkerFetch =\n typeof src.useWorkerFetch === \"boolean\"\n ? src.useWorkerFetch\n : (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n (CMapReaderFactory === DOMCMapReaderFactory &&\n StandardFontDataFactory === DOMStandardFontDataFactory &&\n cMapUrl &&\n standardFontDataUrl &&\n isValidFetchUrl(cMapUrl, document.baseURI) &&\n isValidFetchUrl(standardFontDataUrl, document.baseURI));\n const canvasFactory =\n src.canvasFactory || new DefaultCanvasFactory({ ownerDocument });\n const filterFactory =\n src.filterFactory || new DefaultFilterFactory({ docId, ownerDocument });\n\n // Parameters only intended for development/testing purposes.\n const styleElement =\n typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")\n ? src.styleElement\n : null;\n\n // Set the main-thread verbosity level.\n setVerbosityLevel(verbosity);\n\n // Ensure that the various factories can be initialized, when necessary,\n // since the user may provide *custom* ones.\n const transportFactory = {\n canvasFactory,\n filterFactory,\n };\n if (!useWorkerFetch) {\n transportFactory.cMapReaderFactory = new CMapReaderFactory({\n baseUrl: cMapUrl,\n isCompressed: cMapPacked,\n });\n transportFactory.standardFontDataFactory = new StandardFontDataFactory({\n baseUrl: standardFontDataUrl,\n });\n }\n\n if (!worker) {\n const workerParams = {\n verbosity,\n port: GlobalWorkerOptions.workerPort,\n };\n // Worker was not provided -- creating and owning our own. If message port\n // is specified in global worker options, using it.\n worker = workerParams.port\n ? PDFWorker.fromPort(workerParams)\n : new PDFWorker(workerParams);\n task._worker = worker;\n }\n\n const fetchDocParams = {\n docId,\n apiVersion:\n typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"TESTING\")\n ? PDFJSDev.eval(\"BUNDLE_VERSION\")\n : null,\n data,\n password,\n disableAutoFetch,\n rangeChunkSize,\n length,\n docBaseUrl,\n enableXfa,\n evaluatorOptions: {\n maxImageSize,\n disableFontFace,\n ignoreErrors,\n isEvalSupported,\n isOffscreenCanvasSupported,\n canvasMaxAreaInBytes,\n fontExtraProperties,\n useSystemFonts,\n cMapUrl: useWorkerFetch ? cMapUrl : null,\n standardFontDataUrl: useWorkerFetch ? standardFontDataUrl : null,\n },\n };\n const transportParams = {\n ignoreErrors,\n isEvalSupported,\n disableFontFace,\n fontExtraProperties,\n enableXfa,\n ownerDocument,\n disableAutoFetch,\n pdfBug,\n styleElement,\n };\n\n worker.promise\n .then(function () {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const workerIdPromise = _fetchDocument(worker, fetchDocParams);\n const networkStreamPromise = new Promise(function (resolve) {\n let networkStream;\n if (rangeTransport) {\n networkStream = new PDFDataTransportStream(\n {\n length,\n initialData: rangeTransport.initialData,\n progressiveDone: rangeTransport.progressiveDone,\n contentDispositionFilename:\n rangeTransport.contentDispositionFilename,\n disableRange,\n disableStream,\n },\n rangeTransport\n );\n } else if (!data) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: createPDFNetworkStream\");\n }\n const createPDFNetworkStream = params => {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS\n ) {\n return new PDFNodeStream(params);\n }\n return isValidFetchUrl(params.url)\n ? new PDFFetchStream(params)\n : new PDFNetworkStream(params);\n };\n\n networkStream = createPDFNetworkStream({\n url,\n length,\n httpHeaders,\n withCredentials,\n rangeChunkSize,\n disableRange,\n disableStream,\n });\n }\n resolve(networkStream);\n });\n\n return Promise.all([workerIdPromise, networkStreamPromise]).then(\n function ([workerId, networkStream]) {\n if (task.destroyed) {\n throw new Error(\"Loading aborted\");\n }\n\n const messageHandler = new MessageHandler(\n docId,\n workerId,\n worker.port\n );\n const transport = new WorkerTransport(\n messageHandler,\n task,\n networkStream,\n transportParams,\n transportFactory\n );\n task._transport = transport;\n messageHandler.send(\"Ready\", null);\n }\n );\n })\n .catch(task._capability.reject);\n\n return task;\n}\n\n/**\n * Starts fetching of specified PDF document/data.\n *\n * @param {PDFWorker} worker\n * @param {Object} source\n * @returns {Promise<string>} A promise that is resolved when the worker ID of\n * the `MessageHandler` is known.\n * @private\n */\nasync function _fetchDocument(worker, source) {\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n const workerId = await worker.messageHandler.sendWithPromise(\n \"GetDocRequest\",\n source,\n source.data ? [source.data.buffer] : null\n );\n\n if (worker.destroyed) {\n throw new Error(\"Worker was destroyed\");\n }\n return workerId;\n}\n\nfunction getUrlProp(val) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n return null; // The 'url' is unused with `PDFDataRangeTransport`.\n }\n if (val instanceof URL) {\n return val.href;\n }\n try {\n // The full path is required in the 'url' field.\n return new URL(val, window.location).href;\n } catch {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n typeof val === \"string\"\n ) {\n return val; // Use the url as-is in Node.js environments.\n }\n }\n throw new Error(\n \"Invalid PDF url data: \" +\n \"either string or URL-object is expected in the url property.\"\n );\n}\n\nfunction getDataProp(val) {\n // Converting string or array-like data to Uint8Array.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n isNodeJS &&\n typeof Buffer !== \"undefined\" && // eslint-disable-line no-undef\n val instanceof Buffer // eslint-disable-line no-undef\n ) {\n throw new Error(\n \"Please provide binary data as `Uint8Array`, rather than `Buffer`.\"\n );\n }\n if (val instanceof Uint8Array && val.byteLength === val.buffer.byteLength) {\n // Use the data as-is when it's already a Uint8Array that completely\n // \"utilizes\" its underlying ArrayBuffer, to prevent any possible\n // issues when transferring it to the worker-thread.\n return val;\n }\n if (typeof val === \"string\") {\n return stringToBytes(val);\n }\n if ((typeof val === \"object\" && !isNaN(val?.length)) || isArrayBuffer(val)) {\n return new Uint8Array(val);\n }\n throw new Error(\n \"Invalid PDF binary data: either TypedArray, \" +\n \"string, or array-like object is expected in the data property.\"\n );\n}\n\n/**\n * @typedef {Object} OnProgressParameters\n * @property {number} loaded - Currently loaded number of bytes.\n * @property {number} total - Total number of bytes in the PDF file.\n */\n\n/**\n * The loading task controls the operations required to load a PDF document\n * (such as network requests) and provides a way to listen for completion,\n * after which individual pages can be rendered.\n */\nclass PDFDocumentLoadingTask {\n static #docId = 0;\n\n constructor() {\n this._capability = new PromiseCapability();\n this._transport = null;\n this._worker = null;\n\n /**\n * Unique identifier for the document loading task.\n * @type {string}\n */\n this.docId = `d${PDFDocumentLoadingTask.#docId++}`;\n\n /**\n * Whether the loading task is destroyed or not.\n * @type {boolean}\n */\n this.destroyed = false;\n\n /**\n * Callback to request a password if a wrong or no password was provided.\n * The callback receives two parameters: a function that should be called\n * with the new password, and a reason (see {@link PasswordResponses}).\n * @type {function}\n */\n this.onPassword = null;\n\n /**\n * Callback to be able to monitor the loading progress of the PDF file\n * (necessary to implement e.g. a loading bar).\n * The callback receives an {@link OnProgressParameters} argument.\n * @type {function}\n */\n this.onProgress = null;\n }\n\n /**\n * Promise for document loading task completion.\n * @type {Promise<PDFDocumentProxy>}\n */\n get promise() {\n return this._capability.promise;\n }\n\n /**\n * Abort all network requests and destroy the worker.\n * @returns {Promise<void>} A promise that is resolved when destruction is\n * completed.\n */\n async destroy() {\n this.destroyed = true;\n try {\n if (this._worker?.port) {\n this._worker._pendingDestroy = true;\n }\n await this._transport?.destroy();\n } catch (ex) {\n if (this._worker?.port) {\n delete this._worker._pendingDestroy;\n }\n throw ex;\n }\n\n this._transport = null;\n if (this._worker) {\n this._worker.destroy();\n this._worker = null;\n }\n }\n}\n\n/**\n * Abstract class to support range requests file loading.\n *\n * NOTE: The TypedArrays passed to the constructor and relevant methods below\n * will generally be transferred to the worker-thread. This will help reduce\n * main-thread memory usage, however it will take ownership of the TypedArrays.\n */\nclass PDFDataRangeTransport {\n /**\n * @param {number} length\n * @param {Uint8Array|null} initialData\n * @param {boolean} [progressiveDone]\n * @param {string} [contentDispositionFilename]\n */\n constructor(\n length,\n initialData,\n progressiveDone = false,\n contentDispositionFilename = null\n ) {\n this.length = length;\n this.initialData = initialData;\n this.progressiveDone = progressiveDone;\n this.contentDispositionFilename = contentDispositionFilename;\n\n this._rangeListeners = [];\n this._progressListeners = [];\n this._progressiveReadListeners = [];\n this._progressiveDoneListeners = [];\n this._readyCapability = new PromiseCapability();\n }\n\n /**\n * @param {function} listener\n */\n addRangeListener(listener) {\n this._rangeListeners.push(listener);\n }\n\n /**\n * @param {function} listener\n */\n addProgressListener(listener) {\n this._progressListeners.push(listener);\n }\n\n /**\n * @param {function} listener\n */\n addProgressiveReadListener(listener) {\n this._progressiveReadListeners.push(listener);\n }\n\n /**\n * @param {function} listener\n */\n addProgressiveDoneListener(listener) {\n this._progressiveDoneListeners.push(listener);\n }\n\n /**\n * @param {number} begin\n * @param {Uint8Array|null} chunk\n */\n onDataRange(begin, chunk) {\n for (const listener of this._rangeListeners) {\n listener(begin, chunk);\n }\n }\n\n /**\n * @param {number} loaded\n * @param {number|undefined} total\n */\n onDataProgress(loaded, total) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressListeners) {\n listener(loaded, total);\n }\n });\n }\n\n /**\n * @param {Uint8Array|null} chunk\n */\n onDataProgressiveRead(chunk) {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveReadListeners) {\n listener(chunk);\n }\n });\n }\n\n onDataProgressiveDone() {\n this._readyCapability.promise.then(() => {\n for (const listener of this._progressiveDoneListeners) {\n listener();\n }\n });\n }\n\n transportReady() {\n this._readyCapability.resolve();\n }\n\n /**\n * @param {number} begin\n * @param {number} end\n */\n requestDataRange(begin, end) {\n unreachable(\"Abstract method PDFDataRangeTransport.requestDataRange\");\n }\n\n abort() {}\n}\n\n/**\n * Proxy to a `PDFDocument` in the worker thread.\n */\nclass PDFDocumentProxy {\n constructor(pdfInfo, transport) {\n this._pdfInfo = pdfInfo;\n this._transport = transport;\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n // For testing purposes.\n Object.defineProperty(this, \"getXFADatasets\", {\n value: () => {\n return this._transport.getXFADatasets();\n },\n });\n Object.defineProperty(this, \"getXRefPrevValue\", {\n value: () => {\n return this._transport.getXRefPrevValue();\n },\n });\n Object.defineProperty(this, \"getAnnotArray\", {\n value: pageIndex => {\n return this._transport.getAnnotArray(pageIndex);\n },\n });\n }\n }\n\n /**\n * @type {AnnotationStorage} Storage for annotation data in forms.\n */\n get annotationStorage() {\n return this._transport.annotationStorage;\n }\n\n /**\n * @type {Object} The filter factory instance.\n */\n get filterFactory() {\n return this._transport.filterFactory;\n }\n\n /**\n * @type {number} Total number of pages in the PDF file.\n */\n get numPages() {\n return this._pdfInfo.numPages;\n }\n\n /**\n * @type {Array<string, string|null>} A (not guaranteed to be) unique ID to\n * identify the PDF document.\n * NOTE: The first element will always be defined for all PDF documents,\n * whereas the second element is only defined for *modified* PDF documents.\n */\n get fingerprints() {\n return this._pdfInfo.fingerprints;\n }\n\n /**\n * @type {boolean} True if only XFA form.\n */\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n\n /**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n *\n * @type {Object | null} An object representing a HTML tree structure\n * to render the XFA, or `null` when no XFA form exists.\n */\n get allXfaHtml() {\n return this._transport._htmlForXfa;\n }\n\n /**\n * @param {number} pageNumber - The page number to get. The first page is 1.\n * @returns {Promise<PDFPageProxy>} A promise that is resolved with\n * a {@link PDFPageProxy} object.\n */\n getPage(pageNumber) {\n return this._transport.getPage(pageNumber);\n }\n\n /**\n * @param {RefProxy} ref - The page reference.\n * @returns {Promise<number>} A promise that is resolved with the page index,\n * starting from zero, that is associated with the reference.\n */\n getPageIndex(ref) {\n return this._transport.getPageIndex(ref);\n }\n\n /**\n * @returns {Promise<Object<string, Array<any>>>} A promise that is resolved\n * with a mapping from named destinations to references.\n *\n * This can be slow for large documents. Use `getDestination` instead.\n */\n getDestinations() {\n return this._transport.getDestinations();\n }\n\n /**\n * @param {string} id - The named destination to get.\n * @returns {Promise<Array<any> | null>} A promise that is resolved with all\n * information of the given named destination, or `null` when the named\n * destination is not present in the PDF file.\n */\n getDestination(id) {\n return this._transport.getDestination(id);\n }\n\n /**\n * @returns {Promise<Array<string> | null>} A promise that is resolved with\n * an {Array} containing the page labels that correspond to the page\n * indexes, or `null` when no page labels are present in the PDF file.\n */\n getPageLabels() {\n return this._transport.getPageLabels();\n }\n\n /**\n * @returns {Promise<string>} A promise that is resolved with a {string}\n * containing the page layout name.\n */\n getPageLayout() {\n return this._transport.getPageLayout();\n }\n\n /**\n * @returns {Promise<string>} A promise that is resolved with a {string}\n * containing the page mode name.\n */\n getPageMode() {\n return this._transport.getPageMode();\n }\n\n /**\n * @returns {Promise<Object | null>} A promise that is resolved with an\n * {Object} containing the viewer preferences, or `null` when no viewer\n * preferences are present in the PDF file.\n */\n getViewerPreferences() {\n return this._transport.getViewerPreferences();\n }\n\n /**\n * @returns {Promise<any | null>} A promise that is resolved with an {Array}\n * containing the destination, or `null` when no open action is present\n * in the PDF.\n */\n getOpenAction() {\n return this._transport.getOpenAction();\n }\n\n /**\n * @returns {Promise<any>} A promise that is resolved with a lookup table\n * for mapping named attachments to their content.\n */\n getAttachments() {\n return this._transport.getAttachments();\n }\n\n /**\n * @returns {Promise<Object | null>} A promise that is resolved with\n * an {Object} with the JavaScript actions:\n * - from the name tree.\n * - from A or AA entries in the catalog dictionary.\n * , or `null` if no JavaScript exists.\n */\n getJSActions() {\n return this._transport.getDocJSActions();\n }\n\n /**\n * @typedef {Object} OutlineNode\n * @property {string} title\n * @property {boolean} bold\n * @property {boolean} italic\n * @property {Uint8ClampedArray} color - The color in RGB format to use for\n * display purposes.\n * @property {string | Array<any> | null} dest\n * @property {string | null} url\n * @property {string | undefined} unsafeUrl\n * @property {boolean | undefined} newWindow\n * @property {number | undefined} count\n * @property {Array<OutlineNode>} items\n */\n\n /**\n * @returns {Promise<Array<OutlineNode>>} A promise that is resolved with an\n * {Array} that is a tree outline (if it has one) of the PDF file.\n */\n getOutline() {\n return this._transport.getOutline();\n }\n\n /**\n * @returns {Promise<OptionalContentConfig>} A promise that is resolved with\n * an {@link OptionalContentConfig} that contains all the optional content\n * groups (assuming that the document has any).\n */\n getOptionalContentConfig() {\n return this._transport.getOptionalContentConfig();\n }\n\n /**\n * @returns {Promise<Array<number> | null>} A promise that is resolved with\n * an {Array} that contains the permission flags for the PDF document, or\n * `null` when no permissions are present in the PDF file.\n */\n getPermissions() {\n return this._transport.getPermissions();\n }\n\n /**\n * @returns {Promise<{ info: Object, metadata: Metadata }>} A promise that is\n * resolved with an {Object} that has `info` and `metadata` properties.\n * `info` is an {Object} filled with anything available in the information\n * dictionary and similarly `metadata` is a {Metadata} object with\n * information from the metadata section of the PDF.\n */\n getMetadata() {\n return this._transport.getMetadata();\n }\n\n /**\n * @typedef {Object} MarkInfo\n * Properties correspond to Table 321 of the PDF 32000-1:2008 spec.\n * @property {boolean} Marked\n * @property {boolean} UserProperties\n * @property {boolean} Suspects\n */\n\n /**\n * @returns {Promise<MarkInfo | null>} A promise that is resolved with\n * a {MarkInfo} object that contains the MarkInfo flags for the PDF\n * document, or `null` when no MarkInfo values are present in the PDF file.\n */\n getMarkInfo() {\n return this._transport.getMarkInfo();\n }\n\n /**\n * @returns {Promise<Uint8Array>} A promise that is resolved with a\n * {Uint8Array} containing the raw data of the PDF document.\n */\n getData() {\n return this._transport.getData();\n }\n\n /**\n * @returns {Promise<Uint8Array>} A promise that is resolved with a\n * {Uint8Array} containing the full data of the saved document.\n */\n saveDocument() {\n return this._transport.saveDocument();\n }\n\n /**\n * @returns {Promise<{ length: number }>} A promise that is resolved when the\n * document's data is loaded. It is resolved with an {Object} that contains\n * the `length` property that indicates size of the PDF data in bytes.\n */\n getDownloadInfo() {\n return this._transport.downloadInfoCapability.promise;\n }\n\n /**\n * Cleans up resources allocated by the document on both the main and worker\n * threads.\n *\n * NOTE: Do not, under any circumstances, call this method when rendering is\n * currently ongoing since that may lead to rendering errors.\n *\n * @param {boolean} [keepLoadedFonts] - Let fonts remain attached to the DOM.\n * NOTE: This will increase persistent memory usage, hence don't use this\n * option unless absolutely necessary. The default value is `false`.\n * @returns {Promise} A promise that is resolved when clean-up has finished.\n */\n cleanup(keepLoadedFonts = false) {\n return this._transport.startCleanup(keepLoadedFonts || this.isPureXfa);\n }\n\n /**\n * Destroys the current document instance and terminates the worker.\n */\n destroy() {\n return this.loadingTask.destroy();\n }\n\n /**\n * @type {DocumentInitParameters} A subset of the current\n * {DocumentInitParameters}, which are needed in the viewer.\n */\n get loadingParams() {\n return this._transport.loadingParams;\n }\n\n /**\n * @type {PDFDocumentLoadingTask} The loadingTask for the current document.\n */\n get loadingTask() {\n return this._transport.loadingTask;\n }\n\n /**\n * @returns {Promise<Object<string, Array<Object>> | null>} A promise that is\n * resolved with an {Object} containing /AcroForm field data for the JS\n * sandbox, or `null` when no field data is present in the PDF file.\n */\n getFieldObjects() {\n return this._transport.getFieldObjects();\n }\n\n /**\n * @returns {Promise<boolean>} A promise that is resolved with `true`\n * if some /AcroForm fields have JavaScript actions.\n */\n hasJSActions() {\n return this._transport.hasJSActions();\n }\n\n /**\n * @returns {Promise<Array<string> | null>} A promise that is resolved with an\n * {Array<string>} containing IDs of annotations that have a calculation\n * action, or `null` when no such annotations are present in the PDF file.\n */\n getCalculationOrderIds() {\n return this._transport.getCalculationOrderIds();\n }\n}\n\n/**\n * Page getViewport parameters.\n *\n * @typedef {Object} GetViewportParameters\n * @property {number} scale - The desired scale of the viewport.\n * @property {number} [rotation] - The desired rotation, in degrees, of\n * the viewport. If omitted it defaults to the page rotation.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n * The default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n * The default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be\n * flipped. The default value is `false`.\n */\n\n/**\n * Page getTextContent parameters.\n *\n * @typedef {Object} getTextContentParameters\n * @property {boolean} [includeMarkedContent] - When true include marked\n * content items in the items array of TextContent. The default is `false`.\n * @property {boolean} [disableNormalization] - When true the text is *not*\n * normalized in the worker-thread. The default is `false`.\n */\n\n/**\n * Page text content.\n *\n * @typedef {Object} TextContent\n * @property {Array<TextItem | TextMarkedContent>} items - Array of\n * {@link TextItem} and {@link TextMarkedContent} objects. TextMarkedContent\n * items are included when includeMarkedContent is true.\n * @property {Object<string, TextStyle>} styles - {@link TextStyle} objects,\n * indexed by font name.\n */\n\n/**\n * Page text content part.\n *\n * @typedef {Object} TextItem\n * @property {string} str - Text content.\n * @property {string} dir - Text direction: 'ttb', 'ltr' or 'rtl'.\n * @property {Array<any>} transform - Transformation matrix.\n * @property {number} width - Width in device space.\n * @property {number} height - Height in device space.\n * @property {string} fontName - Font name used by PDF.js for converted font.\n * @property {boolean} hasEOL - Indicating if the text content is followed by a\n * line-break.\n */\n\n/**\n * Page text marked content part.\n *\n * @typedef {Object} TextMarkedContent\n * @property {string} type - Either 'beginMarkedContent',\n * 'beginMarkedContentProps', or 'endMarkedContent'.\n * @property {string} id - The marked content identifier. Only used for type\n * 'beginMarkedContentProps'.\n */\n\n/**\n * Text style.\n *\n * @typedef {Object} TextStyle\n * @property {number} ascent - Font ascent.\n * @property {number} descent - Font descent.\n * @property {boolean} vertical - Whether or not the text is in vertical mode.\n * @property {string} fontFamily - The possible font family.\n */\n\n/**\n * Page annotation parameters.\n *\n * @typedef {Object} GetAnnotationsParameters\n * @property {string} [intent] - Determines the annotations that are fetched,\n * can be 'display' (viewable annotations), 'print' (printable annotations),\n * or 'any' (all annotations). The default value is 'display'.\n */\n\n/**\n * Page render parameters.\n *\n * @typedef {Object} RenderParameters\n * @property {CanvasRenderingContext2D} canvasContext - A 2D context of a DOM\n * Canvas object.\n * @property {PageViewport} viewport - Rendering viewport obtained by calling\n * the `PDFPageProxy.getViewport` method.\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are rendered\n * onto the canvas, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n * @property {Array<any>} [transform] - Additional transform, applied just\n * before viewport transform.\n * @property {CanvasGradient | CanvasPattern | string} [background] - Background\n * to use for the canvas.\n * Any valid `canvas.fillStyle` can be used: a `DOMString` parsed as CSS\n * <color> value, a `CanvasGradient` object (a linear or radial gradient) or\n * a `CanvasPattern` object (a repetitive image). The default value is\n * 'rgb(255,255,255)'.\n *\n * NOTE: This option may be partially, or completely, ignored when the\n * `pageColors`-option is used.\n * @property {Object} [pageColors] - Overwrites background and foreground colors\n * with user defined ones in order to improve readability in high contrast\n * mode.\n * @property {Promise<OptionalContentConfig>} [optionalContentConfigPromise] -\n * A promise that should resolve with an {@link OptionalContentConfig}\n * created from `PDFDocumentProxy.getOptionalContentConfig`. If `null`,\n * the configuration will be fetched automatically with the default visibility\n * states set.\n * @property {Map<string, HTMLCanvasElement>} [annotationCanvasMap] - Map some\n * annotation ids with canvases used to render them.\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\n */\n\n/**\n * Page getOperatorList parameters.\n *\n * @typedef {Object} GetOperatorListParameters\n * @property {string} [intent] - Rendering intent, can be 'display', 'print',\n * or 'any'. The default value is 'display'.\n * @property {number} [annotationMode] Controls which annotations are included\n * in the operatorList, for annotations with appearance-data; the values from\n * {@link AnnotationMode} should be used. The following values are supported:\n * - `AnnotationMode.DISABLE`, which disables all annotations.\n * - `AnnotationMode.ENABLE`, which includes all possible annotations (thus\n * it also depends on the `intent`-option, see above).\n * - `AnnotationMode.ENABLE_FORMS`, which excludes annotations that contain\n * interactive form elements (those will be rendered in the display layer).\n * - `AnnotationMode.ENABLE_STORAGE`, which includes all possible annotations\n * (as above) but where interactive form elements are updated with data\n * from the {@link AnnotationStorage}-instance; useful e.g. for printing.\n * The default value is `AnnotationMode.ENABLE`.\n * @property {PrintAnnotationStorage} [printAnnotationStorage]\n */\n\n/**\n * Structure tree node. The root node will have a role \"Root\".\n *\n * @typedef {Object} StructTreeNode\n * @property {Array<StructTreeNode | StructTreeContent>} children - Array of\n * {@link StructTreeNode} and {@link StructTreeContent} objects.\n * @property {string} role - element's role, already mapped if a role map exists\n * in the PDF.\n */\n\n/**\n * Structure tree content.\n *\n * @typedef {Object} StructTreeContent\n * @property {string} type - either \"content\" for page and stream structure\n * elements or \"object\" for object references.\n * @property {string} id - unique id that will map to the text layer.\n */\n\n/**\n * PDF page operator list.\n *\n * @typedef {Object} PDFOperatorList\n * @property {Array<number>} fnArray - Array containing the operator functions.\n * @property {Array<any>} argsArray - Array containing the arguments of the\n * functions.\n */\n\n/**\n * Proxy to a `PDFPage` in the worker thread.\n */\nclass PDFPageProxy {\n #delayedCleanupTimeout = null;\n\n #pendingCleanup = false;\n\n constructor(pageIndex, pageInfo, transport, pdfBug = false) {\n this._pageIndex = pageIndex;\n this._pageInfo = pageInfo;\n this._transport = transport;\n this._stats = pdfBug ? new StatTimer() : null;\n this._pdfBug = pdfBug;\n /** @type {PDFObjects} */\n this.commonObjs = transport.commonObjs;\n this.objs = new PDFObjects();\n\n this._maybeCleanupAfterRender = false;\n this._intentStates = new Map();\n this.destroyed = false;\n }\n\n /**\n * @type {number} Page number of the page. First page is 1.\n */\n get pageNumber() {\n return this._pageIndex + 1;\n }\n\n /**\n * @type {number} The number of degrees the page is rotated clockwise.\n */\n get rotate() {\n return this._pageInfo.rotate;\n }\n\n /**\n * @type {RefProxy | null} The reference that points to this page.\n */\n get ref() {\n return this._pageInfo.ref;\n }\n\n /**\n * @type {number} The default size of units in 1/72nds of an inch.\n */\n get userUnit() {\n return this._pageInfo.userUnit;\n }\n\n /**\n * @type {Array<number>} An array of the visible portion of the PDF page in\n * user space units [x1, y1, x2, y2].\n */\n get view() {\n return this._pageInfo.view;\n }\n\n /**\n * @param {GetViewportParameters} params - Viewport parameters.\n * @returns {PageViewport} Contains 'width' and 'height' properties\n * along with transforms required for rendering.\n */\n getViewport({\n scale,\n rotation = this.rotate,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false,\n } = {}) {\n return new PageViewport({\n viewBox: this.view,\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip,\n });\n }\n\n /**\n * @param {GetAnnotationsParameters} params - Annotation parameters.\n * @returns {Promise<Array<any>>} A promise that is resolved with an\n * {Array} of the annotation objects.\n */\n getAnnotations({ intent = \"display\" } = {}) {\n const intentArgs = this._transport.getRenderingIntent(intent);\n\n return this._transport.getAnnotations(\n this._pageIndex,\n intentArgs.renderingIntent\n );\n }\n\n /**\n * @returns {Promise<Object>} A promise that is resolved with an\n * {Object} with JS actions.\n */\n getJSActions() {\n return this._transport.getPageJSActions(this._pageIndex);\n }\n\n /**\n * @type {Object} The filter factory instance.\n */\n get filterFactory() {\n return this._transport.filterFactory;\n }\n\n /**\n * @type {boolean} True if only XFA form.\n */\n get isPureXfa() {\n return shadow(this, \"isPureXfa\", !!this._transport._htmlForXfa);\n }\n\n /**\n * @returns {Promise<Object | null>} A promise that is resolved with\n * an {Object} with a fake DOM object (a tree structure where elements\n * are {Object} with a name, attributes (class, style, ...), value and\n * children, very similar to a HTML DOM tree), or `null` if no XFA exists.\n */\n async getXfa() {\n return this._transport._htmlForXfa?.children[this._pageIndex] || null;\n }\n\n /**\n * Begins the process of rendering a page to the desired context.\n *\n * @param {RenderParameters} params - Page render parameters.\n * @returns {RenderTask} An object that contains a promise that is\n * resolved when the page finishes rendering.\n */\n render({\n canvasContext,\n viewport,\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n transform = null,\n background = null,\n optionalContentConfigPromise = null,\n annotationCanvasMap = null,\n pageColors = null,\n printAnnotationStorage = null,\n }) {\n this._stats?.time(\"Overall\");\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode,\n printAnnotationStorage\n );\n // If there was a pending destroy, cancel it so no cleanup happens during\n // this call to render...\n this.#pendingCleanup = false;\n // ... and ensure that a delayed cleanup is always aborted.\n this.#abortDelayedCleanup();\n\n if (!optionalContentConfigPromise) {\n optionalContentConfigPromise = this._transport.getOptionalContentConfig();\n }\n\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n\n // Ensure that a pending `streamReader` cancel timeout is always aborted.\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n const intentPrint = !!(\n intentArgs.renderingIntent & RenderingIntentFlag.PRINT\n );\n\n // If there's no displayReadyCapability yet, then the operatorList\n // was never requested before. Make the request and create the promise.\n if (!intentState.displayReadyCapability) {\n intentState.displayReadyCapability = new PromiseCapability();\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null,\n };\n\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n\n const complete = error => {\n intentState.renderTasks.delete(internalRenderTask);\n\n // Attempt to reduce memory usage during *printing*, by always running\n // cleanup immediately once rendering has finished.\n if (this._maybeCleanupAfterRender || intentPrint) {\n this.#pendingCleanup = true;\n }\n this.#tryCleanup(/* delayed = */ !intentPrint);\n\n if (error) {\n internalRenderTask.capability.reject(error);\n\n this._abortOperatorList({\n intentState,\n reason: error instanceof Error ? error : new Error(error),\n });\n } else {\n internalRenderTask.capability.resolve();\n }\n\n this._stats?.timeEnd(\"Rendering\");\n this._stats?.timeEnd(\"Overall\");\n };\n\n const internalRenderTask = new InternalRenderTask({\n callback: complete,\n // Only include the required properties, and *not* the entire object.\n params: {\n canvasContext,\n viewport,\n transform,\n background,\n },\n objs: this.objs,\n commonObjs: this.commonObjs,\n annotationCanvasMap,\n operatorList: intentState.operatorList,\n pageIndex: this._pageIndex,\n canvasFactory: this._transport.canvasFactory,\n filterFactory: this._transport.filterFactory,\n useRequestAnimationFrame: !intentPrint,\n pdfBug: this._pdfBug,\n pageColors,\n });\n\n (intentState.renderTasks ||= new Set()).add(internalRenderTask);\n const renderTask = internalRenderTask.task;\n\n Promise.all([\n intentState.displayReadyCapability.promise,\n optionalContentConfigPromise,\n ])\n .then(([transparency, optionalContentConfig]) => {\n if (this.destroyed) {\n complete();\n return;\n }\n this._stats?.time(\"Rendering\");\n\n internalRenderTask.initializeGraphics({\n transparency,\n optionalContentConfig,\n });\n internalRenderTask.operatorListChanged();\n })\n .catch(complete);\n\n return renderTask;\n }\n\n /**\n * @param {GetOperatorListParameters} params - Page getOperatorList\n * parameters.\n * @returns {Promise<PDFOperatorList>} A promise resolved with an\n * {@link PDFOperatorList} object that represents the page's operator list.\n */\n getOperatorList({\n intent = \"display\",\n annotationMode = AnnotationMode.ENABLE,\n printAnnotationStorage = null,\n } = {}) {\n if (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"GENERIC\")) {\n throw new Error(\"Not implemented: getOperatorList\");\n }\n function operatorListChanged() {\n if (intentState.operatorList.lastChunk) {\n intentState.opListReadCapability.resolve(intentState.operatorList);\n\n intentState.renderTasks.delete(opListTask);\n }\n }\n\n const intentArgs = this._transport.getRenderingIntent(\n intent,\n annotationMode,\n printAnnotationStorage,\n /* isOpList = */ true\n );\n let intentState = this._intentStates.get(intentArgs.cacheKey);\n if (!intentState) {\n intentState = Object.create(null);\n this._intentStates.set(intentArgs.cacheKey, intentState);\n }\n let opListTask;\n\n if (!intentState.opListReadCapability) {\n opListTask = Object.create(null);\n opListTask.operatorListChanged = operatorListChanged;\n intentState.opListReadCapability = new PromiseCapability();\n (intentState.renderTasks ||= new Set()).add(opListTask);\n intentState.operatorList = {\n fnArray: [],\n argsArray: [],\n lastChunk: false,\n separateAnnots: null,\n };\n\n this._stats?.time(\"Page Request\");\n this._pumpOperatorList(intentArgs);\n }\n return intentState.opListReadCapability.promise;\n }\n\n /**\n * NOTE: All occurrences of whitespace will be replaced by\n * standard spaces (0x20).\n *\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {ReadableStream} Stream for reading text content chunks.\n */\n streamTextContent({\n includeMarkedContent = false,\n disableNormalization = false,\n } = {}) {\n const TEXT_CONTENT_CHUNK_SIZE = 100;\n\n return this._transport.messageHandler.sendWithStream(\n \"GetTextContent\",\n {\n pageIndex: this._pageIndex,\n includeMarkedContent: includeMarkedContent === true,\n disableNormalization: disableNormalization === true,\n },\n {\n highWaterMark: TEXT_CONTENT_CHUNK_SIZE,\n size(textContent) {\n return textContent.items.length;\n },\n }\n );\n }\n\n /**\n * NOTE: All occurrences of whitespace will be replaced by\n * standard spaces (0x20).\n *\n * @param {getTextContentParameters} params - getTextContent parameters.\n * @returns {Promise<TextContent>} A promise that is resolved with a\n * {@link TextContent} object that represents the page's text content.\n */\n getTextContent(params = {}) {\n if (this._transport._htmlForXfa) {\n // TODO: We need to revisit this once the XFA foreground patch lands and\n // only do this for non-foreground XFA.\n return this.getXfa().then(xfa => {\n return XfaText.textContent(xfa);\n });\n }\n const readableStream = this.streamTextContent(params);\n\n return new Promise(function (resolve, reject) {\n function pump() {\n reader.read().then(function ({ value, done }) {\n if (done) {\n resolve(textContent);\n return;\n }\n Object.assign(textContent.styles, value.styles);\n textContent.items.push(...value.items);\n pump();\n }, reject);\n }\n\n const reader = readableStream.getReader();\n const textContent = {\n items: [],\n styles: Object.create(null),\n };\n pump();\n });\n }\n\n /**\n * @returns {Promise<StructTreeNode>} A promise that is resolved with a\n * {@link StructTreeNode} object that represents the page's structure tree,\n * or `null` when no structure tree is present for the current page.\n */\n getStructTree() {\n return this._transport.getStructTree(this._pageIndex);\n }\n\n /**\n * Destroys the page object.\n * @private\n */\n _destroy() {\n this.destroyed = true;\n\n const waitOn = [];\n for (const intentState of this._intentStates.values()) {\n this._abortOperatorList({\n intentState,\n reason: new Error(\"Page was destroyed.\"),\n force: true,\n });\n\n if (intentState.opListReadCapability) {\n // Avoid errors below, since the renderTasks are just stubs.\n continue;\n }\n for (const internalRenderTask of intentState.renderTasks) {\n waitOn.push(internalRenderTask.completed);\n internalRenderTask.cancel();\n }\n }\n this.objs.clear();\n this.#pendingCleanup = false;\n this.#abortDelayedCleanup();\n\n return Promise.all(waitOn);\n }\n\n /**\n * Cleans up resources allocated by the page.\n *\n * @param {boolean} [resetStats] - Reset page stats, if enabled.\n * The default value is `false`.\n * @returns {boolean} Indicates if clean-up was successfully run.\n */\n cleanup(resetStats = false) {\n this.#pendingCleanup = true;\n const success = this.#tryCleanup(/* delayed = */ false);\n\n if (resetStats && success) {\n this._stats &&= new StatTimer();\n }\n return success;\n }\n\n /**\n * Attempts to clean up if rendering is in a state where that's possible.\n * @param {boolean} [delayed] - Delay the cleanup, to e.g. improve zooming\n * performance in documents with large images.\n * The default value is `false`.\n * @returns {boolean} Indicates if clean-up was successfully run.\n */\n #tryCleanup(delayed = false) {\n this.#abortDelayedCleanup();\n\n if (!this.#pendingCleanup || this.destroyed) {\n return false;\n }\n if (delayed) {\n this.#delayedCleanupTimeout = setTimeout(() => {\n this.#delayedCleanupTimeout = null;\n this.#tryCleanup(/* delayed = */ false);\n }, DELAYED_CLEANUP_TIMEOUT);\n\n return false;\n }\n for (const { renderTasks, operatorList } of this._intentStates.values()) {\n if (renderTasks.size > 0 || !operatorList.lastChunk) {\n return false;\n }\n }\n this._intentStates.clear();\n this.objs.clear();\n this.#pendingCleanup = false;\n return true;\n }\n\n #abortDelayedCleanup() {\n if (this.#delayedCleanupTimeout) {\n clearTimeout(this.#delayedCleanupTimeout);\n this.#delayedCleanupTimeout = null;\n }\n }\n\n /**\n * @private\n */\n _startRenderPage(transparency, cacheKey) {\n const intentState = this._intentStates.get(cacheKey);\n if (!intentState) {\n return; // Rendering was cancelled.\n }\n this._stats?.timeEnd(\"Page Request\");\n\n // TODO Refactor RenderPageRequest to separate rendering\n // and operator list logic\n intentState.displayReadyCapability?.resolve(transparency);\n }\n\n /**\n * @private\n */\n _renderPageChunk(operatorListChunk, intentState) {\n // Add the new chunk to the current operator list.\n for (let i = 0, ii = operatorListChunk.length; i < ii; i++) {\n intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);\n intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);\n }\n intentState.operatorList.lastChunk = operatorListChunk.lastChunk;\n intentState.operatorList.separateAnnots = operatorListChunk.separateAnnots;\n\n // Notify all the rendering tasks there are more operators to be consumed.\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n\n if (operatorListChunk.lastChunk) {\n this.#tryCleanup(/* delayed = */ true);\n }\n }\n\n /**\n * @private\n */\n _pumpOperatorList({\n renderingIntent,\n cacheKey,\n annotationStorageSerializable,\n }) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n Number.isInteger(renderingIntent) && renderingIntent > 0,\n '_pumpOperatorList: Expected valid \"renderingIntent\" argument.'\n );\n }\n const { map, transfer } = annotationStorageSerializable;\n\n const readableStream = this._transport.messageHandler.sendWithStream(\n \"GetOperatorList\",\n {\n pageIndex: this._pageIndex,\n intent: renderingIntent,\n cacheKey,\n annotationStorage: map,\n },\n transfer\n );\n const reader = readableStream.getReader();\n\n const intentState = this._intentStates.get(cacheKey);\n intentState.streamReader = reader;\n\n const pump = () => {\n reader.read().then(\n ({ value, done }) => {\n if (done) {\n intentState.streamReader = null;\n return;\n }\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n this._renderPageChunk(value, intentState);\n pump();\n },\n reason => {\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n if (intentState.operatorList) {\n // Mark operator list as complete.\n intentState.operatorList.lastChunk = true;\n\n for (const internalRenderTask of intentState.renderTasks) {\n internalRenderTask.operatorListChanged();\n }\n this.#tryCleanup(/* delayed = */ true);\n }\n\n if (intentState.displayReadyCapability) {\n intentState.displayReadyCapability.reject(reason);\n } else if (intentState.opListReadCapability) {\n intentState.opListReadCapability.reject(reason);\n } else {\n throw reason;\n }\n }\n );\n };\n pump();\n }\n\n /**\n * @private\n */\n _abortOperatorList({ intentState, reason, force = false }) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n reason instanceof Error,\n '_abortOperatorList: Expected valid \"reason\" argument.'\n );\n }\n\n if (!intentState.streamReader) {\n return;\n }\n // Ensure that a pending `streamReader` cancel timeout is always aborted.\n if (intentState.streamReaderCancelTimeout) {\n clearTimeout(intentState.streamReaderCancelTimeout);\n intentState.streamReaderCancelTimeout = null;\n }\n\n if (!force) {\n // Ensure that an Error occurring in *only* one `InternalRenderTask`, e.g.\n // multiple render() calls on the same canvas, won't break all rendering.\n if (intentState.renderTasks.size > 0) {\n return;\n }\n // Don't immediately abort parsing on the worker-thread when rendering is\n // cancelled, since that will unnecessarily delay re-rendering when (for\n // partially parsed pages) e.g. zooming/rotation occurs in the viewer.\n if (reason instanceof RenderingCancelledException) {\n let delay = RENDERING_CANCELLED_TIMEOUT;\n if (reason.extraDelay > 0 && reason.extraDelay < /* ms = */ 1000) {\n // Above, we prevent the total delay from becoming arbitrarily large.\n delay += reason.extraDelay;\n }\n\n intentState.streamReaderCancelTimeout = setTimeout(() => {\n intentState.streamReaderCancelTimeout = null;\n this._abortOperatorList({ intentState, reason, force: true });\n }, delay);\n return;\n }\n }\n intentState.streamReader\n .cancel(new AbortException(reason.message))\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n intentState.streamReader = null;\n\n if (this._transport.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n // Remove the current `intentState`, since a cancelled `getOperatorList`\n // call on the worker-thread cannot be re-started...\n for (const [curCacheKey, curIntentState] of this._intentStates) {\n if (curIntentState === intentState) {\n this._intentStates.delete(curCacheKey);\n break;\n }\n }\n // ... and force clean-up to ensure that any old state is always removed.\n this.cleanup();\n }\n\n /**\n * @type {StatTimer | null} Returns page stats, if enabled; returns `null`\n * otherwise.\n */\n get stats() {\n return this._stats;\n }\n}\n\nclass LoopbackPort {\n #listeners = new Set();\n\n #deferred = Promise.resolve();\n\n postMessage(obj, transfer) {\n const event = {\n data: structuredClone(obj, transfer ? { transfer } : null),\n };\n\n this.#deferred.then(() => {\n for (const listener of this.#listeners) {\n listener.call(this, event);\n }\n });\n }\n\n addEventListener(name, listener) {\n this.#listeners.add(listener);\n }\n\n removeEventListener(name, listener) {\n this.#listeners.delete(listener);\n }\n\n terminate() {\n this.#listeners.clear();\n }\n}\n\n/**\n * @typedef {Object} PDFWorkerParameters\n * @property {string} [name] - The name of the worker.\n * @property {Worker} [port] - The `workerPort` object.\n * @property {number} [verbosity] - Controls the logging level;\n * the constants from {@link VerbosityLevel} should be used.\n */\n\nconst PDFWorkerUtil = {\n isWorkerDisabled: false,\n fakeWorkerId: 0,\n};\nif (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) {\n if (isNodeJS) {\n // Workers aren't supported in Node.js, force-disabling them there.\n PDFWorkerUtil.isWorkerDisabled = true;\n\n GlobalWorkerOptions.workerSrc ||= PDFJSDev.test(\"LIB\")\n ? \"../pdf.worker.js\"\n : \"./pdf.worker.mjs\";\n }\n\n // Check if URLs have the same origin. For non-HTTP based URLs, returns false.\n PDFWorkerUtil.isSameOrigin = function (baseUrl, otherUrl) {\n let base;\n try {\n base = new URL(baseUrl);\n if (!base.origin || base.origin === \"null\") {\n return false; // non-HTTP url\n }\n } catch {\n return false;\n }\n\n const other = new URL(otherUrl, base);\n return base.origin === other.origin;\n };\n\n PDFWorkerUtil.createCDNWrapper = function (url) {\n // We will rely on blob URL's property to specify origin.\n // We want this function to fail in case if createObjectURL or Blob do not\n // exist or fail for some reason -- our Worker creation will fail anyway.\n const wrapper = `await import(\"${url}\");`;\n return URL.createObjectURL(\n new Blob([wrapper], { type: \"text/javascript\" })\n );\n };\n}\n\n/**\n * PDF.js web worker abstraction that controls the instantiation of PDF\n * documents. Message handlers are used to pass information from the main\n * thread to the worker thread and vice versa. If the creation of a web\n * worker is not possible, a \"fake\" worker will be used instead.\n *\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\nclass PDFWorker {\n static #workerPorts;\n\n constructor({\n name = null,\n port = null,\n verbosity = getVerbosityLevel(),\n } = {}) {\n this.name = name;\n this.destroyed = false;\n this.verbosity = verbosity;\n\n this._readyCapability = new PromiseCapability();\n this._port = null;\n this._webWorker = null;\n this._messageHandler = null;\n\n if (\n (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) &&\n port\n ) {\n if (PDFWorker.#workerPorts?.has(port)) {\n throw new Error(\"Cannot use more than one PDFWorker per port.\");\n }\n (PDFWorker.#workerPorts ||= new WeakMap()).set(port, this);\n this._initializeFromPort(port);\n return;\n }\n this._initialize();\n }\n\n /**\n * Promise for worker initialization completion.\n * @type {Promise<void>}\n */\n get promise() {\n return this._readyCapability.promise;\n }\n\n /**\n * The current `workerPort`, when it exists.\n * @type {Worker}\n */\n get port() {\n return this._port;\n }\n\n /**\n * The current MessageHandler-instance.\n * @type {MessageHandler}\n */\n get messageHandler() {\n return this._messageHandler;\n }\n\n _initializeFromPort(port) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: _initializeFromPort\");\n }\n this._port = port;\n this._messageHandler = new MessageHandler(\"main\", \"worker\", port);\n this._messageHandler.on(\"ready\", function () {\n // Ignoring \"ready\" event -- MessageHandler should already be initialized\n // and ready to accept messages.\n });\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n this._messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n }\n\n _initialize() {\n // If worker support isn't disabled explicit and the browser has worker\n // support, create a new web worker and test if it/the browser fulfills\n // all requirements to run parts of pdf.js in a web worker.\n // Right now, the requirement is, that an Uint8Array is still an\n // Uint8Array as it arrives on the worker. (Chrome added this with v.15.)\n if (\n !PDFWorkerUtil.isWorkerDisabled &&\n !PDFWorker.#mainThreadWorkerMessageHandler\n ) {\n let { workerSrc } = PDFWorker;\n\n try {\n // Wraps workerSrc path into blob URL, if the former does not belong\n // to the same origin.\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"GENERIC\") &&\n !PDFWorkerUtil.isSameOrigin(window.location.href, workerSrc)\n ) {\n workerSrc = PDFWorkerUtil.createCDNWrapper(\n new URL(workerSrc, window.location).href\n );\n }\n\n const worker = new Worker(workerSrc, { type: \"module\" });\n const messageHandler = new MessageHandler(\"main\", \"worker\", worker);\n const terminateEarly = () => {\n worker.removeEventListener(\"error\", onWorkerError);\n messageHandler.destroy();\n worker.terminate();\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n } else {\n // Fall back to fake worker if the termination is caused by an\n // error (e.g. NetworkError / SecurityError).\n this._setupFakeWorker();\n }\n };\n\n const onWorkerError = () => {\n if (!this._webWorker) {\n // Worker failed to initialize due to an error. Clean up and fall\n // back to the fake worker.\n terminateEarly();\n }\n };\n worker.addEventListener(\"error\", onWorkerError);\n\n messageHandler.on(\"test\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n if (data) {\n this._messageHandler = messageHandler;\n this._port = worker;\n this._webWorker = worker;\n\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n } else {\n this._setupFakeWorker();\n messageHandler.destroy();\n worker.terminate();\n }\n });\n\n messageHandler.on(\"ready\", data => {\n worker.removeEventListener(\"error\", onWorkerError);\n if (this.destroyed) {\n terminateEarly();\n return; // worker was destroyed\n }\n try {\n sendTest();\n } catch {\n // We need fallback to a faked worker.\n this._setupFakeWorker();\n }\n });\n\n const sendTest = () => {\n const testObj = new Uint8Array();\n // Ensure that we can use `postMessage` transfers.\n messageHandler.send(\"test\", testObj, [testObj.buffer]);\n };\n\n // It might take time for the worker to initialize. We will try to send\n // the \"test\" message immediately, and once the \"ready\" message arrives.\n // The worker shall process only the first received \"test\" message.\n sendTest();\n return;\n } catch {\n info(\"The worker has been disabled.\");\n }\n }\n // Either workers are disabled, not supported or have thrown an exception.\n // Thus, we fallback to a faked worker.\n this._setupFakeWorker();\n }\n\n _setupFakeWorker() {\n if (!PDFWorkerUtil.isWorkerDisabled) {\n warn(\"Setting up fake worker.\");\n PDFWorkerUtil.isWorkerDisabled = true;\n }\n\n PDFWorker._setupFakeWorkerGlobal\n .then(WorkerMessageHandler => {\n if (this.destroyed) {\n this._readyCapability.reject(new Error(\"Worker was destroyed\"));\n return;\n }\n const port = new LoopbackPort();\n this._port = port;\n\n // All fake workers use the same port, making id unique.\n const id = `fake${PDFWorkerUtil.fakeWorkerId++}`;\n\n // If the main thread is our worker, setup the handling for the\n // messages -- the main thread sends to it self.\n const workerHandler = new MessageHandler(id + \"_worker\", id, port);\n WorkerMessageHandler.setup(workerHandler, port);\n\n const messageHandler = new MessageHandler(id, id + \"_worker\", port);\n this._messageHandler = messageHandler;\n this._readyCapability.resolve();\n // Send global setting, e.g. verbosity level.\n messageHandler.send(\"configure\", {\n verbosity: this.verbosity,\n });\n })\n .catch(reason => {\n this._readyCapability.reject(\n new Error(`Setting up fake worker failed: \"${reason.message}\".`)\n );\n });\n }\n\n /**\n * Destroys the worker instance.\n */\n destroy() {\n this.destroyed = true;\n if (this._webWorker) {\n // We need to terminate only web worker created resource.\n this._webWorker.terminate();\n this._webWorker = null;\n }\n PDFWorker.#workerPorts?.delete(this._port);\n this._port = null;\n if (this._messageHandler) {\n this._messageHandler.destroy();\n this._messageHandler = null;\n }\n }\n\n /**\n * @param {PDFWorkerParameters} params - The worker initialization parameters.\n */\n static fromPort(params) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: fromPort\");\n }\n if (!params?.port) {\n throw new Error(\"PDFWorker.fromPort - invalid method signature.\");\n }\n const cachedPort = this.#workerPorts?.get(params.port);\n if (cachedPort) {\n if (cachedPort._pendingDestroy) {\n throw new Error(\n \"PDFWorker.fromPort - the worker is being destroyed.\\n\" +\n \"Please remember to await `PDFDocumentLoadingTask.destroy()`-calls.\"\n );\n }\n return cachedPort;\n }\n return new PDFWorker(params);\n }\n\n /**\n * The current `workerSrc`, when it exists.\n * @type {string}\n */\n static get workerSrc() {\n if (GlobalWorkerOptions.workerSrc) {\n return GlobalWorkerOptions.workerSrc;\n }\n throw new Error('No \"GlobalWorkerOptions.workerSrc\" specified.');\n }\n\n static get #mainThreadWorkerMessageHandler() {\n try {\n return globalThis.pdfjsWorker?.WorkerMessageHandler || null;\n } catch {\n return null;\n }\n }\n\n // Loads worker code into the main-thread.\n static get _setupFakeWorkerGlobal() {\n const loader = async () => {\n if (this.#mainThreadWorkerMessageHandler) {\n // The worker was already loaded using e.g. a `<script>` tag.\n return this.#mainThreadWorkerMessageHandler;\n }\n const worker =\n typeof PDFJSDev === \"undefined\"\n ? await import(\"pdfjs/pdf.worker.js\")\n : await import(/* webpackIgnore: true */ this.workerSrc);\n return worker.WorkerMessageHandler;\n };\n\n return shadow(this, \"_setupFakeWorkerGlobal\", loader());\n }\n}\n\n/**\n * For internal use only.\n * @ignore\n */\nclass WorkerTransport {\n #methodPromises = new Map();\n\n #pageCache = new Map();\n\n #pagePromises = new Map();\n\n #passwordCapability = null;\n\n constructor(messageHandler, loadingTask, networkStream, params, factory) {\n this.messageHandler = messageHandler;\n this.loadingTask = loadingTask;\n this.commonObjs = new PDFObjects();\n this.fontLoader = new FontLoader({\n ownerDocument: params.ownerDocument,\n styleElement: params.styleElement,\n });\n this._params = params;\n\n this.canvasFactory = factory.canvasFactory;\n this.filterFactory = factory.filterFactory;\n this.cMapReaderFactory = factory.cMapReaderFactory;\n this.standardFontDataFactory = factory.standardFontDataFactory;\n\n this.destroyed = false;\n this.destroyCapability = null;\n\n this._networkStream = networkStream;\n this._fullReader = null;\n this._lastProgress = null;\n this.downloadInfoCapability = new PromiseCapability();\n\n this.setupMessageHandler();\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n // For testing purposes.\n Object.defineProperty(this, \"getXFADatasets\", {\n value: () => {\n return this.messageHandler.sendWithPromise(\"GetXFADatasets\", null);\n },\n });\n Object.defineProperty(this, \"getXRefPrevValue\", {\n value: () => {\n return this.messageHandler.sendWithPromise(\"GetXRefPrevValue\", null);\n },\n });\n Object.defineProperty(this, \"getAnnotArray\", {\n value: pageIndex => {\n return this.messageHandler.sendWithPromise(\"GetAnnotArray\", {\n pageIndex,\n });\n },\n });\n }\n }\n\n #cacheSimpleMethod(name, data = null) {\n const cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler.sendWithPromise(name, data);\n\n this.#methodPromises.set(name, promise);\n return promise;\n }\n\n get annotationStorage() {\n return shadow(this, \"annotationStorage\", new AnnotationStorage());\n }\n\n getRenderingIntent(\n intent,\n annotationMode = AnnotationMode.ENABLE,\n printAnnotationStorage = null,\n isOpList = false\n ) {\n let renderingIntent = RenderingIntentFlag.DISPLAY; // Default value.\n let annotationStorageSerializable = SerializableEmpty;\n\n switch (intent) {\n case \"any\":\n renderingIntent = RenderingIntentFlag.ANY;\n break;\n case \"display\":\n break;\n case \"print\":\n renderingIntent = RenderingIntentFlag.PRINT;\n break;\n default:\n warn(`getRenderingIntent - invalid intent: ${intent}`);\n }\n\n switch (annotationMode) {\n case AnnotationMode.DISABLE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_DISABLE;\n break;\n case AnnotationMode.ENABLE:\n break;\n case AnnotationMode.ENABLE_FORMS:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_FORMS;\n break;\n case AnnotationMode.ENABLE_STORAGE:\n renderingIntent += RenderingIntentFlag.ANNOTATIONS_STORAGE;\n\n const annotationStorage =\n renderingIntent & RenderingIntentFlag.PRINT &&\n printAnnotationStorage instanceof PrintAnnotationStorage\n ? printAnnotationStorage\n : this.annotationStorage;\n\n annotationStorageSerializable = annotationStorage.serializable;\n break;\n default:\n warn(`getRenderingIntent - invalid annotationMode: ${annotationMode}`);\n }\n\n if (isOpList) {\n renderingIntent += RenderingIntentFlag.OPLIST;\n }\n\n return {\n renderingIntent,\n cacheKey: `${renderingIntent}_${annotationStorageSerializable.hash}`,\n annotationStorageSerializable,\n };\n }\n\n destroy() {\n if (this.destroyCapability) {\n return this.destroyCapability.promise;\n }\n\n this.destroyed = true;\n this.destroyCapability = new PromiseCapability();\n\n this.#passwordCapability?.reject(\n new Error(\"Worker was destroyed during onPassword callback\")\n );\n\n const waitOn = [];\n // We need to wait for all renderings to be completed, e.g.\n // timeout/rAF can take a long time.\n for (const page of this.#pageCache.values()) {\n waitOn.push(page._destroy());\n }\n this.#pageCache.clear();\n this.#pagePromises.clear();\n // Allow `AnnotationStorage`-related clean-up when destroying the document.\n if (this.hasOwnProperty(\"annotationStorage\")) {\n this.annotationStorage.resetModified();\n }\n // We also need to wait for the worker to finish its long running tasks.\n const terminated = this.messageHandler.sendWithPromise(\"Terminate\", null);\n waitOn.push(terminated);\n\n Promise.all(waitOn).then(() => {\n this.commonObjs.clear();\n this.fontLoader.clear();\n this.#methodPromises.clear();\n this.filterFactory.destroy();\n\n this._networkStream?.cancelAllRequests(\n new AbortException(\"Worker was terminated.\")\n );\n\n if (this.messageHandler) {\n this.messageHandler.destroy();\n this.messageHandler = null;\n }\n this.destroyCapability.resolve();\n }, this.destroyCapability.reject);\n return this.destroyCapability.promise;\n }\n\n setupMessageHandler() {\n const { messageHandler, loadingTask } = this;\n\n messageHandler.on(\"GetReader\", (data, sink) => {\n assert(\n this._networkStream,\n \"GetReader - no `IPDFStream` instance available.\"\n );\n this._fullReader = this._networkStream.getFullReader();\n this._fullReader.onProgress = evt => {\n this._lastProgress = {\n loaded: evt.loaded,\n total: evt.total,\n };\n };\n sink.onPull = () => {\n this._fullReader\n .read()\n .then(function ({ value, done }) {\n if (done) {\n sink.close();\n return;\n }\n assert(\n value instanceof ArrayBuffer,\n \"GetReader - expected an ArrayBuffer.\"\n );\n // Enqueue data chunk into sink, and transfer it\n // to other side as `Transferable` object.\n sink.enqueue(new Uint8Array(value), 1, [value]);\n })\n .catch(reason => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = reason => {\n this._fullReader.cancel(reason);\n\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n throw readyReason;\n });\n };\n });\n\n messageHandler.on(\"ReaderHeadersReady\", data => {\n const headersCapability = new PromiseCapability();\n const fullReader = this._fullReader;\n fullReader.headersReady.then(() => {\n // If stream or range are disabled, it's our only way to report\n // loading progress.\n if (!fullReader.isStreamingSupported || !fullReader.isRangeSupported) {\n if (this._lastProgress) {\n loadingTask.onProgress?.(this._lastProgress);\n }\n fullReader.onProgress = evt => {\n loadingTask.onProgress?.({\n loaded: evt.loaded,\n total: evt.total,\n });\n };\n }\n\n headersCapability.resolve({\n isStreamingSupported: fullReader.isStreamingSupported,\n isRangeSupported: fullReader.isRangeSupported,\n contentLength: fullReader.contentLength,\n });\n }, headersCapability.reject);\n\n return headersCapability.promise;\n });\n\n messageHandler.on(\"GetRangeReader\", (data, sink) => {\n assert(\n this._networkStream,\n \"GetRangeReader - no `IPDFStream` instance available.\"\n );\n const rangeReader = this._networkStream.getRangeReader(\n data.begin,\n data.end\n );\n\n // When streaming is enabled, it's possible that the data requested here\n // has already been fetched via the `_fullRequestReader` implementation.\n // However, given that the PDF data is loaded asynchronously on the\n // main-thread and then sent via `postMessage` to the worker-thread,\n // it may not have been available during parsing (hence the attempt to\n // use range requests here).\n //\n // To avoid wasting time and resources here, we'll thus *not* dispatch\n // range requests if the data was already loaded but has not been sent to\n // the worker-thread yet (which will happen via the `_fullRequestReader`).\n if (!rangeReader) {\n sink.close();\n return;\n }\n\n sink.onPull = () => {\n rangeReader\n .read()\n .then(function ({ value, done }) {\n if (done) {\n sink.close();\n return;\n }\n assert(\n value instanceof ArrayBuffer,\n \"GetRangeReader - expected an ArrayBuffer.\"\n );\n sink.enqueue(new Uint8Array(value), 1, [value]);\n })\n .catch(reason => {\n sink.error(reason);\n });\n };\n\n sink.onCancel = reason => {\n rangeReader.cancel(reason);\n\n sink.ready.catch(readyReason => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n throw readyReason;\n });\n };\n });\n\n messageHandler.on(\"GetDoc\", ({ pdfInfo }) => {\n this._numPages = pdfInfo.numPages;\n this._htmlForXfa = pdfInfo.htmlForXfa;\n delete pdfInfo.htmlForXfa;\n loadingTask._capability.resolve(new PDFDocumentProxy(pdfInfo, this));\n });\n\n messageHandler.on(\"DocException\", function (ex) {\n let reason;\n switch (ex.name) {\n case \"PasswordException\":\n reason = new PasswordException(ex.message, ex.code);\n break;\n case \"InvalidPDFException\":\n reason = new InvalidPDFException(ex.message);\n break;\n case \"MissingPDFException\":\n reason = new MissingPDFException(ex.message);\n break;\n case \"UnexpectedResponseException\":\n reason = new UnexpectedResponseException(ex.message, ex.status);\n break;\n case \"UnknownErrorException\":\n reason = new UnknownErrorException(ex.message, ex.details);\n break;\n default:\n unreachable(\"DocException - expected a valid Error.\");\n }\n loadingTask._capability.reject(reason);\n });\n\n messageHandler.on(\"PasswordRequest\", exception => {\n this.#passwordCapability = new PromiseCapability();\n\n if (loadingTask.onPassword) {\n const updatePassword = password => {\n if (password instanceof Error) {\n this.#passwordCapability.reject(password);\n } else {\n this.#passwordCapability.resolve({ password });\n }\n };\n try {\n loadingTask.onPassword(updatePassword, exception.code);\n } catch (ex) {\n this.#passwordCapability.reject(ex);\n }\n } else {\n this.#passwordCapability.reject(\n new PasswordException(exception.message, exception.code)\n );\n }\n return this.#passwordCapability.promise;\n });\n\n messageHandler.on(\"DataLoaded\", data => {\n // For consistency: Ensure that progress is always reported when the\n // entire PDF file has been loaded, regardless of how it was fetched.\n loadingTask.onProgress?.({\n loaded: data.length,\n total: data.length,\n });\n\n this.downloadInfoCapability.resolve(data);\n });\n\n messageHandler.on(\"StartRenderPage\", data => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n const page = this.#pageCache.get(data.pageIndex);\n page._startRenderPage(data.transparency, data.cacheKey);\n });\n\n messageHandler.on(\"commonobj\", ([id, type, exportedData]) => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n\n if (this.commonObjs.has(id)) {\n return;\n }\n\n switch (type) {\n case \"Font\":\n const params = this._params;\n\n if (\"error\" in exportedData) {\n const exportedError = exportedData.error;\n warn(`Error during font loading: ${exportedError}`);\n this.commonObjs.resolve(id, exportedError);\n break;\n }\n\n const inspectFont =\n params.pdfBug && globalThis.FontInspector?.enabled\n ? (font, url) => globalThis.FontInspector.fontAdded(font, url)\n : null;\n const font = new FontFaceObject(exportedData, {\n isEvalSupported: params.isEvalSupported,\n disableFontFace: params.disableFontFace,\n ignoreErrors: params.ignoreErrors,\n inspectFont,\n });\n\n this.fontLoader\n .bind(font)\n .catch(reason => {\n return messageHandler.sendWithPromise(\"FontFallback\", { id });\n })\n .finally(() => {\n if (!params.fontExtraProperties && font.data) {\n // Immediately release the `font.data` property once the font\n // has been attached to the DOM, since it's no longer needed,\n // rather than waiting for a `PDFDocumentProxy.cleanup` call.\n // Since `font.data` could be very large, e.g. in some cases\n // multiple megabytes, this will help reduce memory usage.\n font.data = null;\n }\n this.commonObjs.resolve(id, font);\n });\n break;\n case \"FontPath\":\n case \"Image\":\n case \"Pattern\":\n this.commonObjs.resolve(id, exportedData);\n break;\n default:\n throw new Error(`Got unknown common object type ${type}`);\n }\n });\n\n messageHandler.on(\"obj\", ([id, pageIndex, type, imageData]) => {\n if (this.destroyed) {\n // Ignore any pending requests if the worker was terminated.\n return;\n }\n\n const pageProxy = this.#pageCache.get(pageIndex);\n if (pageProxy.objs.has(id)) {\n return;\n }\n // Don't store data *after* cleanup has successfully run, see bug 1854145.\n if (pageProxy._intentStates.size === 0) {\n imageData?.bitmap?.close(); // Release any `ImageBitmap` data.\n return;\n }\n\n switch (type) {\n case \"Image\":\n pageProxy.objs.resolve(id, imageData);\n\n // Heuristic that will allow us not to store large data.\n if (imageData) {\n let length;\n if (imageData.bitmap) {\n const { width, height } = imageData;\n length = width * height * 4;\n } else {\n length = imageData.data?.length || 0;\n }\n\n if (length > MAX_IMAGE_SIZE_TO_CACHE) {\n pageProxy._maybeCleanupAfterRender = true;\n }\n }\n break;\n case \"Pattern\":\n pageProxy.objs.resolve(id, imageData);\n break;\n default:\n throw new Error(`Got unknown object type ${type}`);\n }\n });\n\n messageHandler.on(\"DocProgress\", data => {\n if (this.destroyed) {\n return; // Ignore any pending requests if the worker was terminated.\n }\n loadingTask.onProgress?.({\n loaded: data.loaded,\n total: data.total,\n });\n });\n\n messageHandler.on(\"FetchBuiltInCMap\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n if (!this.cMapReaderFactory) {\n return Promise.reject(\n new Error(\n \"CMapReaderFactory not initialized, see the `useWorkerFetch` parameter.\"\n )\n );\n }\n return this.cMapReaderFactory.fetch(data);\n });\n\n messageHandler.on(\"FetchStandardFontData\", data => {\n if (this.destroyed) {\n return Promise.reject(new Error(\"Worker was destroyed.\"));\n }\n if (!this.standardFontDataFactory) {\n return Promise.reject(\n new Error(\n \"StandardFontDataFactory not initialized, see the `useWorkerFetch` parameter.\"\n )\n );\n }\n return this.standardFontDataFactory.fetch(data);\n });\n }\n\n getData() {\n return this.messageHandler.sendWithPromise(\"GetData\", null);\n }\n\n saveDocument() {\n if (this.annotationStorage.size <= 0) {\n warn(\n \"saveDocument called while `annotationStorage` is empty, \" +\n \"please use the getData-method instead.\"\n );\n }\n const { map, transfer } = this.annotationStorage.serializable;\n\n return this.messageHandler\n .sendWithPromise(\n \"SaveDocument\",\n {\n isPureXfa: !!this._htmlForXfa,\n numPages: this._numPages,\n annotationStorage: map,\n filename: this._fullReader?.filename ?? null,\n },\n transfer\n )\n .finally(() => {\n this.annotationStorage.resetModified();\n });\n }\n\n getPage(pageNumber) {\n if (\n !Number.isInteger(pageNumber) ||\n pageNumber <= 0 ||\n pageNumber > this._numPages\n ) {\n return Promise.reject(new Error(\"Invalid page request.\"));\n }\n\n const pageIndex = pageNumber - 1,\n cachedPromise = this.#pagePromises.get(pageIndex);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler\n .sendWithPromise(\"GetPage\", {\n pageIndex,\n })\n .then(pageInfo => {\n if (this.destroyed) {\n throw new Error(\"Transport destroyed\");\n }\n const page = new PDFPageProxy(\n pageIndex,\n pageInfo,\n this,\n this._params.pdfBug\n );\n this.#pageCache.set(pageIndex, page);\n return page;\n });\n this.#pagePromises.set(pageIndex, promise);\n return promise;\n }\n\n getPageIndex(ref) {\n if (\n typeof ref !== \"object\" ||\n ref === null ||\n !Number.isInteger(ref.num) ||\n ref.num < 0 ||\n !Number.isInteger(ref.gen) ||\n ref.gen < 0\n ) {\n return Promise.reject(new Error(\"Invalid pageIndex request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetPageIndex\", {\n num: ref.num,\n gen: ref.gen,\n });\n }\n\n getAnnotations(pageIndex, intent) {\n return this.messageHandler.sendWithPromise(\"GetAnnotations\", {\n pageIndex,\n intent,\n });\n }\n\n getFieldObjects() {\n return this.#cacheSimpleMethod(\"GetFieldObjects\");\n }\n\n hasJSActions() {\n return this.#cacheSimpleMethod(\"HasJSActions\");\n }\n\n getCalculationOrderIds() {\n return this.messageHandler.sendWithPromise(\"GetCalculationOrderIds\", null);\n }\n\n getDestinations() {\n return this.messageHandler.sendWithPromise(\"GetDestinations\", null);\n }\n\n getDestination(id) {\n if (typeof id !== \"string\") {\n return Promise.reject(new Error(\"Invalid destination request.\"));\n }\n return this.messageHandler.sendWithPromise(\"GetDestination\", {\n id,\n });\n }\n\n getPageLabels() {\n return this.messageHandler.sendWithPromise(\"GetPageLabels\", null);\n }\n\n getPageLayout() {\n return this.messageHandler.sendWithPromise(\"GetPageLayout\", null);\n }\n\n getPageMode() {\n return this.messageHandler.sendWithPromise(\"GetPageMode\", null);\n }\n\n getViewerPreferences() {\n return this.messageHandler.sendWithPromise(\"GetViewerPreferences\", null);\n }\n\n getOpenAction() {\n return this.messageHandler.sendWithPromise(\"GetOpenAction\", null);\n }\n\n getAttachments() {\n return this.messageHandler.sendWithPromise(\"GetAttachments\", null);\n }\n\n getDocJSActions() {\n return this.#cacheSimpleMethod(\"GetDocJSActions\");\n }\n\n getPageJSActions(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetPageJSActions\", {\n pageIndex,\n });\n }\n\n getStructTree(pageIndex) {\n return this.messageHandler.sendWithPromise(\"GetStructTree\", {\n pageIndex,\n });\n }\n\n getOutline() {\n return this.messageHandler.sendWithPromise(\"GetOutline\", null);\n }\n\n getOptionalContentConfig() {\n return this.messageHandler\n .sendWithPromise(\"GetOptionalContentConfig\", null)\n .then(results => {\n return new OptionalContentConfig(results);\n });\n }\n\n getPermissions() {\n return this.messageHandler.sendWithPromise(\"GetPermissions\", null);\n }\n\n getMetadata() {\n const name = \"GetMetadata\",\n cachedPromise = this.#methodPromises.get(name);\n if (cachedPromise) {\n return cachedPromise;\n }\n const promise = this.messageHandler\n .sendWithPromise(name, null)\n .then(results => {\n return {\n info: results[0],\n metadata: results[1] ? new Metadata(results[1]) : null,\n contentDispositionFilename: this._fullReader?.filename ?? null,\n contentLength: this._fullReader?.contentLength ?? null,\n };\n });\n this.#methodPromises.set(name, promise);\n return promise;\n }\n\n getMarkInfo() {\n return this.messageHandler.sendWithPromise(\"GetMarkInfo\", null);\n }\n\n async startCleanup(keepLoadedFonts = false) {\n if (this.destroyed) {\n return; // No need to manually clean-up when destruction has started.\n }\n await this.messageHandler.sendWithPromise(\"Cleanup\", null);\n\n for (const page of this.#pageCache.values()) {\n const cleanupSuccessful = page.cleanup();\n\n if (!cleanupSuccessful) {\n throw new Error(\n `startCleanup: Page ${page.pageNumber} is currently rendering.`\n );\n }\n }\n this.commonObjs.clear();\n if (!keepLoadedFonts) {\n this.fontLoader.clear();\n }\n this.#methodPromises.clear();\n this.filterFactory.destroy(/* keepHCM = */ true);\n }\n\n get loadingParams() {\n const { disableAutoFetch, enableXfa } = this._params;\n return shadow(this, \"loadingParams\", {\n disableAutoFetch,\n enableXfa,\n });\n }\n}\n\n/**\n * A PDF document and page is built of many objects. E.g. there are objects for\n * fonts, images, rendering code, etc. These objects may get processed inside of\n * a worker. This class implements some basic methods to manage these objects.\n */\nclass PDFObjects {\n #objs = Object.create(null);\n\n /**\n * Ensures there is an object defined for `objId`.\n *\n * @param {string} objId\n * @returns {Object}\n */\n #ensureObj(objId) {\n return (this.#objs[objId] ||= {\n capability: new PromiseCapability(),\n data: null,\n });\n }\n\n /**\n * If called *without* callback, this returns the data of `objId` but the\n * object needs to be resolved. If it isn't, this method throws.\n *\n * If called *with* a callback, the callback is called with the data of the\n * object once the object is resolved. That means, if you call this method\n * and the object is already resolved, the callback gets called right away.\n *\n * @param {string} objId\n * @param {function} [callback]\n * @returns {any}\n */\n get(objId, callback = null) {\n // If there is a callback, then the get can be async and the object is\n // not required to be resolved right now.\n if (callback) {\n const obj = this.#ensureObj(objId);\n obj.capability.promise.then(() => callback(obj.data));\n return null;\n }\n // If there isn't a callback, the user expects to get the resolved data\n // directly.\n const obj = this.#objs[objId];\n // If there isn't an object yet or the object isn't resolved, then the\n // data isn't ready yet!\n if (!obj?.capability.settled) {\n throw new Error(`Requesting object that isn't resolved yet ${objId}.`);\n }\n return obj.data;\n }\n\n /**\n * @param {string} objId\n * @returns {boolean}\n */\n has(objId) {\n const obj = this.#objs[objId];\n return obj?.capability.settled || false;\n }\n\n /**\n * Resolves the object `objId` with optional `data`.\n *\n * @param {string} objId\n * @param {any} [data]\n */\n resolve(objId, data = null) {\n const obj = this.#ensureObj(objId);\n obj.data = data;\n obj.capability.resolve();\n }\n\n clear() {\n for (const objId in this.#objs) {\n const { data } = this.#objs[objId];\n data?.bitmap?.close(); // Release any `ImageBitmap` data.\n }\n this.#objs = Object.create(null);\n }\n}\n\n/**\n * Allows controlling of the rendering tasks.\n */\nclass RenderTask {\n #internalRenderTask = null;\n\n constructor(internalRenderTask) {\n this.#internalRenderTask = internalRenderTask;\n\n /**\n * Callback for incremental rendering -- a function that will be called\n * each time the rendering is paused. To continue rendering call the\n * function that is the first argument to the callback.\n * @type {function}\n */\n this.onContinue = null;\n }\n\n /**\n * Promise for rendering task completion.\n * @type {Promise<void>}\n */\n get promise() {\n return this.#internalRenderTask.capability.promise;\n }\n\n /**\n * Cancels the rendering task. If the task is currently rendering it will\n * not be cancelled until graphics pauses with a timeout. The promise that\n * this object extends will be rejected when cancelled.\n *\n * @param {number} [extraDelay]\n */\n cancel(extraDelay = 0) {\n this.#internalRenderTask.cancel(/* error = */ null, extraDelay);\n }\n\n /**\n * Whether form fields are rendered separately from the main operatorList.\n * @type {boolean}\n */\n get separateAnnots() {\n const { separateAnnots } = this.#internalRenderTask.operatorList;\n if (!separateAnnots) {\n return false;\n }\n const { annotationCanvasMap } = this.#internalRenderTask;\n return (\n separateAnnots.form ||\n (separateAnnots.canvas && annotationCanvasMap?.size > 0)\n );\n }\n}\n\n/**\n * For internal use only.\n * @ignore\n */\nclass InternalRenderTask {\n static #canvasInUse = new WeakSet();\n\n constructor({\n callback,\n params,\n objs,\n commonObjs,\n annotationCanvasMap,\n operatorList,\n pageIndex,\n canvasFactory,\n filterFactory,\n useRequestAnimationFrame = false,\n pdfBug = false,\n pageColors = null,\n }) {\n this.callback = callback;\n this.params = params;\n this.objs = objs;\n this.commonObjs = commonObjs;\n this.annotationCanvasMap = annotationCanvasMap;\n this.operatorListIdx = null;\n this.operatorList = operatorList;\n this._pageIndex = pageIndex;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this._pdfBug = pdfBug;\n this.pageColors = pageColors;\n\n this.running = false;\n this.graphicsReadyCallback = null;\n this.graphicsReady = false;\n this._useRequestAnimationFrame =\n useRequestAnimationFrame === true && typeof window !== \"undefined\";\n this.cancelled = false;\n this.capability = new PromiseCapability();\n this.task = new RenderTask(this);\n // caching this-bound methods\n this._cancelBound = this.cancel.bind(this);\n this._continueBound = this._continue.bind(this);\n this._scheduleNextBound = this._scheduleNext.bind(this);\n this._nextBound = this._next.bind(this);\n this._canvas = params.canvasContext.canvas;\n }\n\n get completed() {\n return this.capability.promise.catch(function () {\n // Ignoring errors, since we only want to know when rendering is\n // no longer pending.\n });\n }\n\n initializeGraphics({ transparency = false, optionalContentConfig }) {\n if (this.cancelled) {\n return;\n }\n if (this._canvas) {\n if (InternalRenderTask.#canvasInUse.has(this._canvas)) {\n throw new Error(\n \"Cannot use the same canvas during multiple render() operations. \" +\n \"Use different canvas or ensure previous operations were \" +\n \"cancelled or completed.\"\n );\n }\n InternalRenderTask.#canvasInUse.add(this._canvas);\n }\n\n if (this._pdfBug && globalThis.StepperManager?.enabled) {\n this.stepper = globalThis.StepperManager.create(this._pageIndex);\n this.stepper.init(this.operatorList);\n this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();\n }\n const { canvasContext, viewport, transform, background } = this.params;\n\n this.gfx = new CanvasGraphics(\n canvasContext,\n this.commonObjs,\n this.objs,\n this.canvasFactory,\n this.filterFactory,\n { optionalContentConfig },\n this.annotationCanvasMap,\n this.pageColors\n );\n this.gfx.beginDrawing({\n transform,\n viewport,\n transparency,\n background,\n });\n this.operatorListIdx = 0;\n this.graphicsReady = true;\n this.graphicsReadyCallback?.();\n }\n\n cancel(error = null, extraDelay = 0) {\n this.running = false;\n this.cancelled = true;\n this.gfx?.endDrawing();\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n\n this.callback(\n error ||\n new RenderingCancelledException(\n `Rendering cancelled, page ${this._pageIndex + 1}`,\n extraDelay\n )\n );\n }\n\n operatorListChanged() {\n if (!this.graphicsReady) {\n this.graphicsReadyCallback ||= this._continueBound;\n return;\n }\n this.stepper?.updateOperatorList(this.operatorList);\n\n if (this.running) {\n return;\n }\n this._continue();\n }\n\n _continue() {\n this.running = true;\n if (this.cancelled) {\n return;\n }\n if (this.task.onContinue) {\n this.task.onContinue(this._scheduleNextBound);\n } else {\n this._scheduleNext();\n }\n }\n\n _scheduleNext() {\n if (this._useRequestAnimationFrame) {\n window.requestAnimationFrame(() => {\n this._nextBound().catch(this._cancelBound);\n });\n } else {\n Promise.resolve().then(this._nextBound).catch(this._cancelBound);\n }\n }\n\n async _next() {\n if (this.cancelled) {\n return;\n }\n this.operatorListIdx = this.gfx.executeOperatorList(\n this.operatorList,\n this.operatorListIdx,\n this._continueBound,\n this.stepper\n );\n if (this.operatorListIdx === this.operatorList.argsArray.length) {\n this.running = false;\n if (this.operatorList.lastChunk) {\n this.gfx.endDrawing();\n InternalRenderTask.#canvasInUse.delete(this._canvas);\n\n this.callback();\n }\n }\n }\n}\n\n/** @type {string} */\nconst version =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : null;\n/** @type {string} */\nconst build =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : null;\n\nexport {\n build,\n DefaultCanvasFactory,\n DefaultCMapReaderFactory,\n DefaultFilterFactory,\n DefaultStandardFontDataFactory,\n getDocument,\n LoopbackPort,\n PDFDataRangeTransport,\n PDFDocumentLoadingTask,\n PDFDocumentProxy,\n PDFPageProxy,\n PDFWorker,\n PDFWorkerUtil,\n RenderTask,\n version,\n};\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { CMapCompressionType, unreachable } from \"../shared/util.js\";\n\nclass BaseFilterFactory {\n constructor() {\n if (this.constructor === BaseFilterFactory) {\n unreachable(\"Cannot initialize BaseFilterFactory.\");\n }\n }\n\n addFilter(maps) {\n return \"none\";\n }\n\n addHCMFilter(fgColor, bgColor) {\n return \"none\";\n }\n\n addHighlightHCMFilter(fgColor, bgColor, newFgColor, newBgColor) {\n return \"none\";\n }\n\n destroy(keepHCM = false) {}\n}\n\nclass BaseCanvasFactory {\n constructor() {\n if (this.constructor === BaseCanvasFactory) {\n unreachable(\"Cannot initialize BaseCanvasFactory.\");\n }\n }\n\n create(width, height) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n const canvas = this._createCanvas(width, height);\n return {\n canvas,\n context: canvas.getContext(\"2d\"),\n };\n }\n\n reset(canvasAndContext, width, height) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid canvas size\");\n }\n canvasAndContext.canvas.width = width;\n canvasAndContext.canvas.height = height;\n }\n\n destroy(canvasAndContext) {\n if (!canvasAndContext.canvas) {\n throw new Error(\"Canvas is not specified\");\n }\n // Zeroing the width and height cause Firefox to release graphics\n // resources immediately, which can greatly reduce memory consumption.\n canvasAndContext.canvas.width = 0;\n canvasAndContext.canvas.height = 0;\n canvasAndContext.canvas = null;\n canvasAndContext.context = null;\n }\n\n /**\n * @ignore\n */\n _createCanvas(width, height) {\n unreachable(\"Abstract method `_createCanvas` called.\");\n }\n}\n\nclass BaseCMapReaderFactory {\n constructor({ baseUrl = null, isCompressed = true }) {\n if (this.constructor === BaseCMapReaderFactory) {\n unreachable(\"Cannot initialize BaseCMapReaderFactory.\");\n }\n this.baseUrl = baseUrl;\n this.isCompressed = isCompressed;\n }\n\n async fetch({ name }) {\n if (!this.baseUrl) {\n throw new Error(\n 'The CMap \"baseUrl\" parameter must be specified, ensure that ' +\n 'the \"cMapUrl\" and \"cMapPacked\" API parameters are provided.'\n );\n }\n if (!name) {\n throw new Error(\"CMap name must be specified.\");\n }\n const url = this.baseUrl + name + (this.isCompressed ? \".bcmap\" : \"\");\n const compressionType = this.isCompressed\n ? CMapCompressionType.BINARY\n : CMapCompressionType.NONE;\n\n return this._fetchData(url, compressionType).catch(reason => {\n throw new Error(\n `Unable to load ${this.isCompressed ? \"binary \" : \"\"}CMap at: ${url}`\n );\n });\n }\n\n /**\n * @ignore\n */\n _fetchData(url, compressionType) {\n unreachable(\"Abstract method `_fetchData` called.\");\n }\n}\n\nclass BaseStandardFontDataFactory {\n constructor({ baseUrl = null }) {\n if (this.constructor === BaseStandardFontDataFactory) {\n unreachable(\"Cannot initialize BaseStandardFontDataFactory.\");\n }\n this.baseUrl = baseUrl;\n }\n\n async fetch({ filename }) {\n if (!this.baseUrl) {\n throw new Error(\n 'The standard font \"baseUrl\" parameter must be specified, ensure that ' +\n 'the \"standardFontDataUrl\" API parameter is provided.'\n );\n }\n if (!filename) {\n throw new Error(\"Font filename must be specified.\");\n }\n const url = `${this.baseUrl}${filename}`;\n\n return this._fetchData(url).catch(reason => {\n throw new Error(`Unable to load font data at: ${url}`);\n });\n }\n\n /**\n * @ignore\n */\n _fetchData(url) {\n unreachable(\"Abstract method `_fetchData` called.\");\n }\n}\n\nclass BaseSVGFactory {\n constructor() {\n if (this.constructor === BaseSVGFactory) {\n unreachable(\"Cannot initialize BaseSVGFactory.\");\n }\n }\n\n create(width, height, skipDimensions = false) {\n if (width <= 0 || height <= 0) {\n throw new Error(\"Invalid SVG dimensions\");\n }\n const svg = this._createSVG(\"svg:svg\");\n svg.setAttribute(\"version\", \"1.1\");\n\n if (!skipDimensions) {\n svg.setAttribute(\"width\", `${width}px`);\n svg.setAttribute(\"height\", `${height}px`);\n }\n\n svg.setAttribute(\"preserveAspectRatio\", \"none\");\n svg.setAttribute(\"viewBox\", `0 0 ${width} ${height}`);\n\n return svg;\n }\n\n createElement(type) {\n if (typeof type !== \"string\") {\n throw new Error(\"Invalid SVG element type\");\n }\n return this._createSVG(type);\n }\n\n /**\n * @ignore\n */\n _createSVG(type) {\n unreachable(\"Abstract method `_createSVG` called.\");\n }\n}\n\nexport {\n BaseCanvasFactory,\n BaseCMapReaderFactory,\n BaseFilterFactory,\n BaseStandardFontDataFactory,\n BaseSVGFactory,\n};\n","/* Copyright 2014 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FormatError, info, unreachable, Util } from \"../shared/util.js\";\nimport { getCurrentTransform } from \"./display_utils.js\";\n\nconst PathType = {\n FILL: \"Fill\",\n STROKE: \"Stroke\",\n SHADING: \"Shading\",\n};\n\nfunction applyBoundingBox(ctx, bbox) {\n if (!bbox) {\n return;\n }\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n const region = new Path2D();\n region.rect(bbox[0], bbox[1], width, height);\n ctx.clip(region);\n}\n\nclass BaseShadingPattern {\n constructor() {\n if (this.constructor === BaseShadingPattern) {\n unreachable(\"Cannot initialize BaseShadingPattern.\");\n }\n }\n\n getPattern() {\n unreachable(\"Abstract method `getPattern` called.\");\n }\n}\n\nclass RadialAxialShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._type = IR[1];\n this._bbox = IR[2];\n this._colorStops = IR[3];\n this._p0 = IR[4];\n this._p1 = IR[5];\n this._r0 = IR[6];\n this._r1 = IR[7];\n this.matrix = null;\n }\n\n _createGradient(ctx) {\n let grad;\n if (this._type === \"axial\") {\n grad = ctx.createLinearGradient(\n this._p0[0],\n this._p0[1],\n this._p1[0],\n this._p1[1]\n );\n } else if (this._type === \"radial\") {\n grad = ctx.createRadialGradient(\n this._p0[0],\n this._p0[1],\n this._r0,\n this._p1[0],\n this._p1[1],\n this._r1\n );\n }\n\n for (const colorStop of this._colorStops) {\n grad.addColorStop(colorStop[0], colorStop[1]);\n }\n return grad;\n }\n\n getPattern(ctx, owner, inverse, pathType) {\n let pattern;\n if (pathType === PathType.STROKE || pathType === PathType.FILL) {\n const ownerBBox = owner.current.getClippedPathBoundingBox(\n pathType,\n getCurrentTransform(ctx)\n ) || [0, 0, 0, 0];\n // Create a canvas that is only as big as the current path. This doesn't\n // allow us to cache the pattern, but it generally creates much smaller\n // canvases and saves memory use. See bug 1722807 for an example.\n const width = Math.ceil(ownerBBox[2] - ownerBBox[0]) || 1;\n const height = Math.ceil(ownerBBox[3] - ownerBBox[1]) || 1;\n\n const tmpCanvas = owner.cachedCanvases.getCanvas(\n \"pattern\",\n width,\n height,\n true\n );\n\n const tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n tmpCtx.beginPath();\n tmpCtx.rect(0, 0, tmpCtx.canvas.width, tmpCtx.canvas.height);\n // Non shading fill patterns are positioned relative to the base transform\n // (usually the page's initial transform), but we may have created a\n // smaller canvas based on the path, so we must account for the shift.\n tmpCtx.translate(-ownerBBox[0], -ownerBBox[1]);\n inverse = Util.transform(inverse, [\n 1,\n 0,\n 0,\n 1,\n ownerBBox[0],\n ownerBBox[1],\n ]);\n\n tmpCtx.transform(...owner.baseTransform);\n if (this.matrix) {\n tmpCtx.transform(...this.matrix);\n }\n applyBoundingBox(tmpCtx, this._bbox);\n\n tmpCtx.fillStyle = this._createGradient(tmpCtx);\n tmpCtx.fill();\n\n pattern = ctx.createPattern(tmpCanvas.canvas, \"no-repeat\");\n const domMatrix = new DOMMatrix(inverse);\n pattern.setTransform(domMatrix);\n } else {\n // Shading fills are applied relative to the current matrix which is also\n // how canvas gradients work, so there's no need to do anything special\n // here.\n applyBoundingBox(ctx, this._bbox);\n pattern = this._createGradient(ctx);\n }\n return pattern;\n }\n}\n\nfunction drawTriangle(data, context, p1, p2, p3, c1, c2, c3) {\n // Very basic Gouraud-shaded triangle rasterization algorithm.\n const coords = context.coords,\n colors = context.colors;\n const bytes = data.data,\n rowSize = data.width * 4;\n let tmp;\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n if (coords[p2 + 1] > coords[p3 + 1]) {\n tmp = p2;\n p2 = p3;\n p3 = tmp;\n tmp = c2;\n c2 = c3;\n c3 = tmp;\n }\n if (coords[p1 + 1] > coords[p2 + 1]) {\n tmp = p1;\n p1 = p2;\n p2 = tmp;\n tmp = c1;\n c1 = c2;\n c2 = tmp;\n }\n const x1 = (coords[p1] + context.offsetX) * context.scaleX;\n const y1 = (coords[p1 + 1] + context.offsetY) * context.scaleY;\n const x2 = (coords[p2] + context.offsetX) * context.scaleX;\n const y2 = (coords[p2 + 1] + context.offsetY) * context.scaleY;\n const x3 = (coords[p3] + context.offsetX) * context.scaleX;\n const y3 = (coords[p3 + 1] + context.offsetY) * context.scaleY;\n if (y1 >= y3) {\n return;\n }\n const c1r = colors[c1],\n c1g = colors[c1 + 1],\n c1b = colors[c1 + 2];\n const c2r = colors[c2],\n c2g = colors[c2 + 1],\n c2b = colors[c2 + 2];\n const c3r = colors[c3],\n c3g = colors[c3 + 1],\n c3b = colors[c3 + 2];\n\n const minY = Math.round(y1),\n maxY = Math.round(y3);\n let xa, car, cag, cab;\n let xb, cbr, cbg, cbb;\n for (let y = minY; y <= maxY; y++) {\n if (y < y2) {\n const k = y < y1 ? 0 : (y1 - y) / (y1 - y2);\n xa = x1 - (x1 - x2) * k;\n car = c1r - (c1r - c2r) * k;\n cag = c1g - (c1g - c2g) * k;\n cab = c1b - (c1b - c2b) * k;\n } else {\n let k;\n if (y > y3) {\n k = 1;\n } else if (y2 === y3) {\n k = 0;\n } else {\n k = (y2 - y) / (y2 - y3);\n }\n xa = x2 - (x2 - x3) * k;\n car = c2r - (c2r - c3r) * k;\n cag = c2g - (c2g - c3g) * k;\n cab = c2b - (c2b - c3b) * k;\n }\n\n let k;\n if (y < y1) {\n k = 0;\n } else if (y > y3) {\n k = 1;\n } else {\n k = (y1 - y) / (y1 - y3);\n }\n xb = x1 - (x1 - x3) * k;\n cbr = c1r - (c1r - c3r) * k;\n cbg = c1g - (c1g - c3g) * k;\n cbb = c1b - (c1b - c3b) * k;\n const x1_ = Math.round(Math.min(xa, xb));\n const x2_ = Math.round(Math.max(xa, xb));\n let j = rowSize * y + x1_ * 4;\n for (let x = x1_; x <= x2_; x++) {\n k = (xa - x) / (xa - xb);\n if (k < 0) {\n k = 0;\n } else if (k > 1) {\n k = 1;\n }\n bytes[j++] = (car - (car - cbr) * k) | 0;\n bytes[j++] = (cag - (cag - cbg) * k) | 0;\n bytes[j++] = (cab - (cab - cbb) * k) | 0;\n bytes[j++] = 255;\n }\n }\n}\n\nfunction drawFigure(data, figure, context) {\n const ps = figure.coords;\n const cs = figure.colors;\n let i, ii;\n switch (figure.type) {\n case \"lattice\":\n const verticesPerRow = figure.verticesPerRow;\n const rows = Math.floor(ps.length / verticesPerRow) - 1;\n const cols = verticesPerRow - 1;\n for (i = 0; i < rows; i++) {\n let q = i * verticesPerRow;\n for (let j = 0; j < cols; j++, q++) {\n drawTriangle(\n data,\n context,\n ps[q],\n ps[q + 1],\n ps[q + verticesPerRow],\n cs[q],\n cs[q + 1],\n cs[q + verticesPerRow]\n );\n drawTriangle(\n data,\n context,\n ps[q + verticesPerRow + 1],\n ps[q + 1],\n ps[q + verticesPerRow],\n cs[q + verticesPerRow + 1],\n cs[q + 1],\n cs[q + verticesPerRow]\n );\n }\n }\n break;\n case \"triangles\":\n for (i = 0, ii = ps.length; i < ii; i += 3) {\n drawTriangle(\n data,\n context,\n ps[i],\n ps[i + 1],\n ps[i + 2],\n cs[i],\n cs[i + 1],\n cs[i + 2]\n );\n }\n break;\n default:\n throw new Error(\"illegal figure\");\n }\n}\n\nclass MeshShadingPattern extends BaseShadingPattern {\n constructor(IR) {\n super();\n this._coords = IR[2];\n this._colors = IR[3];\n this._figures = IR[4];\n this._bounds = IR[5];\n this._bbox = IR[7];\n this._background = IR[8];\n this.matrix = null;\n }\n\n _createMeshCanvas(combinedScale, backgroundColor, cachedCanvases) {\n // we will increase scale on some weird factor to let antialiasing take\n // care of \"rough\" edges\n const EXPECTED_SCALE = 1.1;\n // MAX_PATTERN_SIZE is used to avoid OOM situation.\n const MAX_PATTERN_SIZE = 3000; // 10in @ 300dpi shall be enough\n // We need to keep transparent border around our pattern for fill():\n // createPattern with 'no-repeat' will bleed edges across entire area.\n const BORDER_SIZE = 2;\n\n const offsetX = Math.floor(this._bounds[0]);\n const offsetY = Math.floor(this._bounds[1]);\n const boundsWidth = Math.ceil(this._bounds[2]) - offsetX;\n const boundsHeight = Math.ceil(this._bounds[3]) - offsetY;\n\n const width = Math.min(\n Math.ceil(Math.abs(boundsWidth * combinedScale[0] * EXPECTED_SCALE)),\n MAX_PATTERN_SIZE\n );\n const height = Math.min(\n Math.ceil(Math.abs(boundsHeight * combinedScale[1] * EXPECTED_SCALE)),\n MAX_PATTERN_SIZE\n );\n const scaleX = boundsWidth / width;\n const scaleY = boundsHeight / height;\n\n const context = {\n coords: this._coords,\n colors: this._colors,\n offsetX: -offsetX,\n offsetY: -offsetY,\n scaleX: 1 / scaleX,\n scaleY: 1 / scaleY,\n };\n\n const paddedWidth = width + BORDER_SIZE * 2;\n const paddedHeight = height + BORDER_SIZE * 2;\n\n const tmpCanvas = cachedCanvases.getCanvas(\n \"mesh\",\n paddedWidth,\n paddedHeight,\n false\n );\n const tmpCtx = tmpCanvas.context;\n\n const data = tmpCtx.createImageData(width, height);\n if (backgroundColor) {\n const bytes = data.data;\n for (let i = 0, ii = bytes.length; i < ii; i += 4) {\n bytes[i] = backgroundColor[0];\n bytes[i + 1] = backgroundColor[1];\n bytes[i + 2] = backgroundColor[2];\n bytes[i + 3] = 255;\n }\n }\n for (const figure of this._figures) {\n drawFigure(data, figure, context);\n }\n tmpCtx.putImageData(data, BORDER_SIZE, BORDER_SIZE);\n const canvas = tmpCanvas.canvas;\n\n return {\n canvas,\n offsetX: offsetX - BORDER_SIZE * scaleX,\n offsetY: offsetY - BORDER_SIZE * scaleY,\n scaleX,\n scaleY,\n };\n }\n\n getPattern(ctx, owner, inverse, pathType) {\n applyBoundingBox(ctx, this._bbox);\n let scale;\n if (pathType === PathType.SHADING) {\n scale = Util.singularValueDecompose2dScale(getCurrentTransform(ctx));\n } else {\n // Obtain scale from matrix and current transformation matrix.\n scale = Util.singularValueDecompose2dScale(owner.baseTransform);\n if (this.matrix) {\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n scale = [scale[0] * matrixScale[0], scale[1] * matrixScale[1]];\n }\n }\n\n // Rasterizing on the main thread since sending/queue large canvases\n // might cause OOM.\n const temporaryPatternCanvas = this._createMeshCanvas(\n scale,\n pathType === PathType.SHADING ? null : this._background,\n owner.cachedCanvases\n );\n\n if (pathType !== PathType.SHADING) {\n ctx.setTransform(...owner.baseTransform);\n if (this.matrix) {\n ctx.transform(...this.matrix);\n }\n }\n\n ctx.translate(\n temporaryPatternCanvas.offsetX,\n temporaryPatternCanvas.offsetY\n );\n ctx.scale(temporaryPatternCanvas.scaleX, temporaryPatternCanvas.scaleY);\n\n return ctx.createPattern(temporaryPatternCanvas.canvas, \"no-repeat\");\n }\n}\n\nclass DummyShadingPattern extends BaseShadingPattern {\n getPattern() {\n return \"hotpink\";\n }\n}\n\nfunction getShadingPattern(IR) {\n switch (IR[0]) {\n case \"RadialAxial\":\n return new RadialAxialShadingPattern(IR);\n case \"Mesh\":\n return new MeshShadingPattern(IR);\n case \"Dummy\":\n return new DummyShadingPattern();\n }\n throw new Error(`Unknown IR type: ${IR[0]}`);\n}\n\nconst PaintType = {\n COLORED: 1,\n UNCOLORED: 2,\n};\n\nclass TilingPattern {\n // 10in @ 300dpi shall be enough.\n static MAX_PATTERN_SIZE = 3000;\n\n constructor(IR, color, ctx, canvasGraphicsFactory, baseTransform) {\n this.operatorList = IR[2];\n this.matrix = IR[3] || [1, 0, 0, 1, 0, 0];\n this.bbox = IR[4];\n this.xstep = IR[5];\n this.ystep = IR[6];\n this.paintType = IR[7];\n this.tilingType = IR[8];\n this.color = color;\n this.ctx = ctx;\n this.canvasGraphicsFactory = canvasGraphicsFactory;\n this.baseTransform = baseTransform;\n }\n\n createPatternCanvas(owner) {\n const operatorList = this.operatorList;\n const bbox = this.bbox;\n const xstep = this.xstep;\n const ystep = this.ystep;\n const paintType = this.paintType;\n const tilingType = this.tilingType;\n const color = this.color;\n const canvasGraphicsFactory = this.canvasGraphicsFactory;\n\n info(\"TilingType: \" + tilingType);\n\n // A tiling pattern as defined by PDF spec 8.7.2 is a cell whose size is\n // described by bbox, and may repeat regularly by shifting the cell by\n // xstep and ystep.\n // Because the HTML5 canvas API does not support pattern repetition with\n // gaps in between, we use the xstep/ystep instead of the bbox's size.\n //\n // This has the following consequences (similarly for ystep):\n //\n // - If xstep is the same as bbox, then there is no observable difference.\n //\n // - If xstep is larger than bbox, then the pattern canvas is partially\n // empty: the area bounded by bbox is painted, the outside area is void.\n //\n // - If xstep is smaller than bbox, then the pixels between xstep and the\n // bbox boundary will be missing. This is INCORRECT behavior.\n // \"Figures on adjacent tiles should not overlap\" (PDF spec 8.7.3.1),\n // but overlapping cells without common pixels are still valid.\n // TODO: Fix the implementation, to allow this scenario to be painted\n // correctly.\n\n const x0 = bbox[0],\n y0 = bbox[1],\n x1 = bbox[2],\n y1 = bbox[3];\n\n // Obtain scale from matrix and current transformation matrix.\n const matrixScale = Util.singularValueDecompose2dScale(this.matrix);\n const curMatrixScale = Util.singularValueDecompose2dScale(\n this.baseTransform\n );\n const combinedScale = [\n matrixScale[0] * curMatrixScale[0],\n matrixScale[1] * curMatrixScale[1],\n ];\n\n // Use width and height values that are as close as possible to the end\n // result when the pattern is used. Too low value makes the pattern look\n // blurry. Too large value makes it look too crispy.\n const dimx = this.getSizeAndScale(\n xstep,\n this.ctx.canvas.width,\n combinedScale[0]\n );\n const dimy = this.getSizeAndScale(\n ystep,\n this.ctx.canvas.height,\n combinedScale[1]\n );\n\n const tmpCanvas = owner.cachedCanvases.getCanvas(\n \"pattern\",\n dimx.size,\n dimy.size,\n true\n );\n const tmpCtx = tmpCanvas.context;\n const graphics = canvasGraphicsFactory.createCanvasGraphics(tmpCtx);\n graphics.groupLevel = owner.groupLevel;\n\n this.setFillAndStrokeStyleToContext(graphics, paintType, color);\n\n let adjustedX0 = x0;\n let adjustedY0 = y0;\n let adjustedX1 = x1;\n let adjustedY1 = y1;\n // Some bounding boxes have negative x0/y0 coordinates which will cause the\n // some of the drawing to be off of the canvas. To avoid this shift the\n // bounding box over.\n if (x0 < 0) {\n adjustedX0 = 0;\n adjustedX1 += Math.abs(x0);\n }\n if (y0 < 0) {\n adjustedY0 = 0;\n adjustedY1 += Math.abs(y0);\n }\n tmpCtx.translate(-(dimx.scale * adjustedX0), -(dimy.scale * adjustedY0));\n graphics.transform(dimx.scale, 0, 0, dimy.scale, 0, 0);\n\n // To match CanvasGraphics beginDrawing we must save the context here or\n // else we end up with unbalanced save/restores.\n tmpCtx.save();\n\n this.clipBbox(graphics, adjustedX0, adjustedY0, adjustedX1, adjustedY1);\n\n graphics.baseTransform = getCurrentTransform(graphics.ctx);\n\n graphics.executeOperatorList(operatorList);\n\n graphics.endDrawing();\n\n return {\n canvas: tmpCanvas.canvas,\n scaleX: dimx.scale,\n scaleY: dimy.scale,\n offsetX: adjustedX0,\n offsetY: adjustedY0,\n };\n }\n\n getSizeAndScale(step, realOutputSize, scale) {\n // xstep / ystep may be negative -- normalize.\n step = Math.abs(step);\n // MAX_PATTERN_SIZE is used to avoid OOM situation.\n // Use the destination canvas's size if it is bigger than the hard-coded\n // limit of MAX_PATTERN_SIZE to avoid clipping patterns that cover the\n // whole canvas.\n const maxSize = Math.max(TilingPattern.MAX_PATTERN_SIZE, realOutputSize);\n let size = Math.ceil(step * scale);\n if (size >= maxSize) {\n size = maxSize;\n } else {\n scale = size / step;\n }\n return { scale, size };\n }\n\n clipBbox(graphics, x0, y0, x1, y1) {\n const bboxWidth = x1 - x0;\n const bboxHeight = y1 - y0;\n graphics.ctx.rect(x0, y0, bboxWidth, bboxHeight);\n graphics.current.updateRectMinMax(getCurrentTransform(graphics.ctx), [\n x0,\n y0,\n x1,\n y1,\n ]);\n graphics.clip();\n graphics.endPath();\n }\n\n setFillAndStrokeStyleToContext(graphics, paintType, color) {\n const context = graphics.ctx,\n current = graphics.current;\n switch (paintType) {\n case PaintType.COLORED:\n const ctx = this.ctx;\n context.fillStyle = ctx.fillStyle;\n context.strokeStyle = ctx.strokeStyle;\n current.fillColor = ctx.fillStyle;\n current.strokeColor = ctx.strokeStyle;\n break;\n case PaintType.UNCOLORED:\n const cssColor = Util.makeHexColor(color[0], color[1], color[2]);\n context.fillStyle = cssColor;\n context.strokeStyle = cssColor;\n // Set color needed by image masks (fixes issues 3226 and 8741).\n current.fillColor = cssColor;\n current.strokeColor = cssColor;\n break;\n default:\n throw new FormatError(`Unsupported paint type: ${paintType}`);\n }\n }\n\n getPattern(ctx, owner, inverse, pathType) {\n // PDF spec 8.7.2 NOTE 1: pattern's matrix is relative to initial matrix.\n let matrix = inverse;\n if (pathType !== PathType.SHADING) {\n matrix = Util.transform(matrix, owner.baseTransform);\n if (this.matrix) {\n matrix = Util.transform(matrix, this.matrix);\n }\n }\n\n const temporaryPatternCanvas = this.createPatternCanvas(owner);\n\n let domMatrix = new DOMMatrix(matrix);\n // Rescale and so that the ctx.createPattern call generates a pattern with\n // the desired size.\n domMatrix = domMatrix.translate(\n temporaryPatternCanvas.offsetX,\n temporaryPatternCanvas.offsetY\n );\n domMatrix = domMatrix.scale(\n 1 / temporaryPatternCanvas.scaleX,\n 1 / temporaryPatternCanvas.scaleY\n );\n\n const pattern = ctx.createPattern(temporaryPatternCanvas.canvas, \"repeat\");\n pattern.setTransform(domMatrix);\n\n return pattern;\n }\n}\n\nexport { getShadingPattern, PathType, TilingPattern };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { FeatureTest, ImageKind } from \"./util.js\";\n\nfunction convertToRGBA(params) {\n switch (params.kind) {\n case ImageKind.GRAYSCALE_1BPP:\n return convertBlackAndWhiteToRGBA(params);\n case ImageKind.RGB_24BPP:\n return convertRGBToRGBA(params);\n }\n\n return null;\n}\n\nfunction convertBlackAndWhiteToRGBA({\n src,\n srcPos = 0,\n dest,\n width,\n height,\n nonBlackColor = 0xffffffff,\n inverseDecode = false,\n}) {\n const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n const [zeroMapping, oneMapping] = inverseDecode\n ? [nonBlackColor, black]\n : [black, nonBlackColor];\n const widthInSource = width >> 3;\n const widthRemainder = width & 7;\n const srcLength = src.length;\n dest = new Uint32Array(dest.buffer);\n let destPos = 0;\n\n for (let i = 0; i < height; i++) {\n for (const max = srcPos + widthInSource; srcPos < max; srcPos++) {\n const elem = srcPos < srcLength ? src[srcPos] : 255;\n dest[destPos++] = elem & 0b10000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1000 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b100 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b10 ? oneMapping : zeroMapping;\n dest[destPos++] = elem & 0b1 ? oneMapping : zeroMapping;\n }\n if (widthRemainder === 0) {\n continue;\n }\n const elem = srcPos < srcLength ? src[srcPos++] : 255;\n for (let j = 0; j < widthRemainder; j++) {\n dest[destPos++] = elem & (1 << (7 - j)) ? oneMapping : zeroMapping;\n }\n }\n return { srcPos, destPos };\n}\n\nfunction convertRGBToRGBA({\n src,\n srcPos = 0,\n dest,\n destPos = 0,\n width,\n height,\n}) {\n let i = 0;\n const len32 = src.length >> 2;\n const src32 = new Uint32Array(src.buffer, srcPos, len32);\n\n if (FeatureTest.isLittleEndian) {\n // It's a way faster to do the shuffle manually instead of working\n // component by component with some Uint8 arrays.\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i]; // R2B1G1R1\n const s2 = src32[i + 1]; // G3R3B2G2\n const s3 = src32[i + 2]; // B4G4R4B3\n\n dest[destPos] = s1 | 0xff000000;\n dest[destPos + 1] = (s1 >>> 24) | (s2 << 8) | 0xff000000;\n dest[destPos + 2] = (s2 >>> 16) | (s3 << 16) | 0xff000000;\n dest[destPos + 3] = (s3 >>> 8) | 0xff000000;\n }\n\n for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n dest[destPos++] =\n src[j] | (src[j + 1] << 8) | (src[j + 2] << 16) | 0xff000000;\n }\n } else {\n for (; i < len32 - 2; i += 3, destPos += 4) {\n const s1 = src32[i]; // R1G1B1R2\n const s2 = src32[i + 1]; // G2B2R3G3\n const s3 = src32[i + 2]; // B3R4G4B4\n\n dest[destPos] = s1 | 0xff;\n dest[destPos + 1] = (s1 << 24) | (s2 >>> 8) | 0xff;\n dest[destPos + 2] = (s2 << 16) | (s3 >>> 16) | 0xff;\n dest[destPos + 3] = (s3 << 8) | 0xff;\n }\n\n for (let j = i * 4, jj = src.length; j < jj; j += 3) {\n dest[destPos++] =\n (src[j] << 24) | (src[j + 1] << 16) | (src[j + 2] << 8) | 0xff;\n }\n }\n\n return { srcPos, destPos };\n}\n\nfunction grayToRGBA(src, dest) {\n if (FeatureTest.isLittleEndian) {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = (src[i] * 0x10101) | 0xff000000;\n }\n } else {\n for (let i = 0, ii = src.length; i < ii; i++) {\n dest[i] = (src[i] * 0x1010100) | 0x000000ff;\n }\n }\n}\n\nexport { convertBlackAndWhiteToRGBA, convertToRGBA, grayToRGBA };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n FeatureTest,\n FONT_IDENTITY_MATRIX,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n isNodeJS,\n OPS,\n shadow,\n TextRenderingMode,\n unreachable,\n Util,\n warn,\n} from \"../shared/util.js\";\nimport {\n getCurrentTransform,\n getCurrentTransformInverse,\n PixelsPerInch,\n} from \"./display_utils.js\";\nimport {\n getShadingPattern,\n PathType,\n TilingPattern,\n} from \"./pattern_helper.js\";\nimport { convertBlackAndWhiteToRGBA } from \"../shared/image_utils.js\";\n\n// <canvas> contexts store most of the state we need natively.\n// However, PDF needs a bit more state, which we store here.\n// Minimal font size that would be used during canvas fillText operations.\nconst MIN_FONT_SIZE = 16;\n// Maximum font size that would be used during canvas fillText operations.\nconst MAX_FONT_SIZE = 100;\nconst MAX_GROUP_SIZE = 4096;\n\n// Defines the time the `executeOperatorList`-method is going to be executing\n// before it stops and schedules a continue of execution.\nconst EXECUTION_TIME = 15; // ms\n// Defines the number of steps before checking the execution time.\nconst EXECUTION_STEPS = 10;\n\n// To disable Type3 compilation, set the value to `-1`.\nconst MAX_SIZE_TO_COMPILE = 1000;\n\nconst FULL_CHUNK_HEIGHT = 16;\n\n/**\n * Overrides certain methods on a 2d ctx so that when they are called they\n * will also call the same method on the destCtx. The methods that are\n * overridden are all the transformation state modifiers, path creation, and\n * save/restore. We only forward these specific methods because they are the\n * only state modifiers that we cannot copy over when we switch contexts.\n *\n * To remove mirroring call `ctx._removeMirroring()`.\n *\n * @param {Object} ctx - The 2d canvas context that will duplicate its calls on\n * the destCtx.\n * @param {Object} destCtx - The 2d canvas context that will receive the\n * forwarded calls.\n */\nfunction mirrorContextOperations(ctx, destCtx) {\n if (ctx._removeMirroring) {\n throw new Error(\"Context is already forwarding operations.\");\n }\n ctx.__originalSave = ctx.save;\n ctx.__originalRestore = ctx.restore;\n ctx.__originalRotate = ctx.rotate;\n ctx.__originalScale = ctx.scale;\n ctx.__originalTranslate = ctx.translate;\n ctx.__originalTransform = ctx.transform;\n ctx.__originalSetTransform = ctx.setTransform;\n ctx.__originalResetTransform = ctx.resetTransform;\n ctx.__originalClip = ctx.clip;\n ctx.__originalMoveTo = ctx.moveTo;\n ctx.__originalLineTo = ctx.lineTo;\n ctx.__originalBezierCurveTo = ctx.bezierCurveTo;\n ctx.__originalRect = ctx.rect;\n ctx.__originalClosePath = ctx.closePath;\n ctx.__originalBeginPath = ctx.beginPath;\n\n ctx._removeMirroring = () => {\n ctx.save = ctx.__originalSave;\n ctx.restore = ctx.__originalRestore;\n ctx.rotate = ctx.__originalRotate;\n ctx.scale = ctx.__originalScale;\n ctx.translate = ctx.__originalTranslate;\n ctx.transform = ctx.__originalTransform;\n ctx.setTransform = ctx.__originalSetTransform;\n ctx.resetTransform = ctx.__originalResetTransform;\n\n ctx.clip = ctx.__originalClip;\n ctx.moveTo = ctx.__originalMoveTo;\n ctx.lineTo = ctx.__originalLineTo;\n ctx.bezierCurveTo = ctx.__originalBezierCurveTo;\n ctx.rect = ctx.__originalRect;\n ctx.closePath = ctx.__originalClosePath;\n ctx.beginPath = ctx.__originalBeginPath;\n delete ctx._removeMirroring;\n };\n\n ctx.save = function ctxSave() {\n destCtx.save();\n this.__originalSave();\n };\n\n ctx.restore = function ctxRestore() {\n destCtx.restore();\n this.__originalRestore();\n };\n\n ctx.translate = function ctxTranslate(x, y) {\n destCtx.translate(x, y);\n this.__originalTranslate(x, y);\n };\n\n ctx.scale = function ctxScale(x, y) {\n destCtx.scale(x, y);\n this.__originalScale(x, y);\n };\n\n ctx.transform = function ctxTransform(a, b, c, d, e, f) {\n destCtx.transform(a, b, c, d, e, f);\n this.__originalTransform(a, b, c, d, e, f);\n };\n\n ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {\n destCtx.setTransform(a, b, c, d, e, f);\n this.__originalSetTransform(a, b, c, d, e, f);\n };\n\n ctx.resetTransform = function ctxResetTransform() {\n destCtx.resetTransform();\n this.__originalResetTransform();\n };\n\n ctx.rotate = function ctxRotate(angle) {\n destCtx.rotate(angle);\n this.__originalRotate(angle);\n };\n\n ctx.clip = function ctxRotate(rule) {\n destCtx.clip(rule);\n this.__originalClip(rule);\n };\n\n ctx.moveTo = function (x, y) {\n destCtx.moveTo(x, y);\n this.__originalMoveTo(x, y);\n };\n\n ctx.lineTo = function (x, y) {\n destCtx.lineTo(x, y);\n this.__originalLineTo(x, y);\n };\n\n ctx.bezierCurveTo = function (cp1x, cp1y, cp2x, cp2y, x, y) {\n destCtx.bezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n this.__originalBezierCurveTo(cp1x, cp1y, cp2x, cp2y, x, y);\n };\n\n ctx.rect = function (x, y, width, height) {\n destCtx.rect(x, y, width, height);\n this.__originalRect(x, y, width, height);\n };\n\n ctx.closePath = function () {\n destCtx.closePath();\n this.__originalClosePath();\n };\n\n ctx.beginPath = function () {\n destCtx.beginPath();\n this.__originalBeginPath();\n };\n}\n\nclass CachedCanvases {\n constructor(canvasFactory) {\n this.canvasFactory = canvasFactory;\n this.cache = Object.create(null);\n }\n\n getCanvas(id, width, height) {\n let canvasEntry;\n if (this.cache[id] !== undefined) {\n canvasEntry = this.cache[id];\n this.canvasFactory.reset(canvasEntry, width, height);\n } else {\n canvasEntry = this.canvasFactory.create(width, height);\n this.cache[id] = canvasEntry;\n }\n return canvasEntry;\n }\n\n delete(id) {\n delete this.cache[id];\n }\n\n clear() {\n for (const id in this.cache) {\n const canvasEntry = this.cache[id];\n this.canvasFactory.destroy(canvasEntry);\n delete this.cache[id];\n }\n }\n}\n\nfunction drawImageAtIntegerCoords(\n ctx,\n srcImg,\n srcX,\n srcY,\n srcW,\n srcH,\n destX,\n destY,\n destW,\n destH\n) {\n const [a, b, c, d, tx, ty] = getCurrentTransform(ctx);\n if (b === 0 && c === 0) {\n // top-left corner is at (X, Y) and\n // bottom-right one is at (X + width, Y + height).\n\n // If leftX is 4.321 then it's rounded to 4.\n // If width is 10.432 then it's rounded to 11 because\n // rightX = leftX + width = 14.753 which is rounded to 15\n // so after rounding the total width is 11 (15 - 4).\n // It's why we can't just floor/ceil uniformly, it just depends\n // on the values we've.\n\n const tlX = destX * a + tx;\n const rTlX = Math.round(tlX);\n const tlY = destY * d + ty;\n const rTlY = Math.round(tlY);\n const brX = (destX + destW) * a + tx;\n\n // Some pdf contains images with 1x1 images so in case of 0-width after\n // scaling we must fallback on 1 to be sure there is something.\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destY + destH) * d + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n\n // We must apply a transformation in order to apply it on the image itself.\n // For example if a == 1 && d == -1, it means that the image itself is\n // mirrored w.r.t. the x-axis.\n ctx.setTransform(Math.sign(a), 0, 0, Math.sign(d), rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rWidth, rHeight);\n ctx.setTransform(a, b, c, d, tx, ty);\n\n return [rWidth, rHeight];\n }\n\n if (a === 0 && d === 0) {\n // This path is taken in issue9462.pdf (page 3).\n const tlX = destY * c + tx;\n const rTlX = Math.round(tlX);\n const tlY = destX * b + ty;\n const rTlY = Math.round(tlY);\n const brX = (destY + destH) * c + tx;\n const rWidth = Math.abs(Math.round(brX) - rTlX) || 1;\n const brY = (destX + destW) * b + ty;\n const rHeight = Math.abs(Math.round(brY) - rTlY) || 1;\n\n ctx.setTransform(0, Math.sign(b), Math.sign(c), 0, rTlX, rTlY);\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, 0, 0, rHeight, rWidth);\n ctx.setTransform(a, b, c, d, tx, ty);\n\n return [rHeight, rWidth];\n }\n\n // Not a scale matrix so let the render handle the case without rounding.\n ctx.drawImage(srcImg, srcX, srcY, srcW, srcH, destX, destY, destW, destH);\n\n const scaleX = Math.hypot(a, b);\n const scaleY = Math.hypot(c, d);\n return [scaleX * destW, scaleY * destH];\n}\n\nfunction compileType3Glyph(imgData) {\n const { width, height } = imgData;\n if (width > MAX_SIZE_TO_COMPILE || height > MAX_SIZE_TO_COMPILE) {\n return null;\n }\n\n const POINT_TO_PROCESS_LIMIT = 1000;\n const POINT_TYPES = new Uint8Array([\n 0, 2, 4, 0, 1, 0, 5, 4, 8, 10, 0, 8, 0, 2, 1, 0,\n ]);\n\n const width1 = width + 1;\n let points = new Uint8Array(width1 * (height + 1));\n let i, j, j0;\n\n // decodes bit-packed mask data\n const lineSize = (width + 7) & ~7;\n let data = new Uint8Array(lineSize * height),\n pos = 0;\n for (const elem of imgData.data) {\n let mask = 128;\n while (mask > 0) {\n data[pos++] = elem & mask ? 0 : 255;\n mask >>= 1;\n }\n }\n\n // finding interesting points: every point is located between mask pixels,\n // so there will be points of the (width + 1)x(height + 1) grid. Every point\n // will have flags assigned based on neighboring mask pixels:\n // 4 | 8\n // --P--\n // 2 | 1\n // We are interested only in points with the flags:\n // - outside corners: 1, 2, 4, 8;\n // - inside corners: 7, 11, 13, 14;\n // - and, intersections: 5, 10.\n let count = 0;\n pos = 0;\n if (data[pos] !== 0) {\n points[0] = 1;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j] = data[pos] ? 2 : 1;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j] = 2;\n ++count;\n }\n for (i = 1; i < height; i++) {\n pos = i * lineSize;\n j0 = i * width1;\n if (data[pos - lineSize] !== data[pos]) {\n points[j0] = data[pos] ? 1 : 8;\n ++count;\n }\n // 'sum' is the position of the current pixel configuration in the 'TYPES'\n // array (in order 8-1-2-4, so we can use '>>2' to shift the column).\n let sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);\n for (j = 1; j < width; j++) {\n sum =\n (sum >> 2) +\n (data[pos + 1] ? 4 : 0) +\n (data[pos - lineSize + 1] ? 8 : 0);\n if (POINT_TYPES[sum]) {\n points[j0 + j] = POINT_TYPES[sum];\n ++count;\n }\n pos++;\n }\n if (data[pos - lineSize] !== data[pos]) {\n points[j0 + j] = data[pos] ? 2 : 4;\n ++count;\n }\n\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n }\n\n pos = lineSize * (height - 1);\n j0 = i * width1;\n if (data[pos] !== 0) {\n points[j0] = 8;\n ++count;\n }\n for (j = 1; j < width; j++) {\n if (data[pos] !== data[pos + 1]) {\n points[j0 + j] = data[pos] ? 4 : 8;\n ++count;\n }\n pos++;\n }\n if (data[pos] !== 0) {\n points[j0 + j] = 4;\n ++count;\n }\n if (count > POINT_TO_PROCESS_LIMIT) {\n return null;\n }\n\n // building outlines\n const steps = new Int32Array([0, width1, -1, 0, -width1, 0, 0, 0, 1]);\n const path = new Path2D();\n\n for (i = 0; count && i <= height; i++) {\n let p = i * width1;\n const end = p + width;\n while (p < end && !points[p]) {\n p++;\n }\n if (p === end) {\n continue;\n }\n path.moveTo(p % width1, i);\n\n const p0 = p;\n let type = points[p];\n do {\n const step = steps[type];\n do {\n p += step;\n } while (!points[p]);\n\n const pp = points[p];\n if (pp !== 5 && pp !== 10) {\n // set new direction\n type = pp;\n // delete mark\n points[p] = 0;\n } else {\n // type is 5 or 10, ie, a crossing\n // set new direction\n type = pp & ((0x33 * type) >> 4);\n // set new type for \"future hit\"\n points[p] &= (type >> 2) | (type << 2);\n }\n path.lineTo(p % width1, (p / width1) | 0);\n\n if (!points[p]) {\n --count;\n }\n } while (p0 !== p);\n --i;\n }\n\n // Immediately release the, potentially large, `Uint8Array`s after parsing.\n data = null;\n points = null;\n\n const drawOutline = function (c) {\n c.save();\n // the path shall be painted in [0..1]x[0..1] space\n c.scale(1 / width, -1 / height);\n c.translate(0, -height);\n c.fill(path);\n c.beginPath();\n c.restore();\n };\n\n return drawOutline;\n}\n\nclass CanvasExtraState {\n constructor(width, height) {\n // Are soft masks and alpha values shapes or opacities?\n this.alphaIsShape = false;\n this.fontSize = 0;\n this.fontSizeScale = 1;\n this.textMatrix = IDENTITY_MATRIX;\n this.textMatrixScale = 1;\n this.fontMatrix = FONT_IDENTITY_MATRIX;\n this.leading = 0;\n // Current point (in user coordinates)\n this.x = 0;\n this.y = 0;\n // Start of text line (in text coordinates)\n this.lineX = 0;\n this.lineY = 0;\n // Character and word spacing\n this.charSpacing = 0;\n this.wordSpacing = 0;\n this.textHScale = 1;\n this.textRenderingMode = TextRenderingMode.FILL;\n this.textRise = 0;\n // Default fore and background colors\n this.fillColor = \"#000000\";\n this.strokeColor = \"#000000\";\n this.patternFill = false;\n // Note: fill alpha applies to all non-stroking operations\n this.fillAlpha = 1;\n this.strokeAlpha = 1;\n this.lineWidth = 1;\n this.activeSMask = null;\n this.transferMaps = \"none\";\n\n this.startNewPathAndClipBox([0, 0, width, height]);\n }\n\n clone() {\n const clone = Object.create(this);\n clone.clipBox = this.clipBox.slice();\n return clone;\n }\n\n setCurrentPoint(x, y) {\n this.x = x;\n this.y = y;\n }\n\n updatePathMinMax(transform, x, y) {\n [x, y] = Util.applyTransform([x, y], transform);\n this.minX = Math.min(this.minX, x);\n this.minY = Math.min(this.minY, y);\n this.maxX = Math.max(this.maxX, x);\n this.maxY = Math.max(this.maxY, y);\n }\n\n updateRectMinMax(transform, rect) {\n const p1 = Util.applyTransform(rect, transform);\n const p2 = Util.applyTransform(rect.slice(2), transform);\n const p3 = Util.applyTransform([rect[0], rect[3]], transform);\n const p4 = Util.applyTransform([rect[2], rect[1]], transform);\n\n this.minX = Math.min(this.minX, p1[0], p2[0], p3[0], p4[0]);\n this.minY = Math.min(this.minY, p1[1], p2[1], p3[1], p4[1]);\n this.maxX = Math.max(this.maxX, p1[0], p2[0], p3[0], p4[0]);\n this.maxY = Math.max(this.maxY, p1[1], p2[1], p3[1], p4[1]);\n }\n\n updateScalingPathMinMax(transform, minMax) {\n Util.scaleMinMax(transform, minMax);\n this.minX = Math.min(this.minX, minMax[0]);\n this.maxX = Math.max(this.maxX, minMax[1]);\n this.minY = Math.min(this.minY, minMax[2]);\n this.maxY = Math.max(this.maxY, minMax[3]);\n }\n\n updateCurvePathMinMax(transform, x0, y0, x1, y1, x2, y2, x3, y3, minMax) {\n const box = Util.bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3);\n if (minMax) {\n minMax[0] = Math.min(minMax[0], box[0], box[2]);\n minMax[1] = Math.max(minMax[1], box[0], box[2]);\n minMax[2] = Math.min(minMax[2], box[1], box[3]);\n minMax[3] = Math.max(minMax[3], box[1], box[3]);\n return;\n }\n this.updateRectMinMax(transform, box);\n }\n\n getPathBoundingBox(pathType = PathType.FILL, transform = null) {\n const box = [this.minX, this.minY, this.maxX, this.maxY];\n if (pathType === PathType.STROKE) {\n if (!transform) {\n unreachable(\"Stroke bounding box must include transform.\");\n }\n // Stroked paths can be outside of the path bounding box by 1/2 the line\n // width.\n const scale = Util.singularValueDecompose2dScale(transform);\n const xStrokePad = (scale[0] * this.lineWidth) / 2;\n const yStrokePad = (scale[1] * this.lineWidth) / 2;\n box[0] -= xStrokePad;\n box[1] -= yStrokePad;\n box[2] += xStrokePad;\n box[3] += yStrokePad;\n }\n return box;\n }\n\n updateClipFromPath() {\n const intersect = Util.intersect(this.clipBox, this.getPathBoundingBox());\n this.startNewPathAndClipBox(intersect || [0, 0, 0, 0]);\n }\n\n isEmptyClip() {\n return this.minX === Infinity;\n }\n\n startNewPathAndClipBox(box) {\n this.clipBox = box;\n this.minX = Infinity;\n this.minY = Infinity;\n this.maxX = 0;\n this.maxY = 0;\n }\n\n getClippedPathBoundingBox(pathType = PathType.FILL, transform = null) {\n return Util.intersect(\n this.clipBox,\n this.getPathBoundingBox(pathType, transform)\n );\n }\n}\n\nfunction putBinaryImageData(ctx, imgData) {\n if (typeof ImageData !== \"undefined\" && imgData instanceof ImageData) {\n ctx.putImageData(imgData, 0, 0);\n return;\n }\n\n // Put the image data to the canvas in chunks, rather than putting the\n // whole image at once. This saves JS memory, because the ImageData object\n // is smaller. It also possibly saves C++ memory within the implementation\n // of putImageData(). (E.g. in Firefox we make two short-lived copies of\n // the data passed to putImageData()). |n| shouldn't be too small, however,\n // because too many putImageData() calls will slow things down.\n //\n // Note: as written, if the last chunk is partial, the putImageData() call\n // will (conceptually) put pixels past the bounds of the canvas. But\n // that's ok; any such pixels are ignored.\n\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0,\n destPos;\n const src = imgData.data;\n const dest = chunkImgData.data;\n let i, j, thisChunkHeight, elemsInThisChunk;\n\n // There are multiple forms in which the pixel data can be passed, and\n // imgData.kind tells us which one this is.\n if (imgData.kind === ImageKind.GRAYSCALE_1BPP) {\n // Grayscale, 1 bit per pixel (i.e. black-and-white).\n const srcLength = src.byteLength;\n const dest32 = new Uint32Array(dest.buffer, 0, dest.byteLength >> 2);\n const dest32DataLength = dest32.length;\n const fullSrcDiff = (width + 7) >> 3;\n const white = 0xffffffff;\n const black = FeatureTest.isLittleEndian ? 0xff000000 : 0x000000ff;\n\n for (i = 0; i < totalChunks; i++) {\n thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n destPos = 0;\n for (j = 0; j < thisChunkHeight; j++) {\n const srcDiff = srcLength - srcPos;\n let k = 0;\n const kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;\n const kEndUnrolled = kEnd & ~7;\n let mask = 0;\n let srcByte = 0;\n for (; k < kEndUnrolled; k += 8) {\n srcByte = src[srcPos++];\n dest32[destPos++] = srcByte & 128 ? white : black;\n dest32[destPos++] = srcByte & 64 ? white : black;\n dest32[destPos++] = srcByte & 32 ? white : black;\n dest32[destPos++] = srcByte & 16 ? white : black;\n dest32[destPos++] = srcByte & 8 ? white : black;\n dest32[destPos++] = srcByte & 4 ? white : black;\n dest32[destPos++] = srcByte & 2 ? white : black;\n dest32[destPos++] = srcByte & 1 ? white : black;\n }\n for (; k < kEnd; k++) {\n if (mask === 0) {\n srcByte = src[srcPos++];\n mask = 128;\n }\n\n dest32[destPos++] = srcByte & mask ? white : black;\n mask >>= 1;\n }\n }\n // We ran out of input. Make all remaining pixels transparent.\n while (destPos < dest32DataLength) {\n dest32[destPos++] = 0;\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else if (imgData.kind === ImageKind.RGBA_32BPP) {\n // RGBA, 32-bits per pixel.\n j = 0;\n elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;\n for (i = 0; i < fullChunks; i++) {\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n srcPos += elemsInThisChunk;\n\n ctx.putImageData(chunkImgData, 0, j);\n j += FULL_CHUNK_HEIGHT;\n }\n if (i < totalChunks) {\n elemsInThisChunk = width * partialChunkHeight * 4;\n dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));\n\n ctx.putImageData(chunkImgData, 0, j);\n }\n } else if (imgData.kind === ImageKind.RGB_24BPP) {\n // RGB, 24-bits per pixel.\n thisChunkHeight = FULL_CHUNK_HEIGHT;\n elemsInThisChunk = width * thisChunkHeight;\n for (i = 0; i < totalChunks; i++) {\n if (i >= fullChunks) {\n thisChunkHeight = partialChunkHeight;\n elemsInThisChunk = width * thisChunkHeight;\n }\n\n destPos = 0;\n for (j = elemsInThisChunk; j--; ) {\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = src[srcPos++];\n dest[destPos++] = 255;\n }\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n } else {\n throw new Error(`bad image kind: ${imgData.kind}`);\n }\n}\n\nfunction putBinaryImageMask(ctx, imgData) {\n if (imgData.bitmap) {\n // The bitmap has been created in the worker.\n ctx.drawImage(imgData.bitmap, 0, 0);\n return;\n }\n\n // Slow path: OffscreenCanvas isn't available in the worker.\n const height = imgData.height,\n width = imgData.width;\n const partialChunkHeight = height % FULL_CHUNK_HEIGHT;\n const fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;\n const totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;\n\n const chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);\n let srcPos = 0;\n const src = imgData.data;\n const dest = chunkImgData.data;\n\n for (let i = 0; i < totalChunks; i++) {\n const thisChunkHeight =\n i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;\n\n // Expand the mask so it can be used by the canvas. Any required\n // inversion has already been handled.\n\n ({ srcPos } = convertBlackAndWhiteToRGBA({\n src,\n srcPos,\n dest,\n width,\n height: thisChunkHeight,\n nonBlackColor: 0,\n }));\n\n ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);\n }\n}\n\nfunction copyCtxState(sourceCtx, destCtx) {\n const properties = [\n \"strokeStyle\",\n \"fillStyle\",\n \"fillRule\",\n \"globalAlpha\",\n \"lineWidth\",\n \"lineCap\",\n \"lineJoin\",\n \"miterLimit\",\n \"globalCompositeOperation\",\n \"font\",\n \"filter\",\n ];\n for (const property of properties) {\n if (sourceCtx[property] !== undefined) {\n destCtx[property] = sourceCtx[property];\n }\n }\n if (sourceCtx.setLineDash !== undefined) {\n destCtx.setLineDash(sourceCtx.getLineDash());\n destCtx.lineDashOffset = sourceCtx.lineDashOffset;\n }\n}\n\nfunction resetCtxToDefault(ctx) {\n ctx.strokeStyle = ctx.fillStyle = \"#000000\";\n ctx.fillRule = \"nonzero\";\n ctx.globalAlpha = 1;\n ctx.lineWidth = 1;\n ctx.lineCap = \"butt\";\n ctx.lineJoin = \"miter\";\n ctx.miterLimit = 10;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.font = \"10px sans-serif\";\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash([]);\n ctx.lineDashOffset = 0;\n }\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n !isNodeJS\n ) {\n const { filter } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n }\n}\n\nfunction composeSMaskBackdrop(bytes, r0, g0, b0) {\n const length = bytes.length;\n for (let i = 3; i < length; i += 4) {\n const alpha = bytes[i];\n if (alpha === 0) {\n bytes[i - 3] = r0;\n bytes[i - 2] = g0;\n bytes[i - 1] = b0;\n } else if (alpha < 255) {\n const alpha_ = 255 - alpha;\n bytes[i - 3] = (bytes[i - 3] * alpha + r0 * alpha_) >> 8;\n bytes[i - 2] = (bytes[i - 2] * alpha + g0 * alpha_) >> 8;\n bytes[i - 1] = (bytes[i - 1] * alpha + b0 * alpha_) >> 8;\n }\n }\n}\n\nfunction composeSMaskAlpha(maskData, layerData, transferMap) {\n const length = maskData.length;\n const scale = 1 / 255;\n for (let i = 3; i < length; i += 4) {\n const alpha = transferMap ? transferMap[maskData[i]] : maskData[i];\n layerData[i] = (layerData[i] * alpha * scale) | 0;\n }\n}\n\nfunction composeSMaskLuminosity(maskData, layerData, transferMap) {\n const length = maskData.length;\n for (let i = 3; i < length; i += 4) {\n const y =\n maskData[i - 3] * 77 + // * 0.3 / 255 * 0x10000\n maskData[i - 2] * 152 + // * 0.59 ....\n maskData[i - 1] * 28; // * 0.11 ....\n layerData[i] = transferMap\n ? (layerData[i] * transferMap[y >> 8]) >> 8\n : (layerData[i] * y) >> 16;\n }\n}\n\nfunction genericComposeSMask(\n maskCtx,\n layerCtx,\n width,\n height,\n subtype,\n backdrop,\n transferMap,\n layerOffsetX,\n layerOffsetY,\n maskOffsetX,\n maskOffsetY\n) {\n const hasBackdrop = !!backdrop;\n const r0 = hasBackdrop ? backdrop[0] : 0;\n const g0 = hasBackdrop ? backdrop[1] : 0;\n const b0 = hasBackdrop ? backdrop[2] : 0;\n\n const composeFn =\n subtype === \"Luminosity\" ? composeSMaskLuminosity : composeSMaskAlpha;\n\n // processing image in chunks to save memory\n const PIXELS_TO_PROCESS = 1048576;\n const chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));\n for (let row = 0; row < height; row += chunkSize) {\n const chunkHeight = Math.min(chunkSize, height - row);\n const maskData = maskCtx.getImageData(\n layerOffsetX - maskOffsetX,\n row + (layerOffsetY - maskOffsetY),\n width,\n chunkHeight\n );\n const layerData = layerCtx.getImageData(\n layerOffsetX,\n row + layerOffsetY,\n width,\n chunkHeight\n );\n\n if (hasBackdrop) {\n composeSMaskBackdrop(maskData.data, r0, g0, b0);\n }\n composeFn(maskData.data, layerData.data, transferMap);\n\n layerCtx.putImageData(layerData, layerOffsetX, row + layerOffsetY);\n }\n}\n\nfunction composeSMask(ctx, smask, layerCtx, layerBox) {\n const layerOffsetX = layerBox[0];\n const layerOffsetY = layerBox[1];\n const layerWidth = layerBox[2] - layerOffsetX;\n const layerHeight = layerBox[3] - layerOffsetY;\n if (layerWidth === 0 || layerHeight === 0) {\n return;\n }\n genericComposeSMask(\n smask.context,\n layerCtx,\n layerWidth,\n layerHeight,\n smask.subtype,\n smask.backdrop,\n smask.transferMap,\n layerOffsetX,\n layerOffsetY,\n smask.offsetX,\n smask.offsetY\n );\n ctx.save();\n ctx.globalAlpha = 1;\n ctx.globalCompositeOperation = \"source-over\";\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(layerCtx.canvas, 0, 0);\n ctx.restore();\n}\n\nfunction getImageSmoothingEnabled(transform, interpolate) {\n const scale = Util.singularValueDecompose2dScale(transform);\n // Round to a 32bit float so that `<=` check below will pass for numbers that\n // are very close, but not exactly the same 64bit floats.\n scale[0] = Math.fround(scale[0]);\n scale[1] = Math.fround(scale[1]);\n const actualScale = Math.fround(\n (globalThis.devicePixelRatio || 1) * PixelsPerInch.PDF_TO_CSS_UNITS\n );\n if (interpolate !== undefined) {\n // If the value is explicitly set use it.\n return interpolate;\n } else if (scale[0] <= actualScale || scale[1] <= actualScale) {\n // Smooth when downscaling.\n return true;\n }\n // Don't smooth when upscaling.\n return false;\n}\n\nconst LINE_CAP_STYLES = [\"butt\", \"round\", \"square\"];\nconst LINE_JOIN_STYLES = [\"miter\", \"round\", \"bevel\"];\nconst NORMAL_CLIP = {};\nconst EO_CLIP = {};\n\nclass CanvasGraphics {\n constructor(\n canvasCtx,\n commonObjs,\n objs,\n canvasFactory,\n filterFactory,\n { optionalContentConfig, markedContentStack = null },\n annotationCanvasMap,\n pageColors\n ) {\n this.ctx = canvasCtx;\n this.current = new CanvasExtraState(\n this.ctx.canvas.width,\n this.ctx.canvas.height\n );\n this.stateStack = [];\n this.pendingClip = null;\n this.pendingEOFill = false;\n this.res = null;\n this.xobjs = null;\n this.commonObjs = commonObjs;\n this.objs = objs;\n this.canvasFactory = canvasFactory;\n this.filterFactory = filterFactory;\n this.groupStack = [];\n this.processingType3 = null;\n // Patterns are painted relative to the initial page/form transform, see\n // PDF spec 8.7.2 NOTE 1.\n this.baseTransform = null;\n this.baseTransformStack = [];\n this.groupLevel = 0;\n this.smaskStack = [];\n this.smaskCounter = 0;\n this.tempSMask = null;\n this.suspendedCtx = null;\n this.contentVisible = true;\n this.markedContentStack = markedContentStack || [];\n this.optionalContentConfig = optionalContentConfig;\n this.cachedCanvases = new CachedCanvases(this.canvasFactory);\n this.cachedPatterns = new Map();\n this.annotationCanvasMap = annotationCanvasMap;\n this.viewportScale = 1;\n this.outputScaleX = 1;\n this.outputScaleY = 1;\n this.pageColors = pageColors;\n\n this._cachedScaleForStroking = [-1, 0];\n this._cachedGetSinglePixelWidth = null;\n this._cachedBitmapsMap = new Map();\n }\n\n getObject(data, fallback = null) {\n if (typeof data === \"string\") {\n return data.startsWith(\"g_\")\n ? this.commonObjs.get(data)\n : this.objs.get(data);\n }\n return fallback;\n }\n\n beginDrawing({\n transform,\n viewport,\n transparency = false,\n background = null,\n }) {\n // For pdfs that use blend modes we have to clear the canvas else certain\n // blend modes can look wrong since we'd be blending with a white\n // backdrop. The problem with a transparent backdrop though is we then\n // don't get sub pixel anti aliasing on text, creating temporary\n // transparent canvas when we have blend modes.\n const width = this.ctx.canvas.width;\n const height = this.ctx.canvas.height;\n\n const savedFillStyle = this.ctx.fillStyle;\n this.ctx.fillStyle = background || \"#ffffff\";\n this.ctx.fillRect(0, 0, width, height);\n this.ctx.fillStyle = savedFillStyle;\n\n if (transparency) {\n const transparentCanvas = this.cachedCanvases.getCanvas(\n \"transparent\",\n width,\n height\n );\n this.compositeCtx = this.ctx;\n this.transparentCanvas = transparentCanvas.canvas;\n this.ctx = transparentCanvas.context;\n this.ctx.save();\n // The transform can be applied before rendering, transferring it to\n // the new canvas.\n this.ctx.transform(...getCurrentTransform(this.compositeCtx));\n }\n\n this.ctx.save();\n resetCtxToDefault(this.ctx);\n if (transform) {\n this.ctx.transform(...transform);\n this.outputScaleX = transform[0];\n this.outputScaleY = transform[0];\n }\n this.ctx.transform(...viewport.transform);\n this.viewportScale = viewport.scale;\n\n this.baseTransform = getCurrentTransform(this.ctx);\n }\n\n executeOperatorList(\n operatorList,\n executionStartIdx,\n continueCallback,\n stepper\n ) {\n const argsArray = operatorList.argsArray;\n const fnArray = operatorList.fnArray;\n let i = executionStartIdx || 0;\n const argsArrayLen = argsArray.length;\n\n // Sometimes the OperatorList to execute is empty.\n if (argsArrayLen === i) {\n return i;\n }\n\n const chunkOperations =\n argsArrayLen - i > EXECUTION_STEPS &&\n typeof continueCallback === \"function\";\n const endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;\n let steps = 0;\n\n const commonObjs = this.commonObjs;\n const objs = this.objs;\n let fnId;\n\n while (true) {\n if (stepper !== undefined && i === stepper.nextBreakPoint) {\n stepper.breakIt(i, continueCallback);\n return i;\n }\n\n fnId = fnArray[i];\n\n if (fnId !== OPS.dependency) {\n // eslint-disable-next-line prefer-spread\n this[fnId].apply(this, argsArray[i]);\n } else {\n for (const depObjId of argsArray[i]) {\n const objsPool = depObjId.startsWith(\"g_\") ? commonObjs : objs;\n\n // If the promise isn't resolved yet, add the continueCallback\n // to the promise and bail out.\n if (!objsPool.has(depObjId)) {\n objsPool.get(depObjId, continueCallback);\n return i;\n }\n }\n }\n\n i++;\n\n // If the entire operatorList was executed, stop as were done.\n if (i === argsArrayLen) {\n return i;\n }\n\n // If the execution took longer then a certain amount of time and\n // `continueCallback` is specified, interrupt the execution.\n if (chunkOperations && ++steps > EXECUTION_STEPS) {\n if (Date.now() > endTime) {\n continueCallback();\n return i;\n }\n steps = 0;\n }\n\n // If the operatorList isn't executed completely yet OR the execution\n // time was short enough, do another execution round.\n }\n }\n\n #restoreInitialState() {\n // Finishing all opened operations such as SMask group painting.\n while (this.stateStack.length || this.inSMaskMode) {\n this.restore();\n }\n\n this.ctx.restore();\n\n if (this.transparentCanvas) {\n this.ctx = this.compositeCtx;\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0); // Avoid apply transform twice\n this.ctx.drawImage(this.transparentCanvas, 0, 0);\n this.ctx.restore();\n this.transparentCanvas = null;\n }\n }\n\n endDrawing() {\n this.#restoreInitialState();\n\n this.cachedCanvases.clear();\n this.cachedPatterns.clear();\n\n for (const cache of this._cachedBitmapsMap.values()) {\n for (const canvas of cache.values()) {\n if (\n typeof HTMLCanvasElement !== \"undefined\" &&\n canvas instanceof HTMLCanvasElement\n ) {\n canvas.width = canvas.height = 0;\n }\n }\n cache.clear();\n }\n this._cachedBitmapsMap.clear();\n this.#drawFilter();\n }\n\n #drawFilter() {\n if (this.pageColors) {\n const hcmFilterId = this.filterFactory.addHCMFilter(\n this.pageColors.foreground,\n this.pageColors.background\n );\n if (hcmFilterId !== \"none\") {\n const savedFilter = this.ctx.filter;\n this.ctx.filter = hcmFilterId;\n this.ctx.drawImage(this.ctx.canvas, 0, 0);\n this.ctx.filter = savedFilter;\n }\n }\n }\n\n _scaleImage(img, inverseTransform) {\n // Vertical or horizontal scaling shall not be more than 2 to not lose the\n // pixels during drawImage operation, painting on the temporary canvas(es)\n // that are twice smaller in size.\n const width = img.width;\n const height = img.height;\n let widthScale = Math.max(\n Math.hypot(inverseTransform[0], inverseTransform[1]),\n 1\n );\n let heightScale = Math.max(\n Math.hypot(inverseTransform[2], inverseTransform[3]),\n 1\n );\n\n let paintWidth = width,\n paintHeight = height;\n let tmpCanvasId = \"prescale1\";\n let tmpCanvas, tmpCtx;\n while (\n (widthScale > 2 && paintWidth > 1) ||\n (heightScale > 2 && paintHeight > 1)\n ) {\n let newWidth = paintWidth,\n newHeight = paintHeight;\n if (widthScale > 2 && paintWidth > 1) {\n // See bug 1820511 (Windows specific bug).\n // TODO: once the above bug is fixed we could revert to:\n // newWidth = Math.ceil(paintWidth / 2);\n newWidth =\n paintWidth >= 16384\n ? Math.floor(paintWidth / 2) - 1 || 1\n : Math.ceil(paintWidth / 2);\n widthScale /= paintWidth / newWidth;\n }\n if (heightScale > 2 && paintHeight > 1) {\n // TODO: see the comment above.\n newHeight =\n paintHeight >= 16384\n ? Math.floor(paintHeight / 2) - 1 || 1\n : Math.ceil(paintHeight) / 2;\n heightScale /= paintHeight / newHeight;\n }\n tmpCanvas = this.cachedCanvases.getCanvas(\n tmpCanvasId,\n newWidth,\n newHeight\n );\n tmpCtx = tmpCanvas.context;\n tmpCtx.clearRect(0, 0, newWidth, newHeight);\n tmpCtx.drawImage(\n img,\n 0,\n 0,\n paintWidth,\n paintHeight,\n 0,\n 0,\n newWidth,\n newHeight\n );\n img = tmpCanvas.canvas;\n paintWidth = newWidth;\n paintHeight = newHeight;\n tmpCanvasId = tmpCanvasId === \"prescale1\" ? \"prescale2\" : \"prescale1\";\n }\n return {\n img,\n paintWidth,\n paintHeight,\n };\n }\n\n _createMaskCanvas(img) {\n const ctx = this.ctx;\n const { width, height } = img;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n const currentTransform = getCurrentTransform(ctx);\n\n let cache, cacheKey, scaled, maskCanvas;\n if ((img.bitmap || img.data) && img.count > 1) {\n const mainKey = img.bitmap || img.data.buffer;\n // We're reusing the same image several times, so we can cache it.\n // In case we've a pattern fill we just keep the scaled version of\n // the image.\n // Only the scaling part matters, the translation part is just used\n // to compute offsets (but not when filling patterns see #15573).\n // TODO: handle the case of a pattern fill if it's possible.\n cacheKey = JSON.stringify(\n isPatternFill\n ? currentTransform\n : [currentTransform.slice(0, 4), fillColor]\n );\n\n cache = this._cachedBitmapsMap.get(mainKey);\n if (!cache) {\n cache = new Map();\n this._cachedBitmapsMap.set(mainKey, cache);\n }\n const cachedImage = cache.get(cacheKey);\n if (cachedImage && !isPatternFill) {\n const offsetX = Math.round(\n Math.min(currentTransform[0], currentTransform[2]) +\n currentTransform[4]\n );\n const offsetY = Math.round(\n Math.min(currentTransform[1], currentTransform[3]) +\n currentTransform[5]\n );\n return {\n canvas: cachedImage,\n offsetX,\n offsetY,\n };\n }\n scaled = cachedImage;\n }\n\n if (!scaled) {\n maskCanvas = this.cachedCanvases.getCanvas(\"maskCanvas\", width, height);\n putBinaryImageMask(maskCanvas.context, img);\n }\n\n // Create the mask canvas at the size it will be drawn at and also set\n // its transform to match the current transform so if there are any\n // patterns applied they will be applied relative to the correct\n // transform.\n\n let maskToCanvas = Util.transform(currentTransform, [\n 1 / width,\n 0,\n 0,\n -1 / height,\n 0,\n 0,\n ]);\n maskToCanvas = Util.transform(maskToCanvas, [1, 0, 0, 1, 0, -height]);\n const [minX, minY, maxX, maxY] = Util.getAxialAlignedBoundingBox(\n [0, 0, width, height],\n maskToCanvas\n );\n const drawnWidth = Math.round(maxX - minX) || 1;\n const drawnHeight = Math.round(maxY - minY) || 1;\n const fillCanvas = this.cachedCanvases.getCanvas(\n \"fillCanvas\",\n drawnWidth,\n drawnHeight\n );\n const fillCtx = fillCanvas.context;\n\n // The offset will be the top-left cordinate mask.\n // If objToCanvas is [a,b,c,d,e,f] then:\n // - offsetX = min(a, c) + e\n // - offsetY = min(b, d) + f\n const offsetX = minX;\n const offsetY = minY;\n fillCtx.translate(-offsetX, -offsetY);\n fillCtx.transform(...maskToCanvas);\n\n if (!scaled) {\n // Pre-scale if needed to improve image smoothing.\n scaled = this._scaleImage(\n maskCanvas.canvas,\n getCurrentTransformInverse(fillCtx)\n );\n scaled = scaled.img;\n if (cache && isPatternFill) {\n cache.set(cacheKey, scaled);\n }\n }\n\n fillCtx.imageSmoothingEnabled = getImageSmoothingEnabled(\n getCurrentTransform(fillCtx),\n img.interpolate\n );\n\n drawImageAtIntegerCoords(\n fillCtx,\n scaled,\n 0,\n 0,\n scaled.width,\n scaled.height,\n 0,\n 0,\n width,\n height\n );\n fillCtx.globalCompositeOperation = \"source-in\";\n\n const inverse = Util.transform(getCurrentTransformInverse(fillCtx), [\n 1,\n 0,\n 0,\n 1,\n -offsetX,\n -offsetY,\n ]);\n fillCtx.fillStyle = isPatternFill\n ? fillColor.getPattern(ctx, this, inverse, PathType.FILL)\n : fillColor;\n\n fillCtx.fillRect(0, 0, width, height);\n\n if (cache && !isPatternFill) {\n // The fill canvas is put in the cache associated to the mask image\n // so we must remove from the cached canvas: it mustn't be used again.\n this.cachedCanvases.delete(\"fillCanvas\");\n cache.set(cacheKey, fillCanvas.canvas);\n }\n\n // Round the offsets to avoid drawing fractional pixels.\n return {\n canvas: fillCanvas.canvas,\n offsetX: Math.round(offsetX),\n offsetY: Math.round(offsetY),\n };\n }\n\n // Graphics state\n setLineWidth(width) {\n if (width !== this.current.lineWidth) {\n this._cachedScaleForStroking[0] = -1;\n }\n this.current.lineWidth = width;\n this.ctx.lineWidth = width;\n }\n\n setLineCap(style) {\n this.ctx.lineCap = LINE_CAP_STYLES[style];\n }\n\n setLineJoin(style) {\n this.ctx.lineJoin = LINE_JOIN_STYLES[style];\n }\n\n setMiterLimit(limit) {\n this.ctx.miterLimit = limit;\n }\n\n setDash(dashArray, dashPhase) {\n const ctx = this.ctx;\n if (ctx.setLineDash !== undefined) {\n ctx.setLineDash(dashArray);\n ctx.lineDashOffset = dashPhase;\n }\n }\n\n setRenderingIntent(intent) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setFlatness(flatness) {\n // This operation is ignored since we haven't found a use case for it yet.\n }\n\n setGState(states) {\n for (const [key, value] of states) {\n switch (key) {\n case \"LW\":\n this.setLineWidth(value);\n break;\n case \"LC\":\n this.setLineCap(value);\n break;\n case \"LJ\":\n this.setLineJoin(value);\n break;\n case \"ML\":\n this.setMiterLimit(value);\n break;\n case \"D\":\n this.setDash(value[0], value[1]);\n break;\n case \"RI\":\n this.setRenderingIntent(value);\n break;\n case \"FL\":\n this.setFlatness(value);\n break;\n case \"Font\":\n this.setFont(value[0], value[1]);\n break;\n case \"CA\":\n this.current.strokeAlpha = value;\n break;\n case \"ca\":\n this.current.fillAlpha = value;\n this.ctx.globalAlpha = value;\n break;\n case \"BM\":\n this.ctx.globalCompositeOperation = value;\n break;\n case \"SMask\":\n this.current.activeSMask = value ? this.tempSMask : null;\n this.tempSMask = null;\n this.checkSMaskState();\n break;\n case \"TR\":\n this.ctx.filter = this.current.transferMaps =\n this.filterFactory.addFilter(value);\n break;\n }\n }\n }\n\n get inSMaskMode() {\n return !!this.suspendedCtx;\n }\n\n checkSMaskState() {\n const inSMaskMode = this.inSMaskMode;\n if (this.current.activeSMask && !inSMaskMode) {\n this.beginSMaskMode();\n } else if (!this.current.activeSMask && inSMaskMode) {\n this.endSMaskMode();\n }\n // Else, the state is okay and nothing needs to be done.\n }\n\n /**\n * Soft mask mode takes the current main drawing canvas and replaces it with\n * a temporary canvas. Any drawing operations that happen on the temporary\n * canvas need to be composed with the main canvas that was suspended (see\n * `compose()`). The temporary canvas also duplicates many of its operations\n * on the suspended canvas to keep them in sync, so that when the soft mask\n * mode ends any clipping paths or transformations will still be active and in\n * the right order on the canvas' graphics state stack.\n */\n beginSMaskMode() {\n if (this.inSMaskMode) {\n throw new Error(\"beginSMaskMode called while already in smask mode\");\n }\n const drawnWidth = this.ctx.canvas.width;\n const drawnHeight = this.ctx.canvas.height;\n const cacheId = \"smaskGroupAt\" + this.groupLevel;\n const scratchCanvas = this.cachedCanvases.getCanvas(\n cacheId,\n drawnWidth,\n drawnHeight\n );\n this.suspendedCtx = this.ctx;\n this.ctx = scratchCanvas.context;\n const ctx = this.ctx;\n ctx.setTransform(...getCurrentTransform(this.suspendedCtx));\n copyCtxState(this.suspendedCtx, ctx);\n mirrorContextOperations(ctx, this.suspendedCtx);\n\n this.setGState([\n [\"BM\", \"source-over\"],\n [\"ca\", 1],\n [\"CA\", 1],\n ]);\n }\n\n endSMaskMode() {\n if (!this.inSMaskMode) {\n throw new Error(\"endSMaskMode called while not in smask mode\");\n }\n // The soft mask is done, now restore the suspended canvas as the main\n // drawing canvas.\n this.ctx._removeMirroring();\n copyCtxState(this.ctx, this.suspendedCtx);\n this.ctx = this.suspendedCtx;\n\n this.suspendedCtx = null;\n }\n\n compose(dirtyBox) {\n if (!this.current.activeSMask) {\n return;\n }\n\n if (!dirtyBox) {\n dirtyBox = [0, 0, this.ctx.canvas.width, this.ctx.canvas.height];\n } else {\n dirtyBox[0] = Math.floor(dirtyBox[0]);\n dirtyBox[1] = Math.floor(dirtyBox[1]);\n dirtyBox[2] = Math.ceil(dirtyBox[2]);\n dirtyBox[3] = Math.ceil(dirtyBox[3]);\n }\n const smask = this.current.activeSMask;\n const suspendedCtx = this.suspendedCtx;\n\n composeSMask(suspendedCtx, smask, this.ctx, dirtyBox);\n // Whatever was drawn has been moved to the suspended canvas, now clear it\n // out of the current canvas.\n this.ctx.save();\n this.ctx.setTransform(1, 0, 0, 1, 0, 0);\n this.ctx.clearRect(0, 0, this.ctx.canvas.width, this.ctx.canvas.height);\n this.ctx.restore();\n }\n\n save() {\n if (this.inSMaskMode) {\n // SMask mode may be turned on/off causing us to lose graphics state.\n // Copy the temporary canvas state to the main(suspended) canvas to keep\n // it in sync.\n copyCtxState(this.ctx, this.suspendedCtx);\n // Don't bother calling save on the temporary canvas since state is not\n // saved there.\n this.suspendedCtx.save();\n } else {\n this.ctx.save();\n }\n const old = this.current;\n this.stateStack.push(old);\n this.current = old.clone();\n }\n\n restore() {\n if (this.stateStack.length === 0 && this.inSMaskMode) {\n this.endSMaskMode();\n }\n if (this.stateStack.length !== 0) {\n this.current = this.stateStack.pop();\n if (this.inSMaskMode) {\n // Graphics state is stored on the main(suspended) canvas. Restore its\n // state then copy it over to the temporary canvas.\n this.suspendedCtx.restore();\n copyCtxState(this.suspendedCtx, this.ctx);\n } else {\n this.ctx.restore();\n }\n this.checkSMaskState();\n\n // Ensure that the clipping path is reset (fixes issue6413.pdf).\n this.pendingClip = null;\n\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n }\n\n transform(a, b, c, d, e, f) {\n this.ctx.transform(a, b, c, d, e, f);\n\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n }\n\n // Path\n constructPath(ops, args, minMax) {\n const ctx = this.ctx;\n const current = this.current;\n let x = current.x,\n y = current.y;\n let startX, startY;\n const currentTransform = getCurrentTransform(ctx);\n\n // Most of the time the current transform is a scaling matrix\n // so we don't need to transform points before computing min/max:\n // we can compute min/max first and then smartly \"apply\" the\n // transform (see Util.scaleMinMax).\n // For rectangle, moveTo and lineTo, min/max are computed in the\n // worker (see evaluator.js).\n const isScalingMatrix =\n (currentTransform[0] === 0 && currentTransform[3] === 0) ||\n (currentTransform[1] === 0 && currentTransform[2] === 0);\n const minMaxForBezier = isScalingMatrix ? minMax.slice(0) : null;\n\n for (let i = 0, j = 0, ii = ops.length; i < ii; i++) {\n switch (ops[i] | 0) {\n case OPS.rectangle:\n x = args[j++];\n y = args[j++];\n const width = args[j++];\n const height = args[j++];\n\n const xw = x + width;\n const yh = y + height;\n ctx.moveTo(x, y);\n if (width === 0 || height === 0) {\n ctx.lineTo(xw, yh);\n } else {\n ctx.lineTo(xw, y);\n ctx.lineTo(xw, yh);\n ctx.lineTo(x, yh);\n }\n if (!isScalingMatrix) {\n current.updateRectMinMax(currentTransform, [x, y, xw, yh]);\n }\n ctx.closePath();\n break;\n case OPS.moveTo:\n x = args[j++];\n y = args[j++];\n ctx.moveTo(x, y);\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n break;\n case OPS.lineTo:\n x = args[j++];\n y = args[j++];\n ctx.lineTo(x, y);\n if (!isScalingMatrix) {\n current.updatePathMinMax(currentTransform, x, y);\n }\n break;\n case OPS.curveTo:\n startX = x;\n startY = y;\n x = args[j + 4];\n y = args[j + 5];\n ctx.bezierCurveTo(\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3],\n x,\n y\n );\n current.updateCurvePathMinMax(\n currentTransform,\n startX,\n startY,\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3],\n x,\n y,\n minMaxForBezier\n );\n j += 6;\n break;\n case OPS.curveTo2:\n startX = x;\n startY = y;\n ctx.bezierCurveTo(\n x,\n y,\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3]\n );\n current.updateCurvePathMinMax(\n currentTransform,\n startX,\n startY,\n x,\n y,\n args[j],\n args[j + 1],\n args[j + 2],\n args[j + 3],\n minMaxForBezier\n );\n x = args[j + 2];\n y = args[j + 3];\n j += 4;\n break;\n case OPS.curveTo3:\n startX = x;\n startY = y;\n x = args[j + 2];\n y = args[j + 3];\n ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);\n current.updateCurvePathMinMax(\n currentTransform,\n startX,\n startY,\n args[j],\n args[j + 1],\n x,\n y,\n x,\n y,\n minMaxForBezier\n );\n j += 4;\n break;\n case OPS.closePath:\n ctx.closePath();\n break;\n }\n }\n\n if (isScalingMatrix) {\n current.updateScalingPathMinMax(currentTransform, minMaxForBezier);\n }\n\n current.setCurrentPoint(x, y);\n }\n\n closePath() {\n this.ctx.closePath();\n }\n\n stroke(consumePath = true) {\n const ctx = this.ctx;\n const strokeColor = this.current.strokeColor;\n // For stroke we want to temporarily change the global alpha to the\n // stroking alpha.\n ctx.globalAlpha = this.current.strokeAlpha;\n if (this.contentVisible) {\n if (typeof strokeColor === \"object\" && strokeColor?.getPattern) {\n ctx.save();\n ctx.strokeStyle = strokeColor.getPattern(\n ctx,\n this,\n getCurrentTransformInverse(ctx),\n PathType.STROKE\n );\n this.rescaleAndStroke(/* saveRestore */ false);\n ctx.restore();\n } else {\n this.rescaleAndStroke(/* saveRestore */ true);\n }\n }\n if (consumePath) {\n this.consumePath(this.current.getClippedPathBoundingBox());\n }\n // Restore the global alpha to the fill alpha\n ctx.globalAlpha = this.current.fillAlpha;\n }\n\n closeStroke() {\n this.closePath();\n this.stroke();\n }\n\n fill(consumePath = true) {\n const ctx = this.ctx;\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n let needRestore = false;\n\n if (isPatternFill) {\n ctx.save();\n ctx.fillStyle = fillColor.getPattern(\n ctx,\n this,\n getCurrentTransformInverse(ctx),\n PathType.FILL\n );\n needRestore = true;\n }\n\n const intersect = this.current.getClippedPathBoundingBox();\n if (this.contentVisible && intersect !== null) {\n if (this.pendingEOFill) {\n ctx.fill(\"evenodd\");\n this.pendingEOFill = false;\n } else {\n ctx.fill();\n }\n }\n\n if (needRestore) {\n ctx.restore();\n }\n if (consumePath) {\n this.consumePath(intersect);\n }\n }\n\n eoFill() {\n this.pendingEOFill = true;\n this.fill();\n }\n\n fillStroke() {\n this.fill(false);\n this.stroke(false);\n\n this.consumePath();\n }\n\n eoFillStroke() {\n this.pendingEOFill = true;\n this.fillStroke();\n }\n\n closeFillStroke() {\n this.closePath();\n this.fillStroke();\n }\n\n closeEOFillStroke() {\n this.pendingEOFill = true;\n this.closePath();\n this.fillStroke();\n }\n\n endPath() {\n this.consumePath();\n }\n\n // Clipping\n clip() {\n this.pendingClip = NORMAL_CLIP;\n }\n\n eoClip() {\n this.pendingClip = EO_CLIP;\n }\n\n // Text\n beginText() {\n this.current.textMatrix = IDENTITY_MATRIX;\n this.current.textMatrixScale = 1;\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n\n endText() {\n const paths = this.pendingTextPaths;\n const ctx = this.ctx;\n if (paths === undefined) {\n ctx.beginPath();\n return;\n }\n\n ctx.save();\n ctx.beginPath();\n for (const path of paths) {\n ctx.setTransform(...path.transform);\n ctx.translate(path.x, path.y);\n path.addToPath(ctx, path.fontSize);\n }\n ctx.restore();\n ctx.clip();\n ctx.beginPath();\n delete this.pendingTextPaths;\n }\n\n setCharSpacing(spacing) {\n this.current.charSpacing = spacing;\n }\n\n setWordSpacing(spacing) {\n this.current.wordSpacing = spacing;\n }\n\n setHScale(scale) {\n this.current.textHScale = scale / 100;\n }\n\n setLeading(leading) {\n this.current.leading = -leading;\n }\n\n setFont(fontRefName, size) {\n const fontObj = this.commonObjs.get(fontRefName);\n const current = this.current;\n\n if (!fontObj) {\n throw new Error(`Can't find font for ${fontRefName}`);\n }\n current.fontMatrix = fontObj.fontMatrix || FONT_IDENTITY_MATRIX;\n\n // A valid matrix needs all main diagonal elements to be non-zero\n // This also ensures we bypass FF bugzilla bug #719844.\n if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {\n warn(\"Invalid font matrix for font \" + fontRefName);\n }\n\n // The spec for Tf (setFont) says that 'size' specifies the font 'scale',\n // and in some docs this can be negative (inverted x-y axes).\n if (size < 0) {\n size = -size;\n current.fontDirection = -1;\n } else {\n current.fontDirection = 1;\n }\n\n this.current.font = fontObj;\n this.current.fontSize = size;\n\n if (fontObj.isType3Font) {\n return; // we don't need ctx.font for Type3 fonts\n }\n\n const name = fontObj.loadedName || \"sans-serif\";\n const typeface =\n fontObj.systemFontInfo?.css || `\"${name}\", ${fontObj.fallbackName}`;\n\n let bold = \"normal\";\n if (fontObj.black) {\n bold = \"900\";\n } else if (fontObj.bold) {\n bold = \"bold\";\n }\n const italic = fontObj.italic ? \"italic\" : \"normal\";\n\n // Some font backends cannot handle fonts below certain size.\n // Keeping the font at minimal size and using the fontSizeScale to change\n // the current transformation matrix before the fillText/strokeText.\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=726227\n let browserFontSize = size;\n if (size < MIN_FONT_SIZE) {\n browserFontSize = MIN_FONT_SIZE;\n } else if (size > MAX_FONT_SIZE) {\n browserFontSize = MAX_FONT_SIZE;\n }\n this.current.fontSizeScale = size / browserFontSize;\n\n this.ctx.font = `${italic} ${bold} ${browserFontSize}px ${typeface}`;\n }\n\n setTextRenderingMode(mode) {\n this.current.textRenderingMode = mode;\n }\n\n setTextRise(rise) {\n this.current.textRise = rise;\n }\n\n moveText(x, y) {\n this.current.x = this.current.lineX += x;\n this.current.y = this.current.lineY += y;\n }\n\n setLeadingMoveText(x, y) {\n this.setLeading(-y);\n this.moveText(x, y);\n }\n\n setTextMatrix(a, b, c, d, e, f) {\n this.current.textMatrix = [a, b, c, d, e, f];\n this.current.textMatrixScale = Math.hypot(a, b);\n\n this.current.x = this.current.lineX = 0;\n this.current.y = this.current.lineY = 0;\n }\n\n nextLine() {\n this.moveText(0, this.current.leading);\n }\n\n paintChar(character, x, y, patternTransform) {\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const textRenderingMode = current.textRenderingMode;\n const fontSize = current.fontSize / current.fontSizeScale;\n const fillStrokeMode =\n textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n const isAddToPathSet = !!(\n textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG\n );\n const patternFill = current.patternFill && !font.missingFile;\n\n let addToPath;\n if (font.disableFontFace || isAddToPathSet || patternFill) {\n addToPath = font.getPathGenerator(this.commonObjs, character);\n }\n\n if (font.disableFontFace || patternFill) {\n ctx.save();\n ctx.translate(x, y);\n ctx.beginPath();\n addToPath(ctx, fontSize);\n if (patternTransform) {\n ctx.setTransform(...patternTransform);\n }\n if (\n fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.fill();\n }\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.stroke();\n }\n ctx.restore();\n } else {\n if (\n fillStrokeMode === TextRenderingMode.FILL ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.fillText(character, x, y);\n }\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n ctx.strokeText(character, x, y);\n }\n }\n\n if (isAddToPathSet) {\n const paths = (this.pendingTextPaths ||= []);\n paths.push({\n transform: getCurrentTransform(ctx),\n x,\n y,\n fontSize,\n addToPath,\n });\n }\n }\n\n get isFontSubpixelAAEnabled() {\n // Checks if anti-aliasing is enabled when scaled text is painted.\n // On Windows GDI scaled fonts looks bad.\n const { context: ctx } = this.cachedCanvases.getCanvas(\n \"isFontSubpixelAAEnabled\",\n 10,\n 10\n );\n ctx.scale(1.5, 1);\n ctx.fillText(\"I\", 0, 10);\n const data = ctx.getImageData(0, 0, 10, 10).data;\n let enabled = false;\n for (let i = 3; i < data.length; i += 4) {\n if (data[i] > 0 && data[i] < 255) {\n enabled = true;\n break;\n }\n }\n return shadow(this, \"isFontSubpixelAAEnabled\", enabled);\n }\n\n showText(glyphs) {\n const current = this.current;\n const font = current.font;\n if (font.isType3Font) {\n return this.showType3Text(glyphs);\n }\n\n const fontSize = current.fontSize;\n if (fontSize === 0) {\n return undefined;\n }\n\n const ctx = this.ctx;\n const fontSizeScale = current.fontSizeScale;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const fontDirection = current.fontDirection;\n const textHScale = current.textHScale * fontDirection;\n const glyphsLength = glyphs.length;\n const vertical = font.vertical;\n const spacingDir = vertical ? 1 : -1;\n const defaultVMetrics = font.defaultVMetrics;\n const widthAdvanceScale = fontSize * current.fontMatrix[0];\n\n const simpleFillText =\n current.textRenderingMode === TextRenderingMode.FILL &&\n !font.disableFontFace &&\n !current.patternFill;\n\n ctx.save();\n ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y + current.textRise);\n\n if (fontDirection > 0) {\n ctx.scale(textHScale, -1);\n } else {\n ctx.scale(textHScale, 1);\n }\n\n let patternTransform;\n if (current.patternFill) {\n ctx.save();\n const pattern = current.fillColor.getPattern(\n ctx,\n this,\n getCurrentTransformInverse(ctx),\n PathType.FILL\n );\n patternTransform = getCurrentTransform(ctx);\n ctx.restore();\n ctx.fillStyle = pattern;\n }\n\n let lineWidth = current.lineWidth;\n const scale = current.textMatrixScale;\n if (scale === 0 || lineWidth === 0) {\n const fillStrokeMode =\n current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;\n if (\n fillStrokeMode === TextRenderingMode.STROKE ||\n fillStrokeMode === TextRenderingMode.FILL_STROKE\n ) {\n lineWidth = this.getSinglePixelWidth();\n }\n } else {\n lineWidth /= scale;\n }\n\n if (fontSizeScale !== 1.0) {\n ctx.scale(fontSizeScale, fontSizeScale);\n lineWidth /= fontSizeScale;\n }\n\n ctx.lineWidth = lineWidth;\n\n if (font.isInvalidPDFjsFont) {\n const chars = [];\n let width = 0;\n for (const glyph of glyphs) {\n chars.push(glyph.unicode);\n width += glyph.width;\n }\n ctx.fillText(chars.join(\"\"), 0, 0);\n current.x += width * widthAdvanceScale * textHScale;\n ctx.restore();\n this.compose();\n\n return undefined;\n }\n\n let x = 0,\n i;\n for (i = 0; i < glyphsLength; ++i) {\n const glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n x += (spacingDir * glyph * fontSize) / 1000;\n continue;\n }\n\n let restoreNeeded = false;\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const character = glyph.fontChar;\n const accent = glyph.accent;\n let scaledX, scaledY;\n let width = glyph.width;\n if (vertical) {\n const vmetric = glyph.vmetric || defaultVMetrics;\n const vx =\n -(glyph.vmetric ? vmetric[1] : width * 0.5) * widthAdvanceScale;\n const vy = vmetric[2] * widthAdvanceScale;\n\n width = vmetric ? -vmetric[0] : width;\n scaledX = vx / fontSizeScale;\n scaledY = (x + vy) / fontSizeScale;\n } else {\n scaledX = x / fontSizeScale;\n scaledY = 0;\n }\n\n if (font.remeasure && width > 0) {\n // Some standard fonts may not have the exact width: rescale per\n // character if measured width is greater than expected glyph width\n // and subpixel-aa is enabled, otherwise just center the glyph.\n const measuredWidth =\n ((ctx.measureText(character).width * 1000) / fontSize) *\n fontSizeScale;\n if (width < measuredWidth && this.isFontSubpixelAAEnabled) {\n const characterScaleX = width / measuredWidth;\n restoreNeeded = true;\n ctx.save();\n ctx.scale(characterScaleX, 1);\n scaledX /= characterScaleX;\n } else if (width !== measuredWidth) {\n scaledX +=\n (((width - measuredWidth) / 2000) * fontSize) / fontSizeScale;\n }\n }\n\n // Only attempt to draw the glyph if it is actually in the embedded font\n // file or if there isn't a font file so the fallback font is shown.\n if (this.contentVisible && (glyph.isInFont || font.missingFile)) {\n if (simpleFillText && !accent) {\n // common case\n ctx.fillText(character, scaledX, scaledY);\n } else {\n this.paintChar(character, scaledX, scaledY, patternTransform);\n if (accent) {\n const scaledAccentX =\n scaledX + (fontSize * accent.offset.x) / fontSizeScale;\n const scaledAccentY =\n scaledY - (fontSize * accent.offset.y) / fontSizeScale;\n this.paintChar(\n accent.fontChar,\n scaledAccentX,\n scaledAccentY,\n patternTransform\n );\n }\n }\n }\n\n const charWidth = vertical\n ? width * widthAdvanceScale - spacing * fontDirection\n : width * widthAdvanceScale + spacing * fontDirection;\n x += charWidth;\n\n if (restoreNeeded) {\n ctx.restore();\n }\n }\n if (vertical) {\n current.y -= x;\n } else {\n current.x += x * textHScale;\n }\n ctx.restore();\n this.compose();\n\n return undefined;\n }\n\n showType3Text(glyphs) {\n // Type3 fonts - each glyph is a \"mini-PDF\"\n const ctx = this.ctx;\n const current = this.current;\n const font = current.font;\n const fontSize = current.fontSize;\n const fontDirection = current.fontDirection;\n const spacingDir = font.vertical ? 1 : -1;\n const charSpacing = current.charSpacing;\n const wordSpacing = current.wordSpacing;\n const textHScale = current.textHScale * fontDirection;\n const fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;\n const glyphsLength = glyphs.length;\n const isTextInvisible =\n current.textRenderingMode === TextRenderingMode.INVISIBLE;\n let i, glyph, width, spacingLength;\n\n if (isTextInvisible || fontSize === 0) {\n return;\n }\n this._cachedScaleForStroking[0] = -1;\n this._cachedGetSinglePixelWidth = null;\n\n ctx.save();\n ctx.transform(...current.textMatrix);\n ctx.translate(current.x, current.y);\n\n ctx.scale(textHScale, fontDirection);\n\n for (i = 0; i < glyphsLength; ++i) {\n glyph = glyphs[i];\n if (typeof glyph === \"number\") {\n spacingLength = (spacingDir * glyph * fontSize) / 1000;\n this.ctx.translate(spacingLength, 0);\n current.x += spacingLength * textHScale;\n continue;\n }\n\n const spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;\n const operatorList = font.charProcOperatorList[glyph.operatorListId];\n if (!operatorList) {\n warn(`Type3 character \"${glyph.operatorListId}\" is not available.`);\n continue;\n }\n if (this.contentVisible) {\n this.processingType3 = glyph;\n this.save();\n ctx.scale(fontSize, fontSize);\n ctx.transform(...fontMatrix);\n this.executeOperatorList(operatorList);\n this.restore();\n }\n\n const transformed = Util.applyTransform([glyph.width, 0], fontMatrix);\n width = transformed[0] * fontSize + spacing;\n\n ctx.translate(width, 0);\n current.x += width * textHScale;\n }\n ctx.restore();\n this.processingType3 = null;\n }\n\n // Type3 fonts\n setCharWidth(xWidth, yWidth) {\n // We can safely ignore this since the width should be the same\n // as the width in the Widths array.\n }\n\n setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {\n this.ctx.rect(llx, lly, urx - llx, ury - lly);\n this.ctx.clip();\n this.endPath();\n }\n\n // Color\n getColorN_Pattern(IR) {\n let pattern;\n if (IR[0] === \"TilingPattern\") {\n const color = IR[1];\n const baseTransform = this.baseTransform || getCurrentTransform(this.ctx);\n const canvasGraphicsFactory = {\n createCanvasGraphics: ctx => {\n return new CanvasGraphics(\n ctx,\n this.commonObjs,\n this.objs,\n this.canvasFactory,\n this.filterFactory,\n {\n optionalContentConfig: this.optionalContentConfig,\n markedContentStack: this.markedContentStack,\n }\n );\n },\n };\n pattern = new TilingPattern(\n IR,\n color,\n this.ctx,\n canvasGraphicsFactory,\n baseTransform\n );\n } else {\n pattern = this._getPattern(IR[1], IR[2]);\n }\n return pattern;\n }\n\n setStrokeColorN() {\n this.current.strokeColor = this.getColorN_Pattern(arguments);\n }\n\n setFillColorN() {\n this.current.fillColor = this.getColorN_Pattern(arguments);\n this.current.patternFill = true;\n }\n\n setStrokeRGBColor(r, g, b) {\n const color = Util.makeHexColor(r, g, b);\n this.ctx.strokeStyle = color;\n this.current.strokeColor = color;\n }\n\n setFillRGBColor(r, g, b) {\n const color = Util.makeHexColor(r, g, b);\n this.ctx.fillStyle = color;\n this.current.fillColor = color;\n this.current.patternFill = false;\n }\n\n _getPattern(objId, matrix = null) {\n let pattern;\n if (this.cachedPatterns.has(objId)) {\n pattern = this.cachedPatterns.get(objId);\n } else {\n pattern = getShadingPattern(this.getObject(objId));\n this.cachedPatterns.set(objId, pattern);\n }\n if (matrix) {\n pattern.matrix = matrix;\n }\n return pattern;\n }\n\n shadingFill(objId) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n\n this.save();\n const pattern = this._getPattern(objId);\n ctx.fillStyle = pattern.getPattern(\n ctx,\n this,\n getCurrentTransformInverse(ctx),\n PathType.SHADING\n );\n\n const inv = getCurrentTransformInverse(ctx);\n if (inv) {\n const { width, height } = ctx.canvas;\n const [x0, y0, x1, y1] = Util.getAxialAlignedBoundingBox(\n [0, 0, width, height],\n inv\n );\n\n this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);\n } else {\n // HACK to draw the gradient onto an infinite rectangle.\n // PDF gradients are drawn across the entire image while\n // Canvas only allows gradients to be drawn in a rectangle\n // The following bug should allow us to remove this.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=664884\n\n this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);\n }\n\n this.compose(this.current.getClippedPathBoundingBox());\n this.restore();\n }\n\n // Images\n beginInlineImage() {\n unreachable(\"Should not call beginInlineImage\");\n }\n\n beginImageData() {\n unreachable(\"Should not call beginImageData\");\n }\n\n paintFormXObjectBegin(matrix, bbox) {\n if (!this.contentVisible) {\n return;\n }\n this.save();\n this.baseTransformStack.push(this.baseTransform);\n\n if (Array.isArray(matrix) && matrix.length === 6) {\n this.transform(...matrix);\n }\n\n this.baseTransform = getCurrentTransform(this.ctx);\n\n if (bbox) {\n const width = bbox[2] - bbox[0];\n const height = bbox[3] - bbox[1];\n this.ctx.rect(bbox[0], bbox[1], width, height);\n this.current.updateRectMinMax(getCurrentTransform(this.ctx), bbox);\n this.clip();\n this.endPath();\n }\n }\n\n paintFormXObjectEnd() {\n if (!this.contentVisible) {\n return;\n }\n this.restore();\n this.baseTransform = this.baseTransformStack.pop();\n }\n\n beginGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n\n this.save();\n // If there's an active soft mask we don't want it enabled for the group, so\n // clear it out. The mask and suspended canvas will be restored in endGroup.\n if (this.inSMaskMode) {\n this.endSMaskMode();\n this.current.activeSMask = null;\n }\n\n const currentCtx = this.ctx;\n // TODO non-isolated groups - according to Rik at adobe non-isolated\n // group results aren't usually that different and they even have tools\n // that ignore this setting. Notes from Rik on implementing:\n // - When you encounter an transparency group, create a new canvas with\n // the dimensions of the bbox\n // - copy the content from the previous canvas to the new canvas\n // - draw as usual\n // - remove the backdrop alpha:\n // alphaNew = 1 - (1 - alpha)/(1 - alphaBackdrop) with 'alpha' the alpha\n // value of your transparency group and 'alphaBackdrop' the alpha of the\n // backdrop\n // - remove background color:\n // colorNew = color - alphaNew *colorBackdrop /(1 - alphaNew)\n if (!group.isolated) {\n info(\"TODO: Support non-isolated groups.\");\n }\n\n // TODO knockout - supposedly possible with the clever use of compositing\n // modes.\n if (group.knockout) {\n warn(\"Knockout groups not supported.\");\n }\n\n const currentTransform = getCurrentTransform(currentCtx);\n if (group.matrix) {\n currentCtx.transform(...group.matrix);\n }\n if (!group.bbox) {\n throw new Error(\"Bounding box is required.\");\n }\n\n // Based on the current transform figure out how big the bounding box\n // will actually be.\n let bounds = Util.getAxialAlignedBoundingBox(\n group.bbox,\n getCurrentTransform(currentCtx)\n );\n // Clip the bounding box to the current canvas.\n const canvasBounds = [\n 0,\n 0,\n currentCtx.canvas.width,\n currentCtx.canvas.height,\n ];\n bounds = Util.intersect(bounds, canvasBounds) || [0, 0, 0, 0];\n // Use ceil in case we're between sizes so we don't create canvas that is\n // too small and make the canvas at least 1x1 pixels.\n const offsetX = Math.floor(bounds[0]);\n const offsetY = Math.floor(bounds[1]);\n let drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);\n let drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);\n let scaleX = 1,\n scaleY = 1;\n if (drawnWidth > MAX_GROUP_SIZE) {\n scaleX = drawnWidth / MAX_GROUP_SIZE;\n drawnWidth = MAX_GROUP_SIZE;\n }\n if (drawnHeight > MAX_GROUP_SIZE) {\n scaleY = drawnHeight / MAX_GROUP_SIZE;\n drawnHeight = MAX_GROUP_SIZE;\n }\n\n this.current.startNewPathAndClipBox([0, 0, drawnWidth, drawnHeight]);\n\n let cacheId = \"groupAt\" + this.groupLevel;\n if (group.smask) {\n // Using two cache entries is case if masks are used one after another.\n cacheId += \"_smask_\" + (this.smaskCounter++ % 2);\n }\n const scratchCanvas = this.cachedCanvases.getCanvas(\n cacheId,\n drawnWidth,\n drawnHeight\n );\n const groupCtx = scratchCanvas.context;\n\n // Since we created a new canvas that is just the size of the bounding box\n // we have to translate the group ctx.\n groupCtx.scale(1 / scaleX, 1 / scaleY);\n groupCtx.translate(-offsetX, -offsetY);\n groupCtx.transform(...currentTransform);\n\n if (group.smask) {\n // Saving state and cached mask to be used in setGState.\n this.smaskStack.push({\n canvas: scratchCanvas.canvas,\n context: groupCtx,\n offsetX,\n offsetY,\n scaleX,\n scaleY,\n subtype: group.smask.subtype,\n backdrop: group.smask.backdrop,\n transferMap: group.smask.transferMap || null,\n startTransformInverse: null, // used during suspend operation\n });\n } else {\n // Setup the current ctx so when the group is popped we draw it at the\n // right location.\n currentCtx.setTransform(1, 0, 0, 1, 0, 0);\n currentCtx.translate(offsetX, offsetY);\n currentCtx.scale(scaleX, scaleY);\n currentCtx.save();\n }\n // The transparency group inherits all off the current graphics state\n // except the blend mode, soft mask, and alpha constants.\n copyCtxState(currentCtx, groupCtx);\n this.ctx = groupCtx;\n this.setGState([\n [\"BM\", \"source-over\"],\n [\"ca\", 1],\n [\"CA\", 1],\n ]);\n this.groupStack.push(currentCtx);\n this.groupLevel++;\n }\n\n endGroup(group) {\n if (!this.contentVisible) {\n return;\n }\n this.groupLevel--;\n const groupCtx = this.ctx;\n const ctx = this.groupStack.pop();\n this.ctx = ctx;\n // Turn off image smoothing to avoid sub pixel interpolation which can\n // look kind of blurry for some pdfs.\n this.ctx.imageSmoothingEnabled = false;\n\n if (group.smask) {\n this.tempSMask = this.smaskStack.pop();\n this.restore();\n } else {\n this.ctx.restore();\n const currentMtx = getCurrentTransform(this.ctx);\n this.restore();\n this.ctx.save();\n this.ctx.setTransform(...currentMtx);\n const dirtyBox = Util.getAxialAlignedBoundingBox(\n [0, 0, groupCtx.canvas.width, groupCtx.canvas.height],\n currentMtx\n );\n this.ctx.drawImage(groupCtx.canvas, 0, 0);\n this.ctx.restore();\n this.compose(dirtyBox);\n }\n }\n\n beginAnnotation(id, rect, transform, matrix, hasOwnCanvas) {\n // The annotations are drawn just after the page content.\n // The page content drawing can potentially have set a transform,\n // a clipping path, whatever...\n // So in order to have something clean, we restore the initial state.\n this.#restoreInitialState();\n resetCtxToDefault(this.ctx);\n\n this.ctx.save();\n this.save();\n\n if (this.baseTransform) {\n this.ctx.setTransform(...this.baseTransform);\n }\n\n if (Array.isArray(rect) && rect.length === 4) {\n const width = rect[2] - rect[0];\n const height = rect[3] - rect[1];\n\n if (hasOwnCanvas && this.annotationCanvasMap) {\n transform = transform.slice();\n transform[4] -= rect[0];\n transform[5] -= rect[1];\n\n rect = rect.slice();\n rect[0] = rect[1] = 0;\n rect[2] = width;\n rect[3] = height;\n\n const [scaleX, scaleY] = Util.singularValueDecompose2dScale(\n getCurrentTransform(this.ctx)\n );\n const { viewportScale } = this;\n const canvasWidth = Math.ceil(\n width * this.outputScaleX * viewportScale\n );\n const canvasHeight = Math.ceil(\n height * this.outputScaleY * viewportScale\n );\n\n this.annotationCanvas = this.canvasFactory.create(\n canvasWidth,\n canvasHeight\n );\n const { canvas, context } = this.annotationCanvas;\n this.annotationCanvasMap.set(id, canvas);\n this.annotationCanvas.savedCtx = this.ctx;\n this.ctx = context;\n this.ctx.save();\n this.ctx.setTransform(scaleX, 0, 0, -scaleY, 0, height * scaleY);\n\n resetCtxToDefault(this.ctx);\n } else {\n resetCtxToDefault(this.ctx);\n\n this.ctx.rect(rect[0], rect[1], width, height);\n this.ctx.clip();\n this.endPath();\n }\n }\n\n this.current = new CanvasExtraState(\n this.ctx.canvas.width,\n this.ctx.canvas.height\n );\n\n this.transform(...transform);\n this.transform(...matrix);\n }\n\n endAnnotation() {\n if (this.annotationCanvas) {\n this.ctx.restore();\n this.#drawFilter();\n\n this.ctx = this.annotationCanvas.savedCtx;\n delete this.annotationCanvas.savedCtx;\n delete this.annotationCanvas;\n }\n }\n\n paintImageMaskXObject(img) {\n if (!this.contentVisible) {\n return;\n }\n const count = img.count;\n img = this.getObject(img.data, img);\n img.count = count;\n\n const ctx = this.ctx;\n const glyph = this.processingType3;\n\n if (glyph) {\n if (glyph.compiled === undefined) {\n glyph.compiled = compileType3Glyph(img);\n }\n\n if (glyph.compiled) {\n glyph.compiled(ctx);\n return;\n }\n }\n const mask = this._createMaskCanvas(img);\n const maskCanvas = mask.canvas;\n\n ctx.save();\n // The mask is drawn with the transform applied. Reset the current\n // transform to draw to the identity.\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.drawImage(maskCanvas, mask.offsetX, mask.offsetY);\n ctx.restore();\n this.compose();\n }\n\n paintImageMaskXObjectRepeat(\n img,\n scaleX,\n skewX = 0,\n skewY = 0,\n scaleY,\n positions\n ) {\n if (!this.contentVisible) {\n return;\n }\n\n img = this.getObject(img.data, img);\n\n const ctx = this.ctx;\n ctx.save();\n const currentTransform = getCurrentTransform(ctx);\n ctx.transform(scaleX, skewX, skewY, scaleY, 0, 0);\n const mask = this._createMaskCanvas(img);\n\n ctx.setTransform(\n 1,\n 0,\n 0,\n 1,\n mask.offsetX - currentTransform[4],\n mask.offsetY - currentTransform[5]\n );\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n const trans = Util.transform(currentTransform, [\n scaleX,\n skewX,\n skewY,\n scaleY,\n positions[i],\n positions[i + 1],\n ]);\n\n const [x, y] = Util.applyTransform([0, 0], trans);\n ctx.drawImage(mask.canvas, x, y);\n }\n ctx.restore();\n this.compose();\n }\n\n paintImageMaskXObjectGroup(images) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n\n const fillColor = this.current.fillColor;\n const isPatternFill = this.current.patternFill;\n\n for (const image of images) {\n const { data, width, height, transform } = image;\n\n const maskCanvas = this.cachedCanvases.getCanvas(\n \"maskCanvas\",\n width,\n height\n );\n const maskCtx = maskCanvas.context;\n maskCtx.save();\n\n const img = this.getObject(data, image);\n putBinaryImageMask(maskCtx, img);\n\n maskCtx.globalCompositeOperation = \"source-in\";\n\n maskCtx.fillStyle = isPatternFill\n ? fillColor.getPattern(\n maskCtx,\n this,\n getCurrentTransformInverse(ctx),\n PathType.FILL\n )\n : fillColor;\n maskCtx.fillRect(0, 0, width, height);\n\n maskCtx.restore();\n\n ctx.save();\n ctx.transform(...transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(\n ctx,\n maskCanvas.canvas,\n 0,\n 0,\n width,\n height,\n 0,\n -1,\n 1,\n 1\n );\n ctx.restore();\n }\n this.compose();\n }\n\n paintImageXObject(objId) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n\n this.paintInlineImageXObject(imgData);\n }\n\n paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {\n if (!this.contentVisible) {\n return;\n }\n const imgData = this.getObject(objId);\n if (!imgData) {\n warn(\"Dependent image isn't ready yet\");\n return;\n }\n\n const width = imgData.width;\n const height = imgData.height;\n const map = [];\n for (let i = 0, ii = positions.length; i < ii; i += 2) {\n map.push({\n transform: [scaleX, 0, 0, scaleY, positions[i], positions[i + 1]],\n x: 0,\n y: 0,\n w: width,\n h: height,\n });\n }\n this.paintInlineImageXObjectGroup(imgData, map);\n }\n\n applyTransferMapsToCanvas(ctx) {\n if (this.current.transferMaps !== \"none\") {\n ctx.filter = this.current.transferMaps;\n ctx.drawImage(ctx.canvas, 0, 0);\n ctx.filter = \"none\";\n }\n return ctx.canvas;\n }\n\n applyTransferMapsToBitmap(imgData) {\n if (this.current.transferMaps === \"none\") {\n return imgData.bitmap;\n }\n const { bitmap, width, height } = imgData;\n const tmpCanvas = this.cachedCanvases.getCanvas(\n \"inlineImage\",\n width,\n height\n );\n const tmpCtx = tmpCanvas.context;\n tmpCtx.filter = this.current.transferMaps;\n tmpCtx.drawImage(bitmap, 0, 0);\n tmpCtx.filter = \"none\";\n\n return tmpCanvas.canvas;\n }\n\n paintInlineImageXObject(imgData) {\n if (!this.contentVisible) {\n return;\n }\n const width = imgData.width;\n const height = imgData.height;\n const ctx = this.ctx;\n\n this.save();\n\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n !isNodeJS\n ) {\n // The filter, if any, will be applied in applyTransferMapsToBitmap.\n // It must be applied to the image before rescaling else some artifacts\n // could appear.\n // The final restore will reset it to its value.\n const { filter } = ctx;\n if (filter !== \"none\" && filter !== \"\") {\n ctx.filter = \"none\";\n }\n }\n\n // scale the image to the unit square\n ctx.scale(1 / width, -1 / height);\n\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = this.applyTransferMapsToBitmap(imgData);\n } else if (\n (typeof HTMLElement === \"function\" && imgData instanceof HTMLElement) ||\n !imgData.data\n ) {\n // typeof check is needed due to node.js support, see issue #8489\n imgToPaint = imgData;\n } else {\n const tmpCanvas = this.cachedCanvases.getCanvas(\n \"inlineImage\",\n width,\n height\n );\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n\n const scaled = this._scaleImage(\n imgToPaint,\n getCurrentTransformInverse(ctx)\n );\n ctx.imageSmoothingEnabled = getImageSmoothingEnabled(\n getCurrentTransform(ctx),\n imgData.interpolate\n );\n\n drawImageAtIntegerCoords(\n ctx,\n scaled.img,\n 0,\n 0,\n scaled.paintWidth,\n scaled.paintHeight,\n 0,\n -height,\n width,\n height\n );\n this.compose();\n this.restore();\n }\n\n paintInlineImageXObjectGroup(imgData, map) {\n if (!this.contentVisible) {\n return;\n }\n const ctx = this.ctx;\n let imgToPaint;\n if (imgData.bitmap) {\n imgToPaint = imgData.bitmap;\n } else {\n const w = imgData.width;\n const h = imgData.height;\n\n const tmpCanvas = this.cachedCanvases.getCanvas(\"inlineImage\", w, h);\n const tmpCtx = tmpCanvas.context;\n putBinaryImageData(tmpCtx, imgData);\n imgToPaint = this.applyTransferMapsToCanvas(tmpCtx);\n }\n\n for (const entry of map) {\n ctx.save();\n ctx.transform(...entry.transform);\n ctx.scale(1, -1);\n drawImageAtIntegerCoords(\n ctx,\n imgToPaint,\n entry.x,\n entry.y,\n entry.w,\n entry.h,\n 0,\n -1,\n 1,\n 1\n );\n ctx.restore();\n }\n this.compose();\n }\n\n paintSolidColorImageMask() {\n if (!this.contentVisible) {\n return;\n }\n this.ctx.fillRect(0, 0, 1, 1);\n this.compose();\n }\n\n // Marked content\n\n markPoint(tag) {\n // TODO Marked content.\n }\n\n markPointProps(tag, properties) {\n // TODO Marked content.\n }\n\n beginMarkedContent(tag) {\n this.markedContentStack.push({\n visible: true,\n });\n }\n\n beginMarkedContentProps(tag, properties) {\n if (tag === \"OC\") {\n this.markedContentStack.push({\n visible: this.optionalContentConfig.isVisible(properties),\n });\n } else {\n this.markedContentStack.push({\n visible: true,\n });\n }\n this.contentVisible = this.isContentVisible();\n }\n\n endMarkedContent() {\n this.markedContentStack.pop();\n this.contentVisible = this.isContentVisible();\n }\n\n // Compatibility\n\n beginCompat() {\n // TODO ignore undefined operators (should we do that anyway?)\n }\n\n endCompat() {\n // TODO stop ignoring undefined operators\n }\n\n // Helper functions\n\n consumePath(clipBox) {\n const isEmpty = this.current.isEmptyClip();\n if (this.pendingClip) {\n this.current.updateClipFromPath();\n }\n if (!this.pendingClip) {\n this.compose(clipBox);\n }\n const ctx = this.ctx;\n if (this.pendingClip) {\n if (!isEmpty) {\n if (this.pendingClip === EO_CLIP) {\n ctx.clip(\"evenodd\");\n } else {\n ctx.clip();\n }\n }\n this.pendingClip = null;\n }\n this.current.startNewPathAndClipBox(this.current.clipBox);\n ctx.beginPath();\n }\n\n getSinglePixelWidth() {\n if (!this._cachedGetSinglePixelWidth) {\n const m = getCurrentTransform(this.ctx);\n if (m[1] === 0 && m[2] === 0) {\n // Fast path\n this._cachedGetSinglePixelWidth =\n 1 / Math.min(Math.abs(m[0]), Math.abs(m[3]));\n } else {\n const absDet = Math.abs(m[0] * m[3] - m[2] * m[1]);\n const normX = Math.hypot(m[0], m[2]);\n const normY = Math.hypot(m[1], m[3]);\n this._cachedGetSinglePixelWidth = Math.max(normX, normY) / absDet;\n }\n }\n return this._cachedGetSinglePixelWidth;\n }\n\n getScaleForStroking() {\n // A pixel has thicknessX = thicknessY = 1;\n // A transformed pixel is a parallelogram and the thicknesses\n // corresponds to the heights.\n // The goal of this function is to rescale before setting the\n // lineWidth in order to have both thicknesses greater or equal\n // to 1 after transform.\n if (this._cachedScaleForStroking[0] === -1) {\n const { lineWidth } = this.current;\n const { a, b, c, d } = this.ctx.getTransform();\n let scaleX, scaleY;\n\n if (b === 0 && c === 0) {\n // Fast path\n const normX = Math.abs(a);\n const normY = Math.abs(d);\n if (normX === normY) {\n if (lineWidth === 0) {\n scaleX = scaleY = 1 / normX;\n } else {\n const scaledLineWidth = normX * lineWidth;\n scaleX = scaleY = scaledLineWidth < 1 ? 1 / scaledLineWidth : 1;\n }\n } else if (lineWidth === 0) {\n scaleX = 1 / normX;\n scaleY = 1 / normY;\n } else {\n const scaledXLineWidth = normX * lineWidth;\n const scaledYLineWidth = normY * lineWidth;\n scaleX = scaledXLineWidth < 1 ? 1 / scaledXLineWidth : 1;\n scaleY = scaledYLineWidth < 1 ? 1 / scaledYLineWidth : 1;\n }\n } else {\n // A pixel (base (x, y)) is transformed by M into a parallelogram:\n // - its area is |det(M)|;\n // - heightY (orthogonal to Mx) has a length: |det(M)| / norm(Mx);\n // - heightX (orthogonal to My) has a length: |det(M)| / norm(My).\n // heightX and heightY are the thicknesses of the transformed pixel\n // and they must be both greater or equal to 1.\n const absDet = Math.abs(a * d - b * c);\n const normX = Math.hypot(a, b);\n const normY = Math.hypot(c, d);\n if (lineWidth === 0) {\n scaleX = normY / absDet;\n scaleY = normX / absDet;\n } else {\n const baseArea = lineWidth * absDet;\n scaleX = normY > baseArea ? normY / baseArea : 1;\n scaleY = normX > baseArea ? normX / baseArea : 1;\n }\n }\n this._cachedScaleForStroking[0] = scaleX;\n this._cachedScaleForStroking[1] = scaleY;\n }\n return this._cachedScaleForStroking;\n }\n\n // Rescale before stroking in order to have a final lineWidth\n // with both thicknesses greater or equal to 1.\n rescaleAndStroke(saveRestore) {\n const { ctx } = this;\n const { lineWidth } = this.current;\n const [scaleX, scaleY] = this.getScaleForStroking();\n\n ctx.lineWidth = lineWidth || 1;\n\n if (scaleX === 1 && scaleY === 1) {\n ctx.stroke();\n return;\n }\n\n const dashes = ctx.getLineDash();\n if (saveRestore) {\n ctx.save();\n }\n\n ctx.scale(scaleX, scaleY);\n\n // How the dashed line is rendered depends on the current transform...\n // so we added a rescale to handle too thin lines and consequently\n // the way the line is dashed will be modified.\n // If scaleX === scaleY, the dashed lines will be rendered correctly\n // else we'll have some bugs (but only with too thin lines).\n // Here we take the max... why not taking the min... or something else.\n // Anyway, as said it's buggy when scaleX !== scaleY.\n if (dashes.length > 0) {\n const scale = Math.max(scaleX, scaleY);\n ctx.setLineDash(dashes.map(x => x / scale));\n ctx.lineDashOffset /= scale;\n }\n\n ctx.stroke();\n\n if (saveRestore) {\n ctx.restore();\n }\n }\n\n isContentVisible() {\n for (let i = this.markedContentStack.length - 1; i >= 0; i--) {\n if (!this.markedContentStack[i].visible) {\n return false;\n }\n }\n return true;\n }\n}\n\nfor (const op in OPS) {\n if (CanvasGraphics.prototype[op] !== undefined) {\n CanvasGraphics.prototype[OPS[op]] = CanvasGraphics.prototype[op];\n }\n}\n\nexport { CanvasGraphics };\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n BaseCanvasFactory,\n BaseCMapReaderFactory,\n BaseFilterFactory,\n BaseStandardFontDataFactory,\n BaseSVGFactory,\n} from \"./base_factory.js\";\nimport {\n BaseException,\n FeatureTest,\n shadow,\n stringToBytes,\n Util,\n warn,\n} from \"../shared/util.js\";\n\nconst SVG_NS = \"http://www.w3.org/2000/svg\";\n\nclass PixelsPerInch {\n static CSS = 96.0;\n\n static PDF = 72.0;\n\n static PDF_TO_CSS_UNITS = this.CSS / this.PDF;\n}\n\n/**\n * FilterFactory aims to create some SVG filters we can use when drawing an\n * image (or whatever) on a canvas.\n * Filters aren't applied with ctx.putImageData because it just overwrites the\n * underlying pixels.\n * With these filters, it's possible for example to apply some transfer maps on\n * an image without the need to apply them on the pixel arrays: the renderer\n * does the magic for us.\n */\nclass DOMFilterFactory extends BaseFilterFactory {\n #_cache;\n\n #_defs;\n\n #docId;\n\n #document;\n\n #hcmFilter;\n\n #hcmKey;\n\n #hcmUrl;\n\n #hcmHighlightFilter;\n\n #hcmHighlightKey;\n\n #hcmHighlightUrl;\n\n #id = 0;\n\n constructor({ docId, ownerDocument = globalThis.document } = {}) {\n super();\n this.#docId = docId;\n this.#document = ownerDocument;\n }\n\n get #cache() {\n return (this.#_cache ||= new Map());\n }\n\n get #defs() {\n if (!this.#_defs) {\n const div = this.#document.createElement(\"div\");\n const { style } = div;\n style.visibility = \"hidden\";\n style.contain = \"strict\";\n style.width = style.height = 0;\n style.position = \"absolute\";\n style.top = style.left = 0;\n style.zIndex = -1;\n\n const svg = this.#document.createElementNS(SVG_NS, \"svg\");\n svg.setAttribute(\"width\", 0);\n svg.setAttribute(\"height\", 0);\n this.#_defs = this.#document.createElementNS(SVG_NS, \"defs\");\n div.append(svg);\n svg.append(this.#_defs);\n this.#document.body.append(div);\n }\n return this.#_defs;\n }\n\n addFilter(maps) {\n if (!maps) {\n return \"none\";\n }\n\n // When a page is zoomed the page is re-drawn but the maps are likely\n // the same.\n let value = this.#cache.get(maps);\n if (value) {\n return value;\n }\n\n let tableR, tableG, tableB, key;\n if (maps.length === 1) {\n const mapR = maps[0];\n const buffer = new Array(256);\n for (let i = 0; i < 256; i++) {\n buffer[i] = mapR[i] / 255;\n }\n key = tableR = tableG = tableB = buffer.join(\",\");\n } else {\n const [mapR, mapG, mapB] = maps;\n const bufferR = new Array(256);\n const bufferG = new Array(256);\n const bufferB = new Array(256);\n for (let i = 0; i < 256; i++) {\n bufferR[i] = mapR[i] / 255;\n bufferG[i] = mapG[i] / 255;\n bufferB[i] = mapB[i] / 255;\n }\n tableR = bufferR.join(\",\");\n tableG = bufferG.join(\",\");\n tableB = bufferB.join(\",\");\n key = `${tableR}${tableG}${tableB}`;\n }\n\n value = this.#cache.get(key);\n if (value) {\n this.#cache.set(maps, value);\n return value;\n }\n\n // We create a SVG filter: feComponentTransferElement\n // https://www.w3.org/TR/SVG11/filters.html#feComponentTransferElement\n\n const id = `g_${this.#docId}_transfer_map_${this.#id++}`;\n const url = `url(#${id})`;\n this.#cache.set(maps, url);\n this.#cache.set(key, url);\n\n const filter = this.#createFilter(id);\n this.#addTransferMapConversion(tableR, tableG, tableB, filter);\n\n return url;\n }\n\n addHCMFilter(fgColor, bgColor) {\n const key = `${fgColor}-${bgColor}`;\n if (this.#hcmKey === key) {\n return this.#hcmUrl;\n }\n\n this.#hcmKey = key;\n this.#hcmUrl = \"none\";\n this.#hcmFilter?.remove();\n\n if (!fgColor || !bgColor) {\n return this.#hcmUrl;\n }\n\n const fgRGB = this.#getRGB(fgColor);\n fgColor = Util.makeHexColor(...fgRGB);\n const bgRGB = this.#getRGB(bgColor);\n bgColor = Util.makeHexColor(...bgRGB);\n this.#defs.style.color = \"\";\n\n if (\n (fgColor === \"#000000\" && bgColor === \"#ffffff\") ||\n fgColor === bgColor\n ) {\n return this.#hcmUrl;\n }\n\n // https://developer.mozilla.org/en-US/docs/Web/Accessibility/Understanding_Colors_and_Luminance\n //\n // Relative luminance:\n // https://www.w3.org/TR/WCAG20/#relativeluminancedef\n //\n // We compute the rounded luminance of the default background color.\n // Then for every color in the pdf, if its rounded luminance is the\n // same as the background one then it's replaced by the new\n // background color else by the foreground one.\n const map = new Array(256);\n for (let i = 0; i <= 255; i++) {\n const x = i / 255;\n map[i] = x <= 0.03928 ? x / 12.92 : ((x + 0.055) / 1.055) ** 2.4;\n }\n const table = map.join(\",\");\n\n const id = `g_${this.#docId}_hcm_filter`;\n const filter = (this.#hcmHighlightFilter = this.#createFilter(id));\n this.#addTransferMapConversion(table, table, table, filter);\n this.#addGrayConversion(filter);\n\n const getSteps = (c, n) => {\n const start = fgRGB[c] / 255;\n const end = bgRGB[c] / 255;\n const arr = new Array(n + 1);\n for (let i = 0; i <= n; i++) {\n arr[i] = start + (i / n) * (end - start);\n }\n return arr.join(\",\");\n };\n this.#addTransferMapConversion(\n getSteps(0, 5),\n getSteps(1, 5),\n getSteps(2, 5),\n filter\n );\n\n this.#hcmUrl = `url(#${id})`;\n return this.#hcmUrl;\n }\n\n addHighlightHCMFilter(fgColor, bgColor, newFgColor, newBgColor) {\n const key = `${fgColor}-${bgColor}-${newFgColor}-${newBgColor}`;\n if (this.#hcmHighlightKey === key) {\n return this.#hcmHighlightUrl;\n }\n\n this.#hcmHighlightKey = key;\n this.#hcmHighlightUrl = \"none\";\n this.#hcmHighlightFilter?.remove();\n\n if (!fgColor || !bgColor) {\n return this.#hcmHighlightUrl;\n }\n\n const [fgRGB, bgRGB] = [fgColor, bgColor].map(this.#getRGB.bind(this));\n let fgGray = Math.round(\n 0.2126 * fgRGB[0] + 0.7152 * fgRGB[1] + 0.0722 * fgRGB[2]\n );\n let bgGray = Math.round(\n 0.2126 * bgRGB[0] + 0.7152 * bgRGB[1] + 0.0722 * bgRGB[2]\n );\n let [newFgRGB, newBgRGB] = [newFgColor, newBgColor].map(\n this.#getRGB.bind(this)\n );\n if (bgGray < fgGray) {\n [fgGray, bgGray, newFgRGB, newBgRGB] = [\n bgGray,\n fgGray,\n newBgRGB,\n newFgRGB,\n ];\n }\n this.#defs.style.color = \"\";\n\n // Now we can create the filters to highlight some canvas parts.\n // The colors in the pdf will almost be Canvas and CanvasText, hence we\n // want to filter them to finally get Highlight and HighlightText.\n // Since we're in HCM the background color and the foreground color should\n // be really different when converted to grayscale (if they're not then it\n // means that we've a poor contrast). Once the canvas colors are converted\n // to grayscale we can easily map them on their new colors.\n // The grayscale step is important because if we've something like:\n // fgColor = #FF....\n // bgColor = #FF....\n // then we are enable to map the red component on the new red components\n // which can be different.\n\n const getSteps = (fg, bg, n) => {\n const arr = new Array(256);\n const step = (bgGray - fgGray) / n;\n const newStart = fg / 255;\n const newStep = (bg - fg) / (255 * n);\n let prev = 0;\n for (let i = 0; i <= n; i++) {\n const k = Math.round(fgGray + i * step);\n const value = newStart + i * newStep;\n for (let j = prev; j <= k; j++) {\n arr[j] = value;\n }\n prev = k + 1;\n }\n for (let i = prev; i < 256; i++) {\n arr[i] = arr[prev - 1];\n }\n return arr.join(\",\");\n };\n\n const id = `g_${this.#docId}_hcm_highlight_filter`;\n const filter = (this.#hcmHighlightFilter = this.#createFilter(id));\n\n this.#addGrayConversion(filter);\n this.#addTransferMapConversion(\n getSteps(newFgRGB[0], newBgRGB[0], 5),\n getSteps(newFgRGB[1], newBgRGB[1], 5),\n getSteps(newFgRGB[2], newBgRGB[2], 5),\n filter\n );\n\n this.#hcmHighlightUrl = `url(#${id})`;\n return this.#hcmHighlightUrl;\n }\n\n destroy(keepHCM = false) {\n if (keepHCM && (this.#hcmUrl || this.#hcmHighlightUrl)) {\n return;\n }\n if (this.#_defs) {\n this.#_defs.parentNode.parentNode.remove();\n this.#_defs = null;\n }\n if (this.#_cache) {\n this.#_cache.clear();\n this.#_cache = null;\n }\n this.#id = 0;\n }\n\n #addGrayConversion(filter) {\n const feColorMatrix = this.#document.createElementNS(\n SVG_NS,\n \"feColorMatrix\"\n );\n feColorMatrix.setAttribute(\"type\", \"matrix\");\n feColorMatrix.setAttribute(\n \"values\",\n \"0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0.2126 0.7152 0.0722 0 0 0 0 0 1 0\"\n );\n filter.append(feColorMatrix);\n }\n\n #createFilter(id) {\n const filter = this.#document.createElementNS(SVG_NS, \"filter\");\n filter.setAttribute(\"color-interpolation-filters\", \"sRGB\");\n filter.setAttribute(\"id\", id);\n this.#defs.append(filter);\n\n return filter;\n }\n\n #appendFeFunc(feComponentTransfer, func, table) {\n const feFunc = this.#document.createElementNS(SVG_NS, func);\n feFunc.setAttribute(\"type\", \"discrete\");\n feFunc.setAttribute(\"tableValues\", table);\n feComponentTransfer.append(feFunc);\n }\n\n #addTransferMapConversion(rTable, gTable, bTable, filter) {\n const feComponentTransfer = this.#document.createElementNS(\n SVG_NS,\n \"feComponentTransfer\"\n );\n filter.append(feComponentTransfer);\n this.#appendFeFunc(feComponentTransfer, \"feFuncR\", rTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncG\", gTable);\n this.#appendFeFunc(feComponentTransfer, \"feFuncB\", bTable);\n }\n\n #getRGB(color) {\n this.#defs.style.color = color;\n return getRGB(getComputedStyle(this.#defs).getPropertyValue(\"color\"));\n }\n}\n\nclass DOMCanvasFactory extends BaseCanvasFactory {\n constructor({ ownerDocument = globalThis.document } = {}) {\n super();\n this._document = ownerDocument;\n }\n\n /**\n * @ignore\n */\n _createCanvas(width, height) {\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n}\n\nasync function fetchData(url, type = \"text\") {\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n isValidFetchUrl(url, document.baseURI)\n ) {\n const response = await fetch(url);\n if (!response.ok) {\n throw new Error(response.statusText);\n }\n switch (type) {\n case \"arraybuffer\":\n return response.arrayBuffer();\n case \"blob\":\n return response.blob();\n case \"json\":\n return response.json();\n }\n return response.text();\n }\n\n // The Fetch API is not supported.\n return new Promise((resolve, reject) => {\n const request = new XMLHttpRequest();\n request.open(\"GET\", url, /* async = */ true);\n request.responseType = type;\n\n request.onreadystatechange = () => {\n if (request.readyState !== XMLHttpRequest.DONE) {\n return;\n }\n if (request.status === 200 || request.status === 0) {\n let data;\n switch (type) {\n case \"arraybuffer\":\n case \"blob\":\n case \"json\":\n data = request.response;\n break;\n default:\n data = request.responseText;\n break;\n }\n if (data) {\n resolve(data);\n return;\n }\n }\n reject(new Error(request.statusText));\n };\n\n request.send(null);\n });\n}\n\nclass DOMCMapReaderFactory extends BaseCMapReaderFactory {\n /**\n * @ignore\n */\n _fetchData(url, compressionType) {\n return fetchData(\n url,\n /* type = */ this.isCompressed ? \"arraybuffer\" : \"text\"\n ).then(data => {\n return {\n cMapData:\n data instanceof ArrayBuffer\n ? new Uint8Array(data)\n : stringToBytes(data),\n compressionType,\n };\n });\n }\n}\n\nclass DOMStandardFontDataFactory extends BaseStandardFontDataFactory {\n /**\n * @ignore\n */\n _fetchData(url) {\n return fetchData(url, /* type = */ \"arraybuffer\").then(data => {\n return new Uint8Array(data);\n });\n }\n}\n\nclass DOMSVGFactory extends BaseSVGFactory {\n /**\n * @ignore\n */\n _createSVG(type) {\n return document.createElementNS(SVG_NS, type);\n }\n}\n\n/**\n * @typedef {Object} PageViewportParameters\n * @property {Array<number>} viewBox - The xMin, yMin, xMax and\n * yMax coordinates.\n * @property {number} scale - The scale of the viewport.\n * @property {number} rotation - The rotation, in degrees, of the viewport.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset. The\n * default value is `0`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset. The\n * default value is `0`.\n * @property {boolean} [dontFlip] - If true, the y-axis will not be flipped.\n * The default value is `false`.\n */\n\n/**\n * @typedef {Object} PageViewportCloneParameters\n * @property {number} [scale] - The scale, overriding the one in the cloned\n * viewport. The default value is `this.scale`.\n * @property {number} [rotation] - The rotation, in degrees, overriding the one\n * in the cloned viewport. The default value is `this.rotation`.\n * @property {number} [offsetX] - The horizontal, i.e. x-axis, offset.\n * The default value is `this.offsetX`.\n * @property {number} [offsetY] - The vertical, i.e. y-axis, offset.\n * The default value is `this.offsetY`.\n * @property {boolean} [dontFlip] - If true, the x-axis will not be flipped.\n * The default value is `false`.\n */\n\n/**\n * PDF page viewport created based on scale, rotation and offset.\n */\nclass PageViewport {\n /**\n * @param {PageViewportParameters}\n */\n constructor({\n viewBox,\n scale,\n rotation,\n offsetX = 0,\n offsetY = 0,\n dontFlip = false,\n }) {\n this.viewBox = viewBox;\n this.scale = scale;\n this.rotation = rotation;\n this.offsetX = offsetX;\n this.offsetY = offsetY;\n\n // creating transform to convert pdf coordinate system to the normal\n // canvas like coordinates taking in account scale and rotation\n const centerX = (viewBox[2] + viewBox[0]) / 2;\n const centerY = (viewBox[3] + viewBox[1]) / 2;\n let rotateA, rotateB, rotateC, rotateD;\n // Normalize the rotation, by clamping it to the [0, 360) range.\n rotation %= 360;\n if (rotation < 0) {\n rotation += 360;\n }\n switch (rotation) {\n case 180:\n rotateA = -1;\n rotateB = 0;\n rotateC = 0;\n rotateD = 1;\n break;\n case 90:\n rotateA = 0;\n rotateB = 1;\n rotateC = 1;\n rotateD = 0;\n break;\n case 270:\n rotateA = 0;\n rotateB = -1;\n rotateC = -1;\n rotateD = 0;\n break;\n case 0:\n rotateA = 1;\n rotateB = 0;\n rotateC = 0;\n rotateD = -1;\n break;\n default:\n throw new Error(\n \"PageViewport: Invalid rotation, must be a multiple of 90 degrees.\"\n );\n }\n\n if (dontFlip) {\n rotateC = -rotateC;\n rotateD = -rotateD;\n }\n\n let offsetCanvasX, offsetCanvasY;\n let width, height;\n if (rotateA === 0) {\n offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;\n width = (viewBox[3] - viewBox[1]) * scale;\n height = (viewBox[2] - viewBox[0]) * scale;\n } else {\n offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;\n offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;\n width = (viewBox[2] - viewBox[0]) * scale;\n height = (viewBox[3] - viewBox[1]) * scale;\n }\n // creating transform for the following operations:\n // translate(-centerX, -centerY), rotate and flip vertically,\n // scale, and translate(offsetCanvasX, offsetCanvasY)\n this.transform = [\n rotateA * scale,\n rotateB * scale,\n rotateC * scale,\n rotateD * scale,\n offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,\n offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY,\n ];\n\n this.width = width;\n this.height = height;\n }\n\n /**\n * The original, un-scaled, viewport dimensions.\n * @type {Object}\n */\n get rawDims() {\n const { viewBox } = this;\n return shadow(this, \"rawDims\", {\n pageWidth: viewBox[2] - viewBox[0],\n pageHeight: viewBox[3] - viewBox[1],\n pageX: viewBox[0],\n pageY: viewBox[1],\n });\n }\n\n /**\n * Clones viewport, with optional additional properties.\n * @param {PageViewportCloneParameters} [params]\n * @returns {PageViewport} Cloned viewport.\n */\n clone({\n scale = this.scale,\n rotation = this.rotation,\n offsetX = this.offsetX,\n offsetY = this.offsetY,\n dontFlip = false,\n } = {}) {\n return new PageViewport({\n viewBox: this.viewBox.slice(),\n scale,\n rotation,\n offsetX,\n offsetY,\n dontFlip,\n });\n }\n\n /**\n * Converts PDF point to the viewport coordinates. For examples, useful for\n * converting PDF location into canvas pixel coordinates.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @returns {Array} Array containing `x`- and `y`-coordinates of the\n * point in the viewport coordinate space.\n * @see {@link convertToPdfPoint}\n * @see {@link convertToViewportRectangle}\n */\n convertToViewportPoint(x, y) {\n return Util.applyTransform([x, y], this.transform);\n }\n\n /**\n * Converts PDF rectangle to the viewport coordinates.\n * @param {Array} rect - The xMin, yMin, xMax and yMax coordinates.\n * @returns {Array} Array containing corresponding coordinates of the\n * rectangle in the viewport coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToViewportRectangle(rect) {\n const topLeft = Util.applyTransform([rect[0], rect[1]], this.transform);\n const bottomRight = Util.applyTransform([rect[2], rect[3]], this.transform);\n return [topLeft[0], topLeft[1], bottomRight[0], bottomRight[1]];\n }\n\n /**\n * Converts viewport coordinates to the PDF location. For examples, useful\n * for converting canvas pixel location into PDF one.\n * @param {number} x - The x-coordinate.\n * @param {number} y - The y-coordinate.\n * @returns {Array} Array containing `x`- and `y`-coordinates of the\n * point in the PDF coordinate space.\n * @see {@link convertToViewportPoint}\n */\n convertToPdfPoint(x, y) {\n return Util.applyInverseTransform([x, y], this.transform);\n }\n}\n\nclass RenderingCancelledException extends BaseException {\n constructor(msg, extraDelay = 0) {\n super(msg, \"RenderingCancelledException\");\n this.extraDelay = extraDelay;\n }\n}\n\nfunction isDataScheme(url) {\n const ii = url.length;\n let i = 0;\n while (i < ii && url[i].trim() === \"\") {\n i++;\n }\n return url.substring(i, i + 5).toLowerCase() === \"data:\";\n}\n\nfunction isPdfFile(filename) {\n return typeof filename === \"string\" && /\\.pdf$/i.test(filename);\n}\n\n/**\n * Gets the filename from a given URL.\n * @param {string} url\n * @param {boolean} [onlyStripPath]\n * @returns {string}\n */\nfunction getFilenameFromUrl(url, onlyStripPath = false) {\n if (!onlyStripPath) {\n [url] = url.split(/[#?]/, 1);\n }\n return url.substring(url.lastIndexOf(\"/\") + 1);\n}\n\n/**\n * Returns the filename or guessed filename from the url (see issue 3455).\n * @param {string} url - The original PDF location.\n * @param {string} defaultFilename - The value returned if the filename is\n * unknown, or the protocol is unsupported.\n * @returns {string} Guessed PDF filename.\n */\nfunction getPdfFilenameFromUrl(url, defaultFilename = \"document.pdf\") {\n if (typeof url !== \"string\") {\n return defaultFilename;\n }\n if (isDataScheme(url)) {\n warn('getPdfFilenameFromUrl: ignore \"data:\"-URL for performance reasons.');\n return defaultFilename;\n }\n const reURI = /^(?:(?:[^:]+:)?\\/\\/[^/]+)?([^?#]*)(\\?[^#]*)?(#.*)?$/;\n // SCHEME HOST 1.PATH 2.QUERY 3.REF\n // Pattern to get last matching NAME.pdf\n const reFilename = /[^/?#=]+\\.pdf\\b(?!.*\\.pdf\\b)/i;\n const splitURI = reURI.exec(url);\n let suggestedFilename =\n reFilename.exec(splitURI[1]) ||\n reFilename.exec(splitURI[2]) ||\n reFilename.exec(splitURI[3]);\n if (suggestedFilename) {\n suggestedFilename = suggestedFilename[0];\n if (suggestedFilename.includes(\"%\")) {\n // URL-encoded %2Fpath%2Fto%2Ffile.pdf should be file.pdf\n try {\n suggestedFilename = reFilename.exec(\n decodeURIComponent(suggestedFilename)\n )[0];\n } catch {\n // Possible (extremely rare) errors:\n // URIError \"Malformed URI\", e.g. for \"%AA.pdf\"\n // TypeError \"null has no properties\", e.g. for \"%2F.pdf\"\n }\n }\n }\n return suggestedFilename || defaultFilename;\n}\n\nclass StatTimer {\n started = Object.create(null);\n\n times = [];\n\n time(name) {\n if (name in this.started) {\n warn(`Timer is already running for ${name}`);\n }\n this.started[name] = Date.now();\n }\n\n timeEnd(name) {\n if (!(name in this.started)) {\n warn(`Timer has not been started for ${name}`);\n }\n this.times.push({\n name,\n start: this.started[name],\n end: Date.now(),\n });\n // Remove timer from started so it can be called again.\n delete this.started[name];\n }\n\n toString() {\n // Find the longest name for padding purposes.\n const outBuf = [];\n let longest = 0;\n for (const { name } of this.times) {\n longest = Math.max(name.length, longest);\n }\n for (const { name, start, end } of this.times) {\n outBuf.push(`${name.padEnd(longest)} ${end - start}ms\\n`);\n }\n return outBuf.join(\"\");\n }\n}\n\nfunction isValidFetchUrl(url, baseUrl) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: isValidFetchUrl\");\n }\n try {\n const { protocol } = baseUrl ? new URL(url, baseUrl) : new URL(url);\n // The Fetch API only supports the http/https protocols, and not file/ftp.\n return protocol === \"http:\" || protocol === \"https:\";\n } catch {\n return false; // `new URL()` will throw on incorrect data.\n }\n}\n\n/**\n * Event handler to suppress context menu.\n */\nfunction noContextMenu(e) {\n e.preventDefault();\n}\n\n// Deprecated API function -- display regardless of the `verbosity` setting.\nfunction deprecated(details) {\n console.log(\"Deprecated API usage: \" + details);\n}\n\nlet pdfDateStringRegex;\n\nclass PDFDateString {\n /**\n * Convert a PDF date string to a JavaScript `Date` object.\n *\n * The PDF date string format is described in section 7.9.4 of the official\n * PDF 32000-1:2008 specification. However, in the PDF 1.7 reference (sixth\n * edition) Adobe describes the same format including a trailing apostrophe.\n * This syntax in incorrect, but Adobe Acrobat creates PDF files that contain\n * them. We ignore all apostrophes as they are not necessary for date parsing.\n *\n * Moreover, Adobe Acrobat doesn't handle changing the date to universal time\n * and doesn't use the user's time zone (effectively ignoring the HH' and mm'\n * parts of the date string).\n *\n * @param {string} input\n * @returns {Date|null}\n */\n static toDateObject(input) {\n if (!input || typeof input !== \"string\") {\n return null;\n }\n\n // Lazily initialize the regular expression.\n pdfDateStringRegex ||= new RegExp(\n \"^D:\" + // Prefix (required)\n \"(\\\\d{4})\" + // Year (required)\n \"(\\\\d{2})?\" + // Month (optional)\n \"(\\\\d{2})?\" + // Day (optional)\n \"(\\\\d{2})?\" + // Hour (optional)\n \"(\\\\d{2})?\" + // Minute (optional)\n \"(\\\\d{2})?\" + // Second (optional)\n \"([Z|+|-])?\" + // Universal time relation (optional)\n \"(\\\\d{2})?\" + // Offset hour (optional)\n \"'?\" + // Splitting apostrophe (optional)\n \"(\\\\d{2})?\" + // Offset minute (optional)\n \"'?\" // Trailing apostrophe (optional)\n );\n\n // Optional fields that don't satisfy the requirements from the regular\n // expression (such as incorrect digit counts or numbers that are out of\n // range) will fall back the defaults from the specification.\n const matches = pdfDateStringRegex.exec(input);\n if (!matches) {\n return null;\n }\n\n // JavaScript's `Date` object expects the month to be between 0 and 11\n // instead of 1 and 12, so we have to correct for that.\n const year = parseInt(matches[1], 10);\n let month = parseInt(matches[2], 10);\n month = month >= 1 && month <= 12 ? month - 1 : 0;\n let day = parseInt(matches[3], 10);\n day = day >= 1 && day <= 31 ? day : 1;\n let hour = parseInt(matches[4], 10);\n hour = hour >= 0 && hour <= 23 ? hour : 0;\n let minute = parseInt(matches[5], 10);\n minute = minute >= 0 && minute <= 59 ? minute : 0;\n let second = parseInt(matches[6], 10);\n second = second >= 0 && second <= 59 ? second : 0;\n const universalTimeRelation = matches[7] || \"Z\";\n let offsetHour = parseInt(matches[8], 10);\n offsetHour = offsetHour >= 0 && offsetHour <= 23 ? offsetHour : 0;\n let offsetMinute = parseInt(matches[9], 10) || 0;\n offsetMinute = offsetMinute >= 0 && offsetMinute <= 59 ? offsetMinute : 0;\n\n // Universal time relation 'Z' means that the local time is equal to the\n // universal time, whereas the relations '+'/'-' indicate that the local\n // time is later respectively earlier than the universal time. Every date\n // is normalized to universal time.\n if (universalTimeRelation === \"-\") {\n hour += offsetHour;\n minute += offsetMinute;\n } else if (universalTimeRelation === \"+\") {\n hour -= offsetHour;\n minute -= offsetMinute;\n }\n\n return new Date(Date.UTC(year, month, day, hour, minute, second));\n }\n}\n\n/**\n * NOTE: This is (mostly) intended to support printing of XFA forms.\n */\nfunction getXfaPageViewport(xfaPage, { scale = 1, rotation = 0 }) {\n const { width, height } = xfaPage.attributes.style;\n const viewBox = [0, 0, parseInt(width), parseInt(height)];\n\n return new PageViewport({\n viewBox,\n scale,\n rotation,\n });\n}\n\nfunction getRGB(color) {\n if (color.startsWith(\"#\")) {\n const colorRGB = parseInt(color.slice(1), 16);\n return [\n (colorRGB & 0xff0000) >> 16,\n (colorRGB & 0x00ff00) >> 8,\n colorRGB & 0x0000ff,\n ];\n }\n\n if (color.startsWith(\"rgb(\")) {\n // getComputedStyle(...).color returns a `rgb(R, G, B)` color.\n return color\n .slice(/* \"rgb(\".length */ 4, -1) // Strip out \"rgb(\" and \")\".\n .split(\",\")\n .map(x => parseInt(x));\n }\n\n if (color.startsWith(\"rgba(\")) {\n return color\n .slice(/* \"rgba(\".length */ 5, -1) // Strip out \"rgba(\" and \")\".\n .split(\",\")\n .map(x => parseInt(x))\n .slice(0, 3);\n }\n\n warn(`Not a valid color format: \"${color}\"`);\n return [0, 0, 0];\n}\n\nfunction getColorValues(colors) {\n const span = document.createElement(\"span\");\n span.style.visibility = \"hidden\";\n document.body.append(span);\n for (const name of colors.keys()) {\n span.style.color = name;\n const computedColor = window.getComputedStyle(span).color;\n colors.set(name, getRGB(computedColor));\n }\n span.remove();\n}\n\nfunction getCurrentTransform(ctx) {\n const { a, b, c, d, e, f } = ctx.getTransform();\n return [a, b, c, d, e, f];\n}\n\nfunction getCurrentTransformInverse(ctx) {\n const { a, b, c, d, e, f } = ctx.getTransform().invertSelf();\n return [a, b, c, d, e, f];\n}\n\n/**\n * @param {HTMLDivElement} div\n * @param {PageViewport} viewport\n * @param {boolean} mustFlip\n * @param {boolean} mustRotate\n */\nfunction setLayerDimensions(\n div,\n viewport,\n mustFlip = false,\n mustRotate = true\n) {\n if (viewport instanceof PageViewport) {\n const { pageWidth, pageHeight } = viewport.rawDims;\n const { style } = div;\n const useRound = FeatureTest.isCSSRoundSupported;\n\n const w = `var(--scale-factor) * ${pageWidth}px`,\n h = `var(--scale-factor) * ${pageHeight}px`;\n const widthStr = useRound ? `round(${w}, 1px)` : `calc(${w})`,\n heightStr = useRound ? `round(${h}, 1px)` : `calc(${h})`;\n\n if (!mustFlip || viewport.rotation % 180 === 0) {\n style.width = widthStr;\n style.height = heightStr;\n } else {\n style.width = heightStr;\n style.height = widthStr;\n }\n }\n\n if (mustRotate) {\n div.setAttribute(\"data-main-rotation\", viewport.rotation);\n }\n}\n\nexport {\n deprecated,\n DOMCanvasFactory,\n DOMCMapReaderFactory,\n DOMFilterFactory,\n DOMStandardFontDataFactory,\n DOMSVGFactory,\n fetchData,\n getColorValues,\n getCurrentTransform,\n getCurrentTransformInverse,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getRGB,\n getXfaPageViewport,\n isDataScheme,\n isPdfFile,\n isValidFetchUrl,\n noContextMenu,\n PageViewport,\n PDFDateString,\n PixelsPerInch,\n RenderingCancelledException,\n setLayerDimensions,\n StatTimer,\n};\n","/* Copyright 2023 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { DOMSVGFactory } from \"./display_utils.js\";\nimport { shadow } from \"../shared/util.js\";\n\n/**\n * Manage the SVGs drawn on top of the page canvas.\n * It's important to have them directly on top of the canvas because we want to\n * be able to use mix-blend-mode for some of them.\n */\nclass DrawLayer {\n #parent = null;\n\n #id = 0;\n\n #mapping = new Map();\n\n constructor({ pageIndex }) {\n this.pageIndex = pageIndex;\n }\n\n setParent(parent) {\n if (!this.#parent) {\n this.#parent = parent;\n return;\n }\n\n if (this.#parent !== parent) {\n if (this.#mapping.size > 0) {\n for (const root of this.#mapping.values()) {\n root.remove();\n parent.append(root);\n }\n }\n this.#parent = parent;\n }\n }\n\n static get _svgFactory() {\n return shadow(this, \"_svgFactory\", new DOMSVGFactory());\n }\n\n static #setBox(element, { x, y, width, height }) {\n const { style } = element;\n style.top = `${100 * y}%`;\n style.left = `${100 * x}%`;\n style.width = `${100 * width}%`;\n style.height = `${100 * height}%`;\n }\n\n #createSVG(box) {\n const svg = DrawLayer._svgFactory.create(1, 1, /* skipDimensions = */ true);\n this.#parent.append(svg);\n DrawLayer.#setBox(svg, box);\n\n return svg;\n }\n\n highlight({ outlines, box }, color, opacity) {\n const id = this.#id++;\n const root = this.#createSVG(box);\n root.classList.add(\"highlight\");\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\n \"d\",\n DrawLayer.#extractPathFromHighlightOutlines(outlines)\n );\n\n // Create the clipping path for the editor div.\n const clipPath = DrawLayer._svgFactory.createElement(\"clipPath\");\n defs.append(clipPath);\n const clipPathId = `clip_${pathId}`;\n clipPath.setAttribute(\"id\", clipPathId);\n clipPath.setAttribute(\"clipPathUnits\", \"objectBoundingBox\");\n const clipPathUse = DrawLayer._svgFactory.createElement(\"use\");\n clipPath.append(clipPathUse);\n clipPathUse.setAttribute(\"href\", `#${pathId}`);\n clipPathUse.classList.add(\"clip\");\n\n const use = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use);\n root.setAttribute(\"fill\", color);\n root.setAttribute(\"fill-opacity\", opacity);\n use.setAttribute(\"href\", `#${pathId}`);\n\n this.#mapping.set(id, root);\n\n return { id, clipPathId: `url(#${clipPathId})` };\n }\n\n highlightOutline({ outlines, box }) {\n // We cannot draw the outline directly in the SVG for highlights because\n // it composes with its parent with mix-blend-mode: multiply.\n // But the outline has a different mix-blend-mode, so we need to draw it in\n // its own SVG.\n const id = this.#id++;\n const root = this.#createSVG(box);\n root.classList.add(\"highlightOutline\");\n const defs = DrawLayer._svgFactory.createElement(\"defs\");\n root.append(defs);\n const path = DrawLayer._svgFactory.createElement(\"path\");\n defs.append(path);\n const pathId = `path_p${this.pageIndex}_${id}`;\n path.setAttribute(\"id\", pathId);\n path.setAttribute(\n \"d\",\n DrawLayer.#extractPathFromHighlightOutlines(outlines)\n );\n path.setAttribute(\"vector-effect\", \"non-scaling-stroke\");\n\n const use1 = DrawLayer._svgFactory.createElement(\"use\");\n root.append(use1);\n use1.setAttribute(\"href\", `#${pathId}`);\n const use2 = use1.cloneNode();\n root.append(use2);\n use1.classList.add(\"mainOutline\");\n use2.classList.add(\"secondaryOutline\");\n\n this.#mapping.set(id, root);\n\n return id;\n }\n\n static #extractPathFromHighlightOutlines(polygons) {\n const buffer = [];\n for (const polygon of polygons) {\n let [prevX, prevY] = polygon;\n buffer.push(`M${prevX} ${prevY}`);\n for (let i = 2; i < polygon.length; i += 2) {\n const x = polygon[i];\n const y = polygon[i + 1];\n if (x === prevX) {\n buffer.push(`V${y}`);\n prevY = y;\n } else if (y === prevY) {\n buffer.push(`H${x}`);\n prevX = x;\n }\n }\n buffer.push(\"Z\");\n }\n return buffer.join(\" \");\n }\n\n updateBox(id, box) {\n DrawLayer.#setBox(this.#mapping.get(id), box);\n }\n\n rotate(id, angle) {\n this.#mapping.get(id).setAttribute(\"data-main-rotation\", angle);\n }\n\n changeColor(id, color) {\n this.#mapping.get(id).setAttribute(\"fill\", color);\n }\n\n changeOpacity(id, opacity) {\n this.#mapping.get(id).setAttribute(\"fill-opacity\", opacity);\n }\n\n addClass(id, className) {\n this.#mapping.get(id).classList.add(className);\n }\n\n removeClass(id, className) {\n this.#mapping.get(id).classList.remove(className);\n }\n\n remove(id) {\n this.#mapping.get(id).remove();\n this.#mapping.delete(id);\n }\n\n destroy() {\n this.#parent = null;\n for (const root of this.#mapping.values()) {\n root.remove();\n }\n this.#mapping.clear();\n }\n}\n\nexport { DrawLayer };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_editor_layer.js\").AnnotationEditorLayer} AnnotationEditorLayer */\n\nimport {\n AnnotationEditorParamsType,\n AnnotationEditorType,\n assert,\n LINE_FACTOR,\n shadow,\n Util,\n} from \"../../shared/util.js\";\nimport {\n AnnotationEditorUIManager,\n bindEvents,\n KeyboardManager,\n} from \"./tools.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { FreeTextAnnotationElement } from \"../annotation_layer.js\";\n\n/**\n * Basic text editor in order to create a FreeTex annotation.\n */\nclass FreeTextEditor extends AnnotationEditor {\n #boundEditorDivBlur = this.editorDivBlur.bind(this);\n\n #boundEditorDivFocus = this.editorDivFocus.bind(this);\n\n #boundEditorDivInput = this.editorDivInput.bind(this);\n\n #boundEditorDivKeydown = this.editorDivKeydown.bind(this);\n\n #color;\n\n #content = \"\";\n\n #editorDivId = `${this.id}-editor`;\n\n #fontSize;\n\n #initialData = null;\n\n static _freeTextDefaultContent = \"\";\n\n static _internalPadding = 0;\n\n static _defaultColor = null;\n\n static _defaultFontSize = 10;\n\n static get _keyboardManager() {\n const proto = FreeTextEditor.prototype;\n\n const arrowChecker = self => self.isEmpty();\n\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n\n return shadow(\n this,\n \"_keyboardManager\",\n new KeyboardManager([\n [\n // Commit the text in case the user use ctrl+s to save the document.\n // The event must bubble in order to be caught by the viewer.\n // See bug 1831574.\n [\"ctrl+s\", \"mac+meta+s\", \"ctrl+p\", \"mac+meta+p\"],\n proto.commitOrRemove,\n { bubbles: true },\n ],\n [\n [\"ctrl+Enter\", \"mac+meta+Enter\", \"Escape\", \"mac+Escape\"],\n proto.commitOrRemove,\n ],\n [\n [\"ArrowLeft\", \"mac+ArrowLeft\"],\n proto._translateEmpty,\n { args: [-small, 0], checker: arrowChecker },\n ],\n [\n [\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"],\n proto._translateEmpty,\n { args: [-big, 0], checker: arrowChecker },\n ],\n [\n [\"ArrowRight\", \"mac+ArrowRight\"],\n proto._translateEmpty,\n { args: [small, 0], checker: arrowChecker },\n ],\n [\n [\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"],\n proto._translateEmpty,\n { args: [big, 0], checker: arrowChecker },\n ],\n [\n [\"ArrowUp\", \"mac+ArrowUp\"],\n proto._translateEmpty,\n { args: [0, -small], checker: arrowChecker },\n ],\n [\n [\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"],\n proto._translateEmpty,\n { args: [0, -big], checker: arrowChecker },\n ],\n [\n [\"ArrowDown\", \"mac+ArrowDown\"],\n proto._translateEmpty,\n { args: [0, small], checker: arrowChecker },\n ],\n [\n [\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"],\n proto._translateEmpty,\n { args: [0, big], checker: arrowChecker },\n ],\n ])\n );\n }\n\n static _type = \"freetext\";\n\n static _editorType = AnnotationEditorType.FREETEXT;\n\n constructor(params) {\n super({ ...params, name: \"freeTextEditor\" });\n this.#color =\n params.color ||\n FreeTextEditor._defaultColor ||\n AnnotationEditor._defaultLineColor;\n this.#fontSize = params.fontSize || FreeTextEditor._defaultFontSize;\n }\n\n /** @inheritdoc */\n static initialize(l10n) {\n AnnotationEditor.initialize(l10n, {\n strings: [\"pdfjs-free-text-default-content\"],\n });\n const style = getComputedStyle(document.documentElement);\n\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n const lineHeight = parseFloat(\n style.getPropertyValue(\"--freetext-line-height\")\n );\n assert(\n lineHeight === LINE_FACTOR,\n \"Update the CSS variable to agree with the constant.\"\n );\n }\n\n this._internalPadding = parseFloat(\n style.getPropertyValue(\"--freetext-padding\")\n );\n }\n\n /** @inheritdoc */\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n FreeTextEditor._defaultFontSize = value;\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n FreeTextEditor._defaultColor = value;\n break;\n }\n }\n\n /** @inheritdoc */\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.FREETEXT_SIZE:\n this.#updateFontSize(value);\n break;\n case AnnotationEditorParamsType.FREETEXT_COLOR:\n this.#updateColor(value);\n break;\n }\n }\n\n /** @inheritdoc */\n static get defaultPropertiesToUpdate() {\n return [\n [\n AnnotationEditorParamsType.FREETEXT_SIZE,\n FreeTextEditor._defaultFontSize,\n ],\n [\n AnnotationEditorParamsType.FREETEXT_COLOR,\n FreeTextEditor._defaultColor || AnnotationEditor._defaultLineColor,\n ],\n ];\n }\n\n /** @inheritdoc */\n get propertiesToUpdate() {\n return [\n [AnnotationEditorParamsType.FREETEXT_SIZE, this.#fontSize],\n [AnnotationEditorParamsType.FREETEXT_COLOR, this.#color],\n ];\n }\n\n /**\n * Update the font size and make this action as undoable.\n * @param {number} fontSize\n */\n #updateFontSize(fontSize) {\n const setFontsize = size => {\n this.editorDiv.style.fontSize = `calc(${size}px * var(--scale-factor))`;\n this.translate(0, -(size - this.#fontSize) * this.parentScale);\n this.#fontSize = size;\n this.#setEditorDimensions();\n };\n const savedFontsize = this.#fontSize;\n this.addCommands({\n cmd: () => {\n setFontsize(fontSize);\n },\n undo: () => {\n setFontsize(savedFontsize);\n },\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_SIZE,\n overwriteIfSameType: true,\n keepUndo: true,\n });\n }\n\n /**\n * Update the color and make this action undoable.\n * @param {string} color\n */\n #updateColor(color) {\n const savedColor = this.#color;\n this.addCommands({\n cmd: () => {\n this.#color = this.editorDiv.style.color = color;\n },\n undo: () => {\n this.#color = this.editorDiv.style.color = savedColor;\n },\n mustExec: true,\n type: AnnotationEditorParamsType.FREETEXT_COLOR,\n overwriteIfSameType: true,\n keepUndo: true,\n });\n }\n\n /**\n * Helper to translate the editor with the keyboard when it's empty.\n * @param {number} x in page units.\n * @param {number} y in page units.\n */\n _translateEmpty(x, y) {\n this._uiManager.translateSelectedEditors(x, y, /* noCommit = */ true);\n }\n\n /** @inheritdoc */\n getInitialTranslation() {\n // The start of the base line is where the user clicked.\n const scale = this.parentScale;\n return [\n -FreeTextEditor._internalPadding * scale,\n -(FreeTextEditor._internalPadding + this.#fontSize) * scale,\n ];\n }\n\n /** @inheritdoc */\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n\n if (!this.isAttachedToDOM) {\n // At some point this editor was removed and we're rebuilting it,\n // hence we must add it to its parent.\n this.parent.add(this);\n }\n }\n\n /** @inheritdoc */\n enableEditMode() {\n if (this.isInEditMode()) {\n return;\n }\n\n this.parent.setEditingState(false);\n this.parent.updateToolbar(AnnotationEditorType.FREETEXT);\n super.enableEditMode();\n this.overlayDiv.classList.remove(\"enabled\");\n this.editorDiv.contentEditable = true;\n this._isDraggable = false;\n this.div.removeAttribute(\"aria-activedescendant\");\n this.editorDiv.addEventListener(\"keydown\", this.#boundEditorDivKeydown);\n this.editorDiv.addEventListener(\"focus\", this.#boundEditorDivFocus);\n this.editorDiv.addEventListener(\"blur\", this.#boundEditorDivBlur);\n this.editorDiv.addEventListener(\"input\", this.#boundEditorDivInput);\n }\n\n /** @inheritdoc */\n disableEditMode() {\n if (!this.isInEditMode()) {\n return;\n }\n\n this.parent.setEditingState(true);\n super.disableEditMode();\n this.overlayDiv.classList.add(\"enabled\");\n this.editorDiv.contentEditable = false;\n this.div.setAttribute(\"aria-activedescendant\", this.#editorDivId);\n this._isDraggable = true;\n this.editorDiv.removeEventListener(\"keydown\", this.#boundEditorDivKeydown);\n this.editorDiv.removeEventListener(\"focus\", this.#boundEditorDivFocus);\n this.editorDiv.removeEventListener(\"blur\", this.#boundEditorDivBlur);\n this.editorDiv.removeEventListener(\"input\", this.#boundEditorDivInput);\n\n // On Chrome, the focus is given to <body> when contentEditable is set to\n // false, hence we focus the div.\n this.div.focus({\n preventScroll: true /* See issue #15744 */,\n });\n\n // In case the blur callback hasn't been called.\n this.isEditing = false;\n this.parent.div.classList.add(\"freetextEditing\");\n }\n\n /** @inheritdoc */\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n if (event.target !== this.editorDiv) {\n this.editorDiv.focus();\n }\n }\n\n /** @inheritdoc */\n onceAdded() {\n if (this.width) {\n this.#cheatInitialRect();\n // The editor was created in using ctrl+c.\n return;\n }\n this.enableEditMode();\n this.editorDiv.focus();\n if (this._initialOptions?.isCentered) {\n this.center();\n }\n this._initialOptions = null;\n }\n\n /** @inheritdoc */\n isEmpty() {\n return !this.editorDiv || this.editorDiv.innerText.trim() === \"\";\n }\n\n /** @inheritdoc */\n remove() {\n this.isEditing = false;\n if (this.parent) {\n this.parent.setEditingState(true);\n this.parent.div.classList.add(\"freetextEditing\");\n }\n super.remove();\n }\n\n /**\n * Extract the text from this editor.\n * @returns {string}\n */\n #extractText() {\n const divs = this.editorDiv.getElementsByTagName(\"div\");\n if (divs.length === 0) {\n return this.editorDiv.innerText;\n }\n const buffer = [];\n for (const div of divs) {\n buffer.push(div.innerText.replace(/\\r\\n?|\\n/, \"\"));\n }\n return buffer.join(\"\\n\");\n }\n\n #setEditorDimensions() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n\n let rect;\n if (this.isAttachedToDOM) {\n rect = this.div.getBoundingClientRect();\n } else {\n // This editor isn't on screen but we need to get its dimensions, so\n // we just insert it in the DOM, get its bounding box and then remove it.\n const { currentLayer, div } = this;\n const savedDisplay = div.style.display;\n div.style.display = \"hidden\";\n currentLayer.div.append(this.div);\n rect = div.getBoundingClientRect();\n div.remove();\n div.style.display = savedDisplay;\n }\n\n // The dimensions are relative to the rotation of the page, hence we need to\n // take that into account (see issue #16636).\n if (this.rotation % 180 === this.parentRotation % 180) {\n this.width = rect.width / parentWidth;\n this.height = rect.height / parentHeight;\n } else {\n this.width = rect.height / parentWidth;\n this.height = rect.width / parentHeight;\n }\n this.fixAndSetPosition();\n }\n\n /**\n * Commit the content we have in this editor.\n * @returns {undefined}\n */\n commit() {\n if (!this.isInEditMode()) {\n return;\n }\n\n super.commit();\n this.disableEditMode();\n const savedText = this.#content;\n const newText = (this.#content = this.#extractText().trimEnd());\n if (savedText === newText) {\n return;\n }\n\n const setText = text => {\n this.#content = text;\n if (!text) {\n this.remove();\n return;\n }\n this.#setContent();\n this._uiManager.rebuild(this);\n this.#setEditorDimensions();\n };\n this.addCommands({\n cmd: () => {\n setText(newText);\n },\n undo: () => {\n setText(savedText);\n },\n mustExec: false,\n });\n this.#setEditorDimensions();\n }\n\n /** @inheritdoc */\n shouldGetKeyboardEvents() {\n return this.isInEditMode();\n }\n\n /** @inheritdoc */\n enterInEditMode() {\n this.enableEditMode();\n this.editorDiv.focus();\n }\n\n /**\n * ondblclick callback.\n * @param {MouseEvent} event\n */\n dblclick(event) {\n this.enterInEditMode();\n }\n\n /**\n * onkeydown callback.\n * @param {KeyboardEvent} event\n */\n keydown(event) {\n if (event.target === this.div && event.key === \"Enter\") {\n this.enterInEditMode();\n // Avoid to add an unwanted new line.\n event.preventDefault();\n }\n }\n\n editorDivKeydown(event) {\n FreeTextEditor._keyboardManager.exec(this, event);\n }\n\n editorDivFocus(event) {\n this.isEditing = true;\n }\n\n editorDivBlur(event) {\n this.isEditing = false;\n }\n\n editorDivInput(event) {\n this.parent.div.classList.toggle(\"freetextEditing\", this.isEmpty());\n }\n\n /** @inheritdoc */\n disableEditing() {\n this.editorDiv.setAttribute(\"role\", \"comment\");\n this.editorDiv.removeAttribute(\"aria-multiline\");\n }\n\n /** @inheritdoc */\n enableEditing() {\n this.editorDiv.setAttribute(\"role\", \"textbox\");\n this.editorDiv.setAttribute(\"aria-multiline\", true);\n }\n\n /** @inheritdoc */\n render() {\n if (this.div) {\n return this.div;\n }\n\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n\n super.render();\n this.editorDiv = document.createElement(\"div\");\n this.editorDiv.className = \"internal\";\n\n this.editorDiv.setAttribute(\"id\", this.#editorDivId);\n this.editorDiv.setAttribute(\"data-l10n-id\", \"pdfjs-free-text\");\n this.enableEditing();\n\n AnnotationEditor._l10nPromise\n .get(\"pdfjs-free-text-default-content\")\n .then(msg => this.editorDiv?.setAttribute(\"default-content\", msg));\n this.editorDiv.contentEditable = true;\n\n const { style } = this.editorDiv;\n style.fontSize = `calc(${this.#fontSize}px * var(--scale-factor))`;\n style.color = this.#color;\n\n this.div.append(this.editorDiv);\n\n this.overlayDiv = document.createElement(\"div\");\n this.overlayDiv.classList.add(\"overlay\", \"enabled\");\n this.div.append(this.overlayDiv);\n\n // TODO: implement paste callback.\n // The goal is to sanitize and have something suitable for this\n // editor.\n bindEvents(this, this.div, [\"dblclick\", \"keydown\"]);\n\n if (this.width) {\n // This editor was created in using copy (ctrl+c).\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.annotationElementId) {\n // This stuff is hard to test: if something is changed here, please\n // test with the following PDF file:\n // - freetexts.pdf\n // - rotated_freetexts.pdf\n // Only small variations between the original annotation and its editor\n // are allowed.\n\n // position is the position of the first glyph in the annotation\n // and it's relative to its container.\n const { position } = this.#initialData;\n let [tx, ty] = this.getInitialTranslation();\n [tx, ty] = this.pageTranslationToScreen(tx, ty);\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n let posX, posY;\n switch (this.rotation) {\n case 0:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY + this.height - (position[1] - pageY) / pageHeight;\n break;\n case 90:\n posX = baseX + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [ty, -tx];\n break;\n case 180:\n posX = baseX - this.width + (position[0] - pageX) / pageWidth;\n posY = baseY - (position[1] - pageY) / pageHeight;\n [tx, ty] = [-tx, -ty];\n break;\n case 270:\n posX =\n baseX +\n (position[0] - pageX - this.height * pageHeight) / pageWidth;\n posY =\n baseY +\n (position[1] - pageY - this.width * pageWidth) / pageHeight;\n [tx, ty] = [-ty, tx];\n break;\n }\n this.setAt(posX * parentWidth, posY * parentHeight, tx, ty);\n } else {\n this.setAt(\n baseX * parentWidth,\n baseY * parentHeight,\n this.width * parentWidth,\n this.height * parentHeight\n );\n }\n\n this.#setContent();\n this._isDraggable = true;\n this.editorDiv.contentEditable = false;\n } else {\n this._isDraggable = false;\n this.editorDiv.contentEditable = true;\n }\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n this.div.setAttribute(\"annotation-id\", this.annotationElementId);\n }\n\n return this.div;\n }\n\n #setContent() {\n this.editorDiv.replaceChildren();\n if (!this.#content) {\n return;\n }\n for (const line of this.#content.split(\"\\n\")) {\n const div = document.createElement(\"div\");\n div.append(\n line ? document.createTextNode(line) : document.createElement(\"br\")\n );\n this.editorDiv.append(div);\n }\n }\n\n /** @inheritdoc */\n get contentDiv() {\n return this.editorDiv;\n }\n\n /** @inheritdoc */\n static deserialize(data, parent, uiManager) {\n let initialData = null;\n if (data instanceof FreeTextAnnotationElement) {\n const {\n data: {\n defaultAppearanceData: { fontSize, fontColor },\n rect,\n rotation,\n id,\n },\n textContent,\n textPosition,\n parent: {\n page: { pageNumber },\n },\n } = data;\n // textContent is supposed to be an array of strings containing each line\n // of text. However, it can be null or empty.\n if (!textContent || textContent.length === 0) {\n // Empty annotation.\n return null;\n }\n initialData = data = {\n annotationType: AnnotationEditorType.FREETEXT,\n color: Array.from(fontColor),\n fontSize,\n value: textContent.join(\"\\n\"),\n position: textPosition,\n pageIndex: pageNumber - 1,\n rect,\n rotation,\n id,\n deleted: false,\n };\n }\n const editor = super.deserialize(data, parent, uiManager);\n\n editor.#fontSize = data.fontSize;\n editor.#color = Util.makeHexColor(...data.color);\n editor.#content = data.value;\n editor.annotationElementId = data.id || null;\n editor.#initialData = initialData;\n\n return editor;\n }\n\n /** @inheritdoc */\n serialize(isForCopying = false) {\n if (this.isEmpty()) {\n return null;\n }\n\n if (this.deleted) {\n return {\n pageIndex: this.pageIndex,\n id: this.annotationElementId,\n deleted: true,\n };\n }\n\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n const rect = this.getRect(padding, padding);\n const color = AnnotationEditor._colorManager.convert(\n this.isAttachedToDOM\n ? getComputedStyle(this.editorDiv).color\n : this.#color\n );\n\n const serialized = {\n annotationType: AnnotationEditorType.FREETEXT,\n color,\n fontSize: this.#fontSize,\n value: this.#content,\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId,\n };\n\n if (isForCopying) {\n // Don't add the id when copying because the pasted editor mustn't be\n // linked to an existing annotation.\n return serialized;\n }\n\n if (this.annotationElementId && !this.#hasElementChanged(serialized)) {\n return null;\n }\n\n serialized.id = this.annotationElementId;\n\n return serialized;\n }\n\n #hasElementChanged(serialized) {\n const { value, fontSize, color, rect, pageIndex } = this.#initialData;\n\n return (\n serialized.value !== value ||\n serialized.fontSize !== fontSize ||\n serialized.rect.some((x, i) => Math.abs(x - rect[i]) >= 1) ||\n serialized.color.some((c, i) => c !== color[i]) ||\n serialized.pageIndex !== pageIndex\n );\n }\n\n #cheatInitialRect(delayed = false) {\n // The annotation has a rect but the editor has an other one.\n // When we want to know if the annotation has changed (e.g. has been moved)\n // we must compare the editor initial rect with the current one.\n // So this method is a hack to have a way to compare the real rects.\n if (!this.annotationElementId) {\n return;\n }\n\n this.#setEditorDimensions();\n if (!delayed && (this.width === 0 || this.height === 0)) {\n setTimeout(() => this.#cheatInitialRect(/* delayed = */ true), 0);\n return;\n }\n\n const padding = FreeTextEditor._internalPadding * this.parentScale;\n this.#initialData.rect = this.getRect(padding, padding);\n }\n}\n\nexport { FreeTextEditor };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AnnotationEditorParamsType,\n AnnotationEditorType,\n Util,\n} from \"../../shared/util.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { InkAnnotationElement } from \"../annotation_layer.js\";\nimport { noContextMenu } from \"../display_utils.js\";\nimport { opacityToHex } from \"./tools.js\";\n\n/**\n * Basic draw editor in order to generate an Ink annotation.\n */\nclass InkEditor extends AnnotationEditor {\n #baseHeight = 0;\n\n #baseWidth = 0;\n\n #boundCanvasPointermove = this.canvasPointermove.bind(this);\n\n #boundCanvasPointerleave = this.canvasPointerleave.bind(this);\n\n #boundCanvasPointerup = this.canvasPointerup.bind(this);\n\n #boundCanvasPointerdown = this.canvasPointerdown.bind(this);\n\n #canvasContextMenuTimeoutId = null;\n\n #currentPath2D = new Path2D();\n\n #disableEditing = false;\n\n #hasSomethingToDraw = false;\n\n #isCanvasInitialized = false;\n\n #observer = null;\n\n #realWidth = 0;\n\n #realHeight = 0;\n\n #requestFrameCallback = null;\n\n static _defaultColor = null;\n\n static _defaultOpacity = 1;\n\n static _defaultThickness = 1;\n\n static _type = \"ink\";\n\n static _editorType = AnnotationEditorType.INK;\n\n constructor(params) {\n super({ ...params, name: \"inkEditor\" });\n this.color = params.color || null;\n this.thickness = params.thickness || null;\n this.opacity = params.opacity || null;\n this.paths = [];\n this.bezierPath2D = [];\n this.allRawPaths = [];\n this.currentPath = [];\n this.scaleFactor = 1;\n this.translationX = this.translationY = 0;\n this.x = 0;\n this.y = 0;\n this._willKeepAspectRatio = true;\n }\n\n /** @inheritdoc */\n static initialize(l10n) {\n AnnotationEditor.initialize(l10n);\n }\n\n /** @inheritdoc */\n static updateDefaultParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.INK_THICKNESS:\n InkEditor._defaultThickness = value;\n break;\n case AnnotationEditorParamsType.INK_COLOR:\n InkEditor._defaultColor = value;\n break;\n case AnnotationEditorParamsType.INK_OPACITY:\n InkEditor._defaultOpacity = value / 100;\n break;\n }\n }\n\n /** @inheritdoc */\n updateParams(type, value) {\n switch (type) {\n case AnnotationEditorParamsType.INK_THICKNESS:\n this.#updateThickness(value);\n break;\n case AnnotationEditorParamsType.INK_COLOR:\n this.#updateColor(value);\n break;\n case AnnotationEditorParamsType.INK_OPACITY:\n this.#updateOpacity(value);\n break;\n }\n }\n\n /** @inheritdoc */\n static get defaultPropertiesToUpdate() {\n return [\n [AnnotationEditorParamsType.INK_THICKNESS, InkEditor._defaultThickness],\n [\n AnnotationEditorParamsType.INK_COLOR,\n InkEditor._defaultColor || AnnotationEditor._defaultLineColor,\n ],\n [\n AnnotationEditorParamsType.INK_OPACITY,\n Math.round(InkEditor._defaultOpacity * 100),\n ],\n ];\n }\n\n /** @inheritdoc */\n get propertiesToUpdate() {\n return [\n [\n AnnotationEditorParamsType.INK_THICKNESS,\n this.thickness || InkEditor._defaultThickness,\n ],\n [\n AnnotationEditorParamsType.INK_COLOR,\n this.color ||\n InkEditor._defaultColor ||\n AnnotationEditor._defaultLineColor,\n ],\n [\n AnnotationEditorParamsType.INK_OPACITY,\n Math.round(100 * (this.opacity ?? InkEditor._defaultOpacity)),\n ],\n ];\n }\n\n /**\n * Update the thickness and make this action undoable.\n * @param {number} thickness\n */\n #updateThickness(thickness) {\n const savedThickness = this.thickness;\n this.addCommands({\n cmd: () => {\n this.thickness = thickness;\n this.#fitToContent();\n },\n undo: () => {\n this.thickness = savedThickness;\n this.#fitToContent();\n },\n mustExec: true,\n type: AnnotationEditorParamsType.INK_THICKNESS,\n overwriteIfSameType: true,\n keepUndo: true,\n });\n }\n\n /**\n * Update the color and make this action undoable.\n * @param {string} color\n */\n #updateColor(color) {\n const savedColor = this.color;\n this.addCommands({\n cmd: () => {\n this.color = color;\n this.#redraw();\n },\n undo: () => {\n this.color = savedColor;\n this.#redraw();\n },\n mustExec: true,\n type: AnnotationEditorParamsType.INK_COLOR,\n overwriteIfSameType: true,\n keepUndo: true,\n });\n }\n\n /**\n * Update the opacity and make this action undoable.\n * @param {number} opacity\n */\n #updateOpacity(opacity) {\n opacity /= 100;\n const savedOpacity = this.opacity;\n this.addCommands({\n cmd: () => {\n this.opacity = opacity;\n this.#redraw();\n },\n undo: () => {\n this.opacity = savedOpacity;\n this.#redraw();\n },\n mustExec: true,\n type: AnnotationEditorParamsType.INK_OPACITY,\n overwriteIfSameType: true,\n keepUndo: true,\n });\n }\n\n /** @inheritdoc */\n rebuild() {\n if (!this.parent) {\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n\n if (!this.canvas) {\n this.#createCanvas();\n this.#createObserver();\n }\n\n if (!this.isAttachedToDOM) {\n // At some point this editor was removed and we're rebuilding it,\n // hence we must add it to its parent.\n this.parent.add(this);\n this.#setCanvasDims();\n }\n this.#fitToContent();\n }\n\n /** @inheritdoc */\n remove() {\n if (this.canvas === null) {\n return;\n }\n\n if (!this.isEmpty()) {\n this.commit();\n }\n\n // Destroy the canvas.\n this.canvas.width = this.canvas.height = 0;\n this.canvas.remove();\n this.canvas = null;\n\n if (this.#canvasContextMenuTimeoutId) {\n clearTimeout(this.#canvasContextMenuTimeoutId);\n this.#canvasContextMenuTimeoutId = null;\n }\n\n this.#observer.disconnect();\n this.#observer = null;\n\n super.remove();\n }\n\n setParent(parent) {\n if (!this.parent && parent) {\n // We've a parent hence the rescale will be handled thanks to the\n // ResizeObserver.\n this._uiManager.removeShouldRescale(this);\n } else if (this.parent && parent === null) {\n // The editor is removed from the DOM, hence we handle the rescale thanks\n // to the onScaleChanging callback.\n // This way, it'll be saved/printed correctly.\n this._uiManager.addShouldRescale(this);\n }\n super.setParent(parent);\n }\n\n onScaleChanging() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const width = this.width * parentWidth;\n const height = this.height * parentHeight;\n this.setDimensions(width, height);\n }\n\n /** @inheritdoc */\n enableEditMode() {\n if (this.#disableEditing || this.canvas === null) {\n return;\n }\n\n super.enableEditMode();\n this._isDraggable = false;\n this.canvas.addEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n }\n\n /** @inheritdoc */\n disableEditMode() {\n if (!this.isInEditMode() || this.canvas === null) {\n return;\n }\n\n super.disableEditMode();\n this._isDraggable = !this.isEmpty();\n this.div.classList.remove(\"editing\");\n\n this.canvas.removeEventListener(\n \"pointerdown\",\n this.#boundCanvasPointerdown\n );\n }\n\n /** @inheritdoc */\n onceAdded() {\n this._isDraggable = !this.isEmpty();\n }\n\n /** @inheritdoc */\n isEmpty() {\n return (\n this.paths.length === 0 ||\n (this.paths.length === 1 && this.paths[0].length === 0)\n );\n }\n\n #getInitialBBox() {\n const {\n parentRotation,\n parentDimensions: [width, height],\n } = this;\n switch (parentRotation) {\n case 90:\n return [0, height, height, width];\n case 180:\n return [width, height, width, height];\n case 270:\n return [width, 0, height, width];\n default:\n return [0, 0, width, height];\n }\n }\n\n /**\n * Set line styles.\n */\n #setStroke() {\n const { ctx, color, opacity, thickness, parentScale, scaleFactor } = this;\n ctx.lineWidth = (thickness * parentScale) / scaleFactor;\n ctx.lineCap = \"round\";\n ctx.lineJoin = \"round\";\n ctx.miterLimit = 10;\n ctx.strokeStyle = `${color}${opacityToHex(opacity)}`;\n }\n\n /**\n * Start to draw on the canvas.\n * @param {number} x\n * @param {number} y\n */\n #startDrawing(x, y) {\n this.canvas.addEventListener(\"contextmenu\", noContextMenu);\n this.canvas.addEventListener(\"pointerleave\", this.#boundCanvasPointerleave);\n this.canvas.addEventListener(\"pointermove\", this.#boundCanvasPointermove);\n this.canvas.addEventListener(\"pointerup\", this.#boundCanvasPointerup);\n this.canvas.removeEventListener(\n \"pointerdown\",\n this.#boundCanvasPointerdown\n );\n\n this.isEditing = true;\n if (!this.#isCanvasInitialized) {\n this.#isCanvasInitialized = true;\n this.#setCanvasDims();\n this.thickness ||= InkEditor._defaultThickness;\n this.color ||=\n InkEditor._defaultColor || AnnotationEditor._defaultLineColor;\n this.opacity ??= InkEditor._defaultOpacity;\n }\n this.currentPath.push([x, y]);\n this.#hasSomethingToDraw = false;\n this.#setStroke();\n\n this.#requestFrameCallback = () => {\n this.#drawPoints();\n if (this.#requestFrameCallback) {\n window.requestAnimationFrame(this.#requestFrameCallback);\n }\n };\n window.requestAnimationFrame(this.#requestFrameCallback);\n }\n\n /**\n * Draw on the canvas.\n * @param {number} x\n * @param {number} y\n */\n #draw(x, y) {\n const [lastX, lastY] = this.currentPath.at(-1);\n if (this.currentPath.length > 1 && x === lastX && y === lastY) {\n return;\n }\n const currentPath = this.currentPath;\n let path2D = this.#currentPath2D;\n currentPath.push([x, y]);\n this.#hasSomethingToDraw = true;\n\n if (currentPath.length <= 2) {\n path2D.moveTo(...currentPath[0]);\n path2D.lineTo(x, y);\n return;\n }\n\n if (currentPath.length === 3) {\n this.#currentPath2D = path2D = new Path2D();\n path2D.moveTo(...currentPath[0]);\n }\n\n this.#makeBezierCurve(\n path2D,\n ...currentPath.at(-3),\n ...currentPath.at(-2),\n x,\n y\n );\n }\n\n #endPath() {\n if (this.currentPath.length === 0) {\n return;\n }\n const lastPoint = this.currentPath.at(-1);\n this.#currentPath2D.lineTo(...lastPoint);\n }\n\n /**\n * Stop to draw on the canvas.\n * @param {number} x\n * @param {number} y\n */\n #stopDrawing(x, y) {\n this.#requestFrameCallback = null;\n\n x = Math.min(Math.max(x, 0), this.canvas.width);\n y = Math.min(Math.max(y, 0), this.canvas.height);\n\n this.#draw(x, y);\n this.#endPath();\n\n // Interpolate the path entered by the user with some\n // Bezier's curves in order to have a smoother path and\n // to reduce the data size used to draw it in the PDF.\n let bezier;\n if (this.currentPath.length !== 1) {\n bezier = this.#generateBezierPoints();\n } else {\n // We have only one point finally.\n const xy = [x, y];\n bezier = [[xy, xy.slice(), xy.slice(), xy]];\n }\n const path2D = this.#currentPath2D;\n const currentPath = this.currentPath;\n this.currentPath = [];\n this.#currentPath2D = new Path2D();\n\n const cmd = () => {\n this.allRawPaths.push(currentPath);\n this.paths.push(bezier);\n this.bezierPath2D.push(path2D);\n this.rebuild();\n };\n\n const undo = () => {\n this.allRawPaths.pop();\n this.paths.pop();\n this.bezierPath2D.pop();\n if (this.paths.length === 0) {\n this.remove();\n } else {\n if (!this.canvas) {\n this.#createCanvas();\n this.#createObserver();\n }\n this.#fitToContent();\n }\n };\n\n this.addCommands({ cmd, undo, mustExec: true });\n }\n\n #drawPoints() {\n if (!this.#hasSomethingToDraw) {\n return;\n }\n this.#hasSomethingToDraw = false;\n\n const thickness = Math.ceil(this.thickness * this.parentScale);\n const lastPoints = this.currentPath.slice(-3);\n const x = lastPoints.map(xy => xy[0]);\n const y = lastPoints.map(xy => xy[1]);\n const xMin = Math.min(...x) - thickness;\n const xMax = Math.max(...x) + thickness;\n const yMin = Math.min(...y) - thickness;\n const yMax = Math.max(...y) + thickness;\n\n const { ctx } = this;\n ctx.save();\n\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n // In Chrome, the clip() method doesn't work as expected.\n ctx.clearRect(xMin, yMin, xMax - xMin, yMax - yMin);\n ctx.beginPath();\n ctx.rect(xMin, yMin, xMax - xMin, yMax - yMin);\n ctx.clip();\n } else {\n ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n }\n\n for (const path of this.bezierPath2D) {\n ctx.stroke(path);\n }\n ctx.stroke(this.#currentPath2D);\n\n ctx.restore();\n }\n\n #makeBezierCurve(path2D, x0, y0, x1, y1, x2, y2) {\n const prevX = (x0 + x1) / 2;\n const prevY = (y0 + y1) / 2;\n const x3 = (x1 + x2) / 2;\n const y3 = (y1 + y2) / 2;\n\n path2D.bezierCurveTo(\n prevX + (2 * (x1 - prevX)) / 3,\n prevY + (2 * (y1 - prevY)) / 3,\n x3 + (2 * (x1 - x3)) / 3,\n y3 + (2 * (y1 - y3)) / 3,\n x3,\n y3\n );\n }\n\n #generateBezierPoints() {\n const path = this.currentPath;\n if (path.length <= 2) {\n return [[path[0], path[0], path.at(-1), path.at(-1)]];\n }\n\n const bezierPoints = [];\n let i;\n let [x0, y0] = path[0];\n for (i = 1; i < path.length - 2; i++) {\n const [x1, y1] = path[i];\n const [x2, y2] = path[i + 1];\n const x3 = (x1 + x2) / 2;\n const y3 = (y1 + y2) / 2;\n\n // The quadratic is: [[x0, y0], [x1, y1], [x3, y3]].\n // Convert the quadratic to a cubic\n // (see https://fontforge.org/docs/techref/bezier.html#converting-truetype-to-postscript)\n const control1 = [x0 + (2 * (x1 - x0)) / 3, y0 + (2 * (y1 - y0)) / 3];\n const control2 = [x3 + (2 * (x1 - x3)) / 3, y3 + (2 * (y1 - y3)) / 3];\n\n bezierPoints.push([[x0, y0], control1, control2, [x3, y3]]);\n\n [x0, y0] = [x3, y3];\n }\n\n const [x1, y1] = path[i];\n const [x2, y2] = path[i + 1];\n\n // The quadratic is: [[x0, y0], [x1, y1], [x2, y2]].\n const control1 = [x0 + (2 * (x1 - x0)) / 3, y0 + (2 * (y1 - y0)) / 3];\n const control2 = [x2 + (2 * (x1 - x2)) / 3, y2 + (2 * (y1 - y2)) / 3];\n\n bezierPoints.push([[x0, y0], control1, control2, [x2, y2]]);\n return bezierPoints;\n }\n\n /**\n * Redraw all the paths.\n */\n #redraw() {\n if (this.isEmpty()) {\n this.#updateTransform();\n return;\n }\n this.#setStroke();\n\n const { canvas, ctx } = this;\n ctx.setTransform(1, 0, 0, 1, 0, 0);\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n this.#updateTransform();\n\n for (const path of this.bezierPath2D) {\n ctx.stroke(path);\n }\n }\n\n /**\n * Commit the curves we have in this editor.\n */\n commit() {\n if (this.#disableEditing) {\n return;\n }\n\n super.commit();\n\n this.isEditing = false;\n this.disableEditMode();\n\n // This editor must be on top of the main ink editor.\n this.setInForeground();\n\n this.#disableEditing = true;\n this.div.classList.add(\"disabled\");\n\n this.#fitToContent(/* firstTime = */ true);\n this.select();\n\n this.parent.addInkEditorIfNeeded(/* isCommitting = */ true);\n\n // When commiting, the position of this editor is changed, hence we must\n // move it to the right position in the DOM.\n this.moveInDOM();\n this.div.focus({\n preventScroll: true /* See issue #15744 */,\n });\n }\n\n /** @inheritdoc */\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n super.focusin(event);\n this.enableEditMode();\n }\n\n /**\n * onpointerdown callback for the canvas we're drawing on.\n * @param {PointerEvent} event\n */\n canvasPointerdown(event) {\n if (event.button !== 0 || !this.isInEditMode() || this.#disableEditing) {\n return;\n }\n\n // We want to draw on top of any other editors.\n // Since it's the last child, there's no need to give it a higher z-index.\n this.setInForeground();\n\n event.preventDefault();\n\n if (\n event.pointerType !== \"mouse\" &&\n !this.div.contains(document.activeElement)\n ) {\n this.div.focus({\n preventScroll: true /* See issue #17327 */,\n });\n }\n\n this.#startDrawing(event.offsetX, event.offsetY);\n }\n\n /**\n * onpointermove callback for the canvas we're drawing on.\n * @param {PointerEvent} event\n */\n canvasPointermove(event) {\n event.preventDefault();\n this.#draw(event.offsetX, event.offsetY);\n }\n\n /**\n * onpointerup callback for the canvas we're drawing on.\n * @param {PointerEvent} event\n */\n canvasPointerup(event) {\n event.preventDefault();\n this.#endDrawing(event);\n }\n\n /**\n * onpointerleave callback for the canvas we're drawing on.\n * @param {PointerEvent} event\n */\n canvasPointerleave(event) {\n this.#endDrawing(event);\n }\n\n /**\n * End the drawing.\n * @param {PointerEvent} event\n */\n #endDrawing(event) {\n this.canvas.removeEventListener(\n \"pointerleave\",\n this.#boundCanvasPointerleave\n );\n this.canvas.removeEventListener(\n \"pointermove\",\n this.#boundCanvasPointermove\n );\n this.canvas.removeEventListener(\"pointerup\", this.#boundCanvasPointerup);\n this.canvas.addEventListener(\"pointerdown\", this.#boundCanvasPointerdown);\n\n // Slight delay to avoid the context menu to appear (it can happen on a long\n // tap with a pen).\n if (this.#canvasContextMenuTimeoutId) {\n clearTimeout(this.#canvasContextMenuTimeoutId);\n }\n this.#canvasContextMenuTimeoutId = setTimeout(() => {\n this.#canvasContextMenuTimeoutId = null;\n this.canvas.removeEventListener(\"contextmenu\", noContextMenu);\n }, 10);\n\n this.#stopDrawing(event.offsetX, event.offsetY);\n\n this.addToAnnotationStorage();\n\n // Since the ink editor covers all of the page and we want to be able\n // to select another editor, we just put this one in the background.\n this.setInBackground();\n }\n\n /**\n * Create the canvas element.\n */\n #createCanvas() {\n this.canvas = document.createElement(\"canvas\");\n this.canvas.width = this.canvas.height = 0;\n this.canvas.className = \"inkEditorCanvas\";\n this.canvas.setAttribute(\"data-l10n-id\", \"pdfjs-ink-canvas\");\n\n this.div.append(this.canvas);\n this.ctx = this.canvas.getContext(\"2d\");\n }\n\n /**\n * Create the resize observer.\n */\n #createObserver() {\n this.#observer = new ResizeObserver(entries => {\n const rect = entries[0].contentRect;\n if (rect.width && rect.height) {\n this.setDimensions(rect.width, rect.height);\n }\n });\n this.#observer.observe(this.div);\n }\n\n /** @inheritdoc */\n get isResizable() {\n return !this.isEmpty() && this.#disableEditing;\n }\n\n /** @inheritdoc */\n render() {\n if (this.div) {\n return this.div;\n }\n\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n\n super.render();\n\n this.div.setAttribute(\"data-l10n-id\", \"pdfjs-ink\");\n\n const [x, y, w, h] = this.#getInitialBBox();\n this.setAt(x, y, 0, 0);\n this.setDims(w, h);\n\n this.#createCanvas();\n\n if (this.width) {\n // This editor was created in using copy (ctrl+c).\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAspectRatio(this.width * parentWidth, this.height * parentHeight);\n this.setAt(\n baseX * parentWidth,\n baseY * parentHeight,\n this.width * parentWidth,\n this.height * parentHeight\n );\n this.#isCanvasInitialized = true;\n this.#setCanvasDims();\n this.setDims(this.width * parentWidth, this.height * parentHeight);\n this.#redraw();\n this.div.classList.add(\"disabled\");\n } else {\n this.div.classList.add(\"editing\");\n this.enableEditMode();\n }\n\n this.#createObserver();\n\n return this.div;\n }\n\n #setCanvasDims() {\n if (!this.#isCanvasInitialized) {\n return;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.canvas.width = Math.ceil(this.width * parentWidth);\n this.canvas.height = Math.ceil(this.height * parentHeight);\n this.#updateTransform();\n }\n\n /**\n * When the dimensions of the div change the inner canvas must\n * renew its dimensions, hence it must redraw its own contents.\n * @param {number} width - the new width of the div\n * @param {number} height - the new height of the div\n * @returns\n */\n setDimensions(width, height) {\n const roundedWidth = Math.round(width);\n const roundedHeight = Math.round(height);\n if (\n this.#realWidth === roundedWidth &&\n this.#realHeight === roundedHeight\n ) {\n return;\n }\n\n this.#realWidth = roundedWidth;\n this.#realHeight = roundedHeight;\n\n this.canvas.style.visibility = \"hidden\";\n\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n this.fixAndSetPosition();\n\n if (this.#disableEditing) {\n this.#setScaleFactor(width, height);\n }\n\n this.#setCanvasDims();\n this.#redraw();\n\n this.canvas.style.visibility = \"visible\";\n\n // For any reason the dimensions couldn't be in percent but in pixels, hence\n // we must fix them.\n this.fixDims();\n }\n\n #setScaleFactor(width, height) {\n const padding = this.#getPadding();\n const scaleFactorW = (width - padding) / this.#baseWidth;\n const scaleFactorH = (height - padding) / this.#baseHeight;\n this.scaleFactor = Math.min(scaleFactorW, scaleFactorH);\n }\n\n /**\n * Update the canvas transform.\n */\n #updateTransform() {\n const padding = this.#getPadding() / 2;\n this.ctx.setTransform(\n this.scaleFactor,\n 0,\n 0,\n this.scaleFactor,\n this.translationX * this.scaleFactor + padding,\n this.translationY * this.scaleFactor + padding\n );\n }\n\n /**\n * Convert into a Path2D.\n * @param {Array<Array<number>>} bezier\n * @returns {Path2D}\n */\n static #buildPath2D(bezier) {\n const path2D = new Path2D();\n for (let i = 0, ii = bezier.length; i < ii; i++) {\n const [first, control1, control2, second] = bezier[i];\n if (i === 0) {\n path2D.moveTo(...first);\n }\n path2D.bezierCurveTo(\n control1[0],\n control1[1],\n control2[0],\n control2[1],\n second[0],\n second[1]\n );\n }\n return path2D;\n }\n\n static #toPDFCoordinates(points, rect, rotation) {\n const [blX, blY, trX, trY] = rect;\n\n switch (rotation) {\n case 0:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] += blX;\n points[i + 1] = trY - points[i + 1];\n }\n break;\n case 90:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = points[i + 1] + blX;\n points[i + 1] = x + blY;\n }\n break;\n case 180:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = trX - points[i];\n points[i + 1] += blY;\n }\n break;\n case 270:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = trX - points[i + 1];\n points[i + 1] = trY - x;\n }\n break;\n default:\n throw new Error(\"Invalid rotation\");\n }\n return points;\n }\n\n static #fromPDFCoordinates(points, rect, rotation) {\n const [blX, blY, trX, trY] = rect;\n\n switch (rotation) {\n case 0:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] -= blX;\n points[i + 1] = trY - points[i + 1];\n }\n break;\n case 90:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = points[i + 1] - blY;\n points[i + 1] = x - blX;\n }\n break;\n case 180:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n points[i] = trX - points[i];\n points[i + 1] -= blY;\n }\n break;\n case 270:\n for (let i = 0, ii = points.length; i < ii; i += 2) {\n const x = points[i];\n points[i] = trY - points[i + 1];\n points[i + 1] = trX - x;\n }\n break;\n default:\n throw new Error(\"Invalid rotation\");\n }\n return points;\n }\n\n /**\n * Transform and serialize the paths.\n * @param {number} s - scale factor\n * @param {number} tx - abscissa of the translation\n * @param {number} ty - ordinate of the translation\n * @param {Array<number>} rect - the bounding box of the annotation\n */\n #serializePaths(s, tx, ty, rect) {\n const paths = [];\n const padding = this.thickness / 2;\n const shiftX = s * tx + padding;\n const shiftY = s * ty + padding;\n for (const bezier of this.paths) {\n const buffer = [];\n const points = [];\n for (let j = 0, jj = bezier.length; j < jj; j++) {\n const [first, control1, control2, second] = bezier[j];\n const p10 = s * first[0] + shiftX;\n const p11 = s * first[1] + shiftY;\n const p20 = s * control1[0] + shiftX;\n const p21 = s * control1[1] + shiftY;\n const p30 = s * control2[0] + shiftX;\n const p31 = s * control2[1] + shiftY;\n const p40 = s * second[0] + shiftX;\n const p41 = s * second[1] + shiftY;\n\n if (j === 0) {\n buffer.push(p10, p11);\n points.push(p10, p11);\n }\n buffer.push(p20, p21, p30, p31, p40, p41);\n points.push(p20, p21);\n if (j === jj - 1) {\n points.push(p40, p41);\n }\n }\n paths.push({\n bezier: InkEditor.#toPDFCoordinates(buffer, rect, this.rotation),\n points: InkEditor.#toPDFCoordinates(points, rect, this.rotation),\n });\n }\n\n return paths;\n }\n\n /**\n * Get the bounding box containing all the paths.\n * @returns {Array<number>}\n */\n #getBbox() {\n let xMin = Infinity;\n let xMax = -Infinity;\n let yMin = Infinity;\n let yMax = -Infinity;\n\n for (const path of this.paths) {\n for (const [first, control1, control2, second] of path) {\n const bbox = Util.bezierBoundingBox(\n ...first,\n ...control1,\n ...control2,\n ...second\n );\n xMin = Math.min(xMin, bbox[0]);\n yMin = Math.min(yMin, bbox[1]);\n xMax = Math.max(xMax, bbox[2]);\n yMax = Math.max(yMax, bbox[3]);\n }\n }\n\n return [xMin, yMin, xMax, yMax];\n }\n\n /**\n * The bounding box is computed with null thickness, so we must take\n * it into account for the display.\n * It corresponds to the total padding, hence it should be divided by 2\n * in order to have left/right paddings.\n * @returns {number}\n */\n #getPadding() {\n return this.#disableEditing\n ? Math.ceil(this.thickness * this.parentScale)\n : 0;\n }\n\n /**\n * Set the div position and dimensions in order to fit to\n * the bounding box of the contents.\n * @returns {undefined}\n */\n #fitToContent(firstTime = false) {\n if (this.isEmpty()) {\n return;\n }\n\n if (!this.#disableEditing) {\n this.#redraw();\n return;\n }\n\n const bbox = this.#getBbox();\n const padding = this.#getPadding();\n this.#baseWidth = Math.max(AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);\n this.#baseHeight = Math.max(AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);\n\n const width = Math.ceil(padding + this.#baseWidth * this.scaleFactor);\n const height = Math.ceil(padding + this.#baseHeight * this.scaleFactor);\n\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n\n this.setAspectRatio(width, height);\n\n const prevTranslationX = this.translationX;\n const prevTranslationY = this.translationY;\n\n this.translationX = -bbox[0];\n this.translationY = -bbox[1];\n this.#setCanvasDims();\n this.#redraw();\n\n this.#realWidth = width;\n this.#realHeight = height;\n\n this.setDims(width, height);\n const unscaledPadding = firstTime ? padding / this.scaleFactor / 2 : 0;\n this.translate(\n prevTranslationX - this.translationX - unscaledPadding,\n prevTranslationY - this.translationY - unscaledPadding\n );\n }\n\n /** @inheritdoc */\n static deserialize(data, parent, uiManager) {\n if (data instanceof InkAnnotationElement) {\n return null;\n }\n const editor = super.deserialize(data, parent, uiManager);\n\n editor.thickness = data.thickness;\n editor.color = Util.makeHexColor(...data.color);\n editor.opacity = data.opacity;\n\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const width = editor.width * pageWidth;\n const height = editor.height * pageHeight;\n const scaleFactor = editor.parentScale;\n const padding = data.thickness / 2;\n\n editor.#disableEditing = true;\n editor.#realWidth = Math.round(width);\n editor.#realHeight = Math.round(height);\n\n const { paths, rect, rotation } = data;\n\n for (let { bezier } of paths) {\n bezier = InkEditor.#fromPDFCoordinates(bezier, rect, rotation);\n const path = [];\n editor.paths.push(path);\n let p0 = scaleFactor * (bezier[0] - padding);\n let p1 = scaleFactor * (bezier[1] - padding);\n for (let i = 2, ii = bezier.length; i < ii; i += 6) {\n const p10 = scaleFactor * (bezier[i] - padding);\n const p11 = scaleFactor * (bezier[i + 1] - padding);\n const p20 = scaleFactor * (bezier[i + 2] - padding);\n const p21 = scaleFactor * (bezier[i + 3] - padding);\n const p30 = scaleFactor * (bezier[i + 4] - padding);\n const p31 = scaleFactor * (bezier[i + 5] - padding);\n path.push([\n [p0, p1],\n [p10, p11],\n [p20, p21],\n [p30, p31],\n ]);\n p0 = p30;\n p1 = p31;\n }\n const path2D = this.#buildPath2D(path);\n editor.bezierPath2D.push(path2D);\n }\n\n const bbox = editor.#getBbox();\n editor.#baseWidth = Math.max(AnnotationEditor.MIN_SIZE, bbox[2] - bbox[0]);\n editor.#baseHeight = Math.max(AnnotationEditor.MIN_SIZE, bbox[3] - bbox[1]);\n editor.#setScaleFactor(width, height);\n\n return editor;\n }\n\n /** @inheritdoc */\n serialize() {\n if (this.isEmpty()) {\n return null;\n }\n\n const rect = this.getRect(0, 0);\n const color = AnnotationEditor._colorManager.convert(this.ctx.strokeStyle);\n\n return {\n annotationType: AnnotationEditorType.INK,\n color,\n thickness: this.thickness,\n opacity: this.opacity,\n paths: this.#serializePaths(\n this.scaleFactor / this.parentScale,\n this.translationX,\n this.translationY,\n rect\n ),\n pageIndex: this.pageIndex,\n rect,\n rotation: this.rotation,\n structTreeParentId: this._structTreeParentId,\n };\n }\n}\n\nexport { InkEditor };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { AnnotationEditorType, shadow } from \"../../shared/util.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { PixelsPerInch } from \"../display_utils.js\";\nimport { StampAnnotationElement } from \"../annotation_layer.js\";\n\n/**\n * Basic text editor in order to create a FreeTex annotation.\n */\nclass StampEditor extends AnnotationEditor {\n #bitmap = null;\n\n #bitmapId = null;\n\n #bitmapPromise = null;\n\n #bitmapUrl = null;\n\n #bitmapFile = null;\n\n #bitmapFileName = \"\";\n\n #canvas = null;\n\n #observer = null;\n\n #resizeTimeoutId = null;\n\n #isSvg = false;\n\n #hasBeenAddedInUndoStack = false;\n\n static _type = \"stamp\";\n\n static _editorType = AnnotationEditorType.STAMP;\n\n constructor(params) {\n super({ ...params, name: \"stampEditor\" });\n this.#bitmapUrl = params.bitmapUrl;\n this.#bitmapFile = params.bitmapFile;\n }\n\n /** @inheritdoc */\n static initialize(l10n) {\n AnnotationEditor.initialize(l10n);\n }\n\n static get supportedTypes() {\n // See https://developer.mozilla.org/en-US/docs/Web/Media/Formats/Image_types\n // to know which types are supported by the browser.\n const types = [\n \"apng\",\n \"avif\",\n \"bmp\",\n \"gif\",\n \"jpeg\",\n \"png\",\n \"svg+xml\",\n \"webp\",\n \"x-icon\",\n ];\n return shadow(\n this,\n \"supportedTypes\",\n types.map(type => `image/${type}`)\n );\n }\n\n static get supportedTypesStr() {\n return shadow(this, \"supportedTypesStr\", this.supportedTypes.join(\",\"));\n }\n\n /** @inheritdoc */\n static isHandlingMimeForPasting(mime) {\n return this.supportedTypes.includes(mime);\n }\n\n /** @inheritdoc */\n static paste(item, parent) {\n parent.pasteEditor(AnnotationEditorType.STAMP, {\n bitmapFile: item.getAsFile(),\n });\n }\n\n #getBitmapFetched(data, fromId = false) {\n if (!data) {\n this.remove();\n return;\n }\n this.#bitmap = data.bitmap;\n if (!fromId) {\n this.#bitmapId = data.id;\n this.#isSvg = data.isSvg;\n }\n if (data.file) {\n this.#bitmapFileName = data.file.name;\n }\n this.#createCanvas();\n }\n\n #getBitmapDone() {\n this.#bitmapPromise = null;\n this._uiManager.enableWaiting(false);\n if (this.#canvas) {\n this.div.focus();\n }\n }\n\n #getBitmap() {\n if (this.#bitmapId) {\n this._uiManager.enableWaiting(true);\n this._uiManager.imageManager\n .getFromId(this.#bitmapId)\n .then(data => this.#getBitmapFetched(data, /* fromId = */ true))\n .finally(() => this.#getBitmapDone());\n return;\n }\n\n if (this.#bitmapUrl) {\n const url = this.#bitmapUrl;\n this.#bitmapUrl = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager\n .getFromUrl(url)\n .then(data => this.#getBitmapFetched(data))\n .finally(() => this.#getBitmapDone());\n return;\n }\n\n if (this.#bitmapFile) {\n const file = this.#bitmapFile;\n this.#bitmapFile = null;\n this._uiManager.enableWaiting(true);\n this.#bitmapPromise = this._uiManager.imageManager\n .getFromFile(file)\n .then(data => this.#getBitmapFetched(data))\n .finally(() => this.#getBitmapDone());\n return;\n }\n\n const input = document.createElement(\"input\");\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n input.hidden = true;\n input.id = \"stampEditorFileInput\";\n document.body.append(input);\n }\n input.type = \"file\";\n input.accept = StampEditor.supportedTypesStr;\n this.#bitmapPromise = new Promise(resolve => {\n input.addEventListener(\"change\", async () => {\n if (!input.files || input.files.length === 0) {\n this.remove();\n } else {\n this._uiManager.enableWaiting(true);\n const data = await this._uiManager.imageManager.getFromFile(\n input.files[0]\n );\n this.#getBitmapFetched(data);\n }\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"TESTING\")) {\n input.remove();\n }\n resolve();\n });\n input.addEventListener(\"cancel\", () => {\n this.remove();\n resolve();\n });\n }).finally(() => this.#getBitmapDone());\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"TESTING\")) {\n input.click();\n }\n }\n\n /** @inheritdoc */\n remove() {\n if (this.#bitmapId) {\n this.#bitmap = null;\n this._uiManager.imageManager.deleteId(this.#bitmapId);\n this.#canvas?.remove();\n this.#canvas = null;\n this.#observer?.disconnect();\n this.#observer = null;\n if (this.#resizeTimeoutId) {\n clearTimeout(this.#resizeTimeoutId);\n this.#resizeTimeoutId = null;\n }\n }\n super.remove();\n }\n\n /** @inheritdoc */\n rebuild() {\n if (!this.parent) {\n // It's possible to have to rebuild an editor which is not on a visible\n // page.\n if (this.#bitmapId) {\n this.#getBitmap();\n }\n return;\n }\n super.rebuild();\n if (this.div === null) {\n return;\n }\n\n if (this.#bitmapId) {\n this.#getBitmap();\n }\n\n if (!this.isAttachedToDOM) {\n // At some point this editor was removed and we're rebuilting it,\n // hence we must add it to its parent.\n this.parent.add(this);\n }\n }\n\n /** @inheritdoc */\n onceAdded() {\n this._isDraggable = true;\n this.div.focus();\n }\n\n /** @inheritdoc */\n isEmpty() {\n return !(\n this.#bitmapPromise ||\n this.#bitmap ||\n this.#bitmapUrl ||\n this.#bitmapFile\n );\n }\n\n /** @inheritdoc */\n get isResizable() {\n return true;\n }\n\n /** @inheritdoc */\n render() {\n if (this.div) {\n return this.div;\n }\n\n let baseX, baseY;\n if (this.width) {\n baseX = this.x;\n baseY = this.y;\n }\n\n super.render();\n this.div.hidden = true;\n\n if (this.#bitmap) {\n this.#createCanvas();\n } else {\n this.#getBitmap();\n }\n\n if (this.width) {\n // This editor was created in using copy (ctrl+c).\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setAt(\n baseX * parentWidth,\n baseY * parentHeight,\n this.width * parentWidth,\n this.height * parentHeight\n );\n }\n\n return this.div;\n }\n\n #createCanvas() {\n const { div } = this;\n let { width, height } = this.#bitmap;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const MAX_RATIO = 0.75;\n if (this.width) {\n width = this.width * pageWidth;\n height = this.height * pageHeight;\n } else if (\n width > MAX_RATIO * pageWidth ||\n height > MAX_RATIO * pageHeight\n ) {\n // If the the image is too big compared to the page dimensions\n // (more than MAX_RATIO) then we scale it down.\n const factor = Math.min(\n (MAX_RATIO * pageWidth) / width,\n (MAX_RATIO * pageHeight) / height\n );\n width *= factor;\n height *= factor;\n }\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(\n (width * parentWidth) / pageWidth,\n (height * parentHeight) / pageHeight\n );\n\n this._uiManager.enableWaiting(false);\n const canvas = (this.#canvas = document.createElement(\"canvas\"));\n div.append(canvas);\n div.hidden = false;\n this.#drawBitmap(width, height);\n this.#createObserver();\n if (!this.#hasBeenAddedInUndoStack) {\n this.parent.addUndoableEditor(this);\n this.#hasBeenAddedInUndoStack = true;\n }\n\n // There are multiple ways to add an image to the page, so here we just\n // count the number of times an image is added to the page whatever the way\n // is.\n this._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n subtype: this.editorType,\n data: {\n action: \"inserted_image\",\n },\n },\n });\n this.addAltTextButton();\n if (this.#bitmapFileName) {\n canvas.setAttribute(\"aria-label\", this.#bitmapFileName);\n }\n }\n\n /**\n * When the dimensions of the div change the inner canvas must\n * renew its dimensions, hence it must redraw its own contents.\n * @param {number} width - the new width of the div\n * @param {number} height - the new height of the div\n * @returns\n */\n #setDimensions(width, height) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.width = width / parentWidth;\n this.height = height / parentHeight;\n this.setDims(width, height);\n if (this._initialOptions?.isCentered) {\n this.center();\n } else {\n this.fixAndSetPosition();\n }\n this._initialOptions = null;\n if (this.#resizeTimeoutId !== null) {\n clearTimeout(this.#resizeTimeoutId);\n }\n // When the user is resizing the editor we just use CSS to scale the image\n // to avoid redrawing it too often.\n // And once the user stops resizing the editor we redraw the image in\n // rescaling it correctly (see this.#scaleBitmap).\n const TIME_TO_WAIT = 200;\n this.#resizeTimeoutId = setTimeout(() => {\n this.#resizeTimeoutId = null;\n this.#drawBitmap(width, height);\n }, TIME_TO_WAIT);\n }\n\n #scaleBitmap(width, height) {\n const { width: bitmapWidth, height: bitmapHeight } = this.#bitmap;\n\n let newWidth = bitmapWidth;\n let newHeight = bitmapHeight;\n let bitmap = this.#bitmap;\n while (newWidth > 2 * width || newHeight > 2 * height) {\n const prevWidth = newWidth;\n const prevHeight = newHeight;\n\n if (newWidth > 2 * width) {\n // See bug 1820511 (Windows specific bug).\n // TODO: once the above bug is fixed we could revert to:\n // newWidth = Math.ceil(newWidth / 2);\n newWidth =\n newWidth >= 16384\n ? Math.floor(newWidth / 2) - 1\n : Math.ceil(newWidth / 2);\n }\n if (newHeight > 2 * height) {\n newHeight =\n newHeight >= 16384\n ? Math.floor(newHeight / 2) - 1\n : Math.ceil(newHeight / 2);\n }\n\n const offscreen = new OffscreenCanvas(newWidth, newHeight);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(\n bitmap,\n 0,\n 0,\n prevWidth,\n prevHeight,\n 0,\n 0,\n newWidth,\n newHeight\n );\n bitmap = offscreen.transferToImageBitmap();\n }\n\n return bitmap;\n }\n\n #drawBitmap(width, height) {\n width = Math.ceil(width);\n height = Math.ceil(height);\n const canvas = this.#canvas;\n if (!canvas || (canvas.width === width && canvas.height === height)) {\n return;\n }\n canvas.width = width;\n canvas.height = height;\n const bitmap = this.#isSvg\n ? this.#bitmap\n : this.#scaleBitmap(width, height);\n const ctx = canvas.getContext(\"2d\");\n ctx.filter = this._uiManager.hcmFilter;\n ctx.drawImage(\n bitmap,\n 0,\n 0,\n bitmap.width,\n bitmap.height,\n 0,\n 0,\n width,\n height\n );\n }\n\n /** @inheritdoc */\n getImageForAltText() {\n return this.#canvas;\n }\n\n #serializeBitmap(toUrl) {\n if (toUrl) {\n if (this.#isSvg) {\n const url = this._uiManager.imageManager.getSvgUrl(this.#bitmapId);\n if (url) {\n return url;\n }\n }\n // We convert to a data url because it's sync and the url can live in the\n // clipboard.\n const canvas = document.createElement(\"canvas\");\n ({ width: canvas.width, height: canvas.height } = this.#bitmap);\n const ctx = canvas.getContext(\"2d\");\n ctx.drawImage(this.#bitmap, 0, 0);\n\n return canvas.toDataURL();\n }\n\n if (this.#isSvg) {\n const [pageWidth, pageHeight] = this.pageDimensions;\n // Multiply by PixelsPerInch.PDF_TO_CSS_UNITS in order to increase the\n // image resolution when rasterizing it.\n const width = Math.round(\n this.width * pageWidth * PixelsPerInch.PDF_TO_CSS_UNITS\n );\n const height = Math.round(\n this.height * pageHeight * PixelsPerInch.PDF_TO_CSS_UNITS\n );\n const offscreen = new OffscreenCanvas(width, height);\n const ctx = offscreen.getContext(\"2d\");\n ctx.drawImage(\n this.#bitmap,\n 0,\n 0,\n this.#bitmap.width,\n this.#bitmap.height,\n 0,\n 0,\n width,\n height\n );\n return offscreen.transferToImageBitmap();\n }\n\n return structuredClone(this.#bitmap);\n }\n\n /**\n * Create the resize observer.\n */\n #createObserver() {\n this.#observer = new ResizeObserver(entries => {\n const rect = entries[0].contentRect;\n if (rect.width && rect.height) {\n this.#setDimensions(rect.width, rect.height);\n }\n });\n this.#observer.observe(this.div);\n }\n\n /** @inheritdoc */\n static deserialize(data, parent, uiManager) {\n if (data instanceof StampAnnotationElement) {\n return null;\n }\n const editor = super.deserialize(data, parent, uiManager);\n const { rect, bitmapUrl, bitmapId, isSvg, accessibilityData } = data;\n if (bitmapId && uiManager.imageManager.isValidId(bitmapId)) {\n editor.#bitmapId = bitmapId;\n } else {\n editor.#bitmapUrl = bitmapUrl;\n }\n editor.#isSvg = isSvg;\n\n const [parentWidth, parentHeight] = editor.pageDimensions;\n editor.width = (rect[2] - rect[0]) / parentWidth;\n editor.height = (rect[3] - rect[1]) / parentHeight;\n\n if (accessibilityData) {\n editor.altTextData = accessibilityData;\n }\n\n return editor;\n }\n\n /** @inheritdoc */\n serialize(isForCopying = false, context = null) {\n if (this.isEmpty()) {\n return null;\n }\n\n const serialized = {\n annotationType: AnnotationEditorType.STAMP,\n bitmapId: this.#bitmapId,\n pageIndex: this.pageIndex,\n rect: this.getRect(0, 0),\n rotation: this.rotation,\n isSvg: this.#isSvg,\n structTreeParentId: this._structTreeParentId,\n };\n\n if (isForCopying) {\n // We don't know what's the final destination (this pdf or another one)\n // of this annotation and the clipboard doesn't support ImageBitmaps,\n // hence we serialize the bitmap to a data url.\n serialized.bitmapUrl = this.#serializeBitmap(/* toUrl = */ true);\n serialized.accessibilityData = this.altTextData;\n return serialized;\n }\n\n const { decorative, altText } = this.altTextData;\n if (!decorative && altText) {\n serialized.accessibilityData = { type: \"Figure\", alt: altText };\n }\n\n if (context === null) {\n return serialized;\n }\n\n context.stamps ||= new Map();\n const area = this.#isSvg\n ? (serialized.rect[2] - serialized.rect[0]) *\n (serialized.rect[3] - serialized.rect[1])\n : null;\n if (!context.stamps.has(this.#bitmapId)) {\n // We don't want to have multiple copies of the same bitmap in the\n // annotationMap, hence we only add the bitmap the first time we meet it.\n context.stamps.set(this.#bitmapId, { area, serialized });\n serialized.bitmap = this.#serializeBitmap(/* toUrl = */ false);\n } else if (this.#isSvg) {\n // If we have multiple copies of the same svg but with different sizes,\n // then we want to keep the biggest one.\n const prevData = context.stamps.get(this.#bitmapId);\n if (area > prevData.area) {\n prevData.area = area;\n prevData.serialized.bitmap.close();\n prevData.serialized.bitmap = this.#serializeBitmap(/* toUrl = */ false);\n }\n }\n return serialized;\n }\n}\n\nexport { StampEditor };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./tools.js\").AnnotationEditorUIManager} AnnotationEditorUIManager */\n/** @typedef {import(\"../display_utils.js\").PageViewport} PageViewport */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../../../web/text_accessibility.js\").TextAccessibilityManager} TextAccessibilityManager */\n/** @typedef {import(\"../../../web/interfaces\").IL10n} IL10n */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../annotation_layer.js\").AnnotationLayer} AnnotationLayer */\n\nimport { AnnotationEditorType, FeatureTest } from \"../../shared/util.js\";\nimport { AnnotationEditor } from \"./editor.js\";\nimport { FreeTextEditor } from \"./freetext.js\";\nimport { InkEditor } from \"./ink.js\";\nimport { setLayerDimensions } from \"../display_utils.js\";\nimport { StampEditor } from \"./stamp.js\";\n\n/**\n * @typedef {Object} AnnotationEditorLayerOptions\n * @property {Object} mode\n * @property {HTMLDivElement} div\n * @property {AnnotationEditorUIManager} uiManager\n * @property {boolean} enabled\n * @property {TextAccessibilityManager} [accessibilityManager]\n * @property {number} pageIndex\n * @property {IL10n} l10n\n * @property {AnnotationLayer} [annotationLayer]\n * @property {PageViewport} viewport\n */\n\n/**\n * @typedef {Object} RenderEditorLayerOptions\n * @property {PageViewport} viewport\n */\n\n/**\n * Manage all the different editors on a page.\n */\nclass AnnotationEditorLayer {\n #accessibilityManager;\n\n #allowClick = false;\n\n #annotationLayer = null;\n\n #boundPointerup = this.pointerup.bind(this);\n\n #boundPointerdown = this.pointerdown.bind(this);\n\n #editorFocusTimeoutId = null;\n\n #editors = new Map();\n\n #hadPointerDown = false;\n\n #isCleaningUp = false;\n\n #isDisabling = false;\n\n #uiManager;\n\n static _initialized = false;\n\n static #editorTypes = new Map(\n [FreeTextEditor, InkEditor, StampEditor].map(type => [\n type._editorType,\n type,\n ])\n );\n\n /**\n * @param {AnnotationEditorLayerOptions} options\n */\n constructor({\n uiManager,\n pageIndex,\n div,\n accessibilityManager,\n annotationLayer,\n viewport,\n l10n,\n }) {\n const editorTypes = [...AnnotationEditorLayer.#editorTypes.values()];\n if (!AnnotationEditorLayer._initialized) {\n AnnotationEditorLayer._initialized = true;\n for (const editorType of editorTypes) {\n editorType.initialize(l10n);\n }\n }\n uiManager.registerEditorTypes(editorTypes);\n\n this.#uiManager = uiManager;\n this.pageIndex = pageIndex;\n this.div = div;\n this.#accessibilityManager = accessibilityManager;\n this.#annotationLayer = annotationLayer;\n this.viewport = viewport;\n\n this.#uiManager.addLayer(this);\n }\n\n get isEmpty() {\n return this.#editors.size === 0;\n }\n\n /**\n * Update the toolbar if it's required to reflect the tool currently used.\n * @param {number} mode\n */\n updateToolbar(mode) {\n this.#uiManager.updateToolbar(mode);\n }\n\n /**\n * The mode has changed: it must be updated.\n * @param {number} mode\n */\n updateMode(mode = this.#uiManager.getMode()) {\n this.#cleanup();\n if (mode === AnnotationEditorType.INK) {\n // We always want to an ink editor ready to draw in.\n this.addInkEditorIfNeeded(false);\n this.disableClick();\n } else {\n this.enableClick();\n }\n\n if (mode !== AnnotationEditorType.NONE) {\n const { classList } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.toggle(\n `${editorType._type}Editing`,\n mode === editorType._editorType\n );\n }\n this.div.hidden = false;\n }\n }\n\n addInkEditorIfNeeded(isCommitting) {\n if (\n !isCommitting &&\n this.#uiManager.getMode() !== AnnotationEditorType.INK\n ) {\n return;\n }\n\n if (!isCommitting) {\n // We're removing an editor but an empty one can already exist so in this\n // case we don't need to create a new one.\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.setInBackground();\n return;\n }\n }\n }\n\n const editor = this.#createAndAddNewEditor(\n { offsetX: 0, offsetY: 0 },\n /* isCentered = */ false\n );\n editor.setInBackground();\n }\n\n /**\n * Set the editing state.\n * @param {boolean} isEditing\n */\n setEditingState(isEditing) {\n this.#uiManager.setEditingState(isEditing);\n }\n\n /**\n * Add some commands into the CommandManager (undo/redo stuff).\n * @param {Object} params\n */\n addCommands(params) {\n this.#uiManager.addCommands(params);\n }\n\n togglePointerEvents(enabled = false) {\n this.div.classList.toggle(\"disabled\", !enabled);\n }\n\n /**\n * Enable pointer events on the main div in order to enable\n * editor creation.\n */\n enable() {\n this.togglePointerEvents(true);\n const annotationElementIds = new Set();\n for (const editor of this.#editors.values()) {\n editor.enableEditing();\n if (editor.annotationElementId) {\n annotationElementIds.add(editor.annotationElementId);\n }\n }\n\n if (!this.#annotationLayer) {\n return;\n }\n\n const editables = this.#annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n // The element must be hidden whatever its state is.\n editable.hide();\n if (this.#uiManager.isDeletedAnnotationElement(editable.data.id)) {\n continue;\n }\n if (annotationElementIds.has(editable.data.id)) {\n continue;\n }\n const editor = this.deserialize(editable);\n if (!editor) {\n continue;\n }\n this.addOrRebuild(editor);\n editor.enableEditing();\n }\n }\n\n /**\n * Disable editor creation.\n */\n disable() {\n this.#isDisabling = true;\n this.togglePointerEvents(false);\n const hiddenAnnotationIds = new Set();\n for (const editor of this.#editors.values()) {\n editor.disableEditing();\n if (!editor.annotationElementId || editor.serialize() !== null) {\n hiddenAnnotationIds.add(editor.annotationElementId);\n continue;\n }\n this.getEditableAnnotation(editor.annotationElementId)?.show();\n editor.remove();\n }\n\n if (this.#annotationLayer) {\n // Show the annotations that were hidden in enable().\n const editables = this.#annotationLayer.getEditableAnnotations();\n for (const editable of editables) {\n const { id } = editable.data;\n if (\n hiddenAnnotationIds.has(id) ||\n this.#uiManager.isDeletedAnnotationElement(id)\n ) {\n continue;\n }\n editable.show();\n }\n }\n\n this.#cleanup();\n if (this.isEmpty) {\n this.div.hidden = true;\n }\n const { classList } = this.div;\n for (const editorType of AnnotationEditorLayer.#editorTypes.values()) {\n classList.remove(`${editorType._type}Editing`);\n }\n\n this.#isDisabling = false;\n }\n\n getEditableAnnotation(id) {\n return this.#annotationLayer?.getEditableAnnotation(id) || null;\n }\n\n /**\n * Set the current editor.\n * @param {AnnotationEditor} editor\n */\n setActiveEditor(editor) {\n const currentActive = this.#uiManager.getActive();\n if (currentActive === editor) {\n return;\n }\n\n this.#uiManager.setActiveEditor(editor);\n }\n\n enableClick() {\n this.div.addEventListener(\"pointerdown\", this.#boundPointerdown);\n this.div.addEventListener(\"pointerup\", this.#boundPointerup);\n }\n\n disableClick() {\n this.div.removeEventListener(\"pointerdown\", this.#boundPointerdown);\n this.div.removeEventListener(\"pointerup\", this.#boundPointerup);\n }\n\n attach(editor) {\n this.#editors.set(editor.id, editor);\n const { annotationElementId } = editor;\n if (\n annotationElementId &&\n this.#uiManager.isDeletedAnnotationElement(annotationElementId)\n ) {\n this.#uiManager.removeDeletedAnnotationElement(editor);\n }\n }\n\n detach(editor) {\n this.#editors.delete(editor.id);\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n\n if (!this.#isDisabling && editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor);\n }\n }\n\n /**\n * Remove an editor.\n * @param {AnnotationEditor} editor\n */\n remove(editor) {\n // Since we can undo a removal we need to keep the\n // parent property as it is, so don't null it!\n\n this.detach(editor);\n this.#uiManager.removeEditor(editor);\n editor.div.remove();\n editor.isAttachedToDOM = false;\n\n if (!this.#isCleaningUp) {\n this.addInkEditorIfNeeded(/* isCommitting = */ false);\n }\n }\n\n /**\n * An editor can have a different parent, for example after having\n * being dragged and droped from a page to another.\n * @param {AnnotationEditor} editor\n */\n changeParent(editor) {\n if (editor.parent === this) {\n return;\n }\n\n if (editor.annotationElementId) {\n this.#uiManager.addDeletedAnnotationElement(editor.annotationElementId);\n AnnotationEditor.deleteAnnotationElement(editor);\n editor.annotationElementId = null;\n }\n\n this.attach(editor);\n editor.parent?.detach(editor);\n editor.setParent(this);\n if (editor.div && editor.isAttachedToDOM) {\n editor.div.remove();\n this.div.append(editor.div);\n }\n }\n\n /**\n * Add a new editor in the current view.\n * @param {AnnotationEditor} editor\n */\n add(editor) {\n this.changeParent(editor);\n this.#uiManager.addEditor(editor);\n this.attach(editor);\n\n if (!editor.isAttachedToDOM) {\n const div = editor.render();\n this.div.append(div);\n editor.isAttachedToDOM = true;\n }\n\n // The editor will be correctly moved into the DOM (see fixAndSetPosition).\n editor.fixAndSetPosition();\n editor.onceAdded();\n this.#uiManager.addToAnnotationStorage(editor);\n }\n\n moveEditorInDOM(editor) {\n if (!editor.isAttachedToDOM) {\n return;\n }\n\n const { activeElement } = document;\n if (editor.div.contains(activeElement) && !this.#editorFocusTimeoutId) {\n // When the div is moved in the DOM the focus can move somewhere else,\n // so we want to be sure that the focus will stay on the editor but we\n // don't want to call any focus callbacks, hence we disable them and only\n // re-enable them when the editor has the focus.\n editor._focusEventsAllowed = false;\n this.#editorFocusTimeoutId = setTimeout(() => {\n this.#editorFocusTimeoutId = null;\n if (!editor.div.contains(document.activeElement)) {\n editor.div.addEventListener(\n \"focusin\",\n () => {\n editor._focusEventsAllowed = true;\n },\n { once: true }\n );\n activeElement.focus();\n } else {\n editor._focusEventsAllowed = true;\n }\n }, 0);\n }\n\n editor._structTreeParentId = this.#accessibilityManager?.moveElementInDOM(\n this.div,\n editor.div,\n editor.contentDiv,\n /* isRemovable = */ true\n );\n }\n\n /**\n * Add or rebuild depending if it has been removed or not.\n * @param {AnnotationEditor} editor\n */\n addOrRebuild(editor) {\n if (editor.needsToBeRebuilt()) {\n editor.parent ||= this;\n editor.rebuild();\n } else {\n this.add(editor);\n }\n }\n\n /**\n * Add a new editor and make this addition undoable.\n * @param {AnnotationEditor} editor\n */\n addUndoableEditor(editor) {\n const cmd = () => editor._uiManager.rebuild(editor);\n const undo = () => {\n editor.remove();\n };\n\n this.addCommands({ cmd, undo, mustExec: false });\n }\n\n /**\n * Get an id for an editor.\n * @returns {string}\n */\n getNextId() {\n return this.#uiManager.getId();\n }\n\n /**\n * Create a new editor\n * @param {Object} params\n * @returns {AnnotationEditor}\n */\n #createNewEditor(params) {\n const editorType = AnnotationEditorLayer.#editorTypes.get(\n this.#uiManager.getMode()\n );\n return editorType ? new editorType.prototype.constructor(params) : null;\n }\n\n /**\n * Paste some content into a new editor.\n * @param {number} mode\n * @param {Object} params\n */\n pasteEditor(mode, params) {\n this.#uiManager.updateToolbar(mode);\n this.#uiManager.updateMode(mode);\n\n const { offsetX, offsetY } = this.#getCenterPoint();\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: offsetX,\n y: offsetY,\n uiManager: this.#uiManager,\n isCentered: true,\n ...params,\n });\n if (editor) {\n this.add(editor);\n }\n }\n\n /**\n * Create a new editor\n * @param {Object} data\n * @returns {AnnotationEditor | null}\n */\n deserialize(data) {\n return (\n AnnotationEditorLayer.#editorTypes\n .get(data.annotationType ?? data.annotationEditorType)\n ?.deserialize(data, this, this.#uiManager) || null\n );\n }\n\n /**\n * Create and add a new editor.\n * @param {PointerEvent} event\n * @param {boolean} isCentered\n * @returns {AnnotationEditor}\n */\n #createAndAddNewEditor(event, isCentered) {\n const id = this.getNextId();\n const editor = this.#createNewEditor({\n parent: this,\n id,\n x: event.offsetX,\n y: event.offsetY,\n uiManager: this.#uiManager,\n isCentered,\n });\n if (editor) {\n this.add(editor);\n }\n\n return editor;\n }\n\n #getCenterPoint() {\n const { x, y, width, height } = this.div.getBoundingClientRect();\n const tlX = Math.max(0, x);\n const tlY = Math.max(0, y);\n const brX = Math.min(window.innerWidth, x + width);\n const brY = Math.min(window.innerHeight, y + height);\n const centerX = (tlX + brX) / 2 - x;\n const centerY = (tlY + brY) / 2 - y;\n const [offsetX, offsetY] =\n this.viewport.rotation % 180 === 0\n ? [centerX, centerY]\n : [centerY, centerX];\n\n return { offsetX, offsetY };\n }\n\n /**\n * Create and add a new editor.\n */\n addNewEditor() {\n this.#createAndAddNewEditor(\n this.#getCenterPoint(),\n /* isCentered = */ true\n );\n }\n\n /**\n * Set the last selected editor.\n * @param {AnnotationEditor} editor\n */\n setSelected(editor) {\n this.#uiManager.setSelected(editor);\n }\n\n /**\n * Add or remove an editor the current selection.\n * @param {AnnotationEditor} editor\n */\n toggleSelected(editor) {\n this.#uiManager.toggleSelected(editor);\n }\n\n /**\n * Check if the editor is selected.\n * @param {AnnotationEditor} editor\n */\n isSelected(editor) {\n return this.#uiManager.isSelected(editor);\n }\n\n /**\n * Unselect an editor.\n * @param {AnnotationEditor} editor\n */\n unselect(editor) {\n this.#uiManager.unselect(editor);\n }\n\n /**\n * Pointerup callback.\n * @param {PointerEvent} event\n */\n pointerup(event) {\n const { isMac } = FeatureTest.platform;\n if (event.button !== 0 || (event.ctrlKey && isMac)) {\n // Don't create an editor on right click.\n return;\n }\n\n if (event.target !== this.div) {\n return;\n }\n\n if (!this.#hadPointerDown) {\n // It can happen when the user starts a drag inside a text editor\n // and then releases the mouse button outside of it. In such a case\n // we don't want to create a new editor, hence we check that a pointerdown\n // occurred on this div previously.\n return;\n }\n this.#hadPointerDown = false;\n\n if (!this.#allowClick) {\n this.#allowClick = true;\n return;\n }\n\n if (this.#uiManager.getMode() === AnnotationEditorType.STAMP) {\n this.#uiManager.unselectAll();\n return;\n }\n\n this.#createAndAddNewEditor(event, /* isCentered = */ false);\n }\n\n /**\n * Pointerdown callback.\n * @param {PointerEvent} event\n */\n pointerdown(event) {\n if (this.#hadPointerDown) {\n // It's possible to have a second pointerdown event before a pointerup one\n // when the user puts a finger on a touchscreen and then add a second one\n // to start a pinch-to-zoom gesture.\n // That said, in case it's possible to have two pointerdown events with\n // a mouse, we don't want to create a new editor in such a case either.\n this.#hadPointerDown = false;\n return;\n }\n const { isMac } = FeatureTest.platform;\n if (event.button !== 0 || (event.ctrlKey && isMac)) {\n // Do nothing on right click.\n return;\n }\n\n if (event.target !== this.div) {\n return;\n }\n\n this.#hadPointerDown = true;\n\n const editor = this.#uiManager.getActive();\n this.#allowClick = !editor || editor.isEmpty();\n }\n\n /**\n *\n * @param {AnnotationEditor} editor\n * @param {number} x\n * @param {number} y\n * @returns\n */\n findNewParent(editor, x, y) {\n const layer = this.#uiManager.findParent(x, y);\n if (layer === null || layer === this) {\n return false;\n }\n layer.changeParent(editor);\n return true;\n }\n\n /**\n * Destroy the main editor.\n */\n destroy() {\n if (this.#uiManager.getActive()?.parent === this) {\n // We need to commit the current editor before destroying the layer.\n this.#uiManager.commitOrRemove();\n this.#uiManager.setActiveEditor(null);\n }\n\n if (this.#editorFocusTimeoutId) {\n clearTimeout(this.#editorFocusTimeoutId);\n this.#editorFocusTimeoutId = null;\n }\n\n for (const editor of this.#editors.values()) {\n this.#accessibilityManager?.removePointerInTextLayer(editor.contentDiv);\n editor.setParent(null);\n editor.isAttachedToDOM = false;\n editor.div.remove();\n }\n this.div = null;\n this.#editors.clear();\n this.#uiManager.removeLayer(this);\n }\n\n #cleanup() {\n // When we're cleaning up, some editors are removed but we don't want\n // to add a new one which will induce an addition in this.#editors, hence\n // an infinite loop.\n this.#isCleaningUp = true;\n for (const editor of this.#editors.values()) {\n if (editor.isEmpty()) {\n editor.remove();\n }\n }\n this.#isCleaningUp = false;\n }\n\n /**\n * Render the main editor.\n * @param {RenderEditorLayerOptions} parameters\n */\n render({ viewport }) {\n this.viewport = viewport;\n setLayerDimensions(this.div, viewport);\n for (const editor of this.#uiManager.getEditors(this.pageIndex)) {\n this.add(editor);\n }\n this.updateMode();\n }\n\n /**\n * Update the main editor.\n * @param {RenderEditorLayerOptions} parameters\n */\n update({ viewport }) {\n // Editors have their dimensions/positions in percent so to avoid any\n // issues (see #15582), we must commit the current one before changing\n // the viewport.\n this.#uiManager.commitOrRemove();\n\n this.viewport = viewport;\n setLayerDimensions(this.div, { rotation: viewport.rotation });\n this.updateMode();\n }\n\n /**\n * Get page dimensions.\n * @returns {Object} dimensions.\n */\n get pageDimensions() {\n const { pageWidth, pageHeight } = this.viewport.rawDims;\n return [pageWidth, pageHeight];\n }\n}\n\nexport { AnnotationEditorLayer };\n","/* Copyright 2023 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { noContextMenu } from \"../display_utils.js\";\n\nclass EditorToolbar {\n #toolbar = null;\n\n #editor;\n\n #buttons = null;\n\n constructor(editor) {\n this.#editor = editor;\n }\n\n render() {\n const editToolbar = (this.#toolbar = document.createElement(\"div\"));\n editToolbar.className = \"editToolbar\";\n editToolbar.addEventListener(\"contextmenu\", noContextMenu);\n editToolbar.addEventListener(\"pointerdown\", EditorToolbar.#pointerDown);\n\n const buttons = (this.#buttons = document.createElement(\"div\"));\n buttons.className = \"buttons\";\n editToolbar.append(buttons);\n\n this.#addDeleteButton();\n\n return editToolbar;\n }\n\n static #pointerDown(e) {\n e.stopPropagation();\n }\n\n #focusIn(e) {\n this.#editor._focusEventsAllowed = false;\n e.preventDefault();\n e.stopPropagation();\n }\n\n #focusOut(e) {\n this.#editor._focusEventsAllowed = true;\n e.preventDefault();\n e.stopPropagation();\n }\n\n #addListenersToElement(element) {\n // If we're clicking on a button with the keyboard or with\n // the mouse, we don't want to trigger any focus events on\n // the editor.\n element.addEventListener(\"focusin\", this.#focusIn.bind(this), {\n capture: true,\n });\n element.addEventListener(\"focusout\", this.#focusOut.bind(this), {\n capture: true,\n });\n element.addEventListener(\"contextmenu\", noContextMenu);\n }\n\n hide() {\n this.#toolbar.classList.add(\"hidden\");\n }\n\n show() {\n this.#toolbar.classList.remove(\"hidden\");\n }\n\n #addDeleteButton() {\n const button = document.createElement(\"button\");\n button.className = \"delete\";\n button.tabIndex = 0;\n button.setAttribute(\"data-l10n-id\", \"pdfjs-editor-remove-button\");\n this.#addListenersToElement(button);\n button.addEventListener(\"click\", e => {\n this.#editor._uiManager.delete();\n });\n this.#buttons.append(button);\n }\n\n remove() {\n this.#toolbar.remove();\n }\n}\n\nexport { EditorToolbar };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_editor_layer.js\").AnnotationEditorLayer} AnnotationEditorLayer */\n\nimport {\n AnnotationEditorUIManager,\n bindEvents,\n ColorManager,\n KeyboardManager,\n} from \"./tools.js\";\nimport { FeatureTest, shadow, unreachable } from \"../../shared/util.js\";\nimport { EditorToolbar } from \"./toolbar.js\";\nimport { noContextMenu } from \"../display_utils.js\";\n\n/**\n * @typedef {Object} AnnotationEditorParameters\n * @property {AnnotationEditorUIManager} uiManager - the global manager\n * @property {AnnotationEditorLayer} parent - the layer containing this editor\n * @property {string} id - editor id\n * @property {number} x - x-coordinate\n * @property {number} y - y-coordinate\n */\n\n/**\n * Base class for editors.\n */\nclass AnnotationEditor {\n #allResizerDivs = null;\n\n #altText = \"\";\n\n #altTextDecorative = false;\n\n #altTextButton = null;\n\n #altTextTooltip = null;\n\n #altTextTooltipTimeout = null;\n\n #altTextWasFromKeyBoard = false;\n\n #keepAspectRatio = false;\n\n #resizersDiv = null;\n\n #savedDimensions = null;\n\n #boundFocusin = this.focusin.bind(this);\n\n #boundFocusout = this.focusout.bind(this);\n\n #editToolbar = null;\n\n #focusedResizerName = \"\";\n\n #hasBeenClicked = false;\n\n #isEditing = false;\n\n #isInEditMode = false;\n\n #isResizerEnabledForKeyboard = false;\n\n #moveInDOMTimeout = null;\n\n _initialOptions = Object.create(null);\n\n _uiManager = null;\n\n _focusEventsAllowed = true;\n\n _l10nPromise = null;\n\n #isDraggable = false;\n\n #zIndex = AnnotationEditor._zIndex++;\n\n static _borderLineWidth = -1;\n\n static _colorManager = new ColorManager();\n\n static _zIndex = 1;\n\n // When one of the dimensions of an editor is smaller than this value, the\n // button to edit the alt text is visually moved outside of the editor.\n static SMALL_EDITOR_SIZE = 0;\n\n static get _resizerKeyboardManager() {\n const resize = AnnotationEditor.prototype._resizeWithKeyboard;\n const small = AnnotationEditorUIManager.TRANSLATE_SMALL;\n const big = AnnotationEditorUIManager.TRANSLATE_BIG;\n\n return shadow(\n this,\n \"_resizerKeyboardManager\",\n new KeyboardManager([\n [[\"ArrowLeft\", \"mac+ArrowLeft\"], resize, { args: [-small, 0] }],\n [\n [\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"],\n resize,\n { args: [-big, 0] },\n ],\n [[\"ArrowRight\", \"mac+ArrowRight\"], resize, { args: [small, 0] }],\n [\n [\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"],\n resize,\n { args: [big, 0] },\n ],\n [[\"ArrowUp\", \"mac+ArrowUp\"], resize, { args: [0, -small] }],\n [[\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"], resize, { args: [0, -big] }],\n [[\"ArrowDown\", \"mac+ArrowDown\"], resize, { args: [0, small] }],\n [[\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"], resize, { args: [0, big] }],\n [\n [\"Escape\", \"mac+Escape\"],\n AnnotationEditor.prototype._stopResizingWithKeyboard,\n ],\n ])\n );\n }\n\n /**\n * @param {AnnotationEditorParameters} parameters\n */\n constructor(parameters) {\n if (this.constructor === AnnotationEditor) {\n unreachable(\"Cannot initialize AnnotationEditor.\");\n }\n\n this.parent = parameters.parent;\n this.id = parameters.id;\n this.width = this.height = null;\n this.pageIndex = parameters.parent.pageIndex;\n this.name = parameters.name;\n this.div = null;\n this._uiManager = parameters.uiManager;\n this.annotationElementId = null;\n this._willKeepAspectRatio = false;\n this._initialOptions.isCentered = parameters.isCentered;\n this._structTreeParentId = null;\n\n const {\n rotation,\n rawDims: { pageWidth, pageHeight, pageX, pageY },\n } = this.parent.viewport;\n\n this.rotation = rotation;\n this.pageRotation =\n (360 + rotation - this._uiManager.viewParameters.rotation) % 360;\n this.pageDimensions = [pageWidth, pageHeight];\n this.pageTranslation = [pageX, pageY];\n\n const [width, height] = this.parentDimensions;\n this.x = parameters.x / width;\n this.y = parameters.y / height;\n\n this.isAttachedToDOM = false;\n this.deleted = false;\n }\n\n get editorType() {\n return Object.getPrototypeOf(this).constructor._type;\n }\n\n static get _defaultLineColor() {\n return shadow(\n this,\n \"_defaultLineColor\",\n this._colorManager.getHexCode(\"CanvasText\")\n );\n }\n\n static deleteAnnotationElement(editor) {\n const fakeEditor = new FakeEditor({\n id: editor.parent.getNextId(),\n parent: editor.parent,\n uiManager: editor._uiManager,\n });\n fakeEditor.annotationElementId = editor.annotationElementId;\n fakeEditor.deleted = true;\n fakeEditor._uiManager.addToAnnotationStorage(fakeEditor);\n }\n\n /**\n * Initialize the l10n stuff for this type of editor.\n * @param {Object} l10n\n */\n static initialize(l10n, options = null) {\n AnnotationEditor._l10nPromise ||= new Map(\n [\n \"pdfjs-editor-alt-text-button-label\",\n \"pdfjs-editor-alt-text-edit-button-label\",\n \"pdfjs-editor-alt-text-decorative-tooltip\",\n \"pdfjs-editor-resizer-label-topLeft\",\n \"pdfjs-editor-resizer-label-topMiddle\",\n \"pdfjs-editor-resizer-label-topRight\",\n \"pdfjs-editor-resizer-label-middleRight\",\n \"pdfjs-editor-resizer-label-bottomRight\",\n \"pdfjs-editor-resizer-label-bottomMiddle\",\n \"pdfjs-editor-resizer-label-bottomLeft\",\n \"pdfjs-editor-resizer-label-middleLeft\",\n ].map(str => [\n str,\n l10n.get(str.replaceAll(/([A-Z])/g, c => `-${c.toLowerCase()}`)),\n ])\n );\n if (options?.strings) {\n for (const str of options.strings) {\n AnnotationEditor._l10nPromise.set(str, l10n.get(str));\n }\n }\n if (AnnotationEditor._borderLineWidth !== -1) {\n return;\n }\n const style = getComputedStyle(document.documentElement);\n AnnotationEditor._borderLineWidth =\n parseFloat(style.getPropertyValue(\"--outline-width\")) || 0;\n }\n\n /**\n * Update the default parameters for this type of editor.\n * @param {number} _type\n * @param {*} _value\n */\n static updateDefaultParams(_type, _value) {}\n\n /**\n * Get the default properties to set in the UI for this type of editor.\n * @returns {Array}\n */\n static get defaultPropertiesToUpdate() {\n return [];\n }\n\n /**\n * Check if this kind of editor is able to handle the given mime type for\n * pasting.\n * @param {string} mime\n * @returns {boolean}\n */\n static isHandlingMimeForPasting(mime) {\n return false;\n }\n\n /**\n * Extract the data from the clipboard item and delegate the creation of the\n * editor to the parent.\n * @param {DataTransferItem} item\n * @param {AnnotationEditorLayer} parent\n */\n static paste(item, parent) {\n unreachable(\"Not implemented\");\n }\n\n /**\n * Get the properties to update in the UI for this editor.\n * @returns {Array}\n */\n get propertiesToUpdate() {\n return [];\n }\n\n get _isDraggable() {\n return this.#isDraggable;\n }\n\n set _isDraggable(value) {\n this.#isDraggable = value;\n this.div?.classList.toggle(\"draggable\", value);\n }\n\n /**\n * @returns {boolean} true if the editor handles the Enter key itself.\n */\n get isEnterHandled() {\n return true;\n }\n\n center() {\n const [pageWidth, pageHeight] = this.pageDimensions;\n switch (this.parentRotation) {\n case 90:\n this.x -= (this.height * pageHeight) / (pageWidth * 2);\n this.y += (this.width * pageWidth) / (pageHeight * 2);\n break;\n case 180:\n this.x += this.width / 2;\n this.y += this.height / 2;\n break;\n case 270:\n this.x += (this.height * pageHeight) / (pageWidth * 2);\n this.y -= (this.width * pageWidth) / (pageHeight * 2);\n break;\n default:\n this.x -= this.width / 2;\n this.y -= this.height / 2;\n break;\n }\n this.fixAndSetPosition();\n }\n\n /**\n * Add some commands into the CommandManager (undo/redo stuff).\n * @param {Object} params\n */\n addCommands(params) {\n this._uiManager.addCommands(params);\n }\n\n get currentLayer() {\n return this._uiManager.currentLayer;\n }\n\n /**\n * This editor will be behind the others.\n */\n setInBackground() {\n this.div.style.zIndex = 0;\n }\n\n /**\n * This editor will be in the foreground.\n */\n setInForeground() {\n this.div.style.zIndex = this.#zIndex;\n }\n\n setParent(parent) {\n if (parent !== null) {\n this.pageIndex = parent.pageIndex;\n this.pageDimensions = parent.pageDimensions;\n } else {\n // The editor is being removed from the DOM, so we need to stop resizing.\n this.#stopResizing();\n }\n this.parent = parent;\n }\n\n /**\n * onfocus callback.\n */\n focusin(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n if (!this.#hasBeenClicked) {\n this.parent.setSelected(this);\n } else {\n this.#hasBeenClicked = false;\n }\n }\n\n /**\n * onblur callback.\n * @param {FocusEvent} event\n */\n focusout(event) {\n if (!this._focusEventsAllowed) {\n return;\n }\n\n if (!this.isAttachedToDOM) {\n return;\n }\n\n // In case of focusout, the relatedTarget is the element which\n // is grabbing the focus.\n // So if the related target is an element under the div for this\n // editor, then the editor isn't unactive.\n const target = event.relatedTarget;\n if (target?.closest(`#${this.id}`)) {\n return;\n }\n\n event.preventDefault();\n\n if (!this.parent?.isMultipleSelection) {\n this.commitOrRemove();\n }\n }\n\n commitOrRemove() {\n if (this.isEmpty()) {\n this.remove();\n } else {\n this.commit();\n }\n }\n\n /**\n * Commit the data contained in this editor.\n */\n commit() {\n this.addToAnnotationStorage();\n }\n\n addToAnnotationStorage() {\n this._uiManager.addToAnnotationStorage(this);\n }\n\n /**\n * Set the editor position within its parent.\n * @param {number} x\n * @param {number} y\n * @param {number} tx - x-translation in screen coordinates.\n * @param {number} ty - y-translation in screen coordinates.\n */\n setAt(x, y, tx, ty) {\n const [width, height] = this.parentDimensions;\n [tx, ty] = this.screenToPageTranslation(tx, ty);\n\n this.x = (x + tx) / width;\n this.y = (y + ty) / height;\n\n this.fixAndSetPosition();\n }\n\n #translate([width, height], x, y) {\n [x, y] = this.screenToPageTranslation(x, y);\n\n this.x += x / width;\n this.y += y / height;\n\n this.fixAndSetPosition();\n }\n\n /**\n * Translate the editor position within its parent.\n * @param {number} x - x-translation in screen coordinates.\n * @param {number} y - y-translation in screen coordinates.\n */\n translate(x, y) {\n this.#translate(this.parentDimensions, x, y);\n }\n\n /**\n * Translate the editor position within its page and adjust the scroll\n * in order to have the editor in the view.\n * @param {number} x - x-translation in page coordinates.\n * @param {number} y - y-translation in page coordinates.\n */\n translateInPage(x, y) {\n this.#translate(this.pageDimensions, x, y);\n this.div.scrollIntoView({ block: \"nearest\" });\n }\n\n drag(tx, ty) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.x += tx / parentWidth;\n this.y += ty / parentHeight;\n if (this.parent && (this.x < 0 || this.x > 1 || this.y < 0 || this.y > 1)) {\n // It's possible to not have a parent: for example, when the user is\n // dragging all the selected editors but this one on a page which has been\n // destroyed.\n // It's why we need to check for it. In such a situation, it isn't really\n // a problem to not find a new parent: it's something which is related to\n // what the user is seeing, hence it depends on how pages are layed out.\n\n // The element will be outside of its parent so change the parent.\n const { x, y } = this.div.getBoundingClientRect();\n if (this.parent.findNewParent(this, x, y)) {\n this.x -= Math.floor(this.x);\n this.y -= Math.floor(this.y);\n }\n }\n\n // The editor can be moved wherever the user wants, so we don't need to fix\n // the position: it'll be done when the user will release the mouse button.\n\n let { x, y } = this;\n const [bx, by] = this.#getBaseTranslation();\n x += bx;\n y += by;\n\n this.div.style.left = `${(100 * x).toFixed(2)}%`;\n this.div.style.top = `${(100 * y).toFixed(2)}%`;\n this.div.scrollIntoView({ block: \"nearest\" });\n }\n\n #getBaseTranslation() {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const { _borderLineWidth } = AnnotationEditor;\n const x = _borderLineWidth / parentWidth;\n const y = _borderLineWidth / parentHeight;\n switch (this.rotation) {\n case 90:\n return [-x, y];\n case 180:\n return [x, y];\n case 270:\n return [x, -y];\n default:\n return [-x, -y];\n }\n }\n\n fixAndSetPosition() {\n const [pageWidth, pageHeight] = this.pageDimensions;\n let { x, y, width, height } = this;\n width *= pageWidth;\n height *= pageHeight;\n x *= pageWidth;\n y *= pageHeight;\n\n switch (this.rotation) {\n case 0:\n x = Math.max(0, Math.min(pageWidth - width, x));\n y = Math.max(0, Math.min(pageHeight - height, y));\n break;\n case 90:\n x = Math.max(0, Math.min(pageWidth - height, x));\n y = Math.min(pageHeight, Math.max(width, y));\n break;\n case 180:\n x = Math.min(pageWidth, Math.max(width, x));\n y = Math.min(pageHeight, Math.max(height, y));\n break;\n case 270:\n x = Math.min(pageWidth, Math.max(height, x));\n y = Math.max(0, Math.min(pageHeight - width, y));\n break;\n }\n\n this.x = x /= pageWidth;\n this.y = y /= pageHeight;\n\n const [bx, by] = this.#getBaseTranslation();\n x += bx;\n y += by;\n\n const { style } = this.div;\n style.left = `${(100 * x).toFixed(2)}%`;\n style.top = `${(100 * y).toFixed(2)}%`;\n\n this.moveInDOM();\n }\n\n static #rotatePoint(x, y, angle) {\n switch (angle) {\n case 90:\n return [y, -x];\n case 180:\n return [-x, -y];\n case 270:\n return [-y, x];\n default:\n return [x, y];\n }\n }\n\n /**\n * Convert a screen translation into a page one.\n * @param {number} x\n * @param {number} y\n */\n screenToPageTranslation(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, this.parentRotation);\n }\n\n /**\n * Convert a page translation into a screen one.\n * @param {number} x\n * @param {number} y\n */\n pageTranslationToScreen(x, y) {\n return AnnotationEditor.#rotatePoint(x, y, 360 - this.parentRotation);\n }\n\n #getRotationMatrix(rotation) {\n switch (rotation) {\n case 90: {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, -pageWidth / pageHeight, pageHeight / pageWidth, 0];\n }\n case 180:\n return [-1, 0, 0, -1];\n case 270: {\n const [pageWidth, pageHeight] = this.pageDimensions;\n return [0, pageWidth / pageHeight, -pageHeight / pageWidth, 0];\n }\n default:\n return [1, 0, 0, 1];\n }\n }\n\n get parentScale() {\n return this._uiManager.viewParameters.realScale;\n }\n\n get parentRotation() {\n return (this._uiManager.viewParameters.rotation + this.pageRotation) % 360;\n }\n\n get parentDimensions() {\n const {\n parentScale,\n pageDimensions: [pageWidth, pageHeight],\n } = this;\n const scaledWidth = pageWidth * parentScale;\n const scaledHeight = pageHeight * parentScale;\n return FeatureTest.isCSSRoundSupported\n ? [Math.round(scaledWidth), Math.round(scaledHeight)]\n : [scaledWidth, scaledHeight];\n }\n\n /**\n * Set the dimensions of this editor.\n * @param {number} width\n * @param {number} height\n */\n setDims(width, height) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.div.style.width = `${((100 * width) / parentWidth).toFixed(2)}%`;\n if (!this.#keepAspectRatio) {\n this.div.style.height = `${((100 * height) / parentHeight).toFixed(2)}%`;\n }\n this.#altTextButton?.classList.toggle(\n \"small\",\n width < AnnotationEditor.SMALL_EDITOR_SIZE ||\n height < AnnotationEditor.SMALL_EDITOR_SIZE\n );\n }\n\n fixDims() {\n const { style } = this.div;\n const { height, width } = style;\n const widthPercent = width.endsWith(\"%\");\n const heightPercent = !this.#keepAspectRatio && height.endsWith(\"%\");\n if (widthPercent && heightPercent) {\n return;\n }\n\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (!widthPercent) {\n style.width = `${((100 * parseFloat(width)) / parentWidth).toFixed(2)}%`;\n }\n if (!this.#keepAspectRatio && !heightPercent) {\n style.height = `${((100 * parseFloat(height)) / parentHeight).toFixed(\n 2\n )}%`;\n }\n }\n\n /**\n * Get the translation used to position this editor when it's created.\n * @returns {Array<number>}\n */\n getInitialTranslation() {\n return [0, 0];\n }\n\n #createResizers() {\n if (this.#resizersDiv) {\n return;\n }\n this.#resizersDiv = document.createElement(\"div\");\n this.#resizersDiv.classList.add(\"resizers\");\n // When the resizers are used with the keyboard, they're focusable, hence\n // we want to have them in this order (top left, top middle, top right, ...)\n // in the DOM to have the focus order correct.\n const classes = this._willKeepAspectRatio\n ? [\"topLeft\", \"topRight\", \"bottomRight\", \"bottomLeft\"]\n : [\n \"topLeft\",\n \"topMiddle\",\n \"topRight\",\n \"middleRight\",\n \"bottomRight\",\n \"bottomMiddle\",\n \"bottomLeft\",\n \"middleLeft\",\n ];\n for (const name of classes) {\n const div = document.createElement(\"div\");\n this.#resizersDiv.append(div);\n div.classList.add(\"resizer\", name);\n div.setAttribute(\"data-resizer-name\", name);\n div.addEventListener(\n \"pointerdown\",\n this.#resizerPointerdown.bind(this, name)\n );\n div.addEventListener(\"contextmenu\", noContextMenu);\n div.tabIndex = -1;\n }\n this.div.prepend(this.#resizersDiv);\n }\n\n #resizerPointerdown(name, event) {\n event.preventDefault();\n const { isMac } = FeatureTest.platform;\n if (event.button !== 0 || (event.ctrlKey && isMac)) {\n return;\n }\n\n this.#toggleAltTextButton(false);\n\n const boundResizerPointermove = this.#resizerPointermove.bind(this, name);\n const savedDraggable = this._isDraggable;\n this._isDraggable = false;\n const pointerMoveOptions = { passive: true, capture: true };\n this.parent.togglePointerEvents(false);\n window.addEventListener(\n \"pointermove\",\n boundResizerPointermove,\n pointerMoveOptions\n );\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const savedParentCursor = this.parent.div.style.cursor;\n const savedCursor = this.div.style.cursor;\n this.div.style.cursor = this.parent.div.style.cursor =\n window.getComputedStyle(event.target).cursor;\n\n const pointerUpCallback = () => {\n this.parent.togglePointerEvents(true);\n this.#toggleAltTextButton(true);\n this._isDraggable = savedDraggable;\n window.removeEventListener(\"pointerup\", pointerUpCallback);\n window.removeEventListener(\"blur\", pointerUpCallback);\n window.removeEventListener(\n \"pointermove\",\n boundResizerPointermove,\n pointerMoveOptions\n );\n this.parent.div.style.cursor = savedParentCursor;\n this.div.style.cursor = savedCursor;\n\n this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight);\n };\n window.addEventListener(\"pointerup\", pointerUpCallback);\n // If the user switches to another window (with alt+tab), then we end the\n // resize session.\n window.addEventListener(\"blur\", pointerUpCallback);\n }\n\n #addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight) {\n const newX = this.x;\n const newY = this.y;\n const newWidth = this.width;\n const newHeight = this.height;\n if (\n newX === savedX &&\n newY === savedY &&\n newWidth === savedWidth &&\n newHeight === savedHeight\n ) {\n return;\n }\n\n this.addCommands({\n cmd: () => {\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n this.fixAndSetPosition();\n },\n undo: () => {\n this.width = savedWidth;\n this.height = savedHeight;\n this.x = savedX;\n this.y = savedY;\n const [parentWidth, parentHeight] = this.parentDimensions;\n this.setDims(parentWidth * savedWidth, parentHeight * savedHeight);\n this.fixAndSetPosition();\n },\n mustExec: true,\n });\n }\n\n #resizerPointermove(name, event) {\n const [parentWidth, parentHeight] = this.parentDimensions;\n const savedX = this.x;\n const savedY = this.y;\n const savedWidth = this.width;\n const savedHeight = this.height;\n const minWidth = AnnotationEditor.MIN_SIZE / parentWidth;\n const minHeight = AnnotationEditor.MIN_SIZE / parentHeight;\n\n // 10000 because we multiply by 100 and use toFixed(2) in fixAndSetPosition.\n // Without rounding, the positions of the corners other than the top left\n // one can be slightly wrong.\n const round = x => Math.round(x * 10000) / 10000;\n const rotationMatrix = this.#getRotationMatrix(this.rotation);\n const transf = (x, y) => [\n rotationMatrix[0] * x + rotationMatrix[2] * y,\n rotationMatrix[1] * x + rotationMatrix[3] * y,\n ];\n const invRotationMatrix = this.#getRotationMatrix(360 - this.rotation);\n const invTransf = (x, y) => [\n invRotationMatrix[0] * x + invRotationMatrix[2] * y,\n invRotationMatrix[1] * x + invRotationMatrix[3] * y,\n ];\n let getPoint;\n let getOpposite;\n let isDiagonal = false;\n let isHorizontal = false;\n\n switch (name) {\n case \"topLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, 0];\n getOpposite = (w, h) => [w, h];\n break;\n case \"topMiddle\":\n getPoint = (w, h) => [w / 2, 0];\n getOpposite = (w, h) => [w / 2, h];\n break;\n case \"topRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, 0];\n getOpposite = (w, h) => [0, h];\n break;\n case \"middleRight\":\n isHorizontal = true;\n getPoint = (w, h) => [w, h / 2];\n getOpposite = (w, h) => [0, h / 2];\n break;\n case \"bottomRight\":\n isDiagonal = true;\n getPoint = (w, h) => [w, h];\n getOpposite = (w, h) => [0, 0];\n break;\n case \"bottomMiddle\":\n getPoint = (w, h) => [w / 2, h];\n getOpposite = (w, h) => [w / 2, 0];\n break;\n case \"bottomLeft\":\n isDiagonal = true;\n getPoint = (w, h) => [0, h];\n getOpposite = (w, h) => [w, 0];\n break;\n case \"middleLeft\":\n isHorizontal = true;\n getPoint = (w, h) => [0, h / 2];\n getOpposite = (w, h) => [w, h / 2];\n break;\n }\n\n const point = getPoint(savedWidth, savedHeight);\n const oppositePoint = getOpposite(savedWidth, savedHeight);\n let transfOppositePoint = transf(...oppositePoint);\n const oppositeX = round(savedX + transfOppositePoint[0]);\n const oppositeY = round(savedY + transfOppositePoint[1]);\n let ratioX = 1;\n let ratioY = 1;\n\n let [deltaX, deltaY] = this.screenToPageTranslation(\n event.movementX,\n event.movementY\n );\n [deltaX, deltaY] = invTransf(deltaX / parentWidth, deltaY / parentHeight);\n\n if (isDiagonal) {\n const oldDiag = Math.hypot(savedWidth, savedHeight);\n ratioX = ratioY = Math.max(\n Math.min(\n Math.hypot(\n oppositePoint[0] - point[0] - deltaX,\n oppositePoint[1] - point[1] - deltaY\n ) / oldDiag,\n // Avoid the editor to be larger than the page.\n 1 / savedWidth,\n 1 / savedHeight\n ),\n // Avoid the editor to be smaller than the minimum size.\n minWidth / savedWidth,\n minHeight / savedHeight\n );\n } else if (isHorizontal) {\n ratioX =\n Math.max(\n minWidth,\n Math.min(1, Math.abs(oppositePoint[0] - point[0] - deltaX))\n ) / savedWidth;\n } else {\n ratioY =\n Math.max(\n minHeight,\n Math.min(1, Math.abs(oppositePoint[1] - point[1] - deltaY))\n ) / savedHeight;\n }\n\n const newWidth = round(savedWidth * ratioX);\n const newHeight = round(savedHeight * ratioY);\n transfOppositePoint = transf(...getOpposite(newWidth, newHeight));\n const newX = oppositeX - transfOppositePoint[0];\n const newY = oppositeY - transfOppositePoint[1];\n\n this.width = newWidth;\n this.height = newHeight;\n this.x = newX;\n this.y = newY;\n\n this.setDims(parentWidth * newWidth, parentHeight * newHeight);\n this.fixAndSetPosition();\n }\n\n async addAltTextButton() {\n if (this.#altTextButton) {\n return;\n }\n const altText = (this.#altTextButton = document.createElement(\"button\"));\n altText.className = \"altText\";\n const msg = await AnnotationEditor._l10nPromise.get(\n \"pdfjs-editor-alt-text-button-label\"\n );\n altText.textContent = msg;\n altText.setAttribute(\"aria-label\", msg);\n altText.tabIndex = \"0\";\n altText.addEventListener(\"contextmenu\", noContextMenu);\n altText.addEventListener(\"pointerdown\", event => event.stopPropagation());\n\n const onClick = event => {\n this.#altTextButton.hidden = true;\n event.preventDefault();\n this._uiManager.editAltText(this);\n };\n altText.addEventListener(\"click\", onClick, { capture: true });\n altText.addEventListener(\"keydown\", event => {\n if (event.target === altText && event.key === \"Enter\") {\n this.#altTextWasFromKeyBoard = true;\n onClick(event);\n }\n });\n this.#setAltTextButtonState();\n this.div.append(altText);\n if (!AnnotationEditor.SMALL_EDITOR_SIZE) {\n // We take the width of the alt text button and we add 40% to it to be\n // sure to have enough space for it.\n const PERCENT = 40;\n AnnotationEditor.SMALL_EDITOR_SIZE = Math.min(\n 128,\n Math.round(altText.getBoundingClientRect().width * (1 + PERCENT / 100))\n );\n }\n }\n\n async #setAltTextButtonState() {\n const button = this.#altTextButton;\n if (!button) {\n return;\n }\n if (!this.#altText && !this.#altTextDecorative) {\n button.classList.remove(\"done\");\n this.#altTextTooltip?.remove();\n return;\n }\n button.classList.add(\"done\");\n\n AnnotationEditor._l10nPromise\n .get(\"pdfjs-editor-alt-text-edit-button-label\")\n .then(msg => {\n button.setAttribute(\"aria-label\", msg);\n });\n let tooltip = this.#altTextTooltip;\n if (!tooltip) {\n this.#altTextTooltip = tooltip = document.createElement(\"span\");\n tooltip.className = \"tooltip\";\n tooltip.setAttribute(\"role\", \"tooltip\");\n const id = (tooltip.id = `alt-text-tooltip-${this.id}`);\n button.setAttribute(\"aria-describedby\", id);\n\n const DELAY_TO_SHOW_TOOLTIP = 100;\n button.addEventListener(\"mouseenter\", () => {\n this.#altTextTooltipTimeout = setTimeout(() => {\n this.#altTextTooltipTimeout = null;\n this.#altTextTooltip.classList.add(\"show\");\n this._uiManager._eventBus.dispatch(\"reporttelemetry\", {\n source: this,\n details: {\n type: \"editing\",\n subtype: this.editorType,\n data: {\n action: \"alt_text_tooltip\",\n },\n },\n });\n }, DELAY_TO_SHOW_TOOLTIP);\n });\n button.addEventListener(\"mouseleave\", () => {\n if (this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextTooltip?.classList.remove(\"show\");\n });\n }\n tooltip.innerText = this.#altTextDecorative\n ? await AnnotationEditor._l10nPromise.get(\n \"pdfjs-editor-alt-text-decorative-tooltip\"\n )\n : this.#altText;\n\n if (!tooltip.parentNode) {\n button.append(tooltip);\n }\n\n const element = this.getImageForAltText();\n element?.setAttribute(\"aria-describedby\", tooltip.id);\n }\n\n #toggleAltTextButton(enabled = false) {\n if (!this.#altTextButton) {\n return;\n }\n if (!enabled && this.#altTextTooltipTimeout) {\n clearTimeout(this.#altTextTooltipTimeout);\n this.#altTextTooltipTimeout = null;\n }\n this.#altTextButton.disabled = !enabled;\n }\n\n altTextFinish() {\n if (!this.#altTextButton) {\n return;\n }\n this.#altTextButton.hidden = false;\n this.#altTextButton.focus({ focusVisible: this.#altTextWasFromKeyBoard });\n this.#altTextWasFromKeyBoard = false;\n }\n\n addEditToolbar() {\n if (this.#editToolbar || this.#isInEditMode) {\n return;\n }\n this.#editToolbar = new EditorToolbar(this);\n this.div.append(this.#editToolbar.render());\n }\n\n removeEditToolbar() {\n if (!this.#editToolbar) {\n return;\n }\n this.#editToolbar.remove();\n this.#editToolbar = null;\n }\n\n getClientDimensions() {\n return this.div.getBoundingClientRect();\n }\n\n get altTextData() {\n return {\n altText: this.#altText,\n decorative: this.#altTextDecorative,\n };\n }\n\n /**\n * Set the alt text data.\n */\n set altTextData({ altText, decorative }) {\n if (this.#altText === altText && this.#altTextDecorative === decorative) {\n return;\n }\n this.#altText = altText;\n this.#altTextDecorative = decorative;\n this.#setAltTextButtonState();\n }\n\n /**\n * Render this editor in a div.\n * @returns {HTMLDivElement | null}\n */\n render() {\n this.div = document.createElement(\"div\");\n this.div.setAttribute(\"data-editor-rotation\", (360 - this.rotation) % 360);\n this.div.className = this.name;\n this.div.setAttribute(\"id\", this.id);\n this.div.setAttribute(\"tabIndex\", 0);\n\n this.setInForeground();\n\n this.div.addEventListener(\"focusin\", this.#boundFocusin);\n this.div.addEventListener(\"focusout\", this.#boundFocusout);\n\n const [parentWidth, parentHeight] = this.parentDimensions;\n if (this.parentRotation % 180 !== 0) {\n this.div.style.maxWidth = `${((100 * parentHeight) / parentWidth).toFixed(\n 2\n )}%`;\n this.div.style.maxHeight = `${(\n (100 * parentWidth) /\n parentHeight\n ).toFixed(2)}%`;\n }\n\n const [tx, ty] = this.getInitialTranslation();\n this.translate(tx, ty);\n\n bindEvents(this, this.div, [\"pointerdown\"]);\n\n return this.div;\n }\n\n /**\n * Onpointerdown callback.\n * @param {PointerEvent} event\n */\n pointerdown(event) {\n const { isMac } = FeatureTest.platform;\n if (event.button !== 0 || (event.ctrlKey && isMac)) {\n // Avoid to focus this editor because of a non-left click.\n event.preventDefault();\n return;\n }\n\n this.#hasBeenClicked = true;\n\n this.#setUpDragSession(event);\n }\n\n #setUpDragSession(event) {\n if (!this._isDraggable) {\n return;\n }\n\n const isSelected = this._uiManager.isSelected(this);\n this._uiManager.setUpDragSession();\n\n let pointerMoveOptions, pointerMoveCallback;\n if (isSelected) {\n pointerMoveOptions = { passive: true, capture: true };\n pointerMoveCallback = e => {\n const [tx, ty] = this.screenToPageTranslation(e.movementX, e.movementY);\n this._uiManager.dragSelectedEditors(tx, ty);\n };\n window.addEventListener(\n \"pointermove\",\n pointerMoveCallback,\n pointerMoveOptions\n );\n }\n\n const pointerUpCallback = () => {\n window.removeEventListener(\"pointerup\", pointerUpCallback);\n window.removeEventListener(\"blur\", pointerUpCallback);\n if (isSelected) {\n window.removeEventListener(\n \"pointermove\",\n pointerMoveCallback,\n pointerMoveOptions\n );\n }\n\n this.#hasBeenClicked = false;\n if (!this._uiManager.endDragSession()) {\n const { isMac } = FeatureTest.platform;\n if (\n (event.ctrlKey && !isMac) ||\n event.shiftKey ||\n (event.metaKey && isMac)\n ) {\n this.parent.toggleSelected(this);\n } else {\n this.parent.setSelected(this);\n }\n }\n };\n window.addEventListener(\"pointerup\", pointerUpCallback);\n // If the user is using alt+tab during the dragging session, the pointerup\n // event could be not fired, but a blur event is fired so we can use it in\n // order to interrupt the dragging session.\n window.addEventListener(\"blur\", pointerUpCallback);\n }\n\n moveInDOM() {\n // Moving the editor in the DOM can be expensive, so we wait a bit before.\n // It's important to not block the UI (for example when changing the font\n // size in a FreeText).\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n }\n this.#moveInDOMTimeout = setTimeout(() => {\n this.#moveInDOMTimeout = null;\n this.parent?.moveEditorInDOM(this);\n }, 0);\n }\n\n _setParentAndPosition(parent, x, y) {\n parent.changeParent(this);\n this.x = x;\n this.y = y;\n this.fixAndSetPosition();\n }\n\n /**\n * Convert the current rect into a page one.\n */\n getRect(tx, ty) {\n const scale = this.parentScale;\n const [pageWidth, pageHeight] = this.pageDimensions;\n const [pageX, pageY] = this.pageTranslation;\n const shiftX = tx / scale;\n const shiftY = ty / scale;\n const x = this.x * pageWidth;\n const y = this.y * pageHeight;\n const width = this.width * pageWidth;\n const height = this.height * pageHeight;\n\n switch (this.rotation) {\n case 0:\n return [\n x + shiftX + pageX,\n pageHeight - y - shiftY - height + pageY,\n x + shiftX + width + pageX,\n pageHeight - y - shiftY + pageY,\n ];\n case 90:\n return [\n x + shiftY + pageX,\n pageHeight - y + shiftX + pageY,\n x + shiftY + height + pageX,\n pageHeight - y + shiftX + width + pageY,\n ];\n case 180:\n return [\n x - shiftX - width + pageX,\n pageHeight - y + shiftY + pageY,\n x - shiftX + pageX,\n pageHeight - y + shiftY + height + pageY,\n ];\n case 270:\n return [\n x - shiftY - height + pageX,\n pageHeight - y - shiftX - width + pageY,\n x - shiftY + pageX,\n pageHeight - y - shiftX + pageY,\n ];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n\n getRectInCurrentCoords(rect, pageHeight) {\n const [x1, y1, x2, y2] = rect;\n\n const width = x2 - x1;\n const height = y2 - y1;\n\n switch (this.rotation) {\n case 0:\n return [x1, pageHeight - y2, width, height];\n case 90:\n return [x1, pageHeight - y1, height, width];\n case 180:\n return [x2, pageHeight - y1, width, height];\n case 270:\n return [x2, pageHeight - y2, height, width];\n default:\n throw new Error(\"Invalid rotation\");\n }\n }\n\n /**\n * Executed once this editor has been rendered.\n */\n onceAdded() {}\n\n /**\n * Check if the editor contains something.\n * @returns {boolean}\n */\n isEmpty() {\n return false;\n }\n\n /**\n * Enable edit mode.\n */\n enableEditMode() {\n this.#isInEditMode = true;\n }\n\n /**\n * Disable edit mode.\n */\n disableEditMode() {\n this.#isInEditMode = false;\n }\n\n /**\n * Check if the editor is edited.\n * @returns {boolean}\n */\n isInEditMode() {\n return this.#isInEditMode;\n }\n\n /**\n * If it returns true, then this editor handles the keyboard\n * events itself.\n * @returns {boolean}\n */\n shouldGetKeyboardEvents() {\n return this.#isResizerEnabledForKeyboard;\n }\n\n /**\n * Check if this editor needs to be rebuilt or not.\n * @returns {boolean}\n */\n needsToBeRebuilt() {\n return this.div && !this.isAttachedToDOM;\n }\n\n /**\n * Rebuild the editor in case it has been removed on undo.\n *\n * To implement in subclasses.\n */\n rebuild() {\n this.div?.addEventListener(\"focusin\", this.#boundFocusin);\n this.div?.addEventListener(\"focusout\", this.#boundFocusout);\n }\n\n /**\n * Serialize the editor.\n * The result of the serialization will be used to construct a\n * new annotation to add to the pdf document.\n *\n * To implement in subclasses.\n * @param {boolean} [isForCopying]\n * @param {Object | null} [context]\n * @returns {Object | null}\n */\n serialize(isForCopying = false, context = null) {\n unreachable(\"An editor must be serializable\");\n }\n\n /**\n * Deserialize the editor.\n * The result of the deserialization is a new editor.\n *\n * @param {Object} data\n * @param {AnnotationEditorLayer} parent\n * @param {AnnotationEditorUIManager} uiManager\n * @returns {AnnotationEditor | null}\n */\n static deserialize(data, parent, uiManager) {\n const editor = new this.prototype.constructor({\n parent,\n id: parent.getNextId(),\n uiManager,\n });\n editor.rotation = data.rotation;\n\n const [pageWidth, pageHeight] = editor.pageDimensions;\n const [x, y, width, height] = editor.getRectInCurrentCoords(\n data.rect,\n pageHeight\n );\n editor.x = x / pageWidth;\n editor.y = y / pageHeight;\n editor.width = width / pageWidth;\n editor.height = height / pageHeight;\n\n return editor;\n }\n\n /**\n * Remove this editor.\n * It's used on ctrl+backspace action.\n */\n remove() {\n this.div.removeEventListener(\"focusin\", this.#boundFocusin);\n this.div.removeEventListener(\"focusout\", this.#boundFocusout);\n\n if (!this.isEmpty()) {\n // The editor is removed but it can be back at some point thanks to\n // undo/redo so we must commit it before.\n this.commit();\n }\n if (this.parent) {\n this.parent.remove(this);\n } else {\n this._uiManager.removeEditor(this);\n }\n\n // The editor is removed so we can remove the alt text button and if it's\n // restored then it's up to the subclass to add it back.\n this.#altTextButton?.remove();\n this.#altTextButton = null;\n this.#altTextTooltip = null;\n if (this.#moveInDOMTimeout) {\n clearTimeout(this.#moveInDOMTimeout);\n this.#moveInDOMTimeout = null;\n }\n this.#stopResizing();\n this.removeEditToolbar();\n }\n\n /**\n * @returns {boolean} true if this editor can be resized.\n */\n get isResizable() {\n return false;\n }\n\n /**\n * Add the resizers to this editor.\n */\n makeResizable() {\n if (this.isResizable) {\n this.#createResizers();\n this.#resizersDiv.classList.remove(\"hidden\");\n bindEvents(this, this.div, [\"keydown\"]);\n }\n }\n\n /**\n * onkeydown callback.\n * @param {KeyboardEvent} event\n */\n keydown(event) {\n if (\n !this.isResizable ||\n event.target !== this.div ||\n event.key !== \"Enter\"\n ) {\n return;\n }\n this._uiManager.setSelected(this);\n this.#savedDimensions = {\n savedX: this.x,\n savedY: this.y,\n savedWidth: this.width,\n savedHeight: this.height,\n };\n const children = this.#resizersDiv.children;\n if (!this.#allResizerDivs) {\n this.#allResizerDivs = Array.from(children);\n const boundResizerKeydown = this.#resizerKeydown.bind(this);\n const boundResizerBlur = this.#resizerBlur.bind(this);\n for (const div of this.#allResizerDivs) {\n const name = div.getAttribute(\"data-resizer-name\");\n div.setAttribute(\"role\", \"spinbutton\");\n div.addEventListener(\"keydown\", boundResizerKeydown);\n div.addEventListener(\"blur\", boundResizerBlur);\n div.addEventListener(\"focus\", this.#resizerFocus.bind(this, name));\n AnnotationEditor._l10nPromise\n .get(`pdfjs-editor-resizer-label-${name}`)\n .then(msg => div.setAttribute(\"aria-label\", msg));\n }\n }\n\n // We want to have the resizers in the visual order, so we move the first\n // (top-left) to the right place.\n const first = this.#allResizerDivs[0];\n let firstPosition = 0;\n for (const div of children) {\n if (div === first) {\n break;\n }\n firstPosition++;\n }\n const nextFirstPosition =\n (((360 - this.rotation + this.parentRotation) % 360) / 90) *\n (this.#allResizerDivs.length / 4);\n\n if (nextFirstPosition !== firstPosition) {\n // We need to reorder the resizers in the DOM in order to have the focus\n // on the top-left one.\n if (nextFirstPosition < firstPosition) {\n for (let i = 0; i < firstPosition - nextFirstPosition; i++) {\n this.#resizersDiv.append(this.#resizersDiv.firstChild);\n }\n } else if (nextFirstPosition > firstPosition) {\n for (let i = 0; i < nextFirstPosition - firstPosition; i++) {\n this.#resizersDiv.firstChild.before(this.#resizersDiv.lastChild);\n }\n }\n\n let i = 0;\n for (const child of children) {\n const div = this.#allResizerDivs[i++];\n const name = div.getAttribute(\"data-resizer-name\");\n AnnotationEditor._l10nPromise\n .get(`pdfjs-editor-resizer-label-${name}`)\n .then(msg => child.setAttribute(\"aria-label\", msg));\n }\n }\n\n this.#setResizerTabIndex(0);\n this.#isResizerEnabledForKeyboard = true;\n this.#resizersDiv.firstChild.focus({ focusVisible: true });\n event.preventDefault();\n event.stopImmediatePropagation();\n }\n\n #resizerKeydown(event) {\n AnnotationEditor._resizerKeyboardManager.exec(this, event);\n }\n\n #resizerBlur(event) {\n if (\n this.#isResizerEnabledForKeyboard &&\n event.relatedTarget?.parentNode !== this.#resizersDiv\n ) {\n this.#stopResizing();\n }\n }\n\n #resizerFocus(name) {\n this.#focusedResizerName = this.#isResizerEnabledForKeyboard ? name : \"\";\n }\n\n #setResizerTabIndex(value) {\n if (!this.#allResizerDivs) {\n return;\n }\n for (const div of this.#allResizerDivs) {\n div.tabIndex = value;\n }\n }\n\n _resizeWithKeyboard(x, y) {\n if (!this.#isResizerEnabledForKeyboard) {\n return;\n }\n this.#resizerPointermove(this.#focusedResizerName, {\n movementX: x,\n movementY: y,\n });\n }\n\n #stopResizing() {\n this.#isResizerEnabledForKeyboard = false;\n this.#setResizerTabIndex(-1);\n if (this.#savedDimensions) {\n const { savedX, savedY, savedWidth, savedHeight } = this.#savedDimensions;\n this.#addResizeToUndoStack(savedX, savedY, savedWidth, savedHeight);\n this.#savedDimensions = null;\n }\n }\n\n _stopResizingWithKeyboard() {\n this.#stopResizing();\n this.div.focus();\n }\n\n /**\n * Select this editor.\n */\n select() {\n this.makeResizable();\n this.div?.classList.add(\"selectedEditor\");\n this.addEditToolbar();\n this.#editToolbar?.show();\n }\n\n /**\n * Unselect this editor.\n */\n unselect() {\n this.#resizersDiv?.classList.add(\"hidden\");\n this.div?.classList.remove(\"selectedEditor\");\n if (this.div?.contains(document.activeElement)) {\n // Don't use this.div.blur() because we don't know where the focus will\n // go.\n this._uiManager.currentLayer.div.focus();\n }\n this.#editToolbar?.hide();\n }\n\n /**\n * Update some parameters which have been changed through the UI.\n * @param {number} type\n * @param {*} value\n */\n updateParams(type, value) {}\n\n /**\n * When the user disables the editing mode some editors can change some of\n * their properties.\n */\n disableEditing() {\n if (this.#altTextButton) {\n this.#altTextButton.hidden = true;\n }\n }\n\n /**\n * When the user enables the editing mode some editors can change some of\n * their properties.\n */\n enableEditing() {\n if (this.#altTextButton) {\n this.#altTextButton.hidden = false;\n }\n }\n\n /**\n * The editor is about to be edited.\n */\n enterInEditMode() {}\n\n /**\n * @returns {HTMLElement | null} the element requiring an alt text.\n */\n getImageForAltText() {\n return null;\n }\n\n /**\n * Get the div which really contains the displayed content.\n * @returns {HTMLDivElement | undefined}\n */\n get contentDiv() {\n return this.div;\n }\n\n /**\n * If true then the editor is currently edited.\n * @type {boolean}\n */\n get isEditing() {\n return this.#isEditing;\n }\n\n /**\n * When set to true, it means that this editor is currently edited.\n * @param {boolean} value\n */\n set isEditing(value) {\n this.#isEditing = value;\n if (!this.parent) {\n return;\n }\n if (value) {\n this.parent.setSelected(this);\n this.parent.setActiveEditor(this);\n } else {\n this.parent.setActiveEditor(null);\n }\n }\n\n /**\n * Set the aspect ratio to use when resizing.\n * @param {number} width\n * @param {number} height\n */\n setAspectRatio(width, height) {\n this.#keepAspectRatio = true;\n const aspectRatio = width / height;\n const { style } = this.div;\n style.aspectRatio = aspectRatio;\n style.height = \"auto\";\n }\n\n static get MIN_SIZE() {\n return 16;\n }\n}\n\n// This class is used to fake an editor which has been deleted.\nclass FakeEditor extends AnnotationEditor {\n constructor(params) {\n super(params);\n this.annotationElementId = params.annotationElementId;\n this.deleted = true;\n }\n\n serialize() {\n return {\n id: this.annotationElementId,\n deleted: true,\n pageIndex: this.pageIndex,\n };\n }\n}\n\nexport { AnnotationEditor };\n","/* Copyright 2023 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nclass Outliner {\n #box;\n\n #verticalEdges = [];\n\n #intervals = [];\n\n /**\n * Construct an outliner.\n * @param {Array<Object>} boxes - An array of axis-aligned rectangles.\n * @param {number} borderWidth - The width of the border of the boxes, it\n * allows to make the boxes bigger (or smaller).\n * @param {number} innerMargin - The margin between the boxes and the\n * outlines. It's important to not have a null innerMargin when we want to\n * draw the outline else the stroked outline could be clipped because of its\n * width.\n * @param {boolean} isLTR - true if we're in LTR mode. It's used to determine\n * the last point of the boxes.\n */\n constructor(boxes, borderWidth = 0, innerMargin = 0, isLTR = true) {\n let minX = Infinity;\n let maxX = -Infinity;\n let minY = Infinity;\n let maxY = -Infinity;\n\n // We round the coordinates to slightly reduce the number of edges in the\n // final outlines.\n const NUMBER_OF_DIGITS = 4;\n const EPSILON = 10 ** -NUMBER_OF_DIGITS;\n\n // The coordinates of the boxes are in the page coordinate system.\n for (const { x, y, width, height } of boxes) {\n const x1 = Math.floor((x - borderWidth) / EPSILON) * EPSILON;\n const x2 = Math.ceil((x + width + borderWidth) / EPSILON) * EPSILON;\n const y1 = Math.floor((y - borderWidth) / EPSILON) * EPSILON;\n const y2 = Math.ceil((y + height + borderWidth) / EPSILON) * EPSILON;\n const left = [x1, y1, y2, true];\n const right = [x2, y1, y2, false];\n this.#verticalEdges.push(left, right);\n\n minX = Math.min(minX, x1);\n maxX = Math.max(maxX, x2);\n minY = Math.min(minY, y1);\n maxY = Math.max(maxY, y2);\n }\n\n const bboxWidth = maxX - minX + 2 * innerMargin;\n const bboxHeight = maxY - minY + 2 * innerMargin;\n const shiftedMinX = minX - innerMargin;\n const shiftedMinY = minY - innerMargin;\n const lastEdge = this.#verticalEdges.at(isLTR ? -1 : -2);\n const lastPoint = [lastEdge[0], lastEdge[2]];\n\n // Convert the coordinates of the edges into box coordinates.\n for (const edge of this.#verticalEdges) {\n const [x, y1, y2] = edge;\n edge[0] = (x - shiftedMinX) / bboxWidth;\n edge[1] = (y1 - shiftedMinY) / bboxHeight;\n edge[2] = (y2 - shiftedMinY) / bboxHeight;\n }\n\n this.#box = {\n x: shiftedMinX,\n y: shiftedMinY,\n width: bboxWidth,\n height: bboxHeight,\n lastPoint,\n };\n }\n\n getOutlines() {\n // We begin to sort lexicographically the vertical edges by their abscissa,\n // and then by their ordinate.\n this.#verticalEdges.sort(\n (a, b) => a[0] - b[0] || a[1] - b[1] || a[2] - b[2]\n );\n\n // We're now using a sweep line algorithm to find the outlines.\n // We start with the leftmost vertical edge, and we're going to iterate\n // over all the vertical edges from left to right.\n // Each time we encounter a left edge, we're going to insert the interval\n // [y1, y2] in the set of intervals.\n // This set of intervals is used to break the vertical edges into chunks:\n // we only take the part of the vertical edge that isn't in the union of\n // the intervals.\n const outlineVerticalEdges = [];\n for (const edge of this.#verticalEdges) {\n if (edge[3]) {\n // Left edge.\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n this.#insert(edge);\n } else {\n // Right edge.\n this.#remove(edge);\n outlineVerticalEdges.push(...this.#breakEdge(edge));\n }\n }\n return this.#getOutlines(outlineVerticalEdges);\n }\n\n #getOutlines(outlineVerticalEdges) {\n const edges = [];\n const allEdges = new Set();\n\n for (const edge of outlineVerticalEdges) {\n const [x, y1, y2] = edge;\n edges.push([x, y1, edge], [x, y2, edge]);\n }\n\n // We sort lexicographically the vertices of each edge by their ordinate and\n // by their abscissa.\n // Every pair (v_2i, v_{2i + 1}) of vertices defines a horizontal edge.\n // So for every vertical edge, we're going to add the two vertical edges\n // which are connected to it through a horizontal edge.\n edges.sort((a, b) => a[1] - b[1] || a[0] - b[0]);\n for (let i = 0, ii = edges.length; i < ii; i += 2) {\n const edge1 = edges[i][2];\n const edge2 = edges[i + 1][2];\n edge1.push(edge2);\n edge2.push(edge1);\n allEdges.add(edge1);\n allEdges.add(edge2);\n }\n const outlines = [];\n let outline;\n\n while (allEdges.size > 0) {\n const edge = allEdges.values().next().value;\n let [x, y1, y2, edge1, edge2] = edge;\n allEdges.delete(edge);\n let lastPointX = x;\n let lastPointY = y1;\n\n outline = [x, y2];\n outlines.push(outline);\n\n while (true) {\n let e;\n if (allEdges.has(edge1)) {\n e = edge1;\n } else if (allEdges.has(edge2)) {\n e = edge2;\n } else {\n break;\n }\n\n allEdges.delete(e);\n [x, y1, y2, edge1, edge2] = e;\n\n if (lastPointX !== x) {\n outline.push(lastPointX, lastPointY, x, lastPointY === y1 ? y1 : y2);\n lastPointX = x;\n }\n lastPointY = lastPointY === y1 ? y2 : y1;\n }\n outline.push(lastPointX, lastPointY);\n }\n return { outlines, box: this.#box };\n }\n\n #binarySearch(y) {\n const array = this.#intervals;\n let start = 0;\n let end = array.length - 1;\n\n while (start <= end) {\n const middle = (start + end) >> 1;\n const y1 = array[middle][0];\n if (y1 === y) {\n return middle;\n }\n if (y1 < y) {\n start = middle + 1;\n } else {\n end = middle - 1;\n }\n }\n return end + 1;\n }\n\n #insert([, y1, y2]) {\n const index = this.#binarySearch(y1);\n this.#intervals.splice(index, 0, [y1, y2]);\n }\n\n #remove([, y1, y2]) {\n const index = this.#binarySearch(y1);\n for (let i = index; i < this.#intervals.length; i++) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n for (let i = index - 1; i >= 0; i--) {\n const [start, end] = this.#intervals[i];\n if (start !== y1) {\n break;\n }\n if (start === y1 && end === y2) {\n this.#intervals.splice(i, 1);\n return;\n }\n }\n }\n\n #breakEdge(edge) {\n const [x, y1, y2] = edge;\n const results = [[x, y1, y2]];\n const index = this.#binarySearch(y2);\n for (let i = 0; i < index; i++) {\n const [start, end] = this.#intervals[i];\n for (let j = 0, jj = results.length; j < jj; j++) {\n const [, y3, y4] = results[j];\n if (end <= y3 || y4 <= start) {\n // There is no intersection between the interval and the edge, hence\n // we keep it as is.\n continue;\n }\n if (y3 >= start) {\n if (y4 > end) {\n results[j][1] = end;\n } else {\n if (jj === 1) {\n return [];\n }\n // The edge is included in the interval, hence we remove it.\n results.splice(j, 1);\n j--;\n jj--;\n }\n continue;\n }\n results[j][2] = start;\n if (y4 > end) {\n results.push([x, end, y4]);\n }\n }\n }\n return results;\n }\n}\n\nexport { Outliner };\n","/* Copyright 2022 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./editor.js\").AnnotationEditor} AnnotationEditor */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_editor_layer.js\").AnnotationEditorLayer} AnnotationEditorLayer */\n\nimport {\n AnnotationEditorParamsType,\n AnnotationEditorPrefix,\n AnnotationEditorType,\n FeatureTest,\n getUuid,\n shadow,\n Util,\n warn,\n} from \"../../shared/util.js\";\nimport {\n fetchData,\n getColorValues,\n getRGB,\n PixelsPerInch,\n} from \"../display_utils.js\";\n\nfunction bindEvents(obj, element, names) {\n for (const name of names) {\n element.addEventListener(name, obj[name].bind(obj));\n }\n}\n\n/**\n * Convert a number between 0 and 100 into an hex number between 0 and 255.\n * @param {number} opacity\n * @return {string}\n */\nfunction opacityToHex(opacity) {\n return Math.round(Math.min(255, Math.max(1, 255 * opacity)))\n .toString(16)\n .padStart(2, \"0\");\n}\n\n/**\n * Class to create some unique ids for the different editors.\n */\nclass IdManager {\n #id = 0;\n\n /**\n * Get a unique id.\n * @returns {string}\n */\n getId() {\n return `${AnnotationEditorPrefix}${this.#id++}`;\n }\n}\n\n/**\n * Class to manage the images used by the editors.\n * The main idea is to try to minimize the memory used by the images.\n * The images are cached and reused when possible\n * We use a refCounter to know when an image is not used anymore but we need to\n * be able to restore an image after a remove+undo, so we keep a file reference\n * or an url one.\n */\nclass ImageManager {\n #baseId = getUuid();\n\n #id = 0;\n\n #cache = null;\n\n static get _isSVGFittingCanvas() {\n // By default, Firefox doesn't rescale without preserving the aspect ratio\n // when drawing an SVG image on a canvas, see https://bugzilla.mozilla.org/1547776.\n // The \"workaround\" is to append \"svgView(preserveAspectRatio(none))\" to the\n // url, but according to comment #15, it seems that it leads to unexpected\n // behavior in Safari.\n const svg = `data:image/svg+xml;charset=UTF-8,<svg viewBox=\"0 0 1 1\" width=\"1\" height=\"1\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"1\" height=\"1\" style=\"fill:red;\"/></svg>`;\n const canvas = new OffscreenCanvas(1, 3);\n const ctx = canvas.getContext(\"2d\");\n const image = new Image();\n image.src = svg;\n const promise = image.decode().then(() => {\n ctx.drawImage(image, 0, 0, 1, 1, 0, 0, 1, 3);\n return new Uint32Array(ctx.getImageData(0, 0, 1, 1).data.buffer)[0] === 0;\n });\n\n return shadow(this, \"_isSVGFittingCanvas\", promise);\n }\n\n async #get(key, rawData) {\n this.#cache ||= new Map();\n let data = this.#cache.get(key);\n if (data === null) {\n // We already tried to load the image but it failed.\n return null;\n }\n if (data?.bitmap) {\n data.refCounter += 1;\n return data;\n }\n try {\n data ||= {\n bitmap: null,\n id: `image_${this.#baseId}_${this.#id++}`,\n refCounter: 0,\n isSvg: false,\n };\n let image;\n if (typeof rawData === \"string\") {\n data.url = rawData;\n image = await fetchData(rawData, \"blob\");\n } else {\n image = data.file = rawData;\n }\n\n if (image.type === \"image/svg+xml\") {\n // Unfortunately, createImageBitmap doesn't work with SVG images.\n // (see https://bugzilla.mozilla.org/1841972).\n const mustRemoveAspectRatioPromise = ImageManager._isSVGFittingCanvas;\n const fileReader = new FileReader();\n const imageElement = new Image();\n const imagePromise = new Promise((resolve, reject) => {\n imageElement.onload = () => {\n data.bitmap = imageElement;\n data.isSvg = true;\n resolve();\n };\n fileReader.onload = async () => {\n const url = (data.svgUrl = fileReader.result);\n // We need to set the preserveAspectRatio to none in order to let\n // the image fits the canvas when resizing.\n imageElement.src = (await mustRemoveAspectRatioPromise)\n ? `${url}#svgView(preserveAspectRatio(none))`\n : url;\n };\n imageElement.onerror = fileReader.onerror = reject;\n });\n fileReader.readAsDataURL(image);\n await imagePromise;\n } else {\n data.bitmap = await createImageBitmap(image);\n }\n data.refCounter = 1;\n } catch (e) {\n console.error(e);\n data = null;\n }\n this.#cache.set(key, data);\n if (data) {\n this.#cache.set(data.id, data);\n }\n return data;\n }\n\n async getFromFile(file) {\n const { lastModified, name, size, type } = file;\n return this.#get(`${lastModified}_${name}_${size}_${type}`, file);\n }\n\n async getFromUrl(url) {\n return this.#get(url, url);\n }\n\n async getFromId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return null;\n }\n if (data.bitmap) {\n data.refCounter += 1;\n return data;\n }\n\n if (data.file) {\n return this.getFromFile(data.file);\n }\n return this.getFromUrl(data.url);\n }\n\n getSvgUrl(id) {\n const data = this.#cache.get(id);\n if (!data?.isSvg) {\n return null;\n }\n return data.svgUrl;\n }\n\n deleteId(id) {\n this.#cache ||= new Map();\n const data = this.#cache.get(id);\n if (!data) {\n return;\n }\n data.refCounter -= 1;\n if (data.refCounter !== 0) {\n return;\n }\n data.bitmap = null;\n }\n\n // We can use the id only if it belongs this manager.\n // We must take care of having the right manager because we can copy/paste\n // some images from other documents, hence it'd be a pity to use an id from an\n // other manager.\n isValidId(id) {\n return id.startsWith(`image_${this.#baseId}_`);\n }\n}\n\n/**\n * Class to handle undo/redo.\n * Commands are just saved in a buffer.\n * If we hit some memory issues we could likely use a circular buffer.\n * It has to be used as a singleton.\n */\nclass CommandManager {\n #commands = [];\n\n #locked = false;\n\n #maxSize;\n\n #position = -1;\n\n constructor(maxSize = 128) {\n this.#maxSize = maxSize;\n }\n\n /**\n * @typedef {Object} addOptions\n * @property {function} cmd\n * @property {function} undo\n * @property {boolean} mustExec\n * @property {number} type\n * @property {boolean} overwriteIfSameType\n * @property {boolean} keepUndo\n */\n\n /**\n * Add a new couple of commands to be used in case of redo/undo.\n * @param {addOptions} options\n */\n add({\n cmd,\n undo,\n mustExec,\n type = NaN,\n overwriteIfSameType = false,\n keepUndo = false,\n }) {\n if (mustExec) {\n cmd();\n }\n\n if (this.#locked) {\n return;\n }\n\n const save = { cmd, undo, type };\n if (this.#position === -1) {\n if (this.#commands.length > 0) {\n // All the commands have been undone and then a new one is added\n // hence we clear the queue.\n this.#commands.length = 0;\n }\n this.#position = 0;\n this.#commands.push(save);\n return;\n }\n\n if (overwriteIfSameType && this.#commands[this.#position].type === type) {\n // For example when we change a color we don't want to\n // be able to undo all the steps, hence we only want to\n // keep the last undoable action in this sequence of actions.\n if (keepUndo) {\n save.undo = this.#commands[this.#position].undo;\n }\n this.#commands[this.#position] = save;\n return;\n }\n\n const next = this.#position + 1;\n if (next === this.#maxSize) {\n this.#commands.splice(0, 1);\n } else {\n this.#position = next;\n if (next < this.#commands.length) {\n this.#commands.splice(next);\n }\n }\n\n this.#commands.push(save);\n }\n\n /**\n * Undo the last command.\n */\n undo() {\n if (this.#position === -1) {\n // Nothing to undo.\n return;\n }\n\n // Avoid to insert something during the undo execution.\n this.#locked = true;\n this.#commands[this.#position].undo();\n this.#locked = false;\n\n this.#position -= 1;\n }\n\n /**\n * Redo the last command.\n */\n redo() {\n if (this.#position < this.#commands.length - 1) {\n this.#position += 1;\n\n // Avoid to insert something during the redo execution.\n this.#locked = true;\n this.#commands[this.#position].cmd();\n this.#locked = false;\n }\n }\n\n /**\n * Check if there is something to undo.\n * @returns {boolean}\n */\n hasSomethingToUndo() {\n return this.#position !== -1;\n }\n\n /**\n * Check if there is something to redo.\n * @returns {boolean}\n */\n hasSomethingToRedo() {\n return this.#position < this.#commands.length - 1;\n }\n\n destroy() {\n this.#commands = null;\n }\n}\n\n/**\n * Class to handle the different keyboards shortcuts we can have on mac or\n * non-mac OSes.\n */\nclass KeyboardManager {\n /**\n * Create a new keyboard manager class.\n * @param {Array<Array>} callbacks - an array containing an array of shortcuts\n * and a callback to call.\n * A shortcut is a string like `ctrl+c` or `mac+ctrl+c` for mac OS.\n */\n constructor(callbacks) {\n this.buffer = [];\n this.callbacks = new Map();\n this.allKeys = new Set();\n\n const { isMac } = FeatureTest.platform;\n for (const [keys, callback, options = {}] of callbacks) {\n for (const key of keys) {\n const isMacKey = key.startsWith(\"mac+\");\n if (isMac && isMacKey) {\n this.callbacks.set(key.slice(4), { callback, options });\n this.allKeys.add(key.split(\"+\").at(-1));\n } else if (!isMac && !isMacKey) {\n this.callbacks.set(key, { callback, options });\n this.allKeys.add(key.split(\"+\").at(-1));\n }\n }\n }\n }\n\n /**\n * Serialize an event into a string in order to match a\n * potential key for a callback.\n * @param {KeyboardEvent} event\n * @returns {string}\n */\n #serialize(event) {\n if (event.altKey) {\n this.buffer.push(\"alt\");\n }\n if (event.ctrlKey) {\n this.buffer.push(\"ctrl\");\n }\n if (event.metaKey) {\n this.buffer.push(\"meta\");\n }\n if (event.shiftKey) {\n this.buffer.push(\"shift\");\n }\n this.buffer.push(event.key);\n const str = this.buffer.join(\"+\");\n this.buffer.length = 0;\n\n return str;\n }\n\n /**\n * Execute a callback, if any, for a given keyboard event.\n * The self is used as `this` in the callback.\n * @param {Object} self\n * @param {KeyboardEvent} event\n * @returns\n */\n exec(self, event) {\n if (!this.allKeys.has(event.key)) {\n return;\n }\n const info = this.callbacks.get(this.#serialize(event));\n if (!info) {\n return;\n }\n const {\n callback,\n options: { bubbles = false, args = [], checker = null },\n } = info;\n\n if (checker && !checker(self, event)) {\n return;\n }\n callback.bind(self, ...args)();\n\n // For example, ctrl+s in a FreeText must be handled by the viewer, hence\n // the event must bubble.\n if (!bubbles) {\n event.stopPropagation();\n event.preventDefault();\n }\n }\n}\n\nclass ColorManager {\n static _colorsMapping = new Map([\n [\"CanvasText\", [0, 0, 0]],\n [\"Canvas\", [255, 255, 255]],\n ]);\n\n get _colors() {\n if (\n typeof PDFJSDev !== \"undefined\" &&\n PDFJSDev.test(\"LIB\") &&\n typeof document === \"undefined\"\n ) {\n return shadow(this, \"_colors\", ColorManager._colorsMapping);\n }\n\n const colors = new Map([\n [\"CanvasText\", null],\n [\"Canvas\", null],\n ]);\n getColorValues(colors);\n return shadow(this, \"_colors\", colors);\n }\n\n /**\n * In High Contrast Mode, the color on the screen is not always the\n * real color used in the pdf.\n * For example in some cases white can appear to be black but when saving\n * we want to have white.\n * @param {string} color\n * @returns {Array<number>}\n */\n convert(color) {\n const rgb = getRGB(color);\n if (!window.matchMedia(\"(forced-colors: active)\").matches) {\n return rgb;\n }\n\n for (const [name, RGB] of this._colors) {\n if (RGB.every((x, i) => x === rgb[i])) {\n return ColorManager._colorsMapping.get(name);\n }\n }\n return rgb;\n }\n\n /**\n * An input element must have its color value as a hex string\n * and not as color name.\n * So this function converts a name into an hex string.\n * @param {string} name\n * @returns {string}\n */\n getHexCode(name) {\n const rgb = this._colors.get(name);\n if (!rgb) {\n return name;\n }\n return Util.makeHexColor(...rgb);\n }\n}\n\n/**\n * A pdf has several pages and each of them when it will rendered\n * will have an AnnotationEditorLayer which will contain the some\n * new Annotations associated to an editor in order to modify them.\n *\n * This class is used to manage all the different layers, editors and\n * some action like copy/paste, undo/redo, ...\n */\nclass AnnotationEditorUIManager {\n #activeEditor = null;\n\n #allEditors = new Map();\n\n #allLayers = new Map();\n\n #altTextManager = null;\n\n #annotationStorage = null;\n\n #commandManager = new CommandManager();\n\n #currentPageIndex = 0;\n\n #deletedAnnotationsElementIds = new Set();\n\n #draggingEditors = null;\n\n #editorTypes = null;\n\n #editorsToRescale = new Set();\n\n #filterFactory = null;\n\n #focusMainContainerTimeoutId = null;\n\n #idManager = new IdManager();\n\n #isEnabled = false;\n\n #isWaiting = false;\n\n #lastActiveElement = null;\n\n #mode = AnnotationEditorType.NONE;\n\n #selectedEditors = new Set();\n\n #pageColors = null;\n\n #boundBlur = this.blur.bind(this);\n\n #boundFocus = this.focus.bind(this);\n\n #boundCopy = this.copy.bind(this);\n\n #boundCut = this.cut.bind(this);\n\n #boundPaste = this.paste.bind(this);\n\n #boundKeydown = this.keydown.bind(this);\n\n #boundOnEditingAction = this.onEditingAction.bind(this);\n\n #boundOnPageChanging = this.onPageChanging.bind(this);\n\n #boundOnScaleChanging = this.onScaleChanging.bind(this);\n\n #boundOnRotationChanging = this.onRotationChanging.bind(this);\n\n #previousStates = {\n isEditing: false,\n isEmpty: true,\n hasSomethingToUndo: false,\n hasSomethingToRedo: false,\n hasSelectedEditor: false,\n };\n\n #translation = [0, 0];\n\n #translationTimeoutId = null;\n\n #container = null;\n\n #viewer = null;\n\n static TRANSLATE_SMALL = 1; // page units.\n\n static TRANSLATE_BIG = 10; // page units.\n\n static get _keyboardManager() {\n const proto = AnnotationEditorUIManager.prototype;\n\n const arrowChecker = self => {\n // If the focused element is an input, we don't want to handle the arrow.\n // For example, sliders can be controlled with the arrow keys.\n return (\n self.#container.contains(document.activeElement) &&\n self.hasSomethingToControl()\n );\n };\n\n const textInputChecker = (_self, { target: el }) => {\n if (el instanceof HTMLInputElement) {\n const { type } = el;\n return type !== \"text\" && type !== \"number\";\n }\n return true;\n };\n\n const small = this.TRANSLATE_SMALL;\n const big = this.TRANSLATE_BIG;\n\n return shadow(\n this,\n \"_keyboardManager\",\n new KeyboardManager([\n [\n [\"ctrl+a\", \"mac+meta+a\"],\n proto.selectAll,\n { checker: textInputChecker },\n ],\n [[\"ctrl+z\", \"mac+meta+z\"], proto.undo, { checker: textInputChecker }],\n [\n // On mac, depending of the OS version, the event.key is either \"z\" or\n // \"Z\" when the user presses \"meta+shift+z\".\n [\n \"ctrl+y\",\n \"ctrl+shift+z\",\n \"mac+meta+shift+z\",\n \"ctrl+shift+Z\",\n \"mac+meta+shift+Z\",\n ],\n proto.redo,\n { checker: textInputChecker },\n ],\n [\n [\n \"Backspace\",\n \"alt+Backspace\",\n \"ctrl+Backspace\",\n \"shift+Backspace\",\n \"mac+Backspace\",\n \"mac+alt+Backspace\",\n \"mac+ctrl+Backspace\",\n \"Delete\",\n \"ctrl+Delete\",\n \"shift+Delete\",\n \"mac+Delete\",\n ],\n proto.delete,\n { checker: textInputChecker },\n ],\n [\n [\"Enter\", \"mac+Enter\"],\n proto.addNewEditorFromKeyboard,\n {\n // Those shortcuts can be used in the toolbar for some other actions\n // like zooming, hence we need to check if the container has the\n // focus.\n checker: (self, { target: el }) =>\n !(el instanceof HTMLButtonElement) &&\n self.#container.contains(el) &&\n !self.isEnterHandled,\n },\n ],\n [\n [\" \", \"mac+ \"],\n proto.addNewEditorFromKeyboard,\n {\n // Those shortcuts can be used in the toolbar for some other actions\n // like zooming, hence we need to check if the container has the\n // focus.\n checker: self => self.#container.contains(document.activeElement),\n },\n ],\n [[\"Escape\", \"mac+Escape\"], proto.unselectAll],\n [\n [\"ArrowLeft\", \"mac+ArrowLeft\"],\n proto.translateSelectedEditors,\n { args: [-small, 0], checker: arrowChecker },\n ],\n [\n [\"ctrl+ArrowLeft\", \"mac+shift+ArrowLeft\"],\n proto.translateSelectedEditors,\n { args: [-big, 0], checker: arrowChecker },\n ],\n [\n [\"ArrowRight\", \"mac+ArrowRight\"],\n proto.translateSelectedEditors,\n { args: [small, 0], checker: arrowChecker },\n ],\n [\n [\"ctrl+ArrowRight\", \"mac+shift+ArrowRight\"],\n proto.translateSelectedEditors,\n { args: [big, 0], checker: arrowChecker },\n ],\n [\n [\"ArrowUp\", \"mac+ArrowUp\"],\n proto.translateSelectedEditors,\n { args: [0, -small], checker: arrowChecker },\n ],\n [\n [\"ctrl+ArrowUp\", \"mac+shift+ArrowUp\"],\n proto.translateSelectedEditors,\n { args: [0, -big], checker: arrowChecker },\n ],\n [\n [\"ArrowDown\", \"mac+ArrowDown\"],\n proto.translateSelectedEditors,\n { args: [0, small], checker: arrowChecker },\n ],\n [\n [\"ctrl+ArrowDown\", \"mac+shift+ArrowDown\"],\n proto.translateSelectedEditors,\n { args: [0, big], checker: arrowChecker },\n ],\n ])\n );\n }\n\n constructor(\n container,\n viewer,\n altTextManager,\n eventBus,\n pdfDocument,\n pageColors\n ) {\n this.#container = container;\n this.#viewer = viewer;\n this.#altTextManager = altTextManager;\n this._eventBus = eventBus;\n this._eventBus._on(\"editingaction\", this.#boundOnEditingAction);\n this._eventBus._on(\"pagechanging\", this.#boundOnPageChanging);\n this._eventBus._on(\"scalechanging\", this.#boundOnScaleChanging);\n this._eventBus._on(\"rotationchanging\", this.#boundOnRotationChanging);\n this.#annotationStorage = pdfDocument.annotationStorage;\n this.#filterFactory = pdfDocument.filterFactory;\n this.#pageColors = pageColors;\n this.viewParameters = {\n realScale: PixelsPerInch.PDF_TO_CSS_UNITS,\n rotation: 0,\n };\n }\n\n destroy() {\n this.#removeKeyboardManager();\n this.#removeFocusManager();\n this._eventBus._off(\"editingaction\", this.#boundOnEditingAction);\n this._eventBus._off(\"pagechanging\", this.#boundOnPageChanging);\n this._eventBus._off(\"scalechanging\", this.#boundOnScaleChanging);\n this._eventBus._off(\"rotationchanging\", this.#boundOnRotationChanging);\n for (const layer of this.#allLayers.values()) {\n layer.destroy();\n }\n this.#allLayers.clear();\n this.#allEditors.clear();\n this.#editorsToRescale.clear();\n this.#activeEditor = null;\n this.#selectedEditors.clear();\n this.#commandManager.destroy();\n this.#altTextManager.destroy();\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n this.#focusMainContainerTimeoutId = null;\n }\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n this.#translationTimeoutId = null;\n }\n }\n\n get hcmFilter() {\n return shadow(\n this,\n \"hcmFilter\",\n this.#pageColors\n ? this.#filterFactory.addHCMFilter(\n this.#pageColors.foreground,\n this.#pageColors.background\n )\n : \"none\"\n );\n }\n\n get direction() {\n return shadow(\n this,\n \"direction\",\n getComputedStyle(this.#container).direction\n );\n }\n\n editAltText(editor) {\n this.#altTextManager?.editAltText(this, editor);\n }\n\n onPageChanging({ pageNumber }) {\n this.#currentPageIndex = pageNumber - 1;\n }\n\n focusMainContainer() {\n this.#container.focus();\n }\n\n findParent(x, y) {\n for (const layer of this.#allLayers.values()) {\n const {\n x: layerX,\n y: layerY,\n width,\n height,\n } = layer.div.getBoundingClientRect();\n if (\n x >= layerX &&\n x <= layerX + width &&\n y >= layerY &&\n y <= layerY + height\n ) {\n return layer;\n }\n }\n return null;\n }\n\n disableUserSelect(value = false) {\n this.#viewer.classList.toggle(\"noUserSelect\", value);\n }\n\n addShouldRescale(editor) {\n this.#editorsToRescale.add(editor);\n }\n\n removeShouldRescale(editor) {\n this.#editorsToRescale.delete(editor);\n }\n\n onScaleChanging({ scale }) {\n this.commitOrRemove();\n this.viewParameters.realScale = scale * PixelsPerInch.PDF_TO_CSS_UNITS;\n for (const editor of this.#editorsToRescale) {\n editor.onScaleChanging();\n }\n }\n\n onRotationChanging({ pagesRotation }) {\n this.commitOrRemove();\n this.viewParameters.rotation = pagesRotation;\n }\n\n /**\n * Add an editor in the annotation storage.\n * @param {AnnotationEditor} editor\n */\n addToAnnotationStorage(editor) {\n if (\n !editor.isEmpty() &&\n this.#annotationStorage &&\n !this.#annotationStorage.has(editor.id)\n ) {\n this.#annotationStorage.setValue(editor.id, editor);\n }\n }\n\n #addFocusManager() {\n window.addEventListener(\"focus\", this.#boundFocus);\n window.addEventListener(\"blur\", this.#boundBlur);\n }\n\n #removeFocusManager() {\n window.removeEventListener(\"focus\", this.#boundFocus);\n window.removeEventListener(\"blur\", this.#boundBlur);\n }\n\n blur() {\n if (!this.hasSelection) {\n return;\n }\n // When several editors are selected and the window loses focus, we want to\n // keep the last active element in order to be able to focus it again when\n // the window gets the focus back but we don't want to trigger any focus\n // callbacks else only one editor will be selected.\n const { activeElement } = document;\n for (const editor of this.#selectedEditors) {\n if (editor.div.contains(activeElement)) {\n this.#lastActiveElement = [editor, activeElement];\n editor._focusEventsAllowed = false;\n break;\n }\n }\n }\n\n focus() {\n if (!this.#lastActiveElement) {\n return;\n }\n const [lastEditor, lastActiveElement] = this.#lastActiveElement;\n this.#lastActiveElement = null;\n lastActiveElement.addEventListener(\n \"focusin\",\n () => {\n lastEditor._focusEventsAllowed = true;\n },\n { once: true }\n );\n lastActiveElement.focus();\n }\n\n #addKeyboardManager() {\n // The keyboard events are caught at the container level in order to be able\n // to execute some callbacks even if the current page doesn't have focus.\n window.addEventListener(\"keydown\", this.#boundKeydown);\n }\n\n #removeKeyboardManager() {\n window.removeEventListener(\"keydown\", this.#boundKeydown);\n }\n\n #addCopyPasteListeners() {\n document.addEventListener(\"copy\", this.#boundCopy);\n document.addEventListener(\"cut\", this.#boundCut);\n document.addEventListener(\"paste\", this.#boundPaste);\n }\n\n #removeCopyPasteListeners() {\n document.removeEventListener(\"copy\", this.#boundCopy);\n document.removeEventListener(\"cut\", this.#boundCut);\n document.removeEventListener(\"paste\", this.#boundPaste);\n }\n\n addEditListeners() {\n this.#addKeyboardManager();\n this.#addCopyPasteListeners();\n }\n\n removeEditListeners() {\n this.#removeKeyboardManager();\n this.#removeCopyPasteListeners();\n }\n\n /**\n * Copy callback.\n * @param {ClipboardEvent} event\n */\n copy(event) {\n event.preventDefault();\n\n // An editor is being edited so just commit it.\n this.#activeEditor?.commitOrRemove();\n\n if (!this.hasSelection) {\n return;\n }\n\n const editors = [];\n for (const editor of this.#selectedEditors) {\n const serialized = editor.serialize(/* isForCopying = */ true);\n if (serialized) {\n editors.push(serialized);\n }\n }\n if (editors.length === 0) {\n return;\n }\n\n event.clipboardData.setData(\"application/pdfjs\", JSON.stringify(editors));\n }\n\n /**\n * Cut callback.\n * @param {ClipboardEvent} event\n */\n cut(event) {\n this.copy(event);\n this.delete();\n }\n\n /**\n * Paste callback.\n * @param {ClipboardEvent} event\n */\n paste(event) {\n event.preventDefault();\n const { clipboardData } = event;\n for (const item of clipboardData.items) {\n for (const editorType of this.#editorTypes) {\n if (editorType.isHandlingMimeForPasting(item.type)) {\n editorType.paste(item, this.currentLayer);\n return;\n }\n }\n }\n\n let data = clipboardData.getData(\"application/pdfjs\");\n if (!data) {\n return;\n }\n\n try {\n data = JSON.parse(data);\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n return;\n }\n\n if (!Array.isArray(data)) {\n return;\n }\n\n this.unselectAll();\n const layer = this.currentLayer;\n\n try {\n const newEditors = [];\n for (const editor of data) {\n const deserializedEditor = layer.deserialize(editor);\n if (!deserializedEditor) {\n return;\n }\n newEditors.push(deserializedEditor);\n }\n\n const cmd = () => {\n for (const editor of newEditors) {\n this.#addEditorToLayer(editor);\n }\n this.#selectEditors(newEditors);\n };\n const undo = () => {\n for (const editor of newEditors) {\n editor.remove();\n }\n };\n this.addCommands({ cmd, undo, mustExec: true });\n } catch (ex) {\n warn(`paste: \"${ex.message}\".`);\n }\n }\n\n /**\n * Keydown callback.\n * @param {KeyboardEvent} event\n */\n keydown(event) {\n if (!this.isEditorHandlingKeyboard) {\n AnnotationEditorUIManager._keyboardManager.exec(this, event);\n }\n }\n\n /**\n * Execute an action for a given name.\n * For example, the user can click on the \"Undo\" entry in the context menu\n * and it'll trigger the undo action.\n * @param {Object} details\n */\n onEditingAction(details) {\n if ([\"undo\", \"redo\", \"delete\", \"selectAll\"].includes(details.name)) {\n this[details.name]();\n }\n }\n\n /**\n * Update the different possible states of this manager, e.g. is there\n * something to undo, redo, ...\n * @param {Object} details\n */\n #dispatchUpdateStates(details) {\n const hasChanged = Object.entries(details).some(\n ([key, value]) => this.#previousStates[key] !== value\n );\n\n if (hasChanged) {\n this._eventBus.dispatch(\"annotationeditorstateschanged\", {\n source: this,\n details: Object.assign(this.#previousStates, details),\n });\n }\n }\n\n #dispatchUpdateUI(details) {\n this._eventBus.dispatch(\"annotationeditorparamschanged\", {\n source: this,\n details,\n });\n }\n\n /**\n * Set the editing state.\n * It can be useful to temporarily disable it when the user is editing a\n * FreeText annotation.\n * @param {boolean} isEditing\n */\n setEditingState(isEditing) {\n if (isEditing) {\n this.#addFocusManager();\n this.#addKeyboardManager();\n this.#addCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: this.#mode !== AnnotationEditorType.NONE,\n isEmpty: this.#isEmpty(),\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n hasSelectedEditor: false,\n });\n } else {\n this.#removeFocusManager();\n this.#removeKeyboardManager();\n this.#removeCopyPasteListeners();\n this.#dispatchUpdateStates({\n isEditing: false,\n });\n this.disableUserSelect(false);\n }\n }\n\n registerEditorTypes(types) {\n if (this.#editorTypes) {\n return;\n }\n this.#editorTypes = types;\n for (const editorType of this.#editorTypes) {\n this.#dispatchUpdateUI(editorType.defaultPropertiesToUpdate);\n }\n }\n\n /**\n * Get an id.\n * @returns {string}\n */\n getId() {\n return this.#idManager.getId();\n }\n\n get currentLayer() {\n return this.#allLayers.get(this.#currentPageIndex);\n }\n\n getLayer(pageIndex) {\n return this.#allLayers.get(pageIndex);\n }\n\n get currentPageIndex() {\n return this.#currentPageIndex;\n }\n\n /**\n * Add a new layer for a page which will contains the editors.\n * @param {AnnotationEditorLayer} layer\n */\n addLayer(layer) {\n this.#allLayers.set(layer.pageIndex, layer);\n if (this.#isEnabled) {\n layer.enable();\n } else {\n layer.disable();\n }\n }\n\n /**\n * Remove a layer.\n * @param {AnnotationEditorLayer} layer\n */\n removeLayer(layer) {\n this.#allLayers.delete(layer.pageIndex);\n }\n\n /**\n * Change the editor mode (None, FreeText, Ink, ...)\n * @param {number} mode\n * @param {string|null} editId\n * @param {boolean} [isFromKeyboard] - true if the mode change is due to a\n * keyboard action.\n */\n updateMode(mode, editId = null, isFromKeyboard = false) {\n if (this.#mode === mode) {\n return;\n }\n this.#mode = mode;\n if (mode === AnnotationEditorType.NONE) {\n this.setEditingState(false);\n this.#disableAll();\n return;\n }\n this.setEditingState(true);\n this.#enableAll();\n this.unselectAll();\n for (const layer of this.#allLayers.values()) {\n layer.updateMode(mode);\n }\n if (!editId && isFromKeyboard) {\n this.addNewEditorFromKeyboard();\n return;\n }\n\n if (!editId) {\n return;\n }\n for (const editor of this.#allEditors.values()) {\n if (editor.annotationElementId === editId) {\n this.setSelected(editor);\n editor.enterInEditMode();\n break;\n }\n }\n }\n\n addNewEditorFromKeyboard() {\n this.currentLayer.addNewEditor();\n }\n\n /**\n * Update the toolbar if it's required to reflect the tool currently used.\n * @param {number} mode\n * @returns {undefined}\n */\n updateToolbar(mode) {\n if (mode === this.#mode) {\n return;\n }\n this._eventBus.dispatch(\"switchannotationeditormode\", {\n source: this,\n mode,\n });\n }\n\n /**\n * Update a parameter in the current editor or globally.\n * @param {number} type\n * @param {*} value\n */\n updateParams(type, value) {\n if (!this.#editorTypes) {\n return;\n }\n if (type === AnnotationEditorParamsType.CREATE) {\n this.currentLayer.addNewEditor();\n return;\n }\n\n for (const editor of this.#selectedEditors) {\n editor.updateParams(type, value);\n }\n\n for (const editorType of this.#editorTypes) {\n editorType.updateDefaultParams(type, value);\n }\n }\n\n enableWaiting(mustWait = false) {\n if (this.#isWaiting === mustWait) {\n return;\n }\n this.#isWaiting = mustWait;\n for (const layer of this.#allLayers.values()) {\n if (mustWait) {\n layer.disableClick();\n } else {\n layer.enableClick();\n }\n layer.div.classList.toggle(\"waiting\", mustWait);\n }\n }\n\n /**\n * Enable all the layers.\n */\n #enableAll() {\n if (!this.#isEnabled) {\n this.#isEnabled = true;\n for (const layer of this.#allLayers.values()) {\n layer.enable();\n }\n }\n }\n\n /**\n * Disable all the layers.\n */\n #disableAll() {\n this.unselectAll();\n if (this.#isEnabled) {\n this.#isEnabled = false;\n for (const layer of this.#allLayers.values()) {\n layer.disable();\n }\n }\n }\n\n /**\n * Get all the editors belonging to a given page.\n * @param {number} pageIndex\n * @returns {Array<AnnotationEditor>}\n */\n getEditors(pageIndex) {\n const editors = [];\n for (const editor of this.#allEditors.values()) {\n if (editor.pageIndex === pageIndex) {\n editors.push(editor);\n }\n }\n return editors;\n }\n\n /**\n * Get an editor with the given id.\n * @param {string} id\n * @returns {AnnotationEditor}\n */\n getEditor(id) {\n return this.#allEditors.get(id);\n }\n\n /**\n * Add a new editor.\n * @param {AnnotationEditor} editor\n */\n addEditor(editor) {\n this.#allEditors.set(editor.id, editor);\n }\n\n /**\n * Remove an editor.\n * @param {AnnotationEditor} editor\n */\n removeEditor(editor) {\n if (editor.div.contains(document.activeElement)) {\n if (this.#focusMainContainerTimeoutId) {\n clearTimeout(this.#focusMainContainerTimeoutId);\n }\n this.#focusMainContainerTimeoutId = setTimeout(() => {\n // When the div is removed from DOM the focus can move on the\n // document.body, so we need to move it back to the main container.\n this.focusMainContainer();\n this.#focusMainContainerTimeoutId = null;\n }, 0);\n }\n this.#allEditors.delete(editor.id);\n this.unselect(editor);\n if (\n !editor.annotationElementId ||\n !this.#deletedAnnotationsElementIds.has(editor.annotationElementId)\n ) {\n this.#annotationStorage?.remove(editor.id);\n }\n }\n\n /**\n * The annotation element with the given id has been deleted.\n * @param {AnnotationEditor} editor\n */\n addDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.add(editor.annotationElementId);\n editor.deleted = true;\n }\n\n /**\n * Check if the annotation element with the given id has been deleted.\n * @param {string} annotationElementId\n * @returns {boolean}\n */\n isDeletedAnnotationElement(annotationElementId) {\n return this.#deletedAnnotationsElementIds.has(annotationElementId);\n }\n\n /**\n * The annotation element with the given id have been restored.\n * @param {AnnotationEditor} editor\n */\n removeDeletedAnnotationElement(editor) {\n this.#deletedAnnotationsElementIds.delete(editor.annotationElementId);\n editor.deleted = false;\n }\n\n /**\n * Add an editor to the layer it belongs to or add it to the global map.\n * @param {AnnotationEditor} editor\n */\n #addEditorToLayer(editor) {\n const layer = this.#allLayers.get(editor.pageIndex);\n if (layer) {\n layer.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n }\n }\n\n /**\n * Set the given editor as the active one.\n * @param {AnnotationEditor} editor\n */\n setActiveEditor(editor) {\n if (this.#activeEditor === editor) {\n return;\n }\n\n this.#activeEditor = editor;\n if (editor) {\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n }\n }\n\n /**\n * Add or remove an editor the current selection.\n * @param {AnnotationEditor} editor\n */\n toggleSelected(editor) {\n if (this.#selectedEditors.has(editor)) {\n this.#selectedEditors.delete(editor);\n editor.unselect();\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection,\n });\n return;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true,\n });\n }\n\n /**\n * Set the last selected editor.\n * @param {AnnotationEditor} editor\n */\n setSelected(editor) {\n for (const ed of this.#selectedEditors) {\n if (ed !== editor) {\n ed.unselect();\n }\n }\n this.#selectedEditors.clear();\n\n this.#selectedEditors.add(editor);\n editor.select();\n this.#dispatchUpdateUI(editor.propertiesToUpdate);\n this.#dispatchUpdateStates({\n hasSelectedEditor: true,\n });\n }\n\n /**\n * Check if the editor is selected.\n * @param {AnnotationEditor} editor\n */\n isSelected(editor) {\n return this.#selectedEditors.has(editor);\n }\n\n get firstSelectedEditor() {\n return this.#selectedEditors.values().next().value;\n }\n\n /**\n * Unselect an editor.\n * @param {AnnotationEditor} editor\n */\n unselect(editor) {\n editor.unselect();\n this.#selectedEditors.delete(editor);\n this.#dispatchUpdateStates({\n hasSelectedEditor: this.hasSelection,\n });\n }\n\n get hasSelection() {\n return this.#selectedEditors.size !== 0;\n }\n\n get isEnterHandled() {\n return (\n this.#selectedEditors.size === 1 &&\n this.firstSelectedEditor.isEnterHandled\n );\n }\n\n /**\n * Undo the last command.\n */\n undo() {\n this.#commandManager.undo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: this.#commandManager.hasSomethingToUndo(),\n hasSomethingToRedo: true,\n isEmpty: this.#isEmpty(),\n });\n }\n\n /**\n * Redo the last undoed command.\n */\n redo() {\n this.#commandManager.redo();\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: this.#commandManager.hasSomethingToRedo(),\n isEmpty: this.#isEmpty(),\n });\n }\n\n /**\n * Add a command to execute (cmd) and another one to undo it.\n * @param {Object} params\n */\n addCommands(params) {\n this.#commandManager.add(params);\n this.#dispatchUpdateStates({\n hasSomethingToUndo: true,\n hasSomethingToRedo: false,\n isEmpty: this.#isEmpty(),\n });\n }\n\n #isEmpty() {\n if (this.#allEditors.size === 0) {\n return true;\n }\n\n if (this.#allEditors.size === 1) {\n for (const editor of this.#allEditors.values()) {\n return editor.isEmpty();\n }\n }\n\n return false;\n }\n\n /**\n * Delete the current editor or all.\n */\n delete() {\n this.commitOrRemove();\n if (!this.hasSelection) {\n return;\n }\n\n const editors = [...this.#selectedEditors];\n const cmd = () => {\n for (const editor of editors) {\n editor.remove();\n }\n };\n const undo = () => {\n for (const editor of editors) {\n this.#addEditorToLayer(editor);\n }\n };\n\n this.addCommands({ cmd, undo, mustExec: true });\n }\n\n commitOrRemove() {\n // An editor is being edited so just commit it.\n this.#activeEditor?.commitOrRemove();\n }\n\n hasSomethingToControl() {\n return this.#activeEditor || this.hasSelection;\n }\n\n /**\n * Select the editors.\n * @param {Array<AnnotationEditor>} editors\n */\n #selectEditors(editors) {\n this.#selectedEditors.clear();\n for (const editor of editors) {\n if (editor.isEmpty()) {\n continue;\n }\n this.#selectedEditors.add(editor);\n editor.select();\n }\n this.#dispatchUpdateStates({ hasSelectedEditor: true });\n }\n\n /**\n * Select all the editors.\n */\n selectAll() {\n for (const editor of this.#selectedEditors) {\n editor.commit();\n }\n this.#selectEditors(this.#allEditors.values());\n }\n\n /**\n * Unselect all the selected editors.\n */\n unselectAll() {\n if (this.#activeEditor) {\n // An editor is being edited so just commit it.\n this.#activeEditor.commitOrRemove();\n return;\n }\n\n if (!this.hasSelection) {\n return;\n }\n for (const editor of this.#selectedEditors) {\n editor.unselect();\n }\n this.#selectedEditors.clear();\n this.#dispatchUpdateStates({\n hasSelectedEditor: false,\n });\n }\n\n translateSelectedEditors(x, y, noCommit = false) {\n if (!noCommit) {\n this.commitOrRemove();\n }\n if (!this.hasSelection) {\n return;\n }\n\n this.#translation[0] += x;\n this.#translation[1] += y;\n const [totalX, totalY] = this.#translation;\n const editors = [...this.#selectedEditors];\n\n // We don't want to have an undo/redo for each translation so we wait a bit\n // before adding the command to the command manager.\n const TIME_TO_WAIT = 1000;\n\n if (this.#translationTimeoutId) {\n clearTimeout(this.#translationTimeoutId);\n }\n\n this.#translationTimeoutId = setTimeout(() => {\n this.#translationTimeoutId = null;\n this.#translation[0] = this.#translation[1] = 0;\n\n this.addCommands({\n cmd: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(totalX, totalY);\n }\n }\n },\n undo: () => {\n for (const editor of editors) {\n if (this.#allEditors.has(editor.id)) {\n editor.translateInPage(-totalX, -totalY);\n }\n }\n },\n mustExec: false,\n });\n }, TIME_TO_WAIT);\n\n for (const editor of editors) {\n editor.translateInPage(x, y);\n }\n }\n\n /**\n * Set up the drag session for moving the selected editors.\n */\n setUpDragSession() {\n // Note: don't use any references to the editor's parent which can be null\n // if the editor belongs to a destroyed page.\n if (!this.hasSelection) {\n return;\n }\n // Avoid to have spurious text selection in the text layer when dragging.\n this.disableUserSelect(true);\n this.#draggingEditors = new Map();\n for (const editor of this.#selectedEditors) {\n this.#draggingEditors.set(editor, {\n savedX: editor.x,\n savedY: editor.y,\n savedPageIndex: editor.pageIndex,\n newX: 0,\n newY: 0,\n newPageIndex: -1,\n });\n }\n }\n\n /**\n * Ends the drag session.\n * @returns {boolean} true if at least one editor has been moved.\n */\n endDragSession() {\n if (!this.#draggingEditors) {\n return false;\n }\n this.disableUserSelect(false);\n const map = this.#draggingEditors;\n this.#draggingEditors = null;\n let mustBeAddedInUndoStack = false;\n\n for (const [{ x, y, pageIndex }, value] of map) {\n value.newX = x;\n value.newY = y;\n value.newPageIndex = pageIndex;\n mustBeAddedInUndoStack ||=\n x !== value.savedX ||\n y !== value.savedY ||\n pageIndex !== value.savedPageIndex;\n }\n\n if (!mustBeAddedInUndoStack) {\n return false;\n }\n\n const move = (editor, x, y, pageIndex) => {\n if (this.#allEditors.has(editor.id)) {\n // The editor can be undone/redone on a page which is not visible (and\n // which potentially has no annotation editor layer), hence we need to\n // use the pageIndex instead of the parent.\n const parent = this.#allLayers.get(pageIndex);\n if (parent) {\n editor._setParentAndPosition(parent, x, y);\n } else {\n editor.pageIndex = pageIndex;\n editor.x = x;\n editor.y = y;\n }\n }\n };\n\n this.addCommands({\n cmd: () => {\n for (const [editor, { newX, newY, newPageIndex }] of map) {\n move(editor, newX, newY, newPageIndex);\n }\n },\n undo: () => {\n for (const [editor, { savedX, savedY, savedPageIndex }] of map) {\n move(editor, savedX, savedY, savedPageIndex);\n }\n },\n mustExec: true,\n });\n\n return true;\n }\n\n /**\n * Drag the set of selected editors.\n * @param {number} tx\n * @param {number} ty\n */\n dragSelectedEditors(tx, ty) {\n if (!this.#draggingEditors) {\n return;\n }\n for (const editor of this.#draggingEditors.keys()) {\n editor.drag(tx, ty);\n }\n }\n\n /**\n * Rebuild the editor (usually on undo/redo actions) on a potentially\n * non-rendered page.\n * @param {AnnotationEditor} editor\n */\n rebuild(editor) {\n if (editor.parent === null) {\n const parent = this.getLayer(editor.pageIndex);\n if (parent) {\n parent.changeParent(editor);\n parent.addOrRebuild(editor);\n } else {\n this.addEditor(editor);\n this.addToAnnotationStorage(editor);\n editor.rebuild();\n }\n } else {\n editor.parent.addOrRebuild(editor);\n }\n }\n\n get isEditorHandlingKeyboard() {\n return (\n this.getActive()?.shouldGetKeyboardEvents() ||\n (this.#selectedEditors.size === 1 &&\n this.firstSelectedEditor.shouldGetKeyboardEvents())\n );\n }\n\n /**\n * Is the current editor the one passed as argument?\n * @param {AnnotationEditor} editor\n * @returns\n */\n isActive(editor) {\n return this.#activeEditor === editor;\n }\n\n /**\n * Get the current active editor.\n * @returns {AnnotationEditor|null}\n */\n getActive() {\n return this.#activeEditor;\n }\n\n /**\n * Get the current editor mode.\n * @returns {number}\n */\n getMode() {\n return this.#mode;\n }\n\n get imageManager() {\n return shadow(this, \"imageManager\", new ImageManager());\n }\n}\n\nexport {\n AnnotationEditorUIManager,\n bindEvents,\n ColorManager,\n CommandManager,\n KeyboardManager,\n opacityToHex,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n assert,\n PromiseCapability,\n warn,\n} from \"../shared/util.js\";\nimport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n validateResponseStatus,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./fetch_stream.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nfunction createFetchOptions(headers, withCredentials, abortController) {\n return {\n method: \"GET\",\n headers,\n signal: abortController.signal,\n mode: \"cors\",\n credentials: withCredentials ? \"include\" : \"same-origin\",\n redirect: \"follow\",\n };\n}\n\nfunction createHeaders(httpHeaders) {\n const headers = new Headers();\n for (const property in httpHeaders) {\n const value = httpHeaders[property];\n if (value === undefined) {\n continue;\n }\n headers.append(property, value);\n }\n return headers;\n}\n\nfunction getArrayBuffer(val) {\n if (val instanceof Uint8Array) {\n return val.buffer;\n }\n if (val instanceof ArrayBuffer) {\n return val;\n }\n warn(`getArrayBuffer - unexpected data format: ${val}`);\n return new Uint8Array(val).buffer;\n}\n\n/** @implements {IPDFStream} */\nclass PDFFetchStream {\n constructor(source) {\n this.source = source;\n this.isHttp = /^https?:/i.test(source.url);\n this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\n\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFFetchStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = new PDFFetchStreamReader(this);\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFFetchStreamRangeReader(this, begin, end);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFFetchStreamReader {\n constructor(stream) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n this._filename = null;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._contentLength = source.length;\n this._headersCapability = new PromiseCapability();\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._abortController = new AbortController();\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n\n this._headers = createHeaders(this._stream.httpHeaders);\n\n const url = source.url;\n fetch(\n url,\n createFetchOptions(\n this._headers,\n this._withCredentials,\n this._abortController\n )\n )\n .then(response => {\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._reader = response.body.getReader();\n this._headersCapability.resolve();\n\n const getResponseHeader = name => {\n return response.headers.get(name);\n };\n const { allowRangeRequests, suggestedLength } =\n validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: this._stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n this._isRangeSupported = allowRangeRequests;\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n\n // We need to stop reading when range is supported and streaming is\n // disabled.\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this.cancel(new AbortException(\"Streaming is disabled.\"));\n }\n })\n .catch(this._headersCapability.reject);\n\n this.onProgress = null;\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._headersCapability.promise;\n const { value, done } = await this._reader.read();\n if (done) {\n return { value, done };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength,\n });\n\n return { value: getArrayBuffer(value), done: false };\n }\n\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFFetchStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._reader = null;\n this._loaded = 0;\n const source = stream.source;\n this._withCredentials = source.withCredentials || false;\n this._readCapability = new PromiseCapability();\n this._isStreamingSupported = !source.disableStream;\n\n this._abortController = new AbortController();\n this._headers = createHeaders(this._stream.httpHeaders);\n this._headers.append(\"Range\", `bytes=${begin}-${end - 1}`);\n\n const url = source.url;\n fetch(\n url,\n createFetchOptions(\n this._headers,\n this._withCredentials,\n this._abortController\n )\n )\n .then(response => {\n if (!validateResponseStatus(response.status)) {\n throw createResponseStatusError(response.status, url);\n }\n this._readCapability.resolve();\n this._reader = response.body.getReader();\n })\n .catch(this._readCapability.reject);\n\n this.onProgress = null;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n const { value, done } = await this._reader.read();\n if (done) {\n return { value, done };\n }\n this._loaded += value.byteLength;\n this.onProgress?.({ loaded: this._loaded });\n\n return { value: getArrayBuffer(value), done: false };\n }\n\n cancel(reason) {\n this._reader?.cancel(reason);\n this._abortController.abort();\n }\n}\n\nexport { PDFFetchStream };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n bytesToString,\n FeatureTest,\n isNodeJS,\n shadow,\n string32,\n unreachable,\n warn,\n} from \"../shared/util.js\";\n\nclass FontLoader {\n #systemFonts = new Set();\n\n constructor({\n ownerDocument = globalThis.document,\n styleElement = null, // For testing only.\n }) {\n this._document = ownerDocument;\n\n this.nativeFontFaces = new Set();\n this.styleElement =\n typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")\n ? styleElement\n : null;\n\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"MOZCENTRAL\")) {\n this.loadingRequests = [];\n this.loadTestFontId = 0;\n }\n }\n\n addNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.add(nativeFontFace);\n this._document.fonts.add(nativeFontFace);\n }\n\n removeNativeFontFace(nativeFontFace) {\n this.nativeFontFaces.delete(nativeFontFace);\n this._document.fonts.delete(nativeFontFace);\n }\n\n insertRule(rule) {\n if (!this.styleElement) {\n this.styleElement = this._document.createElement(\"style\");\n this._document.documentElement\n .getElementsByTagName(\"head\")[0]\n .append(this.styleElement);\n }\n const styleSheet = this.styleElement.sheet;\n styleSheet.insertRule(rule, styleSheet.cssRules.length);\n }\n\n clear() {\n for (const nativeFontFace of this.nativeFontFaces) {\n this._document.fonts.delete(nativeFontFace);\n }\n this.nativeFontFaces.clear();\n this.#systemFonts.clear();\n\n if (this.styleElement) {\n // Note: ChildNode.remove doesn't throw if the parentNode is undefined.\n this.styleElement.remove();\n this.styleElement = null;\n }\n }\n\n async loadSystemFont({ systemFontInfo: info, _inspectFont }) {\n if (!info || this.#systemFonts.has(info.loadedName)) {\n return;\n }\n assert(\n !this.disableFontFace,\n \"loadSystemFont shouldn't be called when `disableFontFace` is set.\"\n );\n\n if (this.isFontLoadingAPISupported) {\n const { loadedName, src, style } = info;\n const fontFace = new FontFace(loadedName, src, style);\n this.addNativeFontFace(fontFace);\n try {\n await fontFace.load();\n this.#systemFonts.add(loadedName);\n _inspectFont?.(info);\n } catch {\n warn(\n `Cannot load system font: ${info.baseFontName}, installing it could help to improve PDF rendering.`\n );\n\n this.removeNativeFontFace(fontFace);\n }\n return;\n }\n\n unreachable(\n \"Not implemented: loadSystemFont without the Font Loading API.\"\n );\n }\n\n async bind(font) {\n // Add the font to the DOM only once; skip if the font is already loaded.\n if (font.attached || (font.missingFile && !font.systemFontInfo)) {\n return;\n }\n font.attached = true;\n\n if (font.systemFontInfo) {\n await this.loadSystemFont(font);\n return;\n }\n\n if (this.isFontLoadingAPISupported) {\n const nativeFontFace = font.createNativeFontFace();\n if (nativeFontFace) {\n this.addNativeFontFace(nativeFontFace);\n try {\n await nativeFontFace.loaded;\n } catch (ex) {\n warn(`Failed to load font '${nativeFontFace.family}': '${ex}'.`);\n\n // When font loading failed, fall back to the built-in font renderer.\n font.disableFontFace = true;\n throw ex;\n }\n }\n return; // The font was, asynchronously, loaded.\n }\n\n // !this.isFontLoadingAPISupported\n const rule = font.createFontFaceRule();\n if (rule) {\n this.insertRule(rule);\n\n if (this.isSyncFontLoadingSupported) {\n return; // The font was, synchronously, loaded.\n }\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: async font loading\");\n }\n await new Promise(resolve => {\n const request = this._queueLoadingCallback(resolve);\n this._prepareFontLoadEvent(font, request);\n });\n // The font was, asynchronously, loaded.\n }\n }\n\n get isFontLoadingAPISupported() {\n const hasFonts = !!this._document?.fonts;\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n return shadow(\n this,\n \"isFontLoadingAPISupported\",\n hasFonts && !this.styleElement\n );\n }\n return shadow(this, \"isFontLoadingAPISupported\", hasFonts);\n }\n\n get isSyncFontLoadingSupported() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n return shadow(this, \"isSyncFontLoadingSupported\", true);\n }\n\n let supported = false;\n if (typeof PDFJSDev === \"undefined\" || !PDFJSDev.test(\"CHROME\")) {\n if (isNodeJS) {\n // Node.js - we can pretend that sync font loading is supported.\n supported = true;\n } else if (\n typeof navigator !== \"undefined\" &&\n typeof navigator?.userAgent === \"string\" &&\n // User agent string sniffing is bad, but there is no reliable way to\n // tell if the font is fully loaded and ready to be used with canvas.\n /Mozilla\\/5.0.*?rv:\\d+.*? Gecko/.test(navigator.userAgent)\n ) {\n // Firefox, from version 14, supports synchronous font loading.\n supported = true;\n }\n }\n return shadow(this, \"isSyncFontLoadingSupported\", supported);\n }\n\n _queueLoadingCallback(callback) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: _queueLoadingCallback\");\n }\n\n function completeRequest() {\n assert(!request.done, \"completeRequest() cannot be called twice.\");\n request.done = true;\n\n // Sending all completed requests in order of how they were queued.\n while (loadingRequests.length > 0 && loadingRequests[0].done) {\n const otherRequest = loadingRequests.shift();\n setTimeout(otherRequest.callback, 0);\n }\n }\n\n const { loadingRequests } = this;\n const request = {\n done: false,\n complete: completeRequest,\n callback,\n };\n loadingRequests.push(request);\n return request;\n }\n\n get _loadTestFont() {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: _loadTestFont\");\n }\n\n // This is a CFF font with 1 glyph for '.' that fills its entire width\n // and height.\n const testFont = atob(\n \"T1RUTwALAIAAAwAwQ0ZGIDHtZg4AAAOYAAAAgUZGVE1lkzZwAAAEHAAAABxHREVGABQA\" +\n \"FQAABDgAAAAeT1MvMlYNYwkAAAEgAAAAYGNtYXABDQLUAAACNAAAAUJoZWFk/xVFDQAA\" +\n \"ALwAAAA2aGhlYQdkA+oAAAD0AAAAJGhtdHgD6AAAAAAEWAAAAAZtYXhwAAJQAAAAARgA\" +\n \"AAAGbmFtZVjmdH4AAAGAAAAAsXBvc3T/hgAzAAADeAAAACAAAQAAAAEAALZRFsRfDzz1\" +\n \"AAsD6AAAAADOBOTLAAAAAM4KHDwAAAAAA+gDIQAAAAgAAgAAAAAAAAABAAADIQAAAFoD\" +\n \"6AAAAAAD6AABAAAAAAAAAAAAAAAAAAAAAQAAUAAAAgAAAAQD6AH0AAUAAAKKArwAAACM\" +\n \"AooCvAAAAeAAMQECAAACAAYJAAAAAAAAAAAAAQAAAAAAAAAAAAAAAFBmRWQAwAAuAC4D\" +\n \"IP84AFoDIQAAAAAAAQAAAAAAAAAAACAAIAABAAAADgCuAAEAAAAAAAAAAQAAAAEAAAAA\" +\n \"AAEAAQAAAAEAAAAAAAIAAQAAAAEAAAAAAAMAAQAAAAEAAAAAAAQAAQAAAAEAAAAAAAUA\" +\n \"AQAAAAEAAAAAAAYAAQAAAAMAAQQJAAAAAgABAAMAAQQJAAEAAgABAAMAAQQJAAIAAgAB\" +\n \"AAMAAQQJAAMAAgABAAMAAQQJAAQAAgABAAMAAQQJAAUAAgABAAMAAQQJAAYAAgABWABY\" +\n \"AAAAAAAAAwAAAAMAAAAcAAEAAAAAADwAAwABAAAAHAAEACAAAAAEAAQAAQAAAC7//wAA\" +\n \"AC7////TAAEAAAAAAAABBgAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA\" +\n \"AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMAAAAAAAD/gwAyAAAAAQAAAAAAAAAAAAAAAAAA\" +\n \"AAABAAQEAAEBAQJYAAEBASH4DwD4GwHEAvgcA/gXBIwMAYuL+nz5tQXkD5j3CBLnEQAC\" +\n \"AQEBIVhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYAAABAQAADwACAQEEE/t3\" +\n \"Dov6fAH6fAT+fPp8+nwHDosMCvm1Cvm1DAz6fBQAAAAAAAABAAAAAMmJbzEAAAAAzgTj\" +\n \"FQAAAADOBOQpAAEAAAAAAAAADAAUAAQAAAABAAAAAgABAAAAAAAAAAAD6AAAAAAAAA==\"\n );\n return shadow(this, \"_loadTestFont\", testFont);\n }\n\n _prepareFontLoadEvent(font, request) {\n if (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\"Not implemented: _prepareFontLoadEvent\");\n }\n\n /** Hack begin */\n // There's currently no event when a font has finished downloading so the\n // following code is a dirty hack to 'guess' when a font is ready.\n // It's assumed fonts are loaded in order, so add a known test font after\n // the desired fonts and then test for the loading of that test font.\n\n function int32(data, offset) {\n return (\n (data.charCodeAt(offset) << 24) |\n (data.charCodeAt(offset + 1) << 16) |\n (data.charCodeAt(offset + 2) << 8) |\n (data.charCodeAt(offset + 3) & 0xff)\n );\n }\n function spliceString(s, offset, remove, insert) {\n const chunk1 = s.substring(0, offset);\n const chunk2 = s.substring(offset + remove);\n return chunk1 + insert + chunk2;\n }\n let i, ii;\n\n // The temporary canvas is used to determine if fonts are loaded.\n const canvas = this._document.createElement(\"canvas\");\n canvas.width = 1;\n canvas.height = 1;\n const ctx = canvas.getContext(\"2d\");\n\n let called = 0;\n function isFontReady(name, callback) {\n // With setTimeout clamping this gives the font ~100ms to load.\n if (++called > 30) {\n warn(\"Load test font never loaded.\");\n callback();\n return;\n }\n ctx.font = \"30px \" + name;\n ctx.fillText(\".\", 0, 20);\n const imageData = ctx.getImageData(0, 0, 1, 1);\n if (imageData.data[3] > 0) {\n callback();\n return;\n }\n setTimeout(isFontReady.bind(null, name, callback));\n }\n\n const loadTestFontId = `lt${Date.now()}${this.loadTestFontId++}`;\n // Chromium seems to cache fonts based on a hash of the actual font data,\n // so the font must be modified for each load test else it will appear to\n // be loaded already.\n // TODO: This could maybe be made faster by avoiding the btoa of the full\n // font by splitting it in chunks before hand and padding the font id.\n let data = this._loadTestFont;\n const COMMENT_OFFSET = 976; // has to be on 4 byte boundary (for checksum)\n data = spliceString(\n data,\n COMMENT_OFFSET,\n loadTestFontId.length,\n loadTestFontId\n );\n // CFF checksum is important for IE, adjusting it\n const CFF_CHECKSUM_OFFSET = 16;\n const XXXX_VALUE = 0x58585858; // the \"comment\" filled with 'X'\n let checksum = int32(data, CFF_CHECKSUM_OFFSET);\n for (i = 0, ii = loadTestFontId.length - 3; i < ii; i += 4) {\n checksum = (checksum - XXXX_VALUE + int32(loadTestFontId, i)) | 0;\n }\n if (i < loadTestFontId.length) {\n // align to 4 bytes boundary\n checksum = (checksum - XXXX_VALUE + int32(loadTestFontId + \"XXX\", i)) | 0;\n }\n data = spliceString(data, CFF_CHECKSUM_OFFSET, 4, string32(checksum));\n\n const url = `url(data:font/opentype;base64,${btoa(data)});`;\n const rule = `@font-face {font-family:\"${loadTestFontId}\";src:${url}}`;\n this.insertRule(rule);\n\n const div = this._document.createElement(\"div\");\n div.style.visibility = \"hidden\";\n div.style.width = div.style.height = \"10px\";\n div.style.position = \"absolute\";\n div.style.top = div.style.left = \"0px\";\n\n for (const name of [font.loadedName, loadTestFontId]) {\n const span = this._document.createElement(\"span\");\n span.textContent = \"Hi\";\n span.style.fontFamily = name;\n div.append(span);\n }\n this._document.body.append(div);\n\n isFontReady(loadTestFontId, () => {\n div.remove();\n request.complete();\n });\n /** Hack end */\n }\n}\n\nclass FontFaceObject {\n constructor(\n translatedData,\n {\n isEvalSupported = true,\n disableFontFace = false,\n ignoreErrors = false,\n inspectFont = null,\n }\n ) {\n this.compiledGlyphs = Object.create(null);\n // importing translated data\n for (const i in translatedData) {\n this[i] = translatedData[i];\n }\n this.isEvalSupported = isEvalSupported !== false;\n this.disableFontFace = disableFontFace === true;\n this.ignoreErrors = ignoreErrors === true;\n this._inspectFont = inspectFont;\n }\n\n createNativeFontFace() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n let nativeFontFace;\n if (!this.cssFontInfo) {\n nativeFontFace = new FontFace(this.loadedName, this.data, {});\n } else {\n const css = {\n weight: this.cssFontInfo.fontWeight,\n };\n if (this.cssFontInfo.italicAngle) {\n css.style = `oblique ${this.cssFontInfo.italicAngle}deg`;\n }\n nativeFontFace = new FontFace(\n this.cssFontInfo.fontFamily,\n this.data,\n css\n );\n }\n\n this._inspectFont?.(this);\n return nativeFontFace;\n }\n\n createFontFaceRule() {\n if (!this.data || this.disableFontFace) {\n return null;\n }\n const data = bytesToString(this.data);\n // Add the @font-face rule to the document.\n const url = `url(data:${this.mimetype};base64,${btoa(data)});`;\n let rule;\n if (!this.cssFontInfo) {\n rule = `@font-face {font-family:\"${this.loadedName}\";src:${url}}`;\n } else {\n let css = `font-weight: ${this.cssFontInfo.fontWeight};`;\n if (this.cssFontInfo.italicAngle) {\n css += `font-style: oblique ${this.cssFontInfo.italicAngle}deg;`;\n }\n rule = `@font-face {font-family:\"${this.cssFontInfo.fontFamily}\";${css}src:${url}}`;\n }\n\n this._inspectFont?.(this, url);\n return rule;\n }\n\n getPathGenerator(objs, character) {\n if (this.compiledGlyphs[character] !== undefined) {\n return this.compiledGlyphs[character];\n }\n\n let cmds;\n try {\n cmds = objs.get(this.loadedName + \"_path_\" + character);\n } catch (ex) {\n if (!this.ignoreErrors) {\n throw ex;\n }\n warn(`getPathGenerator - ignoring character: \"${ex}\".`);\n\n return (this.compiledGlyphs[character] = function (c, size) {\n // No-op function, to allow rendering to continue.\n });\n }\n\n // If we can, compile cmds into JS for MAXIMUM SPEED...\n if (this.isEvalSupported && FeatureTest.isEvalSupported) {\n const jsBuf = [];\n for (const current of cmds) {\n const args = current.args !== undefined ? current.args.join(\",\") : \"\";\n jsBuf.push(\"c.\", current.cmd, \"(\", args, \");\\n\");\n }\n // eslint-disable-next-line no-new-func\n return (this.compiledGlyphs[character] = new Function(\n \"c\",\n \"size\",\n jsBuf.join(\"\")\n ));\n }\n // ... but fall back on using Function.prototype.apply() if we're\n // blocked from using eval() for whatever reason (like CSP policies).\n return (this.compiledGlyphs[character] = function (c, size) {\n for (const current of cmds) {\n if (current.cmd === \"scale\") {\n current.args = [size, -size];\n }\n // eslint-disable-next-line prefer-spread\n c[current.cmd].apply(c, current.args);\n }\n });\n }\n}\n\nexport { FontFaceObject, FontLoader };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { objectFromMap } from \"../shared/util.js\";\n\nclass Metadata {\n #metadataMap;\n\n #data;\n\n constructor({ parsedData, rawData }) {\n this.#metadataMap = parsedData;\n this.#data = rawData;\n }\n\n getRaw() {\n return this.#data;\n }\n\n get(name) {\n return this.#metadataMap.get(name) ?? null;\n }\n\n getAll() {\n return objectFromMap(this.#metadataMap);\n }\n\n has(name) {\n return this.#metadataMap.has(name);\n }\n}\n\nexport { Metadata };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { assert, PromiseCapability, stringToBytes } from \"../shared/util.js\";\nimport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./network.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nconst OK_RESPONSE = 200;\nconst PARTIAL_CONTENT_RESPONSE = 206;\n\nfunction getArrayBuffer(xhr) {\n const data = xhr.response;\n if (typeof data !== \"string\") {\n return data;\n }\n return stringToBytes(data).buffer;\n}\n\nclass NetworkManager {\n constructor(url, args = {}) {\n this.url = url;\n this.isHttp = /^https?:/i.test(url);\n this.httpHeaders = (this.isHttp && args.httpHeaders) || Object.create(null);\n this.withCredentials = args.withCredentials || false;\n\n this.currXhrId = 0;\n this.pendingRequests = Object.create(null);\n }\n\n requestRange(begin, end, listeners) {\n const args = {\n begin,\n end,\n };\n for (const prop in listeners) {\n args[prop] = listeners[prop];\n }\n return this.request(args);\n }\n\n requestFull(listeners) {\n return this.request(listeners);\n }\n\n request(args) {\n const xhr = new XMLHttpRequest();\n const xhrId = this.currXhrId++;\n const pendingRequest = (this.pendingRequests[xhrId] = { xhr });\n\n xhr.open(\"GET\", this.url);\n xhr.withCredentials = this.withCredentials;\n for (const property in this.httpHeaders) {\n const value = this.httpHeaders[property];\n if (value === undefined) {\n continue;\n }\n xhr.setRequestHeader(property, value);\n }\n if (this.isHttp && \"begin\" in args && \"end\" in args) {\n xhr.setRequestHeader(\"Range\", `bytes=${args.begin}-${args.end - 1}`);\n pendingRequest.expectedStatus = PARTIAL_CONTENT_RESPONSE;\n } else {\n pendingRequest.expectedStatus = OK_RESPONSE;\n }\n xhr.responseType = \"arraybuffer\";\n\n if (args.onError) {\n xhr.onerror = function (evt) {\n args.onError(xhr.status);\n };\n }\n xhr.onreadystatechange = this.onStateChange.bind(this, xhrId);\n xhr.onprogress = this.onProgress.bind(this, xhrId);\n\n pendingRequest.onHeadersReceived = args.onHeadersReceived;\n pendingRequest.onDone = args.onDone;\n pendingRequest.onError = args.onError;\n pendingRequest.onProgress = args.onProgress;\n\n xhr.send(null);\n\n return xhrId;\n }\n\n onProgress(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return; // Maybe abortRequest was called...\n }\n pendingRequest.onProgress?.(evt);\n }\n\n onStateChange(xhrId, evt) {\n const pendingRequest = this.pendingRequests[xhrId];\n if (!pendingRequest) {\n return; // Maybe abortRequest was called...\n }\n\n const xhr = pendingRequest.xhr;\n if (xhr.readyState >= 2 && pendingRequest.onHeadersReceived) {\n pendingRequest.onHeadersReceived();\n delete pendingRequest.onHeadersReceived;\n }\n\n if (xhr.readyState !== 4) {\n return;\n }\n\n if (!(xhrId in this.pendingRequests)) {\n // The XHR request might have been aborted in onHeadersReceived()\n // callback, in which case we should abort request.\n return;\n }\n\n delete this.pendingRequests[xhrId];\n\n // Success status == 0 can be on ftp, file and other protocols.\n if (xhr.status === 0 && this.isHttp) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n const xhrStatus = xhr.status || OK_RESPONSE;\n\n // From http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.35.2:\n // \"A server MAY ignore the Range header\". This means it's possible to\n // get a 200 rather than a 206 response from a range request.\n const ok_response_on_range_request =\n xhrStatus === OK_RESPONSE &&\n pendingRequest.expectedStatus === PARTIAL_CONTENT_RESPONSE;\n\n if (\n !ok_response_on_range_request &&\n xhrStatus !== pendingRequest.expectedStatus\n ) {\n pendingRequest.onError?.(xhr.status);\n return;\n }\n\n const chunk = getArrayBuffer(xhr);\n if (xhrStatus === PARTIAL_CONTENT_RESPONSE) {\n const rangeHeader = xhr.getResponseHeader(\"Content-Range\");\n const matches = /bytes (\\d+)-(\\d+)\\/(\\d+)/.exec(rangeHeader);\n pendingRequest.onDone({\n begin: parseInt(matches[1], 10),\n chunk,\n });\n } else if (chunk) {\n pendingRequest.onDone({\n begin: 0,\n chunk,\n });\n } else {\n pendingRequest.onError?.(xhr.status);\n }\n }\n\n getRequestXhr(xhrId) {\n return this.pendingRequests[xhrId].xhr;\n }\n\n isPendingRequest(xhrId) {\n return xhrId in this.pendingRequests;\n }\n\n abortRequest(xhrId) {\n const xhr = this.pendingRequests[xhrId].xhr;\n delete this.pendingRequests[xhrId];\n xhr.abort();\n }\n}\n\n/** @implements {IPDFStream} */\nclass PDFNetworkStream {\n constructor(source) {\n this._source = source;\n this._manager = new NetworkManager(source.url, {\n httpHeaders: source.httpHeaders,\n withCredentials: source.withCredentials,\n });\n this._rangeChunkSize = source.rangeChunkSize;\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n _onRangeRequestReaderClosed(reader) {\n const i = this._rangeRequestReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeRequestReaders.splice(i, 1);\n }\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFNetworkStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = new PDFNetworkStreamFullRequestReader(\n this._manager,\n this._source\n );\n return this._fullRequestReader;\n }\n\n getRangeReader(begin, end) {\n const reader = new PDFNetworkStreamRangeRequestReader(\n this._manager,\n begin,\n end\n );\n reader.onClosed = this._onRangeRequestReaderClosed.bind(this);\n this._rangeRequestReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFNetworkStreamFullRequestReader {\n constructor(manager, source) {\n this._manager = manager;\n\n const args = {\n onHeadersReceived: this._onHeadersReceived.bind(this),\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this),\n };\n this._url = source.url;\n this._fullRequestId = manager.requestFull(args);\n this._headersReceivedCapability = new PromiseCapability();\n this._disableRange = source.disableRange || false;\n this._contentLength = source.length; // Optional\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = false;\n this._isRangeSupported = false;\n\n this._cachedChunks = [];\n this._requests = [];\n this._done = false;\n this._storedError = undefined;\n this._filename = null;\n\n this.onProgress = null;\n }\n\n _onHeadersReceived() {\n const fullRequestXhrId = this._fullRequestId;\n const fullRequestXhr = this._manager.getRequestXhr(fullRequestXhrId);\n\n const getResponseHeader = name => {\n return fullRequestXhr.getResponseHeader(name);\n };\n const { allowRangeRequests, suggestedLength } =\n validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: this._manager.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n if (allowRangeRequests) {\n this._isRangeSupported = true;\n }\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n\n if (this._isRangeSupported) {\n // NOTE: by cancelling the full request, and then issuing range\n // requests, there will be an issue for sites where you can only\n // request the pdf once. However, if this is the case, then the\n // server should not be returning that it can support range requests.\n this._manager.abortRequest(fullRequestXhrId);\n }\n\n this._headersReceivedCapability.resolve();\n }\n\n _onDone(data) {\n if (data) {\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({ value: data.chunk, done: false });\n } else {\n this._cachedChunks.push(data.chunk);\n }\n }\n this._done = true;\n if (this._cachedChunks.length > 0) {\n return;\n }\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n }\n\n _onError(status) {\n this._storedError = createResponseStatusError(status, this._url);\n this._headersReceivedCapability.reject(this._storedError);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._cachedChunks.length = 0;\n }\n\n _onProgress(evt) {\n this.onProgress?.({\n loaded: evt.loaded,\n total: evt.lengthComputable ? evt.total : this._contentLength,\n });\n }\n\n get filename() {\n return this._filename;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get headersReady() {\n return this._headersReceivedCapability.promise;\n }\n\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._cachedChunks.length > 0) {\n const chunk = this._cachedChunks.shift();\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = new PromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n this._headersReceivedCapability.reject(reason);\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._fullRequestId)) {\n this._manager.abortRequest(this._fullRequestId);\n }\n this._fullRequestReader = null;\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFNetworkStreamRangeRequestReader {\n constructor(manager, begin, end) {\n this._manager = manager;\n\n const args = {\n onDone: this._onDone.bind(this),\n onError: this._onError.bind(this),\n onProgress: this._onProgress.bind(this),\n };\n this._url = manager.url;\n this._requestId = manager.requestRange(begin, end, args);\n this._requests = [];\n this._queuedChunk = null;\n this._done = false;\n this._storedError = undefined;\n\n this.onProgress = null;\n this.onClosed = null;\n }\n\n _close() {\n this.onClosed?.(this);\n }\n\n _onDone(data) {\n const chunk = data.chunk;\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false });\n } else {\n this._queuedChunk = chunk;\n }\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n this._close();\n }\n\n _onError(status) {\n this._storedError = createResponseStatusError(status, this._url);\n for (const requestCapability of this._requests) {\n requestCapability.reject(this._storedError);\n }\n this._requests.length = 0;\n this._queuedChunk = null;\n }\n\n _onProgress(evt) {\n if (!this.isStreamingSupported) {\n this.onProgress?.({ loaded: evt.loaded });\n }\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n if (this._storedError) {\n throw this._storedError;\n }\n if (this._queuedChunk !== null) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = new PromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n if (this._manager.isPendingRequest(this._requestId)) {\n this._manager.abortRequest(this._requestId);\n }\n this._close();\n }\n}\n\nexport { PDFNetworkStream };\n","/* Copyright 2017 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { stringToBytes } from \"../shared/util.js\";\n\n// This getFilenameFromContentDispositionHeader function is adapted from\n// https://github.com/Rob--W/open-in-browser/blob/7e2e35a38b8b4e981b11da7b2f01df0149049e92/extension/content-disposition.js\n// with the following changes:\n// - Modified to conform to PDF.js's coding style.\n// - Move return to the end of the function to prevent Babel from dropping the\n// function declarations.\n\n/**\n * Extract file name from the Content-Disposition HTTP response header.\n *\n * @param {string} contentDisposition\n * @returns {string} Filename, if found in the Content-Disposition header.\n */\nfunction getFilenameFromContentDispositionHeader(contentDisposition) {\n let needsEncodingFixup = true;\n\n // filename*=ext-value (\"ext-value\" from RFC 5987, referenced by RFC 6266).\n let tmp = toParamRegExp(\"filename\\\\*\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = unescape(filename);\n filename = rfc5987decode(filename);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n\n // Continuations (RFC 2231 section 3, referenced by RFC 5987 section 3.1).\n // filename*n*=part\n // filename*n=part\n tmp = rfc2231getparam(contentDisposition);\n if (tmp) {\n // RFC 2047, section\n const filename = rfc2047decode(tmp);\n return fixupEncoding(filename);\n }\n\n // filename=value (RFC 5987, section 4.1).\n tmp = toParamRegExp(\"filename\", \"i\").exec(contentDisposition);\n if (tmp) {\n tmp = tmp[1];\n let filename = rfc2616unquote(tmp);\n filename = rfc2047decode(filename);\n return fixupEncoding(filename);\n }\n\n // After this line there are only function declarations. We cannot put\n // \"return\" here for readability because babel would then drop the function\n // declarations...\n function toParamRegExp(attributePattern, flags) {\n return new RegExp(\n \"(?:^|;)\\\\s*\" +\n attributePattern +\n \"\\\\s*=\\\\s*\" +\n // Captures: value = token | quoted-string\n // (RFC 2616, section 3.6 and referenced by RFC 6266 4.1)\n \"(\" +\n '[^\";\\\\s][^;\\\\s]*' +\n \"|\" +\n '\"(?:[^\"\\\\\\\\]|\\\\\\\\\"?)+\"?' +\n \")\",\n flags\n );\n }\n function textdecode(encoding, value) {\n if (encoding) {\n if (!/^[\\x00-\\xFF]+$/.test(value)) {\n return value;\n }\n try {\n const decoder = new TextDecoder(encoding, { fatal: true });\n const buffer = stringToBytes(value);\n value = decoder.decode(buffer);\n needsEncodingFixup = false;\n } catch {\n // TextDecoder constructor threw - unrecognized encoding.\n }\n }\n return value;\n }\n function fixupEncoding(value) {\n if (needsEncodingFixup && /[\\x80-\\xff]/.test(value)) {\n // Maybe multi-byte UTF-8.\n value = textdecode(\"utf-8\", value);\n if (needsEncodingFixup) {\n // Try iso-8859-1 encoding.\n value = textdecode(\"iso-8859-1\", value);\n }\n }\n return value;\n }\n function rfc2231getparam(contentDispositionStr) {\n const matches = [];\n let match;\n // Iterate over all filename*n= and filename*n*= with n being an integer\n // of at least zero. Any non-zero number must not start with '0'.\n const iter = toParamRegExp(\"filename\\\\*((?!0\\\\d)\\\\d+)(\\\\*?)\", \"ig\");\n while ((match = iter.exec(contentDispositionStr)) !== null) {\n let [, n, quot, part] = match; // eslint-disable-line prefer-const\n n = parseInt(n, 10);\n if (n in matches) {\n // Ignore anything after the invalid second filename*0.\n if (n === 0) {\n break;\n }\n continue;\n }\n matches[n] = [quot, part];\n }\n const parts = [];\n for (let n = 0; n < matches.length; ++n) {\n if (!(n in matches)) {\n // Numbers must be consecutive. Truncate when there is a hole.\n break;\n }\n let [quot, part] = matches[n]; // eslint-disable-line prefer-const\n part = rfc2616unquote(part);\n if (quot) {\n part = unescape(part);\n if (n === 0) {\n part = rfc5987decode(part);\n }\n }\n parts.push(part);\n }\n return parts.join(\"\");\n }\n function rfc2616unquote(value) {\n if (value.startsWith('\"')) {\n const parts = value.slice(1).split('\\\\\"');\n // Find the first unescaped \" and terminate there.\n for (let i = 0; i < parts.length; ++i) {\n const quotindex = parts[i].indexOf('\"');\n if (quotindex !== -1) {\n parts[i] = parts[i].slice(0, quotindex);\n parts.length = i + 1; // Truncates and stop the iteration.\n }\n parts[i] = parts[i].replaceAll(/\\\\(.)/g, \"$1\");\n }\n value = parts.join('\"');\n }\n return value;\n }\n function rfc5987decode(extvalue) {\n // Decodes \"ext-value\" from RFC 5987.\n const encodingend = extvalue.indexOf(\"'\");\n if (encodingend === -1) {\n // Some servers send \"filename*=\" without encoding 'language' prefix,\n // e.g. in https://github.com/Rob--W/open-in-browser/issues/26\n // Let's accept the value like Firefox (57) (Chrome 62 rejects it).\n return extvalue;\n }\n const encoding = extvalue.slice(0, encodingend);\n const langvalue = extvalue.slice(encodingend + 1);\n // Ignore language (RFC 5987 section 3.2.1, and RFC 6266 section 4.1 ).\n const value = langvalue.replace(/^[^']*'/, \"\");\n return textdecode(encoding, value);\n }\n function rfc2047decode(value) {\n // RFC 2047-decode the result. Firefox tried to drop support for it, but\n // backed out because some servers use it - https://bugzil.la/875615\n // Firefox's condition for decoding is here: https://searchfox.org/mozilla-central/rev/4a590a5a15e35d88a3b23dd6ac3c471cf85b04a8/netwerk/mime/nsMIMEHeaderParamImpl.cpp#742-748\n\n // We are more strict and only recognize RFC 2047-encoding if the value\n // starts with \"=?\", since then it is likely that the full value is\n // RFC 2047-encoded.\n\n // Firefox also decodes words even where RFC 2047 section 5 states:\n // \"An 'encoded-word' MUST NOT appear within a 'quoted-string'.\"\n if (!value.startsWith(\"=?\") || /[\\x00-\\x19\\x80-\\xff]/.test(value)) {\n return value;\n }\n // RFC 2047, section 2.4\n // encoded-word = \"=?\" charset \"?\" encoding \"?\" encoded-text \"?=\"\n // charset = token (but let's restrict to characters that denote a\n // possibly valid encoding).\n // encoding = q or b\n // encoded-text = any printable ASCII character other than ? or space.\n // ... but Firefox permits ? and space.\n return value.replaceAll(\n /=\\?([\\w-]*)\\?([QqBb])\\?((?:[^?]|\\?(?!=))*)\\?=/g,\n function (matches, charset, encoding, text) {\n if (encoding === \"q\" || encoding === \"Q\") {\n // RFC 2047 section 4.2.\n text = text.replaceAll(\"_\", \" \");\n text = text.replaceAll(/=([0-9a-fA-F]{2})/g, function (match, hex) {\n return String.fromCharCode(parseInt(hex, 16));\n });\n return textdecode(charset, text);\n } // else encoding is b or B - base64 (RFC 2047 section 4.1)\n try {\n text = atob(text);\n } catch {}\n return textdecode(charset, text);\n }\n );\n }\n\n return \"\";\n}\n\nexport { getFilenameFromContentDispositionHeader };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n assert,\n MissingPDFException,\n UnexpectedResponseException,\n} from \"../shared/util.js\";\nimport { getFilenameFromContentDispositionHeader } from \"./content_disposition.js\";\nimport { isPdfFile } from \"./display_utils.js\";\n\nfunction validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp,\n rangeChunkSize,\n disableRange,\n}) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n Number.isInteger(rangeChunkSize) && rangeChunkSize > 0,\n \"rangeChunkSize must be an integer larger than zero.\"\n );\n }\n const returnValues = {\n allowRangeRequests: false,\n suggestedLength: undefined,\n };\n\n const length = parseInt(getResponseHeader(\"Content-Length\"), 10);\n if (!Number.isInteger(length)) {\n return returnValues;\n }\n\n returnValues.suggestedLength = length;\n\n if (length <= 2 * rangeChunkSize) {\n // The file size is smaller than the size of two chunks, so it does not\n // make any sense to abort the request and retry with a range request.\n return returnValues;\n }\n\n if (disableRange || !isHttp) {\n return returnValues;\n }\n if (getResponseHeader(\"Accept-Ranges\") !== \"bytes\") {\n return returnValues;\n }\n\n const contentEncoding = getResponseHeader(\"Content-Encoding\") || \"identity\";\n if (contentEncoding !== \"identity\") {\n return returnValues;\n }\n\n returnValues.allowRangeRequests = true;\n return returnValues;\n}\n\nfunction extractFilenameFromHeader(getResponseHeader) {\n const contentDisposition = getResponseHeader(\"Content-Disposition\");\n if (contentDisposition) {\n let filename = getFilenameFromContentDispositionHeader(contentDisposition);\n if (filename.includes(\"%\")) {\n try {\n filename = decodeURIComponent(filename);\n } catch {}\n }\n if (isPdfFile(filename)) {\n return filename;\n }\n }\n return null;\n}\n\nfunction createResponseStatusError(status, url) {\n if (status === 404 || (status === 0 && url.startsWith(\"file:\"))) {\n return new MissingPDFException('Missing PDF \"' + url + '\".');\n }\n return new UnexpectedResponseException(\n `Unexpected server response (${status}) while retrieving PDF \"${url}\".`,\n status\n );\n}\n\nfunction validateResponseStatus(status) {\n return status === 200 || status === 206;\n}\n\nexport {\n createResponseStatusError,\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n validateResponseStatus,\n};\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n assert,\n isNodeJS,\n MissingPDFException,\n PromiseCapability,\n} from \"../shared/util.js\";\nimport {\n extractFilenameFromHeader,\n validateRangeRequestCapabilities,\n} from \"./network_utils.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./node_stream.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nlet fs, http, https, url;\nif (isNodeJS) {\n // Native packages.\n fs = await import(/* webpackIgnore: true */ \"fs\");\n http = await import(/* webpackIgnore: true */ \"http\");\n https = await import(/* webpackIgnore: true */ \"https\");\n url = await import(/* webpackIgnore: true */ \"url\");\n}\n\nconst fileUriRegex = /^file:\\/\\/\\/[a-zA-Z]:\\//;\n\nfunction parseUrl(sourceUrl) {\n const parsedUrl = url.parse(sourceUrl);\n if (parsedUrl.protocol === \"file:\" || parsedUrl.host) {\n return parsedUrl;\n }\n // Prepending 'file:///' to Windows absolute path.\n if (/^[a-z]:[/\\\\]/i.test(sourceUrl)) {\n return url.parse(`file:///${sourceUrl}`);\n }\n // Changes protocol to 'file:' if url refers to filesystem.\n if (!parsedUrl.host) {\n parsedUrl.protocol = \"file:\";\n }\n return parsedUrl;\n}\n\nclass PDFNodeStream {\n constructor(source) {\n this.source = source;\n this.url = parseUrl(source.url);\n this.isHttp =\n this.url.protocol === \"http:\" || this.url.protocol === \"https:\";\n // Check if url refers to filesystem.\n this.isFsUrl = this.url.protocol === \"file:\";\n this.httpHeaders = (this.isHttp && source.httpHeaders) || {};\n\n this._fullRequestReader = null;\n this._rangeRequestReaders = [];\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFNodeStream.getFullReader can only be called once.\"\n );\n this._fullRequestReader = this.isFsUrl\n ? new PDFNodeStreamFsFullReader(this)\n : new PDFNodeStreamFullReader(this);\n return this._fullRequestReader;\n }\n\n getRangeReader(start, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const rangeReader = this.isFsUrl\n ? new PDFNodeStreamFsRangeReader(this, start, end)\n : new PDFNodeStreamRangeReader(this, start, end);\n this._rangeRequestReaders.push(rangeReader);\n return rangeReader;\n }\n\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n\n for (const reader of this._rangeRequestReaders.slice(0)) {\n reader.cancel(reason);\n }\n }\n}\n\nclass BaseFullReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n const source = stream.source;\n this._contentLength = source.length; // optional\n this._loaded = 0;\n this._filename = null;\n\n this._disableRange = source.disableRange || false;\n this._rangeChunkSize = source.rangeChunkSize;\n if (!this._rangeChunkSize && !this._disableRange) {\n this._disableRange = true;\n }\n\n this._isStreamingSupported = !source.disableStream;\n this._isRangeSupported = !source.disableRange;\n\n this._readableStream = null;\n this._readCapability = new PromiseCapability();\n this._headersCapability = new PromiseCapability();\n }\n\n get headersReady() {\n return this._headersCapability.promise;\n }\n\n get filename() {\n return this._filename;\n }\n\n get contentLength() {\n return this._contentLength;\n }\n\n get isRangeSupported() {\n return this._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return { value: undefined, done: true };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = new PromiseCapability();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({\n loaded: this._loaded,\n total: this._contentLength,\n });\n\n // Ensure that `read()` method returns ArrayBuffer.\n const buffer = new Uint8Array(chunk).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n // Call `this._error()` method when cancel is called\n // before _readableStream is set.\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n\n readableStream.on(\"end\", () => {\n // Destroy readable to minimize resource usage.\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n\n // We need to stop reading when range is supported and streaming is\n // disabled.\n if (!this._isStreamingSupported && this._isRangeSupported) {\n this._error(new AbortException(\"streaming is disabled\"));\n }\n\n // Destroy ReadableStream if already in errored state.\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\n\nclass BaseRangeReader {\n constructor(stream) {\n this._url = stream.url;\n this._done = false;\n this._storedError = null;\n this.onProgress = null;\n this._loaded = 0;\n this._readableStream = null;\n this._readCapability = new PromiseCapability();\n const source = stream.source;\n this._isStreamingSupported = !source.disableStream;\n }\n\n get isStreamingSupported() {\n return this._isStreamingSupported;\n }\n\n async read() {\n await this._readCapability.promise;\n if (this._done) {\n return { value: undefined, done: true };\n }\n if (this._storedError) {\n throw this._storedError;\n }\n\n const chunk = this._readableStream.read();\n if (chunk === null) {\n this._readCapability = new PromiseCapability();\n return this.read();\n }\n this._loaded += chunk.length;\n this.onProgress?.({ loaded: this._loaded });\n\n // Ensure that `read()` method returns ArrayBuffer.\n const buffer = new Uint8Array(chunk).buffer;\n return { value: buffer, done: false };\n }\n\n cancel(reason) {\n // Call `this._error()` method when cancel is called\n // before _readableStream is set.\n if (!this._readableStream) {\n this._error(reason);\n return;\n }\n this._readableStream.destroy(reason);\n }\n\n _error(reason) {\n this._storedError = reason;\n this._readCapability.resolve();\n }\n\n _setReadableStream(readableStream) {\n this._readableStream = readableStream;\n readableStream.on(\"readable\", () => {\n this._readCapability.resolve();\n });\n\n readableStream.on(\"end\", () => {\n // Destroy readableStream to minimize resource usage.\n readableStream.destroy();\n this._done = true;\n this._readCapability.resolve();\n });\n\n readableStream.on(\"error\", reason => {\n this._error(reason);\n });\n\n // Destroy readableStream if already in errored state.\n if (this._storedError) {\n this._readableStream.destroy(this._storedError);\n }\n }\n}\n\nfunction createRequestOptions(parsedUrl, headers) {\n return {\n protocol: parsedUrl.protocol,\n auth: parsedUrl.auth,\n host: parsedUrl.hostname,\n port: parsedUrl.port,\n path: parsedUrl.path,\n method: \"GET\",\n headers,\n };\n}\n\nclass PDFNodeStreamFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n this._headersCapability.reject(error);\n return;\n }\n this._headersCapability.resolve();\n this._setReadableStream(response);\n\n const getResponseHeader = name => {\n // Make sure that headers name are in lower case, as mentioned\n // here: https://nodejs.org/api/http.html#http_message_headers.\n return this._readableStream.headers[name.toLowerCase()];\n };\n const { allowRangeRequests, suggestedLength } =\n validateRangeRequestCapabilities({\n getResponseHeader,\n isHttp: stream.isHttp,\n rangeChunkSize: this._rangeChunkSize,\n disableRange: this._disableRange,\n });\n\n this._isRangeSupported = allowRangeRequests;\n // Setting right content length.\n this._contentLength = suggestedLength || this._contentLength;\n\n this._filename = extractFilenameFromHeader(getResponseHeader);\n };\n\n this._request = null;\n if (this._url.protocol === \"http:\") {\n this._request = http.request(\n createRequestOptions(this._url, stream.httpHeaders),\n handleResponse\n );\n } else {\n this._request = https.request(\n createRequestOptions(this._url, stream.httpHeaders),\n handleResponse\n );\n }\n\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n this._headersCapability.reject(reason);\n });\n // Note: `request.end(data)` is used to write `data` to request body\n // and notify end of request. But one should always call `request.end()`\n // even if there is no data to write -- (to notify the end of request).\n this._request.end();\n }\n}\n\nclass PDFNodeStreamRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n\n this._httpHeaders = {};\n for (const property in stream.httpHeaders) {\n const value = stream.httpHeaders[property];\n if (value === undefined) {\n continue;\n }\n this._httpHeaders[property] = value;\n }\n this._httpHeaders.Range = `bytes=${start}-${end - 1}`;\n\n const handleResponse = response => {\n if (response.statusCode === 404) {\n const error = new MissingPDFException(`Missing PDF \"${this._url}\".`);\n this._storedError = error;\n return;\n }\n this._setReadableStream(response);\n };\n\n this._request = null;\n if (this._url.protocol === \"http:\") {\n this._request = http.request(\n createRequestOptions(this._url, this._httpHeaders),\n handleResponse\n );\n } else {\n this._request = https.request(\n createRequestOptions(this._url, this._httpHeaders),\n handleResponse\n );\n }\n\n this._request.on(\"error\", reason => {\n this._storedError = reason;\n });\n this._request.end();\n }\n}\n\nclass PDFNodeStreamFsFullReader extends BaseFullReader {\n constructor(stream) {\n super(stream);\n\n let path = decodeURIComponent(this._url.path);\n\n // Remove the extra slash to get right path from url like `file:///C:/`\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n fs.lstat(path, (error, stat) => {\n if (error) {\n if (error.code === \"ENOENT\") {\n error = new MissingPDFException(`Missing PDF \"${path}\".`);\n }\n this._storedError = error;\n this._headersCapability.reject(error);\n return;\n }\n // Setting right content length.\n this._contentLength = stat.size;\n\n this._setReadableStream(fs.createReadStream(path));\n this._headersCapability.resolve();\n });\n }\n}\n\nclass PDFNodeStreamFsRangeReader extends BaseRangeReader {\n constructor(stream, start, end) {\n super(stream);\n\n let path = decodeURIComponent(this._url.path);\n\n // Remove the extra slash to get right path from url like `file:///C:/`\n if (fileUriRegex.test(this._url.href)) {\n path = path.replace(/^\\//, \"\");\n }\n\n this._setReadableStream(fs.createReadStream(path, { start, end: end - 1 }));\n }\n}\n\nexport { PDFNodeStream };\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n BaseCanvasFactory,\n BaseCMapReaderFactory,\n BaseFilterFactory,\n BaseStandardFontDataFactory,\n} from \"./base_factory.js\";\nimport { isNodeJS, warn } from \"../shared/util.js\";\n\nif (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) {\n throw new Error(\n 'Module \"./node_utils.js\" shall not be used with MOZCENTRAL builds.'\n );\n}\n\nlet fs, canvas, path2d_polyfill;\nif (isNodeJS) {\n // Native packages.\n fs = await import(/* webpackIgnore: true */ \"fs\");\n // Optional, third-party, packages.\n try {\n canvas = await import(/* webpackIgnore: true */ \"canvas\");\n } catch {}\n try {\n path2d_polyfill = await import(/* webpackIgnore: true */ \"path2d-polyfill\");\n } catch {}\n}\n\nif (typeof PDFJSDev !== \"undefined\" && !PDFJSDev.test(\"SKIP_BABEL\")) {\n (function checkDOMMatrix() {\n if (globalThis.DOMMatrix || !isNodeJS) {\n return;\n }\n const DOMMatrix = canvas?.DOMMatrix;\n\n if (DOMMatrix) {\n globalThis.DOMMatrix = DOMMatrix;\n } else {\n warn(\"Cannot polyfill `DOMMatrix`, rendering may be broken.\");\n }\n })();\n\n (function checkPath2D() {\n if (globalThis.Path2D || !isNodeJS) {\n return;\n }\n const CanvasRenderingContext2D = canvas?.CanvasRenderingContext2D;\n const polyfillPath2D = path2d_polyfill?.polyfillPath2D;\n\n if (CanvasRenderingContext2D && polyfillPath2D) {\n globalThis.CanvasRenderingContext2D = CanvasRenderingContext2D;\n polyfillPath2D(globalThis);\n } else {\n warn(\"Cannot polyfill `Path2D`, rendering may be broken.\");\n }\n })();\n}\n\nconst fetchData = function (url) {\n return new Promise((resolve, reject) => {\n fs.readFile(url, (error, data) => {\n if (error || !data) {\n reject(new Error(error));\n return;\n }\n resolve(new Uint8Array(data));\n });\n });\n};\n\nclass NodeFilterFactory extends BaseFilterFactory {}\n\nclass NodeCanvasFactory extends BaseCanvasFactory {\n /**\n * @ignore\n */\n _createCanvas(width, height) {\n return canvas.createCanvas(width, height);\n }\n}\n\nclass NodeCMapReaderFactory extends BaseCMapReaderFactory {\n /**\n * @ignore\n */\n _fetchData(url, compressionType) {\n return fetchData(url).then(data => {\n return { cMapData: data, compressionType };\n });\n }\n}\n\nclass NodeStandardFontDataFactory extends BaseStandardFontDataFactory {\n /**\n * @ignore\n */\n _fetchData(url) {\n return fetchData(url);\n }\n}\n\nexport {\n NodeCanvasFactory,\n NodeCMapReaderFactory,\n NodeFilterFactory,\n NodeStandardFontDataFactory,\n};\n","/* Copyright 2020 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { objectFromMap, unreachable, warn } from \"../shared/util.js\";\nimport { MurmurHash3_64 } from \"../shared/murmurhash3.js\";\n\nconst INTERNAL = Symbol(\"INTERNAL\");\n\nclass OptionalContentGroup {\n #visible = true;\n\n constructor(name, intent) {\n this.name = name;\n this.intent = intent;\n }\n\n /**\n * @type {boolean}\n */\n get visible() {\n return this.#visible;\n }\n\n /**\n * @ignore\n */\n _setVisible(internal, visible) {\n if (internal !== INTERNAL) {\n unreachable(\"Internal method `_setVisible` called.\");\n }\n this.#visible = visible;\n }\n}\n\nclass OptionalContentConfig {\n #cachedGetHash = null;\n\n #groups = new Map();\n\n #initialHash = null;\n\n #order = null;\n\n constructor(data) {\n this.name = null;\n this.creator = null;\n\n if (data === null) {\n return;\n }\n this.name = data.name;\n this.creator = data.creator;\n this.#order = data.order;\n for (const group of data.groups) {\n this.#groups.set(\n group.id,\n new OptionalContentGroup(group.name, group.intent)\n );\n }\n\n if (data.baseState === \"OFF\") {\n for (const group of this.#groups.values()) {\n group._setVisible(INTERNAL, false);\n }\n }\n\n for (const on of data.on) {\n this.#groups.get(on)._setVisible(INTERNAL, true);\n }\n\n for (const off of data.off) {\n this.#groups.get(off)._setVisible(INTERNAL, false);\n }\n\n // The following code must always run *last* in the constructor.\n this.#initialHash = this.getHash();\n }\n\n #evaluateVisibilityExpression(array) {\n const length = array.length;\n if (length < 2) {\n return true;\n }\n const operator = array[0];\n for (let i = 1; i < length; i++) {\n const element = array[i];\n let state;\n if (Array.isArray(element)) {\n state = this.#evaluateVisibilityExpression(element);\n } else if (this.#groups.has(element)) {\n state = this.#groups.get(element).visible;\n } else {\n warn(`Optional content group not found: ${element}`);\n return true;\n }\n switch (operator) {\n case \"And\":\n if (!state) {\n return false;\n }\n break;\n case \"Or\":\n if (state) {\n return true;\n }\n break;\n case \"Not\":\n return !state;\n default:\n return true;\n }\n }\n return operator === \"And\";\n }\n\n isVisible(group) {\n if (this.#groups.size === 0) {\n return true;\n }\n if (!group) {\n warn(\"Optional content group not defined.\");\n return true;\n }\n if (group.type === \"OCG\") {\n if (!this.#groups.has(group.id)) {\n warn(`Optional content group not found: ${group.id}`);\n return true;\n }\n return this.#groups.get(group.id).visible;\n } else if (group.type === \"OCMD\") {\n // Per the spec, the expression should be preferred if available.\n if (group.expression) {\n return this.#evaluateVisibilityExpression(group.expression);\n }\n if (!group.policy || group.policy === \"AnyOn\") {\n // Default\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOn\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n } else if (group.policy === \"AnyOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (!this.#groups.get(id).visible) {\n return true;\n }\n }\n return false;\n } else if (group.policy === \"AllOff\") {\n for (const id of group.ids) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return true;\n }\n if (this.#groups.get(id).visible) {\n return false;\n }\n }\n return true;\n }\n warn(`Unknown optional content policy ${group.policy}.`);\n return true;\n }\n warn(`Unknown group type ${group.type}.`);\n return true;\n }\n\n setVisibility(id, visible = true) {\n if (!this.#groups.has(id)) {\n warn(`Optional content group not found: ${id}`);\n return;\n }\n this.#groups.get(id)._setVisible(INTERNAL, !!visible);\n\n this.#cachedGetHash = null;\n }\n\n get hasInitialVisibility() {\n return this.#initialHash === null || this.getHash() === this.#initialHash;\n }\n\n getOrder() {\n if (!this.#groups.size) {\n return null;\n }\n if (this.#order) {\n return this.#order.slice();\n }\n return [...this.#groups.keys()];\n }\n\n getGroups() {\n return this.#groups.size > 0 ? objectFromMap(this.#groups) : null;\n }\n\n getGroup(id) {\n return this.#groups.get(id) || null;\n }\n\n getHash() {\n if (this.#cachedGetHash !== null) {\n return this.#cachedGetHash;\n }\n const hash = new MurmurHash3_64();\n\n for (const [id, group] of this.#groups) {\n hash.update(`${id}:${group.visible}`);\n }\n return (this.#cachedGetHash = hash.hexdigest());\n }\n}\n\nexport { OptionalContentConfig };\n","/* Copyright 2015 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"./api\").TextContent} TextContent */\n\nimport {\n AbortException,\n FeatureTest,\n PromiseCapability,\n Util,\n} from \"../shared/util.js\";\nimport { setLayerDimensions } from \"./display_utils.js\";\n\n/**\n * Text layer render parameters.\n *\n * @typedef {Object} TextLayerRenderParameters\n * @property {ReadableStream | TextContent} textContentSource - Text content to\n * render, i.e. the value returned by the page's `streamTextContent` or\n * `getTextContent` method.\n * @property {HTMLElement} container - The DOM node that will contain the text\n * runs.\n * @property {PageViewport} viewport - The target viewport to properly layout\n * the text runs.\n * @property {Array<HTMLElement>} [textDivs] - HTML elements that correspond to\n * the text items of the textContent input.\n * This is output and shall initially be set to an empty array.\n * @property {WeakMap<HTMLElement,Object>} [textDivProperties] - Some properties\n * weakly mapped to the HTML elements used to render the text.\n * @property {Array<string>} [textContentItemsStr] - Strings that correspond to\n * the `str` property of the text items of the textContent input.\n * This is output and shall initially be set to an empty array.\n * @property {boolean} [isOffscreenCanvasSupported] true if we can use\n * OffscreenCanvas to measure string widths.\n */\n\n/**\n * Text layer update parameters.\n *\n * @typedef {Object} TextLayerUpdateParameters\n * @property {HTMLElement} container - The DOM node that will contain the text\n * runs.\n * @property {PageViewport} viewport - The target viewport to properly layout\n * the text runs.\n * @property {Array<HTMLElement>} [textDivs] - HTML elements that correspond to\n * the text items of the textContent input.\n * This is output and shall initially be set to an empty array.\n * @property {WeakMap<HTMLElement,Object>} [textDivProperties] - Some properties\n * weakly mapped to the HTML elements used to render the text.\n * @property {boolean} [isOffscreenCanvasSupported] true if we can use\n * OffscreenCanvas to measure string widths.\n * @property {boolean} [mustRotate] true if the text layer must be rotated.\n * @property {boolean} [mustRescale] true if the text layer contents must be\n * rescaled.\n */\n\nconst MAX_TEXT_DIVS_TO_RENDER = 100000;\nconst DEFAULT_FONT_SIZE = 30;\nconst DEFAULT_FONT_ASCENT = 0.8;\nconst ascentCache = new Map();\n\nfunction getCtx(size, isOffscreenCanvasSupported) {\n let ctx;\n if (isOffscreenCanvasSupported && FeatureTest.isOffscreenCanvasSupported) {\n ctx = new OffscreenCanvas(size, size).getContext(\"2d\", { alpha: false });\n } else {\n const canvas = document.createElement(\"canvas\");\n canvas.width = canvas.height = size;\n ctx = canvas.getContext(\"2d\", { alpha: false });\n }\n\n return ctx;\n}\n\nfunction getAscent(fontFamily, isOffscreenCanvasSupported) {\n const cachedAscent = ascentCache.get(fontFamily);\n if (cachedAscent) {\n return cachedAscent;\n }\n\n const ctx = getCtx(DEFAULT_FONT_SIZE, isOffscreenCanvasSupported);\n\n ctx.font = `${DEFAULT_FONT_SIZE}px ${fontFamily}`;\n const metrics = ctx.measureText(\"\");\n\n // Both properties aren't available by default in Firefox.\n let ascent = metrics.fontBoundingBoxAscent;\n let descent = Math.abs(metrics.fontBoundingBoxDescent);\n if (ascent) {\n const ratio = ascent / (ascent + descent);\n ascentCache.set(fontFamily, ratio);\n\n ctx.canvas.width = ctx.canvas.height = 0;\n return ratio;\n }\n\n // Try basic heuristic to guess ascent/descent.\n // Draw a g with baseline at 0,0 and then get the line\n // number where a pixel has non-null red component (starting\n // from bottom).\n ctx.strokeStyle = \"red\";\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"g\", 0, 0);\n let pixels = ctx.getImageData(\n 0,\n 0,\n DEFAULT_FONT_SIZE,\n DEFAULT_FONT_SIZE\n ).data;\n descent = 0;\n for (let i = pixels.length - 1 - 3; i >= 0; i -= 4) {\n if (pixels[i] > 0) {\n descent = Math.ceil(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n\n // Draw an A with baseline at 0,DEFAULT_FONT_SIZE and then get the line\n // number where a pixel has non-null red component (starting\n // from top).\n ctx.clearRect(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE);\n ctx.strokeText(\"A\", 0, DEFAULT_FONT_SIZE);\n pixels = ctx.getImageData(0, 0, DEFAULT_FONT_SIZE, DEFAULT_FONT_SIZE).data;\n ascent = 0;\n for (let i = 0, ii = pixels.length; i < ii; i += 4) {\n if (pixels[i] > 0) {\n ascent = DEFAULT_FONT_SIZE - Math.floor(i / 4 / DEFAULT_FONT_SIZE);\n break;\n }\n }\n\n ctx.canvas.width = ctx.canvas.height = 0;\n\n if (ascent) {\n const ratio = ascent / (ascent + descent);\n ascentCache.set(fontFamily, ratio);\n return ratio;\n }\n\n ascentCache.set(fontFamily, DEFAULT_FONT_ASCENT);\n return DEFAULT_FONT_ASCENT;\n}\n\nfunction appendText(task, geom, styles) {\n // Initialize all used properties to keep the caches monomorphic.\n const textDiv = document.createElement(\"span\");\n const textDivProperties = {\n angle: 0,\n canvasWidth: 0,\n hasText: geom.str !== \"\",\n hasEOL: geom.hasEOL,\n fontSize: 0,\n };\n task._textDivs.push(textDiv);\n\n const tx = Util.transform(task._transform, geom.transform);\n let angle = Math.atan2(tx[1], tx[0]);\n const style = styles[geom.fontName];\n if (style.vertical) {\n angle += Math.PI / 2;\n }\n\n const fontFamily =\n (task._fontInspectorEnabled && style.fontSubstitution) || style.fontFamily;\n const fontHeight = Math.hypot(tx[2], tx[3]);\n const fontAscent =\n fontHeight * getAscent(fontFamily, task._isOffscreenCanvasSupported);\n\n let left, top;\n if (angle === 0) {\n left = tx[4];\n top = tx[5] - fontAscent;\n } else {\n left = tx[4] + fontAscent * Math.sin(angle);\n top = tx[5] - fontAscent * Math.cos(angle);\n }\n\n const scaleFactorStr = \"calc(var(--scale-factor)*\";\n const divStyle = textDiv.style;\n // Setting the style properties individually, rather than all at once,\n // should be OK since the `textDiv` isn't appended to the document yet.\n if (task._container === task._rootContainer) {\n divStyle.left = `${((100 * left) / task._pageWidth).toFixed(2)}%`;\n divStyle.top = `${((100 * top) / task._pageHeight).toFixed(2)}%`;\n } else {\n // We're in a marked content span, hence we can't use percents.\n divStyle.left = `${scaleFactorStr}${left.toFixed(2)}px)`;\n divStyle.top = `${scaleFactorStr}${top.toFixed(2)}px)`;\n }\n divStyle.fontSize = `${scaleFactorStr}${fontHeight.toFixed(2)}px)`;\n divStyle.fontFamily = fontFamily;\n\n textDivProperties.fontSize = fontHeight;\n\n // Keeps screen readers from pausing on every new text span.\n textDiv.setAttribute(\"role\", \"presentation\");\n\n textDiv.textContent = geom.str;\n // geom.dir may be 'ttb' for vertical texts.\n textDiv.dir = geom.dir;\n\n // `fontName` is only used by the FontInspector, and we only use `dataset`\n // here to make the font name available in the debugger.\n if (task._fontInspectorEnabled) {\n textDiv.dataset.fontName =\n style.fontSubstitutionLoadedName || geom.fontName;\n }\n if (angle !== 0) {\n textDivProperties.angle = angle * (180 / Math.PI);\n }\n // We don't bother scaling single-char text divs, because it has very\n // little effect on text highlighting. This makes scrolling on docs with\n // lots of such divs a lot faster.\n let shouldScaleText = false;\n if (geom.str.length > 1) {\n shouldScaleText = true;\n } else if (geom.str !== \" \" && geom.transform[0] !== geom.transform[3]) {\n const absScaleX = Math.abs(geom.transform[0]),\n absScaleY = Math.abs(geom.transform[3]);\n // When the horizontal/vertical scaling differs significantly, also scale\n // even single-char text to improve highlighting (fixes issue11713.pdf).\n if (\n absScaleX !== absScaleY &&\n Math.max(absScaleX, absScaleY) / Math.min(absScaleX, absScaleY) > 1.5\n ) {\n shouldScaleText = true;\n }\n }\n if (shouldScaleText) {\n textDivProperties.canvasWidth = style.vertical ? geom.height : geom.width;\n }\n task._textDivProperties.set(textDiv, textDivProperties);\n if (task._isReadableStream) {\n task._layoutText(textDiv);\n }\n}\n\nfunction layout(params) {\n const { div, scale, properties, ctx, prevFontSize, prevFontFamily } = params;\n const { style } = div;\n let transform = \"\";\n if (properties.canvasWidth !== 0 && properties.hasText) {\n const { fontFamily } = style;\n const { canvasWidth, fontSize } = properties;\n\n if (prevFontSize !== fontSize || prevFontFamily !== fontFamily) {\n ctx.font = `${fontSize * scale}px ${fontFamily}`;\n params.prevFontSize = fontSize;\n params.prevFontFamily = fontFamily;\n }\n\n // Only measure the width for multi-char text divs, see `appendText`.\n const { width } = ctx.measureText(div.textContent);\n\n if (width > 0) {\n transform = `scaleX(${(canvasWidth * scale) / width})`;\n }\n }\n if (properties.angle !== 0) {\n transform = `rotate(${properties.angle}deg) ${transform}`;\n }\n if (transform.length > 0) {\n style.transform = transform;\n }\n}\n\nfunction render(task) {\n if (task._canceled) {\n return;\n }\n const textDivs = task._textDivs;\n const capability = task._capability;\n const textDivsLength = textDivs.length;\n\n // No point in rendering many divs as it would make the browser\n // unusable even after the divs are rendered.\n if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {\n capability.resolve();\n return;\n }\n\n if (!task._isReadableStream) {\n for (const textDiv of textDivs) {\n task._layoutText(textDiv);\n }\n }\n capability.resolve();\n}\n\nclass TextLayerRenderTask {\n constructor({\n textContentSource,\n container,\n viewport,\n textDivs,\n textDivProperties,\n textContentItemsStr,\n isOffscreenCanvasSupported,\n }) {\n this._textContentSource = textContentSource;\n this._isReadableStream = textContentSource instanceof ReadableStream;\n this._container = this._rootContainer = container;\n this._textDivs = textDivs || [];\n this._textContentItemsStr = textContentItemsStr || [];\n this._isOffscreenCanvasSupported = isOffscreenCanvasSupported;\n this._fontInspectorEnabled = !!globalThis.FontInspector?.enabled;\n\n this._reader = null;\n this._textDivProperties = textDivProperties || new WeakMap();\n this._canceled = false;\n this._capability = new PromiseCapability();\n this._layoutTextParams = {\n prevFontSize: null,\n prevFontFamily: null,\n div: null,\n scale: viewport.scale * (globalThis.devicePixelRatio || 1),\n properties: null,\n ctx: getCtx(0, isOffscreenCanvasSupported),\n };\n const { pageWidth, pageHeight, pageX, pageY } = viewport.rawDims;\n this._transform = [1, 0, 0, -1, -pageX, pageY + pageHeight];\n this._pageWidth = pageWidth;\n this._pageHeight = pageHeight;\n\n setLayerDimensions(container, viewport);\n\n // Always clean-up the temporary canvas once rendering is no longer pending.\n this._capability.promise\n .finally(() => {\n this._layoutTextParams = null;\n })\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n }\n\n /**\n * Promise for textLayer rendering task completion.\n * @type {Promise<void>}\n */\n get promise() {\n return this._capability.promise;\n }\n\n /**\n * Cancel rendering of the textLayer.\n */\n cancel() {\n this._canceled = true;\n if (this._reader) {\n this._reader\n .cancel(new AbortException(\"TextLayer task cancelled.\"))\n .catch(() => {\n // Avoid \"Uncaught promise\" messages in the console.\n });\n this._reader = null;\n }\n this._capability.reject(new AbortException(\"TextLayer task cancelled.\"));\n }\n\n /**\n * @private\n */\n _processItems(items, styleCache) {\n for (const item of items) {\n if (item.str === undefined) {\n if (\n item.type === \"beginMarkedContentProps\" ||\n item.type === \"beginMarkedContent\"\n ) {\n const parent = this._container;\n this._container = document.createElement(\"span\");\n this._container.classList.add(\"markedContent\");\n if (item.id !== null) {\n this._container.setAttribute(\"id\", `${item.id}`);\n }\n parent.append(this._container);\n } else if (item.type === \"endMarkedContent\") {\n this._container = this._container.parentNode;\n }\n continue;\n }\n this._textContentItemsStr.push(item.str);\n appendText(this, item, styleCache);\n }\n }\n\n /**\n * @private\n */\n _layoutText(textDiv) {\n const textDivProperties = (this._layoutTextParams.properties =\n this._textDivProperties.get(textDiv));\n this._layoutTextParams.div = textDiv;\n layout(this._layoutTextParams);\n\n if (textDivProperties.hasText) {\n this._container.append(textDiv);\n }\n if (textDivProperties.hasEOL) {\n const br = document.createElement(\"br\");\n br.setAttribute(\"role\", \"presentation\");\n this._container.append(br);\n }\n }\n\n /**\n * @private\n */\n _render() {\n const capability = new PromiseCapability();\n let styleCache = Object.create(null);\n\n if (this._isReadableStream) {\n const pump = () => {\n this._reader.read().then(({ value, done }) => {\n if (done) {\n capability.resolve();\n return;\n }\n\n Object.assign(styleCache, value.styles);\n this._processItems(value.items, styleCache);\n pump();\n }, capability.reject);\n };\n\n this._reader = this._textContentSource.getReader();\n pump();\n } else if (this._textContentSource) {\n const { items, styles } = this._textContentSource;\n this._processItems(items, styles);\n capability.resolve();\n } else {\n throw new Error('No \"textContentSource\" parameter specified.');\n }\n\n capability.promise.then(() => {\n styleCache = null;\n render(this);\n }, this._capability.reject);\n }\n}\n\n/**\n * @param {TextLayerRenderParameters} params\n * @returns {TextLayerRenderTask}\n */\nfunction renderTextLayer(params) {\n const task = new TextLayerRenderTask(params);\n task._render();\n return task;\n}\n\n/**\n * @param {TextLayerUpdateParameters} params\n * @returns {undefined}\n */\nfunction updateTextLayer({\n container,\n viewport,\n textDivs,\n textDivProperties,\n isOffscreenCanvasSupported,\n mustRotate = true,\n mustRescale = true,\n}) {\n if (mustRotate) {\n setLayerDimensions(container, { rotation: viewport.rotation });\n }\n\n if (mustRescale) {\n const ctx = getCtx(0, isOffscreenCanvasSupported);\n const scale = viewport.scale * (globalThis.devicePixelRatio || 1);\n const params = {\n prevFontSize: null,\n prevFontFamily: null,\n div: null,\n scale,\n properties: null,\n ctx,\n };\n for (const div of textDivs) {\n params.properties = textDivProperties.get(div);\n params.div = div;\n layout(params);\n }\n }\n}\n\nexport { renderTextLayer, TextLayerRenderTask, updateTextLayer };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"../interfaces\").IPDFStream} IPDFStream */\n/** @typedef {import(\"../interfaces\").IPDFStreamReader} IPDFStreamReader */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"../interfaces\").IPDFStreamRangeReader} IPDFStreamRangeReader */\n\nimport { assert, PromiseCapability } from \"../shared/util.js\";\nimport { isPdfFile } from \"./display_utils.js\";\n\n/** @implements {IPDFStream} */\nclass PDFDataTransportStream {\n constructor(\n {\n length,\n initialData,\n progressiveDone = false,\n contentDispositionFilename = null,\n disableRange = false,\n disableStream = false,\n },\n pdfDataRangeTransport\n ) {\n assert(\n pdfDataRangeTransport,\n 'PDFDataTransportStream - missing required \"pdfDataRangeTransport\" argument.'\n );\n\n this._queuedChunks = [];\n this._progressiveDone = progressiveDone;\n this._contentDispositionFilename = contentDispositionFilename;\n\n if (initialData?.length > 0) {\n // Prevent any possible issues by only transferring a Uint8Array that\n // completely \"utilizes\" its underlying ArrayBuffer.\n const buffer =\n initialData instanceof Uint8Array &&\n initialData.byteLength === initialData.buffer.byteLength\n ? initialData.buffer\n : new Uint8Array(initialData).buffer;\n this._queuedChunks.push(buffer);\n }\n\n this._pdfDataRangeTransport = pdfDataRangeTransport;\n this._isStreamingSupported = !disableStream;\n this._isRangeSupported = !disableRange;\n this._contentLength = length;\n\n this._fullRequestReader = null;\n this._rangeReaders = [];\n\n this._pdfDataRangeTransport.addRangeListener((begin, chunk) => {\n this._onReceiveData({ begin, chunk });\n });\n\n this._pdfDataRangeTransport.addProgressListener((loaded, total) => {\n this._onProgress({ loaded, total });\n });\n\n this._pdfDataRangeTransport.addProgressiveReadListener(chunk => {\n this._onReceiveData({ chunk });\n });\n\n this._pdfDataRangeTransport.addProgressiveDoneListener(() => {\n this._onProgressiveDone();\n });\n\n this._pdfDataRangeTransport.transportReady();\n }\n\n _onReceiveData({ begin, chunk }) {\n // Prevent any possible issues by only transferring a Uint8Array that\n // completely \"utilizes\" its underlying ArrayBuffer.\n const buffer =\n chunk instanceof Uint8Array &&\n chunk.byteLength === chunk.buffer.byteLength\n ? chunk.buffer\n : new Uint8Array(chunk).buffer;\n\n if (begin === undefined) {\n if (this._fullRequestReader) {\n this._fullRequestReader._enqueue(buffer);\n } else {\n this._queuedChunks.push(buffer);\n }\n } else {\n const found = this._rangeReaders.some(function (rangeReader) {\n if (rangeReader._begin !== begin) {\n return false;\n }\n rangeReader._enqueue(buffer);\n return true;\n });\n assert(\n found,\n \"_onReceiveData - no `PDFDataTransportStreamRangeReader` instance found.\"\n );\n }\n }\n\n get _progressiveDataLength() {\n return this._fullRequestReader?._loaded ?? 0;\n }\n\n _onProgress(evt) {\n if (evt.total === undefined) {\n // Reporting to first range reader, if it exists.\n this._rangeReaders[0]?.onProgress?.({ loaded: evt.loaded });\n } else {\n this._fullRequestReader?.onProgress?.({\n loaded: evt.loaded,\n total: evt.total,\n });\n }\n }\n\n _onProgressiveDone() {\n this._fullRequestReader?.progressiveDone();\n this._progressiveDone = true;\n }\n\n _removeRangeReader(reader) {\n const i = this._rangeReaders.indexOf(reader);\n if (i >= 0) {\n this._rangeReaders.splice(i, 1);\n }\n }\n\n getFullReader() {\n assert(\n !this._fullRequestReader,\n \"PDFDataTransportStream.getFullReader can only be called once.\"\n );\n const queuedChunks = this._queuedChunks;\n this._queuedChunks = null;\n return new PDFDataTransportStreamReader(\n this,\n queuedChunks,\n this._progressiveDone,\n this._contentDispositionFilename\n );\n }\n\n getRangeReader(begin, end) {\n if (end <= this._progressiveDataLength) {\n return null;\n }\n const reader = new PDFDataTransportStreamRangeReader(this, begin, end);\n this._pdfDataRangeTransport.requestDataRange(begin, end);\n this._rangeReaders.push(reader);\n return reader;\n }\n\n cancelAllRequests(reason) {\n this._fullRequestReader?.cancel(reason);\n\n for (const reader of this._rangeReaders.slice(0)) {\n reader.cancel(reason);\n }\n this._pdfDataRangeTransport.abort();\n }\n}\n\n/** @implements {IPDFStreamReader} */\nclass PDFDataTransportStreamReader {\n constructor(\n stream,\n queuedChunks,\n progressiveDone = false,\n contentDispositionFilename = null\n ) {\n this._stream = stream;\n this._done = progressiveDone || false;\n this._filename = isPdfFile(contentDispositionFilename)\n ? contentDispositionFilename\n : null;\n this._queuedChunks = queuedChunks || [];\n this._loaded = 0;\n for (const chunk of this._queuedChunks) {\n this._loaded += chunk.byteLength;\n }\n this._requests = [];\n this._headersReady = Promise.resolve();\n stream._fullRequestReader = this;\n\n this.onProgress = null;\n }\n\n _enqueue(chunk) {\n if (this._done) {\n return; // Ignore new data.\n }\n if (this._requests.length > 0) {\n const requestCapability = this._requests.shift();\n requestCapability.resolve({ value: chunk, done: false });\n } else {\n this._queuedChunks.push(chunk);\n }\n this._loaded += chunk.byteLength;\n }\n\n get headersReady() {\n return this._headersReady;\n }\n\n get filename() {\n return this._filename;\n }\n\n get isRangeSupported() {\n return this._stream._isRangeSupported;\n }\n\n get isStreamingSupported() {\n return this._stream._isStreamingSupported;\n }\n\n get contentLength() {\n return this._stream._contentLength;\n }\n\n async read() {\n if (this._queuedChunks.length > 0) {\n const chunk = this._queuedChunks.shift();\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = new PromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n }\n\n progressiveDone() {\n if (this._done) {\n return;\n }\n this._done = true;\n }\n}\n\n/** @implements {IPDFStreamRangeReader} */\nclass PDFDataTransportStreamRangeReader {\n constructor(stream, begin, end) {\n this._stream = stream;\n this._begin = begin;\n this._end = end;\n this._queuedChunk = null;\n this._requests = [];\n this._done = false;\n\n this.onProgress = null;\n }\n\n _enqueue(chunk) {\n if (this._done) {\n return; // ignore new data\n }\n if (this._requests.length === 0) {\n this._queuedChunk = chunk;\n } else {\n const requestsCapability = this._requests.shift();\n requestsCapability.resolve({ value: chunk, done: false });\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n }\n this._done = true;\n this._stream._removeRangeReader(this);\n }\n\n get isStreamingSupported() {\n return false;\n }\n\n async read() {\n if (this._queuedChunk) {\n const chunk = this._queuedChunk;\n this._queuedChunk = null;\n return { value: chunk, done: false };\n }\n if (this._done) {\n return { value: undefined, done: true };\n }\n const requestCapability = new PromiseCapability();\n this._requests.push(requestCapability);\n return requestCapability.promise;\n }\n\n cancel(reason) {\n this._done = true;\n for (const requestCapability of this._requests) {\n requestCapability.resolve({ value: undefined, done: true });\n }\n this._requests.length = 0;\n this._stream._removeRangeReader(this);\n }\n}\n\nexport { PDFDataTransportStream };\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * @typedef {Object} GlobalWorkerOptionsType\n * @property {Worker | null} workerPort - Defines global port for worker\n * process. Overrides the `workerSrc` option.\n * @property {string} workerSrc - A string containing the path and filename\n * of the worker file.\n *\n * NOTE: The `workerSrc` option should always be set, in order to prevent any\n * issues when using the PDF.js library.\n */\n\n/** @type {GlobalWorkerOptionsType} */\nconst GlobalWorkerOptions = Object.create(null);\n\nGlobalWorkerOptions.workerPort = null;\nGlobalWorkerOptions.workerSrc = \"\";\n\nexport { GlobalWorkerOptions };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./annotation_storage\").AnnotationStorage} AnnotationStorage */\n/** @typedef {import(\"./display_utils\").PageViewport} PageViewport */\n/** @typedef {import(\"../../web/interfaces\").IPDFLinkService} IPDFLinkService */\n\nimport { XfaText } from \"./xfa_text.js\";\n\n/**\n * @typedef {Object} XfaLayerParameters\n * @property {PageViewport} viewport\n * @property {HTMLDivElement} div\n * @property {Object} xfaHtml\n * @property {AnnotationStorage} [annotationStorage]\n * @property {IPDFLinkService} linkService\n * @property {string} [intent] - (default value is 'display').\n */\n\nclass XfaLayer {\n static setupStorage(html, id, element, storage, intent) {\n const storedData = storage.getValue(id, { value: null });\n switch (element.name) {\n case \"textarea\":\n if (storedData.value !== null) {\n html.textContent = storedData.value;\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, { value: event.target.value });\n });\n break;\n case \"input\":\n if (\n element.attributes.type === \"radio\" ||\n element.attributes.type === \"checkbox\"\n ) {\n if (storedData.value === element.attributes.xfaOn) {\n html.setAttribute(\"checked\", true);\n } else if (storedData.value === element.attributes.xfaOff) {\n // The checked attribute may have been set when opening the file,\n // unset through the UI and we're here because of printing.\n html.removeAttribute(\"checked\");\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"change\", event => {\n storage.setValue(id, {\n value: event.target.checked\n ? event.target.getAttribute(\"xfaOn\")\n : event.target.getAttribute(\"xfaOff\"),\n });\n });\n } else {\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n }\n if (intent === \"print\") {\n break;\n }\n html.addEventListener(\"input\", event => {\n storage.setValue(id, { value: event.target.value });\n });\n }\n break;\n case \"select\":\n if (storedData.value !== null) {\n html.setAttribute(\"value\", storedData.value);\n for (const option of element.children) {\n if (option.attributes.value === storedData.value) {\n option.attributes.selected = true;\n } else if (option.attributes.hasOwnProperty(\"selected\")) {\n delete option.attributes.selected;\n }\n }\n }\n html.addEventListener(\"input\", event => {\n const options = event.target.options;\n const value =\n options.selectedIndex === -1\n ? \"\"\n : options[options.selectedIndex].value;\n storage.setValue(id, { value });\n });\n break;\n }\n }\n\n static setAttributes({ html, element, storage = null, intent, linkService }) {\n const { attributes } = element;\n const isHTMLAnchorElement = html instanceof HTMLAnchorElement;\n\n if (attributes.type === \"radio\") {\n // Avoid to have a radio group when printing with the same as one\n // already displayed.\n attributes.name = `${attributes.name}-${intent}`;\n }\n for (const [key, value] of Object.entries(attributes)) {\n if (value === null || value === undefined) {\n continue;\n }\n\n switch (key) {\n case \"class\":\n if (value.length) {\n html.setAttribute(key, value.join(\" \"));\n }\n break;\n case \"dataId\":\n // We don't need to add dataId in the html object but it can\n // be useful to know its value when writing printing tests:\n // in this case, don't skip dataId to have its value.\n break;\n case \"id\":\n html.setAttribute(\"data-element-id\", value);\n break;\n case \"style\":\n Object.assign(html.style, value);\n break;\n case \"textContent\":\n html.textContent = value;\n break;\n default:\n if (!isHTMLAnchorElement || (key !== \"href\" && key !== \"newWindow\")) {\n html.setAttribute(key, value);\n }\n }\n }\n\n if (isHTMLAnchorElement) {\n linkService.addLinkAttributes(\n html,\n attributes.href,\n attributes.newWindow\n );\n }\n\n // Set the value after the others to be sure to overwrite any other values.\n if (storage && attributes.dataId) {\n this.setupStorage(html, attributes.dataId, element, storage);\n }\n }\n\n /**\n * Render the XFA layer.\n *\n * @param {XfaLayerParameters} parameters\n */\n static render(parameters) {\n const storage = parameters.annotationStorage;\n const linkService = parameters.linkService;\n const root = parameters.xfaHtml;\n const intent = parameters.intent || \"display\";\n const rootHtml = document.createElement(root.name);\n if (root.attributes) {\n this.setAttributes({\n html: rootHtml,\n element: root,\n intent,\n linkService,\n });\n }\n\n const isNotForRichText = intent !== \"richText\";\n const rootDiv = parameters.div;\n rootDiv.append(rootHtml);\n\n if (parameters.viewport) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n rootDiv.style.transform = transform;\n }\n\n // Set defaults.\n if (isNotForRichText) {\n rootDiv.setAttribute(\"class\", \"xfaLayer xfaFont\");\n }\n\n // Text nodes used for the text highlighter.\n const textDivs = [];\n\n // In the rich text context, it's possible to just have a text node without\n // a root element, so we handle this case here (see issue 17215).\n if (root.children.length === 0) {\n if (root.value) {\n const node = document.createTextNode(root.value);\n rootHtml.append(node);\n if (isNotForRichText && XfaText.shouldBuildText(root.name)) {\n textDivs.push(node);\n }\n }\n return { textDivs };\n }\n\n const stack = [[root, -1, rootHtml]];\n\n while (stack.length > 0) {\n const [parent, i, html] = stack.at(-1);\n if (i + 1 === parent.children.length) {\n stack.pop();\n continue;\n }\n\n const child = parent.children[++stack.at(-1)[1]];\n if (child === null) {\n continue;\n }\n\n const { name } = child;\n if (name === \"#text\") {\n const node = document.createTextNode(child.value);\n textDivs.push(node);\n html.append(node);\n continue;\n }\n\n const childHtml = child?.attributes?.xmlns\n ? document.createElementNS(child.attributes.xmlns, name)\n : document.createElement(name);\n\n html.append(childHtml);\n if (child.attributes) {\n this.setAttributes({\n html: childHtml,\n element: child,\n storage,\n intent,\n linkService,\n });\n }\n\n if (child.children?.length > 0) {\n stack.push([child, -1, childHtml]);\n } else if (child.value) {\n const node = document.createTextNode(child.value);\n if (isNotForRichText && XfaText.shouldBuildText(name)) {\n textDivs.push(node);\n }\n childHtml.append(node);\n }\n }\n\n /**\n * TODO: re-enable that stuff once we've JS implementation.\n * See https://bugzilla.mozilla.org/show_bug.cgi?id=1719465.\n *\n * for (const el of rootDiv.querySelectorAll(\n * \".xfaDisabled input, .xfaDisabled textarea\"\n * )) {\n * el.setAttribute(\"disabled\", true);\n * }\n * for (const el of rootDiv.querySelectorAll(\n * \".xfaReadOnly input, .xfaReadOnly textarea\"\n * )) {\n * el.setAttribute(\"readOnly\", true);\n * }\n */\n\n for (const el of rootDiv.querySelectorAll(\n \".xfaNonInteractive input, .xfaNonInteractive textarea\"\n )) {\n el.setAttribute(\"readOnly\", true);\n }\n\n return {\n textDivs,\n };\n }\n\n /**\n * Update the XFA layer.\n *\n * @param {XfaLayerParameters} parameters\n */\n static update(parameters) {\n const transform = `matrix(${parameters.viewport.transform.join(\",\")})`;\n parameters.div.style.transform = transform;\n parameters.div.hidden = false;\n }\n}\n\nexport { XfaLayer };\n","/* Copyright 2021 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** @typedef {import(\"./api\").TextContent} TextContent */\n\nclass XfaText {\n /**\n * Walk an XFA tree and create an array of text nodes that is compatible\n * with a regular PDFs TextContent. Currently, only TextItem.str is supported,\n * all other fields and styles haven't been implemented.\n *\n * @param {Object} xfa - An XFA fake DOM object.\n *\n * @returns {TextContent}\n */\n static textContent(xfa) {\n const items = [];\n const output = {\n items,\n styles: Object.create(null),\n };\n function walk(node) {\n if (!node) {\n return;\n }\n let str = null;\n const name = node.name;\n if (name === \"#text\") {\n str = node.value;\n } else if (!XfaText.shouldBuildText(name)) {\n return;\n } else if (node?.attributes?.textContent) {\n str = node.attributes.textContent;\n } else if (node.value) {\n str = node.value;\n }\n if (str !== null) {\n items.push({\n str,\n });\n }\n if (!node.children) {\n return;\n }\n for (const child of node.children) {\n walk(child);\n }\n }\n walk(xfa);\n return output;\n }\n\n /**\n * @param {string} name - DOM node name. (lower case)\n *\n * @returns {boolean} true if the DOM node should have a corresponding text\n * node.\n */\n static shouldBuildText(name) {\n return !(\n name === \"textarea\" ||\n name === \"input\" ||\n name === \"option\" ||\n name === \"select\"\n );\n }\n}\n\nexport { XfaText };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./display/api\").OnProgressParameters} OnProgressParameters */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./display/api\").PDFDocumentLoadingTask} PDFDocumentLoadingTask */\n/** @typedef {import(\"./display/api\").PDFDocumentProxy} PDFDocumentProxy */\n/** @typedef {import(\"./display/api\").PDFPageProxy} PDFPageProxy */\n/** @typedef {import(\"./display/api\").RenderTask} RenderTask */\n/** @typedef {import(\"./display/display_utils\").PageViewport} PageViewport */\n// eslint-disable-next-line max-len\n/** @typedef {import(\"./display/text_layer\").TextLayerRenderTask} TextLayerRenderTask */\n\nimport {\n AbortException,\n AnnotationEditorParamsType,\n AnnotationEditorType,\n AnnotationMode,\n CMapCompressionType,\n createValidAbsoluteUrl,\n FeatureTest,\n ImageKind,\n InvalidPDFException,\n MissingPDFException,\n normalizeUnicode,\n OPS,\n PasswordResponses,\n PermissionFlag,\n PromiseCapability,\n shadow,\n UnexpectedResponseException,\n Util,\n VerbosityLevel,\n} from \"./shared/util.js\";\nimport {\n build,\n getDocument,\n PDFDataRangeTransport,\n PDFWorker,\n version,\n} from \"./display/api.js\";\nimport {\n DOMSVGFactory,\n fetchData,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getXfaPageViewport,\n isDataScheme,\n isPdfFile,\n noContextMenu,\n PDFDateString,\n PixelsPerInch,\n RenderingCancelledException,\n setLayerDimensions,\n} from \"./display/display_utils.js\";\nimport { renderTextLayer, updateTextLayer } from \"./display/text_layer.js\";\nimport { AnnotationEditorLayer } from \"./display/editor/annotation_editor_layer.js\";\nimport { AnnotationEditorUIManager } from \"./display/editor/tools.js\";\nimport { AnnotationLayer } from \"./display/annotation_layer.js\";\nimport { DrawLayer } from \"./display/draw_layer.js\";\nimport { GlobalWorkerOptions } from \"./display/worker_options.js\";\nimport { Outliner } from \"./display/editor/outliner.js\";\nimport { XfaLayer } from \"./display/xfa_layer.js\";\n\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsVersion =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_VERSION\") : void 0;\n/* eslint-disable-next-line no-unused-vars */\nconst pdfjsBuild =\n typeof PDFJSDev !== \"undefined\" ? PDFJSDev.eval(\"BUNDLE_BUILD\") : void 0;\n\nexport {\n AbortException,\n AnnotationEditorLayer,\n AnnotationEditorParamsType,\n AnnotationEditorType,\n AnnotationEditorUIManager,\n AnnotationLayer,\n AnnotationMode,\n build,\n CMapCompressionType,\n createValidAbsoluteUrl,\n DOMSVGFactory,\n DrawLayer,\n FeatureTest,\n fetchData,\n getDocument,\n getFilenameFromUrl,\n getPdfFilenameFromUrl,\n getXfaPageViewport,\n GlobalWorkerOptions,\n ImageKind,\n InvalidPDFException,\n isDataScheme,\n isPdfFile,\n MissingPDFException,\n noContextMenu,\n normalizeUnicode,\n OPS,\n Outliner,\n PasswordResponses,\n PDFDataRangeTransport,\n PDFDateString,\n PDFWorker,\n PermissionFlag,\n PixelsPerInch,\n PromiseCapability,\n RenderingCancelledException,\n renderTextLayer,\n setLayerDimensions,\n shadow,\n UnexpectedResponseException,\n updateTextLayer,\n Util,\n VerbosityLevel,\n version,\n XfaLayer,\n};\n","/* Copyright 2018 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n AbortException,\n assert,\n MissingPDFException,\n PasswordException,\n PromiseCapability,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n} from \"./util.js\";\n\nconst CallbackKind = {\n UNKNOWN: 0,\n DATA: 1,\n ERROR: 2,\n};\n\nconst StreamKind = {\n UNKNOWN: 0,\n CANCEL: 1,\n CANCEL_COMPLETE: 2,\n CLOSE: 3,\n ENQUEUE: 4,\n ERROR: 5,\n PULL: 6,\n PULL_COMPLETE: 7,\n START_COMPLETE: 8,\n};\n\nfunction wrapReason(reason) {\n if (\n !(\n reason instanceof Error ||\n (typeof reason === \"object\" && reason !== null)\n )\n ) {\n unreachable(\n 'wrapReason: Expected \"reason\" to be a (possibly cloned) Error.'\n );\n }\n switch (reason.name) {\n case \"AbortException\":\n return new AbortException(reason.message);\n case \"MissingPDFException\":\n return new MissingPDFException(reason.message);\n case \"PasswordException\":\n return new PasswordException(reason.message, reason.code);\n case \"UnexpectedResponseException\":\n return new UnexpectedResponseException(reason.message, reason.status);\n case \"UnknownErrorException\":\n return new UnknownErrorException(reason.message, reason.details);\n default:\n return new UnknownErrorException(reason.message, reason.toString());\n }\n}\n\nclass MessageHandler {\n constructor(sourceName, targetName, comObj) {\n this.sourceName = sourceName;\n this.targetName = targetName;\n this.comObj = comObj;\n this.callbackId = 1;\n this.streamId = 1;\n this.streamSinks = Object.create(null);\n this.streamControllers = Object.create(null);\n this.callbackCapabilities = Object.create(null);\n this.actionHandler = Object.create(null);\n\n this._onComObjOnMessage = event => {\n const data = event.data;\n if (data.targetName !== this.sourceName) {\n return;\n }\n if (data.stream) {\n this.#processStreamMessage(data);\n return;\n }\n if (data.callback) {\n const callbackId = data.callbackId;\n const capability = this.callbackCapabilities[callbackId];\n if (!capability) {\n throw new Error(`Cannot resolve callback ${callbackId}`);\n }\n delete this.callbackCapabilities[callbackId];\n\n if (data.callback === CallbackKind.DATA) {\n capability.resolve(data.data);\n } else if (data.callback === CallbackKind.ERROR) {\n capability.reject(wrapReason(data.reason));\n } else {\n throw new Error(\"Unexpected callback case\");\n }\n return;\n }\n const action = this.actionHandler[data.action];\n if (!action) {\n throw new Error(`Unknown action from worker: ${data.action}`);\n }\n if (data.callbackId) {\n const cbSourceName = this.sourceName;\n const cbTargetName = data.sourceName;\n\n new Promise(function (resolve) {\n resolve(action(data.data));\n }).then(\n function (result) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.DATA,\n callbackId: data.callbackId,\n data: result,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName: cbSourceName,\n targetName: cbTargetName,\n callback: CallbackKind.ERROR,\n callbackId: data.callbackId,\n reason: wrapReason(reason),\n });\n }\n );\n return;\n }\n if (data.streamId) {\n this.#createStreamSink(data);\n return;\n }\n action(data.data);\n };\n comObj.addEventListener(\"message\", this._onComObjOnMessage);\n }\n\n on(actionName, handler) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n typeof handler === \"function\",\n 'MessageHandler.on: Expected \"handler\" to be a function.'\n );\n }\n const ah = this.actionHandler;\n if (ah[actionName]) {\n throw new Error(`There is already an actionName called \"${actionName}\"`);\n }\n ah[actionName] = handler;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n */\n send(actionName, data, transfers) {\n this.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n data,\n },\n transfers\n );\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expects that the other side will callback with the response.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {Promise} Promise to be resolved with response data.\n */\n sendWithPromise(actionName, data, transfers) {\n const callbackId = this.callbackId++;\n const capability = new PromiseCapability();\n this.callbackCapabilities[callbackId] = capability;\n try {\n this.comObj.postMessage(\n {\n sourceName: this.sourceName,\n targetName: this.targetName,\n action: actionName,\n callbackId,\n data,\n },\n transfers\n );\n } catch (ex) {\n capability.reject(ex);\n }\n return capability.promise;\n }\n\n /**\n * Sends a message to the comObj to invoke the action with the supplied data.\n * Expect that the other side will callback to signal 'start_complete'.\n * @param {string} actionName - Action to call.\n * @param {JSON} data - JSON data to send.\n * @param {Object} queueingStrategy - Strategy to signal backpressure based on\n * internal queue.\n * @param {Array} [transfers] - List of transfers/ArrayBuffers.\n * @returns {ReadableStream} ReadableStream to read data in chunks.\n */\n sendWithStream(actionName, data, queueingStrategy, transfers) {\n const streamId = this.streamId++,\n sourceName = this.sourceName,\n targetName = this.targetName,\n comObj = this.comObj;\n\n return new ReadableStream(\n {\n start: controller => {\n const startCapability = new PromiseCapability();\n this.streamControllers[streamId] = {\n controller,\n startCall: startCapability,\n pullCall: null,\n cancelCall: null,\n isClosed: false,\n };\n comObj.postMessage(\n {\n sourceName,\n targetName,\n action: actionName,\n streamId,\n data,\n desiredSize: controller.desiredSize,\n },\n transfers\n );\n // Return Promise for Async process, to signal success/failure.\n return startCapability.promise;\n },\n\n pull: controller => {\n const pullCapability = new PromiseCapability();\n this.streamControllers[streamId].pullCall = pullCapability;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL,\n streamId,\n desiredSize: controller.desiredSize,\n });\n // Returning Promise will not call \"pull\"\n // again until current pull is resolved.\n return pullCapability.promise;\n },\n\n cancel: reason => {\n assert(reason instanceof Error, \"cancel must have a valid reason\");\n const cancelCapability = new PromiseCapability();\n this.streamControllers[streamId].cancelCall = cancelCapability;\n this.streamControllers[streamId].isClosed = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL,\n streamId,\n reason: wrapReason(reason),\n });\n // Return Promise to signal success or failure.\n return cancelCapability.promise;\n },\n },\n queueingStrategy\n );\n }\n\n #createStreamSink(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const self = this,\n action = this.actionHandler[data.action];\n\n const streamSink = {\n enqueue(chunk, size = 1, transfers) {\n if (this.isCancelled) {\n return;\n }\n const lastDesiredSize = this.desiredSize;\n this.desiredSize -= size;\n // Enqueue decreases the desiredSize property of sink,\n // so when it changes from positive to negative,\n // set ready as unresolved promise.\n if (lastDesiredSize > 0 && this.desiredSize <= 0) {\n this.sinkCapability = new PromiseCapability();\n this.ready = this.sinkCapability.promise;\n }\n comObj.postMessage(\n {\n sourceName,\n targetName,\n stream: StreamKind.ENQUEUE,\n streamId,\n chunk,\n },\n transfers\n );\n },\n\n close() {\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CLOSE,\n streamId,\n });\n delete self.streamSinks[streamId];\n },\n\n error(reason) {\n assert(reason instanceof Error, \"error must have a valid reason\");\n if (this.isCancelled) {\n return;\n }\n this.isCancelled = true;\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.ERROR,\n streamId,\n reason: wrapReason(reason),\n });\n },\n\n sinkCapability: new PromiseCapability(),\n onPull: null,\n onCancel: null,\n isCancelled: false,\n desiredSize: data.desiredSize,\n ready: null,\n };\n\n streamSink.sinkCapability.resolve();\n streamSink.ready = streamSink.sinkCapability.promise;\n this.streamSinks[streamId] = streamSink;\n\n new Promise(function (resolve) {\n resolve(action(data.data, streamSink));\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.START_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n }\n\n #processStreamMessage(data) {\n const streamId = data.streamId,\n sourceName = this.sourceName,\n targetName = data.sourceName,\n comObj = this.comObj;\n const streamController = this.streamControllers[streamId],\n streamSink = this.streamSinks[streamId];\n\n switch (data.stream) {\n case StreamKind.START_COMPLETE:\n if (data.success) {\n streamController.startCall.resolve();\n } else {\n streamController.startCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL_COMPLETE:\n if (data.success) {\n streamController.pullCall.resolve();\n } else {\n streamController.pullCall.reject(wrapReason(data.reason));\n }\n break;\n case StreamKind.PULL:\n // Ignore any pull after close is called.\n if (!streamSink) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\n break;\n }\n // Pull increases the desiredSize property of sink, so when it changes\n // from negative to positive, set ready property as resolved promise.\n if (streamSink.desiredSize <= 0 && data.desiredSize > 0) {\n streamSink.sinkCapability.resolve();\n }\n // Reset desiredSize property of sink on every pull.\n streamSink.desiredSize = data.desiredSize;\n\n new Promise(function (resolve) {\n resolve(streamSink.onPull?.());\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.PULL_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n break;\n case StreamKind.ENQUEUE:\n assert(streamController, \"enqueue should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.controller.enqueue(data.chunk);\n break;\n case StreamKind.CLOSE:\n assert(streamController, \"close should have stream controller\");\n if (streamController.isClosed) {\n break;\n }\n streamController.isClosed = true;\n streamController.controller.close();\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.ERROR:\n assert(streamController, \"error should have stream controller\");\n streamController.controller.error(wrapReason(data.reason));\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL_COMPLETE:\n if (data.success) {\n streamController.cancelCall.resolve();\n } else {\n streamController.cancelCall.reject(wrapReason(data.reason));\n }\n this.#deleteStreamController(streamController, streamId);\n break;\n case StreamKind.CANCEL:\n if (!streamSink) {\n break;\n }\n\n new Promise(function (resolve) {\n resolve(streamSink.onCancel?.(wrapReason(data.reason)));\n }).then(\n function () {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n success: true,\n });\n },\n function (reason) {\n comObj.postMessage({\n sourceName,\n targetName,\n stream: StreamKind.CANCEL_COMPLETE,\n streamId,\n reason: wrapReason(reason),\n });\n }\n );\n streamSink.sinkCapability.reject(wrapReason(data.reason));\n streamSink.isCancelled = true;\n delete this.streamSinks[streamId];\n break;\n default:\n throw new Error(\"Unexpected stream case\");\n }\n }\n\n async #deleteStreamController(streamController, streamId) {\n // Delete the `streamController` only when the start, pull, and cancel\n // capabilities have settled, to prevent `TypeError`s.\n await Promise.allSettled([\n streamController.startCall?.promise,\n streamController.pullCall?.promise,\n streamController.cancelCall?.promise,\n ]);\n delete this.streamControllers[streamId];\n }\n\n destroy() {\n this.comObj.removeEventListener(\"message\", this._onComObjOnMessage);\n }\n}\n\nexport { MessageHandler };\n","/* Copyright 2014 Opera Software ASA\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n *\n *\n * Based on https://code.google.com/p/smhasher/wiki/MurmurHash3.\n * Hashes roughly 100 KB per millisecond on i7 3.4 GHz.\n */\n\nimport { isArrayBuffer } from \"./util.js\";\n\nconst SEED = 0xc3d2e1f0;\n// Workaround for missing math precision in JS.\nconst MASK_HIGH = 0xffff0000;\nconst MASK_LOW = 0xffff;\n\nclass MurmurHash3_64 {\n constructor(seed) {\n this.h1 = seed ? seed & 0xffffffff : SEED;\n this.h2 = seed ? seed & 0xffffffff : SEED;\n }\n\n update(input) {\n let data, length;\n if (typeof input === \"string\") {\n data = new Uint8Array(input.length * 2);\n length = 0;\n for (let i = 0, ii = input.length; i < ii; i++) {\n const code = input.charCodeAt(i);\n if (code <= 0xff) {\n data[length++] = code;\n } else {\n data[length++] = code >>> 8;\n data[length++] = code & 0xff;\n }\n }\n } else if (isArrayBuffer(input)) {\n data = input.slice();\n length = data.byteLength;\n } else {\n throw new Error(\n \"Wrong data format in MurmurHash3_64_update. \" +\n \"Input must be a string or array.\"\n );\n }\n\n const blockCounts = length >> 2;\n const tailLength = length - blockCounts * 4;\n // We don't care about endianness here.\n const dataUint32 = new Uint32Array(data.buffer, 0, blockCounts);\n let k1 = 0,\n k2 = 0;\n let h1 = this.h1,\n h2 = this.h2;\n const C1 = 0xcc9e2d51,\n C2 = 0x1b873593;\n const C1_LOW = C1 & MASK_LOW,\n C2_LOW = C2 & MASK_LOW;\n\n for (let i = 0; i < blockCounts; i++) {\n if (i & 1) {\n k1 = dataUint32[i];\n k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n h1 ^= k1;\n h1 = (h1 << 13) | (h1 >>> 19);\n h1 = h1 * 5 + 0xe6546b64;\n } else {\n k2 = dataUint32[i];\n k2 = ((k2 * C1) & MASK_HIGH) | ((k2 * C1_LOW) & MASK_LOW);\n k2 = (k2 << 15) | (k2 >>> 17);\n k2 = ((k2 * C2) & MASK_HIGH) | ((k2 * C2_LOW) & MASK_LOW);\n h2 ^= k2;\n h2 = (h2 << 13) | (h2 >>> 19);\n h2 = h2 * 5 + 0xe6546b64;\n }\n }\n\n k1 = 0;\n\n switch (tailLength) {\n case 3:\n k1 ^= data[blockCounts * 4 + 2] << 16;\n /* falls through */\n case 2:\n k1 ^= data[blockCounts * 4 + 1] << 8;\n /* falls through */\n case 1:\n k1 ^= data[blockCounts * 4];\n /* falls through */\n\n k1 = ((k1 * C1) & MASK_HIGH) | ((k1 * C1_LOW) & MASK_LOW);\n k1 = (k1 << 15) | (k1 >>> 17);\n k1 = ((k1 * C2) & MASK_HIGH) | ((k1 * C2_LOW) & MASK_LOW);\n if (blockCounts & 1) {\n h1 ^= k1;\n } else {\n h2 ^= k1;\n }\n }\n\n this.h1 = h1;\n this.h2 = h2;\n }\n\n hexdigest() {\n let h1 = this.h1,\n h2 = this.h2;\n\n h1 ^= h2 >>> 1;\n h1 = ((h1 * 0xed558ccd) & MASK_HIGH) | ((h1 * 0x8ccd) & MASK_LOW);\n h2 =\n ((h2 * 0xff51afd7) & MASK_HIGH) |\n (((((h2 << 16) | (h1 >>> 16)) * 0xafd7ed55) & MASK_HIGH) >>> 16);\n h1 ^= h2 >>> 1;\n h1 = ((h1 * 0x1a85ec53) & MASK_HIGH) | ((h1 * 0xec53) & MASK_LOW);\n h2 =\n ((h2 * 0xc4ceb9fe) & MASK_HIGH) |\n (((((h2 << 16) | (h1 >>> 16)) * 0xb9fe1a85) & MASK_HIGH) >>> 16);\n h1 ^= h2 >>> 1;\n\n return (\n (h1 >>> 0).toString(16).padStart(8, \"0\") +\n (h2 >>> 0).toString(16).padStart(8, \"0\")\n );\n }\n}\n\nexport { MurmurHash3_64 };\n","/* Copyright 2012 Mozilla Foundation\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n/* globals process */\n\n// NW.js / Electron is a browser context, but copies some Node.js objects; see\n// http://docs.nwjs.io/en/latest/For%20Users/Advanced/JavaScript%20Contexts%20in%20NW.js/#access-nodejs-and-nwjs-api-in-browser-context\n// https://www.electronjs.org/docs/api/process#processversionselectron-readonly\n// https://www.electronjs.org/docs/api/process#processtype-readonly\nconst isNodeJS =\n (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"GENERIC\")) &&\n typeof process === \"object\" &&\n process + \"\" === \"[object process]\" &&\n !process.versions.nw &&\n !(process.versions.electron && process.type && process.type !== \"browser\");\n\nconst IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];\nconst FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];\n\nconst MAX_IMAGE_SIZE_TO_CACHE = 10e6; // Ten megabytes.\n\n// Represent the percentage of the height of a single-line field over\n// the font size. Acrobat seems to use this value.\nconst LINE_FACTOR = 1.35;\nconst LINE_DESCENT_FACTOR = 0.35;\nconst BASELINE_FACTOR = LINE_DESCENT_FACTOR / LINE_FACTOR;\n\n/**\n * Refer to the `WorkerTransport.getRenderingIntent`-method in the API, to see\n * how these flags are being used:\n * - ANY, DISPLAY, and PRINT are the normal rendering intents, note the\n * `PDFPageProxy.{render, getOperatorList, getAnnotations}`-methods.\n * - ANNOTATIONS_FORMS, ANNOTATIONS_STORAGE, ANNOTATIONS_DISABLE control which\n * annotations are rendered onto the canvas (i.e. by being included in the\n * operatorList), note the `PDFPageProxy.{render, getOperatorList}`-methods\n * and their `annotationMode`-option.\n * - OPLIST is used with the `PDFPageProxy.getOperatorList`-method, note the\n * `OperatorList`-constructor (on the worker-thread).\n */\nconst RenderingIntentFlag = {\n ANY: 0x01,\n DISPLAY: 0x02,\n PRINT: 0x04,\n SAVE: 0x08,\n ANNOTATIONS_FORMS: 0x10,\n ANNOTATIONS_STORAGE: 0x20,\n ANNOTATIONS_DISABLE: 0x40,\n OPLIST: 0x100,\n};\n\nconst AnnotationMode = {\n DISABLE: 0,\n ENABLE: 1,\n ENABLE_FORMS: 2,\n ENABLE_STORAGE: 3,\n};\n\nconst AnnotationEditorPrefix = \"pdfjs_internal_editor_\";\n\nconst AnnotationEditorType = {\n DISABLE: -1,\n NONE: 0,\n FREETEXT: 3,\n HIGHLIGHT: 9,\n STAMP: 13,\n INK: 15,\n};\n\nconst AnnotationEditorParamsType = {\n RESIZE: 1,\n CREATE: 2,\n FREETEXT_SIZE: 11,\n FREETEXT_COLOR: 12,\n FREETEXT_OPACITY: 13,\n INK_COLOR: 21,\n INK_THICKNESS: 22,\n INK_OPACITY: 23,\n};\n\n// Permission flags from Table 22, Section 7.6.3.2 of the PDF specification.\nconst PermissionFlag = {\n PRINT: 0x04,\n MODIFY_CONTENTS: 0x08,\n COPY: 0x10,\n MODIFY_ANNOTATIONS: 0x20,\n FILL_INTERACTIVE_FORMS: 0x100,\n COPY_FOR_ACCESSIBILITY: 0x200,\n ASSEMBLE: 0x400,\n PRINT_HIGH_QUALITY: 0x800,\n};\n\nconst TextRenderingMode = {\n FILL: 0,\n STROKE: 1,\n FILL_STROKE: 2,\n INVISIBLE: 3,\n FILL_ADD_TO_PATH: 4,\n STROKE_ADD_TO_PATH: 5,\n FILL_STROKE_ADD_TO_PATH: 6,\n ADD_TO_PATH: 7,\n FILL_STROKE_MASK: 3,\n ADD_TO_PATH_FLAG: 4,\n};\n\nconst ImageKind = {\n GRAYSCALE_1BPP: 1,\n RGB_24BPP: 2,\n RGBA_32BPP: 3,\n};\n\nconst AnnotationType = {\n TEXT: 1,\n LINK: 2,\n FREETEXT: 3,\n LINE: 4,\n SQUARE: 5,\n CIRCLE: 6,\n POLYGON: 7,\n POLYLINE: 8,\n HIGHLIGHT: 9,\n UNDERLINE: 10,\n SQUIGGLY: 11,\n STRIKEOUT: 12,\n STAMP: 13,\n CARET: 14,\n INK: 15,\n POPUP: 16,\n FILEATTACHMENT: 17,\n SOUND: 18,\n MOVIE: 19,\n WIDGET: 20,\n SCREEN: 21,\n PRINTERMARK: 22,\n TRAPNET: 23,\n WATERMARK: 24,\n THREED: 25,\n REDACT: 26,\n};\n\nconst AnnotationReplyType = {\n GROUP: \"Group\",\n REPLY: \"R\",\n};\n\nconst AnnotationFlag = {\n INVISIBLE: 0x01,\n HIDDEN: 0x02,\n PRINT: 0x04,\n NOZOOM: 0x08,\n NOROTATE: 0x10,\n NOVIEW: 0x20,\n READONLY: 0x40,\n LOCKED: 0x80,\n TOGGLENOVIEW: 0x100,\n LOCKEDCONTENTS: 0x200,\n};\n\nconst AnnotationFieldFlag = {\n READONLY: 0x0000001,\n REQUIRED: 0x0000002,\n NOEXPORT: 0x0000004,\n MULTILINE: 0x0001000,\n PASSWORD: 0x0002000,\n NOTOGGLETOOFF: 0x0004000,\n RADIO: 0x0008000,\n PUSHBUTTON: 0x0010000,\n COMBO: 0x0020000,\n EDIT: 0x0040000,\n SORT: 0x0080000,\n FILESELECT: 0x0100000,\n MULTISELECT: 0x0200000,\n DONOTSPELLCHECK: 0x0400000,\n DONOTSCROLL: 0x0800000,\n COMB: 0x1000000,\n RICHTEXT: 0x2000000,\n RADIOSINUNISON: 0x2000000,\n COMMITONSELCHANGE: 0x4000000,\n};\n\nconst AnnotationBorderStyleType = {\n SOLID: 1,\n DASHED: 2,\n BEVELED: 3,\n INSET: 4,\n UNDERLINE: 5,\n};\n\nconst AnnotationActionEventType = {\n E: \"Mouse Enter\",\n X: \"Mouse Exit\",\n D: \"Mouse Down\",\n U: \"Mouse Up\",\n Fo: \"Focus\",\n Bl: \"Blur\",\n PO: \"PageOpen\",\n PC: \"PageClose\",\n PV: \"PageVisible\",\n PI: \"PageInvisible\",\n K: \"Keystroke\",\n F: \"Format\",\n V: \"Validate\",\n C: \"Calculate\",\n};\n\nconst DocumentActionEventType = {\n WC: \"WillClose\",\n WS: \"WillSave\",\n DS: \"DidSave\",\n WP: \"WillPrint\",\n DP: \"DidPrint\",\n};\n\nconst PageActionEventType = {\n O: \"PageOpen\",\n C: \"PageClose\",\n};\n\nconst VerbosityLevel = {\n ERRORS: 0,\n WARNINGS: 1,\n INFOS: 5,\n};\n\nconst CMapCompressionType = {\n NONE: 0,\n BINARY: 1,\n};\n\n// All the possible operations for an operator list.\nconst OPS = {\n // Intentionally start from 1 so it is easy to spot bad operators that will be\n // 0's.\n // PLEASE NOTE: We purposely keep any removed operators commented out, since\n // re-numbering the list would risk breaking third-party users.\n dependency: 1,\n setLineWidth: 2,\n setLineCap: 3,\n setLineJoin: 4,\n setMiterLimit: 5,\n setDash: 6,\n setRenderingIntent: 7,\n setFlatness: 8,\n setGState: 9,\n save: 10,\n restore: 11,\n transform: 12,\n moveTo: 13,\n lineTo: 14,\n curveTo: 15,\n curveTo2: 16,\n curveTo3: 17,\n closePath: 18,\n rectangle: 19,\n stroke: 20,\n closeStroke: 21,\n fill: 22,\n eoFill: 23,\n fillStroke: 24,\n eoFillStroke: 25,\n closeFillStroke: 26,\n closeEOFillStroke: 27,\n endPath: 28,\n clip: 29,\n eoClip: 30,\n beginText: 31,\n endText: 32,\n setCharSpacing: 33,\n setWordSpacing: 34,\n setHScale: 35,\n setLeading: 36,\n setFont: 37,\n setTextRenderingMode: 38,\n setTextRise: 39,\n moveText: 40,\n setLeadingMoveText: 41,\n setTextMatrix: 42,\n nextLine: 43,\n showText: 44,\n showSpacedText: 45,\n nextLineShowText: 46,\n nextLineSetSpacingShowText: 47,\n setCharWidth: 48,\n setCharWidthAndBounds: 49,\n setStrokeColorSpace: 50,\n setFillColorSpace: 51,\n setStrokeColor: 52,\n setStrokeColorN: 53,\n setFillColor: 54,\n setFillColorN: 55,\n setStrokeGray: 56,\n setFillGray: 57,\n setStrokeRGBColor: 58,\n setFillRGBColor: 59,\n setStrokeCMYKColor: 60,\n setFillCMYKColor: 61,\n shadingFill: 62,\n beginInlineImage: 63,\n beginImageData: 64,\n endInlineImage: 65,\n paintXObject: 66,\n markPoint: 67,\n markPointProps: 68,\n beginMarkedContent: 69,\n beginMarkedContentProps: 70,\n endMarkedContent: 71,\n beginCompat: 72,\n endCompat: 73,\n paintFormXObjectBegin: 74,\n paintFormXObjectEnd: 75,\n beginGroup: 76,\n endGroup: 77,\n // beginAnnotations: 78,\n // endAnnotations: 79,\n beginAnnotation: 80,\n endAnnotation: 81,\n // paintJpegXObject: 82,\n paintImageMaskXObject: 83,\n paintImageMaskXObjectGroup: 84,\n paintImageXObject: 85,\n paintInlineImageXObject: 86,\n paintInlineImageXObjectGroup: 87,\n paintImageXObjectRepeat: 88,\n paintImageMaskXObjectRepeat: 89,\n paintSolidColorImageMask: 90,\n constructPath: 91,\n};\n\nconst PasswordResponses = {\n NEED_PASSWORD: 1,\n INCORRECT_PASSWORD: 2,\n};\n\nlet verbosity = VerbosityLevel.WARNINGS;\n\nfunction setVerbosityLevel(level) {\n if (Number.isInteger(level)) {\n verbosity = level;\n }\n}\n\nfunction getVerbosityLevel() {\n return verbosity;\n}\n\n// A notice for devs. These are good for things that are helpful to devs, such\n// as warning that Workers were disabled, which is important to devs but not\n// end users.\nfunction info(msg) {\n if (verbosity >= VerbosityLevel.INFOS) {\n console.log(`Info: ${msg}`);\n }\n}\n\n// Non-fatal warnings.\nfunction warn(msg) {\n if (verbosity >= VerbosityLevel.WARNINGS) {\n console.log(`Warning: ${msg}`);\n }\n}\n\nfunction unreachable(msg) {\n throw new Error(msg);\n}\n\nfunction assert(cond, msg) {\n if (!cond) {\n unreachable(msg);\n }\n}\n\n// Checks if URLs use one of the allowed protocols, e.g. to avoid XSS.\nfunction _isValidProtocol(url) {\n switch (url?.protocol) {\n case \"http:\":\n case \"https:\":\n case \"ftp:\":\n case \"mailto:\":\n case \"tel:\":\n return true;\n default:\n return false;\n }\n}\n\n/**\n * Attempts to create a valid absolute URL.\n *\n * @param {URL|string} url - An absolute, or relative, URL.\n * @param {URL|string} [baseUrl] - An absolute URL.\n * @param {Object} [options]\n * @returns Either a valid {URL}, or `null` otherwise.\n */\nfunction createValidAbsoluteUrl(url, baseUrl = null, options = null) {\n if (!url) {\n return null;\n }\n try {\n if (options && typeof url === \"string\") {\n // Let URLs beginning with \"www.\" default to using the \"http://\" protocol.\n if (options.addDefaultProtocol && url.startsWith(\"www.\")) {\n const dots = url.match(/\\./g);\n // Avoid accidentally matching a *relative* URL pointing to a file named\n // e.g. \"www.pdf\" or similar.\n if (dots?.length >= 2) {\n url = `http://${url}`;\n }\n }\n\n // According to ISO 32000-1:2008, section 12.6.4.7, URIs should be encoded\n // in 7-bit ASCII. Some bad PDFs use UTF-8 encoding; see bug 1122280.\n if (options.tryConvertEncoding) {\n try {\n url = stringToUTF8String(url);\n } catch {}\n }\n }\n\n const absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);\n if (_isValidProtocol(absoluteUrl)) {\n return absoluteUrl;\n }\n } catch {\n /* `new URL()` will throw on incorrect data. */\n }\n return null;\n}\n\nfunction shadow(obj, prop, value, nonSerializable = false) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n prop in obj,\n `shadow: Property \"${prop && prop.toString()}\" not found in object.`\n );\n }\n Object.defineProperty(obj, prop, {\n value,\n enumerable: !nonSerializable,\n configurable: true,\n writable: false,\n });\n return value;\n}\n\n/**\n * @type {any}\n */\nconst BaseException = (function BaseExceptionClosure() {\n // eslint-disable-next-line no-shadow\n function BaseException(message, name) {\n if (this.constructor === BaseException) {\n unreachable(\"Cannot initialize BaseException.\");\n }\n this.message = message;\n this.name = name;\n }\n BaseException.prototype = new Error();\n BaseException.constructor = BaseException;\n\n return BaseException;\n})();\n\nclass PasswordException extends BaseException {\n constructor(msg, code) {\n super(msg, \"PasswordException\");\n this.code = code;\n }\n}\n\nclass UnknownErrorException extends BaseException {\n constructor(msg, details) {\n super(msg, \"UnknownErrorException\");\n this.details = details;\n }\n}\n\nclass InvalidPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"InvalidPDFException\");\n }\n}\n\nclass MissingPDFException extends BaseException {\n constructor(msg) {\n super(msg, \"MissingPDFException\");\n }\n}\n\nclass UnexpectedResponseException extends BaseException {\n constructor(msg, status) {\n super(msg, \"UnexpectedResponseException\");\n this.status = status;\n }\n}\n\n/**\n * Error caused during parsing PDF data.\n */\nclass FormatError extends BaseException {\n constructor(msg) {\n super(msg, \"FormatError\");\n }\n}\n\n/**\n * Error used to indicate task cancellation.\n */\nclass AbortException extends BaseException {\n constructor(msg) {\n super(msg, \"AbortException\");\n }\n}\n\nfunction bytesToString(bytes) {\n if (typeof bytes !== \"object\" || bytes?.length === undefined) {\n unreachable(\"Invalid argument for bytesToString\");\n }\n const length = bytes.length;\n const MAX_ARGUMENT_COUNT = 8192;\n if (length < MAX_ARGUMENT_COUNT) {\n return String.fromCharCode.apply(null, bytes);\n }\n const strBuf = [];\n for (let i = 0; i < length; i += MAX_ARGUMENT_COUNT) {\n const chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);\n const chunk = bytes.subarray(i, chunkEnd);\n strBuf.push(String.fromCharCode.apply(null, chunk));\n }\n return strBuf.join(\"\");\n}\n\nfunction stringToBytes(str) {\n if (typeof str !== \"string\") {\n unreachable(\"Invalid argument for stringToBytes\");\n }\n const length = str.length;\n const bytes = new Uint8Array(length);\n for (let i = 0; i < length; ++i) {\n bytes[i] = str.charCodeAt(i) & 0xff;\n }\n return bytes;\n}\n\nfunction string32(value) {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(\n typeof value === \"number\" && Math.abs(value) < 2 ** 32,\n `string32: Unexpected input \"${value}\".`\n );\n }\n return String.fromCharCode(\n (value >> 24) & 0xff,\n (value >> 16) & 0xff,\n (value >> 8) & 0xff,\n value & 0xff\n );\n}\n\nfunction objectSize(obj) {\n return Object.keys(obj).length;\n}\n\n// Ensure that the returned Object has a `null` prototype; hence why\n// `Object.fromEntries(...)` is not used.\nfunction objectFromMap(map) {\n const obj = Object.create(null);\n for (const [key, value] of map) {\n obj[key] = value;\n }\n return obj;\n}\n\n// Checks the endianness of the platform.\nfunction isLittleEndian() {\n const buffer8 = new Uint8Array(4);\n buffer8[0] = 1;\n const view32 = new Uint32Array(buffer8.buffer, 0, 1);\n return view32[0] === 1;\n}\n\n// Checks if it's possible to eval JS expressions.\nfunction isEvalSupported() {\n try {\n new Function(\"\"); // eslint-disable-line no-new, no-new-func\n return true;\n } catch {\n return false;\n }\n}\n\nclass FeatureTest {\n static get isLittleEndian() {\n return shadow(this, \"isLittleEndian\", isLittleEndian());\n }\n\n static get isEvalSupported() {\n return shadow(this, \"isEvalSupported\", isEvalSupported());\n }\n\n static get isOffscreenCanvasSupported() {\n return shadow(\n this,\n \"isOffscreenCanvasSupported\",\n typeof OffscreenCanvas !== \"undefined\"\n );\n }\n\n static get platform() {\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n (typeof navigator !== \"undefined\" &&\n typeof navigator?.platform === \"string\")\n ) {\n return shadow(this, \"platform\", {\n isMac: navigator.platform.includes(\"Mac\"),\n });\n }\n return shadow(this, \"platform\", { isMac: false });\n }\n\n static get isCSSRoundSupported() {\n return shadow(\n this,\n \"isCSSRoundSupported\",\n globalThis.CSS?.supports?.(\"width: round(1.5px, 1px)\")\n );\n }\n}\n\nconst hexNumbers = [...Array(256).keys()].map(n =>\n n.toString(16).padStart(2, \"0\")\n);\n\nclass Util {\n static makeHexColor(r, g, b) {\n return `#${hexNumbers[r]}${hexNumbers[g]}${hexNumbers[b]}`;\n }\n\n // Apply a scaling matrix to some min/max values.\n // If a scaling factor is negative then min and max must be\n // swaped.\n static scaleMinMax(transform, minMax) {\n let temp;\n if (transform[0]) {\n if (transform[0] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n minMax[0] *= transform[0];\n minMax[1] *= transform[0];\n\n if (transform[3] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n minMax[2] *= transform[3];\n minMax[3] *= transform[3];\n } else {\n temp = minMax[0];\n minMax[0] = minMax[2];\n minMax[2] = temp;\n temp = minMax[1];\n minMax[1] = minMax[3];\n minMax[3] = temp;\n\n if (transform[1] < 0) {\n temp = minMax[2];\n minMax[2] = minMax[3];\n minMax[3] = temp;\n }\n minMax[2] *= transform[1];\n minMax[3] *= transform[1];\n\n if (transform[2] < 0) {\n temp = minMax[0];\n minMax[0] = minMax[1];\n minMax[1] = temp;\n }\n minMax[0] *= transform[2];\n minMax[1] *= transform[2];\n }\n minMax[0] += transform[4];\n minMax[1] += transform[4];\n minMax[2] += transform[5];\n minMax[3] += transform[5];\n }\n\n // Concatenates two transformation matrices together and returns the result.\n static transform(m1, m2) {\n return [\n m1[0] * m2[0] + m1[2] * m2[1],\n m1[1] * m2[0] + m1[3] * m2[1],\n m1[0] * m2[2] + m1[2] * m2[3],\n m1[1] * m2[2] + m1[3] * m2[3],\n m1[0] * m2[4] + m1[2] * m2[5] + m1[4],\n m1[1] * m2[4] + m1[3] * m2[5] + m1[5],\n ];\n }\n\n // For 2d affine transforms\n static applyTransform(p, m) {\n const xt = p[0] * m[0] + p[1] * m[2] + m[4];\n const yt = p[0] * m[1] + p[1] * m[3] + m[5];\n return [xt, yt];\n }\n\n static applyInverseTransform(p, m) {\n const d = m[0] * m[3] - m[1] * m[2];\n const xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;\n const yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;\n return [xt, yt];\n }\n\n // Applies the transform to the rectangle and finds the minimum axially\n // aligned bounding box.\n static getAxialAlignedBoundingBox(r, m) {\n const p1 = this.applyTransform(r, m);\n const p2 = this.applyTransform(r.slice(2, 4), m);\n const p3 = this.applyTransform([r[0], r[3]], m);\n const p4 = this.applyTransform([r[2], r[1]], m);\n return [\n Math.min(p1[0], p2[0], p3[0], p4[0]),\n Math.min(p1[1], p2[1], p3[1], p4[1]),\n Math.max(p1[0], p2[0], p3[0], p4[0]),\n Math.max(p1[1], p2[1], p3[1], p4[1]),\n ];\n }\n\n static inverseTransform(m) {\n const d = m[0] * m[3] - m[1] * m[2];\n return [\n m[3] / d,\n -m[1] / d,\n -m[2] / d,\n m[0] / d,\n (m[2] * m[5] - m[4] * m[3]) / d,\n (m[4] * m[1] - m[5] * m[0]) / d,\n ];\n }\n\n // This calculation uses Singular Value Decomposition.\n // The SVD can be represented with formula A = USV. We are interested in the\n // matrix S here because it represents the scale values.\n static singularValueDecompose2dScale(m) {\n const transpose = [m[0], m[2], m[1], m[3]];\n\n // Multiply matrix m with its transpose.\n const a = m[0] * transpose[0] + m[1] * transpose[2];\n const b = m[0] * transpose[1] + m[1] * transpose[3];\n const c = m[2] * transpose[0] + m[3] * transpose[2];\n const d = m[2] * transpose[1] + m[3] * transpose[3];\n\n // Solve the second degree polynomial to get roots.\n const first = (a + d) / 2;\n const second = Math.sqrt((a + d) ** 2 - 4 * (a * d - c * b)) / 2;\n const sx = first + second || 1;\n const sy = first - second || 1;\n\n // Scale values are the square roots of the eigenvalues.\n return [Math.sqrt(sx), Math.sqrt(sy)];\n }\n\n // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)\n // For coordinate systems whose origin lies in the bottom-left, this\n // means normalization to (BL,TR) ordering. For systems with origin in the\n // top-left, this means (TL,BR) ordering.\n static normalizeRect(rect) {\n const r = rect.slice(0); // clone rect\n if (rect[0] > rect[2]) {\n r[0] = rect[2];\n r[2] = rect[0];\n }\n if (rect[1] > rect[3]) {\n r[1] = rect[3];\n r[3] = rect[1];\n }\n return r;\n }\n\n // Returns a rectangle [x1, y1, x2, y2] corresponding to the\n // intersection of rect1 and rect2. If no intersection, returns 'null'\n // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]\n static intersect(rect1, rect2) {\n const xLow = Math.max(\n Math.min(rect1[0], rect1[2]),\n Math.min(rect2[0], rect2[2])\n );\n const xHigh = Math.min(\n Math.max(rect1[0], rect1[2]),\n Math.max(rect2[0], rect2[2])\n );\n if (xLow > xHigh) {\n return null;\n }\n const yLow = Math.max(\n Math.min(rect1[1], rect1[3]),\n Math.min(rect2[1], rect2[3])\n );\n const yHigh = Math.min(\n Math.max(rect1[1], rect1[3]),\n Math.max(rect2[1], rect2[3])\n );\n if (yLow > yHigh) {\n return null;\n }\n\n return [xLow, yLow, xHigh, yHigh];\n }\n\n // From https://github.com/adobe-webplatform/Snap.svg/blob/b365287722a72526000ac4bfcf0ce4cac2faa015/src/path.js#L852\n static bezierBoundingBox(x0, y0, x1, y1, x2, y2, x3, y3) {\n const tvalues = [],\n bounds = [[], []];\n let a, b, c, t, t1, t2, b2ac, sqrtb2ac;\n for (let i = 0; i < 2; ++i) {\n if (i === 0) {\n b = 6 * x0 - 12 * x1 + 6 * x2;\n a = -3 * x0 + 9 * x1 - 9 * x2 + 3 * x3;\n c = 3 * x1 - 3 * x0;\n } else {\n b = 6 * y0 - 12 * y1 + 6 * y2;\n a = -3 * y0 + 9 * y1 - 9 * y2 + 3 * y3;\n c = 3 * y1 - 3 * y0;\n }\n if (Math.abs(a) < 1e-12) {\n if (Math.abs(b) < 1e-12) {\n continue;\n }\n t = -c / b;\n if (0 < t && t < 1) {\n tvalues.push(t);\n }\n continue;\n }\n b2ac = b * b - 4 * c * a;\n sqrtb2ac = Math.sqrt(b2ac);\n if (b2ac < 0) {\n continue;\n }\n t1 = (-b + sqrtb2ac) / (2 * a);\n if (0 < t1 && t1 < 1) {\n tvalues.push(t1);\n }\n t2 = (-b - sqrtb2ac) / (2 * a);\n if (0 < t2 && t2 < 1) {\n tvalues.push(t2);\n }\n }\n\n let j = tvalues.length,\n mt;\n const jlen = j;\n while (j--) {\n t = tvalues[j];\n mt = 1 - t;\n bounds[0][j] =\n mt * mt * mt * x0 +\n 3 * mt * mt * t * x1 +\n 3 * mt * t * t * x2 +\n t * t * t * x3;\n bounds[1][j] =\n mt * mt * mt * y0 +\n 3 * mt * mt * t * y1 +\n 3 * mt * t * t * y2 +\n t * t * t * y3;\n }\n\n bounds[0][jlen] = x0;\n bounds[1][jlen] = y0;\n bounds[0][jlen + 1] = x3;\n bounds[1][jlen + 1] = y3;\n bounds[0].length = bounds[1].length = jlen + 2;\n\n return [\n Math.min(...bounds[0]),\n Math.min(...bounds[1]),\n Math.max(...bounds[0]),\n Math.max(...bounds[1]),\n ];\n }\n}\n\nconst PDFStringTranslateTable = [\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2d8,\n 0x2c7, 0x2c6, 0x2d9, 0x2dd, 0x2db, 0x2da, 0x2dc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014, 0x2013, 0x192,\n 0x2044, 0x2039, 0x203a, 0x2212, 0x2030, 0x201e, 0x201c, 0x201d, 0x2018,\n 0x2019, 0x201a, 0x2122, 0xfb01, 0xfb02, 0x141, 0x152, 0x160, 0x178, 0x17d,\n 0x131, 0x142, 0x153, 0x161, 0x17e, 0, 0x20ac,\n];\n\nfunction stringToPDFString(str) {\n // See section 7.9.2.2 Text String Type.\n // The string can contain some language codes bracketed with 0x0b,\n // so we must remove them.\n if (str[0] >= \"\\xEF\") {\n let encoding;\n if (str[0] === \"\\xFE\" && str[1] === \"\\xFF\") {\n encoding = \"utf-16be\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xFF\" && str[1] === \"\\xFE\") {\n encoding = \"utf-16le\";\n if (str.length % 2 === 1) {\n str = str.slice(0, -1);\n }\n } else if (str[0] === \"\\xEF\" && str[1] === \"\\xBB\" && str[2] === \"\\xBF\") {\n encoding = \"utf-8\";\n }\n\n if (encoding) {\n try {\n const decoder = new TextDecoder(encoding, { fatal: true });\n const buffer = stringToBytes(str);\n const decoded = decoder.decode(buffer);\n if (!decoded.includes(\"\\x1b\")) {\n return decoded;\n }\n return decoded.replaceAll(/\\x1b[^\\x1b]*(?:\\x1b|$)/g, \"\");\n } catch (ex) {\n warn(`stringToPDFString: \"${ex}\".`);\n }\n }\n }\n // ISO Latin 1\n const strBuf = [];\n for (let i = 0, ii = str.length; i < ii; i++) {\n const charCode = str.charCodeAt(i);\n if (charCode === 0x1b) {\n // eslint-disable-next-line no-empty\n while (++i < ii && str.charCodeAt(i) !== 0x1b) {}\n continue;\n }\n const code = PDFStringTranslateTable[charCode];\n strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));\n }\n return strBuf.join(\"\");\n}\n\nfunction stringToUTF8String(str) {\n return decodeURIComponent(escape(str));\n}\n\nfunction utf8StringToString(str) {\n return unescape(encodeURIComponent(str));\n}\n\nfunction isArrayBuffer(v) {\n return typeof v === \"object\" && v?.byteLength !== undefined;\n}\n\nfunction isArrayEqual(arr1, arr2) {\n if (arr1.length !== arr2.length) {\n return false;\n }\n for (let i = 0, ii = arr1.length; i < ii; i++) {\n if (arr1[i] !== arr2[i]) {\n return false;\n }\n }\n return true;\n}\n\nfunction getModificationDate(date = new Date()) {\n const buffer = [\n date.getUTCFullYear().toString(),\n (date.getUTCMonth() + 1).toString().padStart(2, \"0\"),\n date.getUTCDate().toString().padStart(2, \"0\"),\n date.getUTCHours().toString().padStart(2, \"0\"),\n date.getUTCMinutes().toString().padStart(2, \"0\"),\n date.getUTCSeconds().toString().padStart(2, \"0\"),\n ];\n\n return buffer.join(\"\");\n}\n\nclass PromiseCapability {\n #settled = false;\n\n constructor() {\n /**\n * @type {Promise<any>} The Promise object.\n */\n this.promise = new Promise((resolve, reject) => {\n /**\n * @type {function} Fulfills the Promise.\n */\n this.resolve = data => {\n this.#settled = true;\n resolve(data);\n };\n\n /**\n * @type {function} Rejects the Promise.\n */\n this.reject = reason => {\n if (typeof PDFJSDev === \"undefined\" || PDFJSDev.test(\"TESTING\")) {\n assert(reason instanceof Error, 'Expected valid \"reason\" argument.');\n }\n this.#settled = true;\n reject(reason);\n };\n });\n }\n\n /**\n * @type {boolean} If the Promise has been fulfilled/rejected.\n */\n get settled() {\n return this.#settled;\n }\n}\n\nlet NormalizeRegex = null;\nlet NormalizationMap = null;\nfunction normalizeUnicode(str) {\n if (!NormalizeRegex) {\n // In order to generate the following regex:\n // - create a PDF containing all the chars in the range 0000-FFFF with\n // a NFKC which is different of the char.\n // - copy and paste all those chars and get the ones where NFKC is\n // required.\n // It appears that most the chars here contain some ligatures.\n NormalizeRegex =\n /([\\u00a0\\u00b5\\u037e\\u0eb3\\u2000-\\u200a\\u202f\\u2126\\ufb00-\\ufb04\\ufb06\\ufb20-\\ufb36\\ufb38-\\ufb3c\\ufb3e\\ufb40-\\ufb41\\ufb43-\\ufb44\\ufb46-\\ufba1\\ufba4-\\ufba9\\ufbae-\\ufbb1\\ufbd3-\\ufbdc\\ufbde-\\ufbe7\\ufbea-\\ufbf8\\ufbfc-\\ufbfd\\ufc00-\\ufc5d\\ufc64-\\ufcf1\\ufcf5-\\ufd3d\\ufd88\\ufdf4\\ufdfa-\\ufdfb\\ufe71\\ufe77\\ufe79\\ufe7b\\ufe7d]+)|(\\ufb05+)/gu;\n NormalizationMap = new Map([[\"ſt\", \"ſt\"]]);\n }\n return str.replaceAll(NormalizeRegex, (_, p1, p2) => {\n return p1 ? p1.normalize(\"NFKC\") : NormalizationMap.get(p2);\n });\n}\n\nfunction getUuid() {\n if (\n (typeof PDFJSDev !== \"undefined\" && PDFJSDev.test(\"MOZCENTRAL\")) ||\n (typeof crypto !== \"undefined\" && typeof crypto?.randomUUID === \"function\")\n ) {\n return crypto.randomUUID();\n }\n const buf = new Uint8Array(32);\n if (\n typeof crypto !== \"undefined\" &&\n typeof crypto?.getRandomValues === \"function\"\n ) {\n crypto.getRandomValues(buf);\n } else {\n for (let i = 0; i < 32; i++) {\n buf[i] = Math.floor(Math.random() * 255);\n }\n }\n return bytesToString(buf);\n}\n\nconst AnnotationPrefix = \"pdfjs_internal_id_\";\n\nexport {\n AbortException,\n AnnotationActionEventType,\n AnnotationBorderStyleType,\n AnnotationEditorParamsType,\n AnnotationEditorPrefix,\n AnnotationEditorType,\n AnnotationFieldFlag,\n AnnotationFlag,\n AnnotationMode,\n AnnotationPrefix,\n AnnotationReplyType,\n AnnotationType,\n assert,\n BaseException,\n BASELINE_FACTOR,\n bytesToString,\n CMapCompressionType,\n createValidAbsoluteUrl,\n DocumentActionEventType,\n FeatureTest,\n FONT_IDENTITY_MATRIX,\n FormatError,\n getModificationDate,\n getUuid,\n getVerbosityLevel,\n IDENTITY_MATRIX,\n ImageKind,\n info,\n InvalidPDFException,\n isArrayBuffer,\n isArrayEqual,\n isNodeJS,\n LINE_DESCENT_FACTOR,\n LINE_FACTOR,\n MAX_IMAGE_SIZE_TO_CACHE,\n MissingPDFException,\n normalizeUnicode,\n objectFromMap,\n objectSize,\n OPS,\n PageActionEventType,\n PasswordException,\n PasswordResponses,\n PermissionFlag,\n PromiseCapability,\n RenderingIntentFlag,\n setVerbosityLevel,\n shadow,\n string32,\n stringToBytes,\n stringToPDFString,\n stringToUTF8String,\n TextRenderingMode,\n UnexpectedResponseException,\n UnknownErrorException,\n unreachable,\n utf8StringToString,\n Util,\n VerbosityLevel,\n warn,\n};\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","var webpackQueues = typeof Symbol === \"function\" ? Symbol(\"webpack queues\") : \"__webpack_queues__\";\nvar webpackExports = typeof Symbol === \"function\" ? Symbol(\"webpack exports\") : \"__webpack_exports__\";\nvar webpackError = typeof Symbol === \"function\" ? Symbol(\"webpack error\") : \"__webpack_error__\";\nvar resolveQueue = (queue) => {\n\tif(queue && queue.d < 1) {\n\t\tqueue.d = 1;\n\t\tqueue.forEach((fn) => (fn.r--));\n\t\tqueue.forEach((fn) => (fn.r-- ? fn.r++ : fn()));\n\t}\n}\nvar wrapDeps = (deps) => (deps.map((dep) => {\n\tif(dep !== null && typeof dep === \"object\") {\n\t\tif(dep[webpackQueues]) return dep;\n\t\tif(dep.then) {\n\t\t\tvar queue = [];\n\t\t\tqueue.d = 0;\n\t\t\tdep.then((r) => {\n\t\t\t\tobj[webpackExports] = r;\n\t\t\t\tresolveQueue(queue);\n\t\t\t}, (e) => {\n\t\t\t\tobj[webpackError] = e;\n\t\t\t\tresolveQueue(queue);\n\t\t\t});\n\t\t\tvar obj = {};\n\t\t\tobj[webpackQueues] = (fn) => (fn(queue));\n\t\t\treturn obj;\n\t\t}\n\t}\n\tvar ret = {};\n\tret[webpackQueues] = x => {};\n\tret[webpackExports] = dep;\n\treturn ret;\n}));\n__webpack_require__.a = (module, body, hasAwait) => {\n\tvar queue;\n\thasAwait && ((queue = []).d = -1);\n\tvar depQueues = new Set();\n\tvar exports = module.exports;\n\tvar currentDeps;\n\tvar outerResolve;\n\tvar reject;\n\tvar promise = new Promise((resolve, rej) => {\n\t\treject = rej;\n\t\touterResolve = resolve;\n\t});\n\tpromise[webpackExports] = exports;\n\tpromise[webpackQueues] = (fn) => (queue && fn(queue), depQueues.forEach(fn), promise[\"catch\"](x => {}));\n\tmodule.exports = promise;\n\tbody((deps) => {\n\t\tcurrentDeps = wrapDeps(deps);\n\t\tvar fn;\n\t\tvar getResult = () => (currentDeps.map((d) => {\n\t\t\tif(d[webpackError]) throw d[webpackError];\n\t\t\treturn d[webpackExports];\n\t\t}))\n\t\tvar promise = new Promise((resolve) => {\n\t\t\tfn = () => (resolve(getResult));\n\t\t\tfn.r = 0;\n\t\t\tvar fnQueue = (q) => (q !== queue && !depQueues.has(q) && (depQueues.add(q), q && !q.d && (fn.r++, q.push(fn))));\n\t\t\tcurrentDeps.map((dep) => (dep[webpackQueues](fnQueue)));\n\t\t});\n\t\treturn fn.r ? promise : getResult();\n\t}, (err) => ((err ? reject(promise[webpackError] = err) : outerResolve(exports)), resolveQueue(queue)));\n\tqueue && queue.d < 0 && (queue.d = 0);\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","","// startup\n// Load entry module and return exports\n// This entry module used 'module' so it can't be inlined\nvar __webpack_exports__ = __webpack_require__(907);\n",""],"names":["makeColorComp","n","Math","floor","max","min","toString","padStart","scaleAndClamp","x","ColorConverters","CMYK_G","c","y","m","k","G_CMYK","g","G_RGB","G_rgb","G_HTML","G","RGB_G","r","b","RGB_rgb","color","map","RGB_HTML","join","T_HTML","T_rgb","CMYK_RGB","CMYK_rgb","CMYK_HTML","components","rgb","slice","RGB_CMYK","AnnotationBorderStyleType","AnnotationEditorType","AnnotationPrefix","AnnotationType","FeatureTest","LINE_FACTOR","shadow","unreachable","Util","warn","DOMSVGFactory","getFilenameFromUrl","PDFDateString","setLayerDimensions","AnnotationStorage","XfaLayer","DEFAULT_TAB_INDEX","DEFAULT_FONT_SIZE","GetElementsByNameSet","WeakSet","getRectDims","rect","width","height","AnnotationElementFactory","create","parameters","subtype","data","annotationType","LINK","LinkAnnotationElement","TEXT","TextAnnotationElement","WIDGET","fieldType","TextWidgetAnnotationElement","radioButton","RadioButtonWidgetAnnotationElement","checkBox","CheckboxWidgetAnnotationElement","PushButtonWidgetAnnotationElement","ChoiceWidgetAnnotationElement","SignatureWidgetAnnotationElement","WidgetAnnotationElement","POPUP","PopupAnnotationElement","FREETEXT","FreeTextAnnotationElement","LINE","LineAnnotationElement","SQUARE","SquareAnnotationElement","CIRCLE","CircleAnnotationElement","POLYLINE","PolylineAnnotationElement","CARET","CaretAnnotationElement","INK","InkAnnotationElement","POLYGON","PolygonAnnotationElement","HIGHLIGHT","HighlightAnnotationElement","UNDERLINE","UnderlineAnnotationElement","SQUIGGLY","SquigglyAnnotationElement","STRIKEOUT","StrikeOutAnnotationElement","STAMP","StampAnnotationElement","FILEATTACHMENT","FileAttachmentAnnotationElement","AnnotationElement","hasBorder","constructor","isRenderable","ignoreBorder","createQuadrilaterals","layer","linkService","downloadManager","imageResourcesPath","renderForms","svgFactory","annotationStorage","enableScripting","hasJSActions","_fieldObjects","fieldObjects","parent","container","_createContainer","_createQuadrilaterals","_hasPopupData","titleObj","contentsObj","richText","str","hasPopupData","page","viewport","document","createElement","setAttribute","id","tabIndex","style","zIndex","popupRef","noRotate","classList","add","pageWidth","pageHeight","pageX","pageY","rawDims","rotation","hasOwnCanvas","setRotation","normalizeRect","view","borderStyle","borderWidth","horizontalRadius","horizontalCornerRadius","verticalRadius","verticalCornerRadius","radius","borderRadius","SOLID","DASHED","BEVELED","INSET","borderBottomStyle","borderColor","makeHexColor","left","top","angle","elementWidth","elementHeight","_commonActions","setColor","jsName","styleName","event","detail","colorType","colorArray","target","setValue","display","hidden","visibility","noView","noPrint","print","focus","setTimeout","preventScroll","userName","title","readonly","disabled","required","_setRequired","bgColor","fillColor","fgColor","textColor","strokeColor","_dispatchEventFromSandbox","actions","jsEvent","commonActions","name","Object","keys","action","_setDefaultPropertiesFromJS","element","storedData","getRawValue","actionName","entries","eventProxy","quadPoints","rectBlX","rectBlY","rectTrX","rectTrY","length","trX","trY","blX","blY","svgBuffer","svg","defs","append","clipPath","rectWidth","rectHeight","push","backgroundImage","_createPopup","popup","modificationDate","parentRect","elements","div","render","_getElementsByName","skipId","fields","fieldObj","exportValues","exportValue","domElement","querySelector","has","getElementsByName","getAttribute","show","maybeShow","hide","forceHide","getElementsToTriggerPopup","addHighlightArea","triggers","Array","isArray","_isEditable","_editOnDoubleClick","annotationEditorType","mode","editId","addEventListener","eventBus","dispatch","source","options","isTooltipOnly","link","isBound","url","addLinkAttributes","newWindow","_bindNamedAction","attachment","bindAttachment","attachmentDest","setOCGState","bindSetOCGState","dest","_bindLink","Action","_bindJSAction","resetForm","_bindResetFormAction","setInternalLink","destination","href","getDestinationHash","onclick","goToDestination","getAnchorUrl","executeNamedAction","openOrDownloadData","content","filename","executeSetOCGState","Map","get","otherClickAction","resetFormFields","refs","resetFormRefs","include","allFields","fieldIds","Set","fieldName","values","field","storage","allIds","type","value","defaultValue","dispatchEvent","Event","ids","image","src","toLowerCase","JSON","stringify","alternativeText","showElementAndHideCanvas","previousSibling","nodeName","_getKeyModifier","platform","isMac","metaKey","ctrlKey","_setEventListener","elementData","baseName","eventName","valueGetter","includes","shift","shiftKey","modifier","focused","relatedTarget","_setEventListeners","names","getter","Blur","Focus","_setBackgroundColor","backgroundColor","_setTextStyle","TEXT_ALIGNMENT","fontColor","defaultAppearanceData","fontSize","computedFontSize","BORDER_SIZE","roundToOneDecimal","round","multiLine","abs","numberOfLines","lineHeight","textAlignment","textAlign","isRequired","removeAttribute","hasAppearance","fieldValue","setPropertyOnSiblings","base","key","keyInStorage","getValue","textContent","maxLen","charLimit","fieldFormattedValues","formattedValue","comb","replaceAll","userValue","lastCommittedValue","commitKey","doNotScroll","overflowY","overflowX","readOnly","maxLength","defaultFieldValue","blurListener","undefined","scrollLeft","activeElement","selRange","setSelectionRange","willCommit","selStart","selectionStart","selEnd","selectionEnd","_blurListener","Keystroke","inputType","match","substring","preventDefault","change","fieldWidth","combWidth","letterSpacing","verticalAlign","checked","checkbox","curChecked","buttonValue","radio","pdfButtonValue","linkElement","lastChild","selectElement","addAnEmptyEntry","combo","size","multiSelect","multiple","option","selected","optionElement","displayValue","removeEmptyEntry","noneOptionElement","prepend","remove","removeEventListener","isExport","selectedIndex","prototype","filter","call","selectedValues","getItems","multipleSelection","index","i","findIndex","items","clear","insert","selectChild","children","before","item","indices","editable","changeEx","keyDown","PopupElement","open","elementIds","boundKeyDown","bind","boundHide","boundShow","boundToggle","toggle","dateObj","pinned","wasVisible","toDateObject","trigger","flatMap","e","className","baseColor","outlineColor","CSS","supports","BACKGROUND_ENLIGHT","header","dir","date","toLocaleDateString","time","toLocaleTimeString","xfaHtml","html","intent","contents","_formatContents","useParentRect","intersect","normalizedRect","HORIZONTAL_SPACE_AFTER_ANNOTATION","parentWidth","popupLeft","popupTop","p","lines","split","ii","line","createTextNode","altKey","isVisible","parseInt","textPosition","lineSpan","lineCoordinates","square","circle","polyline","containerClassName","svgElementName","points","coordinate","vertices","polylines","inkList","inkLists","file","fillAlpha","test","download","evt","AnnotationLayer","accessibilityManager","annotationCanvasMap","editableAnnotations","appendElement","contentElement","firstChild","moveElementInDOM","params","annotations","popupToElements","elementParams","noHTML","isPopupAnnotation","set","rendered","setAnnotationCanvasMap","update","canvas","replaceWith","getEditableAnnotations","from","getEditableAnnotation","objectFromMap","AnnotationEditor","MurmurHash3_64","SerializableEmpty","freeze","hash","transfer","modified","onSetModified","onResetModified","onAnnotationEditor","assign","delete","resetModified","obj","entry","val","setModified","_type","getAll","setAll","PrintAnnotationStorage","serializable","context","hasBitmap","serialized","serialize","bitmap","hexdigest","clone","structuredClone","AbortException","AnnotationMode","assert","getVerbosityLevel","info","InvalidPDFException","isArrayBuffer","isNodeJS","MAX_IMAGE_SIZE_TO_CACHE","MissingPDFException","PasswordException","PromiseCapability","RenderingIntentFlag","setVerbosityLevel","stringToBytes","UnexpectedResponseException","UnknownErrorException","DOMCanvasFactory","DOMCMapReaderFactory","DOMFilterFactory","DOMStandardFontDataFactory","isDataScheme","isValidFetchUrl","PageViewport","RenderingCancelledException","StatTimer","FontFaceObject","FontLoader","NodeCanvasFactory","NodeCMapReaderFactory","NodeFilterFactory","NodeStandardFontDataFactory","CanvasGraphics","GlobalWorkerOptions","MessageHandler","Metadata","OptionalContentConfig","PDFDataTransportStream","PDFFetchStream","PDFNetworkStream","PDFNodeStream","XfaText","DEFAULT_RANGE_CHUNK_SIZE","RENDERING_CANCELLED_TIMEOUT","DELAYED_CLEANUP_TIMEOUT","DefaultCanvasFactory","DefaultCMapReaderFactory","DefaultFilterFactory","DefaultStandardFontDataFactory","getDocument","URL","Error","range","task","PDFDocumentLoadingTask","docId","getUrlProp","getDataProp","httpHeaders","withCredentials","password","rangeTransport","PDFDataRangeTransport","rangeChunkSize","Number","isInteger","worker","PDFWorker","verbosity","docBaseUrl","cMapUrl","cMapPacked","CMapReaderFactory","standardFontDataUrl","StandardFontDataFactory","ignoreErrors","stopAtErrors","maxImageSize","isEvalSupported","isOffscreenCanvasSupported","canvasMaxAreaInBytes","disableFontFace","fontExtraProperties","enableXfa","ownerDocument","globalThis","disableRange","disableStream","disableAutoFetch","pdfBug","NaN","useSystemFonts","useWorkerFetch","baseURI","canvasFactory","filterFactory","styleElement","transportFactory","cMapReaderFactory","baseUrl","isCompressed","standardFontDataFactory","workerParams","port","workerPort","fromPort","_worker","fetchDocParams","apiVersion","evaluatorOptions","transportParams","promise","then","destroyed","workerIdPromise","_fetchDocument","networkStreamPromise","Promise","resolve","networkStream","initialData","progressiveDone","contentDispositionFilename","createPDFNetworkStream","all","workerId","messageHandler","transport","WorkerTransport","_transport","send","catch","_capability","reject","sendWithPromise","buffer","window","location","Buffer","Uint8Array","byteLength","isNaN","onPassword","onProgress","destroy","_pendingDestroy","ex","_rangeListeners","_progressListeners","_progressiveReadListeners","_progressiveDoneListeners","_readyCapability","addRangeListener","listener","addProgressListener","addProgressiveReadListener","addProgressiveDoneListener","onDataRange","begin","chunk","onDataProgress","loaded","total","onDataProgressiveRead","onDataProgressiveDone","transportReady","requestDataRange","end","abort","PDFDocumentProxy","pdfInfo","_pdfInfo","numPages","fingerprints","isPureXfa","_htmlForXfa","allXfaHtml","getPage","pageNumber","getPageIndex","ref","getDestinations","getDestination","getPageLabels","getPageLayout","getPageMode","getViewerPreferences","getOpenAction","getAttachments","getJSActions","getDocJSActions","getOutline","getOptionalContentConfig","getPermissions","getMetadata","getMarkInfo","getData","saveDocument","getDownloadInfo","downloadInfoCapability","cleanup","keepLoadedFonts","startCleanup","loadingTask","loadingParams","getFieldObjects","getCalculationOrderIds","PDFPageProxy","delayedCleanupTimeout","pendingCleanup","pageIndex","pageInfo","_pageIndex","_pageInfo","_stats","_pdfBug","commonObjs","objs","PDFObjects","_maybeCleanupAfterRender","_intentStates","rotate","userUnit","getViewport","scale","offsetX","offsetY","dontFlip","viewBox","getAnnotations","intentArgs","getRenderingIntent","renderingIntent","getPageJSActions","getXfa","canvasContext","annotationMode","ENABLE","transform","background","optionalContentConfigPromise","pageColors","printAnnotationStorage","abortDelayedCleanup","intentState","cacheKey","streamReaderCancelTimeout","clearTimeout","intentPrint","PRINT","displayReadyCapability","operatorList","fnArray","argsArray","lastChunk","separateAnnots","_pumpOperatorList","complete","error","renderTasks","internalRenderTask","tryCleanup","capability","_abortOperatorList","reason","timeEnd","InternalRenderTask","callback","useRequestAnimationFrame","renderTask","transparency","optionalContentConfig","initializeGraphics","operatorListChanged","getOperatorList","opListReadCapability","opListTask","streamTextContent","includeMarkedContent","disableNormalization","TEXT_CONTENT_CHUNK_SIZE","sendWithStream","highWaterMark","getTextContent","xfa","readableStream","pump","reader","read","done","styles","getReader","getStructTree","_destroy","waitOn","force","completed","cancel","resetStats","success","delayed","_startRenderPage","_renderPageChunk","operatorListChunk","annotationStorageSerializable","streamReader","delay","extraDelay","message","curCacheKey","curIntentState","stats","LoopbackPort","listeners","deferred","postMessage","terminate","PDFWorkerUtil","isWorkerDisabled","fakeWorkerId","workerSrc","isSameOrigin","otherUrl","origin","other","createCDNWrapper","wrapper","createObjectURL","Blob","workerPorts","_port","_webWorker","_messageHandler","WeakMap","_initializeFromPort","_initialize","on","mainThreadWorkerMessageHandler","Worker","terminateEarly","onWorkerError","_setupFakeWorker","sendTest","testObj","_setupFakeWorkerGlobal","WorkerMessageHandler","workerHandler","setup","cachedPort","pdfjsWorker","loader","__non_webpack_import__","methodPromises","pageCache","pagePromises","passwordCapability","factory","fontLoader","_params","destroyCapability","_networkStream","_fullReader","_lastProgress","setupMessageHandler","cacheSimpleMethod","cachedPromise","isOpList","DISPLAY","ANY","DISABLE","ANNOTATIONS_DISABLE","ENABLE_FORMS","ANNOTATIONS_FORMS","ENABLE_STORAGE","ANNOTATIONS_STORAGE","OPLIST","hasOwnProperty","terminated","cancelAllRequests","sink","getFullReader","onPull","close","ArrayBuffer","enqueue","onCancel","ready","readyReason","headersCapability","fullReader","headersReady","isStreamingSupported","isRangeSupported","contentLength","rangeReader","getRangeReader","_numPages","htmlForXfa","code","status","details","exception","updatePassword","exportedData","exportedError","inspectFont","FontInspector","enabled","font","fontAdded","finally","imageData","pageProxy","fetch","num","gen","results","metadata","cleanupSuccessful","ensureObj","objId","settled","RenderTask","onContinue","form","canvasInUse","operatorListIdx","running","graphicsReadyCallback","graphicsReady","_useRequestAnimationFrame","cancelled","_cancelBound","_continueBound","_continue","_scheduleNextBound","_scheduleNext","_nextBound","_next","_canvas","StepperManager","stepper","init","nextBreakPoint","getNextBreakPoint","gfx","beginDrawing","endDrawing","updateOperatorList","requestAnimationFrame","executeOperatorList","version","build","CMapCompressionType","BaseFilterFactory","addFilter","maps","addHCMFilter","addHighlightHCMFilter","newFgColor","newBgColor","keepHCM","BaseCanvasFactory","_createCanvas","getContext","reset","canvasAndContext","BaseCMapReaderFactory","compressionType","BINARY","NONE","_fetchData","BaseStandardFontDataFactory","BaseSVGFactory","skipDimensions","_createSVG","FormatError","getCurrentTransform","PathType","FILL","STROKE","SHADING","applyBoundingBox","ctx","bbox","region","Path2D","clip","BaseShadingPattern","getPattern","RadialAxialShadingPattern","IR","_bbox","_colorStops","_p0","_p1","_r0","_r1","matrix","_createGradient","grad","createLinearGradient","createRadialGradient","colorStop","addColorStop","owner","inverse","pathType","pattern","ownerBBox","current","getClippedPathBoundingBox","ceil","tmpCanvas","cachedCanvases","getCanvas","tmpCtx","clearRect","beginPath","translate","baseTransform","fillStyle","fill","createPattern","domMatrix","DOMMatrix","setTransform","drawTriangle","p1","p2","p3","c1","c2","c3","coords","colors","bytes","rowSize","tmp","x1","scaleX","y1","scaleY","x2","y2","x3","y3","c1r","c1g","c1b","c2r","c2g","c2b","c3r","c3g","c3b","minY","maxY","xa","car","cag","cab","xb","cbr","cbg","cbb","x1_","x2_","j","drawFigure","figure","ps","cs","verticesPerRow","rows","cols","q","MeshShadingPattern","_coords","_colors","_figures","_bounds","_background","_createMeshCanvas","combinedScale","EXPECTED_SCALE","MAX_PATTERN_SIZE","boundsWidth","boundsHeight","paddedWidth","paddedHeight","createImageData","putImageData","singularValueDecompose2dScale","matrixScale","temporaryPatternCanvas","DummyShadingPattern","getShadingPattern","PaintType","COLORED","UNCOLORED","TilingPattern","canvasGraphicsFactory","xstep","ystep","paintType","tilingType","createPatternCanvas","x0","y0","curMatrixScale","dimx","getSizeAndScale","dimy","graphics","createCanvasGraphics","groupLevel","setFillAndStrokeStyleToContext","adjustedX0","adjustedY0","adjustedX1","adjustedY1","save","clipBbox","step","realOutputSize","maxSize","bboxWidth","bboxHeight","updateRectMinMax","endPath","strokeStyle","cssColor","ImageKind","convertToRGBA","kind","GRAYSCALE_1BPP","convertBlackAndWhiteToRGBA","RGB_24BPP","convertRGBToRGBA","srcPos","nonBlackColor","inverseDecode","black","isLittleEndian","zeroMapping","oneMapping","widthInSource","widthRemainder","srcLength","Uint32Array","destPos","elem","len32","src32","s1","s2","s3","jj","grayToRGBA","FONT_IDENTITY_MATRIX","IDENTITY_MATRIX","OPS","TextRenderingMode","getCurrentTransformInverse","PixelsPerInch","MIN_FONT_SIZE","MAX_FONT_SIZE","MAX_GROUP_SIZE","EXECUTION_TIME","EXECUTION_STEPS","MAX_SIZE_TO_COMPILE","FULL_CHUNK_HEIGHT","mirrorContextOperations","destCtx","_removeMirroring","__originalSave","__originalRestore","restore","__originalRotate","__originalScale","__originalTranslate","__originalTransform","__originalSetTransform","__originalResetTransform","resetTransform","__originalClip","__originalMoveTo","moveTo","__originalLineTo","lineTo","__originalBezierCurveTo","bezierCurveTo","__originalRect","__originalClosePath","closePath","__originalBeginPath","ctxSave","ctxRestore","ctxTranslate","ctxScale","ctxTransform","a","d","f","ctxSetTransform","ctxResetTransform","ctxRotate","rule","cp1x","cp1y","cp2x","cp2y","CachedCanvases","cache","canvasEntry","drawImageAtIntegerCoords","srcImg","srcX","srcY","srcW","srcH","destX","destY","destW","destH","tx","ty","tlX","rTlX","tlY","rTlY","brX","rWidth","brY","rHeight","sign","drawImage","hypot","compileType3Glyph","imgData","POINT_TO_PROCESS_LIMIT","POINT_TYPES","width1","j0","lineSize","pos","mask","count","sum","steps","Int32Array","path","p0","pp","drawOutline","CanvasExtraState","alphaIsShape","fontSizeScale","textMatrix","textMatrixScale","fontMatrix","leading","lineX","lineY","charSpacing","wordSpacing","textHScale","textRenderingMode","textRise","patternFill","strokeAlpha","lineWidth","activeSMask","transferMaps","startNewPathAndClipBox","clipBox","setCurrentPoint","updatePathMinMax","applyTransform","minX","maxX","p4","updateScalingPathMinMax","minMax","scaleMinMax","updateCurvePathMinMax","box","bezierBoundingBox","getPathBoundingBox","xStrokePad","yStrokePad","updateClipFromPath","isEmptyClip","Infinity","putBinaryImageData","ImageData","partialChunkHeight","fullChunks","totalChunks","chunkImgData","thisChunkHeight","elemsInThisChunk","dest32","dest32DataLength","fullSrcDiff","white","srcDiff","kEnd","kEndUnrolled","srcByte","RGBA_32BPP","subarray","putBinaryImageMask","copyCtxState","sourceCtx","properties","property","setLineDash","getLineDash","lineDashOffset","resetCtxToDefault","fillRule","globalAlpha","lineCap","lineJoin","miterLimit","globalCompositeOperation","composeSMaskBackdrop","r0","g0","b0","alpha","alpha_","composeSMaskAlpha","maskData","layerData","transferMap","composeSMaskLuminosity","genericComposeSMask","maskCtx","layerCtx","backdrop","layerOffsetX","layerOffsetY","maskOffsetX","maskOffsetY","hasBackdrop","composeFn","PIXELS_TO_PROCESS","chunkSize","row","chunkHeight","getImageData","composeSMask","smask","layerBox","layerWidth","layerHeight","getImageSmoothingEnabled","interpolate","fround","actualScale","devicePixelRatio","PDF_TO_CSS_UNITS","LINE_CAP_STYLES","LINE_JOIN_STYLES","NORMAL_CLIP","EO_CLIP","canvasCtx","markedContentStack","stateStack","pendingClip","pendingEOFill","res","xobjs","groupStack","processingType3","baseTransformStack","smaskStack","smaskCounter","tempSMask","suspendedCtx","contentVisible","cachedPatterns","viewportScale","outputScaleX","outputScaleY","_cachedScaleForStroking","_cachedGetSinglePixelWidth","_cachedBitmapsMap","getObject","fallback","startsWith","savedFillStyle","fillRect","transparentCanvas","compositeCtx","executionStartIdx","continueCallback","argsArrayLen","chunkOperations","endTime","Date","now","fnId","breakIt","dependency","apply","depObjId","objsPool","restoreInitialState","inSMaskMode","HTMLCanvasElement","drawFilter","hcmFilterId","foreground","savedFilter","_scaleImage","img","inverseTransform","widthScale","heightScale","paintWidth","paintHeight","tmpCanvasId","newWidth","newHeight","_createMaskCanvas","isPatternFill","currentTransform","scaled","maskCanvas","mainKey","cachedImage","maskToCanvas","getAxialAlignedBoundingBox","drawnWidth","drawnHeight","fillCanvas","fillCtx","imageSmoothingEnabled","setLineWidth","setLineCap","setLineJoin","setMiterLimit","limit","setDash","dashArray","dashPhase","setRenderingIntent","setFlatness","flatness","setGState","states","setFont","checkSMaskState","beginSMaskMode","endSMaskMode","cacheId","scratchCanvas","compose","dirtyBox","old","pop","constructPath","ops","args","startX","startY","isScalingMatrix","minMaxForBezier","rectangle","xw","yh","curveTo","curveTo2","curveTo3","stroke","consumePath","rescaleAndStroke","closeStroke","needRestore","eoFill","fillStroke","eoFillStroke","closeFillStroke","closeEOFillStroke","eoClip","beginText","endText","paths","pendingTextPaths","addToPath","setCharSpacing","spacing","setWordSpacing","setHScale","setLeading","fontRefName","fontObj","fontDirection","isType3Font","loadedName","typeface","systemFontInfo","css","fallbackName","bold","italic","browserFontSize","setTextRenderingMode","setTextRise","rise","moveText","setLeadingMoveText","setTextMatrix","nextLine","paintChar","character","patternTransform","fillStrokeMode","FILL_STROKE_MASK","isAddToPathSet","ADD_TO_PATH_FLAG","missingFile","getPathGenerator","FILL_STROKE","fillText","strokeText","isFontSubpixelAAEnabled","showText","glyphs","showType3Text","glyphsLength","vertical","spacingDir","defaultVMetrics","widthAdvanceScale","simpleFillText","getSinglePixelWidth","isInvalidPDFjsFont","chars","glyph","unicode","restoreNeeded","isSpace","fontChar","accent","scaledX","scaledY","vmetric","vx","vy","remeasure","measuredWidth","measureText","characterScaleX","isInFont","scaledAccentX","offset","scaledAccentY","charWidth","isTextInvisible","INVISIBLE","spacingLength","charProcOperatorList","operatorListId","transformed","setCharWidth","xWidth","yWidth","setCharWidthAndBounds","llx","lly","urx","ury","getColorN_Pattern","_getPattern","setStrokeColorN","arguments","setFillColorN","setStrokeRGBColor","setFillRGBColor","shadingFill","inv","beginInlineImage","beginImageData","paintFormXObjectBegin","paintFormXObjectEnd","beginGroup","group","currentCtx","isolated","knockout","bounds","canvasBounds","groupCtx","startTransformInverse","endGroup","currentMtx","beginAnnotation","canvasWidth","canvasHeight","annotationCanvas","savedCtx","endAnnotation","paintImageMaskXObject","compiled","paintImageMaskXObjectRepeat","skewX","skewY","positions","trans","paintImageMaskXObjectGroup","images","paintImageXObject","paintInlineImageXObject","paintImageXObjectRepeat","w","h","paintInlineImageXObjectGroup","applyTransferMapsToCanvas","applyTransferMapsToBitmap","imgToPaint","HTMLElement","paintSolidColorImageMask","markPoint","tag","markPointProps","beginMarkedContent","visible","beginMarkedContentProps","isContentVisible","endMarkedContent","beginCompat","endCompat","isEmpty","absDet","normX","normY","getScaleForStroking","getTransform","scaledLineWidth","scaledXLineWidth","scaledYLineWidth","baseArea","saveRestore","dashes","op","BaseException","SVG_NS","PDF","_cache","_defs","hcmFilter","hcmKey","hcmUrl","hcmHighlightFilter","hcmHighlightKey","hcmHighlightUrl","contain","position","createElementNS","body","tableR","tableG","tableB","mapR","mapG","mapB","bufferR","bufferG","bufferB","createFilter","addTransferMapConversion","fgRGB","getRGB","bgRGB","table","addGrayConversion","getSteps","start","arr","fgGray","bgGray","newFgRGB","newBgRGB","fg","bg","newStart","newStep","prev","parentNode","feColorMatrix","appendFeFunc","feComponentTransfer","func","feFunc","rTable","gTable","bTable","getComputedStyle","getPropertyValue","_document","fetchData","response","ok","statusText","arrayBuffer","blob","json","text","request","XMLHttpRequest","responseType","onreadystatechange","readyState","DONE","responseText","cMapData","centerX","centerY","rotateA","rotateB","rotateC","rotateD","offsetCanvasX","offsetCanvasY","convertToViewportPoint","convertToViewportRectangle","topLeft","bottomRight","convertToPdfPoint","applyInverseTransform","msg","trim","isPdfFile","onlyStripPath","lastIndexOf","getPdfFilenameFromUrl","defaultFilename","reURI","reFilename","splitURI","exec","suggestedFilename","decodeURIComponent","started","times","outBuf","longest","padEnd","protocol","noContextMenu","deprecated","console","log","pdfDateStringRegex","input","RegExp","matches","year","month","day","hour","minute","second","universalTimeRelation","offsetHour","offsetMinute","UTC","getXfaPageViewport","xfaPage","attributes","colorRGB","getColorValues","span","computedColor","invertSelf","mustFlip","mustRotate","useRound","isCSSRoundSupported","widthStr","heightStr","DrawLayer","mapping","setParent","root","_svgFactory","setBox","createSVG","highlight","outlines","opacity","pathId","extractPathFromHighlightOutlines","clipPathId","clipPathUse","use","highlightOutline","use1","use2","cloneNode","polygons","polygon","prevX","prevY","updateBox","changeColor","changeOpacity","addClass","removeClass","AnnotationEditorParamsType","AnnotationEditorUIManager","bindEvents","KeyboardManager","FreeTextEditor","boundEditorDivBlur","editorDivBlur","boundEditorDivFocus","editorDivFocus","boundEditorDivInput","editorDivInput","boundEditorDivKeydown","editorDivKeydown","editorDivId","_freeTextDefaultContent","_internalPadding","_defaultColor","_defaultFontSize","_keyboardManager","proto","arrowChecker","self","small","TRANSLATE_SMALL","big","TRANSLATE_BIG","commitOrRemove","bubbles","_translateEmpty","checker","_editorType","_defaultLineColor","initialize","l10n","strings","documentElement","parseFloat","updateDefaultParams","FREETEXT_SIZE","FREETEXT_COLOR","updateParams","updateFontSize","updateColor","defaultPropertiesToUpdate","propertiesToUpdate","setFontsize","editorDiv","parentScale","setEditorDimensions","savedFontsize","addCommands","cmd","undo","mustExec","overwriteIfSameType","keepUndo","savedColor","_uiManager","translateSelectedEditors","getInitialTranslation","rebuild","isAttachedToDOM","enableEditMode","isInEditMode","setEditingState","updateToolbar","overlayDiv","contentEditable","_isDraggable","disableEditMode","isEditing","focusin","_focusEventsAllowed","onceAdded","cheatInitialRect","_initialOptions","isCentered","center","innerText","extractText","divs","getElementsByTagName","replace","parentHeight","parentDimensions","getBoundingClientRect","currentLayer","savedDisplay","parentRotation","fixAndSetPosition","commit","savedText","newText","trimEnd","setText","setContent","shouldGetKeyboardEvents","enterInEditMode","dblclick","keydown","disableEditing","enableEditing","baseX","baseY","_l10nPromise","annotationElementId","pageTranslationToScreen","pageDimensions","pageTranslation","posX","posY","setAt","replaceChildren","contentDiv","deserialize","uiManager","deleted","editor","isForCopying","padding","getRect","_colorManager","convert","structTreeParentId","_structTreeParentId","hasElementChanged","some","opacityToHex","InkEditor","baseHeight","baseWidth","boundCanvasPointermove","canvasPointermove","boundCanvasPointerleave","canvasPointerleave","boundCanvasPointerup","canvasPointerup","boundCanvasPointerdown","canvasPointerdown","canvasContextMenuTimeoutId","currentPath2D","hasSomethingToDraw","isCanvasInitialized","observer","realWidth","realHeight","requestFrameCallback","_defaultOpacity","_defaultThickness","thickness","bezierPath2D","allRawPaths","currentPath","scaleFactor","translationX","translationY","_willKeepAspectRatio","INK_THICKNESS","INK_COLOR","INK_OPACITY","updateThickness","updateOpacity","savedThickness","fitToContent","redraw","savedOpacity","createCanvas","createObserver","setCanvasDims","disconnect","removeShouldRescale","addShouldRescale","onScaleChanging","setDimensions","getInitialBBox","setStroke","startDrawing","drawPoints","draw","lastX","lastY","at","path2D","makeBezierCurve","lastPoint","stopDrawing","bezier","generateBezierPoints","xy","lastPoints","xMin","xMax","yMin","yMax","bezierPoints","control1","control2","updateTransform","setInForeground","select","addInkEditorIfNeeded","moveInDOM","button","pointerType","contains","addToAnnotationStorage","setInBackground","ResizeObserver","contentRect","observe","isResizable","setDims","setAspectRatio","roundedWidth","roundedHeight","setScaleFactor","fixDims","getPadding","scaleFactorW","scaleFactorH","buildPath2D","first","toPDFCoordinates","fromPDFCoordinates","serializePaths","s","shiftX","shiftY","p10","p11","p20","p21","p30","p31","p40","p41","getBbox","firstTime","MIN_SIZE","prevTranslationX","prevTranslationY","unscaledPadding","StampEditor","bitmapId","bitmapPromise","bitmapUrl","bitmapFile","bitmapFileName","resizeTimeoutId","isSvg","hasBeenAddedInUndoStack","supportedTypes","types","supportedTypesStr","isHandlingMimeForPasting","mime","paste","pasteEditor","getAsFile","getBitmapFetched","fromId","getBitmapDone","enableWaiting","getBitmap","imageManager","getFromId","getFromUrl","getFromFile","accept","files","click","deleteId","MAX_RATIO","factor","drawBitmap","addUndoableEditor","_eventBus","editorType","addAltTextButton","TIME_TO_WAIT","scaleBitmap","bitmapWidth","bitmapHeight","prevWidth","prevHeight","offscreen","OffscreenCanvas","transferToImageBitmap","getImageForAltText","serializeBitmap","toUrl","getSvgUrl","toDataURL","accessibilityData","isValidId","altTextData","decorative","altText","alt","stamps","area","prevData","AnnotationEditorLayer","allowClick","annotationLayer","boundPointerup","pointerup","boundPointerdown","pointerdown","editorFocusTimeoutId","editors","hadPointerDown","isCleaningUp","isDisabling","_initialized","editorTypes","registerEditorTypes","addLayer","updateMode","getMode","disableClick","enableClick","isCommitting","createAndAddNewEditor","togglePointerEvents","enable","annotationElementIds","editables","isDeletedAnnotationElement","addOrRebuild","disable","hiddenAnnotationIds","setActiveEditor","currentActive","getActive","attach","removeDeletedAnnotationElement","detach","removePointerInTextLayer","addDeletedAnnotationElement","removeEditor","changeParent","deleteAnnotationElement","addEditor","moveEditorInDOM","once","needsToBeRebuilt","getNextId","getId","createNewEditor","getCenterPoint","innerWidth","innerHeight","addNewEditor","setSelected","toggleSelected","isSelected","unselect","unselectAll","findNewParent","findParent","removeLayer","getEditors","EditorToolbar","toolbar","buttons","editToolbar","pointerDown","addDeleteButton","stopPropagation","focusIn","focusOut","addListenersToElement","capture","ColorManager","allResizerDivs","altTextDecorative","altTextButton","altTextTooltip","altTextTooltipTimeout","altTextWasFromKeyBoard","keepAspectRatio","resizersDiv","savedDimensions","boundFocusin","boundFocusout","focusout","focusedResizerName","hasBeenClicked","isResizerEnabledForKeyboard","moveInDOMTimeout","isDraggable","_zIndex","_borderLineWidth","SMALL_EDITOR_SIZE","_resizerKeyboardManager","resize","_resizeWithKeyboard","_stopResizingWithKeyboard","pageRotation","viewParameters","getPrototypeOf","getHexCode","fakeEditor","FakeEditor","_value","isEnterHandled","stopResizing","closest","isMultipleSelection","screenToPageTranslation","translateInPage","scrollIntoView","block","drag","bx","by","getBaseTranslation","toFixed","rotatePoint","getRotationMatrix","realScale","scaledWidth","scaledHeight","widthPercent","endsWith","heightPercent","createResizers","classes","resizerPointerdown","toggleAltTextButton","boundResizerPointermove","resizerPointermove","savedDraggable","pointerMoveOptions","passive","savedX","savedY","savedWidth","savedHeight","savedParentCursor","cursor","savedCursor","pointerUpCallback","addResizeToUndoStack","newX","newY","minWidth","minHeight","rotationMatrix","transf","invRotationMatrix","invTransf","getPoint","getOpposite","isDiagonal","isHorizontal","point","oppositePoint","transfOppositePoint","oppositeX","oppositeY","ratioX","ratioY","deltaX","deltaY","movementX","movementY","oldDiag","onClick","editAltText","setAltTextButtonState","PERCENT","tooltip","DELAY_TO_SHOW_TOOLTIP","altTextFinish","focusVisible","addEditToolbar","removeEditToolbar","getClientDimensions","maxWidth","maxHeight","setUpDragSession","pointerMoveCallback","dragSelectedEditors","endDragSession","_setParentAndPosition","getRectInCurrentCoords","makeResizable","boundResizerKeydown","resizerKeydown","boundResizerBlur","resizerBlur","resizerFocus","firstPosition","nextFirstPosition","child","setResizerTabIndex","stopImmediatePropagation","aspectRatio","Outliner","verticalEdges","intervals","boxes","innerMargin","isLTR","NUMBER_OF_DIGITS","EPSILON","right","shiftedMinX","shiftedMinY","lastEdge","edge","getOutlines","sort","outlineVerticalEdges","breakEdge","edges","allEdges","edge1","edge2","outline","next","lastPointX","lastPointY","binarySearch","array","middle","splice","y4","AnnotationEditorPrefix","getUuid","IdManager","ImageManager","baseId","_isSVGFittingCanvas","Image","decode","rawData","refCounter","mustRemoveAspectRatioPromise","fileReader","FileReader","imageElement","imagePromise","onload","svgUrl","result","onerror","readAsDataURL","createImageBitmap","lastModified","CommandManager","commands","locked","redo","hasSomethingToUndo","hasSomethingToRedo","callbacks","allKeys","isMacKey","_colorsMapping","matchMedia","RGB","every","activeEditor","allEditors","allLayers","altTextManager","commandManager","currentPageIndex","deletedAnnotationsElementIds","draggingEditors","editorsToRescale","focusMainContainerTimeoutId","idManager","isEnabled","isWaiting","lastActiveElement","selectedEditors","boundBlur","blur","boundFocus","boundCopy","copy","boundCut","cut","boundPaste","boundKeydown","boundOnEditingAction","onEditingAction","boundOnPageChanging","onPageChanging","boundOnScaleChanging","boundOnRotationChanging","onRotationChanging","previousStates","hasSelectedEditor","translation","translationTimeoutId","viewer","hasSomethingToControl","textInputChecker","_self","el","HTMLInputElement","selectAll","addNewEditorFromKeyboard","HTMLButtonElement","pdfDocument","_on","removeKeyboardManager","removeFocusManager","_off","direction","focusMainContainer","layerX","layerY","disableUserSelect","pagesRotation","addFocusManager","hasSelection","lastEditor","addKeyboardManager","addCopyPasteListeners","removeCopyPasteListeners","addEditListeners","removeEditListeners","clipboardData","setData","parse","newEditors","deserializedEditor","addEditorToLayer","selectEditors","isEditorHandlingKeyboard","dispatchUpdateStates","hasChanged","dispatchUpdateUI","getLayer","isFromKeyboard","disableAll","enableAll","CREATE","mustWait","getEditor","ed","firstSelectedEditor","noCommit","totalX","totalY","savedPageIndex","newPageIndex","mustBeAddedInUndoStack","move","isActive","createResponseStatusError","extractFilenameFromHeader","validateRangeRequestCapabilities","validateResponseStatus","createFetchOptions","headers","abortController","method","signal","credentials","redirect","createHeaders","Headers","getArrayBuffer","isHttp","_fullRequestReader","_rangeRequestReaders","_progressiveDataLength","_loaded","PDFFetchStreamReader","PDFFetchStreamRangeReader","stream","_stream","_reader","_filename","_withCredentials","_contentLength","_headersCapability","_disableRange","_rangeChunkSize","_abortController","AbortController","_isStreamingSupported","_isRangeSupported","_headers","getResponseHeader","allowRangeRequests","suggestedLength","_readCapability","bytesToString","string32","systemFonts","nativeFontFaces","loadingRequests","loadTestFontId","addNativeFontFace","nativeFontFace","fonts","removeNativeFontFace","insertRule","styleSheet","sheet","cssRules","loadSystemFont","_inspectFont","isFontLoadingAPISupported","fontFace","FontFace","load","baseFontName","attached","createNativeFontFace","family","createFontFaceRule","isSyncFontLoadingSupported","_queueLoadingCallback","_prepareFontLoadEvent","hasFonts","supported","navigator","userAgent","completeRequest","otherRequest","_loadTestFont","testFont","atob","int32","charCodeAt","spliceString","chunk1","chunk2","called","isFontReady","COMMENT_OFFSET","CFF_CHECKSUM_OFFSET","XXXX_VALUE","checksum","btoa","fontFamily","translatedData","compiledGlyphs","cssFontInfo","weight","fontWeight","italicAngle","mimetype","cmds","jsBuf","Function","metadataMap","parsedData","getRaw","OK_RESPONSE","PARTIAL_CONTENT_RESPONSE","xhr","NetworkManager","currXhrId","pendingRequests","requestRange","prop","requestFull","xhrId","pendingRequest","setRequestHeader","expectedStatus","onError","onStateChange","onprogress","onHeadersReceived","onDone","xhrStatus","ok_response_on_range_request","rangeHeader","getRequestXhr","isPendingRequest","abortRequest","_source","_manager","_onRangeRequestReaderClosed","indexOf","PDFNetworkStreamFullRequestReader","PDFNetworkStreamRangeRequestReader","onClosed","manager","_onHeadersReceived","_onDone","_onError","_onProgress","_url","_fullRequestId","_headersReceivedCapability","_cachedChunks","_requests","_done","_storedError","fullRequestXhrId","fullRequestXhr","requestCapability","lengthComputable","_requestId","_queuedChunk","_close","getFilenameFromContentDispositionHeader","contentDisposition","needsEncodingFixup","toParamRegExp","rfc2616unquote","unescape","rfc5987decode","rfc2047decode","fixupEncoding","rfc2231getparam","attributePattern","flags","textdecode","encoding","decoder","TextDecoder","fatal","contentDispositionStr","iter","quot","part","parts","quotindex","extvalue","encodingend","langvalue","charset","hex","String","fromCharCode","returnValues","contentEncoding","fs","http","https","fileUriRegex","parseUrl","sourceUrl","parsedUrl","host","isFsUrl","PDFNodeStreamFsFullReader","PDFNodeStreamFullReader","PDFNodeStreamFsRangeReader","PDFNodeStreamRangeReader","BaseFullReader","_readableStream","_error","_setReadableStream","BaseRangeReader","createRequestOptions","auth","hostname","handleResponse","statusCode","_request","_httpHeaders","Range","lstat","stat","createReadStream","path2d_polyfill","readFile","INTERNAL","Symbol","OptionalContentGroup","_setVisible","internal","cachedGetHash","groups","initialHash","order","creator","baseState","off","getHash","evaluateVisibilityExpression","operator","state","expression","policy","setVisibility","hasInitialVisibility","getOrder","getGroups","getGroup","MAX_TEXT_DIVS_TO_RENDER","DEFAULT_FONT_ASCENT","ascentCache","getCtx","getAscent","cachedAscent","metrics","ascent","fontBoundingBoxAscent","descent","fontBoundingBoxDescent","ratio","pixels","appendText","geom","textDiv","textDivProperties","hasText","hasEOL","_textDivs","_transform","atan2","fontName","PI","_fontInspectorEnabled","fontSubstitution","fontHeight","fontAscent","_isOffscreenCanvasSupported","sin","cos","scaleFactorStr","divStyle","_container","_rootContainer","_pageWidth","_pageHeight","dataset","fontSubstitutionLoadedName","shouldScaleText","absScaleX","absScaleY","_textDivProperties","_isReadableStream","_layoutText","layout","prevFontSize","prevFontFamily","_canceled","textDivs","textDivsLength","TextLayerRenderTask","textContentSource","textContentItemsStr","_textContentSource","ReadableStream","_textContentItemsStr","_layoutTextParams","_processItems","styleCache","br","_render","renderTextLayer","updateTextLayer","mustRescale","pdfDataRangeTransport","_queuedChunks","_progressiveDone","_contentDispositionFilename","_pdfDataRangeTransport","_rangeReaders","_onReceiveData","_onProgressiveDone","_enqueue","found","_begin","_removeRangeReader","queuedChunks","PDFDataTransportStreamReader","PDFDataTransportStreamRangeReader","_headersReady","_end","requestsCapability","setupStorage","xfaOn","xfaOff","setAttributes","isHTMLAnchorElement","HTMLAnchorElement","dataId","rootHtml","isNotForRichText","rootDiv","node","shouldBuildText","stack","childHtml","xmlns","querySelectorAll","output","walk","createValidAbsoluteUrl","normalizeUnicode","PasswordResponses","PermissionFlag","VerbosityLevel","pdfjsVersion","pdfjsBuild","CallbackKind","UNKNOWN","DATA","ERROR","StreamKind","CANCEL","CANCEL_COMPLETE","CLOSE","ENQUEUE","PULL","PULL_COMPLETE","START_COMPLETE","wrapReason","sourceName","targetName","comObj","callbackId","streamId","streamSinks","streamControllers","callbackCapabilities","actionHandler","_onComObjOnMessage","processStreamMessage","cbSourceName","cbTargetName","createStreamSink","handler","ah","transfers","queueingStrategy","controller","startCapability","startCall","pullCall","cancelCall","isClosed","desiredSize","pull","pullCapability","cancelCapability","streamSink","isCancelled","lastDesiredSize","sinkCapability","streamController","deleteStreamController","allSettled","SEED","MASK_HIGH","MASK_LOW","seed","h1","h2","blockCounts","tailLength","dataUint32","k1","k2","C1","C2","C1_LOW","C2_LOW","process","versions","nw","electron","LINE_DESCENT_FACTOR","BASELINE_FACTOR","SAVE","RESIZE","FREETEXT_OPACITY","MODIFY_CONTENTS","COPY","MODIFY_ANNOTATIONS","FILL_INTERACTIVE_FORMS","COPY_FOR_ACCESSIBILITY","ASSEMBLE","PRINT_HIGH_QUALITY","FILL_ADD_TO_PATH","STROKE_ADD_TO_PATH","FILL_STROKE_ADD_TO_PATH","ADD_TO_PATH","SOUND","MOVIE","SCREEN","PRINTERMARK","TRAPNET","WATERMARK","THREED","REDACT","AnnotationReplyType","GROUP","REPLY","AnnotationFlag","HIDDEN","NOZOOM","NOROTATE","NOVIEW","READONLY","LOCKED","TOGGLENOVIEW","LOCKEDCONTENTS","AnnotationFieldFlag","REQUIRED","NOEXPORT","MULTILINE","PASSWORD","NOTOGGLETOOFF","RADIO","PUSHBUTTON","COMBO","EDIT","SORT","FILESELECT","MULTISELECT","DONOTSPELLCHECK","DONOTSCROLL","COMB","RICHTEXT","RADIOSINUNISON","COMMITONSELCHANGE","AnnotationActionEventType","E","X","D","U","Fo","Bl","PO","PC","PV","K","F","V","C","DocumentActionEventType","WC","WS","DS","WP","DP","PageActionEventType","O","ERRORS","WARNINGS","INFOS","showSpacedText","nextLineShowText","nextLineSetSpacingShowText","setStrokeColorSpace","setFillColorSpace","setStrokeColor","setFillColor","setStrokeGray","setFillGray","setStrokeCMYKColor","setFillCMYKColor","endInlineImage","paintXObject","NEED_PASSWORD","INCORRECT_PASSWORD","level","cond","_isValidProtocol","addDefaultProtocol","dots","tryConvertEncoding","stringToUTF8String","absoluteUrl","nonSerializable","defineProperty","enumerable","configurable","writable","BaseExceptionClosure","MAX_ARGUMENT_COUNT","strBuf","chunkEnd","objectSize","buffer8","view32","hexNumbers","temp","m1","m2","xt","yt","transpose","sqrt","sx","sy","rect1","rect2","xLow","xHigh","yLow","yHigh","tvalues","t","t1","t2","b2ac","sqrtb2ac","mt","jlen","PDFStringTranslateTable","stringToPDFString","decoded","charCode","charAt","escape","utf8StringToString","encodeURIComponent","v","isArrayEqual","arr1","arr2","getModificationDate","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","NormalizeRegex","NormalizationMap","_","normalize","crypto","randomUUID","buf","getRandomValues","random"],"sourceRoot":""} |