{"version":3,"file":"app.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;;IAEMK;;;;;;;;;;;;;;AACJ;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,oBAAOC,OAAP,EAAgBC,OAAhB,EAAyB;AACvB,WAAKC,QAAL,GAAgBF,OAAhB;AACA,WAAKC,OAAL,GAAeP,oDAAA,CAAS,EAAT,EAAaK,SAAS,CAACK,QAAvB,EAAiC,KAAKF,QAAL,CAAcG,IAAd,EAAjC,EAAuDJ,OAAvD,CAAf;AAEA,WAAKK,SAAL,GAAiB,WAAjB,CAJuB,CAIO;;AAC9B,WAAKC,KAAL;;AAEAT,MAAAA,wEAAA,CAAkB,WAAlB,EAA+B;AAC7B,iBAAS,QADoB;AAE7B,iBAAS,QAFoB;AAG7B,sBAAc,MAHe;AAI7B,oBAAY,UAJiB;AAK7B,gBAAQ,OALqB;AAM7B,eAAO;AANsB,OAA/B;AAQD;AAED;AACF;AACA;AACA;;;;WACE,iBAAQ;AAAA;;AACN,WAAKW,eAAL,GAAuB,IAAvB;AAEA,WAAKC,KAAL,GAAa,KAAKR,QAAL,CAAcS,QAAd,CAAuB,uBAAvB,CAAb;AAGA,WAAKD,KAAL,CAAWE,IAAX,CAAgB,UAASC,GAAT,EAAcC,EAAd,EAAkB;AAChC,YAAIC,GAAG,GAAGrB,6CAAC,CAACoB,EAAD,CAAX;AAAA,YACIE,QAAQ,GAAGD,GAAG,CAACJ,QAAJ,CAAa,oBAAb,CADf;AAAA,YAEIM,EAAE,GAAGD,QAAQ,CAAC,CAAD,CAAR,CAAYC,EAAZ,IAAkBpB,mEAAW,CAAC,CAAD,EAAI,WAAJ,CAFtC;AAAA,YAGIqB,MAAM,GAAIJ,EAAE,CAACG,EAAJ,aAAaH,EAAE,CAACG,EAAhB,wBAAgCA,EAAhC,WAHb;AAKAF,QAAAA,GAAG,CAACI,IAAJ,CAAS,SAAT,EAAoBC,IAApB,CAAyB;AACvB,2BAAiBH,EADM;AAEvB,gBAAMC,MAFiB;AAGvB,2BAAiB;AAHM,SAAzB;AAMAF,QAAAA,QAAQ,CAACI,IAAT,CAAc;AAAC,kBAAQ,QAAT;AAAmB,6BAAmBF,MAAtC;AAA8C,yBAAe,IAA7D;AAAmE,gBAAMD;AAAzE,SAAd;AACD,OAbD;AAeA,UAAII,WAAW,GAAG,KAAKnB,QAAL,CAAciB,IAAd,CAAmB,YAAnB,EAAiCR,QAAjC,CAA0C,oBAA1C,CAAlB;;AACA,UAAIU,WAAW,CAACC,MAAhB,EAAwB;AACtB;AACA,aAAKC,cAAL,GAAsBF,WAAW,CAACG,IAAZ,CAAiB,GAAjB,EAAsBJ,IAAtB,CAA2B,MAA3B,CAAtB;;AACA,aAAKK,cAAL,CAAoBJ,WAApB;AACD;;AAED,WAAKK,cAAL,GAAsB,YAAM;AAC1B,YAAIC,MAAM,GAAGC,MAAM,CAACC,QAAP,CAAgBC,IAA7B;;AAEA,YAAI,CAACH,MAAM,CAACL,MAAZ,EAAoB;AAClB;AACA,cAAI,MAAI,CAACb,eAAT,EAA0B,OAFR,CAGlB;;AACA,cAAI,MAAI,CAACc,cAAT,EAAyBI,MAAM,GAAG,MAAI,CAACJ,cAAd;AAC1B;;AAED,YAAIQ,OAAO,GAAGJ,MAAM,IAAIjC,6CAAC,CAACiC,MAAD,CAAzB;;AACA,YAAIK,KAAK,GAAGL,MAAM,IAAI,MAAI,CAACzB,QAAL,CAAciB,IAAd,oBAA8BQ,MAA9B,SAAtB,CAX0B,CAY1B;;;AACA,YAAIM,WAAW,GAAG,CAAC,EAAEF,OAAO,CAACT,MAAR,IAAkBU,KAAK,CAACV,MAA1B,CAAnB;;AAEA,YAAIW,WAAJ,EAAiB;AACf;AACA,cAAIF,OAAO,IAAIC,KAAX,IAAoBA,KAAK,CAACV,MAA9B,EAAsC;AACpC,gBAAI,CAACU,KAAK,CAACE,MAAN,CAAa,uBAAb,EAAsCC,QAAtC,CAA+C,WAA/C,CAAL,EAAkE;AAChE,oBAAI,CAACV,cAAL,CAAoBM,OAApB;AACD;AACF,WAJD,CAKA;AALA,eAMK;AACH,kBAAI,CAACK,aAAL;AACD,WAVc,CAYf;;;AACA,cAAI,MAAI,CAACnC,OAAL,CAAaoC,cAAjB,EAAiC;AAC/BzC,YAAAA,8DAAM,CAACF,6CAAC,CAACkC,MAAD,CAAF,EAAY,YAAM;AACtB,kBAAIU,MAAM,GAAG,MAAI,CAACpC,QAAL,CAAcoC,MAAd,EAAb;;AACA5C,cAAAA,6CAAC,CAAC,YAAD,CAAD,CAAgB6C,OAAhB,CAAwB;AAAEC,gBAAAA,SAAS,EAAEF,MAAM,CAACG,GAAP,GAAa,MAAI,CAACxC,OAAL,CAAayC;AAAvC,eAAxB,EAAuF,MAAI,CAACzC,OAAL,CAAa0C,mBAApG;AACD,aAHK,CAAN;AAID;AAED;AACR;AACA;AACA;;;AACQ,gBAAI,CAACzC,QAAL,CAAc0C,OAAd,CAAsB,uBAAtB,EAA+C,CAACZ,KAAD,EAAQD,OAAR,CAA/C;AACD;AACF,OAzCD,CA5BM,CAuEN;;;AACA,UAAI,KAAK9B,OAAL,CAAa4C,QAAjB,EAA2B;AACzB,aAAKnB,cAAL;AACD;;AAED,WAAKoB,OAAL;;AAEA,WAAKrC,eAAL,GAAuB,KAAvB;AACD;AAED;AACF;AACA;AACA;;;;WACE,mBAAU;AACR,UAAIsC,KAAK,GAAG,IAAZ;;AAEA,WAAKrC,KAAL,CAAWE,IAAX,CAAgB,YAAW;AACzB,YAAIoC,KAAK,GAAGtD,6CAAC,CAAC,IAAD,CAAb;AACA,YAAIuD,WAAW,GAAGD,KAAK,CAACrC,QAAN,CAAe,oBAAf,CAAlB;;AACA,YAAIsC,WAAW,CAAC3B,MAAhB,EAAwB;AACtB0B,UAAAA,KAAK,CAACrC,QAAN,CAAe,GAAf,EAAoBuC,GAApB,CAAwB,yCAAxB,EACQC,EADR,CACW,oBADX,EACiC,UAASC,CAAT,EAAY;AAC3CA,YAAAA,CAAC,CAACC,cAAF;;AACAN,YAAAA,KAAK,CAACO,MAAN,CAAaL,WAAb;AACD,WAJD,EAIGE,EAJH,CAIM,sBAJN,EAI8B,UAASC,CAAT,EAAY;AACxCtD,YAAAA,yEAAA,CAAmBsD,CAAnB,EAAsB,WAAtB,EAAmC;AACjCE,cAAAA,MAAM,EAAE,kBAAW;AACjBP,gBAAAA,KAAK,CAACO,MAAN,CAAaL,WAAb;AACD,eAHgC;AAIjCO,cAAAA,IAAI,EAAE,gBAAW;AACf,oBAAIC,EAAE,GAAGT,KAAK,CAACQ,IAAN,GAAarC,IAAb,CAAkB,GAAlB,EAAuBuC,KAAvB,EAAT;;AACA,oBAAI,CAACX,KAAK,CAAC9C,OAAN,CAAc0D,WAAnB,EAAgC;AAC9BF,kBAAAA,EAAE,CAACb,OAAH,CAAW,oBAAX;AACD;AACF,eATgC;AAUjCgB,cAAAA,QAAQ,EAAE,oBAAW;AACnB,oBAAIH,EAAE,GAAGT,KAAK,CAACxB,IAAN,GAAaL,IAAb,CAAkB,GAAlB,EAAuBuC,KAAvB,EAAT;;AACA,oBAAI,CAACX,KAAK,CAAC9C,OAAN,CAAc0D,WAAnB,EAAgC;AAC9BF,kBAAAA,EAAE,CAACb,OAAH,CAAW,oBAAX;AACD;AACF,eAfgC;AAgBjCiB,cAAAA,KAAK,EAAE,iBAAW;AAChB,oBAAIJ,EAAE,GAAGV,KAAK,CAACrC,KAAN,CAAYmD,KAAZ,GAAoB1C,IAApB,CAAyB,kBAAzB,EAA6CuC,KAA7C,EAAT;;AACA,oBAAI,CAACX,KAAK,CAAC9C,OAAN,CAAc0D,WAAnB,EAAgC;AAC7BF,kBAAAA,EAAE,CAACb,OAAH,CAAW,oBAAX;AACF;AACF,eArBgC;AAsBjCkB,cAAAA,IAAI,EAAE,gBAAW;AACf,oBAAIL,EAAE,GAAGV,KAAK,CAACrC,KAAN,CAAYoD,IAAZ,GAAmB3C,IAAnB,CAAwB,kBAAxB,EAA4CuC,KAA5C,EAAT;;AACA,oBAAI,CAACX,KAAK,CAAC9C,OAAN,CAAc0D,WAAnB,EAAgC;AAC7BF,kBAAAA,EAAE,CAACb,OAAH,CAAW,oBAAX;AACF;AACF,eA3BgC;AA4BjCmB,cAAAA,OAAO,EAAE,mBAAW;AAClBX,gBAAAA,CAAC,CAACC,cAAF;AACD;AA9BgC,aAAnC;AAgCD,WArCD;AAsCD;AACF,OA3CD;;AA4CA,UAAI,KAAKpD,OAAL,CAAa4C,QAAjB,EAA2B;AACzBnD,QAAAA,6CAAC,CAACkC,MAAD,CAAD,CAAUuB,EAAV,CAAa,YAAb,EAA2B,KAAKzB,cAAhC;AACD;AACF;AAED;AACF;AACA;AACA;AACA;;;;WACE,gBAAOsC,OAAP,EAAgB;AACd,UAAIA,OAAO,CAACC,OAAR,CAAgB,kBAAhB,EAAoCC,EAApC,CAAuC,YAAvC,CAAJ,EAA0D;AACxDC,QAAAA,OAAO,CAACC,IAAR,CAAa,8CAAb;AACA;AACD;;AACD,UAAIJ,OAAO,CAAC9B,MAAR,GAAiBC,QAAjB,CAA0B,WAA1B,CAAJ,EAA4C;AAC1C,aAAKkC,EAAL,CAAQL,OAAR;AACD,OAFD,MAEO;AACL,aAAKM,IAAL,CAAUN,OAAV;AACD,OATa,CAUd;;;AACA,UAAI,KAAK/D,OAAL,CAAa4C,QAAjB,EAA2B;AACzB,YAAIlB,MAAM,GAAGqC,OAAO,CAACxC,IAAR,CAAa,GAAb,EAAkBJ,IAAlB,CAAuB,MAAvB,CAAb;;AAEA,YAAI,KAAKnB,OAAL,CAAasE,aAAjB,EAAgC;AAC9BC,UAAAA,OAAO,CAACC,SAAR,CAAkB,EAAlB,EAAsB,EAAtB,EAA0B9C,MAA1B;AACD,SAFD,MAEO;AACL6C,UAAAA,OAAO,CAACE,YAAR,CAAqB,EAArB,EAAyB,EAAzB,EAA6B/C,MAA7B;AACD;AACF;AACF;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,cAAKqC,OAAL,EAAc;AACZ,UAAIA,OAAO,CAACC,OAAR,CAAgB,kBAAhB,EAAoCC,EAApC,CAAuC,YAAvC,CAAJ,EAA2D;AACzDC,QAAAA,OAAO,CAACC,IAAR,CAAa,oDAAb;AACA;AACD;;AAED,UAAI,KAAKnE,OAAL,CAAa0D,WAAjB,EACE,KAAKgB,QAAL,CAAcX,OAAd,EADF,KAGE,KAAKvC,cAAL,CAAoBuC,OAApB;AACH;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,YAAGA,OAAH,EAAY;AACV,UAAI,KAAK9D,QAAL,CAAcgE,EAAd,CAAiB,YAAjB,CAAJ,EAAoC;AAClCC,QAAAA,OAAO,CAACC,IAAR,CAAa,kDAAb;AACA;AACD,OAJS,CAMV;;;AACA,UAAMQ,WAAW,GAAGZ,OAAO,CAAC9B,MAAR,EAApB;AACA,UAAI,CAAC0C,WAAW,CAACzC,QAAZ,CAAqB,WAArB,CAAL,EAAwC,OAR9B,CAUV;;AACA,UAAM0C,YAAY,GAAGD,WAAW,CAACE,QAAZ,EAArB;AACA,UAAI,CAAC,KAAK7E,OAAL,CAAa8E,cAAd,IAAgC,CAACF,YAAY,CAAC1C,QAAb,CAAsB,WAAtB,CAArC,EAAyE;;AAEzE,WAAK6C,SAAL,CAAehB,OAAf;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,wBAAeA,OAAf,EAAwB;AACtB;AACA,UAAMiB,eAAe,GAAG,KAAK/E,QAAL,CAAcS,QAAd,CAAuB,YAAvB,EAAqCA,QAArC,CAA8C,oBAA9C,CAAxB;;AACA,UAAIsE,eAAe,CAAC3D,MAApB,EAA4B;AAC1B,aAAK0D,SAAL,CAAeC,eAAe,CAACC,GAAhB,CAAoBlB,OAApB,CAAf;AACD,OALqB,CAOtB;;;AACA,WAAKW,QAAL,CAAcX,OAAd;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;WACE,kBAASA,OAAT,EAAkB;AAAA;;AAChB,UAAMY,WAAW,GAAGZ,OAAO,CAAC9B,MAAR,EAApB;AACA,UAAMiD,eAAe,GAAGnB,OAAO,CAAC5C,IAAR,CAAa,iBAAb,CAAxB;AAEA4C,MAAAA,OAAO,CAAC5C,IAAR,CAAa,aAAb,EAA4B,KAA5B;AACAwD,MAAAA,WAAW,CAACQ,QAAZ,CAAqB,WAArB;AAEA1F,MAAAA,6CAAC,YAAKyF,eAAL,EAAD,CAAyB/D,IAAzB,CAA8B;AAC5B,yBAAiB;AADW,OAA9B;AAIA4C,MAAAA,OAAO,CAACqB,MAAR,GAAiBC,SAAjB,CAA2B,KAAKrF,OAAL,CAAasF,UAAxC,EAAoD,YAAM;AACxD;AACN;AACA;AACA;AACM,cAAI,CAACrF,QAAL,CAAc0C,OAAd,CAAsB,mBAAtB,EAA2C,CAACoB,OAAD,CAA3C;AACD,OAND;AAOD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;WACE,mBAAUA,OAAV,EAAmB;AAAA;;AACjB,UAAMY,WAAW,GAAGZ,OAAO,CAAC9B,MAAR,EAApB;AACA,UAAMiD,eAAe,GAAGnB,OAAO,CAAC5C,IAAR,CAAa,iBAAb,CAAxB;AAEA4C,MAAAA,OAAO,CAAC5C,IAAR,CAAa,aAAb,EAA4B,IAA5B;AACAwD,MAAAA,WAAW,CAACY,WAAZ,CAAwB,WAAxB;AAEA9F,MAAAA,6CAAC,YAAKyF,eAAL,EAAD,CAAyB/D,IAAzB,CAA8B;AAC7B,yBAAiB;AADY,OAA9B;AAIA4C,MAAAA,OAAO,CAACqB,MAAR,GAAiBI,OAAjB,CAAyB,KAAKxF,OAAL,CAAasF,UAAtC,EAAkD,YAAM;AACtD;AACN;AACA;AACA;AACM,cAAI,CAACrF,QAAL,CAAc0C,OAAd,CAAsB,iBAAtB,EAAyC,CAACoB,OAAD,CAAzC;AACD,OAND;AAOD;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,yBAAgB;AACd,UAAI0B,WAAW,GAAG,KAAKxF,QAAL,CAAcS,QAAd,CAAuB,YAAvB,EAAqCA,QAArC,CAA8C,oBAA9C,CAAlB;;AACA,UAAI+E,WAAW,CAACpE,MAAhB,EAAwB;AACtB,aAAK0D,SAAL,CAAeU,WAAf;AACD;AACF;AAED;AACF;AACA;AACA;AACA;;;;WACE,oBAAW;AACT,WAAKxF,QAAL,CAAciB,IAAd,CAAmB,oBAAnB,EAAyCwE,IAAzC,CAA8C,IAA9C,EAAoDF,OAApD,CAA4D,CAA5D,EAA+DG,GAA/D,CAAmE,SAAnE,EAA8E,EAA9E;AACA,WAAK1F,QAAL,CAAciB,IAAd,CAAmB,GAAnB,EAAwB+B,GAAxB,CAA4B,eAA5B;;AACA,UAAI,KAAKjD,OAAL,CAAa4C,QAAjB,EAA2B;AACzBnD,QAAAA,6CAAC,CAACkC,MAAD,CAAD,CAAUsB,GAAV,CAAc,YAAd,EAA4B,KAAKxB,cAAjC;AACD;AAEF;;;;EA7UqB/B;;AAgVxBI,SAAS,CAACK,QAAV,GAAqB;AACnB;AACF;AACA;AACA;AACA;AACA;AACEmF,EAAAA,UAAU,EAAE,GAPO;;AAQnB;AACF;AACA;AACA;AACA;AACA;AACE5B,EAAAA,WAAW,EAAE,KAdM;;AAenB;AACF;AACA;AACA;AACA;AACA;AACEoB,EAAAA,cAAc,EAAE,KArBG;;AAsBnB;AACF;AACA;AACA;AACA;AACA;AACA;AACElC,EAAAA,QAAQ,EAAE,KA7BS;;AA8BnB;AACF;AACA;AACA;AACA;AACA;AACER,EAAAA,cAAc,EAAE,KApCG;;AAqCnB;AACF;AACA;AACA;AACA;AACA;AACEM,EAAAA,mBAAmB,EAAE,GA3CF;;AA4CnB;AACF;AACA;AACA;AACA;AACA;AACED,EAAAA,oBAAoB,EAAE,CAlDH;;AAmDnB;AACF;AACA;AACA;AACA;AACA;AACE6B,EAAAA,aAAa,EAAE;AAzDI,CAArB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3VA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;IAEMuB;;;;;;;;;;;;;;AACJ;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,oBAAO9F,OAAP,EAAgBC,OAAhB,EAAyB;AACvB,WAAKC,QAAL,GAAgBF,OAAhB;AACA,WAAKC,OAAL,GAAeP,oDAAA,CAAS,EAAT,EAAaoG,aAAa,CAAC1F,QAA3B,EAAqC,KAAKF,QAAL,CAAcG,IAAd,EAArC,EAA2DJ,OAA3D,CAAf;AACA,WAAKK,SAAL,GAAiB,eAAjB,CAHuB,CAGW;;AAElC,WAAKC,KAAL;;AAEAT,MAAAA,wEAAA,CAAkB,eAAlB,EAAmC;AACjC,iBAAS,QADwB;AAEjC,iBAAS,QAFwB;AAGjC,uBAAe,MAHkB;AAIjC,oBAAY,IAJqB;AAKjC,sBAAc,MALmB;AAMjC,sBAAc,OANmB;AAOjC,kBAAU;AAPuB,OAAnC;AASD;AAID;AACF;AACA;AACA;;;;WACE,iBAAQ;AACN+F,MAAAA,+DAAA,CAAa,KAAK3F,QAAlB,EAA4B,WAA5B;;AAEA,UAAI6C,KAAK,GAAG,IAAZ;;AAEA,WAAK7C,QAAL,CAAciB,IAAd,CAAmB,gBAAnB,EAAqC+D,GAArC,CAAyC,YAAzC,EAAuDO,OAAvD,CAA+D,CAA/D,EALM,CAK4D;;AAClE,WAAKvF,QAAL,CAAckB,IAAd,CAAmB;AACjB,gCAAwB,KAAKnB,OAAL,CAAa+F;AADpB,OAAnB;AAIA,WAAKC,UAAL,GAAkB,KAAK/F,QAAL,CAAciB,IAAd,CAAmB,8BAAnB,CAAlB;AACA,WAAK8E,UAAL,CAAgBrF,IAAhB,CAAqB,YAAW;AAC9B,YAAIM,MAAM,GAAG,KAAKD,EAAL,IAAWpB,mEAAW,CAAC,CAAD,EAAI,eAAJ,CAAnC;AAAA,YACImD,KAAK,GAAGtD,6CAAC,CAAC,IAAD,CADb;AAAA,YAEIwG,IAAI,GAAGlD,KAAK,CAACrC,QAAN,CAAe,gBAAf,CAFX;AAAA,YAGIwF,KAAK,GAAGD,IAAI,CAAC,CAAD,CAAJ,CAAQjF,EAAR,IAAcpB,mEAAW,CAAC,CAAD,EAAI,UAAJ,CAHrC;AAAA,YAIIuG,QAAQ,GAAGF,IAAI,CAAC/D,QAAL,CAAc,WAAd,CAJf;;AAMA,YAAIY,KAAK,CAAC9C,OAAN,CAAcoG,UAAlB,EAA8B;AAC5B,cAAItE,OAAO,GAAGiB,KAAK,CAACrC,QAAN,CAAe,GAAf,CAAd;AACAoB,UAAAA,OAAO,CAACuE,KAAR,GAAgBC,SAAhB,CAA0BL,IAA1B,EAAgCM,IAAhC,CAAqC,wGAArC;AACD;;AAED,YAAIzD,KAAK,CAAC9C,OAAN,CAAcwG,aAAlB,EAAiC;AAC/BzD,UAAAA,KAAK,CAACoC,QAAN,CAAe,oBAAf;AACApC,UAAAA,KAAK,CAACrC,QAAN,CAAe,GAAf,EAAoB+F,KAApB,CAA0B,iBAAiBxF,MAAjB,GAA0B,0CAA1B,GAAuEiF,KAAvE,GAA+E,mBAA/E,GAAqGC,QAArG,GAAgH,WAAhH,GAA8HrD,KAAK,CAAC9C,OAAN,CAAc0G,iBAA5I,GAAgK,sCAAhK,GAAyM5D,KAAK,CAAC9C,OAAN,CAAc0G,iBAAvN,GAA2O,kBAArQ;AACD,SAHD,MAGO;AACL3D,UAAAA,KAAK,CAAC5B,IAAN,CAAW;AACT,6BAAiB+E,KADR;AAET,6BAAiBC,QAFR;AAGT,kBAAMlF;AAHG,WAAX;AAKD;;AACDgF,QAAAA,IAAI,CAAC9E,IAAL,CAAU;AACR,6BAAmBF,MADX;AAER,yBAAe,CAACkF,QAFR;AAGR,kBAAQ,OAHA;AAIR,gBAAMD;AAJE,SAAV;AAMD,OA5BD;AA6BA,UAAIS,SAAS,GAAG,KAAK1G,QAAL,CAAciB,IAAd,CAAmB,YAAnB,CAAhB;;AACA,UAAIyF,SAAS,CAACtF,MAAd,EAAsB;AACpBsF,QAAAA,SAAS,CAAChG,IAAV,CAAe,YAAW;AACxBmC,UAAAA,KAAK,CAACuB,IAAN,CAAW5E,6CAAC,CAAC,IAAD,CAAZ;AACD,SAFD;AAGD;;AACD,WAAKoD,OAAL;AACD;AAED;AACF;AACA;AACA;;;;WACE,mBAAU;AACR,UAAIC,KAAK,GAAG,IAAZ;;AAEA,WAAK7C,QAAL,CAAciB,IAAd,CAAmB,IAAnB,EAAyBP,IAAzB,CAA8B,YAAW;AACvC,YAAIiG,QAAQ,GAAGnH,6CAAC,CAAC,IAAD,CAAD,CAAQiB,QAAR,CAAiB,gBAAjB,CAAf;;AAEA,YAAIkG,QAAQ,CAACvF,MAAb,EAAqB;AACnB,cAAIyB,KAAK,CAAC9C,OAAN,CAAcwG,aAAlB,EAAiC;AAC/B/G,YAAAA,6CAAC,CAAC,IAAD,CAAD,CAAQiB,QAAR,CAAiB,iBAAjB,EAAoCuC,GAApC,CAAwC,wBAAxC,EAAkEC,EAAlE,CAAqE,wBAArE,EAA+F,UAASC,CAAT,EAAY;AACzGL,cAAAA,KAAK,CAACO,MAAN,CAAauD,QAAb;AACD,aAFD;AAGD,WAJD,MAIO;AACHnH,YAAAA,6CAAC,CAAC,IAAD,CAAD,CAAQiB,QAAR,CAAiB,GAAjB,EAAsBuC,GAAtB,CAA0B,wBAA1B,EAAoDC,EAApD,CAAuD,wBAAvD,EAAiF,UAASC,CAAT,EAAY;AAC3FA,cAAAA,CAAC,CAACC,cAAF;;AACAN,cAAAA,KAAK,CAACO,MAAN,CAAauD,QAAb;AACD,aAHD;AAIH;AACF;AACF,OAfD,EAeG1D,EAfH,CAeM,0BAfN,EAekC,UAASC,CAAT,EAAY;AAC5C,YAAIlD,QAAQ,GAAGR,6CAAC,CAAC,IAAD,CAAhB;AAAA,YACIoH,SAAS,GAAG5G,QAAQ,CAACgC,MAAT,CAAgB,IAAhB,EAAsBvB,QAAtB,CAA+B,IAA/B,CADhB;AAAA,YAEIoG,YAFJ;AAAA,YAGIC,YAHJ;AAAA,YAIIhD,OAAO,GAAG9D,QAAQ,CAACS,QAAT,CAAkB,gBAAlB,CAJd;AAMAmG,QAAAA,SAAS,CAAClG,IAAV,CAAe,UAASqG,CAAT,EAAY;AACzB,cAAIvH,6CAAC,CAAC,IAAD,CAAD,CAAQwE,EAAR,CAAWhE,QAAX,CAAJ,EAA0B;AACxB6G,YAAAA,YAAY,GAAGD,SAAS,CAACI,EAAV,CAAaC,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYH,CAAC,GAAC,CAAd,CAAb,EAA+B9F,IAA/B,CAAoC,GAApC,EAAyC0C,KAAzC,EAAf;AACAmD,YAAAA,YAAY,GAAGF,SAAS,CAACI,EAAV,CAAaC,IAAI,CAACE,GAAL,CAASJ,CAAC,GAAC,CAAX,EAAcH,SAAS,CAACxF,MAAV,GAAiB,CAA/B,CAAb,EAAgDH,IAAhD,CAAqD,GAArD,EAA0D0C,KAA1D,EAAf;;AAEA,gBAAInE,6CAAC,CAAC,IAAD,CAAD,CAAQiB,QAAR,CAAiB,wBAAjB,EAA2CW,MAA/C,EAAuD;AAAE;AACvD0F,cAAAA,YAAY,GAAG9G,QAAQ,CAACiB,IAAT,CAAc,gBAAd,EAAgCA,IAAhC,CAAqC,GAArC,EAA0C0C,KAA1C,EAAf;AACD;;AACD,gBAAInE,6CAAC,CAAC,IAAD,CAAD,CAAQwE,EAAR,CAAW,cAAX,CAAJ,EAAgC;AAAE;AAChC6C,cAAAA,YAAY,GAAG7G,QAAQ,CAACoH,OAAT,CAAiB,IAAjB,EAAuBzD,KAAvB,GAA+B1C,IAA/B,CAAoC,GAApC,EAAyC0C,KAAzC,EAAf;AACD,aAFD,MAEO,IAAIkD,YAAY,CAACO,OAAb,CAAqB,IAArB,EAA2BzD,KAA3B,GAAmClD,QAAnC,CAA4C,wBAA5C,EAAsEW,MAA1E,EAAkF;AAAE;AACzFyF,cAAAA,YAAY,GAAGA,YAAY,CAACO,OAAb,CAAqB,IAArB,EAA2BnG,IAA3B,CAAgC,eAAhC,EAAiDA,IAAjD,CAAsD,GAAtD,EAA2D0C,KAA3D,EAAf;AACD;;AACD,gBAAInE,6CAAC,CAAC,IAAD,CAAD,CAAQwE,EAAR,CAAW,aAAX,CAAJ,EAA+B;AAAE;AAC/B8C,cAAAA,YAAY,GAAG9G,QAAQ,CAACoH,OAAT,CAAiB,IAAjB,EAAuBzD,KAAvB,GAA+BL,IAA/B,CAAoC,IAApC,EAA0CrC,IAA1C,CAA+C,GAA/C,EAAoD0C,KAApD,EAAf;AACD;;AAED;AACD;AACF,SAnBD;AAqBA/D,QAAAA,yEAAA,CAAmBsD,CAAnB,EAAsB,eAAtB,EAAuC;AACrCmE,UAAAA,IAAI,EAAE,gBAAW;AACf,gBAAIvD,OAAO,CAACE,EAAR,CAAW,SAAX,CAAJ,EAA2B;AACzBnB,cAAAA,KAAK,CAACuB,IAAN,CAAWN,OAAX;;AACAA,cAAAA,OAAO,CAAC7C,IAAR,CAAa,IAAb,EAAmB0C,KAAnB,GAA2B1C,IAA3B,CAAgC,GAAhC,EAAqC0C,KAArC,GAA6CH,KAA7C;AACD;AACF,WANoC;AAOrC8D,UAAAA,KAAK,EAAE,iBAAW;AAChB,gBAAIxD,OAAO,CAAC1C,MAAR,IAAkB,CAAC0C,OAAO,CAACE,EAAR,CAAW,SAAX,CAAvB,EAA8C;AAAE;AAC9CnB,cAAAA,KAAK,CAACsB,EAAN,CAASL,OAAT;AACD,aAFD,MAEO,IAAI9D,QAAQ,CAACgC,MAAT,CAAgB,gBAAhB,EAAkCZ,MAAtC,EAA8C;AAAE;AACrDyB,cAAAA,KAAK,CAACsB,EAAN,CAASnE,QAAQ,CAACgC,MAAT,CAAgB,gBAAhB,CAAT;;AACAhC,cAAAA,QAAQ,CAACoH,OAAT,CAAiB,IAAjB,EAAuBzD,KAAvB,GAA+B1C,IAA/B,CAAoC,GAApC,EAAyC0C,KAAzC,GAAiDH,KAAjD;AACD;AACF,WAdoC;AAerCW,UAAAA,EAAE,EAAE,cAAW;AACb0C,YAAAA,YAAY,CAACrD,KAAb;AACA,mBAAO,IAAP;AACD,WAlBoC;AAmBrCY,UAAAA,IAAI,EAAE,gBAAW;AACf0C,YAAAA,YAAY,CAACtD,KAAb;AACA,mBAAO,IAAP;AACD,WAtBoC;AAuBrCJ,UAAAA,MAAM,EAAE,kBAAW;AACjB,gBAAIP,KAAK,CAAC9C,OAAN,CAAcwG,aAAlB,EAAiC;AAC/B,qBAAO,KAAP;AACD;;AACD,gBAAIvG,QAAQ,CAACS,QAAT,CAAkB,gBAAlB,EAAoCW,MAAxC,EAAgD;AAC9CyB,cAAAA,KAAK,CAACO,MAAN,CAAapD,QAAQ,CAACS,QAAT,CAAkB,gBAAlB,CAAb;;AACA,qBAAO,IAAP;AACD;AACF,WA/BoC;AAgCrC8G,UAAAA,QAAQ,EAAE,oBAAW;AACnB1E,YAAAA,KAAK,CAAC2E,OAAN;AACD,WAlCoC;AAmCrC3D,UAAAA,OAAO,EAAE,iBAASV,cAAT,EAAyB;AAChC,gBAAIA,cAAJ,EAAoB;AAClBD,cAAAA,CAAC,CAACC,cAAF;AACD;AACF;AAvCoC,SAAvC;AAyCD,OApFD,EAHQ,CAuFL;AACJ;AAED;AACF;AACA;AACA;;;;WACE,mBAAU;AACR,WAAKgB,EAAL,CAAQ,KAAKnE,QAAL,CAAciB,IAAd,CAAmB,gBAAnB,CAAR;AACD;AAED;AACF;AACA;AACA;;;;WACE,mBAAU;AACR,WAAKmD,IAAL,CAAU,KAAKpE,QAAL,CAAciB,IAAd,CAAmB,gBAAnB,CAAV;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,gBAAO6C,OAAP,EAAgB;AACd,UAAI,CAACA,OAAO,CAACE,EAAR,CAAW,WAAX,CAAL,EAA8B;AAC5B,YAAI,CAACF,OAAO,CAACE,EAAR,CAAW,SAAX,CAAL,EAA4B;AAC1B,eAAKG,EAAL,CAAQL,OAAR;AACD,SAFD,MAGK;AACH,eAAKM,IAAL,CAAUN,OAAV;AACD;AACF;AACF;AAED;AACF;AACA;AACA;AACA;;;;WACE,cAAKA,OAAL,EAAc;AAAA;;AACZ;AACA;AACA,UAAI,CAAC,KAAK/D,OAAL,CAAa+F,SAAlB,EAA6B;AAC3B;AACA;AACA,YAAM2B,aAAa,GAAG3D,OAAO,CAAC4D,YAAR,CAAqB,KAAK1H,QAA1B,EACnB2H,GADmB,CACf7D,OADe,EAEnB6D,GAFmB,CAEf7D,OAAO,CAAC7C,IAAR,CAAa,YAAb,CAFe,CAAtB,CAH2B,CAM3B;;AACA,YAAM2G,qBAAqB,GAAG,KAAK5H,QAAL,CAAciB,IAAd,CAAmB,YAAnB,EAAiC+D,GAAjC,CAAqCyC,aAArC,CAA9B;AAEA,aAAKtD,EAAL,CAAQyD,qBAAR;AACD;;AAED9D,MAAAA,OAAO,CACJoB,QADH,CACY,WADZ,EAEGhE,IAFH,CAEQ;AAAE,uBAAe;AAAjB,OAFR;;AAIA,UAAI,KAAKnB,OAAL,CAAawG,aAAjB,EAAgC;AAC9BzC,QAAAA,OAAO,CAACxC,IAAR,CAAa,iBAAb,EAAgCJ,IAAhC,CAAqC;AAAC,2BAAiB;AAAlB,SAArC;AACD,OAFD,MAGK;AACH4C,QAAAA,OAAO,CAAC9B,MAAR,CAAe,8BAAf,EAA+Cd,IAA/C,CAAoD;AAAC,2BAAiB;AAAlB,SAApD;AACD;;AAED4C,MAAAA,OAAO,CAACsB,SAAR,CAAkB,KAAKrF,OAAL,CAAasF,UAA/B,EAA2C,YAAM;AAC/C;AACN;AACA;AACA;AACM,cAAI,CAACrF,QAAL,CAAc0C,OAAd,CAAsB,uBAAtB,EAA+C,CAACoB,OAAD,CAA/C;AACD,OAND;AAOD;AAED;AACF;AACA;AACA;AACA;;;;WACE,YAAGA,OAAH,EAAY;AAAA;;AACV,UAAM+D,SAAS,GAAG/D,OAAO,CAAC7C,IAAR,CAAa,gBAAb,CAAlB;AACA,UAAM6G,SAAS,GAAGhE,OAAO,CAAC6D,GAAR,CAAYE,SAAZ,CAAlB;AAEAA,MAAAA,SAAS,CAACtC,OAAV,CAAkB,CAAlB;AACAuC,MAAAA,SAAS,CACNxC,WADH,CACe,WADf,EAEGpE,IAFH,CAEQ,aAFR,EAEuB,IAFvB;;AAIA,UAAI,KAAKnB,OAAL,CAAawG,aAAjB,EAAgC;AAC9BuB,QAAAA,SAAS,CAACxG,IAAV,CAAe,iBAAf,EAAkCJ,IAAlC,CAAuC,eAAvC,EAAwD,KAAxD;AACD,OAFD,MAGK;AACH4G,QAAAA,SAAS,CAAC9F,MAAV,CAAiB,8BAAjB,EAAiDd,IAAjD,CAAsD,eAAtD,EAAuE,KAAvE;AACD;;AAED4C,MAAAA,OAAO,CAACyB,OAAR,CAAgB,KAAKxF,OAAL,CAAasF,UAA7B,EAAyC,YAAM;AAC7C;AACN;AACA;AACA;AACM,cAAI,CAACrF,QAAL,CAAc0C,OAAd,CAAsB,qBAAtB,EAA6C,CAACoB,OAAD,CAA7C;AACD,OAND;AAOD;AAED;AACF;AACA;AACA;;;;WACE,oBAAW;AACT,WAAK9D,QAAL,CAAciB,IAAd,CAAmB,gBAAnB,EAAqCmE,SAArC,CAA+C,CAA/C,EAAkDM,GAAlD,CAAsD,SAAtD,EAAiE,EAAjE;AACA,WAAK1F,QAAL,CAAciB,IAAd,CAAmB,GAAnB,EAAwB+B,GAAxB,CAA4B,wBAA5B;AACA,WAAKhD,QAAL,CAAciB,IAAd,CAAmB,uBAAnB,EAA4C8G,MAA5C;;AAEA,UAAI,KAAKhI,OAAL,CAAawG,aAAjB,EAAgC;AAC9B,aAAKvG,QAAL,CAAciB,IAAd,CAAmB,qBAAnB,EAA0CqE,WAA1C,CAAsD,oBAAtD;AACA,aAAKtF,QAAL,CAAciB,IAAd,CAAmB,iBAAnB,EAAsC+G,MAAtC;AACD;;AAEDrC,MAAAA,4DAAA,CAAU,KAAK3F,QAAf,EAAyB,WAAzB;AACD;;;;EArSyBP;;AAwS5BmG,aAAa,CAAC1F,QAAd,GAAyB;AACvB;AACF;AACA;AACA;AACA;AACA;AACEiG,EAAAA,UAAU,EAAE,KAPW;;AAQvB;AACF;AACA;AACA;AACA;AACA;AACEd,EAAAA,UAAU,EAAE,GAdW;;AAevB;AACF;AACA;AACA;AACA;AACEkB,EAAAA,aAAa,EAAE,KApBQ;;AAqBvB;AACF;AACA;AACA;AACA;AACEE,EAAAA,iBAAiB,EAAE,aA1BI;;AA2BvB;AACF;AACA;AACA;AACA;AACA;AACEX,EAAAA,SAAS,EAAE;AAjCY,CAAzB;;;;;;;;;;;;;;;;;;;;;;ACrTA;AACA;AACA;AAEA,IAAIqC,kBAAkB,GAAG,OAAzB,EAEA;AACA;;AACA,IAAIC,UAAU,GAAG;AACfC,EAAAA,OAAO,EAAEF,kBADM;;AAGf;AACF;AACA;AACEG,EAAAA,QAAQ,EAAE,EANK;;AAQf;AACF;AACA;AACEC,EAAAA,MAAM,EAAE,EAXO;;AAaf;AACF;AACA;AACA;AACEC,EAAAA,MAAM,EAAE,gBAASA,OAAT,EAAiBC,IAAjB,EAAuB;AAC7B;AACA;AACA,QAAIrI,SAAS,GAAIqI,IAAI,IAAIC,YAAY,CAACF,OAAD,CAArC,CAH6B,CAI7B;AACA;;AACA,QAAIG,QAAQ,GAAIC,SAAS,CAACxI,SAAD,CAAzB,CAN6B,CAQ7B;;AACA,SAAKkI,QAAL,CAAcK,QAAd,IAA0B,KAAKvI,SAAL,IAAkBoI,OAA5C;AACD,GA3Bc;;AA4Bf;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACEK,EAAAA,cAAc,EAAE,wBAASL,MAAT,EAAiBC,IAAjB,EAAsB;AACpC,QAAIK,UAAU,GAAGL,IAAI,GAAGG,SAAS,CAACH,IAAD,CAAZ,GAAqBC,YAAY,CAACF,MAAM,CAACO,WAAR,CAAZ,CAAiCC,WAAjC,EAA1C;AACAR,IAAAA,MAAM,CAACS,IAAP,GAActJ,mEAAW,CAAC,CAAD,EAAImJ,UAAJ,CAAzB;;AAEA,QAAG,CAACN,MAAM,CAACxI,QAAP,CAAgBkB,IAAhB,gBAA6B4H,UAA7B,EAAJ,EAA+C;AAAEN,MAAAA,MAAM,CAACxI,QAAP,CAAgBkB,IAAhB,gBAA6B4H,UAA7B,GAA2CN,MAAM,CAACS,IAAlD;AAA0D;;AAC3G,QAAG,CAACT,MAAM,CAACxI,QAAP,CAAgBG,IAAhB,CAAqB,UAArB,CAAJ,EAAqC;AAAEqI,MAAAA,MAAM,CAACxI,QAAP,CAAgBG,IAAhB,CAAqB,UAArB,EAAiCqI,MAAjC;AAA2C;AAC5E;AACV;AACA;AACA;;;AACIA,IAAAA,MAAM,CAACxI,QAAP,CAAgB0C,OAAhB,mBAAmCoG,UAAnC;;AAEA,SAAKP,MAAL,CAAYW,IAAZ,CAAiBV,MAAM,CAACS,IAAxB;;AAEA;AACD,GApDc;;AAqDf;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACEE,EAAAA,gBAAgB,EAAE,0BAASX,MAAT,EAAgB;AAChC,QAAIM,UAAU,GAAGF,SAAS,CAACF,YAAY,CAACF,MAAM,CAACxI,QAAP,CAAgBG,IAAhB,CAAqB,UAArB,EAAiC4I,WAAlC,CAAb,CAA1B;;AAEA,SAAKR,MAAL,CAAYa,MAAZ,CAAmB,KAAKb,MAAL,CAAYc,OAAZ,CAAoBb,MAAM,CAACS,IAA3B,CAAnB,EAAqD,CAArD;;AACAT,IAAAA,MAAM,CAACxI,QAAP,CAAgBsJ,UAAhB,gBAAmCR,UAAnC,GAAiDS,UAAjD,CAA4D,UAA5D;AACM;AACV;AACA;AACA;AAJI,KAKO7G,OALP,wBAK+BoG,UAL/B;;AAMA,SAAI,IAAIU,IAAR,IAAgBhB,MAAhB,EAAuB;AACrBA,MAAAA,MAAM,CAACgB,IAAD,CAAN,GAAe,IAAf,CADqB,CACD;AACrB;;AACD;AACD,GA3Ec;;AA6Ef;AACF;AACA;AACA;AACA;AACA;AACGC,EAAAA,MAAM,EAAE,gBAASC,OAAT,EAAiB;AACvB,QAAIC,IAAI,GAAGD,OAAO,YAAYlK,+CAA9B;;AACA,QAAG;AACD,UAAGmK,IAAH,EAAQ;AACND,QAAAA,OAAO,CAAChJ,IAAR,CAAa,YAAU;AACrBlB,UAAAA,6CAAC,CAAC,IAAD,CAAD,CAAQW,IAAR,CAAa,UAAb,EAAyBE,KAAzB;AACD,SAFD;AAGD,OAJD,MAIK;AACH,YAAIuJ,IAAI,WAAUF,OAAV,CAAR;AAAA,YACA7G,KAAK,GAAG,IADR;AAAA,YAEAgH,GAAG,GAAG;AACJ,oBAAU,gBAASC,IAAT,EAAc;AACtBA,YAAAA,IAAI,CAACC,OAAL,CAAa,UAASC,CAAT,EAAW;AACtBA,cAAAA,CAAC,GAAGpB,SAAS,CAACoB,CAAD,CAAb;AACAxK,cAAAA,6CAAC,CAAC,WAAUwK,CAAV,GAAa,GAAd,CAAD,CAAoBC,UAApB,CAA+B,OAA/B;AACD,aAHD;AAID,WANG;AAOJ,oBAAU,kBAAU;AAClBP,YAAAA,OAAO,GAAGd,SAAS,CAACc,OAAD,CAAnB;AACAlK,YAAAA,6CAAC,CAAC,WAAUkK,OAAV,GAAmB,GAApB,CAAD,CAA0BO,UAA1B,CAAqC,OAArC;AACD,WAVG;AAWJ,uBAAa,qBAAU;AACrB,iBAAK,QAAL,EAAeC,MAAM,CAACC,IAAP,CAAYtH,KAAK,CAACyF,QAAlB,CAAf;AACD;AAbG,SAFN;;AAiBAuB,QAAAA,GAAG,CAACD,IAAD,CAAH,CAAUF,OAAV;AACD;AACF,KAzBD,CAyBC,OAAMU,GAAN,EAAU;AACTnG,MAAAA,OAAO,CAACoG,KAAR,CAAcD,GAAd;AACD,KA3BD,SA2BQ;AACN,aAAOV,OAAP;AACD;AACF,GAnHa;;AAqHf;AACF;AACA;AACA;AACA;AACEY,EAAAA,MAAM,EAAE,gBAASC,IAAT,EAAeb,OAAf,EAAwB;AAE9B;AACA,QAAI,OAAOA,OAAP,KAAmB,WAAvB,EAAoC;AAClCA,MAAAA,OAAO,GAAGQ,MAAM,CAACC,IAAP,CAAY,KAAK7B,QAAjB,CAAV;AACD,KAFD,CAGA;AAHA,SAIK,IAAI,OAAOoB,OAAP,KAAmB,QAAvB,EAAiC;AACpCA,MAAAA,OAAO,GAAG,CAACA,OAAD,CAAV;AACD;;AAED,QAAI7G,KAAK,GAAG,IAAZ,CAX8B,CAa9B;;;AACArD,IAAAA,kDAAA,CAAOkK,OAAP,EAAgB,UAAS3C,CAAT,EAAY0B,IAAZ,EAAkB;AAChC;AACA,UAAID,MAAM,GAAG3F,KAAK,CAACyF,QAAN,CAAeG,IAAf,CAAb,CAFgC,CAIhC;;AACA,UAAI3F,KAAK,GAAGtD,6CAAC,CAAC+K,IAAD,CAAD,CAAQtJ,IAAR,CAAa,WAASwH,IAAT,GAAc,GAA3B,EAAgC+B,OAAhC,CAAwC,WAAS/B,IAAT,GAAc,GAAtD,EAA2DgC,MAA3D,CAAkE,YAAY;AACxF,eAAO,OAAOjL,6CAAC,CAAC,IAAD,CAAD,CAAQW,IAAR,CAAa,UAAb,CAAP,KAAoC,WAA3C;AACD,OAFW,CAAZ,CALgC,CAShC;;AACA2C,MAAAA,KAAK,CAACpC,IAAN,CAAW,YAAW;AACpB,YAAIG,GAAG,GAAGrB,6CAAC,CAAC,IAAD,CAAX;AAAA,YACIkL,IAAI,GAAG;AAAEJ,UAAAA,MAAM,EAAE;AAAV,SADX;;AAGA,YAAGzJ,GAAG,CAACK,IAAJ,CAAS,cAAT,CAAH,EAA4B;AAC1BL,UAAAA,GAAG,CAACK,IAAJ,CAAS,cAAT,EAAyByJ,KAAzB,CAA+B,GAA/B,EAAoCZ,OAApC,CAA4C,UAASa,MAAT,EAAiBC,MAAjB,EAAwB;AAClE,gBAAIC,GAAG,GAAGF,MAAM,CAACD,KAAP,CAAa,GAAb,EAAkBI,GAAlB,CAAsB,UAASnK,EAAT,EAAY;AAAE,qBAAOA,EAAE,CAACoK,IAAH,EAAP;AAAmB,aAAvD,CAAV;AACA,gBAAGF,GAAG,CAAC,CAAD,CAAN,EAAWJ,IAAI,CAACI,GAAG,CAAC,CAAD,CAAJ,CAAJ,GAAeG,UAAU,CAACH,GAAG,CAAC,CAAD,CAAJ,CAAzB;AACZ,WAHD;AAID;;AACD,YAAG;AACDjK,UAAAA,GAAG,CAACV,IAAJ,CAAS,UAAT,EAAqB,IAAIqI,MAAJ,CAAWhJ,6CAAC,CAAC,IAAD,CAAZ,EAAoBkL,IAApB,CAArB;AACD,SAFD,CAEC,OAAMQ,EAAN,EAAS;AACRjH,UAAAA,OAAO,CAACoG,KAAR,CAAca,EAAd;AACD,SAJD,SAIQ;AACN;AACD;AACF,OAjBD;AAkBD,KA5BD;AA6BD,GArKc;AAsKfC,EAAAA,SAAS,EAAEzC,YAtKI;AAwKf0C,EAAAA,WAAW,EAAE,qBAAS5L,CAAT,EAAY;AACvB;AACA;;AACA;AACJ;AACA;AACA;AACI,QAAIyK,UAAU,GAAG,SAAbA,UAAa,CAASoB,MAAT,EAAiB;AAChC,UAAIzB,IAAI,WAAUyB,MAAV,CAAR;AAAA,UACIC,KAAK,GAAG9L,CAAC,CAAC,QAAD,CADb;;AAGA,UAAG8L,KAAK,CAAClK,MAAT,EAAgB;AACdkK,QAAAA,KAAK,CAAChG,WAAN,CAAkB,OAAlB;AACD;;AAED,UAAGsE,IAAI,KAAK,WAAZ,EAAwB;AAAC;AACvB1B,QAAAA,yEAAA;;AACAE,QAAAA,UAAU,CAACkC,MAAX,CAAkB,IAAlB;AACD,OAHD,MAGM,IAAGV,IAAI,KAAK,QAAZ,EAAqB;AAAC;AAC1B,YAAI2B,IAAI,GAAGC,KAAK,CAACC,SAAN,CAAgBC,KAAhB,CAAsBC,IAAtB,CAA2BC,SAA3B,EAAsC,CAAtC,CAAX,CADyB,CAC2B;;AACpD,YAAIC,SAAS,GAAG,KAAK1L,IAAL,CAAU,UAAV,CAAhB,CAFyB,CAEa;;AAEtC,YAAG,OAAO0L,SAAP,KAAqB,WAArB,IAAoC,OAAOA,SAAS,CAACR,MAAD,CAAhB,KAA6B,WAApE,EAAgF;AAAC;AAC/E,cAAG,KAAKjK,MAAL,KAAgB,CAAnB,EAAqB;AAAC;AAClByK,YAAAA,SAAS,CAACR,MAAD,CAAT,CAAkBS,KAAlB,CAAwBD,SAAxB,EAAmCN,IAAnC;AACH,WAFD,MAEK;AACH,iBAAK7K,IAAL,CAAU,UAASqG,CAAT,EAAYnG,EAAZ,EAAe;AAAC;AACxBiL,cAAAA,SAAS,CAACR,MAAD,CAAT,CAAkBS,KAAlB,CAAwBtM,CAAC,CAACoB,EAAD,CAAD,CAAMT,IAAN,CAAW,UAAX,CAAxB,EAAgDoL,IAAhD;AACD,aAFD;AAGD;AACF,SARD,MAQK;AAAC;AACJ,gBAAM,IAAIQ,cAAJ,CAAmB,mBAAmBV,MAAnB,GAA4B,mCAA5B,IAAmEQ,SAAS,GAAGnD,YAAY,CAACmD,SAAD,CAAf,GAA6B,cAAzG,IAA2H,GAA9I,CAAN;AACD;AACF,OAfK,MAeD;AAAC;AACJ,cAAM,IAAIG,SAAJ,wBAA8BpC,IAA9B,kGAAN;AACD;;AACD,aAAO,IAAP;AACD,KA9BD;;AA+BApK,IAAAA,CAAC,CAACyM,EAAF,CAAKhC,UAAL,GAAkBA,UAAlB;AACA,WAAOzK,CAAP;AACD;AAhNc,CAAjB;AAmNA4I,UAAU,CAAC8D,IAAX,GAAkB;AAChB;AACF;AACA;AACA;AACA;AACA;AACA;AACEC,EAAAA,QAAQ,EAAE,kBAAUC,IAAV,EAAgBC,KAAhB,EAAuB;AAC/B,QAAIC,KAAK,GAAG,IAAZ;AAEA,WAAO,YAAY;AACjB,UAAIC,OAAO,GAAG,IAAd;AAAA,UAAoBhB,IAAI,GAAGK,SAA3B;;AAEA,UAAIU,KAAK,KAAK,IAAd,EAAoB;AAClBA,QAAAA,KAAK,GAAGE,UAAU,CAAC,YAAY;AAC7BJ,UAAAA,IAAI,CAACN,KAAL,CAAWS,OAAX,EAAoBhB,IAApB;AACAe,UAAAA,KAAK,GAAG,IAAR;AACD,SAHiB,EAGfD,KAHe,CAAlB;AAID;AACF,KATD;AAUD;AArBe,CAAlB;AAwBA3K,MAAM,CAAC0G,UAAP,GAAoBA,UAApB,EAEA;;AACA,CAAC,YAAW;AACV,MAAI,CAACqE,IAAI,CAACC,GAAN,IAAa,CAAChL,MAAM,CAAC+K,IAAP,CAAYC,GAA9B,EACEhL,MAAM,CAAC+K,IAAP,CAAYC,GAAZ,GAAkBD,IAAI,CAACC,GAAL,GAAW,YAAW;AAAE,WAAO,IAAID,IAAJ,GAAWE,OAAX,EAAP;AAA8B,GAAxE;AAEF,MAAIC,OAAO,GAAG,CAAC,QAAD,EAAW,KAAX,CAAd;;AACA,OAAK,IAAI7F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG6F,OAAO,CAACxL,MAAZ,IAAsB,CAACM,MAAM,CAACmL,qBAA9C,EAAqE,EAAE9F,CAAvE,EAA0E;AACtE,QAAI+F,EAAE,GAAGF,OAAO,CAAC7F,CAAD,CAAhB;AACArF,IAAAA,MAAM,CAACmL,qBAAP,GAA+BnL,MAAM,CAACoL,EAAE,GAAC,uBAAJ,CAArC;AACApL,IAAAA,MAAM,CAACqL,oBAAP,GAA+BrL,MAAM,CAACoL,EAAE,GAAC,sBAAJ,CAAN,IACDpL,MAAM,CAACoL,EAAE,GAAC,6BAAJ,CADpC;AAEH;;AACD,MAAI,uBAAuBE,IAAvB,CAA4BtL,MAAM,CAACuL,SAAP,CAAiBC,SAA7C,KACC,CAACxL,MAAM,CAACmL,qBADT,IACkC,CAACnL,MAAM,CAACqL,oBAD9C,EACoE;AAClE,QAAII,QAAQ,GAAG,CAAf;;AACAzL,IAAAA,MAAM,CAACmL,qBAAP,GAA+B,UAASO,QAAT,EAAmB;AAC9C,UAAIV,GAAG,GAAGD,IAAI,CAACC,GAAL,EAAV;AACA,UAAIW,QAAQ,GAAGpG,IAAI,CAACC,GAAL,CAASiG,QAAQ,GAAG,EAApB,EAAwBT,GAAxB,CAAf;AACA,aAAOF,UAAU,CAAC,YAAW;AAAEY,QAAAA,QAAQ,CAACD,QAAQ,GAAGE,QAAZ,CAAR;AAAgC,OAA9C,EACCA,QAAQ,GAAGX,GADZ,CAAjB;AAEH,KALD;;AAMAhL,IAAAA,MAAM,CAACqL,oBAAP,GAA8BO,YAA9B;AACD;AACD;AACF;AACA;;;AACE,MAAG,CAAC5L,MAAM,CAAC6L,WAAR,IAAuB,CAAC7L,MAAM,CAAC6L,WAAP,CAAmBb,GAA9C,EAAkD;AAChDhL,IAAAA,MAAM,CAAC6L,WAAP,GAAqB;AACnBC,MAAAA,KAAK,EAAEf,IAAI,CAACC,GAAL,EADY;AAEnBA,MAAAA,GAAG,EAAE,eAAU;AAAE,eAAOD,IAAI,CAACC,GAAL,KAAa,KAAKc,KAAzB;AAAiC;AAF/B,KAArB;AAID;AACF,CA/BD;;AAgCA,IAAI,CAACC,QAAQ,CAAChC,SAAT,CAAmBiC,IAAxB,EAA8B;AAC5BD,EAAAA,QAAQ,CAAChC,SAAT,CAAmBiC,IAAnB,GAA0B,UAASC,KAAT,EAAgB;AACxC,QAAI,OAAO,IAAP,KAAgB,UAApB,EAAgC;AAC9B;AACA;AACA,YAAM,IAAI3B,SAAJ,CAAc,sEAAd,CAAN;AACD;;AAED,QAAI4B,KAAK,GAAKpC,KAAK,CAACC,SAAN,CAAgBC,KAAhB,CAAsBC,IAAtB,CAA2BC,SAA3B,EAAsC,CAAtC,CAAd;AAAA,QACIiC,OAAO,GAAG,IADd;AAAA,QAEIC,IAAI,GAAM,SAAVA,IAAU,GAAW,CAAE,CAF3B;AAAA,QAGIC,MAAM,GAAI,SAAVA,MAAU,GAAW;AACnB,aAAOF,OAAO,CAAC/B,KAAR,CAAc,gBAAgBgC,IAAhB,GACZ,IADY,GAEZH,KAFF,EAGAC,KAAK,CAACI,MAAN,CAAaxC,KAAK,CAACC,SAAN,CAAgBC,KAAhB,CAAsBC,IAAtB,CAA2BC,SAA3B,CAAb,CAHA,CAAP;AAID,KARL;;AAUA,QAAI,KAAKH,SAAT,EAAoB;AAClB;AACAqC,MAAAA,IAAI,CAACrC,SAAL,GAAiB,KAAKA,SAAtB;AACD;;AACDsC,IAAAA,MAAM,CAACtC,SAAP,GAAmB,IAAIqC,IAAJ,EAAnB;AAEA,WAAOC,MAAP;AACD,GAxBD;AAyBD,EACD;;;AACA,SAASrF,YAAT,CAAsBuD,EAAtB,EAA0B;AACxB,MAAI,OAAOwB,QAAQ,CAAChC,SAAT,CAAmBhD,IAA1B,KAAmC,WAAvC,EAAoD;AAClD,QAAIwF,aAAa,GAAG,wBAApB;AACA,QAAIC,OAAO,GAAID,aAAD,CAAgBE,IAAhB,CAAsBlC,EAAD,CAAKmC,QAAL,EAArB,CAAd;AACA,WAAQF,OAAO,IAAIA,OAAO,CAAC9M,MAAR,GAAiB,CAA7B,GAAkC8M,OAAO,CAAC,CAAD,CAAP,CAAWlD,IAAX,EAAlC,GAAsD,EAA7D;AACD,GAJD,MAKK,IAAI,OAAOiB,EAAE,CAACR,SAAV,KAAwB,WAA5B,EAAyC;AAC5C,WAAOQ,EAAE,CAAClD,WAAH,CAAeN,IAAtB;AACD,GAFI,MAGA;AACH,WAAOwD,EAAE,CAACR,SAAH,CAAa1C,WAAb,CAAyBN,IAAhC;AACD;AACF;;AACD,SAASwC,UAAT,CAAoBoD,GAApB,EAAwB;AACtB,MAAI,WAAWA,GAAf,EAAoB,OAAO,IAAP,CAApB,KACK,IAAI,YAAYA,GAAhB,EAAqB,OAAO,KAAP,CAArB,KACA,IAAI,CAACC,KAAK,CAACD,GAAG,GAAG,CAAP,CAAV,EAAqB,OAAOE,UAAU,CAACF,GAAD,CAAjB;AAC1B,SAAOA,GAAP;AACD,EACD;AACA;;;AACA,SAASzF,SAAT,CAAmByF,GAAnB,EAAwB;AACtB,SAAOA,GAAG,CAACG,OAAJ,CAAY,iBAAZ,EAA+B,OAA/B,EAAwCxF,WAAxC,EAAP;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;ACzUD;CAGA;AACA;AACA;;IACMvJ;AAEJ,kBAAYK,OAAZ,EAAqBC,OAArB,EAA8B;AAAA;;AAC5B,SAAK0O,MAAL,CAAY3O,OAAZ,EAAqBC,OAArB;;AACA,QAAI+I,UAAU,GAAG4F,aAAa,CAAC,IAAD,CAA9B;AACA,SAAKzF,IAAL,GAAYtJ,mEAAW,CAAC,CAAD,EAAImJ,UAAJ,CAAvB;;AAEA,QAAG,CAAC,KAAK9I,QAAL,CAAckB,IAAd,gBAA2B4H,UAA3B,EAAJ,EAA6C;AAAE,WAAK9I,QAAL,CAAckB,IAAd,gBAA2B4H,UAA3B,GAAyC,KAAKG,IAA9C;AAAsD;;AACrG,QAAG,CAAC,KAAKjJ,QAAL,CAAcG,IAAd,CAAmB,UAAnB,CAAJ,EAAmC;AAAE,WAAKH,QAAL,CAAcG,IAAd,CAAmB,UAAnB,EAA+B,IAA/B;AAAuC;AAC5E;AACJ;AACA;AACA;;;AACI,SAAKH,QAAL,CAAc0C,OAAd,mBAAiCoG,UAAjC;AACD;;;;WAED,mBAAU;AACR,WAAK6F,QAAL;;AACA,UAAI7F,UAAU,GAAG4F,aAAa,CAAC,IAAD,CAA9B;AACA,WAAK1O,QAAL,CAAcsJ,UAAd,gBAAiCR,UAAjC,GAA+CS,UAA/C,CAA0D,UAA1D;AACI;AACR;AACA;AACA;AAJI,OAKK7G,OALL,wBAK6BoG,UAL7B;;AAMA,WAAI,IAAIU,IAAR,IAAgB,IAAhB,EAAqB;AACnB,aAAKA,IAAL,IAAa,IAAb,CADmB,CACD;AACnB;AACF;;;;KAGH;AACA;;;AACA,SAASZ,SAAT,CAAmByF,GAAnB,EAAwB;AACtB,SAAOA,GAAG,CAACG,OAAJ,CAAY,iBAAZ,EAA+B,OAA/B,EAAwCxF,WAAxC,EAAP;AACD;;AAED,SAAS0F,aAAT,CAAuBE,GAAvB,EAA4B;AAC1B,SAAOhG,SAAS,CAACgG,GAAG,CAACxO,SAAL,CAAhB;AACD;;;;;;;;;;;;;;;;;;;;;;;;CC3CD;;AAEE;AACF;AACA;;AACA,SAASyO,GAAT,GAAe;AACb,SAAOrP,6CAAC,CAAC,MAAD,CAAD,CAAU0B,IAAV,CAAe,KAAf,MAA0B,KAAjC;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASvB,WAAT,GAA2C;AAAA,MAAtByB,MAAsB,uEAAb,CAAa;AAAA,MAAV0N,SAAU;AACzC,MAAIT,GAAG,GAAG,EAAV;AACA,MAAMU,KAAK,GAAG,sCAAd;AACA,MAAMC,WAAW,GAAGD,KAAK,CAAC3N,MAA1B;;AACA,OAAK,IAAI2F,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG3F,MAApB,EAA4B2F,CAAC,EAA7B,EAAiC;AAC/BsH,IAAAA,GAAG,IAAIU,KAAK,CAAC9H,IAAI,CAACgI,KAAL,CAAWhI,IAAI,CAACiI,MAAL,KAAgBF,WAA3B,CAAD,CAAZ;AACD;;AACD,SAAOF,SAAS,aAAMT,GAAN,cAAaS,SAAb,IAA2BT,GAA3C;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASc,YAAT,CAAsBd,GAAtB,EAA0B;AACxB,SAAOA,GAAG,CAACG,OAAJ,CAAY,0BAAZ,EAAwC,MAAxC,CAAP;AACD;;AAED,SAASY,aAAT,CAAuBtM,KAAvB,EAA6B;AAC3B,MAAIuM,WAAW,GAAG;AAChB,kBAAc,eADE;AAEhB,wBAAoB,qBAFJ;AAGhB,qBAAiB,eAHD;AAIhB,mBAAe;AAJC,GAAlB;AAMA,MAAI9E,IAAI,GAAG+E,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAX;AAAA,MACIC,GADJ;;AAGA,OAAK,IAAIC,UAAT,IAAuBJ,WAAvB,EAAmC;AACjC,QAAI,OAAO9E,IAAI,CAACmF,KAAL,CAAWD,UAAX,CAAP,KAAkC,WAAtC,EAAkD;AAChDD,MAAAA,GAAG,GAAGH,WAAW,CAACI,UAAD,CAAjB;AACD;AACF;;AACD,MAAID,GAAJ,EAAS;AACP,WAAOA,GAAP;AACD,GAFD,MAEO;AACLhD,IAAAA,UAAU,CAAC,YAAU;AACnB1J,MAAAA,KAAK,CAAC6M,cAAN,CAAqB,eAArB,EAAsC,CAAC7M,KAAD,CAAtC;AACD,KAFS,EAEP,CAFO,CAAV;AAGA,WAAO,eAAP;AACD;AACF;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASpD,MAAT,CAAgBoD,KAAhB,EAAuB8M,OAAvB,EAAgC;AAC9B,MAAMC,OAAO,GAAGP,QAAQ,CAACQ,UAAT,KAAwB,UAAxC;AACA,MAAMC,SAAS,GAAG,CAACF,OAAO,GAAG,UAAH,GAAgB,MAAxB,IAAkC,iBAApD;;AACA,MAAMG,EAAE,GAAG,SAALA,EAAK;AAAA,WAAMlN,KAAK,CAAC6M,cAAN,CAAqBI,SAArB,CAAN;AAAA,GAAX;;AAEA,MAAIjN,KAAJ,EAAW;AACT,QAAI8M,OAAJ,EAAa9M,KAAK,CAACmN,GAAN,CAAUF,SAAV,EAAqBH,OAArB;AAEb,QAAIC,OAAJ,EACErD,UAAU,CAACwD,EAAD,CAAV,CADF,KAGExQ,6CAAC,CAACkC,MAAD,CAAD,CAAUuO,GAAV,CAAc,MAAd,EAAsBD,EAAtB;AACH;;AAED,SAAOD,SAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAASG,oBAAT,CAA8BN,OAA9B,EAAmG;AAAA,iFAAJ,EAAI;AAAA,mCAA1DO,iBAA0D;AAAA,MAA1DA,iBAA0D,sCAAtC,KAAsC;AAAA,iCAA/BC,cAA+B;AAAA,MAA/BA,cAA+B,oCAAd,KAAc;;AACjG,SAAO,SAASC,iBAAT,CAA2BC,MAA3B,EAA4C;AAAA,sCAANC,IAAM;AAANA,MAAAA,IAAM;AAAA;;AACjD,QAAMnD,QAAQ,GAAGwC,OAAO,CAAClC,IAAR,OAAAkC,OAAO,GAAM,IAAN,EAAYU,MAAZ,SAAuBC,IAAvB,EAAxB,CADiD,CAGjD;;AACA,QAAID,MAAM,CAACE,aAAP,KAAyB,IAA7B,EAAmC;AACjC,aAAOpD,QAAQ,EAAf;AACD,KANgD,CAQjD;AACA;AACA;;;AACAZ,IAAAA,UAAU,CAAC,SAASiE,mBAAT,GAA+B;AACxC,UAAI,CAACN,iBAAD,IAAsBb,QAAQ,CAACoB,QAA/B,IAA2C,CAACpB,QAAQ,CAACoB,QAAT,EAAhD,EAAqE;AACnE,eAAOtD,QAAQ,EAAf;AACD,OAHuC,CAKxC;;;AACA,UAAI,CAACgD,cAAL,EAAqB;AACnB5Q,QAAAA,6CAAC,CAAC8P,QAAD,CAAD,CAAYW,GAAZ,CAAgB,YAAhB,EAA8B,SAASU,mBAAT,CAA6BC,QAA7B,EAAuC;AACnE,cAAI,CAACpR,6CAAC,CAAC8Q,MAAM,CAACO,aAAR,CAAD,CAAwBC,GAAxB,CAA4BF,QAAQ,CAACG,MAArC,EAA6C3P,MAAlD,EAA0D;AACxD;AACAkP,YAAAA,MAAM,CAACE,aAAP,GAAuBI,QAAQ,CAACG,MAAhC;AACA3D,YAAAA,QAAQ;AACT;AACF,SAND;AAOD;AAEF,KAhBS,EAgBP,CAhBO,CAAV;AAiBD,GA5BD;AA6BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/ID;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;IAEM6D;;;;;;;;;;;;;;AACJ;AACF;AACA;AACA;AACA;AACA;AACA;AACE,oBAAOnR,OAAP,EAAgBC,OAAhB,EAAyB;AACvB,WAAKC,QAAL,GAAgBF,OAAhB;AACA,WAAKC,OAAL,GAAeP,oDAAA,CAAS,EAAT,EAAayR,SAAS,CAAC/Q,QAAvB,EAAiC,KAAKF,QAAL,CAAcG,IAAd,EAAjC,EAAuDJ,OAAvD,CAAf;AACA,WAAKK,SAAL,GAAiB,WAAjB,CAHuB,CAGO;;AAE9B,WAAKC,KAAL;;AAEAT,MAAAA,wEAAA,CAAkB,WAAlB,EAA+B;AAC7B,iBAAS,MADoB;AAE7B,iBAAS,MAFoB;AAG7B,uBAAe,MAHc;AAI7B,oBAAY,IAJiB;AAK7B,sBAAc,MALe;AAM7B,sBAAc,UANe;AAO7B,kBAAU;AAPmB,OAA/B;AASD;AAED;AACF;AACA;AACA;;;;WACE,iBAAQ;AACN+F,MAAAA,+DAAA,CAAa,KAAK3F,QAAlB,EAA4B,WAA5B;;AAEA,UAAG,KAAKD,OAAL,CAAamR,cAAhB,EAAgC;AAC9B,aAAKlR,QAAL,CAAckF,QAAd,CAAuB,WAAvB;AACD;;AAED,WAAKlF,QAAL,CAAckB,IAAd,CAAmB;AACjB,gCAAwB;AADP,OAAnB;AAGA,WAAKiQ,eAAL,GAAuB,KAAKnR,QAAL,CAAciB,IAAd,CAAmB,gCAAnB,EAAqDR,QAArD,CAA8D,GAA9D,CAAvB;AACA,WAAKoH,SAAL,GAAiB,KAAKsJ,eAAL,CAAqBnP,MAArB,CAA4B,IAA5B,EAAkCvB,QAAlC,CAA2C,gBAA3C,EAA6DS,IAA7D,CAAkE,MAAlE,EAA0E,OAA1E,CAAjB;AACA,WAAKkQ,UAAL,GAAkB,KAAKpR,QAAL,CAAciB,IAAd,CAAmB,IAAnB,EAAyB+D,GAAzB,CAA6B,oBAA7B,EAAmD/D,IAAnD,CAAwD,GAAxD,CAAlB,CAZM,CAcN;AACA;;AACA,WAAKoQ,YAAL,GAAoB,KAAKrR,QAAzB;AAEA,WAAKA,QAAL,CAAckB,IAAd,CAAmB,aAAnB,EAAmC,KAAKlB,QAAL,CAAckB,IAAd,CAAmB,gBAAnB,KAAwCvB,mEAAW,CAAC,CAAD,EAAI,WAAJ,CAAtF;;AAEA,WAAK2R,YAAL;;AACA,WAAKC,eAAL;;AAEA,WAAKC,eAAL;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;WACE,wBAAe;AACb,UAAI3O,KAAK,GAAG,IAAZ,CADa,CAEb;AACA;AACA;;;AACA,WAAKsO,eAAL,CAAqBzQ,IAArB,CAA0B,YAAU;AAClC,YAAIoB,KAAK,GAAGtC,6CAAC,CAAC,IAAD,CAAb;AACA,YAAIwG,IAAI,GAAGlE,KAAK,CAACE,MAAN,EAAX;;AACA,YAAGa,KAAK,CAAC9C,OAAN,CAAcoG,UAAjB,EAA4B;AAC1BrE,UAAAA,KAAK,CAACsE,KAAN,GAAcC,SAAd,CAAwBL,IAAI,CAACvF,QAAL,CAAc,gBAAd,CAAxB,EAAyD6F,IAAzD,CAA8D,oHAA9D;AACD;;AACDxE,QAAAA,KAAK,CAAC3B,IAAN,CAAW,WAAX,EAAwB2B,KAAK,CAACZ,IAAN,CAAW,MAAX,CAAxB,EAA4CoI,UAA5C,CAAuD,MAAvD,EAA+DpI,IAA/D,CAAoE,UAApE,EAAgF,CAAhF;AACAY,QAAAA,KAAK,CAACrB,QAAN,CAAe,gBAAf,EACKS,IADL,CACU;AACJ,yBAAe,IADX;AAEJ,sBAAY,CAFR;AAGJ,kBAAQ;AAHJ,SADV;;AAMA2B,QAAAA,KAAK,CAACD,OAAN,CAAcd,KAAd;AACD,OAdD;AAeA,WAAK+F,SAAL,CAAenH,IAAf,CAAoB,YAAU;AAC5B,YAAI+Q,KAAK,GAAGjS,6CAAC,CAAC,IAAD,CAAb;AAAA,YACIkS,KAAK,GAAGD,KAAK,CAACxQ,IAAN,CAAW,oBAAX,CADZ;;AAEA,YAAG,CAACyQ,KAAK,CAACtQ,MAAV,EAAiB;AACf,kBAAQyB,KAAK,CAAC9C,OAAN,CAAc4R,kBAAtB;AACE,iBAAK,QAAL;AACEF,cAAAA,KAAK,CAACG,MAAN,CAAa/O,KAAK,CAAC9C,OAAN,CAAc8R,UAA3B;AACA;;AACF,iBAAK,KAAL;AACEJ,cAAAA,KAAK,CAACK,OAAN,CAAcjP,KAAK,CAAC9C,OAAN,CAAc8R,UAA5B;AACA;;AACF;AACE5N,cAAAA,OAAO,CAACoG,KAAR,CAAc,2CAA2CxH,KAAK,CAAC9C,OAAN,CAAc4R,kBAAzD,GAA8E,GAA5F;AARJ;AAUD;;AACD9O,QAAAA,KAAK,CAACkP,KAAN,CAAYN,KAAZ;AACD,OAhBD;AAkBA,WAAK5J,SAAL,CAAe3C,QAAf,CAAwB,WAAxB;;AACA,UAAG,CAAC,KAAKnF,OAAL,CAAaiS,UAAjB,EAA6B;AAC3B,aAAKnK,SAAL,CAAe3C,QAAf,CAAwB,kCAAxB;AACD,OAzCY,CA2Cb;;;AACA,UAAG,CAAC,KAAKlF,QAAL,CAAcgC,MAAd,GAAuBC,QAAvB,CAAgC,cAAhC,CAAJ,EAAoD;AAClD,aAAKgQ,QAAL,GAAgBzS,6CAAC,CAAC,KAAKO,OAAL,CAAamS,OAAd,CAAD,CAAwBhN,QAAxB,CAAiC,cAAjC,CAAhB;AACA,YAAG,KAAKnF,OAAL,CAAaoS,aAAhB,EAA+B,KAAKF,QAAL,CAAc/M,QAAd,CAAuB,gBAAvB;AAC/B,aAAKlF,QAAL,CAAcsG,IAAd,CAAmB,KAAK2L,QAAxB;AACD,OAhDY,CAiDb;;;AACA,WAAKA,QAAL,GAAgB,KAAKjS,QAAL,CAAcgC,MAAd,EAAhB;AACA,WAAKiQ,QAAL,CAAcvM,GAAd,CAAkB,KAAK0M,WAAL,EAAlB;AACD;;;WAED,mBAAU;AACR,WAAKH,QAAL,CAAcvM,GAAd,CAAkB;AAAC,qBAAa,MAAd;AAAsB,sBAAc;AAApC,OAAlB,EADQ,CAER;;AACA,WAAKuM,QAAL,CAAcvM,GAAd,CAAkB,KAAK0M,WAAL,EAAlB;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,iBAAQtP,KAAR,EAAe;AACb,UAAID,KAAK,GAAG,IAAZ;;AAEAC,MAAAA,KAAK,CAACE,GAAN,CAAU,oBAAV,EACCC,EADD,CACI,oBADJ,EAC0B,UAASC,CAAT,EAAW;AACnC,YAAG1D,6CAAC,CAAC0D,CAAC,CAAC6N,MAAH,CAAD,CAAYrJ,YAAZ,CAAyB,IAAzB,EAA+B,IAA/B,EAAqCzF,QAArC,CAA8C,6BAA9C,CAAH,EAAgF;AAC9EiB,UAAAA,CAAC,CAACC,cAAF;AACD,SAHkC,CAKnC;AACA;AACA;;;AACAN,QAAAA,KAAK,CAACwP,KAAN,CAAYvP,KAAK,CAACd,MAAN,CAAa,IAAb,CAAZ;;AAEA,YAAGa,KAAK,CAAC9C,OAAN,CAAcuS,YAAjB,EAA8B;AAC5B,cAAIC,KAAK,GAAG/S,6CAAC,CAAC,MAAD,CAAb;AACA+S,UAAAA,KAAK,CAACvP,GAAN,CAAU,eAAV,EAA2BC,EAA3B,CAA8B,oBAA9B,EAAoD,UAASC,CAAT,EAAW;AAC7D,gBAAIA,CAAC,CAAC6N,MAAF,KAAalO,KAAK,CAAC7C,QAAN,CAAe,CAAf,CAAb,IAAkCR,sDAAA,CAAWqD,KAAK,CAAC7C,QAAN,CAAe,CAAf,CAAX,EAA8BkD,CAAC,CAAC6N,MAAhC,CAAtC,EAA+E;AAAE;AAAS;;AAC1F7N,YAAAA,CAAC,CAACC,cAAF;;AACAN,YAAAA,KAAK,CAAC4P,QAAN;;AACAF,YAAAA,KAAK,CAACvP,GAAN,CAAU,eAAV;AACD,WALD;AAMD;AACF,OApBD;AAqBD;AAED;AACF;AACA;AACA;AACA;;;;WACE,2BAAkB;AAChB,UAAG,KAAKjD,OAAL,CAAauC,SAAhB,EAA0B;AACxB,aAAKoQ,YAAL,GAAoB,KAAKC,UAAL,CAAgBjF,IAAhB,CAAqB,IAArB,CAApB;AACA,aAAK1N,QAAL,CAAciD,EAAd,CAAiB,4EAAjB,EAA8F,KAAKyP,YAAnG;AACD;;AACD,WAAK1S,QAAL,CAAciD,EAAd,CAAiB,qBAAjB,EAAwC,KAAK2P,OAAL,CAAalF,IAAb,CAAkB,IAAlB,CAAxC;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,sBAAa;AACX,UAAI7K,KAAK,GAAG,IAAZ;;AACA,UAAIgQ,iBAAiB,GAAGhQ,KAAK,CAAC9C,OAAN,CAAc+S,gBAAd,IAAgC,EAAhC,GAAmCtT,6CAAC,CAACqD,KAAK,CAAC9C,OAAN,CAAc+S,gBAAf,CAApC,GAAqEjQ,KAAK,CAAC7C,QAAnG;AAAA,UACI+S,SAAS,GAAGC,QAAQ,CAACH,iBAAiB,CAACzQ,MAAlB,GAA2BG,GAA3B,GAA+BM,KAAK,CAAC9C,OAAN,CAAckT,eAA9C,EAA+D,EAA/D,CADxB;AAEAzT,MAAAA,6CAAC,CAAC,YAAD,CAAD,CAAgBiG,IAAhB,CAAqB,IAArB,EAA2BpD,OAA3B,CAAmC;AAAEC,QAAAA,SAAS,EAAEyQ;AAAb,OAAnC,EAA6DlQ,KAAK,CAAC9C,OAAN,CAAcmT,iBAA3E,EAA8FrQ,KAAK,CAAC9C,OAAN,CAAcoT,eAA5G,EAA4H,YAAU;AACpI;AACN;AACA;AACA;AACM,YAAG,SAAO3T,6CAAC,CAAC,MAAD,CAAD,CAAU,CAAV,CAAV,EAAuBqD,KAAK,CAAC7C,QAAN,CAAe0C,OAAf,CAAuB,uBAAvB;AACxB,OAND;AAOD;AAED;AACF;AACA;AACA;;;;WACE,2BAAkB;AAChB,UAAIG,KAAK,GAAG,IAAZ;;AAEA,WAAKuO,UAAL,CAAgBzJ,GAAhB,CAAoB,KAAK3H,QAAL,CAAciB,IAAd,CAAmB,qDAAnB,CAApB,EAA+FgC,EAA/F,CAAkG,sBAAlG,EAA0H,UAASC,CAAT,EAAW;AACnI,YAAIlD,QAAQ,GAAGR,6CAAC,CAAC,IAAD,CAAhB;AAAA,YACIoH,SAAS,GAAG5G,QAAQ,CAACgC,MAAT,CAAgB,IAAhB,EAAsBA,MAAtB,CAA6B,IAA7B,EAAmCvB,QAAnC,CAA4C,IAA5C,EAAkDA,QAAlD,CAA2D,GAA3D,CADhB;AAAA,YAEIoG,YAFJ;AAAA,YAGIC,YAHJ;AAKAF,QAAAA,SAAS,CAAClG,IAAV,CAAe,UAASqG,CAAT,EAAY;AACzB,cAAIvH,6CAAC,CAAC,IAAD,CAAD,CAAQwE,EAAR,CAAWhE,QAAX,CAAJ,EAA0B;AACxB6G,YAAAA,YAAY,GAAGD,SAAS,CAACI,EAAV,CAAaC,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYH,CAAC,GAAC,CAAd,CAAb,CAAf;AACAD,YAAAA,YAAY,GAAGF,SAAS,CAACI,EAAV,CAAaC,IAAI,CAACE,GAAL,CAASJ,CAAC,GAAC,CAAX,EAAcH,SAAS,CAACxF,MAAV,GAAiB,CAA/B,CAAb,CAAf;AACA;AACD;AACF,SAND;AAQAxB,QAAAA,yEAAA,CAAmBsD,CAAnB,EAAsB,WAAtB,EAAmC;AACjCI,UAAAA,IAAI,EAAE,gBAAW;AACf,gBAAItD,QAAQ,CAACgE,EAAT,CAAYnB,KAAK,CAACsO,eAAlB,CAAJ,EAAwC;AACtCtO,cAAAA,KAAK,CAACwP,KAAN,CAAYrS,QAAQ,CAACgC,MAAT,CAAgB,IAAhB,CAAZ;;AACAhC,cAAAA,QAAQ,CAACgC,MAAT,CAAgB,IAAhB,EAAsBiO,GAAtB,CAA0Bb,qEAAa,CAACpP,QAAD,CAAvC,EAAmD,YAAU;AAC3DA,gBAAAA,QAAQ,CAACgC,MAAT,CAAgB,IAAhB,EAAsBf,IAAtB,CAA2B,SAA3B,EAAsC+D,GAAtC,CAA0C,sBAA1C,EAAkErB,KAAlE,GAA0EH,KAA1E;AACD,eAFD;AAGA,qBAAO,IAAP;AACD;AACF,WATgC;AAUjCE,UAAAA,QAAQ,EAAE,oBAAW;AACnBb,YAAAA,KAAK,CAACuQ,KAAN,CAAYpT,QAAQ,CAACgC,MAAT,CAAgB,IAAhB,EAAsBA,MAAtB,CAA6B,IAA7B,CAAZ;;AACAhC,YAAAA,QAAQ,CAACgC,MAAT,CAAgB,IAAhB,EAAsBA,MAAtB,CAA6B,IAA7B,EAAmCiO,GAAnC,CAAuCb,qEAAa,CAACpP,QAAD,CAApD,EAAgE,YAAU;AACxEwM,cAAAA,UAAU,CAAC,YAAW;AACpBxM,gBAAAA,QAAQ,CAACgC,MAAT,CAAgB,IAAhB,EAAsBA,MAAtB,CAA6B,IAA7B,EAAmCA,MAAnC,CAA0C,IAA1C,EAAgDvB,QAAhD,CAAyD,GAAzD,EAA8DkD,KAA9D,GAAsEH,KAAtE;AACD,eAFS,EAEP,CAFO,CAAV;AAGD,aAJD;AAKA,mBAAO,IAAP;AACD,WAlBgC;AAmBjCW,UAAAA,EAAE,EAAE,cAAW;AACb0C,YAAAA,YAAY,CAACrD,KAAb,GADa,CAEb;;AACA,mBAAO,CAACxD,QAAQ,CAACgE,EAAT,CAAYnB,KAAK,CAAC7C,QAAN,CAAeiB,IAAf,CAAoB,sBAApB,CAAZ,CAAR;AACD,WAvBgC;AAwBjCmD,UAAAA,IAAI,EAAE,gBAAW;AACf0C,YAAAA,YAAY,CAACtD,KAAb,GADe,CAEf;;AACA,mBAAO,CAACxD,QAAQ,CAACgE,EAAT,CAAYnB,KAAK,CAAC7C,QAAN,CAAeiB,IAAf,CAAoB,qBAApB,CAAZ,CAAR;AACD,WA5BgC;AA6BjCqG,UAAAA,KAAK,EAAE,iBAAW;AAChB;AACA,gBAAI,CAACtH,QAAQ,CAACgE,EAAT,CAAYnB,KAAK,CAAC7C,QAAN,CAAeiB,IAAf,CAAoB,UAApB,CAAZ,CAAL,EAAmD;AACjD4B,cAAAA,KAAK,CAACuQ,KAAN,CAAYpT,QAAQ,CAACgC,MAAT,GAAkBA,MAAlB,EAAZ;;AACAhC,cAAAA,QAAQ,CAACgC,MAAT,GAAkBA,MAAlB,GAA2B4C,QAA3B,CAAoC,GAApC,EAAyCpB,KAAzC;AACD;AACF,WAnCgC;AAoCjC6D,UAAAA,IAAI,EAAE,gBAAW;AACf,gBAAIxE,KAAK,CAAC9C,OAAN,CAAcoG,UAAd,IAA4BnG,QAAQ,CAACkB,IAAT,CAAc,MAAd,CAAhC,EAAuD;AAAE;AACvD,qBAAO,KAAP;AACD,aAFD,MAEO,IAAI,CAAClB,QAAQ,CAACgE,EAAT,CAAYnB,KAAK,CAACuO,UAAlB,CAAL,EAAoC;AAAE;AAC3CvO,cAAAA,KAAK,CAACuQ,KAAN,CAAYpT,QAAQ,CAACgC,MAAT,CAAgB,IAAhB,EAAsBA,MAAtB,CAA6B,IAA7B,CAAZ;;AACAhC,cAAAA,QAAQ,CAACgC,MAAT,CAAgB,IAAhB,EAAsBA,MAAtB,CAA6B,IAA7B,EAAmCiO,GAAnC,CAAuCb,qEAAa,CAACpP,QAAD,CAApD,EAAgE,YAAU;AACxEwM,gBAAAA,UAAU,CAAC,YAAW;AACpBxM,kBAAAA,QAAQ,CAACgC,MAAT,CAAgB,IAAhB,EAAsBA,MAAtB,CAA6B,IAA7B,EAAmCA,MAAnC,CAA0C,IAA1C,EAAgDvB,QAAhD,CAAyD,GAAzD,EAA8DkD,KAA9D,GAAsEH,KAAtE;AACD,iBAFS,EAEP,CAFO,CAAV;AAGD,eAJD;AAKA,qBAAO,IAAP;AACD,aARM,MAQA,IAAIxD,QAAQ,CAACgE,EAAT,CAAYnB,KAAK,CAACsO,eAAlB,CAAJ,EAAwC;AAAE;AAC/CtO,cAAAA,KAAK,CAACwP,KAAN,CAAYrS,QAAQ,CAACgC,MAAT,CAAgB,IAAhB,CAAZ;;AACAhC,cAAAA,QAAQ,CAACgC,MAAT,CAAgB,IAAhB,EAAsBiO,GAAtB,CAA0Bb,qEAAa,CAACpP,QAAD,CAAvC,EAAmD,YAAU;AAC3DA,gBAAAA,QAAQ,CAACgC,MAAT,CAAgB,IAAhB,EAAsBf,IAAtB,CAA2B,SAA3B,EAAsC+D,GAAtC,CAA0C,sBAA1C,EAAkErB,KAAlE,GAA0EH,KAA1E;AACD,eAFD;AAGA,qBAAO,IAAP;AACD;AACF,WAtDgC;AAuDjCK,UAAAA,OAAO,EAAE,iBAASV,cAAT,EAAyB;AAChC,gBAAIA,cAAJ,EAAoB;AAClBD,cAAAA,CAAC,CAACC,cAAF;AACD;AACF;AA3DgC,SAAnC;AA6DD,OA3ED,EAHgB,CA8EZ;AACL;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,oBAAW;AAAA;;AACT,UAAIL,KAAK,GAAG,KAAK9C,QAAL,CAAciB,IAAd,CAAmB,iCAAnB,CAAZ;AACA6B,MAAAA,KAAK,CAACoC,QAAN,CAAe,YAAf;;AAEA,UAAI,KAAKnF,OAAL,CAAaiS,UAAjB,EAA6B;AAC3B,YAAMqB,UAAU,GAAGvQ,KAAK,CAACd,MAAN,GAAe+B,OAAf,CAAuB,IAAvB,EAA6B5D,IAA7B,CAAkC,YAAlC,CAAnB;AACA,aAAK8R,QAAL,CAAcvM,GAAd,CAAkB;AAAE4N,UAAAA,MAAM,EAAED;AAAV,SAAlB;AACD;AAED;AACJ;AACA;AACA;;;AACI,WAAKrT,QAAL,CAAc0C,OAAd,CAAsB,oBAAtB;AAEAI,MAAAA,KAAK,CAACmN,GAAN,CAAUb,qEAAa,CAACtM,KAAD,CAAvB,EAAgC,YAAM;AACpCA,QAAAA,KAAK,CAACwC,WAAN,CAAkB,sBAAlB;AAEA;AACN;AACA;AACA;;AACM,cAAI,CAACtF,QAAL,CAAc0C,OAAd,CAAsB,qBAAtB;AACD,OARD;AASD;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,eAAMI,KAAN,EAAa;AACX,UAAID,KAAK,GAAG,IAAZ;;AACAC,MAAAA,KAAK,CAACE,GAAN,CAAU,oBAAV;AACAF,MAAAA,KAAK,CAACrC,QAAN,CAAe,oBAAf,EACGwC,EADH,CACM,oBADN,EAC4B,UAASC,CAAT,EAAW;AACnC;AACAL,QAAAA,KAAK,CAACuQ,KAAN,CAAYtQ,KAAZ,EAFmC,CAInC;;;AACA,YAAIyQ,aAAa,GAAGzQ,KAAK,CAACd,MAAN,CAAa,IAAb,EAAmBA,MAAnB,CAA0B,IAA1B,EAAgCA,MAAhC,CAAuC,IAAvC,CAApB;;AACA,YAAIuR,aAAa,CAACnS,MAAlB,EAA0B;AACxByB,UAAAA,KAAK,CAACwP,KAAN,CAAYkB,aAAZ;AACD,SAFD,MAGK;AACH1Q,UAAAA,KAAK,CAACwO,YAAN,GAAqBxO,KAAK,CAAC7C,QAA3B;AACD;AACF,OAbH;AAcD;AAED;AACF;AACA;AACA;AACA;;;;WACE,2BAAkB;AAChB,UAAI6C,KAAK,GAAG,IAAZ;;AACA,WAAKuO,UAAL,CAAgBpM,GAAhB,CAAoB,8BAApB,EACKhC,GADL,CACS,oBADT,EAEKC,EAFL,CAEQ,oBAFR,EAE8B,UAASC,CAAT,EAAW;AACnCsJ,QAAAA,UAAU,CAAC,YAAU;AACnB3J,UAAAA,KAAK,CAAC4P,QAAN;AACD,SAFS,EAEP,CAFO,CAAV;AAGH,OANH;AAOD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;WACE,gCAAuB3P,KAAvB,EAA8BJ,OAA9B,EAAuC;AACrCI,MAAAA,KAAK,CAACoC,QAAN,CAAe,WAAf,EAA4BI,WAA5B,CAAwC,WAAxC,EAAqDpE,IAArD,CAA0D,aAA1D,EAAyE,KAAzE;AACA4B,MAAAA,KAAK,CAACd,MAAN,CAAa,IAAb,EAAmBd,IAAnB,CAAwB,eAAxB,EAAyC,IAAzC;;AACA,UAAIwB,OAAO,KAAK,IAAhB,EAAsB;AACpB,aAAK1C,QAAL,CAAc0C,OAAd,CAAsB,mBAAtB,EAA2C,CAACI,KAAD,CAA3C;AACD;AACF;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;WACE,gCAAuBA,KAAvB,EAA8BJ,OAA9B,EAAuC;AACrCI,MAAAA,KAAK,CAACwC,WAAN,CAAkB,WAAlB,EAA+BJ,QAA/B,CAAwC,WAAxC,EAAqDhE,IAArD,CAA0D,aAA1D,EAAyE,IAAzE;AACA4B,MAAAA,KAAK,CAACd,MAAN,CAAa,IAAb,EAAmBd,IAAnB,CAAwB,eAAxB,EAAyC,KAAzC;;AACA,UAAIwB,OAAO,KAAK,IAAhB,EAAsB;AACpBI,QAAAA,KAAK,CAACJ,OAAN,CAAc,mBAAd,EAAmC,CAACI,KAAD,CAAnC;AACD;AACF;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,mBAAUA,KAAV,EAAiB0Q,SAAjB,EAA4B;AAE1B,UAAI3Q,KAAK,GAAG,IAAZ,CAF0B,CAI1B;;;AACA,UAAI4Q,iBAAiB,GAAG,KAAKzT,QAAL,CAAciB,IAAd,CAAmB,6CAAnB,CAAxB;AACAwS,MAAAA,iBAAiB,CAAC/S,IAAlB,CAAuB,UAASgT,KAAT,EAAgB;AACrC7Q,QAAAA,KAAK,CAAC8Q,sBAAN,CAA6BnU,6CAAC,CAAC,IAAD,CAA9B;AACD,OAFD,EAN0B,CAU1B;;AACA,WAAK6R,YAAL,GAAoBvO,KAApB,CAX0B,CAa1B;;AACA,UAAIA,KAAK,CAACkB,EAAN,CAAS,kBAAT,CAAJ,EAAkC;AAChC,YAAIwP,SAAS,KAAK,IAAlB,EAAwB1Q,KAAK,CAAC7B,IAAN,CAAW,QAAX,EAAqB0C,KAArB,GAA6BH,KAA7B;AACxB,YAAI,KAAKzD,OAAL,CAAaiS,UAAjB,EAA6B,KAAKC,QAAL,CAAcvM,GAAd,CAAkB,QAAlB,EAA4B5C,KAAK,CAAC3C,IAAN,CAAW,YAAX,CAA5B;AAC7B;AACD,OAlByB,CAoB1B;;;AACA,UAAI0H,SAAS,GAAG/E,KAAK,CAACrC,QAAN,GAAiBkD,KAAjB,GAAyB+D,YAAzB,CAAsC,kBAAtC,EAA0D,gBAA1D,CAAhB,CArB0B,CAuB1B;;AACAG,MAAAA,SAAS,CAACnH,IAAV,CAAe,UAASgT,KAAT,EAAgB;AAE7B;AACA,YAAIA,KAAK,KAAK,CAAV,IAAe7Q,KAAK,CAAC9C,OAAN,CAAciS,UAAjC,EAA6C;AAC3CnP,UAAAA,KAAK,CAACoP,QAAN,CAAevM,GAAf,CAAmB,QAAnB,EAA6BlG,6CAAC,CAAC,IAAD,CAAD,CAAQW,IAAR,CAAa,YAAb,CAA7B;AACD;;AAED,YAAIyT,WAAW,GAAGF,KAAK,IAAI7L,SAAS,CAACzG,MAAV,GAAmB,CAA9C,CAP6B,CAS7B;AACA;;AACA,YAAIwS,WAAW,KAAK,IAApB,EAA0B;AACxBpU,UAAAA,6CAAC,CAAC,IAAD,CAAD,CAAQyQ,GAAR,CAAYb,qEAAa,CAAC5P,6CAAC,CAAC,IAAD,CAAF,CAAzB,EAAoC,YAAM;AACxC,gBAAIgU,SAAS,KAAK,IAAlB,EAAwB;AACtB1Q,cAAAA,KAAK,CAAC7B,IAAN,CAAW,QAAX,EAAqB0C,KAArB,GAA6BH,KAA7B;AACD;AACF,WAJD;AAKD;;AAEDX,QAAAA,KAAK,CAACgR,sBAAN,CAA6BrU,6CAAC,CAAC,IAAD,CAA9B,EAAsCoU,WAAtC;AACD,OApBD;AAqBD;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,eAAM9Q,KAAN,EAAa;AACX,UAAM6D,QAAQ,GAAG7D,KAAK,CAACrC,QAAN,CAAe,gBAAf,CAAjB;AAEAqC,MAAAA,KAAK,CAAC5B,IAAN,CAAW,eAAX,EAA4B,IAA5B;AAEA,WAAKmQ,YAAL,GAAoB1K,QAApB,CALW,CAOX;AACA;;AACA7D,MAAAA,KAAK,CAACd,MAAN,GAAe+B,OAAf,CAAuB,IAAvB,EAA6BmB,QAA7B,CAAsC,WAAtC,EATW,CAWX;;AACAyB,MAAAA,QAAQ,CAACzB,QAAT,CAAkB,mBAAlB,EAAuCI,WAAvC,CAAmD,WAAnD,EAAgEpE,IAAhE,CAAqE,aAArE,EAAoF,KAApF;;AAEA,UAAI,KAAKnB,OAAL,CAAaiS,UAAjB,EAA6B;AAC3B,aAAKC,QAAL,CAAcvM,GAAd,CAAkB;AAAE4N,UAAAA,MAAM,EAAE3M,QAAQ,CAACxG,IAAT,CAAc,YAAd;AAAV,SAAlB;AACD;AAED;AACJ;AACA;AACA;;;AACI,WAAKH,QAAL,CAAc0C,OAAd,CAAsB,mBAAtB,EAA2C,CAACI,KAAD,CAA3C;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,eAAMA,KAAN,EAAa;AACX,UAAG,KAAK/C,OAAL,CAAaiS,UAAhB,EAA4B,KAAKC,QAAL,CAAcvM,GAAd,CAAkB;AAAC4N,QAAAA,MAAM,EAACxQ,KAAK,CAACd,MAAN,GAAe+B,OAAf,CAAuB,IAAvB,EAA6B5D,IAA7B,CAAkC,YAAlC;AAAR,OAAlB;;AAC5B,UAAI0C,KAAK,GAAG,IAAZ;;AACAC,MAAAA,KAAK,CAACd,MAAN,GAAe+B,OAAf,CAAuB,IAAvB,EAA6BuB,WAA7B,CAAyC,WAAzC;AACAxC,MAAAA,KAAK,CAACd,MAAN,CAAa,IAAb,EAAmBd,IAAnB,CAAwB,eAAxB,EAAyC,KAAzC;AACA4B,MAAAA,KAAK,CAAC5B,IAAN,CAAW,aAAX,EAA0B,IAA1B;AACA4B,MAAAA,KAAK,CAACoC,QAAN,CAAe,YAAf,EACM+K,GADN,CACUb,qEAAa,CAACtM,KAAD,CADvB,EACgC,YAAU;AACnCA,QAAAA,KAAK,CAACwC,WAAN,CAAkB,8BAAlB;AACAxC,QAAAA,KAAK,CAACgR,IAAN,GAAa5O,QAAb,CAAsB,WAAtB;AACD,OAJN;AAKA;AACJ;AACA;AACA;;AACIpC,MAAAA,KAAK,CAACJ,OAAN,CAAc,mBAAd,EAAmC,CAACI,KAAD,CAAnC;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,uBAAc;AACZ,UAAIiR,SAAS,GAAG,CAAhB;AAAA,UAAmBC,MAAM,GAAG,EAA5B;AAAA,UAAgCnR,KAAK,GAAG,IAAxC,CADY,CAGZ;;;AACA,WAAKgF,SAAL,CAAeF,GAAf,CAAmB,KAAK3H,QAAxB,EAAkCU,IAAlC,CAAuC,YAAU;AAC/C,YAAIuT,UAAU,GAAGzU,6CAAC,CAAC,IAAD,CAAD,CAAQiB,QAAR,CAAiB,IAAjB,EAAuBW,MAAxC;AACA,YAAIkS,MAAM,GAAGtC,mEAAA,CAAkB,IAAlB,EAAwBsC,MAArC;AAEAS,QAAAA,SAAS,GAAGT,MAAM,GAAGS,SAAT,GAAqBT,MAArB,GAA8BS,SAA1C;;AAEA,YAAGlR,KAAK,CAAC9C,OAAN,CAAciS,UAAjB,EAA6B;AAC3BxS,UAAAA,6CAAC,CAAC,IAAD,CAAD,CAAQW,IAAR,CAAa,YAAb,EAA0BmT,MAA1B;AACD;AACF,OATD;AAWA,UAAI,KAAKvT,OAAL,CAAaiS,UAAjB,EACEgC,MAAM,CAAC,QAAD,CAAN,GAAmB,KAAK3C,YAAL,CAAkBlR,IAAlB,CAAuB,YAAvB,CAAnB,CADF,KAGE6T,MAAM,CAAC,YAAD,CAAN,aAA0BD,SAA1B;AAEFC,MAAAA,MAAM,CAAC,WAAD,CAAN,aAAyB,KAAKhU,QAAL,CAAc,CAAd,EAAiBmU,qBAAjB,GAAyCC,KAAlE;AAEA,aAAOJ,MAAP;AACD;AAED;AACF;AACA;AACA;;;;WACE,oBAAW;AACTxU,MAAAA,6CAAC,CAAC,MAAD,CAAD,CAAUwD,GAAV,CAAc,eAAd;AACA,UAAG,KAAKjD,OAAL,CAAauC,SAAhB,EAA2B,KAAKtC,QAAL,CAAcgD,GAAd,CAAkB,eAAlB,EAAkC,KAAK0P,YAAvC;;AAC3B,WAAKD,QAAL;;AACD,WAAKzS,QAAL,CAAcgD,GAAd,CAAkB,qBAAlB;AACC2C,MAAAA,4DAAA,CAAU,KAAK3F,QAAf,EAAyB,WAAzB;AACA,WAAKA,QAAL,CAAcqU,MAAd,GACcpT,IADd,CACmB,6CADnB,EACkE+G,MADlE,GAEcwH,GAFd,GAEoBvO,IAFpB,CAEyB,gDAFzB,EAE2EqE,WAF3E,CAEuF,2CAFvF,EAEoItC,GAFpI,CAEwI,kDAFxI,EAGcwM,GAHd,GAGoBvO,IAHpB,CAGyB,gBAHzB,EAG2CqI,UAH3C,CAGsD,2BAHtD;AAIA,WAAK6H,eAAL,CAAqBzQ,IAArB,CAA0B,YAAW;AACnClB,QAAAA,6CAAC,CAAC,IAAD,CAAD,CAAQwD,GAAR,CAAY,eAAZ;AACD,OAFD;AAIA,WAAKhD,QAAL,CAAciB,IAAd,CAAmB,uBAAnB,EAA4C8G,MAA5C;AACA,WAAKF,SAAL,CAAevC,WAAf,CAA2B,4CAA3B;AAEA,WAAKtF,QAAL,CAAciB,IAAd,CAAmB,GAAnB,EAAwBP,IAAxB,CAA6B,YAAU;AACrC,YAAIoB,KAAK,GAAGtC,6CAAC,CAAC,IAAD,CAAb;AACAsC,QAAAA,KAAK,CAACwH,UAAN,CAAiB,UAAjB;;AACA,YAAGxH,KAAK,CAAC3B,IAAN,CAAW,WAAX,CAAH,EAA2B;AACzB2B,UAAAA,KAAK,CAACZ,IAAN,CAAW,MAAX,EAAmBY,KAAK,CAAC3B,IAAN,CAAW,WAAX,CAAnB,EAA4CoJ,UAA5C,CAAuD,WAAvD;AACD,SAFD,MAEK;AAAE;AAAS;AACjB,OAND;AAOD;;;;EA/hBqB9J;;AAkiBxBwR,SAAS,CAAC/Q,QAAV,GAAqB;AACnB;AACF;AACA;AACA;AACA;AACA;AACA;AACEgR,EAAAA,cAAc,EAAE,IARG;;AASnB;AACF;AACA;AACA;AACA;AACA;AACEW,EAAAA,UAAU,EAAE,6DAfO;;AAgBnB;AACF;AACA;AACA;AACA;AACA;AACEF,EAAAA,kBAAkB,EAAE,KAtBD;;AAuBnB;AACF;AACA;AACA;AACA;AACA;AACEO,EAAAA,OAAO,EAAE,aA7BU;;AA8BnB;AACF;AACA;AACA;AACA;AACA;AACE/L,EAAAA,UAAU,EAAE,KApCO;;AAqCnB;AACF;AACA;AACA;AACA;AACA;AACEmM,EAAAA,YAAY,EAAE,KA3CK;;AA4CnB;AACF;AACA;AACA;AACA;AACA;AACEN,EAAAA,UAAU,EAAE,KAlDO;;AAmDnB;AACF;AACA;AACA;AACA;AACA;AACEG,EAAAA,aAAa,EAAE,KAzDI;;AA0DnB;AACF;AACA;AACA;AACA;AACA;AACE7P,EAAAA,SAAS,EAAE,KAhEQ;;AAiEnB;AACF;AACA;AACA;AACA;AACA;AACEwQ,EAAAA,gBAAgB,EAAE,EAvEC;;AAwEnB;AACF;AACA;AACA;AACA;AACA;AACEG,EAAAA,eAAe,EAAE,CA9EE;;AA+EnB;AACF;AACA;AACA;AACA;AACA;AACEC,EAAAA,iBAAiB,EAAE,GArFA;;AAsFnB;AACF;AACA;AACA;AACA;AACA;AACA;AACEC,EAAAA,eAAe,EAAE,OA7FE,CA8FnB;;AA9FmB,CAArB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACjjBA;AACA;AACA;AACA;AAEA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IACMsB;;;;;;;;;;;;;;AACJ;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,oBAAO3U,OAAP,EAAgBC,OAAhB,EAAyB;AACvB,WAAKC,QAAL,GAAgBF,OAAhB;AACA,WAAKC,OAAL,GAAeP,oDAAA,CAAS,EAAT,EAAaiV,QAAQ,CAACvU,QAAtB,EAAgC,KAAKF,QAAL,CAAcG,IAAd,EAAhC,EAAsDJ,OAAtD,CAAf;AACA,WAAKK,SAAL,GAAiB,UAAjB,CAHuB,CAGM;AAE7B;;AACAoU,MAAAA,8DAAA,CAAWhV,+CAAX;AACA+U,MAAAA,oEAAA,CAAc/U,+CAAd;;AAEA,WAAKa,KAAL;;AAEAT,MAAAA,wEAAA,CAAkB,UAAlB,EAA8B;AAC5B,iBAAS,QADmB;AAE5B,iBAAS,QAFmB;AAG5B,kBAAU;AAHkB,OAA9B;AAKD;AAED;AACF;AACA;AACA;AACA;;;;WACE,iBAAQ;AACN,UAAI+U,GAAG,GAAG,KAAK3U,QAAL,CAAckB,IAAd,CAAmB,IAAnB,CAAV;AAEA,WAAK0T,QAAL,GAAgBpV,6CAAC,0BAAkBmV,GAAlB,SAAD,CAA4BvT,MAA5B,GAAqC5B,6CAAC,0BAAkBmV,GAAlB,SAAtC,GAAmEnV,6CAAC,wBAAgBmV,GAAhB,SAApF;AACA,WAAKC,QAAL,CAAc1T,IAAd,CAAmB;AACjB,yBAAiByT,GADA;AAEjB,yBAAiB,KAFA;AAGjB,yBAAiBA,GAHA;AAIjB,yBAAiB,IAJA;AAKjB,yBAAiB;AALA,OAAnB;;AAQA,WAAKE,iBAAL,CAAuB,KAAKD,QAAL,CAAcjR,KAAd,EAAvB;;AAEA,UAAG,KAAK5D,OAAL,CAAa+U,WAAhB,EAA4B;AAC1B,aAAKC,OAAL,GAAe,KAAK/U,QAAL,CAAcoH,OAAd,CAAsB,MAAM,KAAKrH,OAAL,CAAa+U,WAAzC,CAAf;AACD,OAFD,MAEK;AACH,aAAKC,OAAL,GAAe,IAAf;AACD,OAlBK,CAoBN;;;AACA,UAAI,OAAO,KAAK/U,QAAL,CAAckB,IAAd,CAAmB,iBAAnB,CAAP,KAAiD,WAArD,EAAkE;AAChE;AACA,YAAI,OAAO,KAAK8T,cAAL,CAAoB9T,IAApB,CAAyB,IAAzB,CAAP,KAA0C,WAA9C,EAA2D;AACzD,eAAK8T,cAAL,CAAoB9T,IAApB,CAAyB,IAAzB,EAA+BvB,mEAAW,CAAC,CAAD,EAAI,WAAJ,CAA1C;AACD;;AAED,aAAKK,QAAL,CAAckB,IAAd,CAAmB,iBAAnB,EAAsC,KAAK8T,cAAL,CAAoB9T,IAApB,CAAyB,IAAzB,CAAtC;AACD;;AAED,WAAKlB,QAAL,CAAckB,IAAd,CAAmB;AACjB,uBAAe,MADE;AAEjB,yBAAiByT,GAFA;AAGjB,uBAAeA;AAHE,OAAnB;;AAMA;;AACA,WAAK/R,OAAL;AACD;;;WAED,+BAAsB;AACpB;AACA,UAAIqS,QAAQ,GAAG,KAAKjV,QAAL,CAAc,CAAd,EAAiBI,SAAjB,CAA2B8U,KAA3B,CAAiC,0BAAjC,CAAf;;AACA,UAAGD,QAAH,EAAa;AACX,eAAOA,QAAQ,CAAC,CAAD,CAAf;AACD,OAFD,MAEO;AACL,eAAO,QAAP;AACD;AACF;;;WAED,gCAAuB;AACrB;AACA,UAAIE,kBAAkB,GAAG,cAAchH,IAAd,CAAmB,KAAK6G,cAAL,CAAoB9T,IAApB,CAAyB,OAAzB,CAAnB,CAAzB;;AACA,UAAGiU,kBAAH,EAAuB;AACrB,eAAOA,kBAAkB,CAAC,CAAD,CAAzB;AACD;;AAED;AACD;AAID;AACF;AACA;AACA;AACA;AACA;;;;WACE,wBAAe;AACb,WAAKnV,QAAL,CAAcsF,WAAd,wBAA0C,KAAK2P,QAA/C,4BAAyE,KAAKG,SAA9E;;AACA,iFAAmB,KAAKJ,cAAxB,EAAwC,KAAKhV,QAA7C,EAAuD,KAAK+U,OAA5D;;AACA,WAAK/U,QAAL,CAAckF,QAAd,wBAAuC,KAAK+P,QAA5C,4BAAsE,KAAKG,SAA3E;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;WACE,2BAAkBxU,EAAlB,EAAsB;AACpB,WAAKoU,cAAL,GAAsBxV,6CAAC,CAACoB,EAAD,CAAvB;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,mBAAU;AACR,UAAIiC,KAAK,GAAG,IAAZ;AAAA,UACIwS,QAAQ,GAAG,kBAAkB3T,MAAlB,IAA6B,OAAOA,MAAM,CAAC4T,YAAd,KAA+B,WAD3E;;AAGA,WAAKtV,QAAL,CAAciD,EAAd,CAAiB;AACf,2BAAmB,KAAKoE,IAAL,CAAUqG,IAAV,CAAe,IAAf,CADJ;AAEf,4BAAoB,KAAKpG,KAAL,CAAWoG,IAAX,CAAgB,IAAhB,CAFL;AAGf,6BAAqB,KAAKtK,MAAL,CAAYsK,IAAZ,CAAiB,IAAjB,CAHN;AAIf,+BAAuB,KAAK6H,YAAL,CAAkB7H,IAAlB,CAAuB,IAAvB;AAJR,OAAjB;AAOA,WAAKkH,QAAL,CAAc5R,GAAd,CAAkB,kBAAlB,EACGC,EADH,CACM,kBADN,EAC0B,UAASC,CAAT,EAAY;AAClCL,QAAAA,KAAK,CAACgS,iBAAN,CAAwB,IAAxB;;AAEA,aACE;AACChS,QAAAA,KAAK,CAAC9C,OAAN,CAAcyV,WAAd,KAA8B,KAA/B,IACA;AACA;AACCH,QAAAA,QAAQ,IAAIxS,KAAK,CAAC9C,OAAN,CAAc0V,KAA1B,IAAmC5S,KAAK,CAAC7C,QAAN,CAAeiC,QAAf,CAAwB,SAAxB,MAAuC,KAL7E,EAME;AACAiB,UAAAA,CAAC,CAACC,cAAF;AACD;AACJ,OAbD;;AAeA,UAAG,KAAKpD,OAAL,CAAa0V,KAAhB,EAAsB;AACpB,aAAKb,QAAL,CAAc5R,GAAd,CAAkB,+CAAlB,EACCC,EADD,CACI,wBADJ,EAC8B,YAAU;AACtCJ,UAAAA,KAAK,CAACgS,iBAAN,CAAwB,IAAxB;;AAEA,cAAIa,QAAQ,GAAGlW,6CAAC,CAAC,MAAD,CAAD,CAAUW,IAAV,EAAf;;AACA,cAAG,OAAOuV,QAAQ,CAACC,SAAhB,KAA+B,WAA/B,IAA8CD,QAAQ,CAACC,SAAT,KAAuB,OAAxE,EAAiF;AAC/ErI,YAAAA,YAAY,CAACzK,KAAK,CAAC+S,OAAP,CAAZ;AACA/S,YAAAA,KAAK,CAAC+S,OAAN,GAAgBpJ,UAAU,CAAC,YAAU;AACnC3J,cAAAA,KAAK,CAACwE,IAAN;;AACAxE,cAAAA,KAAK,CAAC+R,QAAN,CAAezU,IAAf,CAAoB,OAApB,EAA6B,IAA7B;AACD,aAHyB,EAGvB0C,KAAK,CAAC9C,OAAN,CAAc8V,UAHS,CAA1B;AAID;AACF,SAZD,EAYG5S,EAZH,CAYM,wBAZN,EAYgCiN,4EAAoB,CAAC,YAAU;AAC7D5C,UAAAA,YAAY,CAACzK,KAAK,CAAC+S,OAAP,CAAZ;AACA/S,UAAAA,KAAK,CAAC+S,OAAN,GAAgBpJ,UAAU,CAAC,YAAU;AACnC3J,YAAAA,KAAK,CAACyE,KAAN;;AACAzE,YAAAA,KAAK,CAAC+R,QAAN,CAAezU,IAAf,CAAoB,OAApB,EAA6B,KAA7B;AACD,WAHyB,EAGvB0C,KAAK,CAAC9C,OAAN,CAAc8V,UAHS,CAA1B;AAID,SANmD,CAZpD;;AAmBA,YAAG,KAAK9V,OAAL,CAAa+V,SAAhB,EAA0B;AACxB,eAAK9V,QAAL,CAAcgD,GAAd,CAAkB,+CAAlB,EACKC,EADL,CACQ,wBADR,EACkC,YAAU;AACtCqK,YAAAA,YAAY,CAACzK,KAAK,CAAC+S,OAAP,CAAZ;AACD,WAHL,EAGO3S,EAHP,CAGU,wBAHV,EAGoCiN,4EAAoB,CAAC,YAAU;AAC7D5C,YAAAA,YAAY,CAACzK,KAAK,CAAC+S,OAAP,CAAZ;AACA/S,YAAAA,KAAK,CAAC+S,OAAN,GAAgBpJ,UAAU,CAAC,YAAU;AACnC3J,cAAAA,KAAK,CAACyE,KAAN;;AACAzE,cAAAA,KAAK,CAAC+R,QAAN,CAAezU,IAAf,CAAoB,OAApB,EAA6B,KAA7B;AACD,aAHyB,EAGvB0C,KAAK,CAAC9C,OAAN,CAAc8V,UAHS,CAA1B;AAID,WANmD,CAHxD;AAUD;AACF;;AACD,WAAKjB,QAAL,CAAcjN,GAAd,CAAkB,KAAK3H,QAAvB,EAAiCiD,EAAjC,CAAoC,qBAApC,EAA2D,UAASC,CAAT,EAAY;AAErE,YAAIY,OAAO,GAAGtE,6CAAC,CAAC,IAAD,CAAf;AAAA,YACEuW,wBAAwB,GAAGnW,6EAAA,CAAuBiD,KAAK,CAAC7C,QAA7B,CAD7B;AAGAJ,QAAAA,yEAAA,CAAmBsD,CAAnB,EAAsB,UAAtB,EAAkC;AAChCmE,UAAAA,IAAI,EAAE,gBAAW;AACf,gBAAIvD,OAAO,CAACE,EAAR,CAAWnB,KAAK,CAAC+R,QAAjB,KAA8B,CAAC9Q,OAAO,CAACE,EAAR,CAAW,iBAAX,CAAnC,EAAkE;AAChEnB,cAAAA,KAAK,CAACwE,IAAN;;AACAxE,cAAAA,KAAK,CAAC7C,QAAN,CAAekB,IAAf,CAAoB,UAApB,EAAgC,CAAC,CAAjC,EAAoCsC,KAApC;;AACAN,cAAAA,CAAC,CAACC,cAAF;AACD;AACF,WAP+B;AAQhCmE,UAAAA,KAAK,EAAE,iBAAW;AAChBzE,YAAAA,KAAK,CAACyE,KAAN;;AACAzE,YAAAA,KAAK,CAAC+R,QAAN,CAAepR,KAAf;AACD;AAX+B,SAAlC;AAaD,OAlBD;AAmBD;AAED;AACF;AACA;AACA;AACA;;;;WACE,2BAAkB;AACf,UAAI+O,KAAK,GAAG/S,6CAAC,CAAC8P,QAAQ,CAAC2G,IAAV,CAAD,CAAiBjR,GAAjB,CAAqB,KAAKhF,QAA1B,CAAZ;AAAA,UACI6C,KAAK,GAAG,IADZ;;AAEA0P,MAAAA,KAAK,CAACvP,GAAN,CAAU,mCAAV,EACMC,EADN,CACS,mCADT,EAC8C,UAAUC,CAAV,EAAa;AACpD,YAAGL,KAAK,CAAC+R,QAAN,CAAe5Q,EAAf,CAAkBd,CAAC,CAAC6N,MAApB,KAA+BlO,KAAK,CAAC+R,QAAN,CAAe3T,IAAf,CAAoBiC,CAAC,CAAC6N,MAAtB,EAA8B3P,MAAhE,EAAwE;AACtE;AACD;;AACD,YAAGyB,KAAK,CAAC7C,QAAN,CAAegE,EAAf,CAAkBd,CAAC,CAAC6N,MAApB,KAA+BlO,KAAK,CAAC7C,QAAN,CAAeiB,IAAf,CAAoBiC,CAAC,CAAC6N,MAAtB,EAA8B3P,MAAhE,EAAwE;AACtE;AACD;;AACDyB,QAAAA,KAAK,CAACyE,KAAN;;AACAiL,QAAAA,KAAK,CAACvP,GAAN,CAAU,mCAAV;AACD,OAVN;AAWF;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,gBAAO;AACL;;AACA;AACJ;AACA;AACA;AACI,WAAKhD,QAAL,CAAc0C,OAAd,CAAsB,qBAAtB,EAA6C,KAAK1C,QAAL,CAAckB,IAAd,CAAmB,IAAnB,CAA7C;AACA,WAAK0T,QAAL,CAAc1P,QAAd,CAAuB,OAAvB,EACKhE,IADL,CACU;AAAC,yBAAiB;AAAlB,OADV,EAPK,CASL;;AAEA,WAAKlB,QAAL,CAAckF,QAAd,CAAuB,YAAvB;;AACA,WAAKqQ,YAAL;;AACA,WAAKvV,QAAL,CAAcsF,WAAd,CAA0B,YAA1B,EAAwCJ,QAAxC,CAAiD,SAAjD,EACKhE,IADL,CACU;AAAC,uBAAe;AAAhB,OADV;;AAGA,UAAG,KAAKnB,OAAL,CAAayT,SAAhB,EAA0B;AACxB,YAAI0C,UAAU,GAAGtW,6EAAA,CAAuB,KAAKI,QAA5B,CAAjB;;AACA,YAAGkW,UAAU,CAAC9U,MAAd,EAAqB;AACnB8U,UAAAA,UAAU,CAAClP,EAAX,CAAc,CAAd,EAAiBxD,KAAjB;AACD;AACF;;AAED,UAAG,KAAKzD,OAAL,CAAauS,YAAhB,EAA6B;AAAE,aAAK6D,eAAL;AAAyB;;AAExD,UAAI,KAAKpW,OAAL,CAAaqW,SAAjB,EAA4B;AAC1BxW,QAAAA,yEAAA,CAAmB,KAAKI,QAAxB;AACD;AAED;AACJ;AACA;AACA;;;AACI,WAAKA,QAAL,CAAc0C,OAAd,CAAsB,kBAAtB,EAA0C,CAAC,KAAK1C,QAAN,CAA1C;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,iBAAQ;AACN,UAAG,CAAC,KAAKA,QAAL,CAAciC,QAAd,CAAuB,SAAvB,CAAJ,EAAsC;AACpC,eAAO,KAAP;AACD;;AACD,WAAKjC,QAAL,CAAcsF,WAAd,CAA0B,SAA1B,EACKpE,IADL,CACU;AAAC,uBAAe;AAAhB,OADV;AAGA,WAAK0T,QAAL,CAActP,WAAd,CAA0B,OAA1B,EACKpE,IADL,CACU,eADV,EAC2B,KAD3B;AAGA;AACJ;AACA;AACA;;AACI,WAAKlB,QAAL,CAAc0C,OAAd,CAAsB,kBAAtB,EAA0C,CAAC,KAAK1C,QAAN,CAA1C;;AAEA,UAAI,KAAKD,OAAL,CAAaqW,SAAjB,EAA4B;AAC1BxW,QAAAA,4EAAA,CAAsB,KAAKI,QAA3B;AACD;AACF;AAED;AACF;AACA;AACA;;;;WACE,kBAAS;AACP,UAAG,KAAKA,QAAL,CAAciC,QAAd,CAAuB,SAAvB,CAAH,EAAqC;AACnC,YAAG,KAAK2S,QAAL,CAAczU,IAAd,CAAmB,OAAnB,CAAH,EAAgC;AAChC,aAAKmH,KAAL;AACD,OAHD,MAGK;AACH,aAAKD,IAAL;AACD;AACF;AAED;AACF;AACA;AACA;;;;WACE,oBAAW;AACT,WAAKrH,QAAL,CAAcgD,GAAd,CAAkB,aAAlB,EAAiCsT,IAAjC;AACA,WAAK1B,QAAL,CAAc5R,GAAd,CAAkB,cAAlB;AACAxD,MAAAA,6CAAC,CAAC8P,QAAQ,CAAC2G,IAAV,CAAD,CAAiBjT,GAAjB,CAAqB,mCAArB;AAED;;;;EAzToBsR;;AA4TvBG,QAAQ,CAACvU,QAAT,GAAoB;AAClB;AACF;AACA;AACA;AACA;AACA;AACE4U,EAAAA,WAAW,EAAE,IAPK;;AAQlB;AACF;AACA;AACA;AACA;AACA;AACEe,EAAAA,UAAU,EAAE,GAdM;;AAelB;AACF;AACA;AACA;AACA;AACA;AACEJ,EAAAA,KAAK,EAAE,KArBW;;AAsBlB;AACF;AACA;AACA;AACA;AACA;AACEK,EAAAA,SAAS,EAAE,KA5BO;;AA6BlB;AACF;AACA;AACA;AACA;AACA;AACES,EAAAA,OAAO,EAAE,CAnCS;;AAoClB;AACF;AACA;AACA;AACA;AACA;AACEC,EAAAA,OAAO,EAAE,CA1CS;;AA2ClB;AACF;AACA;AACA;AACA;AACA;AACEvB,EAAAA,QAAQ,EAAE,MAjDQ;;AAkDlB;AACF;AACA;AACA;AACA;AACA;AACEG,EAAAA,SAAS,EAAE,MAxDO;;AAyDlB;AACF;AACA;AACA;AACA;AACA;AACEqB,EAAAA,YAAY,EAAE,KA/DI;;AAgElB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACEC,EAAAA,kBAAkB,EAAE,IAxEF;;AAyElB;AACF;AACA;AACA;AACA;AACA;AACEN,EAAAA,SAAS,EAAE,KA/EO;;AAgFlB;AACF;AACA;AACA;AACA;AACA;AACE5C,EAAAA,SAAS,EAAE,KAtFO;;AAuFlB;AACF;AACA;AACA;AACA;AACA;AACElB,EAAAA,YAAY,EAAE,KA7FI;;AA8FlB;AACF;AACA;AACA;AACA;AACA;AACEkD,EAAAA,WAAW,EAAE;AApGK,CAApB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5UA;AACA;AACA;AACA;AACA;AACA;AACA;AAGA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IAEMoB;;;;;;;;;;;;;;AACJ;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,oBAAO9W,OAAP,EAAgBC,OAAhB,EAAyB;AACvB,WAAKC,QAAL,GAAgBF,OAAhB;AACA,WAAKC,OAAL,GAAeP,oDAAA,CAAS,EAAT,EAAaoX,YAAY,CAAC1W,QAA1B,EAAoC,KAAKF,QAAL,CAAcG,IAAd,EAApC,EAA0DJ,OAA1D,CAAf;AACA,WAAKK,SAAL,GAAiB,cAAjB,CAHuB,CAGU;;AAEjCoU,MAAAA,8DAAA,CAAWhV,+CAAX,EALuB,CAKR;;AAEf,WAAKa,KAAL;;AAEAT,MAAAA,wEAAA,CAAkB,cAAlB,EAAkC;AAChC,iBAAS,MADuB;AAEhC,iBAAS,MAFuB;AAGhC,uBAAe,MAHiB;AAIhC,oBAAY,IAJoB;AAKhC,sBAAc,MALkB;AAMhC,sBAAc,UANkB;AAOhC,kBAAU;AAPsB,OAAlC;AASD;AAED;AACF;AACA;AACA;AACA;;;;WACE,iBAAQ;AACN+F,MAAAA,+DAAA,CAAa,KAAK3F,QAAlB,EAA4B,UAA5B;AAEA,UAAI6W,IAAI,GAAG,KAAK7W,QAAL,CAAciB,IAAd,CAAmB,+BAAnB,CAAX;AACA,WAAKjB,QAAL,CAAcS,QAAd,CAAuB,6BAAvB,EAAsDA,QAAtD,CAA+D,sBAA/D,EAAuFyE,QAAvF,CAAgG,WAAhG;AAEA,WAAKkM,UAAL,GAAkB,KAAKpR,QAAL,CAAciB,IAAd,CAAmB,iBAAnB,CAAlB;AACA,WAAKT,KAAL,GAAa,KAAKR,QAAL,CAAcS,QAAd,CAAuB,iBAAvB,CAAb;AACA,WAAKD,KAAL,CAAWS,IAAX,CAAgB,wBAAhB,EAA0CiE,QAA1C,CAAmD,KAAKnF,OAAL,CAAa+W,aAAhE;;AAEA,UAAI,KAAK/W,OAAL,CAAaqV,SAAb,KAA2B,MAA/B,EAAuC;AACnC,YAAI,KAAKpV,QAAL,CAAciC,QAAd,CAAuB,KAAKlC,OAAL,CAAagX,UAApC,KAAmDJ,2DAAG,EAAtD,IAA4D,KAAK3W,QAAL,CAAcoH,OAAd,CAAsB,gBAAtB,EAAwCpD,EAAxC,CAA2C,GAA3C,CAAhE,EAAiH;AAC7G,eAAKjE,OAAL,CAAaqV,SAAb,GAAyB,OAAzB;AACAyB,UAAAA,IAAI,CAAC3R,QAAL,CAAc,YAAd;AACH,SAHD,MAGO;AACH,eAAKnF,OAAL,CAAaqV,SAAb,GAAyB,MAAzB;AACAyB,UAAAA,IAAI,CAAC3R,QAAL,CAAc,aAAd;AACH;AACJ,OARD,MAQO;AACL,YAAI,KAAKnF,OAAL,CAAaqV,SAAb,KAA2B,OAA/B,EAAwC;AACpCyB,UAAAA,IAAI,CAAC3R,QAAL,CAAc,YAAd;AACH,SAFD,MAEO;AACH2R,UAAAA,IAAI,CAAC3R,QAAL,CAAc,aAAd;AACH;AACF;;AACD,WAAK8R,OAAL,GAAe,KAAf;;AACA,WAAKpU,OAAL;AACD;;;WAED,uBAAc;AACZ,aAAO,KAAKpC,KAAL,CAAWkF,GAAX,CAAe,SAAf,MAA8B,OAA9B,IAAyC,KAAK1F,QAAL,CAAc0F,GAAd,CAAkB,gBAAlB,MAAwC,QAAxF;AACD;;;WAED,kBAAS;AACP,aAAO,KAAK1F,QAAL,CAAciC,QAAd,CAAuB,aAAvB,KAA0C0U,2DAAG,MAAM,CAAC,KAAK3W,QAAL,CAAciC,QAAd,CAAuB,YAAvB,CAA3D;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,mBAAU;AACR,UAAIY,KAAK,GAAG,IAAZ;AAAA,UACIwS,QAAQ,GAAG,kBAAkB3T,MAAlB,IAA6B,OAAOA,MAAM,CAAC4T,YAAd,KAA+B,WAD3E;AAAA,UAEI2B,QAAQ,GAAG,4BAFf,CADQ,CAKR;;;AACA,UAAIC,aAAa,GAAG,SAAhBA,aAAgB,CAAShU,CAAT,EAAY;AAC9B,YAAIJ,KAAK,GAAGtD,6CAAC,CAAC0D,CAAC,CAAC6N,MAAH,CAAD,CAAYrJ,YAAZ,CAAyB,IAAzB,aAAmCuP,QAAnC,EAAZ;AAAA,YACIE,MAAM,GAAGrU,KAAK,CAACb,QAAN,CAAegV,QAAf,CADb;AAAA,YAEIG,UAAU,GAAGtU,KAAK,CAAC5B,IAAN,CAAW,eAAX,MAAgC,MAFjD;AAAA,YAGI8E,IAAI,GAAGlD,KAAK,CAACrC,QAAN,CAAe,sBAAf,CAHX;;AAKA,YAAI0W,MAAJ,EAAY;AACV,cAAIC,UAAJ,EAAgB;AACd,gBAAI,CAACvU,KAAK,CAAC9C,OAAN,CAAcuS,YAAf,IACE,CAACzP,KAAK,CAAC9C,OAAN,CAAcsX,SAAf,IAA4B,CAAChC,QAD/B,IAEExS,KAAK,CAAC9C,OAAN,CAAcyV,WAAd,IAA6BH,QAFnC,EAE8C;AAC5C;AACD;;AACDnS,YAAAA,CAAC,CAACoU,wBAAF;AACApU,YAAAA,CAAC,CAACC,cAAF;;AACAN,YAAAA,KAAK,CAACuQ,KAAN,CAAYtQ,KAAZ;AACD,WATD,MAUK;AACHI,YAAAA,CAAC,CAACoU,wBAAF;AACApU,YAAAA,CAAC,CAACC,cAAF;;AACAN,YAAAA,KAAK,CAACwP,KAAN,CAAYrM,IAAZ;;AACAlD,YAAAA,KAAK,CAAC6E,GAAN,CAAU7E,KAAK,CAAC4E,YAAN,CAAmB7E,KAAK,CAAC7C,QAAzB,aAAuCiX,QAAvC,EAAV,EAA8D/V,IAA9D,CAAmE,eAAnE,EAAoF,IAApF;AACD;AACF;AACF,OAxBD;;AA0BA,UAAI,KAAKnB,OAAL,CAAasX,SAAb,IAA0BhC,QAA9B,EAAwC;AACtC,aAAKjE,UAAL,CAAgBnO,EAAhB,CAAmB,kDAAnB,EAAuEiU,aAAvE;AACD,OAlCO,CAoCR;;;AACA,UAAGrU,KAAK,CAAC9C,OAAN,CAAcwX,kBAAjB,EAAoC;AAClC,aAAKnG,UAAL,CAAgBnO,EAAhB,CAAmB,uBAAnB,EAA4C,UAASC,CAAT,EAAY;AACtD,cAAIJ,KAAK,GAAGtD,6CAAC,CAAC,IAAD,CAAb;AAAA,cACI2X,MAAM,GAAGrU,KAAK,CAACb,QAAN,CAAegV,QAAf,CADb;;AAEA,cAAG,CAACE,MAAJ,EAAW;AACTtU,YAAAA,KAAK,CAACuQ,KAAN;AACD;AACF,SAND;AAOD;;AAED,UAAIiC,QAAQ,IAAI,KAAKtV,OAAL,CAAayX,mBAA7B,EAAkD,KAAKzX,OAAL,CAAa0X,YAAb,GAA4B,IAA5B;;AAElD,UAAI,CAAC,KAAK1X,OAAL,CAAa0X,YAAlB,EAAgC;AAC9B,aAAKrG,UAAL,CAAgBnO,EAAhB,CAAmB,4BAAnB,EAAiD,UAAUC,CAAV,EAAa;AAC5D,cAAIJ,KAAK,GAAGtD,6CAAC,CAAC,IAAD,CAAb;AAAA,cACE2X,MAAM,GAAGrU,KAAK,CAACb,QAAN,CAAegV,QAAf,CADX;;AAGA,cAAIE,MAAJ,EAAY;AACV7J,YAAAA,YAAY,CAACxK,KAAK,CAAC3C,IAAN,CAAW,QAAX,CAAD,CAAZ;AACA2C,YAAAA,KAAK,CAAC3C,IAAN,CAAW,QAAX,EAAqBqM,UAAU,CAAC,YAAY;AAC1C3J,cAAAA,KAAK,CAACwP,KAAN,CAAYvP,KAAK,CAACrC,QAAN,CAAe,sBAAf,CAAZ;AACD,aAF8B,EAE5BoC,KAAK,CAAC9C,OAAN,CAAc8V,UAFc,CAA/B;AAGD;AACF,SAVD,EAUG5S,EAVH,CAUM,4BAVN,EAUoCiN,4EAAoB,CAAC,UAAUhN,CAAV,EAAa;AACpE,cAAIJ,KAAK,GAAGtD,6CAAC,CAAC,IAAD,CAAb;AAAA,cACI2X,MAAM,GAAGrU,KAAK,CAACb,QAAN,CAAegV,QAAf,CADb;;AAEA,cAAIE,MAAM,IAAItU,KAAK,CAAC9C,OAAN,CAAc2X,SAA5B,EAAuC;AACrC,gBAAI5U,KAAK,CAAC5B,IAAN,CAAW,eAAX,MAAgC,MAAhC,IAA0C2B,KAAK,CAAC9C,OAAN,CAAcsX,SAA5D,EAAuE;AAAE,qBAAO,KAAP;AAAe;;AAExF/J,YAAAA,YAAY,CAACxK,KAAK,CAAC3C,IAAN,CAAW,QAAX,CAAD,CAAZ;AACA2C,YAAAA,KAAK,CAAC3C,IAAN,CAAW,QAAX,EAAqBqM,UAAU,CAAC,YAAY;AAC1C3J,cAAAA,KAAK,CAACuQ,KAAN,CAAYtQ,KAAZ;AACD,aAF8B,EAE5BD,KAAK,CAAC9C,OAAN,CAAc4X,WAFc,CAA/B;AAGD;AACF,SAXuD,CAVxD;AAsBD;;AACD,WAAKvG,UAAL,CAAgBnO,EAAhB,CAAmB,yBAAnB,EAA8C,UAASC,CAAT,EAAY;AACxD,YAAIlD,QAAQ,GAAGR,6CAAC,CAAC0D,CAAC,CAAC6N,MAAH,CAAD,CAAYrJ,YAAZ,CAAyB,IAAzB,EAA+B,eAA/B,CAAf;AAAA,YACIkQ,KAAK,GAAG/U,KAAK,CAACrC,KAAN,CAAYkT,KAAZ,CAAkB1T,QAAlB,IAA8B,CAAC,CAD3C;AAAA,YAEI4G,SAAS,GAAGgR,KAAK,GAAG/U,KAAK,CAACrC,KAAT,GAAiBR,QAAQ,CAAC4E,QAAT,CAAkB,IAAlB,EAAwB+C,GAAxB,CAA4B3H,QAA5B,CAFtC;AAAA,YAGI6G,YAHJ;AAAA,YAIIC,YAJJ;AAMAF,QAAAA,SAAS,CAAClG,IAAV,CAAe,UAASqG,CAAT,EAAY;AACzB,cAAIvH,6CAAC,CAAC,IAAD,CAAD,CAAQwE,EAAR,CAAWhE,QAAX,CAAJ,EAA0B;AACxB6G,YAAAA,YAAY,GAAGD,SAAS,CAACI,EAAV,CAAaD,CAAC,GAAC,CAAf,CAAf;AACAD,YAAAA,YAAY,GAAGF,SAAS,CAACI,EAAV,CAAaD,CAAC,GAAC,CAAf,CAAf;AACA;AACD;AACF,SAND;;AAQA,YAAI8Q,WAAW,GAAG,SAAdA,WAAc,GAAW;AAC3B/Q,UAAAA,YAAY,CAACrG,QAAb,CAAsB,SAAtB,EAAiC+C,KAAjC;AACAN,UAAAA,CAAC,CAACC,cAAF;AACD,SAHD;AAAA,YAGG2U,WAAW,GAAG,SAAdA,WAAc,GAAW;AAC1BjR,UAAAA,YAAY,CAACpG,QAAb,CAAsB,SAAtB,EAAiC+C,KAAjC;AACAN,UAAAA,CAAC,CAACC,cAAF;AACD,SAND;AAAA,YAMG4U,OAAO,GAAG,SAAVA,OAAU,GAAW;AACtB,cAAI/R,IAAI,GAAGhG,QAAQ,CAACS,QAAT,CAAkB,wBAAlB,CAAX;;AACA,cAAIuF,IAAI,CAAC5E,MAAT,EAAiB;AACfyB,YAAAA,KAAK,CAACwP,KAAN,CAAYrM,IAAZ;;AACAhG,YAAAA,QAAQ,CAACiB,IAAT,CAAc,cAAd,EAA8BuC,KAA9B;AACAN,YAAAA,CAAC,CAACC,cAAF;AACD,WAJD,MAIO;AAAE;AAAS;AACnB,SAbD;AAAA,YAaG6U,QAAQ,GAAG,SAAXA,QAAW,GAAW;AACvB;AACA,cAAI1Q,KAAK,GAAGtH,QAAQ,CAACgC,MAAT,CAAgB,IAAhB,EAAsBA,MAAtB,CAA6B,IAA7B,CAAZ;AACAsF,UAAAA,KAAK,CAAC7G,QAAN,CAAe,SAAf,EAA0B+C,KAA1B;;AACAX,UAAAA,KAAK,CAACuQ,KAAN,CAAY9L,KAAZ;;AACApE,UAAAA,CAAC,CAACC,cAAF,GALuB,CAMvB;AACD,SApBD;;AAqBA,YAAI8U,SAAS,GAAG;AACd5Q,UAAAA,IAAI,EAAE0Q,OADQ;AAEdzQ,UAAAA,KAAK,EAAE,iBAAW;AAChBzE,YAAAA,KAAK,CAACuQ,KAAN,CAAYvQ,KAAK,CAAC7C,QAAlB;;AACA6C,YAAAA,KAAK,CAACuO,UAAN,CAAiBpK,EAAjB,CAAoB,CAApB,EAAuBvG,QAAvB,CAAgC,GAAhC,EAAqC+C,KAArC,GAFgB,CAE8B;;;AAC9CN,YAAAA,CAAC,CAACC,cAAF;AACD;AANa,SAAhB;;AASA,YAAIyU,KAAJ,EAAW;AACT,cAAI/U,KAAK,CAACqV,WAAN,EAAJ,EAAyB;AAAE;AACzB,gBAAIrV,KAAK,CAACsV,MAAN,EAAJ,EAAoB;AAAE;AACpB3Y,cAAAA,oDAAA,CAASyY,SAAT,EAAoB;AAClB7T,gBAAAA,IAAI,EAAEyT,WADY;AAElB1T,gBAAAA,EAAE,EAAE2T,WAFc;AAGlBxU,gBAAAA,IAAI,EAAE0U,QAHY;AAIlBtU,gBAAAA,QAAQ,EAAEqU;AAJQ,eAApB;AAMD,aAPD,MAOO;AAAE;AACPvY,cAAAA,oDAAA,CAASyY,SAAT,EAAoB;AAClB7T,gBAAAA,IAAI,EAAEyT,WADY;AAElB1T,gBAAAA,EAAE,EAAE2T,WAFc;AAGlBxU,gBAAAA,IAAI,EAAEyU,OAHY;AAIlBrU,gBAAAA,QAAQ,EAAEsU;AAJQ,eAApB;AAMD;AACF,WAhBD,MAgBO;AAAE;AACP,gBAAInV,KAAK,CAACsV,MAAN,EAAJ,EAAoB;AAAE;AACpB3Y,cAAAA,oDAAA,CAASyY,SAAT,EAAoB;AAClB3U,gBAAAA,IAAI,EAAEwU,WADY;AAElBpU,gBAAAA,QAAQ,EAAEmU,WAFQ;AAGlBzT,gBAAAA,IAAI,EAAE2T,OAHY;AAIlB5T,gBAAAA,EAAE,EAAE6T;AAJc,eAApB;AAMD,aAPD,MAOO;AAAE;AACPxY,cAAAA,oDAAA,CAASyY,SAAT,EAAoB;AAClB3U,gBAAAA,IAAI,EAAEuU,WADY;AAElBnU,gBAAAA,QAAQ,EAAEoU,WAFQ;AAGlB1T,gBAAAA,IAAI,EAAE2T,OAHY;AAIlB5T,gBAAAA,EAAE,EAAE6T;AAJc,eAApB;AAMD;AACF;AACF,SAlCD,MAkCO;AAAE;AACP,cAAInV,KAAK,CAACsV,MAAN,EAAJ,EAAoB;AAAE;AACpB3Y,YAAAA,oDAAA,CAASyY,SAAT,EAAoB;AAClB3U,cAAAA,IAAI,EAAE0U,QADY;AAElBtU,cAAAA,QAAQ,EAAEqU,OAFQ;AAGlB3T,cAAAA,IAAI,EAAEyT,WAHY;AAIlB1T,cAAAA,EAAE,EAAE2T;AAJc,aAApB;AAMD,WAPD,MAOO;AAAE;AACPtY,YAAAA,oDAAA,CAASyY,SAAT,EAAoB;AAClB3U,cAAAA,IAAI,EAAEyU,OADY;AAElBrU,cAAAA,QAAQ,EAAEsU,QAFQ;AAGlB5T,cAAAA,IAAI,EAAEyT,WAHY;AAIlB1T,cAAAA,EAAE,EAAE2T;AAJc,aAApB;AAMD;AACF;;AACDlY,QAAAA,yEAAA,CAAmBsD,CAAnB,EAAsB,cAAtB,EAAsC+U,SAAtC;AAED,OAlGD;AAmGD;AAED;AACF;AACA;AACA;AACA;;;;WACE,2BAAkB;AAAA;;AAChB,UAAM1F,KAAK,GAAG/S,6CAAC,CAAC8P,QAAQ,CAAC2G,IAAV,CAAf;;AACA,WAAKmC,kBAAL;;AACA7F,MAAAA,KAAK,CAACtP,EAAN,CAAS,2CAAT,EAAsD,UAACC,CAAD,EAAO;AAC3D,YAAImV,QAAQ,GAAG,CAAC,CAAC7Y,6CAAC,CAAC0D,CAAC,CAAC6N,MAAH,CAAD,CAAYhN,OAAZ,CAAoB,MAAI,CAAC/D,QAAzB,EAAmCoB,MAApD;AACA,YAAIiX,QAAJ,EAAc;;AAEd,cAAI,CAACjF,KAAL;;AACA,cAAI,CAACgF,kBAAL;AACD,OAND;AAOD;AAED;AACF;AACA;AACA;AACA;;;;WACE,8BAAqB;AACnB5Y,MAAAA,6CAAC,CAAC8P,QAAQ,CAAC2G,IAAV,CAAD,CAAiBjT,GAAjB,CAAqB,2CAArB;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;WACE,eAAMgD,IAAN,EAAY;AACV,UAAIrF,GAAG,GAAG,KAAKH,KAAL,CAAWkT,KAAX,CAAiB,KAAKlT,KAAL,CAAWiK,MAAX,CAAkB,UAAS1D,CAAT,EAAYnG,EAAZ,EAAgB;AAC3D,eAAOpB,6CAAC,CAACoB,EAAD,CAAD,CAAMK,IAAN,CAAW+E,IAAX,EAAiB5E,MAAjB,GAA0B,CAAjC;AACD,OAF0B,CAAjB,CAAV;AAGA,UAAIkX,KAAK,GAAGtS,IAAI,CAAChE,MAAL,CAAY,+BAAZ,EAA6C4C,QAA7C,CAAsD,+BAAtD,CAAZ;;AACA,WAAKwO,KAAL,CAAWkF,KAAX,EAAkB3X,GAAlB;;AACAqF,MAAAA,IAAI,CAACN,GAAL,CAAS,YAAT,EAAuB,QAAvB,EAAiCR,QAAjC,CAA0C,oBAA1C,EACKlD,MADL,CACY,+BADZ,EAC6CkD,QAD7C,CACsD,WADtD;AAEA,UAAIqT,KAAK,GAAGvH,sEAAA,CAAqBhL,IAArB,EAA2B,IAA3B,EAAiC,IAAjC,CAAZ;;AACA,UAAI,CAACuS,KAAL,EAAY;AACV,YAAIE,QAAQ,GAAG,KAAK1Y,OAAL,CAAaqV,SAAb,KAA2B,MAA3B,GAAoC,QAApC,GAA+C,OAA9D;AAAA,YACIsD,SAAS,GAAG1S,IAAI,CAAChE,MAAL,CAAY,6BAAZ,CADhB;AAEA0W,QAAAA,SAAS,CAACpT,WAAV,gBAA8BmT,QAA9B,GAA0CvT,QAA1C,iBAA4D,KAAKnF,OAAL,CAAaqV,SAAzE;AACAmD,QAAAA,KAAK,GAAGvH,sEAAA,CAAqBhL,IAArB,EAA2B,IAA3B,EAAiC,IAAjC,CAAR;;AACA,YAAI,CAACuS,KAAL,EAAY;AACVG,UAAAA,SAAS,CAACpT,WAAV,iBAA+B,KAAKvF,OAAL,CAAaqV,SAA5C,GAAyDlQ,QAAzD,CAAkE,aAAlE;AACD;;AACD,aAAK8R,OAAL,GAAe,IAAf;AACD;;AACDhR,MAAAA,IAAI,CAACN,GAAL,CAAS,YAAT,EAAuB,EAAvB;;AACA,UAAI,KAAK3F,OAAL,CAAauS,YAAjB,EAA+B;AAAE,aAAK6D,eAAL;AAAyB;AAC1D;AACJ;AACA;AACA;;;AACI,WAAKnW,QAAL,CAAc0C,OAAd,CAAsB,sBAAtB,EAA8C,CAACsD,IAAD,CAA9C;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,eAAMlD,KAAN,EAAanC,GAAb,EAAkB;AAChB,UAAIgY,QAAJ;;AACA,UAAI7V,KAAK,IAAIA,KAAK,CAAC1B,MAAnB,EAA2B;AACzBuX,QAAAA,QAAQ,GAAG7V,KAAX;AACD,OAFD,MAEO,IAAI,OAAOnC,GAAP,KAAe,WAAnB,EAAgC;AACrCgY,QAAAA,QAAQ,GAAG,KAAKnY,KAAL,CAAWwE,GAAX,CAAe,UAAS+B,CAAT,EAAYnG,EAAZ,EAAgB;AACxC,iBAAOmG,CAAC,KAAKpG,GAAb;AACD,SAFU,CAAX;AAGD,OAJM,MAKF;AACHgY,QAAAA,QAAQ,GAAG,KAAK3Y,QAAhB;AACD;;AACD,UAAI4Y,gBAAgB,GAAGD,QAAQ,CAAC1W,QAAT,CAAkB,WAAlB,KAAkC0W,QAAQ,CAAC1X,IAAT,CAAc,YAAd,EAA4BG,MAA5B,GAAqC,CAA9F;;AAEA,UAAIwX,gBAAJ,EAAsB;AACpB,YAAIC,WAAW,GAAGF,QAAQ,CAAC1X,IAAT,CAAc,cAAd,CAAlB;AACA4X,QAAAA,WAAW,CAAClR,GAAZ,CAAgBgR,QAAhB,EAA0BzX,IAA1B,CAA+B;AAC7B,2BAAiB;AADY,SAA/B,EAEGoE,WAFH,CAEe,WAFf;AAIAqT,QAAAA,QAAQ,CAAC1X,IAAT,CAAc,uBAAd,EAAuCqE,WAAvC,CAAmD,oBAAnD;;AAEA,YAAI,KAAK0R,OAAL,IAAgB2B,QAAQ,CAAC1X,IAAT,CAAc,aAAd,EAA6BG,MAAjD,EAAyD;AACvD,cAAIqX,QAAQ,GAAG,KAAK1Y,OAAL,CAAaqV,SAAb,KAA2B,MAA3B,GAAoC,OAApC,GAA8C,MAA7D;AACAuD,UAAAA,QAAQ,CAAC1X,IAAT,CAAc,+BAAd,EAA+C0G,GAA/C,CAAmDgR,QAAnD,EACSrT,WADT,6BAC0C,KAAKvF,OAAL,CAAaqV,SADvD,GAESlQ,QAFT,iBAE2BuT,QAF3B;AAGA,eAAKzB,OAAL,GAAe,KAAf;AACD;;AAED1J,QAAAA,YAAY,CAACuL,WAAW,CAAC1Y,IAAZ,CAAiB,QAAjB,CAAD,CAAZ;;AACA,aAAKiY,kBAAL;AAEA;AACN;AACA;AACA;;;AACM,aAAKpY,QAAL,CAAc0C,OAAd,CAAsB,sBAAtB,EAA8C,CAACiW,QAAD,CAA9C;AACD;AACF;AAED;AACF;AACA;AACA;;;;WACE,oBAAW;AACT,WAAKvH,UAAL,CAAgBpO,GAAhB,CAAoB,kBAApB,EAAwCsG,UAAxC,CAAmD,eAAnD,EACKhE,WADL,CACiB,+EADjB;AAEA9F,MAAAA,6CAAC,CAAC8P,QAAQ,CAAC2G,IAAV,CAAD,CAAiBjT,GAAjB,CAAqB,kBAArB;AACA2C,MAAAA,4DAAA,CAAU,KAAK3F,QAAf,EAAyB,UAAzB;AACD;;;;EAjXwBP;AAoX3B;AACA;AACA;;;AACAmX,YAAY,CAAC1W,QAAb,GAAwB;AACtB;AACF;AACA;AACA;AACA;AACA;AACEuX,EAAAA,YAAY,EAAE,KAPQ;;AAQtB;AACF;AACA;AACA;AACA;AACA;AACED,EAAAA,mBAAmB,EAAE,IAdC;;AAetB;AACF;AACA;AACA;AACA;AACA;AACEE,EAAAA,SAAS,EAAE,IArBW;;AAsBtB;AACF;AACA;AACA;AACA;AACA;AACE7B,EAAAA,UAAU,EAAE,EA5BU;;AA6BtB;AACF;AACA;AACA;AACA;AACA;AACEwB,EAAAA,SAAS,EAAE,KAnCW;;AAoCtB;AACF;AACA;AACA;AACA;AACA;AAEEM,EAAAA,WAAW,EAAE,GA3CS;;AA4CtB;AACF;AACA;AACA;AACA;AACA;AACEvC,EAAAA,SAAS,EAAE,MAlDW;;AAmDtB;AACF;AACA;AACA;AACA;AACA;AACE9C,EAAAA,YAAY,EAAE,IAzDQ;;AA0DtB;AACF;AACA;AACA;AACA;AACA;AACEiF,EAAAA,kBAAkB,EAAE,IAhEE;;AAiEtB;AACF;AACA;AACA;AACA;AACA;AACET,EAAAA,aAAa,EAAE,UAvEO;;AAwEtB;AACF;AACA;AACA;AACA;AACA;AACEC,EAAAA,UAAU,EAAE,aA9EU;;AA+EtB;AACF;AACA;AACA;AACA;AACA;AACEvB,EAAAA,WAAW,EAAE;AArFS,CAAxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACzYA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;IAEMsD;;;;;;;;;;;;;;AACJ;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,oBAAOhZ,OAAP,EAAgBC,OAAhB,EAAyB;AAAA;;AACvB,WAAKK,SAAL,GAAiB,WAAjB,CADuB,CACO;;AAC9B,WAAKJ,QAAL,GAAgBF,OAAhB;AACA,WAAKC,OAAL,GAAeP,oDAAA,CAAS,EAAT,EAAasZ,SAAS,CAAC5Y,QAAvB,EAAiC,KAAKF,QAAL,CAAcG,IAAd,EAAjC,EAAuDJ,OAAvD,CAAf;AACA,WAAKgZ,cAAL,GAAsB;AAAEC,QAAAA,IAAI,EAAE,EAAR;AAAYC,QAAAA,MAAM,EAAE;AAApB,OAAtB;AACA,WAAKC,YAAL,GAAoB1Z,6CAAC,EAArB;AACA,WAAK2Z,SAAL,GAAiB3Z,6CAAC,EAAlB;AACA,WAAKyV,QAAL,GAAgB,MAAhB;AACA,WAAKnU,QAAL,GAAgBtB,6CAAC,EAAjB;AACA,WAAK4Z,MAAL,GAAc,CAAC,CAAE,KAAKrZ,OAAL,CAAaqZ,MAA9B;AACA,WAAKC,OAAL,GAAe7Z,6CAAC,EAAhB;AACA,WAAK8Z,UAAL,GAAkB,KAAlB,CAXuB,CAavB;;AACA9Z,MAAAA,6CAAC,CAAC,CAAC,MAAD,EAAS,SAAT,CAAD,CAAD,CAAuBkB,IAAvB,CAA4B,UAACgT,KAAD,EAAQ6F,GAAR,EAAgB;AAC1C,cAAI,CAACR,cAAL,CAAoBC,IAApB,CAAyB9P,IAAzB,CAA8B,oBAAkBqQ,GAAhD;AACD,OAFD;AAGA/Z,MAAAA,6CAAC,CAAC,CAAC,MAAD,EAAS,OAAT,EAAkB,KAAlB,EAAyB,QAAzB,CAAD,CAAD,CAAsCkB,IAAtC,CAA2C,UAACgT,KAAD,EAAQ6F,GAAR,EAAgB;AACzD,cAAI,CAACR,cAAL,CAAoBC,IAApB,CAAyB9P,IAAzB,CAA8B,kBAAgBqQ,GAA9C;;AACA,cAAI,CAACR,cAAL,CAAoBE,MAApB,CAA2B/P,IAA3B,CAAgC,gBAAcqQ,GAA9C;AACD,OAHD,EAjBuB,CAsBvB;;AACAhF,MAAAA,oEAAA,CAAc/U,+CAAd;;AACA0I,MAAAA,yEAAA;;AAEA,WAAK7H,KAAL;;AACA,WAAKuC,OAAL;;AAEAhD,MAAAA,wEAAA,CAAkB,WAAlB,EAA+B;AAC7B,kBAAU;AADmB,OAA/B;AAID;AAED;AACF;AACA;AACA;AACA;;;;WACE,iBAAQ;AACN,UAAImB,EAAE,GAAG,KAAKf,QAAL,CAAckB,IAAd,CAAmB,IAAnB,CAAT;AAEA,WAAKlB,QAAL,CAAckB,IAAd,CAAmB,aAAnB,EAAkC,MAAlC,EAHM,CAKN;;AACA,UAAI,KAAKnB,OAAL,CAAayZ,SAAjB,EAA4B;AAC1B,aAAK1Y,QAAL,GAAgBtB,6CAAC,CAAC,MAAI,KAAKO,OAAL,CAAayZ,SAAlB,CAAjB;AACD,OAFD,MAEO,IAAI,KAAKxZ,QAAL,CAAc4E,QAAd,CAAuB,2BAAvB,EAAoDxD,MAAxD,EAAgE;AACrE,aAAKN,QAAL,GAAgB,KAAKd,QAAL,CAAc4E,QAAd,CAAuB,2BAAvB,EAAoDjB,KAApD,EAAhB;AACD,OAFM,MAEA;AACL,aAAK7C,QAAL,GAAgB,KAAKd,QAAL,CAAc+D,OAAd,CAAsB,2BAAtB,EAAmDJ,KAAnD,EAAhB;AACD;;AAED,UAAI,CAAC,KAAK5D,OAAL,CAAayZ,SAAlB,EAA6B;AAC3B;AACA,aAAKJ,MAAL,GAAc,KAAKpZ,QAAL,CAAc4E,QAAd,CAAuB,2BAAvB,EAAoDxD,MAApD,KAA+D,CAA7E;AAED,OAJD,MAIO,IAAI,KAAKrB,OAAL,CAAayZ,SAAb,IAA0B,KAAKzZ,OAAL,CAAaqZ,MAAb,KAAwB,IAAtD,EAA4D;AACjE;AACA;AACAnV,QAAAA,OAAO,CAACwV,IAAR,CAAa,mEAAb;AACD;;AAED,UAAI,KAAKL,MAAL,KAAgB,IAApB,EAA0B;AACxB;AACA,aAAKrZ,OAAL,CAAa0P,UAAb,GAA0B,SAA1B,CAFwB,CAGxB;;AACA,aAAKzP,QAAL,CAAcsF,WAAd,CAA0B,oBAA1B;AACD;;AAED,WAAKtF,QAAL,CAAckF,QAAd,yBAAwC,KAAKnF,OAAL,CAAa0P,UAArD,iBA/BM,CAiCN;;AACA,WAAK0J,SAAL,GAAiB3Z,6CAAC,CAAC8P,QAAD,CAAD,CACdrO,IADc,CACT,iBAAeF,EAAf,GAAkB,mBAAlB,GAAsCA,EAAtC,GAAyC,oBAAzC,GAA8DA,EAA9D,GAAiE,IADxD,EAEdG,IAFc,CAET,eAFS,EAEQ,OAFR,EAGdA,IAHc,CAGT,eAHS,EAGQH,EAHR,CAAjB,CAlCM,CAuCN;;AACA,WAAKkU,QAAL,GAAgB,KAAKjV,QAAL,CAAcgE,EAAd,CAAiB,kEAAjB,IAAuF,KAAKhE,QAAL,CAAckB,IAAd,CAAmB,OAAnB,EAA4BgU,KAA5B,CAAkC,mCAAlC,EAAuE,CAAvE,CAAvF,GAAmK,KAAKD,QAAxL,CAxCM,CA0CN;;AACA,UAAI,KAAKlV,OAAL,CAAa2Z,cAAb,KAAgC,IAApC,EAA0C;AACxC,YAAIC,OAAO,GAAGrK,QAAQ,CAACC,aAAT,CAAuB,KAAvB,CAAd;AACA,YAAIqK,eAAe,GAAGpa,6CAAC,CAAC,KAAKQ,QAAN,CAAD,CAAiB0F,GAAjB,CAAqB,UAArB,MAAqC,OAArC,GAA+C,kBAA/C,GAAoE,qBAA1F;AACAiU,QAAAA,OAAO,CAACE,YAAR,CAAqB,OAArB,EAA8B,2BAA2BD,eAAzD;AACA,aAAKE,QAAL,GAAgBta,6CAAC,CAACma,OAAD,CAAjB;;AACA,YAAGC,eAAe,KAAK,kBAAvB,EAA2C;AACzCpa,UAAAA,6CAAC,CAAC,KAAKsa,QAAN,CAAD,CAAiBC,WAAjB,CAA6B,KAAK/Z,QAAlC;AACD,SAFD,MAEO;AACL,eAAKc,QAAL,CAAc8Q,MAAd,CAAqB,KAAKkI,QAA1B;AACD;AACF,OArDK,CAuDN;;;AACA,UAAIE,cAAc,GAAG,IAAIC,MAAJ,CAAW9K,oEAAY,CAAC,KAAKpP,OAAL,CAAama,WAAd,CAAZ,GAAyC,WAApD,EAAiE,GAAjE,CAArB;AACA,UAAIC,aAAa,GAAGH,cAAc,CAAC7L,IAAf,CAAoB,KAAKnO,QAAL,CAAc,CAAd,EAAiBI,SAArC,CAApB;;AACA,UAAI+Z,aAAJ,EAAmB;AACjB,aAAKpa,OAAL,CAAaqa,UAAb,GAA0B,IAA1B;AACA,aAAKra,OAAL,CAAasa,QAAb,GAAwB,KAAKta,OAAL,CAAasa,QAAb,IAAyBF,aAAa,CAAC,CAAD,CAA9D;AACD,OA7DK,CA+DN;;;AACA,UAAI,KAAKpa,OAAL,CAAaqa,UAAb,KAA4B,IAA5B,IAAoC,KAAKra,OAAL,CAAasa,QAArD,EAA+D;AAC7D,aAAKra,QAAL,CAAc2D,KAAd,GAAsBuB,QAAtB,WAAkC,KAAKnF,OAAL,CAAama,WAA/C,SAA6D,KAAKna,OAAL,CAAasa,QAA1E;;AACA,aAAKC,aAAL;AACD;;AAED,UAAI,KAAKva,OAAL,CAAawa,cAAjB,EAAiC;AAC/B,aAAKva,QAAL,CAAc0F,GAAd,CAAkB,qBAAlB,EAAyC,KAAK3F,OAAL,CAAawa,cAAtD;AACD,OAvEK,CAyEN;;;AACA,WAAKlB,OAAL,GAAe,KAAKvY,QAAL,CAAcG,IAAd,CAAmB,0BAAnB,CAAf;;AACA,UAAI,KAAKoY,OAAL,CAAajY,MAAb,GAAsB,CAAtB,IAA2B,KAAKrB,OAAL,CAAa0P,UAAb,KAA4B,MAA3D,EAAmE;AACjE;AACA;AACA,aAAK1P,OAAL,CAAaya,aAAb,GAA6B,KAA7B;AACD;;AAED,UAAIC,WAAW,GAAG,KAAKza,QAAL,CAAckB,IAAd,CAAmB,OAAnB,EAA4BgU,KAA5B,CAAkC,uBAAlC,CAAlB;;AACA,UAAIuF,WAAW,IAAIA,WAAW,CAACrZ,MAAZ,KAAuB,CAA1C,EAA6C;AAC3C;AACA,aAAKrB,OAAL,CAAa2a,UAAb,GAA0BD,WAAW,CAAC,CAAD,CAArC;AACD,OAHD,MAGO,IAAI,KAAK1a,OAAL,CAAa2a,UAAjB,EAA6B;AAClC;AACA,aAAK1a,QAAL,CAAckF,QAAd,yBAAwC,KAAKnF,OAAL,CAAa2a,UAArD;AACD;;AAED,UAAI,KAAK3a,OAAL,CAAa2a,UAAjB,EAA6B;AAC3B,aAAKC,cAAL;AACD,OA5FK,CA8FN;;;AACA,WAAKC,qBAAL;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,mBAAU;AAAA;;AACR,WAAK5a,QAAL,CAAcgD,GAAd,CAAkB,2BAAlB,EAA+CC,EAA/C,CAAkD;AAChD,2BAAmB,KAAKoE,IAAL,CAAUqG,IAAV,CAAe,IAAf,CAD6B;AAEhD,4BAAoB,KAAKpG,KAAL,CAAWoG,IAAX,CAAgB,IAAhB,CAF4B;AAGhD,6BAAqB,KAAKtK,MAAL,CAAYsK,IAAZ,CAAiB,IAAjB,CAH2B;AAIhD,gCAAwB,KAAKmN,eAAL,CAAqBnN,IAArB,CAA0B,IAA1B;AAJwB,OAAlD;;AAOA,UAAI,KAAK3N,OAAL,CAAauS,YAAb,KAA8B,IAAlC,EAAwC;AACtC,YAAIxO,OAAO,GAAG,KAAK/D,OAAL,CAAa2Z,cAAb,GAA8B,KAAKI,QAAnC,GAA8C,KAAKhZ,QAAjE;AACAgD,QAAAA,OAAO,CAACb,EAAR,CAAW;AAAC,gCAAsB,KAAKqE,KAAL,CAAWoG,IAAX,CAAgB,IAAhB;AAAvB,SAAX;AACD;;AAED,UAAI,KAAK3N,OAAL,CAAa2a,UAAjB,EAA6B;AAC3Blb,QAAAA,6CAAC,CAACkC,MAAD,CAAD,CAAUuB,EAAV,CAAa,uBAAb,EAAsC,YAAM;AAC1C,gBAAI,CAAC0X,cAAL;AACD,SAFD;AAGD;AAEF;AAED;AACF;AACA;AACA;;;;WACE,yBAAgB;AACd,UAAI9X,KAAK,GAAG,IAAZ;;AAEA,WAAKiY,cAAL,GAAsBpb,8DAAM,CAACF,6CAAC,CAACkC,MAAD,CAAF,EAAY,YAAY;AAClD,YAAIwG,2EAAA,CAAmBrF,KAAK,CAAC9C,OAAN,CAAcsa,QAAjC,CAAJ,EAAgD;AAC9CxX,UAAAA,KAAK,CAACoW,MAAN,CAAa,IAAb;AACD;AACF,OAJ2B,CAA5B;AAMAzZ,MAAAA,6CAAC,CAACkC,MAAD,CAAD,CAAUuB,EAAV,CAAa,uBAAb,EAAsC,YAAY;AAChD,YAAIiF,2EAAA,CAAmBrF,KAAK,CAAC9C,OAAN,CAAcsa,QAAjC,CAAJ,EAAgD;AAC9CxX,UAAAA,KAAK,CAACoW,MAAN,CAAa,IAAb;AACD,SAFD,MAEO;AACLpW,UAAAA,KAAK,CAACoW,MAAN,CAAa,KAAb;AACD;AACF,OAND;AAOD;AAED;AACF;AACA;AACA;;;;WACE,0BAAiB;AACf,WAAKK,UAAL,GAAkBpR,2EAAA,CAAmB,KAAKnI,OAAL,CAAa2a,UAAhC,CAAlB;;AACA,UAAI,KAAKpB,UAAL,KAAoB,IAAxB,EAA8B;AAC5B,aAAKhS,KAAL;AACD;AACF;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,+BAAsB0T,SAAtB,EAAiC;AAC/B,UAAI,OAAOA,SAAP,KAAqB,SAAzB,EAAoC;AAClC,aAAKla,QAAL,CAAcwE,WAAd,CAA0B,KAAKyT,cAAL,CAAoBC,IAApB,CAAyBiC,IAAzB,CAA8B,GAA9B,CAA1B;AACD,OAFD,MAEO,IAAID,SAAS,KAAK,KAAlB,EAAyB;AAC9B,aAAKla,QAAL,CAAcwE,WAAd,sBAAwC,KAAK2P,QAA7C;AACD;AACF;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,4BAAmB+F,SAAnB,EAA8B;AAC5B,WAAKJ,qBAAL,CAA2BI,SAA3B;;AACA,UAAI,OAAOA,SAAP,KAAqB,SAAzB,EAAoC;AAClC,aAAKla,QAAL,CAAcoE,QAAd,0BAAyC,KAAKnF,OAAL,CAAa0P,UAAtD,2BAAiF,KAAKwF,QAAtF;AACD,OAFD,MAEO,IAAI+F,SAAS,KAAK,IAAlB,EAAwB;AAC7B,aAAKla,QAAL,CAAcoE,QAAd,sBAAqC,KAAK+P,QAA1C;AACD;AACF;AAED;AACF;AACA;AACA;AACA;;;;WACE,8BAAqB;AACnB,WAAKoE,OAAL,CAAa3Y,IAAb,CAAkB,UAACwa,CAAD,EAAIta,EAAJ,EAAW;AAC3B,YAAMC,GAAG,GAAGrB,6CAAC,CAACoB,EAAD,CAAb,CAD2B,CAG3B;AACA;;AACA,YAAIC,GAAG,CAAC6E,GAAJ,CAAQ,UAAR,MAAwB,OAA5B,EAAqC;AAEnC;AACA,cAAIyV,MAAM,GAAGnI,QAAQ,CAACnS,GAAG,CAAC6E,GAAJ,CAAQ,KAAR,CAAD,EAAiB,EAAjB,CAArB;AACA7E,UAAAA,GAAG,CAACV,IAAJ,CAAS,iBAAT,EAA4B;AAAEoC,YAAAA,GAAG,EAAE4Y;AAAP,WAA5B;AAEA,cAAIC,cAAc,GAAG5b,6CAAC,CAAC8P,QAAD,CAAD,CAAYhN,SAAZ,KAA0B6Y,MAA/C;AACAta,UAAAA,GAAG,CAAC6E,GAAJ,CAAQ;AAAEnD,YAAAA,GAAG,YAAK6Y,cAAL,OAAL;AAA8BhH,YAAAA,KAAK,EAAE,MAArC;AAA6C3E,YAAAA,UAAU,EAAE;AAAzD,WAAR;AACD;AACF,OAdD;AAeD;AAED;AACF;AACA;AACA;AACA;;;;WACE,gCAAuB;AACrB,WAAK4J,OAAL,CAAa3Y,IAAb,CAAkB,UAACwa,CAAD,EAAIta,EAAJ,EAAW;AAC3B,YAAMC,GAAG,GAAGrB,6CAAC,CAACoB,EAAD,CAAb;AACA,YAAIya,UAAU,GAAGxa,GAAG,CAACV,IAAJ,CAAS,iBAAT,CAAjB,CAF2B,CAI3B;;AACA,YAAI,QAAOkb,UAAP,MAAsB,QAA1B,EAAoC;AAClCxa,UAAAA,GAAG,CAAC6E,GAAJ,CAAQ;AAAEnD,YAAAA,GAAG,YAAK8Y,UAAU,CAAC9Y,GAAhB,OAAL;AAA8B6R,YAAAA,KAAK,EAAE,EAArC;AAAyC3E,YAAAA,UAAU,EAAE;AAArD,WAAR;AACA5O,UAAAA,GAAG,CAACV,IAAJ,CAAS,iBAAT,EAA4B,EAA5B;AACD;AACF,OATD;AAUD;AAED;AACF;AACA;AACA;AACA;;;;WACE,gBAAOia,UAAP,EAAmB;AACjB,UAAIA,UAAJ,EAAgB;AACd,aAAK9S,KAAL;AACA,aAAK8S,UAAL,GAAkB,IAAlB;AACA,aAAKpa,QAAL,CAAckB,IAAd,CAAmB,aAAnB,EAAkC,OAAlC;AACA,aAAKlB,QAAL,CAAcgD,GAAd,CAAkB,mCAAlB;AACA,aAAKhD,QAAL,CAAcsF,WAAd,CAA0B,WAA1B;AACD,OAND,MAMO;AACL,aAAK8U,UAAL,GAAkB,KAAlB;AACA,aAAKpa,QAAL,CAAckB,IAAd,CAAmB,aAAnB,EAAkC,MAAlC;AACA,aAAKlB,QAAL,CAAcgD,GAAd,CAAkB,mCAAlB,EAAuDC,EAAvD,CAA0D;AACxD,6BAAmB,KAAKoE,IAAL,CAAUqG,IAAV,CAAe,IAAf,CADqC;AAExD,+BAAqB,KAAKtK,MAAL,CAAYsK,IAAZ,CAAiB,IAAjB;AAFmC,SAA1D;AAIA,aAAK1N,QAAL,CAAckF,QAAd,CAAuB,WAAvB;AACD;;AACD,WAAKoW,kBAAL,CAAwBlB,UAAxB;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,wBAAemB,KAAf,EAAsB;AACpB,aAAO,KAAP;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,2BAAkBA,KAAlB,EAAyB;AACvB,UAAMhR,IAAI,GAAG,IAAb;AACAA,MAAAA,IAAI,CAACiR,KAAL,GAAaD,KAAK,CAACE,OAAN,CAAc,CAAd,EAAiBC,KAA9B;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,gCAAuBH,KAAvB,EAA8B;AAC5B,UAAMhR,IAAI,GAAG,IAAb;AACA,UAAM1H,KAAK,GAAG0Y,KAAK,CAACpb,IAApB;AACA,UAAMwb,KAAK,GAAGpR,IAAI,CAACiR,KAAL,GAAaD,KAAK,CAACE,OAAN,CAAc,CAAd,EAAiBC,KAA5C;AACAnR,MAAAA,IAAI,CAACiR,KAAL,GAAaD,KAAK,CAACE,OAAN,CAAc,CAAd,EAAiBC,KAA9B;;AAEA,UAAI,CAAC7Y,KAAK,CAAC+Y,UAAN,CAAiBD,KAAjB,EAAwBpR,IAAxB,CAAL,EAAoC;AAClCgR,QAAAA,KAAK,CAACpY,cAAN;AACD;AACF;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,8BAAqBoY,KAArB,EAA4B;AAC1B,UAAMhR,IAAI,GAAG,IAAb;AACA,UAAM1H,KAAK,GAAG0Y,KAAK,CAACpb,IAApB;AACA,UAAM6B,MAAM,GAAGuI,IAAI,CAACxG,OAAL,CAAa,sDAAb,CAAf;AACA,UAAM4X,KAAK,GAAGpR,IAAI,CAACiR,KAAL,GAAaD,KAAK,CAACE,OAAN,CAAc,CAAd,EAAiBC,KAA5C;AACA1Z,MAAAA,MAAM,CAACwZ,KAAP,GAAejR,IAAI,CAACiR,KAAL,GAAaD,KAAK,CAACE,OAAN,CAAc,CAAd,EAAiBC,KAA7C;AAEAH,MAAAA,KAAK,CAACM,eAAN;;AAEA,UAAI,CAAChZ,KAAK,CAAC+Y,UAAN,CAAiBD,KAAjB,EAAwBpR,IAAxB,CAAL,EAAoC;AAClC,YAAI,CAAC1H,KAAK,CAAC+Y,UAAN,CAAiBD,KAAjB,EAAwB3Z,MAAxB,CAAL,EAAsC;AACpCuZ,UAAAA,KAAK,CAACpY,cAAN;AACD,SAFD,MAEO;AACLnB,UAAAA,MAAM,CAACM,SAAP,IAAoBqZ,KAApB;AACD;AACF;AACF;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;WACE,oBAAWA,KAAX,EAAkBpR,IAAlB,EAAwB;AACtB,UAAMpG,EAAE,GAAGwX,KAAK,GAAG,CAAnB;AACA,UAAMvX,IAAI,GAAGuX,KAAK,GAAG,CAArB;AACA,UAAMG,OAAO,GAAGvR,IAAI,CAACjI,SAAL,GAAiB,CAAjC;AACA,UAAMyZ,SAAS,GAAGxR,IAAI,CAACjI,SAAL,GAAiBiI,IAAI,CAACyR,YAAL,GAAoBzR,IAAI,CAAC0R,YAA5D;AACA,aAAO9X,EAAE,IAAI2X,OAAN,IAAiB1X,IAAI,IAAI2X,SAAhC;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,cAAKR,KAAL,EAAY7Y,OAAZ,EAAqB;AAAA;;AACnB,UAAI,KAAK1C,QAAL,CAAciC,QAAd,CAAuB,SAAvB,KAAqC,KAAKmY,UAA1C,IAAwD,KAAKd,UAAjE,EAA6E;AAAE;AAAS;;AACxF,UAAIzW,KAAK,GAAG,IAAZ;;AAEA,UAAIH,OAAJ,EAAa;AACX,aAAKwW,YAAL,GAAoBxW,OAApB;AACD;;AAED,UAAI,KAAK3C,OAAL,CAAamc,OAAb,KAAyB,KAA7B,EAAoC;AAClCxa,QAAAA,MAAM,CAACya,QAAP,CAAgB,CAAhB,EAAmB,CAAnB;AACD,OAFD,MAEO,IAAI,KAAKpc,OAAL,CAAamc,OAAb,KAAyB,QAA7B,EAAuC;AAC5Cxa,QAAAA,MAAM,CAACya,QAAP,CAAgB,CAAhB,EAAkB7M,QAAQ,CAAC2G,IAAT,CAAc+F,YAAhC;AACD;;AAED,UAAI,KAAKjc,OAAL,CAAawa,cAAb,IAA+B,KAAKxa,OAAL,CAAa0P,UAAb,KAA4B,SAA/D,EAA0E;AACxE,aAAKzP,QAAL,CAAc4E,QAAd,CAAuB,2BAAvB,EAAoDc,GAApD,CAAwD,qBAAxD,EAA+E,KAAK3F,OAAL,CAAawa,cAA5F;AACD,OAFD,MAEO;AACL,aAAKva,QAAL,CAAc4E,QAAd,CAAuB,2BAAvB,EAAoDc,GAApD,CAAwD,qBAAxD,EAA+E,EAA/E;AACD;;AAED,WAAK1F,QAAL,CAAckF,QAAd,CAAuB,SAAvB,EAAkCI,WAAlC,CAA8C,WAA9C;AAEA,WAAK6T,SAAL,CAAejY,IAAf,CAAoB,eAApB,EAAqC,MAArC;AACA,WAAKlB,QAAL,CAAckB,IAAd,CAAmB,aAAnB,EAAkC,OAAlC;AAEA,WAAKJ,QAAL,CAAcoE,QAAd,CAAuB,aAAa,KAAK+P,QAAzC,EAzBmB,CA2BnB;;AACA,UAAI,KAAKlV,OAAL,CAAaya,aAAb,KAA+B,KAAnC,EAA0C;AACxChb,QAAAA,6CAAC,CAAC,MAAD,CAAD,CAAU0F,QAAV,CAAmB,oBAAnB,EAAyCjC,EAAzC,CAA4C,WAA5C,EAAyD,KAAKmZ,cAA9D;AACA,aAAKpc,QAAL,CAAciD,EAAd,CAAiB,YAAjB,EAA+B,KAAKoZ,iBAApC;AACA,aAAKrc,QAAL,CAAciD,EAAd,CAAiB,WAAjB,EAA8B,IAA9B,EAAoC,KAAKqZ,sBAAzC;AACA,aAAKtc,QAAL,CAAciD,EAAd,CAAiB,YAAjB,EAA+B,6BAA/B,EAA8D,KAAKoZ,iBAAnE;AACA,aAAKrc,QAAL,CAAciD,EAAd,CAAiB,WAAjB,EAA8B,6BAA9B,EAA6D,IAA7D,EAAmE,KAAKsZ,oBAAxE;AACD;;AAED,UAAI,KAAKxc,OAAL,CAAa2Z,cAAb,KAAgC,IAApC,EAA0C;AACxC,aAAKI,QAAL,CAAc5U,QAAd,CAAuB,YAAvB;AACD;;AAED,UAAI,KAAKnF,OAAL,CAAauS,YAAb,KAA8B,IAA9B,IAAsC,KAAKvS,OAAL,CAAa2Z,cAAb,KAAgC,IAA1E,EAAgF;AAC9E,aAAKI,QAAL,CAAc5U,QAAd,CAAuB,aAAvB;AACD;;AAED,UAAI,KAAKnF,OAAL,CAAayT,SAAb,KAA2B,IAA/B,EAAqC;AACnC,aAAKxT,QAAL,CAAciQ,GAAd,CAAkBb,qEAAa,CAAC,KAAKpP,QAAN,CAA/B,EAAgD,YAAW;AACzD,cAAI,CAAC6C,KAAK,CAAC7C,QAAN,CAAeiC,QAAf,CAAwB,SAAxB,CAAL,EAAyC;AACvC,mBADuC,CAC/B;AACT;;AACD,cAAIua,WAAW,GAAG3Z,KAAK,CAAC7C,QAAN,CAAeiB,IAAf,CAAoB,kBAApB,CAAlB;;AACA,cAAIub,WAAW,CAACpb,MAAhB,EAAwB;AACpBob,YAAAA,WAAW,CAACxV,EAAZ,CAAe,CAAf,EAAkBxD,KAAlB;AACH,WAFD,MAEO;AACHX,YAAAA,KAAK,CAAC7C,QAAN,CAAeiB,IAAf,CAAoB,WAApB,EAAiC+F,EAAjC,CAAoC,CAApC,EAAuCxD,KAAvC;AACH;AACF,SAVD;AAWD;;AAED,UAAI,KAAKzD,OAAL,CAAaqW,SAAb,KAA2B,IAA/B,EAAqC;AACnC,aAAKtV,QAAL,CAAcI,IAAd,CAAmB,UAAnB,EAA+B,IAA/B;AACAtB,QAAAA,yEAAA,CAAmB,KAAKI,QAAxB;AACD;;AAED,UAAI,KAAKD,OAAL,CAAa0P,UAAb,KAA4B,MAAhC,EAAwC;AACtC,aAAKgN,kBAAL;AACD;;AAED,WAAKnB,kBAAL;AAEA;AACJ;AACA;AACA;;;AACI,WAAKtb,QAAL,CAAc0C,OAAd,CAAsB,qBAAtB;AAEA;AACJ;AACA;AACA;;AACI,WAAK1C,QAAL,CAAciQ,GAAd,CAAkBb,qEAAa,CAAC,KAAKpP,QAAN,CAA/B,EAAgD,YAAM;AACpD,cAAI,CAACA,QAAL,CAAc0C,OAAd,CAAsB,wBAAtB;AACD,OAFD;AAGD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;WACE,eAAMsN,EAAN,EAAU;AAAA;;AACR,UAAI,CAAC,KAAKhQ,QAAL,CAAciC,QAAd,CAAuB,SAAvB,CAAD,IAAsC,KAAKmY,UAA/C,EAA2D;AAAE;AAAS;AAEtE;AACJ;AACA;AACA;;;AACI,WAAKpa,QAAL,CAAc0C,OAAd,CAAsB,oBAAtB;;AAEA,UAAIG,KAAK,GAAG,IAAZ;;AAEA,WAAK7C,QAAL,CAAcsF,WAAd,CAA0B,SAA1B;AAEA,WAAKtF,QAAL,CAAckB,IAAd,CAAmB,aAAnB,EAAkC,MAAlC;AAEA,WAAKJ,QAAL,CAAcwE,WAAd,CAA0B,uDAA1B;;AAEA,UAAI,KAAKvF,OAAL,CAAa2Z,cAAb,KAAgC,IAApC,EAA0C;AACxC,aAAKI,QAAL,CAAcxU,WAAd,CAA0B,YAA1B;AACD;;AAED,UAAI,KAAKvF,OAAL,CAAauS,YAAb,KAA8B,IAA9B,IAAsC,KAAKvS,OAAL,CAAa2Z,cAAb,KAAgC,IAA1E,EAAgF;AAC9E,aAAKI,QAAL,CAAcxU,WAAd,CAA0B,aAA1B;AACD;;AAED,WAAK6T,SAAL,CAAejY,IAAf,CAAoB,eAApB,EAAqC,OAArC,EAzBQ,CA4BR;;AACA,WAAKlB,QAAL,CAAciQ,GAAd,CAAkBb,qEAAa,CAAC,KAAKpP,QAAN,CAA/B,EAAgD,UAACkD,CAAD,EAAO;AAErD,cAAI,CAAClD,QAAL,CAAckF,QAAd,CAAuB,WAAvB;;AACA,cAAI,CAAC0V,qBAAL;;AAEA,YAAI,MAAI,CAAC7a,OAAL,CAAa0P,UAAb,KAA4B,MAAhC,EAAwC;AACtC,gBAAI,CAACiN,oBAAL;AACD,SAPoD,CASrD;;;AACA,YAAI,MAAI,CAAC3c,OAAL,CAAaya,aAAb,KAA+B,KAAnC,EAA0C;AACxChb,UAAAA,6CAAC,CAAC,MAAD,CAAD,CAAU8F,WAAV,CAAsB,oBAAtB,EAA4CtC,GAA5C,CAAgD,WAAhD,EAA6D,MAAI,CAACoZ,cAAlE;;AACA,gBAAI,CAACpc,QAAL,CAAcgD,GAAd,CAAkB,YAAlB,EAAgC,MAAI,CAACqZ,iBAArC;;AACA,gBAAI,CAACrc,QAAL,CAAcgD,GAAd,CAAkB,WAAlB,EAA+B,MAAI,CAACsZ,sBAApC;;AACA,gBAAI,CAACtc,QAAL,CAAcgD,GAAd,CAAkB,YAAlB,EAAgC,6BAAhC,EAA+D,MAAI,CAACqZ,iBAApE;;AACA,gBAAI,CAACrc,QAAL,CAAcgD,GAAd,CAAkB,WAAlB,EAA+B,6BAA/B,EAA8D,MAAI,CAACuZ,oBAAnE;AACD;;AAED,YAAI,MAAI,CAACxc,OAAL,CAAaqW,SAAb,KAA2B,IAA/B,EAAqC;AACnC,gBAAI,CAACtV,QAAL,CAAcwI,UAAd,CAAyB,UAAzB;;AACA1J,UAAAA,4EAAA,CAAsB,MAAI,CAACI,QAA3B;AACD;AAED;AACN;AACA;AACA;;;AACM,cAAI,CAACA,QAAL,CAAc0C,OAAd,CAAsB,qBAAtB;AACD,OA5BD;AA6BD;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,gBAAO6Y,KAAP,EAAc7Y,OAAd,EAAuB;AACrB,UAAI,KAAK1C,QAAL,CAAciC,QAAd,CAAuB,SAAvB,CAAJ,EAAuC;AACrC,aAAKqF,KAAL,CAAWiU,KAAX,EAAkB7Y,OAAlB;AACD,OAFD,MAGK;AACH,aAAK2E,IAAL,CAAUkU,KAAV,EAAiB7Y,OAAjB;AACD;AACF;AAED;AACF;AACA;AACA;AACA;;;;WACE,yBAAgBQ,CAAhB,EAAmB;AAAA;;AACjBtD,MAAAA,yEAAA,CAAmBsD,CAAnB,EAAsB,WAAtB,EAAmC;AACjCoE,QAAAA,KAAK,EAAE,iBAAM;AACX,gBAAI,CAACA,KAAL;;AACA,gBAAI,CAAC4R,YAAL,CAAkB1V,KAAlB;;AACA,iBAAO,IAAP;AACD,SALgC;AAMjCK,QAAAA,OAAO,EAAE,mBAAM;AACbX,UAAAA,CAAC,CAACC,cAAF;AACD;AARgC,OAAnC;AAUD;AAED;AACF;AACA;AACA;;;;WACE,oBAAW;AACT,WAAKmE,KAAL;AACA,WAAKtH,QAAL,CAAcgD,GAAd,CAAkB,2BAAlB;AACA,WAAK8W,QAAL,CAAc9W,GAAd,CAAkB,eAAlB;AACA,UAAI,KAAK8X,cAAT,EAAyBtb,6CAAC,CAACkC,MAAD,CAAD,CAAUsB,GAAV,CAAc,KAAK8X,cAAnB;AAC1B;;;;EA/jBqBrb;;AAkkBxBqZ,SAAS,CAAC5Y,QAAV,GAAqB;AACnB;AACF;AACA;AACA;AACA;AACA;AACEoS,EAAAA,YAAY,EAAE,IAPK;;AASnB;AACF;AACA;AACA;AACA;AACA;AACEoH,EAAAA,cAAc,EAAE,IAfG;;AAiBnB;AACF;AACA;AACA;AACA;AACA;AACEF,EAAAA,SAAS,EAAE,IAvBQ;;AAyBnB;AACF;AACA;AACA;AACA;AACA;AACEJ,EAAAA,MAAM,EAAE,IA/BW;;AAiCnB;AACF;AACA;AACA;AACA;AACA;AACEoB,EAAAA,aAAa,EAAE,IAvCI;;AAyCnB;AACF;AACA;AACA;AACA;AACA;AACED,EAAAA,cAAc,EAAE,IA/CG;;AAiDnB;AACF;AACA;AACA;AACA;AACA;AACE9K,EAAAA,UAAU,EAAE,MAvDO;;AAyDnB;AACF;AACA;AACA;AACA;AACA;AACEyM,EAAAA,OAAO,EAAE,IA/DU;;AAiEnB;AACF;AACA;AACA;AACA;AACA;AACE9B,EAAAA,UAAU,EAAE,KAvEO;;AAyEnB;AACF;AACA;AACA;AACA;AACA;AACEC,EAAAA,QAAQ,EAAE,IA/ES;;AAiFnB;AACF;AACA;AACA;AACA;AACA;AACEK,EAAAA,UAAU,EAAE,IAvFO;;AAyFnB;AACF;AACA;AACA;AACA;AACA;AACElH,EAAAA,SAAS,EAAE,IA/FQ;;AAiGnB;AACF;AACA;AACA;AACA;AACA;AACA;AACE0G,EAAAA,WAAW,EAAE,aAxGM;;AA0GnB;AACF;AACA;AACA;AACA;AACA;AACE9D,EAAAA,SAAS,EAAE;AAhHQ,CAArB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACllBA;AACA;AACA;AAEA,IAAMuG,SAAS,GAAG,CAAC,MAAD,EAAS,OAAT,EAAkB,KAAlB,EAAyB,QAAzB,CAAlB;AACA,IAAMC,mBAAmB,GAAG,CAAC,KAAD,EAAQ,QAAR,EAAkB,QAAlB,CAA5B;AACA,IAAMC,qBAAqB,GAAG,CAAC,MAAD,EAAS,OAAT,EAAkB,QAAlB,CAA9B;AAEA,IAAMC,UAAU,GAAG;AACjB,UAAQF,mBADS;AAEjB,WAASA,mBAFQ;AAGjB,SAAOC,qBAHU;AAIjB,YAAUA;AAJO,CAAnB;;AAOA,SAASE,QAAT,CAAkBC,IAAlB,EAAwBC,KAAxB,EAA+B;AAC7B,MAAIC,UAAU,GAAGD,KAAK,CAAC5T,OAAN,CAAc2T,IAAd,CAAjB;;AACA,MAAGE,UAAU,KAAKD,KAAK,CAAC7b,MAAN,GAAe,CAAjC,EAAoC;AAClC,WAAO6b,KAAK,CAAC,CAAD,CAAZ;AACD,GAFD,MAEO;AACL,WAAOA,KAAK,CAACC,UAAU,GAAG,CAAd,CAAZ;AACD;AACF;;IAGK5I;;;;;;;;;;;;;;AACJ;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEE,qBAAQ;AACN,WAAK6I,cAAL,GAAsB,EAAtB;AACA,WAAKlI,QAAL,GAAiB,KAAKlV,OAAL,CAAakV,QAAb,KAA0B,MAA1B,GAAmC,KAAKmI,mBAAL,EAAnC,GAAgE,KAAKrd,OAAL,CAAakV,QAA9F;AACA,WAAKG,SAAL,GAAiB,KAAKrV,OAAL,CAAaqV,SAAb,KAA2B,MAA3B,GAAoC,KAAKiI,oBAAL,EAApC,GAAkE,KAAKtd,OAAL,CAAaqV,SAAhG;AACA,WAAKkI,gBAAL,GAAwB,KAAKrI,QAA7B;AACA,WAAKsI,iBAAL,GAAyB,KAAKnI,SAA9B;AACD;;;WAED,+BAAuB;AACrB,aAAO,QAAP;AACD;;;WAED,gCAAuB;AACrB,cAAO,KAAKH,QAAZ;AACE,aAAK,QAAL;AACA,aAAK,KAAL;AACE,iBAAO0B,2DAAG,KAAK,OAAL,GAAe,MAAzB;;AACF,aAAK,MAAL;AACA,aAAK,OAAL;AACE,iBAAO,QAAP;AANJ;AAQD;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,uBAAc;AACZ,UAAG,KAAK6G,oBAAL,CAA0B,KAAKvI,QAA/B,CAAH,EAA6C;AAC3C,aAAKA,QAAL,GAAgB8H,QAAQ,CAAC,KAAK9H,QAAN,EAAgB0H,SAAhB,CAAxB;AACA,aAAKvH,SAAL,GAAiB0H,UAAU,CAAC,KAAK7H,QAAN,CAAV,CAA0B,CAA1B,CAAjB;AACD,OAHD,MAGO;AACL,aAAKwI,QAAL;AACD;AACF;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,oBAAW;AACT,WAAKC,iBAAL,CAAuB,KAAKzI,QAA5B,EAAsC,KAAKG,SAA3C;;AACA,WAAKA,SAAL,GAAiB2H,QAAQ,CAAC,KAAK3H,SAAN,EAAiB0H,UAAU,CAAC,KAAK7H,QAAN,CAA3B,CAAzB;AACD;;;WAED,2BAAkBA,QAAlB,EAA4BG,SAA5B,EAAuC;AACrC,WAAK+H,cAAL,CAAoBlI,QAApB,IAAgC,KAAKkI,cAAL,CAAoBlI,QAApB,KAAiC,EAAjE;AACA,WAAKkI,cAAL,CAAoBlI,QAApB,EAA8B/L,IAA9B,CAAmCkM,SAAnC;AACD;;;WAED,+BAAsB;AACpB,UAAIuI,WAAW,GAAG,IAAlB;;AACA,WAAI,IAAI5W,CAAC,GAAG,CAAZ,EAAeA,CAAC,GAAG4V,SAAS,CAACvb,MAA7B,EAAqC2F,CAAC,EAAtC,EAA0C;AACxC4W,QAAAA,WAAW,GAAGA,WAAW,IAAI,KAAKH,oBAAL,CAA0Bb,SAAS,CAAC5V,CAAD,CAAnC,CAA7B;AACD;;AACD,aAAO4W,WAAP;AACD;;;WAED,8BAAqB1I,QAArB,EAA+B;AAC7B,aAAO,KAAKkI,cAAL,CAAoBlI,QAApB,KAAiC,KAAKkI,cAAL,CAAoBlI,QAApB,EAA8B7T,MAA9B,IAAwC0b,UAAU,CAAC7H,QAAD,CAAV,CAAqB7T,MAArG;AACD,MAGD;AACA;AACA;AACA;AACA;AACA;;;;WACA,uBAAc;AACZ,aAAO,KAAKrB,OAAL,CAAawW,OAApB;AACD;;;WAED,uBAAc;AACZ,aAAO,KAAKxW,OAAL,CAAayW,OAApB;AACD;;;WAED,sBAAa3U,OAAb,EAAsB7B,QAAtB,EAAgC+U,OAAhC,EAAyC;AACvC,UAAGlT,OAAO,CAACX,IAAR,CAAa,eAAb,MAAkC,OAArC,EAA6C;AAAE,eAAO,KAAP;AAAe;;AAE9D,UAAI,CAAC,KAAKnB,OAAL,CAAa0W,YAAlB,EAAgC;AAC9B;AACA,aAAKxB,QAAL,GAAgB,KAAKqI,gBAArB;AACA,aAAKlI,SAAL,GAAiB,KAAKmI,iBAAtB;AACD;;AAEDvd,MAAAA,QAAQ,CAACoC,MAAT,CAAgB4O,wEAAA,CAAuBhR,QAAvB,EAAiC6B,OAAjC,EAA0C,KAAKoT,QAA/C,EAAyD,KAAKG,SAA9D,EAAyE,KAAKyI,WAAL,EAAzE,EAA6F,KAAKC,WAAL,EAA7F,CAAhB;;AAEA,UAAG,CAAC,KAAK/d,OAAL,CAAa0W,YAAjB,EAA+B;AAC7B,YAAIsH,UAAU,GAAG,SAAjB,CAD6B,CAE7B;;AACA,YAAIC,cAAc,GAAG;AAAC/I,UAAAA,QAAQ,EAAE,KAAKA,QAAhB;AAA0BG,UAAAA,SAAS,EAAE,KAAKA;AAA1C,SAArB;;AACA,eAAM,CAAC,KAAK6I,mBAAL,EAAP,EAAmC;AACjC,cAAIC,OAAO,GAAGlN,iEAAA,CAAgBhR,QAAhB,EAA0B+U,OAA1B,EAAmC,KAAnC,EAA0C,KAA1C,EAAiD,KAAKhV,OAAL,CAAa2W,kBAA9D,CAAd;;AACA,cAAGwH,OAAO,KAAK,CAAf,EAAkB;AAChB;AACD;;AAED,cAAGA,OAAO,GAAGH,UAAb,EAAyB;AACvBA,YAAAA,UAAU,GAAGG,OAAb;AACAF,YAAAA,cAAc,GAAG;AAAC/I,cAAAA,QAAQ,EAAE,KAAKA,QAAhB;AAA0BG,cAAAA,SAAS,EAAE,KAAKA;AAA1C,aAAjB;AACD;;AAED,eAAKgJ,WAAL;;AAEApe,UAAAA,QAAQ,CAACoC,MAAT,CAAgB4O,wEAAA,CAAuBhR,QAAvB,EAAiC6B,OAAjC,EAA0C,KAAKoT,QAA/C,EAAyD,KAAKG,SAA9D,EAAyE,KAAKyI,WAAL,EAAzE,EAA6F,KAAKC,WAAL,EAA7F,CAAhB;AACD,SAlB4B,CAmB7B;AACA;;;AACA,aAAK7I,QAAL,GAAgB+I,cAAc,CAAC/I,QAA/B;AACA,aAAKG,SAAL,GAAiB4I,cAAc,CAAC5I,SAAhC;AACApV,QAAAA,QAAQ,CAACoC,MAAT,CAAgB4O,wEAAA,CAAuBhR,QAAvB,EAAiC6B,OAAjC,EAA0C,KAAKoT,QAA/C,EAAyD,KAAKG,SAA9D,EAAyE,KAAKyI,WAAL,EAAzE,EAA6F,KAAKC,WAAL,EAA7F,CAAhB;AACD;AACF;;;;EAhIwBre;;AAoI3B6U,YAAY,CAACpU,QAAb,GAAwB;AACtB;AACF;AACA;AACA;AACA;AACA;AACE+U,EAAAA,QAAQ,EAAE,MAPY;;AAQtB;AACF;AACA;AACA;AACA;AACA;AACEG,EAAAA,SAAS,EAAE,MAdW;;AAetB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACEqB,EAAAA,YAAY,EAAE,KAvBQ;;AAwBtB;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACEC,EAAAA,kBAAkB,EAAE,IAhCE;;AAiCtB;AACF;AACA;AACA;AACA;AACA;AACEH,EAAAA,OAAO,EAAE,CAvCa;;AAwCtB;AACF;AACA;AACA;AACA;AACA;AACEC,EAAAA,OAAO,EAAE;AA9Ca,CAAxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC7JA;AACA;AACA;AACA;AAEA;CAGA;;AACA,IAAI8H,WAAW,GAAG;AAChBC,EAAAA,IAAI,EAAE;AACJC,IAAAA,QAAQ,EAAE,MADN;AAEJhW,IAAAA,MAAM,EAAI6V,kDAFN;AAGJhX,IAAAA,IAAI,EAAM,cAACmB,MAAD,EAASuI,MAAT;AAAA,aAAoBvI,MAAM,CAACiW,SAAP,CAAiB1N,MAAjB,CAApB;AAAA,KAHN;AAIJzJ,IAAAA,KAAK,EAAK;AAAK;AAJX;AAKJlE,IAAAA,MAAM,EAAI;AAAK;;AALX,GADU;AAQhBsb,EAAAA,SAAS,EAAE;AACTF,IAAAA,QAAQ,EAAE,WADD;AAEThW,IAAAA,MAAM,EAAI3I,4DAFD;AAGTwH,IAAAA,IAAI,EAAM,cAACmB,MAAD,EAASuI,MAAT;AAAA,aAAoBvI,MAAM,CAACpE,IAAP,CAAY5E,6CAAC,CAACuR,MAAD,CAAb,CAApB;AAAA,KAHD;AAITzJ,IAAAA,KAAK,EAAK,eAACkB,MAAD,EAASuI,MAAT;AAAA,aAAoBvI,MAAM,CAACrE,EAAP,CAAU3E,6CAAC,CAACuR,MAAD,CAAX,CAApB;AAAA,KAJD;AAKT3N,IAAAA,MAAM,EAAI,gBAACoF,MAAD,EAASuI,MAAT;AAAA,aAAoBvI,MAAM,CAACpF,MAAP,CAAc5D,6CAAC,CAACuR,MAAD,CAAf,CAApB;AAAA;AALD;AARK,CAAlB;AAkBA;AACA;AACA;AACA;AACA;AACA;AACA;;IAEM4N;;;;;AACJ,mCAAY7e,OAAZ,EAAqBC,OAArB,EAA8B;AAAA;;AAAA;;AAC5B,+BAAMD,OAAN,EAAeC,OAAf;AACA,8CAAO,OAAKA,OAAL,CAAauK,MAAb,IAAuB,OAAKsU,WAA5B,kCAAP;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;;;WACE,gBAAO9e,OAAP,EAAgBC,OAAhB,EAAyB;AACvB,WAAKC,QAAL,GAAgBR,6CAAC,CAACM,OAAD,CAAjB;AACA,WAAKE,QAAL,CAAcG,IAAd,CAAmB,cAAnB,EAAmC,IAAnC;AACA,WAAKJ,OAAL,GAAeP,oDAAA,CAAS,EAAT,EAAamf,uBAAuB,CAACze,QAArC,EAA+C,KAAKF,QAAL,CAAcG,IAAd,EAA/C,EAAqEJ,OAArE,CAAf;AAEA,WAAK8e,KAAL,GAAa,KAAK7e,QAAL,CAAcG,IAAd,CAAmB,2BAAnB,CAAb;AACA,WAAK2e,SAAL,GAAiB,IAAjB;AACA,WAAKC,WAAL,GAAmB,IAAnB;AACA,WAAKC,aAAL,GAAqB,IAArB;AACA,WAAK5e,SAAL,GAAiB,yBAAjB,CATuB,CASqB;;AAC5C,UAAI,CAAC,KAAKJ,QAAL,CAAckB,IAAd,CAAmB,IAAnB,CAAL,EAA+B;AAC7B,aAAKlB,QAAL,CAAckB,IAAd,CAAmB,IAAnB,EAAwBvB,mEAAW,CAAC,CAAD,EAAI,yBAAJ,CAAnC;AACD;;AAED,WAAKU,KAAL;;AACA,WAAKuC,OAAL;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,iBAAQ;AACNsF,MAAAA,yEAAA,GADM,CAGN;;;AACA,UAAI,OAAO,KAAK2W,KAAZ,KAAsB,QAA1B,EAAoC;AAClC,YAAII,SAAS,GAAG,EAAhB,CADkC,CAGlC;;AACA,YAAIJ,KAAK,GAAG,KAAKA,KAAL,CAAWlU,KAAX,CAAiB,GAAjB,CAAZ,CAJkC,CAMlC;;AACA,aAAK,IAAI5D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8X,KAAK,CAACzd,MAA1B,EAAkC2F,CAAC,EAAnC,EAAuC;AACrC,cAAImY,IAAI,GAAGL,KAAK,CAAC9X,CAAD,CAAL,CAAS4D,KAAT,CAAe,GAAf,CAAX;AACA,cAAIwU,QAAQ,GAAGD,IAAI,CAAC9d,MAAL,GAAc,CAAd,GAAkB8d,IAAI,CAAC,CAAD,CAAtB,GAA4B,OAA3C;AACA,cAAIE,UAAU,GAAGF,IAAI,CAAC9d,MAAL,GAAc,CAAd,GAAkB8d,IAAI,CAAC,CAAD,CAAtB,GAA4BA,IAAI,CAAC,CAAD,CAAjD;;AAEA,cAAIZ,WAAW,CAACc,UAAD,CAAX,KAA4B,IAAhC,EAAsC;AACpCH,YAAAA,SAAS,CAACE,QAAD,CAAT,GAAsBb,WAAW,CAACc,UAAD,CAAjC;AACD;AACF;;AAED,aAAKP,KAAL,GAAaI,SAAb;AACD;;AAED,WAAKI,cAAL;;AAEA,UAAI,CAAC7f,2DAAA,CAAgB,KAAKqf,KAArB,CAAL,EAAkC;AAChC,aAAKU,kBAAL;AACD;AACF;;;WAED,0BAAiB;AACf;AACA,UAAI1c,KAAK,GAAG,IAAZ;;AACAA,MAAAA,KAAK,CAAC2c,UAAN,GAAmB,EAAnB;;AACA,WAAK,IAAIC,GAAT,IAAgBnB,WAAhB,EAA6B;AAC3B,YAAIA,WAAW,CAACoB,cAAZ,CAA2BD,GAA3B,CAAJ,EAAqC;AACnC,cAAI7Q,GAAG,GAAG0P,WAAW,CAACmB,GAAD,CAArB;;AACA,cAAI;AACF,gBAAIE,WAAW,GAAGngB,6CAAC,CAAC,WAAD,CAAnB;AACA,gBAAIogB,SAAS,GAAG,IAAIhR,GAAG,CAACpG,MAAR,CAAemX,WAAf,EAA2B9c,KAAK,CAAC9C,OAAjC,CAAhB;;AACA,iBAAK,IAAI8f,MAAT,IAAmBD,SAAS,CAAC7f,OAA7B,EAAsC;AACpC,kBAAI6f,SAAS,CAAC7f,OAAV,CAAkB2f,cAAlB,CAAiCG,MAAjC,KAA4CA,MAAM,KAAK,UAA3D,EAAuE;AACrE,oBAAIC,MAAM,GAAGF,SAAS,CAAC7f,OAAV,CAAkB8f,MAAlB,CAAb;AACAhd,gBAAAA,KAAK,CAAC2c,UAAN,CAAiBK,MAAjB,IAA2BC,MAA3B;AACD;AACF;;AACDF,YAAAA,SAAS,CAACG,OAAV;AACD,WAVD,CAWA,OAAM7c,CAAN,EAAS,CACR;AACF;AACF;AACF;AAED;AACF;AACA;AACA;AACA;;;;WACE,mBAAU;AACR,WAAK8c,2BAAL,GAAmC,KAAKT,kBAAL,CAAwB7R,IAAxB,CAA6B,IAA7B,CAAnC;AACAlO,MAAAA,6CAAC,CAACkC,MAAD,CAAD,CAAUuB,EAAV,CAAa,uBAAb,EAAsC,KAAK+c,2BAA3C;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,8BAAqB;AACnB,UAAIC,SAAJ;AAAA,UAAepd,KAAK,GAAG,IAAvB,CADmB,CAEnB;;;AACArD,MAAAA,kDAAA,CAAO,KAAKqf,KAAZ,EAAmB,UAASY,GAAT,EAAc;AAC/B,YAAIvX,2EAAA,CAAmBuX,GAAnB,CAAJ,EAA6B;AAC3BQ,UAAAA,SAAS,GAAGR,GAAZ;AACD;AACF,OAJD,EAHmB,CASnB;;AACA,UAAI,CAACQ,SAAL,EAAgB,OAVG,CAYnB;;AACA,UAAI,KAAKjB,aAAL,YAA8B,KAAKH,KAAL,CAAWoB,SAAX,EAAsBzX,MAAxD,EAAgE,OAb7C,CAenB;;AACAhJ,MAAAA,kDAAA,CAAO8e,WAAP,EAAoB,UAASmB,GAAT,EAAcS,KAAd,EAAqB;AACvCrd,QAAAA,KAAK,CAAC7C,QAAN,CAAesF,WAAf,CAA2B4a,KAAK,CAAC1B,QAAjC;AACD,OAFD,EAhBmB,CAoBnB;;AACA,WAAKxe,QAAL,CAAckF,QAAd,CAAuB,KAAK2Z,KAAL,CAAWoB,SAAX,EAAsBzB,QAA7C,EArBmB,CAuBnB;;AACA,UAAI,KAAKQ,aAAT,EAAwB;AACtB;AACA,YAAI,CAAC,KAAKA,aAAL,CAAmBhf,QAAnB,CAA4BG,IAA5B,CAAiC,UAAjC,CAAD,IAAiD,KAAKye,WAA1D,EAAuE,KAAKI,aAAL,CAAmBhf,QAAnB,CAA4BG,IAA5B,CAAiC,UAAjC,EAA4C,KAAKye,WAAjD;AACvE,aAAKI,aAAL,CAAmBe,OAAnB;AACD;;AACD,WAAKI,aAAL,CAAmB,KAAKtB,KAAL,CAAWoB,SAAX,EAAsBzB,QAAzC;;AACA,WAAKO,WAAL,GAAmB,KAAKF,KAAL,CAAWoB,SAAX,CAAnB;AACA,WAAKjB,aAAL,GAAqB,IAAI,KAAKD,WAAL,CAAiBvW,MAArB,CAA4B,KAAKxI,QAAjC,EAA2C,KAAKD,OAAhD,CAArB;AACA,WAAK6e,WAAL,GAAmB,KAAKI,aAAL,CAAmBhf,QAAnB,CAA4BG,IAA5B,CAAiC,UAAjC,CAAnB;AAED;;;WAED,uBAAcigB,KAAd,EAAoB;AAClB,UAAIvd,KAAK,GAAG,IAAZ;AAAA,UAAkBwd,UAAU,GAAG,WAA/B;;AACA,UAAIC,OAAO,GAAG9gB,6CAAC,CAAC,wBAAsB,KAAKQ,QAAL,CAAckB,IAAd,CAAmB,IAAnB,CAAtB,GAA+C,GAAhD,CAAf;AACA,UAAIof,OAAO,CAAClf,MAAZ,EAAoBif,UAAU,GAAG,MAAb;;AACpB,UAAIA,UAAU,KAAKD,KAAnB,EAA0B;AACxB;AACD;;AAED,UAAIG,SAAS,GAAG1d,KAAK,CAAC2c,UAAN,CAAiBgB,SAAjB,GAA2B3d,KAAK,CAAC2c,UAAN,CAAiBgB,SAA5C,GAAsD,YAAtE;AACA,UAAIC,SAAS,GAAG5d,KAAK,CAAC2c,UAAN,CAAiBkB,UAAjB,GAA4B7d,KAAK,CAAC2c,UAAN,CAAiBkB,UAA7C,GAAwD,YAAxE;AAEA,WAAK1gB,QAAL,CAAcsJ,UAAd,CAAyB,MAAzB;AACA,UAAIqX,QAAQ,GAAG,KAAK3gB,QAAL,CAAcS,QAAd,CAAuB,MAAI8f,SAAJ,GAAc,wBAArC,EAA+Djb,WAA/D,CAA2Eib,SAA3E,EAAsFjb,WAAtF,CAAkG,gBAAlG,EAAoHgE,UAApH,CAA+H,qBAA/H,CAAf;AACA,UAAIsX,SAAS,GAAGD,QAAQ,CAAClgB,QAAT,CAAkB,GAAlB,EAAuB6E,WAAvB,CAAmC,iBAAnC,CAAhB;;AAEA,UAAI+a,UAAU,KAAK,MAAnB,EAA2B;AACzBC,QAAAA,OAAO,GAAGA,OAAO,CAAC7f,QAAR,CAAiB,MAAIggB,SAArB,EAAgCnb,WAAhC,CAA4Cmb,SAA5C,EAAuDnX,UAAvD,CAAkE,MAAlE,EAA0EA,UAA1E,CAAqF,aAArF,EAAoGA,UAApG,CAA+G,iBAA/G,CAAV;AACAgX,QAAAA,OAAO,CAAC7f,QAAR,CAAiB,GAAjB,EAAsB6I,UAAtB,CAAiC,MAAjC,EAAyCA,UAAzC,CAAoD,eAApD,EAAqEA,UAArE,CAAgF,eAAhF;AACD,OAHD,MAGO;AACLgX,QAAAA,OAAO,GAAGK,QAAQ,CAAClgB,QAAT,CAAkB,oBAAlB,EAAwC6E,WAAxC,CAAoD,mBAApD,CAAV;AACD;;AAEDgb,MAAAA,OAAO,CAAC5a,GAAR,CAAY;AAACmb,QAAAA,OAAO,EAAC,EAAT;AAAYC,QAAAA,UAAU,EAAC;AAAvB,OAAZ;AACAH,MAAAA,QAAQ,CAACjb,GAAT,CAAa;AAACmb,QAAAA,OAAO,EAAC,EAAT;AAAYC,QAAAA,UAAU,EAAC;AAAvB,OAAb;;AACA,UAAIV,KAAK,KAAK,WAAd,EAA2B;AACzBE,QAAAA,OAAO,CAAC5f,IAAR,CAAa,UAAS+e,GAAT,EAAaS,KAAb,EAAmB;AAC9B1gB,UAAAA,6CAAC,CAAC0gB,KAAD,CAAD,CAASa,QAAT,CAAkBJ,QAAQ,CAACK,GAAT,CAAavB,GAAb,CAAlB,EAAqCva,QAArC,CAA8C,mBAA9C,EAAmEhE,IAAnE,CAAwE,kBAAxE,EAA2F,EAA3F,EAA+FoE,WAA/F,CAA2G,WAA3G,EAAwHI,GAAxH,CAA4H;AAAC4N,YAAAA,MAAM,EAAC;AAAR,WAA5H;AACA9T,UAAAA,6CAAC,CAAC,wBAAsBqD,KAAK,CAAC7C,QAAN,CAAekB,IAAf,CAAoB,IAApB,CAAtB,GAAgD,GAAjD,CAAD,CAAuDsF,KAAvD,CAA6D,+BAA6B3D,KAAK,CAAC7C,QAAN,CAAekB,IAAf,CAAoB,IAApB,CAA7B,GAAuD,UAApH,EAAgI6G,MAAhI;AACA4Y,UAAAA,QAAQ,CAACzb,QAAT,CAAkB,gBAAlB,EAAoChE,IAApC,CAAyC,qBAAzC,EAA+D,EAA/D;AACA0f,UAAAA,SAAS,CAAC1b,QAAV,CAAmB,iBAAnB;AACD,SALD;AAMD,OAPD,MAOO,IAAIkb,KAAK,KAAK,MAAd,EAAsB;AAC3B,YAAIa,YAAY,GAAGzhB,6CAAC,CAAC,wBAAsBqD,KAAK,CAAC7C,QAAN,CAAekB,IAAf,CAAoB,IAApB,CAAtB,GAAgD,GAAjD,CAApB;AACA,YAAIggB,YAAY,GAAG1hB,6CAAC,CAAC,uBAAqBqD,KAAK,CAAC7C,QAAN,CAAekB,IAAf,CAAoB,IAApB,CAAtB,CAApB;;AACA,YAAIggB,YAAY,CAAC9f,MAAjB,EAAyB;AACvB6f,UAAAA,YAAY,GAAGzhB,6CAAC,CAAC,kCAAD,CAAD,CAAsCua,WAAtC,CAAkDmH,YAAlD,EAAgEhgB,IAAhE,CAAqE,mBAArE,EAAyF2B,KAAK,CAAC7C,QAAN,CAAekB,IAAf,CAAoB,IAApB,CAAzF,CAAf;AACAggB,UAAAA,YAAY,CAAClZ,MAAb;AACD,SAHD,MAGO;AACLiZ,UAAAA,YAAY,GAAGzhB,6CAAC,CAAC,kCAAD,CAAD,CAAsCua,WAAtC,CAAkDlX,KAAK,CAAC7C,QAAxD,EAAkEkB,IAAlE,CAAuE,mBAAvE,EAA2F2B,KAAK,CAAC7C,QAAN,CAAekB,IAAf,CAAoB,IAApB,CAA3F,CAAf;AACD;;AACDof,QAAAA,OAAO,CAAC5f,IAAR,CAAa,UAAS+e,GAAT,EAAaS,KAAb,EAAmB;AAC9B,cAAIiB,SAAS,GAAG3hB,6CAAC,CAAC0gB,KAAD,CAAD,CAASa,QAAT,CAAkBE,YAAlB,EAAgC/b,QAAhC,CAAyCub,SAAzC,CAAhB;AACA,cAAI7e,IAAI,GAAGgf,SAAS,CAACI,GAAV,CAAcvB,GAAd,EAAmB7d,IAAnB,CAAwB8J,KAAxB,CAA8B,CAA9B,CAAX;AACA,cAAI3K,EAAE,GAAGvB,6CAAC,CAAC0gB,KAAD,CAAD,CAAShf,IAAT,CAAc,IAAd,KAAuBvB,mEAAW,CAAC,CAAD,EAAI,WAAJ,CAA3C;;AACA,cAAIiC,IAAI,KAAKb,EAAb,EAAiB;AACf,gBAAIa,IAAI,KAAK,EAAb,EAAiB;AACfpC,cAAAA,6CAAC,CAAC0gB,KAAD,CAAD,CAAShf,IAAT,CAAc,IAAd,EAAmBU,IAAnB;AACD,aAFD,MAEO;AACLA,cAAAA,IAAI,GAAGb,EAAP;AACAvB,cAAAA,6CAAC,CAAC0gB,KAAD,CAAD,CAAShf,IAAT,CAAc,IAAd,EAAmBU,IAAnB;AACApC,cAAAA,6CAAC,CAACohB,SAAS,CAACI,GAAV,CAAcvB,GAAd,CAAD,CAAD,CAAsBve,IAAtB,CAA2B,MAA3B,EAAkC1B,6CAAC,CAACohB,SAAS,CAACI,GAAV,CAAcvB,GAAd,CAAD,CAAD,CAAsBve,IAAtB,CAA2B,MAA3B,EAAmCsN,OAAnC,CAA2C,GAA3C,EAA+C,EAA/C,IAAmD,GAAnD,GAAuD5M,IAAzF;AACD;AACF;;AACD,cAAIsE,QAAQ,GAAG1G,6CAAC,CAACmhB,QAAQ,CAACK,GAAT,CAAavB,GAAb,CAAD,CAAD,CAAqBxd,QAArB,CAA8B,WAA9B,CAAf;;AACA,cAAIiE,QAAJ,EAAc;AACZib,YAAAA,SAAS,CAACjc,QAAV,CAAmB,WAAnB;AACD;AACF,SAjBD;AAkBAyb,QAAAA,QAAQ,CAACzb,QAAT,CAAkBqb,SAAlB;AACD;;AAAA;AACF;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;WACE,cAAKa,OAAL,EAAc;AACZ,UAAI,KAAKrC,WAAL,IAAoB,OAAO,KAAKA,WAAL,CAAiB1X,IAAxB,KAAiC,UAAzD,EAAqE;AAAA;;AACnE,eAAO,0BAAK0X,WAAL,EAAiB1X,IAAjB,2BAAsB,KAAK2X,aAA3B,oCAA6CpT,SAA7C,GAAP;AACD;AACF;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,eAAMwV,OAAN,EAAe;AACb,UAAI,KAAKrC,WAAL,IAAoB,OAAO,KAAKA,WAAL,CAAiBzX,KAAxB,KAAkC,UAA1D,EAAsE;AAAA;;AACpE,eAAO,2BAAKyX,WAAL,EAAiBzX,KAAjB,4BAAuB,KAAK0X,aAA5B,oCAA8CpT,SAA9C,GAAP;AACD;AACF;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,gBAAOwV,OAAP,EAAgB;AACd,UAAI,KAAKrC,WAAL,IAAoB,OAAO,KAAKA,WAAL,CAAiB3b,MAAxB,KAAmC,UAA3D,EAAuE;AAAA;;AACrE,eAAO,2BAAK2b,WAAL,EAAiB3b,MAAjB,4BAAwB,KAAK4b,aAA7B,oCAA+CpT,SAA/C,GAAP;AACD;AACF;AAED;AACF;AACA;AACA;;;;WACE,oBAAW;AACT,UAAI,KAAKoT,aAAT,EAAwB,KAAKA,aAAL,CAAmBe,OAAnB;AACxBvgB,MAAAA,6CAAC,CAACkC,MAAD,CAAD,CAAUsB,GAAV,CAAc,uBAAd,EAAuC,KAAKgd,2BAA5C;AACD;;;;EAzPmCvgB;;AA4PtCkf,uBAAuB,CAACze,QAAxB,GAAmC,EAAnC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC/RA;AAEA;AACA;AACA;AAEA;AACA;AACA;AAEA,IAAIoe,WAAW,GAAG;AAChB+C,EAAAA,QAAQ,EAAE;AACR7C,IAAAA,QAAQ,EAAE,UADF;AAERhW,IAAAA,MAAM,EAAEoO,kEAAYA;AAFZ,GADM;AAKjB0K,EAAAA,SAAS,EAAE;AACR9C,IAAAA,QAAQ,EAAE,WADF;AAERhW,IAAAA,MAAM,EAAEyI,4DAASA;AAFT,GALM;AAShByN,EAAAA,SAAS,EAAE;AACTF,IAAAA,QAAQ,EAAE,gBADD;AAEThW,IAAAA,MAAM,EAAE5C,oEAAaA;AAFZ;AATK,CAAlB,EAeE;;AAGF;AACA;AACA;AACA;AACA;AACA;;IAEM2b;;;;;;;;;;;;;;AACJ;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,oBAAOzhB,OAAP,EAAgBC,OAAhB,EAAyB;AACvB,WAAKC,QAAL,GAAgBR,6CAAC,CAACM,OAAD,CAAjB;AACA,WAAK+e,KAAL,GAAa,KAAK7e,QAAL,CAAcG,IAAd,CAAmB,iBAAnB,CAAb;AACA,WAAK2e,SAAL,GAAiB,IAAjB;AACA,WAAKE,aAAL,GAAqB,IAArB;AACA,WAAK5e,SAAL,GAAiB,gBAAjB,CALuB,CAKY;;AAEnC,WAAKC,KAAL;;AACA,WAAKuC,OAAL;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,iBAAQ;AAENsF,MAAAA,yEAAA,GAFM,CAGN;;;AACA,UAAI,OAAO,KAAK2W,KAAZ,KAAsB,QAA1B,EAAoC;AAClC,YAAII,SAAS,GAAG,EAAhB,CADkC,CAGlC;;AACA,YAAIJ,KAAK,GAAG,KAAKA,KAAL,CAAWlU,KAAX,CAAiB,GAAjB,CAAZ,CAJkC,CAMlC;;AACA,aAAK,IAAI5D,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG8X,KAAK,CAACzd,MAA1B,EAAkC2F,CAAC,EAAnC,EAAuC;AACrC,cAAImY,IAAI,GAAGL,KAAK,CAAC9X,CAAD,CAAL,CAAS4D,KAAT,CAAe,GAAf,CAAX;AACA,cAAIwU,QAAQ,GAAGD,IAAI,CAAC9d,MAAL,GAAc,CAAd,GAAkB8d,IAAI,CAAC,CAAD,CAAtB,GAA4B,OAA3C;AACA,cAAIE,UAAU,GAAGF,IAAI,CAAC9d,MAAL,GAAc,CAAd,GAAkB8d,IAAI,CAAC,CAAD,CAAtB,GAA4BA,IAAI,CAAC,CAAD,CAAjD;;AAEA,cAAIZ,WAAW,CAACc,UAAD,CAAX,KAA4B,IAAhC,EAAsC;AACpCH,YAAAA,SAAS,CAACE,QAAD,CAAT,GAAsBb,WAAW,CAACc,UAAD,CAAjC;AACD;AACF;;AAED,aAAKP,KAAL,GAAaI,SAAb;AACD;;AAED,UAAI,CAACzf,2DAAA,CAAgB,KAAKqf,KAArB,CAAL,EAAkC;AAChC,aAAKU,kBAAL;AACD,OA1BK,CA2BN;;;AACA,WAAKvf,QAAL,CAAckB,IAAd,CAAmB,aAAnB,EAAmC,KAAKlB,QAAL,CAAckB,IAAd,CAAmB,aAAnB,KAAqCvB,mEAAW,CAAC,CAAD,EAAI,iBAAJ,CAAnF;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,mBAAU;AACR,UAAIkD,KAAK,GAAG,IAAZ;;AAEArD,MAAAA,6CAAC,CAACkC,MAAD,CAAD,CAAUuB,EAAV,CAAa,uBAAb,EAAsC,YAAW;AAC/CJ,QAAAA,KAAK,CAAC0c,kBAAN;AACD,OAFD,EAHQ,CAMR;AACA;AACA;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,8BAAqB;AACnB,UAAIU,SAAJ;AAAA,UAAepd,KAAK,GAAG,IAAvB,CADmB,CAEnB;;;AACArD,MAAAA,kDAAA,CAAO,KAAKqf,KAAZ,EAAmB,UAASY,GAAT,EAAc;AAC/B,YAAIvX,2EAAA,CAAmBuX,GAAnB,CAAJ,EAA6B;AAC3BQ,UAAAA,SAAS,GAAGR,GAAZ;AACD;AACF,OAJD,EAHmB,CASnB;;AACA,UAAI,CAACQ,SAAL,EAAgB,OAVG,CAYnB;;AACA,UAAI,KAAKjB,aAAL,YAA8B,KAAKH,KAAL,CAAWoB,SAAX,EAAsBzX,MAAxD,EAAgE,OAb7C,CAenB;;AACAhJ,MAAAA,kDAAA,CAAO8e,WAAP,EAAoB,UAASmB,GAAT,EAAcS,KAAd,EAAqB;AACvCrd,QAAAA,KAAK,CAAC7C,QAAN,CAAesF,WAAf,CAA2B4a,KAAK,CAAC1B,QAAjC;AACD,OAFD,EAhBmB,CAoBnB;;AACA,WAAKxe,QAAL,CAAckF,QAAd,CAAuB,KAAK2Z,KAAL,CAAWoB,SAAX,EAAsBzB,QAA7C,EArBmB,CAuBnB;;AACA,UAAI,KAAKQ,aAAT,EAAwB,KAAKA,aAAL,CAAmBe,OAAnB;AACxB,WAAKf,aAAL,GAAqB,IAAI,KAAKH,KAAL,CAAWoB,SAAX,EAAsBzX,MAA1B,CAAiC,KAAKxI,QAAtC,EAAgD,EAAhD,CAArB;AACD;AAED;AACF;AACA;AACA;;;;WACE,oBAAW;AACT,WAAKgf,aAAL,CAAmBe,OAAnB;AACAvgB,MAAAA,6CAAC,CAACkC,MAAD,CAAD,CAAUsB,GAAV,CAAc,oBAAd;AACD;;;;EAhH0BvD;;AAmH7B8hB,cAAc,CAACrhB,QAAf,GAA0B,EAA1B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtJA;AAEA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;IAEMuhB;;;;;;;;;;;;;;AACJ;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,oBAAO3hB,OAAP,EAAgBC,OAAhB,EAAyB;AACvB,WAAKC,QAAL,GAAgBR,6CAAC,CAACM,OAAD,CAAjB;AACA,WAAKC,OAAL,GAAeP,oDAAA,CAAS,EAAT,EAAaiiB,gBAAgB,CAACvhB,QAA9B,EAAwC,KAAKF,QAAL,CAAcG,IAAd,EAAxC,EAA8DJ,OAA9D,CAAf;AACA,WAAKK,SAAL,GAAiB,kBAAjB,CAHuB,CAGc;;AAErC,WAAKC,KAAL;;AACA,WAAKuC,OAAL;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,iBAAQ;AACNsF,MAAAA,yEAAA;;AACA,UAAIwZ,QAAQ,GAAG,KAAK1hB,QAAL,CAAcG,IAAd,CAAmB,mBAAnB,CAAf;;AACA,UAAI,CAACuhB,QAAL,EAAe;AACbzd,QAAAA,OAAO,CAACoG,KAAR,CAAc,kEAAd;AACD;;AAED,WAAKsX,WAAL,GAAmBniB,6CAAC,YAAKkiB,QAAL,EAApB;AACA,WAAKE,QAAL,GAAgB,KAAK5hB,QAAL,CAAciB,IAAd,CAAmB,eAAnB,EAAoCwJ,MAApC,CAA2C,YAAW;AACpE,YAAIsG,MAAM,GAAGvR,6CAAC,CAAC,IAAD,CAAD,CAAQW,IAAR,CAAa,QAAb,CAAb;AACA,eAAQ4Q,MAAM,KAAK2Q,QAAX,IAAuB3Q,MAAM,KAAK,EAA1C;AACD,OAHe,CAAhB;AAIA,WAAKhR,OAAL,GAAeP,oDAAA,CAAS,EAAT,EAAa,KAAKO,OAAlB,EAA2B,KAAK4hB,WAAL,CAAiBxhB,IAAjB,EAA3B,CAAf,CAZM,CAcN;;AACA,UAAG,KAAKJ,OAAL,CAAasC,OAAhB,EAAyB;AACvB,YAAIwf,KAAK,GAAG,KAAK9hB,OAAL,CAAasC,OAAb,CAAqBsI,KAArB,CAA2B,GAA3B,CAAZ;AAEA,aAAKmX,WAAL,GAAmBD,KAAK,CAAC,CAAD,CAAxB;AACA,aAAKE,YAAL,GAAoBF,KAAK,CAAC,CAAD,CAAL,IAAY,IAAhC;AACD;;AAED,WAAKG,OAAL;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,mBAAU;AACR,UAAInf,KAAK,GAAG,IAAZ;;AAEA,WAAKof,gBAAL,GAAwB,KAAKD,OAAL,CAAatU,IAAb,CAAkB,IAAlB,CAAxB;AAEAlO,MAAAA,6CAAC,CAACkC,MAAD,CAAD,CAAUuB,EAAV,CAAa,uBAAb,EAAsC,KAAKgf,gBAA3C;AAEA,WAAKL,QAAL,CAAc3e,EAAd,CAAiB,2BAAjB,EAA8C,KAAKif,UAAL,CAAgBxU,IAAhB,CAAqB,IAArB,CAA9C;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,mBAAU;AACR;AACA,UAAI,CAACxF,2EAAA,CAAmB,KAAKnI,OAAL,CAAaoiB,OAAhC,CAAL,EAA+C;AAC7C,aAAKniB,QAAL,CAAcoiB,IAAd;AACA,aAAKT,WAAL,CAAiBrL,IAAjB;AACD,OAHD,CAKA;AALA,WAMK;AACH,aAAKtW,QAAL,CAAcsW,IAAd;AACA,aAAKqL,WAAL,CAAiBS,IAAjB;AACD;AACF;AAED;AACF;AACA;AACA;AACA;;;;WACE,sBAAa;AAAA;;AACX,UAAI,CAACla,2EAAA,CAAmB,KAAKnI,OAAL,CAAaoiB,OAAhC,CAAL,EAA+C;AAC7C;AACN;AACA;AACA;AACM,YAAG,KAAKpiB,OAAL,CAAasC,OAAhB,EAAyB;AACvB,cAAI,KAAKsf,WAAL,CAAiB3d,EAAjB,CAAoB,SAApB,CAAJ,EAAoC;AAClCwd,YAAAA,qEAAA,CAAiB,KAAKG,WAAtB,EAAmC,KAAKG,WAAxC,EAAqD,YAAM;AACzD,oBAAI,CAAC9hB,QAAL,CAAc0C,OAAd,CAAsB,6BAAtB;;AACA,oBAAI,CAACif,WAAL,CAAiB1gB,IAAjB,CAAsB,eAAtB,EAAuC0O,cAAvC,CAAsD,qBAAtD;AACD,aAHD;AAID,WALD,MAMK;AACH6R,YAAAA,sEAAA,CAAkB,KAAKG,WAAvB,EAAoC,KAAKI,YAAzC,EAAuD,YAAM;AAC3D,oBAAI,CAAC/hB,QAAL,CAAc0C,OAAd,CAAsB,6BAAtB;AACD,aAFD;AAGD;AACF,SAZD,MAaK;AACH,eAAKif,WAAL,CAAiBve,MAAjB,CAAwB,CAAxB;AACA,eAAKue,WAAL,CAAiB1gB,IAAjB,CAAsB,eAAtB,EAAuCyB,OAAvC,CAA+C,qBAA/C;AACA,eAAK1C,QAAL,CAAc0C,OAAd,CAAsB,6BAAtB;AACD;AACF;AACF;;;WAED,oBAAW;AACT,WAAK1C,QAAL,CAAcgD,GAAd,CAAkB,sBAAlB;AACA,WAAK4e,QAAL,CAAc5e,GAAd,CAAkB,sBAAlB;AAEAxD,MAAAA,6CAAC,CAACkC,MAAD,CAAD,CAAUsB,GAAV,CAAc,uBAAd,EAAuC,KAAKif,gBAA5C;AACD;;;;EAvH4BxiB;;AA0H/BgiB,gBAAgB,CAACvhB,QAAjB,GAA4B;AAC1B;AACF;AACA;AACA;AACA;AACA;AACEiiB,EAAAA,OAAO,EAAE,QAPiB;;AAS1B;AACF;AACA;AACA;AACA;AACA;AACE9f,EAAAA,OAAO,EAAE;AAfiB,CAA5B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACvIA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IAEMkgB;;;;;;;;;;;;;;AACJ;AACF;AACA;AACA;AACA;AACA;AACA;AACE,oBAAOziB,OAAP,EAAgBC,OAAhB,EAAyB;AACvB,WAAKC,QAAL,GAAgBF,OAAhB;AACA,WAAKC,OAAL,GAAeP,oDAAA,CAAS,EAAT,EAAa+iB,MAAM,CAACriB,QAApB,EAA8B,KAAKF,QAAL,CAAcG,IAAd,EAA9B,EAAoDJ,OAApD,CAAf;AACA,WAAKK,SAAL,GAAiB,QAAjB,CAHuB,CAGI;;AAC3B,WAAKC,KAAL,GAJuB,CAMvB;;;AACAmU,MAAAA,8DAAA,CAAWhV,+CAAX;AACA+U,MAAAA,oEAAA,CAAc/U,+CAAd;AAEAI,MAAAA,wEAAA,CAAkB,QAAlB,EAA4B;AAC1B,kBAAU;AADgB,OAA5B;AAGD;AAED;AACF;AACA;AACA;;;;WACE,iBAAQ;AAAA;;AACNsI,MAAAA,yEAAA;;AACA,WAAKnH,EAAL,GAAU,KAAKf,QAAL,CAAckB,IAAd,CAAmB,IAAnB,CAAV;AACA,WAAKgF,QAAL,GAAgB,KAAhB;AACA,WAAKsc,MAAL,GAAc;AAACC,QAAAA,EAAE,EAAEva,2EAAkBwa;AAAvB,OAAd;AAEA,WAAK7gB,OAAL,GAAerC,6CAAC,wBAAgB,KAAKuB,EAArB,SAAD,CAA8BK,MAA9B,GAAuC5B,6CAAC,wBAAgB,KAAKuB,EAArB,SAAxC,GAAuEvB,6CAAC,0BAAkB,KAAKuB,EAAvB,SAAvF;AACA,WAAKc,OAAL,CAAaX,IAAb,CAAkB;AAChB,yBAAiB,KAAKH,EADN;AAEhB,yBAAiB,QAFD;AAGhB,oBAAY;AAHI,OAAlB;;AAMA,UAAI,KAAKhB,OAAL,CAAa4iB,UAAb,IAA2B,KAAK3iB,QAAL,CAAciC,QAAd,CAAuB,MAAvB,CAA/B,EAA+D;AAC7D,aAAKlC,OAAL,CAAa4iB,UAAb,GAA0B,IAA1B;AACA,aAAK5iB,OAAL,CAAa4Z,OAAb,GAAuB,KAAvB;AACD;;AACD,UAAI,KAAK5Z,OAAL,CAAa4Z,OAAb,IAAwB,CAAC,KAAKG,QAAlC,EAA4C;AAC1C,aAAKA,QAAL,GAAgB,KAAK8I,YAAL,CAAkB,KAAK7hB,EAAvB,CAAhB;AACD;;AAED,WAAKf,QAAL,CAAckB,IAAd,CAAmB;AACf,gBAAQ,QADO;AAEf,uBAAe,IAFA;AAGf,yBAAiB,KAAKH,EAHP;AAIf,uBAAe,KAAKA;AAJL,OAAnB;;AAOA,UAAG,KAAK+Y,QAAR,EAAkB;AAChB,aAAK9Z,QAAL,CAAc+H,MAAd,GAAuBgZ,QAAvB,CAAgC,KAAKjH,QAArC;AACD,OAFD,MAEO;AACL,aAAK9Z,QAAL,CAAc+H,MAAd,GAAuBgZ,QAAvB,CAAgCvhB,6CAAC,CAAC,KAAKO,OAAL,CAAaghB,QAAd,CAAjC;AACA,aAAK/gB,QAAL,CAAckF,QAAd,CAAuB,iBAAvB;AACD;;AACD,WAAKtC,OAAL;;AACA,UAAI,KAAK7C,OAAL,CAAa4C,QAAb,IAAyBjB,MAAM,CAACC,QAAP,CAAgBC,IAAhB,gBAA+B,KAAKb,EAApC,CAA7B,EAAwE;AACtE,aAAK+Z,cAAL,GAAsBpb,8DAAM,CAACF,6CAAC,CAACkC,MAAD,CAAF,EAAY;AAAA,iBAAM,MAAI,CAAC2F,IAAL,EAAN;AAAA,SAAZ,CAA5B;AACD;AACF;AAED;AACF;AACA;AACA;;;;WACE,wBAAe;AACb,UAAIwb,wBAAwB,GAAG,EAA/B;;AAEA,UAAI,KAAK9iB,OAAL,CAAa8iB,wBAAjB,EAA2C;AACzCA,QAAAA,wBAAwB,GAAG,MAAM,KAAK9iB,OAAL,CAAa8iB,wBAA9C;AACD;;AAED,aAAOrjB,6CAAC,CAAC,aAAD,CAAD,CACJ0F,QADI,CACK,mBAAmB2d,wBADxB,EAEJ9B,QAFI,CAEK,KAAKhhB,OAAL,CAAaghB,QAFlB,CAAP;AAGD;AAED;AACF;AACA;AACA;AACA;;;;WACE,2BAAkB;AAChB,UAAI3M,KAAK,GAAG,KAAKpU,QAAL,CAAc8iB,UAAd,EAAZ;AACA,UAAIA,UAAU,GAAGtjB,6CAAC,CAACkC,MAAD,CAAD,CAAU0S,KAAV,EAAjB;AACA,UAAId,MAAM,GAAG,KAAKtT,QAAL,CAAc+iB,WAAd,EAAb;AACA,UAAIA,WAAW,GAAGvjB,6CAAC,CAACkC,MAAD,CAAD,CAAU4R,MAAV,EAAlB;AACA,UAAI0P,IAAJ;AAAA,UAAUzgB,GAAG,GAAG,IAAhB;;AACA,UAAI,KAAKxC,OAAL,CAAayW,OAAb,KAAyB,MAA7B,EAAqC;AACnCwM,QAAAA,IAAI,GAAGhQ,QAAQ,CAAC,CAAC8P,UAAU,GAAG1O,KAAd,IAAuB,CAAxB,EAA2B,EAA3B,CAAf;AACD,OAFD,MAEO;AACL4O,QAAAA,IAAI,GAAGhQ,QAAQ,CAAC,KAAKjT,OAAL,CAAayW,OAAd,EAAuB,EAAvB,CAAf;AACD;;AACD,UAAI,KAAKzW,OAAL,CAAawW,OAAb,KAAyB,MAA7B,EAAqC;AACnC,YAAIjD,MAAM,GAAGyP,WAAb,EAA0B;AACxBxgB,UAAAA,GAAG,GAAGyQ,QAAQ,CAAC/L,IAAI,CAACE,GAAL,CAAS,GAAT,EAAc4b,WAAW,GAAG,EAA5B,CAAD,EAAkC,EAAlC,CAAd;AACD,SAFD,MAEO;AACLxgB,UAAAA,GAAG,GAAGyQ,QAAQ,CAAC,CAAC+P,WAAW,GAAGzP,MAAf,IAAyB,CAA1B,EAA6B,EAA7B,CAAd;AACD;AACF,OAND,MAMO,IAAI,KAAKvT,OAAL,CAAawW,OAAb,KAAyB,IAA7B,EAAmC;AACxChU,QAAAA,GAAG,GAAGyQ,QAAQ,CAAC,KAAKjT,OAAL,CAAawW,OAAd,EAAuB,EAAvB,CAAd;AACD;;AAED,UAAIhU,GAAG,KAAK,IAAZ,EAAkB;AAChB,aAAKvC,QAAL,CAAc0F,GAAd,CAAkB;AAACnD,UAAAA,GAAG,EAAEA,GAAG,GAAG;AAAZ,SAAlB;AACD,OAvBe,CAyBhB;AACA;;;AACA,UAAI,CAAC,KAAKuX,QAAN,IAAmB,KAAK/Z,OAAL,CAAayW,OAAb,KAAyB,MAAhD,EAAyD;AACvD,aAAKxW,QAAL,CAAc0F,GAAd,CAAkB;AAACsd,UAAAA,IAAI,EAAEA,IAAI,GAAG;AAAd,SAAlB;AACA,aAAKhjB,QAAL,CAAc0F,GAAd,CAAkB;AAACud,UAAAA,MAAM,EAAE;AAAT,SAAlB;AACD;AAEF;AAED;AACF;AACA;AACA;;;;WACE,mBAAU;AAAA;;AACR,UAAIpgB,KAAK,GAAG,IAAZ;;AAEA,WAAK7C,QAAL,CAAciD,EAAd,CAAiB;AACf,2BAAmB,KAAKoE,IAAL,CAAUqG,IAAV,CAAe,IAAf,CADJ;AAEf,4BAAoB,wBAAC6N,KAAD,EAAQvb,QAAR,EAAqB;AACvC,cAAKub,KAAK,CAACxK,MAAN,KAAiBlO,KAAK,CAAC7C,QAAN,CAAe,CAAf,CAAlB,IACCR,6CAAC,CAAC+b,KAAK,CAACxK,MAAP,CAAD,CAAgB3J,OAAhB,CAAwB,iBAAxB,EAA2C,CAA3C,MAAkDpH,QADvD,EACkE;AAAE;AAClE,mBAAO,MAAI,CAACsH,KAAL,CAAWwE,KAAX,CAAiB,MAAjB,CAAP;AACD;AACF,SAPc;AAQf,6BAAqB,KAAK1I,MAAL,CAAYsK,IAAZ,CAAiB,IAAjB,CARN;AASf,+BAAuB,6BAAW;AAChC7K,UAAAA,KAAK,CAACqgB,eAAN;AACD;AAXc,OAAjB;;AAcA,UAAI,KAAKnjB,OAAL,CAAauS,YAAb,IAA6B,KAAKvS,OAAL,CAAa4Z,OAA9C,EAAuD;AACrD,aAAKG,QAAL,CAAc9W,GAAd,CAAkB,YAAlB,EAAgCC,EAAhC,CAAmC,mCAAnC,EAAwE,UAASC,CAAT,EAAY;AAClF,cAAIA,CAAC,CAAC6N,MAAF,KAAalO,KAAK,CAAC7C,QAAN,CAAe,CAAf,CAAb,IACFR,sDAAA,CAAWqD,KAAK,CAAC7C,QAAN,CAAe,CAAf,CAAX,EAA8BkD,CAAC,CAAC6N,MAAhC,CADE,IAEA,CAACvR,sDAAA,CAAW8P,QAAX,EAAqBpM,CAAC,CAAC6N,MAAvB,CAFL,EAEqC;AAC/B;AACL;;AACDlO,UAAAA,KAAK,CAACyE,KAAN;AACD,SAPD;AAQD;;AACD,UAAI,KAAKvH,OAAL,CAAa4C,QAAjB,EAA2B;AACzBnD,QAAAA,6CAAC,CAACkC,MAAD,CAAD,CAAUuB,EAAV,gCAAqC,KAAKlC,EAA1C,GAAgD,KAAKoiB,YAAL,CAAkBzV,IAAlB,CAAuB,IAAvB,CAAhD;AACD;AACF;AAED;AACF;AACA;AACA;;;;WACE,sBAAaxK,CAAb,EAAgB;AACd,UAAGxB,MAAM,CAACC,QAAP,CAAgBC,IAAhB,KAA2B,MAAM,KAAKb,EAAtC,IAA6C,CAAC,KAAKmF,QAAtD,EAA+D;AAAE,aAAKmB,IAAL;AAAc,OAA/E,MACI;AAAE,aAAKC,KAAL;AAAe;AACtB;AAED;AACF;AACA;AACA;;;;WACE,wBAAehF,SAAf,EAA0B;AACxBA,MAAAA,SAAS,GAAGA,SAAS,IAAI9C,6CAAC,CAACkC,MAAD,CAAD,CAAUY,SAAV,EAAzB;;AACA,UAAI9C,6CAAC,CAAC8P,QAAD,CAAD,CAAYgE,MAAZ,KAAuB9T,6CAAC,CAACkC,MAAD,CAAD,CAAU4R,MAAV,EAA3B,EAA+C;AAC7C9T,QAAAA,6CAAC,CAAC,MAAD,CAAD,CACGkG,GADH,CACO,KADP,EACc,CAACpD,SADf;AAED;AACF;AAED;AACF;AACA;AACA;;;;WACE,uBAAcA,SAAd,EAAyB;AACvBA,MAAAA,SAAS,GAAGA,SAAS,IAAI0Q,QAAQ,CAACxT,6CAAC,CAAC,MAAD,CAAD,CAAUkG,GAAV,CAAc,KAAd,CAAD,CAAjC;;AACA,UAAIlG,6CAAC,CAAC8P,QAAD,CAAD,CAAYgE,MAAZ,KAAuB9T,6CAAC,CAACkC,MAAD,CAAD,CAAU4R,MAAV,EAA3B,EAA+C;AAC7C9T,QAAAA,6CAAC,CAAC,MAAD,CAAD,CACGkG,GADH,CACO,KADP,EACc,EADd;AAEAlG,QAAAA,6CAAC,CAACkC,MAAD,CAAD,CAAUY,SAAV,CAAoB,CAACA,SAArB;AACD;AACF;AAGD;AACF;AACA;AACA;AACA;AACA;;;;WACE,gBAAO;AAAA;;AACL;AACA,UAAMV,IAAI,cAAO,KAAKb,EAAZ,CAAV;;AACA,UAAI,KAAKhB,OAAL,CAAa4C,QAAb,IAAyBjB,MAAM,CAACC,QAAP,CAAgBC,IAAhB,KAAyBA,IAAtD,EAA4D;AAE1D,YAAIF,MAAM,CAAC4C,OAAP,CAAeC,SAAnB,EAA8B;AAC5B,cAAI,KAAKxE,OAAL,CAAasE,aAAjB,EAAgC;AAC9B3C,YAAAA,MAAM,CAAC4C,OAAP,CAAeC,SAAf,CAAyB,EAAzB,EAA6B,EAA7B,EAAiC3C,IAAjC;AACD,WAFD,MAEO;AACLF,YAAAA,MAAM,CAAC4C,OAAP,CAAeE,YAAf,CAA4B,EAA5B,EAAgC,EAAhC,EAAoC5C,IAApC;AACD;AACF,SAND,MAMO;AACLF,UAAAA,MAAM,CAACC,QAAP,CAAgBC,IAAhB,GAAuBA,IAAvB;AACD;AACF,OAdI,CAgBL;;;AACA,WAAKwhB,aAAL,GAAqB5jB,6CAAC,CAAC8P,QAAQ,CAAC+T,aAAV,CAAD,CAA0Brf,EAA1B,CAA6B,KAAKnC,OAAlC,IAA6CrC,6CAAC,CAAC8P,QAAQ,CAAC+T,aAAV,CAA9C,GAAyE,KAAKxhB,OAAnG;AAEA,WAAKqE,QAAL,GAAgB,IAAhB,CAnBK,CAqBL;;AACA,WAAKlG,QAAL,CACK0F,GADL,CACS;AAAE,sBAAc;AAAhB,OADT,EAEK0c,IAFL,GAGK9f,SAHL,CAGe,CAHf;;AAIA,UAAI,KAAKvC,OAAL,CAAa4Z,OAAjB,EAA0B;AACxB,aAAKG,QAAL,CAAcpU,GAAd,CAAkB;AAAC,wBAAc;AAAf,SAAlB,EAA4C0c,IAA5C;AACD;;AAED,WAAKc,eAAL;;AAEA,WAAKljB,QAAL,CACGsW,IADH,GAEG5Q,GAFH,CAEO;AAAE,sBAAc;AAAhB,OAFP;;AAIA,UAAG,KAAKoU,QAAR,EAAkB;AAChB,aAAKA,QAAL,CAAcpU,GAAd,CAAkB;AAAC,wBAAc;AAAf,SAAlB,EAAsC4Q,IAAtC;;AACA,YAAG,KAAKtW,QAAL,CAAciC,QAAd,CAAuB,MAAvB,CAAH,EAAmC;AACjC,eAAK6X,QAAL,CAAc5U,QAAd,CAAuB,MAAvB;AACD,SAFD,MAEO,IAAI,KAAKlF,QAAL,CAAciC,QAAd,CAAuB,MAAvB,CAAJ,EAAoC;AACzC,eAAK6X,QAAL,CAAc5U,QAAd,CAAuB,MAAvB;AACD;AACF;;AAGD,UAAI,CAAC,KAAKnF,OAAL,CAAaujB,cAAlB,EAAkC;AAChC;AACN;AACA;AACA;AACA;AACM,aAAKtjB,QAAL,CAAc0C,OAAd,CAAsB,mBAAtB,EAA2C,KAAK3B,EAAhD;AACD;;AAED,UAAIvB,6CAAC,CAAC,iBAAD,CAAD,CAAqB4B,MAArB,KAAgC,CAApC,EAAuC;AACrC,aAAKmiB,cAAL;AACD;;AAED,UAAI1gB,KAAK,GAAG,IAAZ,CA3DK,CA6DL;;;AACA,UAAI,KAAK9C,OAAL,CAAa+hB,WAAjB,EAA8B;AAAA,YACnB0B,cADmB,GAC5B,SAASA,cAAT,GAAyB;AACvB3gB,UAAAA,KAAK,CAAC7C,QAAN,CACGkB,IADH,CACQ;AACJ,2BAAe,KADX;AAEJ,wBAAY,CAAC;AAFT,WADR,EAKGsC,KALH;;AAMAX,UAAAA,KAAK,CAAC4gB,iBAAN;;AACA7jB,UAAAA,yEAAA,CAAmBiD,KAAK,CAAC7C,QAAzB;AACD,SAV2B;;AAW5B,YAAI,KAAKD,OAAL,CAAa4Z,OAAjB,EAA0B;AACxB6H,UAAAA,qEAAA,CAAiB,KAAK1H,QAAtB,EAAgC,SAAhC;AACD;;AACD0H,QAAAA,qEAAA,CAAiB,KAAKxhB,QAAtB,EAAgC,KAAKD,OAAL,CAAa+hB,WAA7C,EAA0D,YAAM;AAC9D,cAAG,MAAI,CAAC9hB,QAAR,EAAkB;AAAE;AAClB,kBAAI,CAAC0jB,iBAAL,GAAyB9jB,6EAAA,CAAuB,MAAI,CAACI,QAA5B,CAAzB;AACAwjB,YAAAA,cAAc;AACf;AACF,SALD;AAMD,OApBD,CAqBA;AArBA,WAsBK;AACH,YAAI,KAAKzjB,OAAL,CAAa4Z,OAAjB,EAA0B;AACxB,eAAKG,QAAL,CAAcsI,IAAd,CAAmB,CAAnB;AACD;;AACD,aAAKpiB,QAAL,CAAcoiB,IAAd,CAAmB,KAAKriB,OAAL,CAAa4jB,SAAhC;AACD,OAzFI,CA2FL;;;AACA,WAAK3jB,QAAL,CACGkB,IADH,CACQ;AACJ,uBAAe,KADX;AAEJ,oBAAY,CAAC;AAFT,OADR,EAKGsC,KALH;AAMA5D,MAAAA,yEAAA,CAAmB,KAAKI,QAAxB;;AAEA,WAAKyjB,iBAAL;;AAEA,WAAKG,mBAAL;AAEA;AACJ;AACA;AACA;;;AACI,WAAK5jB,QAAL,CAAc0C,OAAd,CAAsB,gBAAtB;AACD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,6BAAoB;AAClB,UAAMmhB,oBAAoB,GAAG,SAAvBA,oBAAuB,GAAM;AACjCrkB,QAAAA,6CAAC,CAAC,MAAD,CAAD,CAAUskB,WAAV,CAAsB,eAAtB,EAAuC,CAAC,EAAEtkB,6CAAC,CAAC8P,QAAD,CAAD,CAAYgE,MAAZ,KAAuB9T,6CAAC,CAACkC,MAAD,CAAD,CAAU4R,MAAV,EAAzB,CAAxC;AACD,OAFD;;AAIA,WAAKtT,QAAL,CAAciD,EAAd,CAAiB,6CAAjB,EAAgE;AAAA,eAAM4gB,oBAAoB,EAA1B;AAAA,OAAhE;AACAA,MAAAA,oBAAoB;AACpBrkB,MAAAA,6CAAC,CAAC,MAAD,CAAD,CAAU0F,QAAV,CAAmB,gBAAnB;AACD;AAED;AACF;AACA;AACA;;;;WACE,gCAAuB;AACrB,WAAKlF,QAAL,CAAcgD,GAAd,CAAkB,6CAAlB;AACAxD,MAAAA,6CAAC,CAAC,MAAD,CAAD,CAAU8F,WAAV,CAAsB,gBAAtB;AACA9F,MAAAA,6CAAC,CAAC,MAAD,CAAD,CAAU8F,WAAV,CAAsB,eAAtB;AACD;AAED;AACF;AACA;AACA;;;;WACE,+BAAsB;AACpB,UAAIzC,KAAK,GAAG,IAAZ;;AACA,UAAG,CAAC,KAAK7C,QAAT,EAAmB;AAAE;AAAS,OAFV,CAEW;;;AAC/B,WAAK0jB,iBAAL,GAAyB9jB,6EAAA,CAAuB,KAAKI,QAA5B,CAAzB;;AAEA,UAAI,CAAC,KAAKD,OAAL,CAAa4Z,OAAd,IAAyB,KAAK5Z,OAAL,CAAauS,YAAtC,IAAsD,CAAC,KAAKvS,OAAL,CAAa4iB,UAAxE,EAAoF;AAClFnjB,QAAAA,6CAAC,CAAC,MAAD,CAAD,CAAUyD,EAAV,CAAa,mCAAb,EAAkD,UAASC,CAAT,EAAY;AAC5D,cAAIA,CAAC,CAAC6N,MAAF,KAAalO,KAAK,CAAC7C,QAAN,CAAe,CAAf,CAAb,IACFR,sDAAA,CAAWqD,KAAK,CAAC7C,QAAN,CAAe,CAAf,CAAX,EAA8BkD,CAAC,CAAC6N,MAAhC,CADE,IAEA,CAACvR,sDAAA,CAAW8P,QAAX,EAAqBpM,CAAC,CAAC6N,MAAvB,CAFL,EAEqC;AAAE;AAAS;;AAChDlO,UAAAA,KAAK,CAACyE,KAAN;AACD,SALD;AAMD;;AAED,UAAI,KAAKvH,OAAL,CAAagkB,UAAjB,EAA6B;AAC3BvkB,QAAAA,6CAAC,CAACkC,MAAD,CAAD,CAAUuB,EAAV,CAAa,mBAAb,EAAkC,UAASC,CAAT,EAAY;AAC5CtD,UAAAA,yEAAA,CAAmBsD,CAAnB,EAAsB,QAAtB,EAAgC;AAC9BoE,YAAAA,KAAK,EAAE,iBAAW;AAChB,kBAAIzE,KAAK,CAAC9C,OAAN,CAAcgkB,UAAlB,EAA8B;AAC5BlhB,gBAAAA,KAAK,CAACyE,KAAN;AACD;AACF;AAL6B,WAAhC;AAOD,SARD;AASD;AACF;AAED;AACF;AACA;AACA;AACA;;;;WACE,iBAAQ;AACN,UAAI,CAAC,KAAKpB,QAAN,IAAkB,CAAC,KAAKlG,QAAL,CAAcgE,EAAd,CAAiB,UAAjB,CAAvB,EAAqD;AACnD,eAAO,KAAP;AACD;;AACD,UAAInB,KAAK,GAAG,IAAZ,CAJM,CAMN;;;AACA,UAAI,KAAK9C,OAAL,CAAagiB,YAAjB,EAA+B;AAC7B,YAAI,KAAKhiB,OAAL,CAAa4Z,OAAjB,EAA0B;AACxB6H,UAAAA,sEAAA,CAAkB,KAAK1H,QAAvB,EAAiC,UAAjC;AACD;;AAED0H,QAAAA,sEAAA,CAAkB,KAAKxhB,QAAvB,EAAiC,KAAKD,OAAL,CAAagiB,YAA9C,EAA4DiC,QAA5D;AACD,OAND,CAOA;AAPA,WAQK;AACH,aAAKhkB,QAAL,CAAcsW,IAAd,CAAmB,KAAKvW,OAAL,CAAakkB,SAAhC;;AAEA,YAAI,KAAKlkB,OAAL,CAAa4Z,OAAjB,EAA0B;AACxB,eAAKG,QAAL,CAAcxD,IAAd,CAAmB,CAAnB,EAAsB0N,QAAtB;AACD,SAFD,MAGK;AACHA,UAAAA,QAAQ;AACT;AACF,OAxBK,CA0BN;;;AACA,UAAI,KAAKjkB,OAAL,CAAagkB,UAAjB,EAA6B;AAC3BvkB,QAAAA,6CAAC,CAACkC,MAAD,CAAD,CAAUsB,GAAV,CAAc,mBAAd;AACD;;AAED,UAAI,CAAC,KAAKjD,OAAL,CAAa4Z,OAAd,IAAyB,KAAK5Z,OAAL,CAAauS,YAA1C,EAAwD;AACtD9S,QAAAA,6CAAC,CAAC,MAAD,CAAD,CAAUwD,GAAV,CAAc,mCAAd;AACD;;AAED,WAAKhD,QAAL,CAAcgD,GAAd,CAAkB,mBAAlB;;AAEA,eAASghB,QAAT,GAAoB;AAElB;AACA;AACA;AACA,YAAI1hB,SAAS,GAAG0Q,QAAQ,CAACxT,6CAAC,CAAC,MAAD,CAAD,CAAUkG,GAAV,CAAc,KAAd,CAAD,CAAxB;;AAEA,YAAIlG,6CAAC,CAAC,iBAAD,CAAD,CAAqB4B,MAArB,KAAiC,CAArC,EAAwC;AACtCyB,UAAAA,KAAK,CAACqhB,oBAAN,GADsC,CACR;;AAC/B;;AAEDtkB,QAAAA,4EAAA,CAAsBiD,KAAK,CAAC7C,QAA5B;;AAEA6C,QAAAA,KAAK,CAAC7C,QAAN,CAAekB,IAAf,CAAoB,aAApB,EAAmC,IAAnC;;AAEA,YAAI1B,6CAAC,CAAC,iBAAD,CAAD,CAAqB4B,MAArB,KAAiC,CAArC,EAAwC;AACtCyB,UAAAA,KAAK,CAACshB,aAAN,CAAoB7hB,SAApB;AACD;AAED;AACN;AACA;AACA;;;AACMO,QAAAA,KAAK,CAAC7C,QAAN,CAAe0C,OAAf,CAAuB,kBAAvB;AACD;AAED;AACJ;AACA;AACA;;;AACI,UAAI,KAAK3C,OAAL,CAAaqkB,YAAjB,EAA+B;AAC7B,aAAKpkB,QAAL,CAAcqkB,IAAd,CAAmB,KAAKrkB,QAAL,CAAcqkB,IAAd,EAAnB;AACD;;AAED,WAAKne,QAAL,GAAgB,KAAhB,CAvEM,CAwEN;;AACA,UAAIrD,KAAK,CAAC9C,OAAN,CAAc4C,QAAd,IAA0BjB,MAAM,CAACC,QAAP,CAAgBC,IAAhB,gBAA6B,KAAKb,EAAlC,CAA9B,EAAsE;AACpE;AACA,YAAIW,MAAM,CAAC4C,OAAP,CAAeE,YAAnB,EAAiC;AAC/B,cAAM8f,cAAc,GAAG5iB,MAAM,CAACC,QAAP,CAAgB4iB,QAAhB,GAA2B7iB,MAAM,CAACC,QAAP,CAAgB6iB,MAAlE;;AACA,cAAI,KAAKzkB,OAAL,CAAasE,aAAjB,EAAgC;AAC9B3C,YAAAA,MAAM,CAAC4C,OAAP,CAAeC,SAAf,CAAyB,EAAzB,EAA6B,EAA7B,EAAiC+f,cAAjC,EAD8B,CACoB;AACnD,WAFD,MAEO;AACL5iB,YAAAA,MAAM,CAAC4C,OAAP,CAAeE,YAAf,CAA4B,EAA5B,EAAgC8K,QAAQ,CAACmV,KAAzC,EAAgDH,cAAhD;AACD;AACF,SAPD,MAOO;AACL5iB,UAAAA,MAAM,CAACC,QAAP,CAAgBC,IAAhB,GAAuB,EAAvB;AACD;AACF;;AAED,WAAKwhB,aAAL,CAAmB5f,KAAnB;AACD;AAED;AACF;AACA;AACA;;;;WACE,kBAAS;AACP,UAAI,KAAK0C,QAAT,EAAmB;AACjB,aAAKoB,KAAL;AACD,OAFD,MAEO;AACL,aAAKD,IAAL;AACD;AACF;;;;AAED;AACF;AACA;AACA;AACE,wBAAW;AACT,UAAI,KAAKtH,OAAL,CAAa4Z,OAAjB,EAA0B;AACxB,aAAK3Z,QAAL,CAAc+gB,QAAd,CAAuBvhB,6CAAC,CAAC,KAAKO,OAAL,CAAaghB,QAAd,CAAxB,EADwB,CAC0B;;AAClD,aAAKjH,QAAL,CAAcxD,IAAd,GAAqBtT,GAArB,GAA2BgF,MAA3B;AACD;;AACD,WAAKhI,QAAL,CAAcsW,IAAd,GAAqBtT,GAArB;AACA,WAAKnB,OAAL,CAAamB,GAAb,CAAiB,KAAjB;AACAxD,MAAAA,6CAAC,CAACkC,MAAD,CAAD,CAAUsB,GAAV,sBAA4B,KAAKjC,EAAjC;AACA,UAAI,KAAK+Z,cAAT,EAAyBtb,6CAAC,CAACkC,MAAD,CAAD,CAAUsB,GAAV,CAAc,KAAK8X,cAAnB;;AAEzB,UAAItb,6CAAC,CAAC,iBAAD,CAAD,CAAqB4B,MAArB,KAAiC,CAArC,EAAwC;AACtC,aAAK8iB,oBAAL,GADsC,CACT;;AAC9B;AACF;;;;EAhfkBzkB;;AAmfrB8iB,MAAM,CAACriB,QAAP,GAAkB;AAChB;AACF;AACA;AACA;AACA;AACA;AACE4hB,EAAAA,WAAW,EAAE,EAPG;;AAQhB;AACF;AACA;AACA;AACA;AACA;AACEC,EAAAA,YAAY,EAAE,EAdE;;AAehB;AACF;AACA;AACA;AACA;AACA;AACE4B,EAAAA,SAAS,EAAE,CArBK;;AAsBhB;AACF;AACA;AACA;AACA;AACA;AACEM,EAAAA,SAAS,EAAE,CA5BK;;AA6BhB;AACF;AACA;AACA;AACA;AACA;AACE3R,EAAAA,YAAY,EAAE,IAnCE;;AAoChB;AACF;AACA;AACA;AACA;AACA;AACEyR,EAAAA,UAAU,EAAE,IA1CI;;AA2ChB;AACF;AACA;AACA;AACA;AACA;AACET,EAAAA,cAAc,EAAE,KAjDA;;AAkDhB;AACF;AACA;AACA;AACA;AACA;AACE/M,EAAAA,OAAO,EAAE,MAxDO;;AAyDhB;AACF;AACA;AACA;AACA;AACA;AACEC,EAAAA,OAAO,EAAE,MA/DO;;AAgEhB;AACF;AACA;AACA;AACA;AACA;AACEmM,EAAAA,UAAU,EAAE,KAtEI;;AAuEhB;AACF;AACA;AACA;AACA;AACA;AACEhJ,EAAAA,OAAO,EAAE,IA7EO;;AA8EhB;AACF;AACA;AACA;AACA;AACA;AACEyK,EAAAA,YAAY,EAAE,KApFE;;AAqFhB;AACF;AACA;AACA;AACA;AACA;AACA;AACEzhB,EAAAA,QAAQ,EAAE,KA5FM;;AA6FhB;AACF;AACA;AACA;AACA;AACE0B,EAAAA,aAAa,EAAE,KAlGC;;AAmGd;AACJ;AACA;AACA;AACA;AACA;AACE0c,EAAAA,QAAQ,EAAE,MAzGM;;AA0GhB;AACF;AACA;AACA;AACA;AACA;AACE8B,EAAAA,wBAAwB,EAAE;AAhHV,CAAlB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACtgBA;AACA;AACA;AAEA;AACA;AACA;AACA;;IACM6B;;;;;;;;;;;;;;AACJ;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACI,oBAAO5kB,OAAP,EAAgBC,OAAhB,EAAyB;AACrB,WAAKC,QAAL,GAAgBF,OAAhB;AACA,WAAKC,OAAL,GAAeP,oDAAA,CAAS,EAAT,EAAaklB,YAAY,CAACxkB,QAA1B,EAAoC,KAAKF,QAAL,CAAcG,IAAd,EAApC,EAA0DJ,OAA1D,CAAf;AACA,WAAKK,SAAL,GAAiB,cAAjB,CAHqB,CAGY;;AAEjC,WAAKC,KAAL;AACH;AAED;AACJ;AACA;AACA;;;;WACI,iBAAQ;AACJ,UAAMU,EAAE,GAAG,KAAKf,QAAL,CAAc,CAAd,EAAiBe,EAAjB,IAAuBpB,mEAAW,CAAC,CAAD,EAAI,eAAJ,CAA7C;AACA,WAAKK,QAAL,CAAckB,IAAd,CAAmB;AAAEH,QAAAA,EAAE,EAAFA;AAAF,OAAnB;;AAEA,WAAK6B,OAAL;AACH;AAED;AACJ;AACA;AACA;;;;WACI,mBAAU;AACN,WAAK+hB,kBAAL,GAA0B,KAAKC,gBAAL,CAAsBlX,IAAtB,CAA2B,IAA3B,CAA1B;AACA,WAAK1N,QAAL,CAAciD,EAAd,CAAiB,uBAAjB,EAA0C,KAAK0hB,kBAA/C;AACA,WAAK3kB,QAAL,CAAciD,EAAd,CAAiB,uBAAjB,EAA0C,cAA1C,EAA0D,KAAK0hB,kBAA/D;AACH;AAED;AACJ;AACA;AACA;AACA;AACA;;;;WACI,0BAAiBzhB,CAAjB,EAAoB;AAAA;;AAChB;AACA,UAAI,CAAC1D,6CAAC,CAAC0D,CAAC,CAAC2N,aAAH,CAAD,CAAmB7M,EAAnB,CAAsB,cAAtB,CAAL,EAA4C;AAE5C,UAAM6gB,OAAO,GAAG3hB,CAAC,CAAC2N,aAAF,CAAgBiU,YAAhB,CAA6B,MAA7B,CAAhB;AAEA,WAAKC,aAAL,GAAqB,IAArB;AAEAL,MAAAA,YAAY,CAACM,WAAb,CAAyBH,OAAzB,EAAkC,KAAK9kB,OAAvC,EAAgD,YAAM;AAClD,aAAI,CAACglB,aAAL,GAAqB,KAArB;AACH,OAFD;AAIA7hB,MAAAA,CAAC,CAACC,cAAF;AACH;;;;AA8BD;AACJ;AACA;AACA;AACI,wBAAW;AACP,WAAKnD,QAAL,CAAcgD,GAAd,CAAkB,uBAAlB,EAA2C,KAAK2hB,kBAAhD;AACA,WAAK3kB,QAAL,CAAcgD,GAAd,CAAkB,uBAAlB,EAA2C,cAA3C,EAA2D,KAAK2hB,kBAAhE;AACH;;;;AAnCD;AACJ;AACA;AACA;AACA;AACA;AACA;AACA;AACI,yBAAmBM,GAAnB,EAAmE;AAAA,UAA3CllB,OAA2C,uEAAjC2kB,YAAY,CAACxkB,QAAoB;AAAA,UAAVkN,QAAU;AAC/D,UAAM8X,IAAI,GAAG1lB,6CAAC,CAACylB,GAAD,CAAd,CAD+D,CAG/D;;AACA,UAAI,CAACC,IAAI,CAAC9jB,MAAV,EAAkB,OAAO,KAAP;AAElB,UAAI2R,SAAS,GAAG9L,IAAI,CAACke,KAAL,CAAWD,IAAI,CAAC9iB,MAAL,GAAcG,GAAd,GAAoBxC,OAAO,CAACqlB,SAAR,GAAoB,CAAxC,GAA4CrlB,OAAO,CAACqC,MAA/D,CAAhB;AAEA5C,MAAAA,6CAAC,CAAC,YAAD,CAAD,CAAgBiG,IAAhB,CAAqB,IAArB,EAA2BpD,OAA3B,CACI;AAAEC,QAAAA,SAAS,EAAEyQ;AAAb,OADJ,EAEIhT,OAAO,CAACmT,iBAFZ,EAGInT,OAAO,CAACoT,eAHZ,EAII,YAAM;AACF,YAAI,OAAO/F,QAAP,KAAoB,UAAxB,EAAmC;AAC/BA,UAAAA,QAAQ;AACX;AACJ,OARL;AAUH;;;;EArFsB3N;AAiG3B;AACA;AACA;;;AACAilB,YAAY,CAACxkB,QAAb,GAAwB;AACtB;AACF;AACA;AACA;AACA;AACA;AACEgT,EAAAA,iBAAiB,EAAE,GAPG;;AAQtB;AACF;AACA;AACA;AACA;AACA;AACA;AACEC,EAAAA,eAAe,EAAE,QAfK;;AAgBtB;AACF;AACA;AACA;AACA;AACA;AACEiS,EAAAA,SAAS,EAAE,EAtBW;;AAuBtB;AACF;AACA;AACA;AACA;AACA;AACEhjB,EAAAA,MAAM,EAAE;AA7Bc,CAAxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC5GA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;IAEMijB;;;;;;;;;;;;;;AACJ;AACF;AACA;AACA;AACA;AACA;AACA;AACE,oBAAOvlB,OAAP,EAAgBC,OAAhB,EAAyB;AACvB,WAAKC,QAAL,GAAgBF,OAAhB;AACA,WAAKC,OAAL,GAAeP,oDAAA,CAAS,EAAT,EAAa6lB,MAAM,CAACnlB,QAApB,EAA8B,KAAKF,QAAL,CAAcG,IAAd,EAA9B,EAAoDJ,OAApD,CAAf;AACA,WAAKK,SAAL,GAAiB,QAAjB,CAHuB,CAGI;AAE3B;;AACAmU,MAAAA,oEAAA,CAAc/U,+CAAd;;AAEA,WAAKa,KAAL;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,iBAAQ;AACN6H,MAAAA,yEAAA;;AAEA,UAAI6M,OAAO,GAAG,KAAK/U,QAAL,CAAcgC,MAAd,CAAqB,yBAArB,CAAd;AAAA,UACIjB,EAAE,GAAG,KAAKf,QAAL,CAAc,CAAd,EAAiBe,EAAjB,IAAuBpB,mEAAW,CAAC,CAAD,EAAI,QAAJ,CAD3C;AAAA,UAEIkD,KAAK,GAAG,IAFZ;;AAIA,UAAGkS,OAAO,CAAC3T,MAAX,EAAkB;AAChB,aAAKkkB,UAAL,GAAkBvQ,OAAlB;AACD,OAFD,MAEO;AACL,aAAKwQ,UAAL,GAAkB,IAAlB;AACA,aAAKvlB,QAAL,CAAcsG,IAAd,CAAmB,KAAKvG,OAAL,CAAaylB,SAAhC;AACA,aAAKF,UAAL,GAAkB,KAAKtlB,QAAL,CAAcgC,MAAd,EAAlB;AACD;;AACD,WAAKsjB,UAAL,CAAgBpgB,QAAhB,CAAyB,KAAKnF,OAAL,CAAa0lB,cAAtC;AAEA,WAAKzlB,QAAL,CAAckF,QAAd,CAAuB,KAAKnF,OAAL,CAAa2lB,WAApC,EAAiDxkB,IAAjD,CAAsD;AAAE,uBAAeH,EAAjB;AAAqB,uBAAeA;AAApC,OAAtD;;AACA,UAAI,KAAKhB,OAAL,CAAa0B,MAAb,KAAwB,EAA5B,EAAgC;AAC5BjC,QAAAA,6CAAC,CAAC,MAAMqD,KAAK,CAAC9C,OAAN,CAAc0B,MAArB,CAAD,CAA8BP,IAA9B,CAAmC;AAAE,yBAAeH;AAAjB,SAAnC;AACH;;AAED,WAAK4kB,WAAL,GAAmB,KAAK5lB,OAAL,CAAa6lB,UAAhC;AACA,WAAKC,OAAL,GAAe,KAAf;AACA,WAAK/K,cAAL,GAAsBpb,8DAAM,CAACF,6CAAC,CAACkC,MAAD,CAAF,EAAY,YAAY;AAClD;AACAmB,QAAAA,KAAK,CAACijB,eAAN,GAAwBjjB,KAAK,CAAC7C,QAAN,CAAe0F,GAAf,CAAmB,SAAnB,KAAiC,MAAjC,GAA0C,CAA1C,GAA8C7C,KAAK,CAAC7C,QAAN,CAAe,CAAf,EAAkBmU,qBAAlB,GAA0Cb,MAAhH;;AACAzQ,QAAAA,KAAK,CAACyiB,UAAN,CAAiB5f,GAAjB,CAAqB,QAArB,EAA+B7C,KAAK,CAACijB,eAArC;;AACAjjB,QAAAA,KAAK,CAACkjB,UAAN,GAAmBljB,KAAK,CAACijB,eAAzB;;AACA,YAAIjjB,KAAK,CAAC9C,OAAN,CAAc0B,MAAd,KAAyB,EAA7B,EAAiC;AAC/BoB,UAAAA,KAAK,CAAChB,OAAN,GAAgBrC,6CAAC,CAAC,MAAMqD,KAAK,CAAC9C,OAAN,CAAc0B,MAArB,CAAjB;AACD,SAFD,MAEO;AACLoB,UAAAA,KAAK,CAACmjB,YAAN;AACD;;AAEDnjB,QAAAA,KAAK,CAACojB,SAAN,CAAgB,YAAY;AAC1B,cAAIC,MAAM,GAAGxkB,MAAM,CAACykB,WAApB;;AACAtjB,UAAAA,KAAK,CAACujB,KAAN,CAAY,KAAZ,EAAmBF,MAAnB,EAF0B,CAG1B;;;AACA,cAAI,CAACrjB,KAAK,CAACgjB,OAAX,EAAoB;AAClBhjB,YAAAA,KAAK,CAACwjB,aAAN,CAAqBH,MAAM,IAAIrjB,KAAK,CAACyjB,QAAjB,GAA6B,KAA7B,GAAqC,IAAzD;AACD;AACF,SAPD;;AAQAzjB,QAAAA,KAAK,CAACD,OAAN,CAAc7B,EAAE,CAAC4J,KAAH,CAAS,GAAT,EAAc4b,OAAd,GAAwBtL,IAAxB,CAA6B,GAA7B,CAAd;AACD,OApB2B,CAA5B;AAqBD;AAED;AACF;AACA;AACA;AACA;;;;WACE,wBAAe;AACb,UAAI1Y,GAAG,GAAG,KAAKxC,OAAL,CAAaymB,SAAb,IAA0B,EAA1B,GAA+B,CAA/B,GAAmC,KAAKzmB,OAAL,CAAaymB,SAA1D;AAAA,UACIC,GAAG,GAAG,KAAK1mB,OAAL,CAAa2mB,SAAb,IAAyB,EAAzB,GAA8BpX,QAAQ,CAACqX,eAAT,CAAyB3K,YAAvD,GAAsE,KAAKjc,OAAL,CAAa2mB,SAD7F;AAAA,UAEIE,GAAG,GAAG,CAACrkB,GAAD,EAAMkkB,GAAN,CAFV;AAAA,UAGII,MAAM,GAAG,EAHb;;AAIA,WAAK,IAAI9f,CAAC,GAAG,CAAR,EAAW+f,GAAG,GAAGF,GAAG,CAACxlB,MAA1B,EAAkC2F,CAAC,GAAG+f,GAAJ,IAAWF,GAAG,CAAC7f,CAAD,CAAhD,EAAqDA,CAAC,EAAtD,EAA0D;AACxD,YAAIggB,EAAJ;;AACA,YAAI,OAAOH,GAAG,CAAC7f,CAAD,CAAV,KAAkB,QAAtB,EAAgC;AAC9BggB,UAAAA,EAAE,GAAGH,GAAG,CAAC7f,CAAD,CAAR;AACD,SAFD,MAEO;AACL,cAAIigB,KAAK,GAAGJ,GAAG,CAAC7f,CAAD,CAAH,CAAO4D,KAAP,CAAa,GAAb,CAAZ;AAAA,cACIlJ,MAAM,GAAGjC,6CAAC,YAAKwnB,KAAK,CAAC,CAAD,CAAV,EADd;AAGAD,UAAAA,EAAE,GAAGtlB,MAAM,CAACW,MAAP,GAAgBG,GAArB;;AACA,cAAIykB,KAAK,CAAC,CAAD,CAAL,IAAYA,KAAK,CAAC,CAAD,CAAL,CAAShe,WAAT,OAA2B,QAA3C,EAAqD;AACnD+d,YAAAA,EAAE,IAAItlB,MAAM,CAAC,CAAD,CAAN,CAAU0S,qBAAV,GAAkCb,MAAxC;AACD;AACF;;AACDuT,QAAAA,MAAM,CAAC9f,CAAD,CAAN,GAAYggB,EAAZ;AACD;;AAGD,WAAKE,MAAL,GAAcJ,MAAd;AACA;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,iBAAQ9lB,EAAR,EAAY;AACV,UAAI8B,KAAK,GAAG,IAAZ;AAAA,UACIqkB,cAAc,GAAG,KAAKA,cAAL,uBAAmCnmB,EAAnC,CADrB;;AAEA,UAAI,KAAKomB,IAAT,EAAe;AAAE;AAAS;;AAC1B,UAAI,KAAKC,QAAT,EAAmB;AACjB,aAAKD,IAAL,GAAY,IAAZ;AACA3nB,QAAAA,6CAAC,CAACkC,MAAD,CAAD,CAAUsB,GAAV,CAAckkB,cAAd,EACUjkB,EADV,CACaikB,cADb,EAC6B,UAAShkB,CAAT,EAAY;AAC9B,cAAIL,KAAK,CAAC8iB,WAAN,KAAsB,CAA1B,EAA6B;AAC3B9iB,YAAAA,KAAK,CAAC8iB,WAAN,GAAoB9iB,KAAK,CAAC9C,OAAN,CAAc6lB,UAAlC;;AACA/iB,YAAAA,KAAK,CAACojB,SAAN,CAAgB,YAAW;AACzBpjB,cAAAA,KAAK,CAACujB,KAAN,CAAY,KAAZ,EAAmB1kB,MAAM,CAACykB,WAA1B;AACD,aAFD;AAGD,WALD,MAKO;AACLtjB,YAAAA,KAAK,CAAC8iB,WAAN;;AACA9iB,YAAAA,KAAK,CAACujB,KAAN,CAAY,KAAZ,EAAmB1kB,MAAM,CAACykB,WAA1B;AACD;AACH,SAXT;AAYD;;AAED,WAAKnmB,QAAL,CAAcgD,GAAd,CAAkB,qBAAlB,EACcC,EADd,CACiB,qBADjB,EACwC,UAASC,CAAT,EAAYtC,EAAZ,EAAgB;AACxCiC,QAAAA,KAAK,CAACwkB,cAAN,CAAqBtmB,EAArB;AACf,OAHD;AAKA,WAAKf,QAAL,CAAciD,EAAd,CAAiB,qBAAjB,EAAwC,UAAUC,CAAV,EAAatC,EAAb,EAAiB;AACrDiC,QAAAA,KAAK,CAACwkB,cAAN,CAAqBtmB,EAArB;AACH,OAFD;;AAIA,UAAG,KAAKc,OAAR,EAAiB;AACf,aAAKA,OAAL,CAAaoB,EAAb,CAAgB,qBAAhB,EAAuC,UAAUC,CAAV,EAAatC,EAAb,EAAiB;AACpDiC,UAAAA,KAAK,CAACwkB,cAAN,CAAqBtmB,EAArB;AACH,SAFD;AAGD;AACF;AAED;AACF;AACA;AACA;AACA;;;;WACE,wBAAeA,EAAf,EAAmB;AACd,UAAI8B,KAAK,GAAG,IAAZ;AAAA,UACCqkB,cAAc,GAAG,KAAKA,cAAL,uBAAmCnmB,EAAnC,CADlB;;AAGA8B,MAAAA,KAAK,CAACojB,SAAN,CAAgB,YAAW;AAC3BpjB,QAAAA,KAAK,CAACujB,KAAN,CAAY,KAAZ;;AACA,YAAIvjB,KAAK,CAACukB,QAAV,EAAoB;AAClB,cAAI,CAACvkB,KAAK,CAACskB,IAAX,EAAiB;AACftkB,YAAAA,KAAK,CAACD,OAAN,CAAc7B,EAAd;AACD;AACF,SAJD,MAIO,IAAI8B,KAAK,CAACskB,IAAV,EAAgB;AACrBtkB,UAAAA,KAAK,CAACykB,eAAN,CAAsBJ,cAAtB;AACD;AACF,OATC;AAUJ;AAED;AACF;AACA;AACA;AACA;;;;WACE,yBAAgBA,cAAhB,EAAgC;AAC9B,WAAKC,IAAL,GAAY,KAAZ;AACA3nB,MAAAA,6CAAC,CAACkC,MAAD,CAAD,CAAUsB,GAAV,CAAckkB,cAAd;AAEA;AACJ;AACA;AACA;AACA;;AACK,WAAKlnB,QAAL,CAAc0C,OAAd,CAAsB,iBAAtB;AACF;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,eAAM6kB,UAAN,EAAkBrB,MAAlB,EAA0B;AACxB,UAAIqB,UAAJ,EAAgB;AAAE,aAAKtB,SAAL;AAAmB;;AAErC,UAAI,CAAC,KAAKmB,QAAV,EAAoB;AAClB,YAAI,KAAKvB,OAAT,EAAkB;AAChB,eAAKQ,aAAL,CAAmB,IAAnB;AACD;;AACD,eAAO,KAAP;AACD;;AAED,UAAI,CAACH,MAAL,EAAa;AAAEA,QAAAA,MAAM,GAAGxkB,MAAM,CAACykB,WAAhB;AAA8B;;AAE7C,UAAID,MAAM,IAAI,KAAKI,QAAnB,EAA6B;AAC3B,YAAIJ,MAAM,IAAI,KAAKsB,WAAnB,EAAgC;AAC9B,cAAI,CAAC,KAAK3B,OAAV,EAAmB;AACjB,iBAAK4B,UAAL;AACD;AACF,SAJD,MAIO;AACL,cAAI,KAAK5B,OAAT,EAAkB;AAChB,iBAAKQ,aAAL,CAAmB,KAAnB;AACD;AACF;AACF,OAVD,MAUO;AACL,YAAI,KAAKR,OAAT,EAAkB;AAChB,eAAKQ,aAAL,CAAmB,IAAnB;AACD;AACF;AACF;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;WACE,sBAAa;AACX,UAAIxjB,KAAK,GAAG,IAAZ;AAAA,UACI6kB,OAAO,GAAG,KAAK3nB,OAAL,CAAa2nB,OAD3B;AAAA,UAEIC,IAAI,GAAGD,OAAO,KAAK,KAAZ,GAAoB,WAApB,GAAkC,cAF7C;AAAA,UAGIE,UAAU,GAAGF,OAAO,KAAK,KAAZ,GAAoB,QAApB,GAA+B,KAHhD;AAAA,UAIIhiB,GAAG,GAAG,EAJV;;AAMAA,MAAAA,GAAG,CAACiiB,IAAD,CAAH,aAAe,KAAK5nB,OAAL,CAAa4nB,IAAb,CAAf;AACAjiB,MAAAA,GAAG,CAACgiB,OAAD,CAAH,GAAe,CAAf;AACAhiB,MAAAA,GAAG,CAACkiB,UAAD,CAAH,GAAkB,MAAlB;AACA,WAAK/B,OAAL,GAAe,IAAf;AACA,WAAK7lB,QAAL,CAAcsF,WAAd,6BAA+CsiB,UAA/C,GACc1iB,QADd,0BACyCwiB,OADzC,GAEchiB,GAFd,CAEkBA,GAFlB;AAGa;AACjB;AACA;AACA;AACA;AAPI,OAQchD,OARd,6BAQ2CglB,OAR3C;AASA,WAAK1nB,QAAL,CAAciD,EAAd,CAAiB,iFAAjB,EAAoG,YAAW;AAC7GJ,QAAAA,KAAK,CAACojB,SAAN;AACD,OAFD;AAGD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;;;;WACE,uBAAc4B,KAAd,EAAqB;AACnB,UAAIH,OAAO,GAAG,KAAK3nB,OAAL,CAAa2nB,OAA3B;AAAA,UACII,UAAU,GAAGJ,OAAO,KAAK,KAD7B;AAAA,UAEIhiB,GAAG,GAAG,EAFV;AAAA,UAGIqiB,QAAQ,GAAG,CAAC,KAAKd,MAAL,GAAc,KAAKA,MAAL,CAAY,CAAZ,IAAiB,KAAKA,MAAL,CAAY,CAAZ,CAA/B,GAAgD,KAAKe,YAAtD,IAAsE,KAAKjC,UAH1F;AAAA,UAII4B,IAAI,GAAGG,UAAU,GAAG,WAAH,GAAiB,cAJtC;AAAA,UAKIG,WAAW,GAAGJ,KAAK,GAAG,KAAH,GAAW,QALlC;AAOAniB,MAAAA,GAAG,CAACiiB,IAAD,CAAH,GAAY,CAAZ;AAEAjiB,MAAAA,GAAG,CAAC,QAAD,CAAH,GAAgB,MAAhB;;AACA,UAAGmiB,KAAH,EAAU;AACRniB,QAAAA,GAAG,CAAC,KAAD,CAAH,GAAa,CAAb;AACD,OAFD,MAEO;AACLA,QAAAA,GAAG,CAAC,KAAD,CAAH,GAAaqiB,QAAb;AACD;;AAED,WAAKlC,OAAL,GAAe,KAAf;AACA,WAAK7lB,QAAL,CAAcsF,WAAd,0BAA4CoiB,OAA5C,GACcxiB,QADd,6BAC4C+iB,WAD5C,GAEcviB,GAFd,CAEkBA,GAFlB;AAGa;AACjB;AACA;AACA;AACA;AAPI,OAQchD,OARd,iCAQ+CulB,WAR/C;AASD;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,mBAAUjY,EAAV,EAAc;AACZ,WAAKoX,QAAL,GAAgBlf,sEAAA,CAAc,KAAKnI,OAAL,CAAamoB,QAA3B,CAAhB;;AACA,UAAI,CAAC,KAAKd,QAAV,EAAoB;AAClB,YAAIpX,EAAE,IAAI,OAAOA,EAAP,KAAc,UAAxB,EAAoC;AAAEA,UAAAA,EAAE;AAAK;AAC9C;;AAED,UAAInN,KAAK,GAAG,IAAZ;AAAA,UACIslB,YAAY,GAAG,KAAK7C,UAAL,CAAgB,CAAhB,EAAmBnR,qBAAnB,GAA2CC,KAD9D;AAAA,UAEIgU,IAAI,GAAG1mB,MAAM,CAAC2mB,gBAAP,CAAwB,KAAK/C,UAAL,CAAgB,CAAhB,CAAxB,CAFX;AAAA,UAGIgD,KAAK,GAAGtV,QAAQ,CAACoV,IAAI,CAAC,cAAD,CAAL,EAAuB,EAAvB,CAHpB;AAAA,UAIIG,KAAK,GAAGvV,QAAQ,CAACoV,IAAI,CAAC,eAAD,CAAL,EAAwB,EAAxB,CAJpB;;AAMA,UAAI,KAAKvmB,OAAL,IAAgB,KAAKA,OAAL,CAAaT,MAAjC,EAAyC;AACvC,aAAK4mB,YAAL,GAAoB,KAAKnmB,OAAL,CAAa,CAAb,EAAgBsS,qBAAhB,GAAwCb,MAA5D;AACD,OAFD,MAEO;AACL,aAAK0S,YAAL;AACD;;AAED,WAAKhmB,QAAL,CAAc0F,GAAd,CAAkB;AAChB,+BAAgByiB,YAAY,GAAGG,KAAf,GAAuBC,KAAvC;AADgB,OAAlB,EAlBY,CAsBZ;;AACA,UAAI,KAAKxoB,OAAL,CAAayoB,aAAb,IAA8B,CAAC,KAAK1C,eAAxC,EAAyD;AACvD;AACA,YAAI2C,kBAAkB,GAAG,KAAKzoB,QAAL,CAAc,CAAd,EAAiBmU,qBAAjB,GAAyCb,MAAzC,IAAmD,KAAKwS,eAAjF;AACA2C,QAAAA,kBAAkB,GAAG,KAAKzoB,QAAL,CAAc0F,GAAd,CAAkB,SAAlB,KAAgC,MAAhC,GAAyC,CAAzC,GAA6C+iB,kBAAlE;AACA,aAAKnD,UAAL,CAAgB5f,GAAhB,CAAoB,QAApB,EAA8B+iB,kBAA9B;AACA,aAAK3C,eAAL,GAAuB2C,kBAAvB;AACD;;AACD,WAAK1C,UAAL,GAAkB,KAAKD,eAAvB;;AAEA,UAAI,CAAC,KAAKD,OAAV,EAAmB;AACjB,YAAI,KAAK7lB,QAAL,CAAciC,QAAd,CAAuB,cAAvB,CAAJ,EAA4C;AAC1C,cAAI8lB,QAAQ,GAAG,CAAC,KAAKd,MAAL,GAAc,KAAKA,MAAL,CAAY,CAAZ,IAAiB,KAAK3B,UAAL,CAAgBljB,MAAhB,GAAyBG,GAAxD,GAA8D,KAAKylB,YAApE,IAAoF,KAAKjC,UAAxG;AACA,eAAK/lB,QAAL,CAAc0F,GAAd,CAAkB,KAAlB,EAAyBqiB,QAAzB;AACD;AACF;;AAED,WAAKW,eAAL,CAAqB,KAAK5C,eAA1B,EAA2C,YAAW;AACpD,YAAI9V,EAAE,IAAI,OAAOA,EAAP,KAAc,UAAxB,EAAoC;AAAEA,UAAAA,EAAE;AAAK;AAC9C,OAFD;AAGD;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,yBAAgB+V,UAAhB,EAA4B/V,EAA5B,EAAgC;AAC9B,UAAI,CAAC,KAAKoX,QAAV,EAAoB;AAClB,YAAIpX,EAAE,IAAI,OAAOA,EAAP,KAAc,UAAxB,EAAoC;AAAEA,UAAAA,EAAE;AAAK,SAA7C,MACK;AAAE,iBAAO,KAAP;AAAe;AACvB;;AACD,UAAI2Y,IAAI,GAAGC,MAAM,CAAC,KAAK7oB,OAAL,CAAa8oB,SAAd,CAAjB;AAAA,UACIC,IAAI,GAAGF,MAAM,CAAC,KAAK7oB,OAAL,CAAagpB,YAAd,CADjB;AAAA,UAEIzC,QAAQ,GAAG,KAAKW,MAAL,GAAc,KAAKA,MAAL,CAAY,CAAZ,CAAd,GAA+B,KAAKplB,OAAL,CAAaO,MAAb,GAAsBG,GAFpE;AAAA,UAGIilB,WAAW,GAAG,KAAKP,MAAL,GAAc,KAAKA,MAAL,CAAY,CAAZ,CAAd,GAA+BX,QAAQ,GAAG,KAAK0B,YAHjE;AAAA,UAII;AACA;AACAgB,MAAAA,SAAS,GAAGtnB,MAAM,CAACunB,WANvB;;AAQA,UAAI,KAAKlpB,OAAL,CAAa2nB,OAAb,KAAyB,KAA7B,EAAoC;AAClCpB,QAAAA,QAAQ,IAAIqC,IAAZ;AACAnB,QAAAA,WAAW,IAAKzB,UAAU,GAAG4C,IAA7B;AACD,OAHD,MAGO,IAAI,KAAK5oB,OAAL,CAAa2nB,OAAb,KAAyB,QAA7B,EAAuC;AAC5CpB,QAAAA,QAAQ,IAAK0C,SAAS,IAAIjD,UAAU,GAAG+C,IAAjB,CAAtB;AACAtB,QAAAA,WAAW,IAAKwB,SAAS,GAAGF,IAA5B;AACD,OAHM,MAGA,CACL;AACD;;AAED,WAAKxC,QAAL,GAAgBA,QAAhB;AACA,WAAKkB,WAAL,GAAmBA,WAAnB;;AAEA,UAAIxX,EAAE,IAAI,OAAOA,EAAP,KAAc,UAAxB,EAAoC;AAAEA,QAAAA,EAAE;AAAK;AAC9C;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,oBAAW;AACT,WAAKqW,aAAL,CAAmB,IAAnB;;AAEA,WAAKrmB,QAAL,CAAcsF,WAAd,WAA6B,KAAKvF,OAAL,CAAa2lB,WAA1C,6BACchgB,GADd,CACkB;AACH4N,QAAAA,MAAM,EAAE,EADL;AAEH/Q,QAAAA,GAAG,EAAE,EAFF;AAGH2mB,QAAAA,MAAM,EAAE,EAHL;AAIH,qBAAa;AAJV,OADlB,EAOclmB,GAPd,CAOkB,qBAPlB,EAQcA,GARd,CAQkB,qBARlB;;AASA,UAAI,KAAKnB,OAAL,IAAgB,KAAKA,OAAL,CAAaT,MAAjC,EAAyC;AACvC,aAAKS,OAAL,CAAamB,GAAb,CAAiB,kBAAjB;AACD;;AACD,UAAI,KAAKkkB,cAAT,EAAyB1nB,6CAAC,CAACkC,MAAD,CAAD,CAAUsB,GAAV,CAAc,KAAKkkB,cAAnB;AACzB,UAAI,KAAKpM,cAAT,EAAyBtb,6CAAC,CAACkC,MAAD,CAAD,CAAUsB,GAAV,CAAc,KAAK8X,cAAnB;;AAEzB,UAAI,KAAKyK,UAAT,EAAqB;AACnB,aAAKvlB,QAAL,CAAcqU,MAAd;AACD,OAFD,MAEO;AACL,aAAKiR,UAAL,CAAgBhgB,WAAhB,CAA4B,KAAKvF,OAAL,CAAa0lB,cAAzC,EACgB/f,GADhB,CACoB;AACH4N,UAAAA,MAAM,EAAE;AADL,SADpB;AAID;AACF;;;;EAjZkB7T;;AAoZrB4lB,MAAM,CAACnlB,QAAP,GAAkB;AAChB;AACF;AACA;AACA;AACA;AACA;AACEslB,EAAAA,SAAS,EAAE,mCAPK;;AAQhB;AACF;AACA;AACA;AACA;AACA;AACEkC,EAAAA,OAAO,EAAE,KAdO;;AAehB;AACF;AACA;AACA;AACA;AACA;AACEjmB,EAAAA,MAAM,EAAE,EArBQ;;AAsBhB;AACF;AACA;AACA;AACA;AACA;AACE+kB,EAAAA,SAAS,EAAE,EA5BK;;AA6BhB;AACF;AACA;AACA;AACA;AACA;AACEE,EAAAA,SAAS,EAAE,EAnCK;;AAoChB;AACF;AACA;AACA;AACA;AACA;AACEmC,EAAAA,SAAS,EAAE,CA1CK;;AA2ChB;AACF;AACA;AACA;AACA;AACA;AACEE,EAAAA,YAAY,EAAE,CAjDE;;AAkDhB;AACF;AACA;AACA;AACA;AACA;AACEb,EAAAA,QAAQ,EAAE,QAxDM;;AAyDhB;AACF;AACA;AACA;AACA;AACA;AACExC,EAAAA,WAAW,EAAE,QA/DG;;AAgEhB;AACF;AACA;AACA;AACA;AACA;AACED,EAAAA,cAAc,EAAE,kBAtEA;;AAuEhB;AACF;AACA;AACA;AACA;AACA;AACE+C,EAAAA,aAAa,EAAE,IA7EC;;AA8EhB;AACF;AACA;AACA;AACA;AACA;AACE5C,EAAAA,UAAU,EAAE,CAAC;AApFG,CAAlB;AAuFA;AACA;AACA;AACA;;AACA,SAASgD,MAAT,CAAgBO,EAAhB,EAAoB;AAClB,SAAOnW,QAAQ,CAACtR,MAAM,CAAC2mB,gBAAP,CAAwB/Y,QAAQ,CAAC2G,IAAjC,EAAuC,IAAvC,EAA6CmT,QAA9C,EAAwD,EAAxD,CAAR,GAAsED,EAA7E;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9fD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;IAEM9K;;;;;;;;;;;;;;AACJ;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,oBAAOve,OAAP,EAAgBC,OAAhB,EAAyB;AACvB,WAAKC,QAAL,GAAgBF,OAAhB;AACA,WAAKC,OAAL,GAAeP,oDAAA,CAAS,EAAT,EAAa6e,IAAI,CAACne,QAAlB,EAA4B,KAAKF,QAAL,CAAcG,IAAd,EAA5B,EAAkDJ,OAAlD,CAAf;AACA,WAAKK,SAAL,GAAiB,MAAjB,CAHuB,CAGE;;AAEzB,WAAKC,KAAL;;AACAT,MAAAA,wEAAA,CAAkB,MAAlB,EAA0B;AACxB,iBAAS,MADe;AAExB,iBAAS,MAFe;AAGxB,uBAAe,MAHS;AAIxB,oBAAY,UAJY;AAKxB,sBAAc,MALU;AAMxB,sBAAc,UANU,CAOxB;AACA;;AARwB,OAA1B;AAUD;AAED;AACF;AACA;AACA;;;;WACE,iBAAQ;AAAA;;AACN,UAAIiD,KAAK,GAAG,IAAZ;;AACA,WAAKtC,eAAL,GAAuB,IAAvB;AAEA,WAAKP,QAAL,CAAckB,IAAd,CAAmB;AAAC,gBAAQ;AAAT,OAAnB;AACA,WAAKooB,UAAL,GAAkB,KAAKtpB,QAAL,CAAciB,IAAd,YAAuB,KAAKlB,OAAL,CAAaygB,SAApC,EAAlB;AACA,WAAKzd,WAAL,GAAmBvD,6CAAC,gCAAwB,KAAKQ,QAAL,CAAc,CAAd,EAAiBe,EAAzC,SAApB;AAEA,WAAKuoB,UAAL,CAAgB5oB,IAAhB,CAAqB,YAAU;AAC7B,YAAIoC,KAAK,GAAGtD,6CAAC,CAAC,IAAD,CAAb;AAAA,YACIsC,KAAK,GAAGgB,KAAK,CAAC7B,IAAN,CAAW,GAAX,CADZ;AAAA,YAEIiF,QAAQ,GAAGpD,KAAK,CAACb,QAAN,WAAkBY,KAAK,CAAC9C,OAAN,CAAcwpB,eAAhC,EAFf;AAAA,YAGI3nB,IAAI,GAAGE,KAAK,CAACZ,IAAN,CAAW,kBAAX,KAAkCY,KAAK,CAAC,CAAD,CAAL,CAASF,IAAT,CAAc8J,KAAd,CAAoB,CAApB,CAH7C;AAAA,YAII1K,MAAM,GAAGc,KAAK,CAAC,CAAD,CAAL,CAASf,EAAT,GAAce,KAAK,CAAC,CAAD,CAAL,CAASf,EAAvB,aAA+Ba,IAA/B,WAJb;AAAA,YAKImB,WAAW,GAAGvD,6CAAC,YAAKoC,IAAL,EALnB;AAOAkB,QAAAA,KAAK,CAAC5B,IAAN,CAAW;AAAC,kBAAQ;AAAT,SAAX;AAEAY,QAAAA,KAAK,CAACZ,IAAN,CAAW;AACT,kBAAQ,KADC;AAET,2BAAiBU,IAFR;AAGT,2BAAiBsE,QAHR;AAIT,gBAAMlF,MAJG;AAKT,sBAAYkF,QAAQ,GAAG,GAAH,GAAS;AALpB,SAAX;AAQAnD,QAAAA,WAAW,CAAC7B,IAAZ,CAAiB;AACf,kBAAQ,UADO;AAEf,6BAAmBF;AAFJ,SAAjB,EAlB6B,CAuB7B;;AACA,YAAIkF,QAAJ,EAAc;AACZrD,UAAAA,KAAK,CAACxB,cAAN,cAA2BO,IAA3B;AACD;;AAED,YAAG,CAACsE,QAAJ,EAAc;AACZnD,UAAAA,WAAW,CAAC7B,IAAZ,CAAiB,aAAjB,EAAgC,MAAhC;AACD;;AAED,YAAGgF,QAAQ,IAAIrD,KAAK,CAAC9C,OAAN,CAAcyT,SAA7B,EAAuC;AACrC3Q,UAAAA,KAAK,CAACiY,cAAN,GAAuBpb,8DAAM,CAACF,6CAAC,CAACkC,MAAD,CAAF,EAAY,YAAW;AAClDlC,YAAAA,6CAAC,CAAC,YAAD,CAAD,CAAgB6C,OAAhB,CAAwB;AAAEC,cAAAA,SAAS,EAAEQ,KAAK,CAACV,MAAN,GAAeG;AAA5B,aAAxB,EAA2DM,KAAK,CAAC9C,OAAN,CAAc0C,mBAAzE,EAA8F,YAAM;AAClGX,cAAAA,KAAK,CAAC0B,KAAN;AACD,aAFD;AAGD,WAJ4B,CAA7B;AAKD;AACF,OAvCD;;AAyCA,UAAG,KAAKzD,OAAL,CAAaypB,WAAhB,EAA6B;AAC3B,YAAIC,OAAO,GAAG,KAAK1mB,WAAL,CAAiB9B,IAAjB,CAAsB,KAAtB,CAAd;;AAEA,YAAIwoB,OAAO,CAACroB,MAAZ,EAAoB;AAClBioB,UAAAA,4EAAc,CAACI,OAAD,EAAU,KAAKC,UAAL,CAAgBhc,IAAhB,CAAqB,IAArB,CAAV,CAAd;AACD,SAFD,MAEO;AACL,eAAKgc,UAAL;AACD;AACF,OAzDK,CA2DL;;;AACD,WAAKloB,cAAL,GAAsB,YAAM;AAC1B,YAAIC,MAAM,GAAGC,MAAM,CAACC,QAAP,CAAgBC,IAA7B;;AAEA,YAAI,CAACH,MAAM,CAACL,MAAZ,EAAoB;AAClB;AACA,cAAI,MAAI,CAACb,eAAT,EAA0B,OAFR,CAGlB;;AACA,cAAI,MAAI,CAACc,cAAT,EAAyBI,MAAM,GAAG,MAAI,CAACJ,cAAd;AAC1B;;AAED,YAAIsoB,YAAY,GAAGloB,MAAM,CAAC4H,OAAP,CAAe,GAAf,KAAuB,CAAvB,GAA2B5H,MAAM,CAACiK,KAAP,CAAa,CAAb,CAA3B,GAA6CjK,MAAhE;AACA,YAAII,OAAO,GAAG8nB,YAAY,IAAInqB,6CAAC,YAAKmqB,YAAL,EAA/B;;AACA,YAAI7nB,KAAK,GAAGL,MAAM,IAAI,MAAI,CAACzB,QAAL,CAAciB,IAAd,oBAA8BQ,MAA9B,qCAA6DkoB,YAA7D,UAA+EhmB,KAA/E,EAAtB,CAZ0B,CAa1B;;;AACA,YAAI5B,WAAW,GAAG,CAAC,EAAEF,OAAO,CAACT,MAAR,IAAkBU,KAAK,CAACV,MAA1B,CAAnB;;AAEA,YAAIW,WAAJ,EAAiB;AACf;AACA,cAAIF,OAAO,IAAIA,OAAO,CAACT,MAAnB,IAA6BU,KAA7B,IAAsCA,KAAK,CAACV,MAAhD,EAAwD;AACtD,kBAAI,CAACqd,SAAL,CAAe5c,OAAf,EAAwB,IAAxB;AACD,WAFD,CAGA;AAHA,eAIK;AACH,kBAAI,CAAC+nB,SAAL;AACD,WARc,CAUf;;;AACA,cAAI,MAAI,CAAC7pB,OAAL,CAAaoC,cAAjB,EAAiC;AAC/B,gBAAIC,MAAM,GAAG,MAAI,CAACpC,QAAL,CAAcoC,MAAd,EAAb;;AACA5C,YAAAA,6CAAC,CAAC,YAAD,CAAD,CAAgB6C,OAAhB,CAAwB;AAAEC,cAAAA,SAAS,EAAEF,MAAM,CAACG,GAAP,GAAa,MAAI,CAACxC,OAAL,CAAayC;AAAvC,aAAxB,EAAsF,MAAI,CAACzC,OAAL,CAAa0C,mBAAnG;AACD;AAED;AACR;AACA;AACA;;;AACQ,gBAAI,CAACzC,QAAL,CAAc0C,OAAd,CAAsB,kBAAtB,EAA0C,CAACZ,KAAD,EAAQD,OAAR,CAA1C;AACD;AACF,OAtCD,CA5DM,CAoGN;;;AACA,UAAI,KAAK9B,OAAL,CAAa4C,QAAjB,EAA2B;AACzB,aAAKnB,cAAL;AACD;;AAED,WAAKoB,OAAL;;AAEA,WAAKrC,eAAL,GAAuB,KAAvB;AACD;AAED;AACF;AACA;AACA;;;;WACE,mBAAU;AACR,WAAKspB,cAAL;;AACA,WAAKC,gBAAL;;AACA,WAAKC,mBAAL,GAA2B,IAA3B;;AAEA,UAAI,KAAKhqB,OAAL,CAAaypB,WAAjB,EAA8B;AAC5B,aAAKO,mBAAL,GAA2B,KAAKL,UAAL,CAAgBhc,IAAhB,CAAqB,IAArB,CAA3B;AAEAlO,QAAAA,6CAAC,CAACkC,MAAD,CAAD,CAAUuB,EAAV,CAAa,uBAAb,EAAsC,KAAK8mB,mBAA3C;AACD;;AAED,UAAG,KAAKhqB,OAAL,CAAa4C,QAAhB,EAA0B;AACxBnD,QAAAA,6CAAC,CAACkC,MAAD,CAAD,CAAUuB,EAAV,CAAa,YAAb,EAA2B,KAAKzB,cAAhC;AACD;AACF;AAED;AACF;AACA;AACA;;;;WACE,4BAAmB;AACjB,UAAIqB,KAAK,GAAG,IAAZ;;AAEA,WAAK7C,QAAL,CACGgD,GADH,CACO,eADP,EAEGC,EAFH,CAEM,eAFN,aAE2B,KAAKlD,OAAL,CAAaygB,SAFxC,GAEqD,UAAStd,CAAT,EAAW;AAC5DA,QAAAA,CAAC,CAACC,cAAF;;AACAN,QAAAA,KAAK,CAACmnB,gBAAN,CAAuBxqB,6CAAC,CAAC,IAAD,CAAxB;AACD,OALH;AAMD;AAED;AACF;AACA;AACA;;;;WACE,0BAAiB;AACf,UAAIqD,KAAK,GAAG,IAAZ;;AAEA,WAAKymB,UAAL,CAAgBtmB,GAAhB,CAAoB,iBAApB,EAAuCC,EAAvC,CAA0C,iBAA1C,EAA6D,UAASC,CAAT,EAAW;AACtE,YAAIA,CAAC,CAAC+mB,KAAF,KAAY,CAAhB,EAAmB;AAGnB,YAAIjqB,QAAQ,GAAGR,6CAAC,CAAC,IAAD,CAAhB;AAAA,YACEoH,SAAS,GAAG5G,QAAQ,CAACgC,MAAT,CAAgB,IAAhB,EAAsBvB,QAAtB,CAA+B,IAA/B,CADd;AAAA,YAEEoG,YAFF;AAAA,YAGEC,YAHF;AAKAF,QAAAA,SAAS,CAAClG,IAAV,CAAe,UAASqG,CAAT,EAAY;AACzB,cAAIvH,6CAAC,CAAC,IAAD,CAAD,CAAQwE,EAAR,CAAWhE,QAAX,CAAJ,EAA0B;AACxB,gBAAI6C,KAAK,CAAC9C,OAAN,CAAcmqB,UAAlB,EAA8B;AAC5BrjB,cAAAA,YAAY,GAAGE,CAAC,KAAK,CAAN,GAAUH,SAAS,CAAChD,IAAV,EAAV,GAA6BgD,SAAS,CAACI,EAAV,CAAaD,CAAC,GAAC,CAAf,CAA5C;AACAD,cAAAA,YAAY,GAAGC,CAAC,KAAKH,SAAS,CAACxF,MAAV,GAAkB,CAAxB,GAA4BwF,SAAS,CAACjD,KAAV,EAA5B,GAAgDiD,SAAS,CAACI,EAAV,CAAaD,CAAC,GAAC,CAAf,CAA/D;AACD,aAHD,MAGO;AACLF,cAAAA,YAAY,GAAGD,SAAS,CAACI,EAAV,CAAaC,IAAI,CAACC,GAAL,CAAS,CAAT,EAAYH,CAAC,GAAC,CAAd,CAAb,CAAf;AACAD,cAAAA,YAAY,GAAGF,SAAS,CAACI,EAAV,CAAaC,IAAI,CAACE,GAAL,CAASJ,CAAC,GAAC,CAAX,EAAcH,SAAS,CAACxF,MAAV,GAAiB,CAA/B,CAAb,CAAf;AACD;;AACD;AACD;AACF,SAXD,EATsE,CAsBtE;;AACAxB,QAAAA,yEAAA,CAAmBsD,CAAnB,EAAsB,MAAtB,EAA8B;AAC5BmE,UAAAA,IAAI,EAAE,gBAAW;AACfrH,YAAAA,QAAQ,CAACiB,IAAT,CAAc,cAAd,EAA8BuC,KAA9B;;AACAX,YAAAA,KAAK,CAACmnB,gBAAN,CAAuBhqB,QAAvB;AACD,WAJ2B;AAK5B0D,UAAAA,QAAQ,EAAE,oBAAW;AACnBmD,YAAAA,YAAY,CAAC5F,IAAb,CAAkB,cAAlB,EAAkCuC,KAAlC;;AACAX,YAAAA,KAAK,CAACmnB,gBAAN,CAAuBnjB,YAAvB;AACD,WAR2B;AAS5BvD,UAAAA,IAAI,EAAE,gBAAW;AACfwD,YAAAA,YAAY,CAAC7F,IAAb,CAAkB,cAAlB,EAAkCuC,KAAlC;;AACAX,YAAAA,KAAK,CAACmnB,gBAAN,CAAuBljB,YAAvB;AACD,WAZ2B;AAa5BjD,UAAAA,OAAO,EAAE,mBAAW;AAClBX,YAAAA,CAAC,CAACC,cAAF;AACD;AAf2B,SAA9B;AAiBD,OAxCD;AAyCD;AAED;AACF;AACA;AACA;AACA;AACA;AACA;;;;WACE,0BAAiBW,OAAjB,EAA0BqmB,cAA1B,EAA0C;AAExC;AACA,UAAIrmB,OAAO,CAAC7B,QAAR,WAAoB,KAAKlC,OAAL,CAAawpB,eAAjC,EAAJ,EAAyD;AACrD,YAAG,KAAKxpB,OAAL,CAAaqqB,cAAhB,EAAgC;AAC5B,eAAKR,SAAL;AACH;;AACD;AACH;;AAED,UAAIS,OAAO,GAAG,KAAKrqB,QAAL,CACRiB,IADQ,YACC,KAAKlB,OAAL,CAAaygB,SADd,cAC2B,KAAKzgB,OAAL,CAAawpB,eADxC,EAAd;AAAA,UAEMe,QAAQ,GAAGxmB,OAAO,CAAC7C,IAAR,CAAa,cAAb,CAFjB;AAAA,UAGM8P,MAAM,GAAGuZ,QAAQ,CAACppB,IAAT,CAAc,kBAAd,CAHf;AAAA,UAIMO,MAAM,GAAGsP,MAAM,IAAIA,MAAM,CAAC3P,MAAjB,cAA8B2P,MAA9B,IAAyCuZ,QAAQ,CAAC,CAAD,CAAR,CAAY1oB,IAJpE;AAAA,UAKM2oB,cAAc,GAAG,KAAKxnB,WAAL,CAAiB9B,IAAjB,CAAsBQ,MAAtB,CALvB,CAVwC,CAiBxC;;AACA,WAAK+oB,YAAL,CAAkBH,OAAlB,EAlBwC,CAoBxC;;;AACA,WAAK5lB,QAAL,CAAcX,OAAd,EArBwC,CAuBxC;;;AACA,UAAI,KAAK/D,OAAL,CAAa4C,QAAb,IAAyB,CAACwnB,cAA9B,EAA8C;AAC5C,YAAI,KAAKpqB,OAAL,CAAasE,aAAjB,EAAgC;AAC9BC,UAAAA,OAAO,CAACC,SAAR,CAAkB,EAAlB,EAAsB,EAAtB,EAA0B9C,MAA1B;AACD,SAFD,MAEO;AACL6C,UAAAA,OAAO,CAACE,YAAR,CAAqB,EAArB,EAAyB,EAAzB,EAA6B/C,MAA7B;AACD;AACF;AAED;AACJ;AACA;AACA;;;AACI,WAAKzB,QAAL,CAAc0C,OAAd,CAAsB,gBAAtB,EAAwC,CAACoB,OAAD,EAAUymB,cAAV,CAAxC,EApCwC,CAsCxC;;AACAA,MAAAA,cAAc,CAACtpB,IAAf,CAAoB,eAApB,EAAqCyB,OAArC,CAA6C,qBAA7C;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,kBAASoB,OAAT,EAAkB;AACd,UAAIwmB,QAAQ,GAAGxmB,OAAO,CAAC7C,IAAR,CAAa,cAAb,CAAf;AAAA,UACIW,IAAI,GAAG0oB,QAAQ,CAACppB,IAAT,CAAc,kBAAd,KAAqCopB,QAAQ,CAAC,CAAD,CAAR,CAAY1oB,IAAZ,CAAiB8J,KAAjB,CAAuB,CAAvB,CADhD;AAAA,UAEI6e,cAAc,GAAG,KAAKxnB,WAAL,CAAiB9B,IAAjB,YAA0BW,IAA1B,EAFrB;AAIAkC,MAAAA,OAAO,CAACoB,QAAR,WAAoB,KAAKnF,OAAL,CAAawpB,eAAjC;AAEAe,MAAAA,QAAQ,CAACppB,IAAT,CAAc;AACZ,yBAAiB,MADL;AAEZ,oBAAY;AAFA,OAAd;AAKAqpB,MAAAA,cAAc,CACXrlB,QADH,WACe,KAAKnF,OAAL,CAAa0qB,gBAD5B,GACgDnhB,UADhD,CAC2D,aAD3D;AAEH;AAED;AACF;AACA;AACA;AACA;;;;WACE,sBAAaxF,OAAb,EAAsB;AACpB,UAAI4mB,cAAc,GAAG5mB,OAAO,CACzBwB,WADkB,WACH,KAAKvF,OAAL,CAAawpB,eADV,GAElBtoB,IAFkB,CAEb,cAFa,EAGlBC,IAHkB,CAGb;AACJ,yBAAiB,OADb;AAEJ,oBAAY,CAAC;AAFT,OAHa,CAArB;AAQA1B,MAAAA,6CAAC,YAAKkrB,cAAc,CAACxpB,IAAf,CAAoB,eAApB,CAAL,EAAD,CACGoE,WADH,WACkB,KAAKvF,OAAL,CAAa0qB,gBAD/B,GAEGvpB,IAFH,CAEQ;AAAE,uBAAe;AAAjB,OAFR;AAGD;AAED;AACF;AACA;AACA;AACA;;;;WACE,qBAAY;AACV,UAAIypB,UAAU,GAAG,KAAK3qB,QAAL,CAAciB,IAAd,YAAuB,KAAKlB,OAAL,CAAaygB,SAApC,cAAiD,KAAKzgB,OAAL,CAAawpB,eAA9D,EAAjB;;AAEA,UAAIoB,UAAU,CAACvpB,MAAf,EAAuB;AACrB,aAAKopB,YAAL,CAAkBG,UAAlB;AAEA;AACN;AACA;AACA;;;AACM,aAAK3qB,QAAL,CAAc0C,OAAd,CAAsB,kBAAtB,EAA0C,CAACioB,UAAD,CAA1C;AACD;AACF;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,mBAAUpgB,IAAV,EAAgB4f,cAAhB,EAAgC;AAC9B,UAAIS,KAAJ,EAAWC,SAAX;;AAEA,UAAI,QAAOtgB,IAAP,MAAgB,QAApB,EAA8B;AAC5BqgB,QAAAA,KAAK,GAAGrgB,IAAI,CAAC,CAAD,CAAJ,CAAQxJ,EAAhB;AACD,OAFD,MAEO;AACL6pB,QAAAA,KAAK,GAAGrgB,IAAR;AACD;;AAED,UAAIqgB,KAAK,CAACvhB,OAAN,CAAc,GAAd,IAAqB,CAAzB,EAA4B;AAC1BwhB,QAAAA,SAAS,cAAOD,KAAP,CAAT;AACD,OAFD,MAEO;AACLC,QAAAA,SAAS,GAAGD,KAAZ;AACAA,QAAAA,KAAK,GAAGA,KAAK,CAAClf,KAAN,CAAY,CAAZ,CAAR;AACD;;AAED,UAAI5H,OAAO,GAAG,KAAKwlB,UAAL,CAAgBxY,GAAhB,oBAA+B+Z,SAA/B,qCAAiED,KAAjE,UAA4EjnB,KAA5E,EAAd;;AAEA,WAAKqmB,gBAAL,CAAsBlmB,OAAtB,EAA+BqmB,cAA/B;AACD;;;;AAED;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,0BAAa;AACX,UAAIjjB,GAAG,GAAG,CAAV;AAAA,UACIrE,KAAK,GAAG,IADZ,CADW,CAEO;;;AAElB,UAAI,CAAC,KAAKE,WAAV,EAAuB;AACrB;AACD;;AAED,WAAKA,WAAL,CACG9B,IADH,YACY,KAAKlB,OAAL,CAAa2gB,UADzB,GAEGhb,GAFH,CAEO,QAFP,EAEiB,EAFjB,EAGGhF,IAHH,CAGQ,YAAW;AAEf,YAAIoqB,KAAK,GAAGtrB,6CAAC,CAAC,IAAD,CAAb;AAAA,YACI0G,QAAQ,GAAG4kB,KAAK,CAAC7oB,QAAN,WAAkBY,KAAK,CAAC9C,OAAN,CAAc0qB,gBAAhC,EADf,CAFe,CAGqD;;AAEpE,YAAI,CAACvkB,QAAL,EAAe;AACb4kB,UAAAA,KAAK,CAACplB,GAAN,CAAU;AAAC,0BAAc,QAAf;AAAyB,uBAAW;AAApC,WAAV;AACD;;AAED,YAAIqlB,IAAI,GAAG,KAAK5W,qBAAL,GAA6Bb,MAAxC;;AAEA,YAAI,CAACpN,QAAL,EAAe;AACb4kB,UAAAA,KAAK,CAACplB,GAAN,CAAU;AACR,0BAAc,EADN;AAER,uBAAW;AAFH,WAAV;AAID;;AAEDwB,QAAAA,GAAG,GAAG6jB,IAAI,GAAG7jB,GAAP,GAAa6jB,IAAb,GAAoB7jB,GAA1B;AACD,OAtBH,EAuBGxB,GAvBH,CAuBO,QAvBP,YAuBoBwB,GAvBpB;AAwBD;AAED;AACF;AACA;AACA;;;;WACE,oBAAW;AACT,WAAKlH,QAAL,CACGiB,IADH,YACY,KAAKlB,OAAL,CAAaygB,SADzB,GAEGxd,GAFH,CAEO,UAFP,EAEmBsT,IAFnB,GAE0B9G,GAF1B,GAGGvO,IAHH,YAGY,KAAKlB,OAAL,CAAa2gB,UAHzB,GAIGpK,IAJH;;AAMA,UAAI,KAAKvW,OAAL,CAAaypB,WAAjB,EAA8B;AAC5B,YAAI,KAAKO,mBAAL,IAA4B,IAAhC,EAAsC;AACnCvqB,UAAAA,6CAAC,CAACkC,MAAD,CAAD,CAAUsB,GAAV,CAAc,uBAAd,EAAuC,KAAK+mB,mBAA5C;AACF;AACF;;AAED,UAAI,KAAKhqB,OAAL,CAAa4C,QAAjB,EAA2B;AACzBnD,QAAAA,6CAAC,CAACkC,MAAD,CAAD,CAAUsB,GAAV,CAAc,YAAd,EAA4B,KAAKxB,cAAjC;AACD;;AAED,UAAI,KAAKsZ,cAAT,EAAyB;AACvBtb,QAAAA,6CAAC,CAACkC,MAAD,CAAD,CAAUsB,GAAV,CAAc,KAAK8X,cAAnB;AACD;AACF;;;;EA3agBrb;;AA8anB4e,IAAI,CAACne,QAAL,GAAgB;AACd;AACF;AACA;AACA;AACA;AACA;AACA;AACEyC,EAAAA,QAAQ,EAAE,KARI;;AAUd;AACF;AACA;AACA;AACA;AACA;AACER,EAAAA,cAAc,EAAE,KAhBF;;AAkBd;AACF;AACA;AACA;AACA;AACA;AACEM,EAAAA,mBAAmB,EAAE,GAxBP;;AA0Bd;AACF;AACA;AACA;AACA;AACA;AACED,EAAAA,oBAAoB,EAAE,CAhCR;;AAkCd;AACF;AACA;AACA;AACA;AACA;AACE6B,EAAAA,aAAa,EAAE,KAxCD;;AA0Cd;AACF;AACA;AACA;AACA;AACA;AACA;AACEmP,EAAAA,SAAS,EAAE,KAjDG;;AAmDd;AACF;AACA;AACA;AACA;AACA;AACE0W,EAAAA,UAAU,EAAE,IAzDE;;AA2Dd;AACF;AACA;AACA;AACA;AACA;AACEV,EAAAA,WAAW,EAAE,KAjEC;;AAmEd;AACF;AACA;AACA;AACA;AACA;AACEY,EAAAA,cAAc,EAAE,KAzEF;;AA2Ed;AACF;AACA;AACA;AACA;AACA;AACE5J,EAAAA,SAAS,EAAE,YAjFG;;AAmFd;AACF;AACA;AACA;AACA;AACA;AACE+I,EAAAA,eAAe,EAAE,WAzFH;;AA2Fd;AACF;AACA;AACA;AACA;AACA;AACE7I,EAAAA,UAAU,EAAE,YAjGE;;AAmGd;AACF;AACA;AACA;AACA;AACA;AACE+J,EAAAA,gBAAgB,EAAE;AAzGJ,CAAhB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC1bA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;AACA;AACA;;IAEMO;;;;;;;;;;;;;;AACJ;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACE,oBAAOlrB,OAAP,EAAgBC,OAAhB,EAAyB;AACvB,WAAKC,QAAL,GAAgBF,OAAhB;AACA,WAAKC,OAAL,GAAeP,oDAAA,CAAS,EAAT,EAAawrB,OAAO,CAAC9qB,QAArB,EAA+BJ,OAAO,CAACK,IAAR,EAA/B,EAA+CJ,OAA/C,CAAf;AACA,WAAKK,SAAL,GAAiB,EAAjB;AACA,WAAKA,SAAL,GAAiB,SAAjB,CAJuB,CAIK;AAE5B;;AACAmU,MAAAA,oEAAA,CAAc/U,+CAAd;;AAEA,WAAKa,KAAL;;AACA,WAAKuC,OAAL;AACD;AAED;AACF;AACA;AACA;AACA;;;;WACE,iBAAQ;AACN;AACA,UAAI7B,EAAE,GAAG,KAAKf,QAAL,CAAc,CAAd,EAAiBe,EAA1B;AAAA,UACEoY,SAAS,GAAG3Z,6CAAC,yBAAiBuB,EAAjB,iCAAwCA,EAAxC,kCAAgEA,EAAhE,SADf;AAGA,UAAI8gB,KAAJ,CALM,CAMN;;AACA,UAAI,KAAK9hB,OAAL,CAAasC,OAAjB,EAA0B;AACxBwf,QAAAA,KAAK,GAAG,KAAK9hB,OAAL,CAAasC,OAAb,CAAqBsI,KAArB,CAA2B,GAA3B,CAAR;AAEA,aAAKmX,WAAL,GAAmBD,KAAK,CAAC,CAAD,CAAxB;AACA,aAAKE,YAAL,GAAoBF,KAAK,CAAC,CAAD,CAAL,IAAY,IAAhC,CAJwB,CAMxB;;AACA1I,QAAAA,SAAS,CAACjY,IAAV,CAAe,eAAf,EAAgC,CAAC,KAAKlB,QAAL,CAAcgE,EAAd,CAAiB,SAAjB,CAAjC;AACD,OARD,CASA;AATA,WAUK;AACH6d,QAAAA,KAAK,GAAG,KAAK9hB,OAAL,CAAakrB,OAArB;;AACA,YAAI,OAAOpJ,KAAP,KAAiB,QAAjB,IAA6B,CAACA,KAAK,CAACzgB,MAAxC,EAAgD;AAC9C,gBAAM,IAAI8pB,KAAJ,+EAAgFrJ,KAAhF,QAAN;AACD,SAJE,CAKH;;;AACA,aAAKzhB,SAAL,GAAiByhB,KAAK,CAAC,CAAD,CAAL,KAAa,GAAb,GAAmBA,KAAK,CAACnW,KAAN,CAAY,CAAZ,CAAnB,GAAoCmW,KAArD,CANG,CAQH;;AACA1I,QAAAA,SAAS,CAACjY,IAAV,CAAe,eAAf,EAAgC,KAAKlB,QAAL,CAAciC,QAAd,CAAuB,KAAK7B,SAA5B,CAAhC;AACD,OA3BK,CA6BN;;;AACA+Y,MAAAA,SAAS,CAACzY,IAAV,CAAe,UAACgT,KAAD,EAAQhR,OAAR,EAAoB;AACjC,YAAMyoB,QAAQ,GAAG3rB,6CAAC,CAACkD,OAAD,CAAlB;AACA,YAAM0oB,QAAQ,GAAGD,QAAQ,CAACjqB,IAAT,CAAc,eAAd,KAAkC,EAAnD;AAEA,YAAMmqB,UAAU,GAAG,IAAIpR,MAAJ,cAAiB9K,oEAAY,CAACpO,EAAD,CAA7B,UAAwCiM,IAAxC,CAA6Coe,QAA7C,CAAnB;AACA,YAAI,CAACC,UAAL,EAAiBF,QAAQ,CAACjqB,IAAT,CAAc,eAAd,EAA+BkqB,QAAQ,aAAMA,QAAN,cAAkBrqB,EAAlB,IAAyBA,EAAhE;AAClB,OAND;AAOD;AAED;AACF;AACA;AACA;AACA;;;;WACE,mBAAU;AACR,WAAKf,QAAL,CAAcgD,GAAd,CAAkB,mBAAlB,EAAuCC,EAAvC,CAA0C,mBAA1C,EAA+D,KAAKG,MAAL,CAAYsK,IAAZ,CAAiB,IAAjB,CAA/D;AACD;AAED;AACF;AACA;AACA;AACA;AACA;;;;WACE,kBAAS;AACP,WAAM,KAAK3N,OAAL,CAAasC,OAAb,GAAuB,gBAAvB,GAA0C,cAAhD;AACD;;;WAED,wBAAe;AACb,WAAKrC,QAAL,CAAc8jB,WAAd,CAA0B,KAAK1jB,SAA/B;AAEA,UAAI+mB,IAAI,GAAG,KAAKnnB,QAAL,CAAciC,QAAd,CAAuB,KAAK7B,SAA5B,CAAX;;AACA,UAAI+mB,IAAJ,EAAU;AACR;AACN;AACA;AACA;AACM,aAAKnnB,QAAL,CAAc0C,OAAd,CAAsB,eAAtB;AACD,OAND,MAOK;AACH;AACN;AACA;AACA;AACM,aAAK1C,QAAL,CAAc0C,OAAd,CAAsB,gBAAtB;AACD;;AAED,WAAK4oB,WAAL,CAAiBnE,IAAjB;;AACA,WAAKnnB,QAAL,CAAciB,IAAd,CAAmB,eAAnB,EAAoCyB,OAApC,CAA4C,qBAA5C;AACD;;;WAED,0BAAiB;AACf,UAAIG,KAAK,GAAG,IAAZ;;AAEA,UAAI,KAAK7C,QAAL,CAAcgE,EAAd,CAAiB,SAAjB,CAAJ,EAAiC;AAC/Bwd,QAAAA,qEAAA,CAAiB,KAAKxhB,QAAtB,EAAgC,KAAK8hB,WAArC,EAAkD,YAAW;AAC3Djf,UAAAA,KAAK,CAACyoB,WAAN,CAAkB,IAAlB;;AACA,eAAK5oB,OAAL,CAAa,eAAb;AACA,eAAKzB,IAAL,CAAU,eAAV,EAA2ByB,OAA3B,CAAmC,qBAAnC;AACD,SAJD;AAKD,OAND,MAOK;AACH8e,QAAAA,sEAAA,CAAkB,KAAKxhB,QAAvB,EAAiC,KAAK+hB,YAAtC,EAAoD,YAAW;AAC7Dlf,UAAAA,KAAK,CAACyoB,WAAN,CAAkB,KAAlB;;AACA,eAAK5oB,OAAL,CAAa,gBAAb;AACA,eAAKzB,IAAL,CAAU,eAAV,EAA2ByB,OAA3B,CAAmC,qBAAnC;AACD,SAJD;AAKD;AACF;;;WAED,qBAAYykB,IAAZ,EAAkB;AAChB,UAAIpmB,EAAE,GAAG,KAAKf,QAAL,CAAc,CAAd,EAAiBe,EAA1B;AACAvB,MAAAA,6CAAC,wBAAgBuB,EAAhB,gCAAsCA,EAAtC,iCAA6DA,EAA7D,SAAD,CACGG,IADH,CACQ;AACJ,yBAAiBimB,IAAI,GAAG,IAAH,GAAU;AAD3B,OADR;AAID;AAED;AACF;AACA;AACA;;;;WACE,oBAAW;AACT,WAAKnnB,QAAL,CAAcgD,GAAd,CAAkB,aAAlB;AACD;;;;EA7ImBvD;;AAgJtBurB,OAAO,CAAC9qB,QAAR,GAAmB;AACjB;AACF;AACA;AACA;AACA;AACE+qB,EAAAA,OAAO,EAAEM,SANQ;;AAOjB;AACF;AACA;AACA;AACA;AACA;AACElpB,EAAAA,OAAO,EAAE;AAbQ,CAAnB;;;;;;;;;;;;;;;;AC7JA,IAAI2O,GAAG,GAAG;AACRwH,EAAAA,gBAAgB,EAAEA,gBADV;AAER2F,EAAAA,WAAW,EAAEA,WAFL;AAGRjK,EAAAA,aAAa,EAAEA,aAHP;AAIR0J,EAAAA,kBAAkB,EAAEA;AAJZ,CAAV;AAOA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,SAASpF,gBAAT,CAA0B1Y,OAA1B,EAAmCkC,MAAnC,EAA2CwpB,MAA3C,EAAmDC,MAAnD,EAA2DC,YAA3D,EAAyE;AACvE,SAAOvN,WAAW,CAACre,OAAD,EAAUkC,MAAV,EAAkBwpB,MAAlB,EAA0BC,MAA1B,EAAkCC,YAAlC,CAAX,KAA+D,CAAtE;AACD;;AAED,SAASvN,WAAT,CAAqBre,OAArB,EAA8BkC,MAA9B,EAAsCwpB,MAAtC,EAA8CC,MAA9C,EAAsDC,YAAtD,EAAoE;AAClE,MAAIC,OAAO,GAAGzX,aAAa,CAACpU,OAAD,CAA3B;AAAA,MACA8rB,OADA;AAAA,MACSC,UADT;AAAA,MACqBC,QADrB;AAAA,MAC+BC,SAD/B;;AAEA,MAAI/pB,MAAJ,EAAY;AACV,QAAIgqB,OAAO,GAAG9X,aAAa,CAAClS,MAAD,CAA3B;AAEA6pB,IAAAA,UAAU,GAAIG,OAAO,CAAC1Y,MAAR,GAAiB0Y,OAAO,CAAC5pB,MAAR,CAAeG,GAAjC,IAAyCopB,OAAO,CAACvpB,MAAR,CAAeG,GAAf,GAAqBopB,OAAO,CAACrY,MAAtE,CAAb;AACAsY,IAAAA,OAAO,GAAMD,OAAO,CAACvpB,MAAR,CAAeG,GAAf,GAAqBypB,OAAO,CAAC5pB,MAAR,CAAeG,GAAjD;AACAupB,IAAAA,QAAQ,GAAKH,OAAO,CAACvpB,MAAR,CAAe4gB,IAAf,GAAsBgJ,OAAO,CAAC5pB,MAAR,CAAe4gB,IAAlD;AACA+I,IAAAA,SAAS,GAAKC,OAAO,CAAC5X,KAAR,GAAgB4X,OAAO,CAAC5pB,MAAR,CAAe4gB,IAAhC,IAAyC2I,OAAO,CAACvpB,MAAR,CAAe4gB,IAAf,GAAsB2I,OAAO,CAACvX,KAAvE,CAAb;AACD,GAPD,MAQK;AACHyX,IAAAA,UAAU,GAAIF,OAAO,CAACM,UAAR,CAAmB3Y,MAAnB,GAA4BqY,OAAO,CAACM,UAAR,CAAmB7pB,MAAnB,CAA0BG,GAAvD,IAA+DopB,OAAO,CAACvpB,MAAR,CAAeG,GAAf,GAAqBopB,OAAO,CAACrY,MAA5F,CAAb;AACAsY,IAAAA,OAAO,GAAMD,OAAO,CAACvpB,MAAR,CAAeG,GAAf,GAAqBopB,OAAO,CAACM,UAAR,CAAmB7pB,MAAnB,CAA0BG,GAA5D;AACAupB,IAAAA,QAAQ,GAAKH,OAAO,CAACvpB,MAAR,CAAe4gB,IAAf,GAAsB2I,OAAO,CAACM,UAAR,CAAmB7pB,MAAnB,CAA0B4gB,IAA7D;AACA+I,IAAAA,SAAS,GAAIJ,OAAO,CAACM,UAAR,CAAmB7X,KAAnB,IAA4BuX,OAAO,CAACvpB,MAAR,CAAe4gB,IAAf,GAAsB2I,OAAO,CAACvX,KAA1D,CAAb;AACD;;AAEDyX,EAAAA,UAAU,GAAGH,YAAY,GAAG,CAAH,GAAOzkB,IAAI,CAACE,GAAL,CAAS0kB,UAAT,EAAqB,CAArB,CAAhC;AACAD,EAAAA,OAAO,GAAM3kB,IAAI,CAACE,GAAL,CAASykB,OAAT,EAAkB,CAAlB,CAAb;AACAE,EAAAA,QAAQ,GAAK7kB,IAAI,CAACE,GAAL,CAAS2kB,QAAT,EAAmB,CAAnB,CAAb;AACAC,EAAAA,SAAS,GAAI9kB,IAAI,CAACE,GAAL,CAAS4kB,SAAT,EAAoB,CAApB,CAAb;;AAEA,MAAIP,MAAJ,EAAY;AACV,WAAOM,QAAQ,GAAGC,SAAlB;AACD;;AACD,MAAIN,MAAJ,EAAY;AACV,WAAOG,OAAO,GAAGC,UAAjB;AACD,GA5BiE,CA8BlE;;;AACA,SAAO5kB,IAAI,CAACilB,IAAL,CAAWN,OAAO,GAAGA,OAAX,GAAuBC,UAAU,GAAGA,UAApC,GAAmDC,QAAQ,GAAGA,QAA9D,GAA2EC,SAAS,GAAGA,SAAjG,CAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS7X,aAAT,CAAuB3J,IAAvB,EAA4B;AAC1BA,EAAAA,IAAI,GAAGA,IAAI,CAACnJ,MAAL,GAAcmJ,IAAI,CAAC,CAAD,CAAlB,GAAwBA,IAA/B;;AAEA,MAAIA,IAAI,KAAK7I,MAAT,IAAmB6I,IAAI,KAAK+E,QAAhC,EAA0C;AACxC,UAAM,IAAI4b,KAAJ,CAAU,8CAAV,CAAN;AACD;;AAED,MAAIiB,IAAI,GAAG5hB,IAAI,CAAC4J,qBAAL,EAAX;AAAA,MACIiY,OAAO,GAAG7hB,IAAI,CAAC8hB,UAAL,CAAgBlY,qBAAhB,EADd;AAAA,MAEImY,OAAO,GAAGhd,QAAQ,CAAC2G,IAAT,CAAc9B,qBAAd,EAFd;AAAA,MAGIoY,IAAI,GAAG7qB,MAAM,CAACykB,WAHlB;AAAA,MAIIqG,IAAI,GAAG9qB,MAAM,CAAC+qB,WAJlB;AAMA,SAAO;AACLrY,IAAAA,KAAK,EAAE+X,IAAI,CAAC/X,KADP;AAELd,IAAAA,MAAM,EAAE6Y,IAAI,CAAC7Y,MAFR;AAGLlR,IAAAA,MAAM,EAAE;AACNG,MAAAA,GAAG,EAAE4pB,IAAI,CAAC5pB,GAAL,GAAWgqB,IADV;AAENvJ,MAAAA,IAAI,EAAEmJ,IAAI,CAACnJ,IAAL,GAAYwJ;AAFZ,KAHH;AAOLE,IAAAA,UAAU,EAAE;AACVtY,MAAAA,KAAK,EAAEgY,OAAO,CAAChY,KADL;AAEVd,MAAAA,MAAM,EAAE8Y,OAAO,CAAC9Y,MAFN;AAGVlR,MAAAA,MAAM,EAAE;AACNG,QAAAA,GAAG,EAAE6pB,OAAO,CAAC7pB,GAAR,GAAcgqB,IADb;AAENvJ,QAAAA,IAAI,EAAEoJ,OAAO,CAACpJ,IAAR,GAAewJ;AAFf;AAHE,KAPP;AAeLP,IAAAA,UAAU,EAAE;AACV7X,MAAAA,KAAK,EAAEkY,OAAO,CAAClY,KADL;AAEVd,MAAAA,MAAM,EAAEgZ,OAAO,CAAChZ,MAFN;AAGVlR,MAAAA,MAAM,EAAE;AACNG,QAAAA,GAAG,EAAEgqB,IADC;AAENvJ,QAAAA,IAAI,EAAEwJ;AAFA;AAHE;AAfP,GAAP;AAwBD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS5O,kBAAT,CAA4B9d,OAA5B,EAAqC2B,MAArC,EAA6CwT,QAA7C,EAAuDG,SAAvD,EAAkEmB,OAAlE,EAA2EC,OAA3E,EAAoFmW,UAApF,EAAgG;AAC9F,MAAIC,QAAQ,GAAG1Y,aAAa,CAACpU,OAAD,CAA5B;AAAA,MACI+sB,WAAW,GAAGprB,MAAM,GAAGyS,aAAa,CAACzS,MAAD,CAAhB,GAA2B,IADnD;AAGI,MAAI0Z,MAAJ,EAAY2R,OAAZ;;AAEJ,MAAID,WAAW,KAAK,IAApB,EAA0B;AAC1B;AACA,YAAQ5X,QAAR;AACE,WAAK,KAAL;AACEkG,QAAAA,MAAM,GAAG0R,WAAW,CAACzqB,MAAZ,CAAmBG,GAAnB,IAA0BqqB,QAAQ,CAACtZ,MAAT,GAAkBiD,OAA5C,CAAT;AACA;;AACF,WAAK,QAAL;AACE4E,QAAAA,MAAM,GAAG0R,WAAW,CAACzqB,MAAZ,CAAmBG,GAAnB,GAAyBsqB,WAAW,CAACvZ,MAArC,GAA8CiD,OAAvD;AACA;;AACF,WAAK,MAAL;AACEuW,QAAAA,OAAO,GAAGD,WAAW,CAACzqB,MAAZ,CAAmB4gB,IAAnB,IAA2B4J,QAAQ,CAACxY,KAAT,GAAiBoC,OAA5C,CAAV;AACA;;AACF,WAAK,OAAL;AACEsW,QAAAA,OAAO,GAAGD,WAAW,CAACzqB,MAAZ,CAAmB4gB,IAAnB,GAA0B6J,WAAW,CAACzY,KAAtC,GAA8CoC,OAAxD;AACA;AAZJ,KAF0B,CAiB1B;;;AACA,YAAQvB,QAAR;AACE,WAAK,KAAL;AACA,WAAK,QAAL;AACE,gBAAQG,SAAR;AACE,eAAK,MAAL;AACE0X,YAAAA,OAAO,GAAGD,WAAW,CAACzqB,MAAZ,CAAmB4gB,IAAnB,GAA0BxM,OAApC;AACA;;AACF,eAAK,OAAL;AACEsW,YAAAA,OAAO,GAAGD,WAAW,CAACzqB,MAAZ,CAAmB4gB,IAAnB,GAA0B4J,QAAQ,CAACxY,KAAnC,GAA2CyY,WAAW,CAACzY,KAAvD,GAA+DoC,OAAzE;AACA;;AACF,eAAK,QAAL;AACEsW,YAAAA,OAAO,GAAGH,UAAU,GAAGnW,OAAH,GAAeqW,WAAW,CAACzqB,MAAZ,CAAmB4gB,IAAnB,GAA2B6J,WAAW,CAACzY,KAAZ,GAAoB,CAAhD,GAAuDwY,QAAQ,CAACxY,KAAT,GAAiB,CAAzE,GAA+EoC,OAAhH;AACA;AATJ;;AAWA;;AACF,WAAK,OAAL;AACA,WAAK,MAAL;AACE,gBAAQpB,SAAR;AACE,eAAK,QAAL;AACE+F,YAAAA,MAAM,GAAG0R,WAAW,CAACzqB,MAAZ,CAAmBG,GAAnB,GAAyBgU,OAAzB,GAAmCsW,WAAW,CAACvZ,MAA/C,GAAwDsZ,QAAQ,CAACtZ,MAA1E;AACA;;AACF,eAAK,KAAL;AACE6H,YAAAA,MAAM,GAAG0R,WAAW,CAACzqB,MAAZ,CAAmBG,GAAnB,GAAyBgU,OAAlC;AACA;;AACF,eAAK,QAAL;AACE4E,YAAAA,MAAM,GAAI0R,WAAW,CAACzqB,MAAZ,CAAmBG,GAAnB,GAAyBgU,OAAzB,GAAoCsW,WAAW,CAACvZ,MAAZ,GAAqB,CAA1D,GAAiEsZ,QAAQ,CAACtZ,MAAT,GAAkB,CAA5F;AACA;AATJ;;AAWA;AA5BJ;AA8BC;;AAED,SAAO;AAAC/Q,IAAAA,GAAG,EAAE4Y,MAAN;AAAc6H,IAAAA,IAAI,EAAE8J;AAApB,GAAP;AACD;;;;;;;;;;;;;;;;;;;AC5KD;AAEA;AACA;AACA;AACA;AACA;;AACA,SAASzD,cAAT,CAAwB0D,MAAxB,EAAgC3f,QAAhC,EAAyC;AACvC,MAAI4f,IAAI,GAAG,IAAX;AAAA,MACIC,QAAQ,GAAGF,MAAM,CAAC3rB,MADtB;;AAGA,MAAI6rB,QAAQ,KAAK,CAAjB,EAAoB;AAClB7f,IAAAA,QAAQ;AACT;;AAED2f,EAAAA,MAAM,CAACrsB,IAAP,CAAY,YAAU;AACpB;AACA,QAAI,KAAKwsB,QAAL,IAAiB,OAAO,KAAKC,YAAZ,KAA6B,WAAlD,EAA+D;AAC7DC,MAAAA,iBAAiB;AAClB,KAFD,MAGK;AACH;AACA,UAAIC,KAAK,GAAG,IAAIC,KAAJ,EAAZ,CAFG,CAGH;;AACA,UAAIC,MAAM,GAAG,gCAAb;AACA/tB,MAAAA,6CAAC,CAAC6tB,KAAD,CAAD,CAASpd,GAAT,CAAasd,MAAb,EAAqB,SAASC,EAAT,CAAYjS,KAAZ,EAAkB;AACrC;AACA/b,QAAAA,6CAAC,CAAC,IAAD,CAAD,CAAQwD,GAAR,CAAYuqB,MAAZ,EAAoBC,EAApB;AACAJ,QAAAA,iBAAiB;AAClB,OAJD;AAKAC,MAAAA,KAAK,CAACI,GAAN,GAAYjuB,6CAAC,CAAC,IAAD,CAAD,CAAQ0B,IAAR,CAAa,KAAb,CAAZ;AACD;AACF,GAjBD;;AAmBA,WAASksB,iBAAT,GAA6B;AAC3BH,IAAAA,QAAQ;;AACR,QAAIA,QAAQ,KAAK,CAAjB,EAAoB;AAClB7f,MAAAA,QAAQ;AACT;AACF;AACF;;;;;;;;;;;;;;;;;;;;ACxCD;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AAEA,IAAMsgB,QAAQ,GAAG;AACf,KAAG,KADY;AAEf,MAAI,OAFW;AAGf,MAAI,QAHW;AAIf,MAAI,OAJW;AAKf,MAAI,KALW;AAMf,MAAI,MANW;AAOf,MAAI,YAPW;AAQf,MAAI,UARW;AASf,MAAI,aATW;AAUf,MAAI;AAVW,CAAjB;AAaA,IAAIC,QAAQ,GAAG,EAAf,EAEA;;AACA,SAAS3X,aAAT,CAAuBhW,QAAvB,EAAiC;AAC/B,MAAG,CAACA,QAAJ,EAAc;AAAC,WAAO,KAAP;AAAe;;AAC9B,SAAOA,QAAQ,CAACiB,IAAT,CAAc,8KAAd,EAA8LwJ,MAA9L,CAAqM,YAAW;AACrN,QAAI,CAACjL,6CAAC,CAAC,IAAD,CAAD,CAAQwE,EAAR,CAAW,UAAX,CAAD,IAA2BxE,6CAAC,CAAC,IAAD,CAAD,CAAQ0B,IAAR,CAAa,UAAb,IAA2B,CAA1D,EAA6D;AAAE,aAAO,KAAP;AAAe,KADuI,CACtI;;;AAC/E,WAAO,IAAP;AACD,GAHM,EAIN0sB,IAJM,CAIA,UAAUC,CAAV,EAAaC,CAAb,EAAiB;AACtB,QAAItuB,6CAAC,CAACquB,CAAD,CAAD,CAAK3sB,IAAL,CAAU,UAAV,KAAyB1B,6CAAC,CAACsuB,CAAD,CAAD,CAAK5sB,IAAL,CAAU,UAAV,CAA7B,EAAoD;AAClD,aAAO,CAAP;AACD;;AACD,QAAI6sB,SAAS,GAAG/a,QAAQ,CAACxT,6CAAC,CAACquB,CAAD,CAAD,CAAK3sB,IAAL,CAAU,UAAV,CAAD,CAAxB;AAAA,QACE8sB,SAAS,GAAGhb,QAAQ,CAACxT,6CAAC,CAACsuB,CAAD,CAAD,CAAK5sB,IAAL,CAAU,UAAV,CAAD,CADtB,CAJsB,CAMtB;;AACA,QAAI,OAAO1B,6CAAC,CAACquB,CAAD,CAAD,CAAK3sB,IAAL,CAAU,UAAV,CAAP,IAAgC,WAAhC,IAA+C8sB,SAAS,GAAG,CAA/D,EAAkE;AAChE,aAAO,CAAP;AACD;;AACD,QAAI,OAAOxuB,6CAAC,CAACsuB,CAAD,CAAD,CAAK5sB,IAAL,CAAU,UAAV,CAAP,IAAgC,WAAhC,IAA+C6sB,SAAS,GAAG,CAA/D,EAAkE;AAChE,aAAO,CAAC,CAAR;AACD;;AACD,QAAIA,SAAS,IAAI,CAAb,IAAkBC,SAAS,GAAG,CAAlC,EAAqC;AACnC,aAAO,CAAP;AACD;;AACD,QAAIA,SAAS,IAAI,CAAb,IAAkBD,SAAS,GAAG,CAAlC,EAAqC;AACnC,aAAO,CAAC,CAAR;AACD;;AACD,QAAIA,SAAS,GAAGC,SAAhB,EAA2B;AACzB,aAAO,CAAC,CAAR;AACD;;AACD,QAAID,SAAS,GAAGC,SAAhB,EAA2B;AACzB,aAAO,CAAP;AACD;AACF,GA7BM,CAAP;AA8BD;;AAED,SAASC,QAAT,CAAkB1S,KAAlB,EAAyB;AACvB,MAAIkE,GAAG,GAAGiO,QAAQ,CAACnS,KAAK,CAAC0O,KAAN,IAAe1O,KAAK,CAAC2S,OAAtB,CAAR,IAA0CC,MAAM,CAACC,YAAP,CAAoB7S,KAAK,CAAC0O,KAA1B,EAAiCoE,WAAjC,EAApD,CADuB,CAGvB;;AACA5O,EAAAA,GAAG,GAAGA,GAAG,CAACjR,OAAJ,CAAY,KAAZ,EAAmB,EAAnB,CAAN;AAEA,MAAI+M,KAAK,CAAC+S,QAAV,EAAoB7O,GAAG,mBAAYA,GAAZ,CAAH;AACpB,MAAIlE,KAAK,CAACgT,OAAV,EAAmB9O,GAAG,kBAAWA,GAAX,CAAH;AACnB,MAAIlE,KAAK,CAACiT,MAAV,EAAkB/O,GAAG,iBAAUA,GAAV,CAAH,CARK,CAUvB;;AACAA,EAAAA,GAAG,GAAGA,GAAG,CAACjR,OAAJ,CAAY,IAAZ,EAAkB,EAAlB,CAAN;AAEA,SAAOiR,GAAP;AACD;;AAED,IAAI7f,QAAQ,GAAG;AACbuK,EAAAA,IAAI,EAAEskB,WAAW,CAACf,QAAD,CADJ;;AAGb;AACF;AACA;AACA;AACA;AACA;AACEO,EAAAA,QAAQ,EAAEA,QATG;;AAWb;AACF;AACA;AACA;AACA;AACA;AACE5qB,EAAAA,SAjBa,qBAiBHkY,KAjBG,EAiBImT,SAjBJ,EAiBezW,SAjBf,EAiB0B;AACrC,QAAI0W,WAAW,GAAGhB,QAAQ,CAACe,SAAD,CAA1B;AAAA,QACER,OAAO,GAAG,KAAKD,QAAL,CAAc1S,KAAd,CADZ;AAAA,QAEEqT,IAFF;AAAA,QAGEC,OAHF;AAAA,QAIE5iB,EAJF;AAMA,QAAI,CAAC0iB,WAAL,EAAkB,OAAO1qB,OAAO,CAACwV,IAAR,CAAa,wBAAb,CAAP,CAPmB,CASrC;;AACA,QAAI8B,KAAK,CAACuT,cAAN,KAAyB,IAA7B,EAAmC,OAVE,CAYrC;;AACA,QAAI,OAAOH,WAAW,CAACI,GAAnB,KAA2B,WAA/B,EAA4C;AACxCH,MAAAA,IAAI,GAAGD,WAAP,CADwC,CACpB;AACvB,KAFD,MAEO;AAAE;AACL,UAAIhY,2DAAG,EAAP,EAAWiY,IAAI,GAAGpvB,oDAAA,CAAS,EAAT,EAAamvB,WAAW,CAACI,GAAzB,EAA8BJ,WAAW,CAAC9f,GAA1C,CAAP,CAAX,KAEK+f,IAAI,GAAGpvB,oDAAA,CAAS,EAAT,EAAamvB,WAAW,CAAC9f,GAAzB,EAA8B8f,WAAW,CAACI,GAA1C,CAAP;AACR;;AACDF,IAAAA,OAAO,GAAGD,IAAI,CAACV,OAAD,CAAd;AAEAjiB,IAAAA,EAAE,GAAGgM,SAAS,CAAC4W,OAAD,CAAd,CAtBqC,CAuBpC;;AACD,QAAI5iB,EAAE,IAAI,OAAOA,EAAP,KAAc,UAAxB,EAAoC;AAClC,UAAI+iB,WAAW,GAAG/iB,EAAE,CAACH,KAAH,EAAlB,CADkC,CAGlC;;AACAyP,MAAAA,KAAK,CAACuT,cAAN,GAAuB,IAAvB,CAJkC,CAMlC;;AACA,UAAI7W,SAAS,CAACpU,OAAV,IAAqB,OAAOoU,SAAS,CAACpU,OAAjB,KAA6B,UAAtD,EAAkE;AAC9DoU,QAAAA,SAAS,CAACpU,OAAV,CAAkBmrB,WAAlB;AACH;AACF,KAVD,MAUO;AACJ;AACD,UAAI/W,SAAS,CAACgX,SAAV,IAAuB,OAAOhX,SAAS,CAACgX,SAAjB,KAA+B,UAA1D,EAAsE;AAClEhX,QAAAA,SAAS,CAACgX,SAAV;AACH;AACF;AACF,GAzDY;;AA2Db;AACF;AACA;AACA;AACA;AAEEjZ,EAAAA,aAAa,EAAEA,aAjEF;;AAmEb;AACF;AACA;AACA;AACA;AAEE1V,EAAAA,QAzEa,oBAyEJ4uB,aAzEI,EAyEWN,IAzEX,EAyEiB;AAC5BjB,IAAAA,QAAQ,CAACuB,aAAD,CAAR,GAA0BN,IAA1B;AACD,GA3EY;AA8Eb;AACA;;AACA;AACF;AACA;AACA;AACExY,EAAAA,SApFa,qBAoFHpW,QApFG,EAoFO;AAClB,QAAIkW,UAAU,GAAGF,aAAa,CAAChW,QAAD,CAA9B;AAAA,QACImvB,eAAe,GAAGjZ,UAAU,CAAClP,EAAX,CAAc,CAAd,CADtB;AAAA,QAEIooB,cAAc,GAAGlZ,UAAU,CAAClP,EAAX,CAAc,CAAC,CAAf,CAFrB;AAIAhH,IAAAA,QAAQ,CAACiD,EAAT,CAAY,sBAAZ,EAAoC,UAASsY,KAAT,EAAgB;AAClD,UAAIA,KAAK,CAACxK,MAAN,KAAiBqe,cAAc,CAAC,CAAD,CAA/B,IAAsCnB,QAAQ,CAAC1S,KAAD,CAAR,KAAoB,KAA9D,EAAqE;AACnEA,QAAAA,KAAK,CAACpY,cAAN;AACAgsB,QAAAA,eAAe,CAAC3rB,KAAhB;AACD,OAHD,MAIK,IAAI+X,KAAK,CAACxK,MAAN,KAAiBoe,eAAe,CAAC,CAAD,CAAhC,IAAuClB,QAAQ,CAAC1S,KAAD,CAAR,KAAoB,WAA/D,EAA4E;AAC/EA,QAAAA,KAAK,CAACpY,cAAN;AACAisB,QAAAA,cAAc,CAAC5rB,KAAf;AACD;AACF,KATD;AAUD,GAnGY;;AAoGb;AACF;AACA;AACA;AACE6S,EAAAA,YAxGa,wBAwGArW,QAxGA,EAwGU;AACrBA,IAAAA,QAAQ,CAACgD,GAAT,CAAa,sBAAb;AACD;AA1GY,CAAf;AA6GA;AACA;AACA;AACA;;AACA,SAASyrB,WAAT,CAAqBY,GAArB,EAA0B;AACxB,MAAIC,CAAC,GAAG,EAAR;;AACA,OAAK,IAAIC,EAAT,IAAeF,GAAf;AAAoBC,IAAAA,CAAC,CAACD,GAAG,CAACE,EAAD,CAAJ,CAAD,GAAaF,GAAG,CAACE,EAAD,CAAhB;AAApB;;AACA,SAAOD,CAAP;AACD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CChMD;;AACA,IAAME,cAAc,GAAG;AACrB,aAAY,aADS;AAErBC,EAAAA,SAAS,EAAG,0CAFS;AAGrBC,EAAAA,QAAQ,EAAG,yCAHU;AAIrBC,EAAAA,MAAM,EAAG,yDACP,mDADO,GAEP,mDAFO,GAGP,8CAHO,GAIP,2CAJO,GAKP;AATmB,CAAvB,EAaA;AACA;;AACA;;AACAjuB,MAAM,CAACkuB,UAAP,KAAsBluB,MAAM,CAACkuB,UAAP,GAAqB,YAAY;AACrD,eADqD,CAGrD;;AACA,MAAIC,UAAU,GAAInuB,MAAM,CAACmuB,UAAP,IAAqBnuB,MAAM,CAACouB,KAA9C,CAJqD,CAMrD;;AACA,MAAI,CAACD,UAAL,EAAiB;AACf,QAAIngB,KAAK,GAAKJ,QAAQ,CAACC,aAAT,CAAuB,OAAvB,CAAd;AAAA,QACAwgB,MAAM,GAAQzgB,QAAQ,CAAC0gB,oBAAT,CAA8B,QAA9B,EAAwC,CAAxC,CADd;AAAA,QAEA9rB,IAAI,GAAU,IAFd;AAIAwL,IAAAA,KAAK,CAAC9F,IAAN,GAAc,UAAd;AACA8F,IAAAA,KAAK,CAAC3O,EAAN,GAAc,mBAAd;;AAEA,QAAI,CAACgvB,MAAL,EAAa;AACXzgB,MAAAA,QAAQ,CAAC2gB,IAAT,CAAcC,WAAd,CAA0BxgB,KAA1B;AACD,KAFD,MAEO;AACLqgB,MAAAA,MAAM,CAAC1D,UAAP,CAAkB8D,YAAlB,CAA+BzgB,KAA/B,EAAsCqgB,MAAtC;AACD,KAZc,CAcf;;;AACA7rB,IAAAA,IAAI,GAAI,sBAAsBxC,MAAvB,IAAkCA,MAAM,CAAC2mB,gBAAP,CAAwB3Y,KAAxB,EAA+B,IAA/B,CAAlC,IAA0EA,KAAK,CAAC0gB,YAAvF;AAEAP,IAAAA,UAAU,GAAG;AACXQ,MAAAA,WAAW,EAAE,qBAAUP,KAAV,EAAiB;AAC5B,YAAIQ,IAAI,GAAG,YAAYR,KAAZ,GAAoB,wCAA/B,CAD4B,CAG5B;;AACA,YAAIpgB,KAAK,CAAC6gB,UAAV,EAAsB;AACpB7gB,UAAAA,KAAK,CAAC6gB,UAAN,CAAiBC,OAAjB,GAA2BF,IAA3B;AACD,SAFD,MAEO;AACL5gB,UAAAA,KAAK,CAAC+gB,WAAN,GAAoBH,IAApB;AACD,SAR2B,CAU5B;;;AACA,eAAOpsB,IAAI,CAACkQ,KAAL,KAAe,KAAtB;AACD;AAbU,KAAb;AAeD;;AAED,SAAO,UAAS0b,KAAT,EAAgB;AACrB,WAAO;AACLY,MAAAA,OAAO,EAAEb,UAAU,CAACQ,WAAX,CAAuBP,KAAK,IAAI,KAAhC,CADJ;AAELA,MAAAA,KAAK,EAAEA,KAAK,IAAI;AAFX,KAAP;AAID,GALD;AAMD,CA/CyC,EAA1C;AAgDA;;AAEA,IAAI5nB,UAAU,GAAG;AACfyoB,EAAAA,OAAO,EAAE,EADM;AAGfjO,EAAAA,OAAO,EAAE,EAHM;;AAKf;AACF;AACA;AACA;AACA;AACEriB,EAAAA,KAVe,mBAUP;AAEN;AACA,QAAI,KAAKuwB,aAAL,KAAuB,IAA3B,EAAiC;AAC/B;AACD,KAFD,MAEO;AACL,WAAKA,aAAL,GAAqB,IAArB;AACD;;AAED,QAAI5D,IAAI,GAAG,IAAX;AACA,QAAI6D,KAAK,GAAGrxB,6CAAC,CAAC,oBAAD,CAAb;;AACA,QAAG,CAACqxB,KAAK,CAACzvB,MAAV,EAAiB;AACf5B,MAAAA,6CAAC,CAAC,2DAAD,CAAD,CAA+DuhB,QAA/D,CAAwEzR,QAAQ,CAAC2gB,IAAjF;AACD;;AAED,QAAIa,eAAe,GAAGtxB,6CAAC,CAAC,gBAAD,CAAD,CAAoBkG,GAApB,CAAwB,aAAxB,CAAtB;AACA,QAAIqrB,YAAJ;AAEAA,IAAAA,YAAY,GAAGC,kBAAkB,CAACF,eAAD,CAAjC;AAEA9D,IAAAA,IAAI,CAAC2D,OAAL,GAAe,EAAf,CApBM,CAoBa;;AAEnB,SAAK,IAAIlR,GAAT,IAAgBsR,YAAhB,EAA8B;AAC5B,UAAGA,YAAY,CAACrR,cAAb,CAA4BD,GAA5B,CAAH,EAAqC;AACnCuN,QAAAA,IAAI,CAAC2D,OAAL,CAAaznB,IAAb,CAAkB;AAChBT,UAAAA,IAAI,EAAEgX,GADU;AAEhBS,UAAAA,KAAK,wCAAiC6Q,YAAY,CAACtR,GAAD,CAA7C;AAFW,SAAlB;AAID;AACF;;AAED,SAAKiD,OAAL,GAAe,KAAKuO,eAAL,EAAf;;AAEA,SAAKC,QAAL;AACD,GA5Cc;;AA8Cf;AACF;AACA;AACA;AACA;AACA;AACEC,EAAAA,OApDe,qBAoDL;AACR,SAAKP,aAAL,GAAqB,KAArB;;AACA,SAAKvwB,KAAL;AACD,GAvDc;;AAyDf;AACF;AACA;AACA;AACA;AACA;AACE0a,EAAAA,OA/De,mBA+DPqW,IA/DO,EA+DD;AACZ,QAAIC,KAAK,GAAG,KAAKrQ,GAAL,CAASoQ,IAAT,CAAZ;;AAEA,QAAIC,KAAJ,EAAW;AACT,aAAO3vB,MAAM,CAACkuB,UAAP,CAAkByB,KAAlB,EAAyBX,OAAhC;AACD;;AAED,WAAO,KAAP;AACD,GAvEc;;AAyEf;AACF;AACA;AACA;AACA;AACA;AACA;AACEY,EAAAA,IAhFe,gBAgFVF,IAhFU,EAgFJ;AACT,WAAOA,IAAI,KAAK,KAAKH,eAAL,EAAhB;AACD,GAlFc;;AAoFf;AACF;AACA;AACA;AACA;AACA;AACEM,EAAAA,IA1Fe,gBA0FVH,IA1FU,EA0FJ;AACT,QAAMI,QAAQ,GAAG,KAAKluB,IAAL,CAAU8tB,IAAV,CAAjB,CADS,CAGT;AACA;;AACA,QAAII,QAAJ,EAAc;AACZ,aAAO,CAAC,KAAKzW,OAAL,CAAayW,QAAb,CAAR;AACD,KAPQ,CAST;AACA;;;AACA,WAAO,IAAP;AACD,GAtGc;;AAwGf;AACF;AACA;AACA;AACA;AACA;AACExtB,EAAAA,EA9Ge,cA8GZotB,IA9GY,EA8GN;AACP,QAAMK,KAAK,GAAGL,IAAI,CAACpmB,IAAL,GAAYL,KAAZ,CAAkB,GAAlB,EAAuBF,MAAvB,CAA8B,UAAAT,CAAC;AAAA,aAAI,CAAC,CAACA,CAAC,CAAC5I,MAAR;AAAA,KAA/B,CAAd;;AACA,gCAAkCqwB,KAAlC;AAAA,QAAOC,MAAP;AAAA;AAAA,QAAeC,UAAf,wBAA4B,EAA5B,WAFO,CAIP;;;AACA,QAAIA,UAAU,KAAK,MAAnB,EAA2B;AACzB,aAAO,KAAKL,IAAL,CAAUI,MAAV,CAAP;AACD,KAPM,CAQP;;;AACA,QAAI,CAACC,UAAD,IAAeA,UAAU,KAAK,IAAlC,EAAwC;AACtC,aAAO,KAAK5W,OAAL,CAAa2W,MAAb,CAAP;AACD,KAXM,CAYP;;;AACA,QAAIC,UAAU,KAAK,MAAnB,EAA2B;AACzB,aAAO,KAAKJ,IAAL,CAAUG,MAAV,CAAP;AACD;;AAED,UAAM,IAAIxG,KAAJ,+IAEkEkG,IAFlE,eAAN;AAID,GAnIc;;AAqIf;AACF;AACA;AACA;AACA;AACA;AACEpQ,EAAAA,GA3Ie,eA2IXoQ,IA3IW,EA2IL;AACR,SAAK,IAAIrqB,CAAT,IAAc,KAAK4pB,OAAnB,EAA4B;AAC1B,UAAG,KAAKA,OAAL,CAAajR,cAAb,CAA4B3Y,CAA5B,CAAH,EAAmC;AACjC,YAAIsqB,KAAK,GAAG,KAAKV,OAAL,CAAa5pB,CAAb,CAAZ;AACA,YAAIqqB,IAAI,KAAKC,KAAK,CAAC5oB,IAAnB,EAAyB,OAAO4oB,KAAK,CAACnR,KAAb;AAC1B;AACF;;AAED,WAAO,IAAP;AACD,GApJc;;AAsJf;AACF;AACA;AACA;AACA;AACA;AACE5c,EAAAA,IA5Je,gBA4JV8tB,IA5JU,EA4JJ;AAAA;;AACT,QAAMQ,UAAU,GAAG,KAAKjB,OAAL,CAAakB,SAAb,CAAuB,UAACC,CAAD;AAAA,aAAO,KAAI,CAACC,aAAL,CAAmBD,CAAnB,MAA0BV,IAAjC;AAAA,KAAvB,CAAnB;;AACA,QAAIQ,UAAU,KAAK,CAAC,CAApB,EAAuB;AACrB,YAAM,IAAI1G,KAAJ,0CACkBkG,IADlB,kHAAN;AAID;;AAED,QAAMY,SAAS,GAAG,KAAKrB,OAAL,CAAaiB,UAAU,GAAG,CAA1B,CAAlB;AACA,WAAOI,SAAS,GAAGA,SAAS,CAACvpB,IAAb,GAAoB,IAApC;AACD,GAvKc;;AAyKf;AACF;AACA;AACA;AACA;AACA;AACA;AACEspB,EAAAA,aAhLe,yBAgLD7R,KAhLC,EAgLM;AACnB,QAAI,OAAOA,KAAP,KAAiB,QAArB,EACE,OAAOA,KAAP;AACF,QAAI,QAAOA,KAAP,MAAiB,QAArB,EACE,OAAOA,KAAK,CAACzX,IAAb;AACF,UAAM,IAAIuD,SAAJ,wJAEuEkU,KAFvE,yBAEyFA,KAFzF,cAAN;AAID,GAzLc;;AA2Lf;AACF;AACA;AACA;AACA;AACA;AACE+Q,EAAAA,eAjMe,6BAiMG;AAChB,QAAIgB,OAAJ;;AAEA,SAAK,IAAIlrB,CAAC,GAAG,CAAb,EAAgBA,CAAC,GAAG,KAAK4pB,OAAL,CAAavvB,MAAjC,EAAyC2F,CAAC,EAA1C,EAA8C;AAC5C,UAAIsqB,KAAK,GAAG,KAAKV,OAAL,CAAa5pB,CAAb,CAAZ;;AAEA,UAAIrF,MAAM,CAACkuB,UAAP,CAAkByB,KAAK,CAACnR,KAAxB,EAA+BwQ,OAAnC,EAA4C;AAC1CuB,QAAAA,OAAO,GAAGZ,KAAV;AACD;AACF;;AAED,WAAOY,OAAO,IAAI,KAAKF,aAAL,CAAmBE,OAAnB,CAAlB;AACD,GA7Mc;;AA+Mf;AACF;AACA;AACA;AACA;AACEf,EAAAA,QApNe,sBAoNJ;AAAA;;AACT1xB,IAAAA,6CAAC,CAACkC,MAAD,CAAD,CAAUsB,GAAV,CAAc,sBAAd,EAAsCC,EAAtC,CAAyC,sBAAzC,EAAiE,YAAM;AACrE,UAAIivB,OAAO,GAAG,MAAI,CAACjB,eAAL,EAAd;AAAA,UAAsCkB,WAAW,GAAG,MAAI,CAACzP,OAAzD;;AAEA,UAAIwP,OAAO,KAAKC,WAAhB,EAA6B;AAC3B;AACA,cAAI,CAACzP,OAAL,GAAewP,OAAf,CAF2B,CAI3B;;AACA1yB,QAAAA,6CAAC,CAACkC,MAAD,CAAD,CAAUgB,OAAV,CAAkB,uBAAlB,EAA2C,CAACwvB,OAAD,EAAUC,WAAV,CAA3C;AACD;AACF,KAVD;AAWD;AAhOc,CAAjB,EAqOA;;AACA,SAASnB,kBAAT,CAA4B3iB,GAA5B,EAAiC;AAC/B,MAAI+jB,WAAW,GAAG,EAAlB;;AAEA,MAAI,OAAO/jB,GAAP,KAAe,QAAnB,EAA6B;AAC3B,WAAO+jB,WAAP;AACD;;AAED/jB,EAAAA,GAAG,GAAGA,GAAG,CAACrD,IAAJ,GAAWU,KAAX,CAAiB,CAAjB,EAAoB,CAAC,CAArB,CAAN,CAP+B,CAOA;;AAE/B,MAAI,CAAC2C,GAAL,EAAU;AACR,WAAO+jB,WAAP;AACD;;AAEDA,EAAAA,WAAW,GAAG/jB,GAAG,CAAC1D,KAAJ,CAAU,GAAV,EAAe0nB,MAAf,CAAsB,UAASC,GAAT,EAAcC,KAAd,EAAqB;AACvD,QAAId,KAAK,GAAGc,KAAK,CAAC/jB,OAAN,CAAc,KAAd,EAAqB,GAArB,EAA0B7D,KAA1B,CAAgC,GAAhC,CAAZ;AACA,QAAI8U,GAAG,GAAGgS,KAAK,CAAC,CAAD,CAAf;AACA,QAAIlY,GAAG,GAAGkY,KAAK,CAAC,CAAD,CAAf;AACAhS,IAAAA,GAAG,GAAG+S,kBAAkB,CAAC/S,GAAD,CAAxB,CAJuD,CAMvD;AACA;;AACAlG,IAAAA,GAAG,GAAG,OAAOA,GAAP,KAAe,WAAf,GAA6B,IAA7B,GAAoCiZ,kBAAkB,CAACjZ,GAAD,CAA5D;;AAEA,QAAI,CAAC+Y,GAAG,CAAC5S,cAAJ,CAAmBD,GAAnB,CAAL,EAA8B;AAC5B6S,MAAAA,GAAG,CAAC7S,GAAD,CAAH,GAAWlG,GAAX;AACD,KAFD,MAEO,IAAI/N,KAAK,CAACinB,OAAN,CAAcH,GAAG,CAAC7S,GAAD,CAAjB,CAAJ,EAA6B;AAClC6S,MAAAA,GAAG,CAAC7S,GAAD,CAAH,CAASvW,IAAT,CAAcqQ,GAAd;AACD,KAFM,MAEA;AACL+Y,MAAAA,GAAG,CAAC7S,GAAD,CAAH,GAAW,CAAC6S,GAAG,CAAC7S,GAAD,CAAJ,EAAWlG,GAAX,CAAX;AACD;;AACD,WAAO+Y,GAAP;AACD,GAlBa,EAkBX,EAlBW,CAAd;AAoBA,SAAOF,WAAP;AACD;;;;;;;;;;;;;;;;;;;;;AC7UD;AACA;AAEA;AACA;AACA;AACA;;AAEA,IAAMM,WAAW,GAAK,CAAC,WAAD,EAAc,WAAd,CAAtB;AACA,IAAMC,aAAa,GAAG,CAAC,kBAAD,EAAqB,kBAArB,CAAtB;AAEA,IAAMnR,MAAM,GAAG;AACba,EAAAA,SAAS,EAAE,mBAASviB,OAAT,EAAkB8yB,SAAlB,EAA6B5iB,EAA7B,EAAiC;AAC1C3N,IAAAA,OAAO,CAAC,IAAD,EAAOvC,OAAP,EAAgB8yB,SAAhB,EAA2B5iB,EAA3B,CAAP;AACD,GAHY;AAKbsS,EAAAA,UAAU,EAAE,oBAASxiB,OAAT,EAAkB8yB,SAAlB,EAA6B5iB,EAA7B,EAAiC;AAC3C3N,IAAAA,OAAO,CAAC,KAAD,EAAQvC,OAAR,EAAiB8yB,SAAjB,EAA4B5iB,EAA5B,CAAP;AACD;AAPY,CAAf;;AAUA,SAAS6iB,IAAT,CAAcC,QAAd,EAAwBvoB,IAAxB,EAA8B0B,EAA9B,EAAiC;AAC/B,MAAI8mB,IAAJ;AAAA,MAAUC,IAAV;AAAA,MAAgBxlB,KAAK,GAAG,IAAxB,CAD+B,CAE/B;;AAEA,MAAIslB,QAAQ,KAAK,CAAjB,EAAoB;AAClB7mB,IAAAA,EAAE,CAACH,KAAH,CAASvB,IAAT;AACAA,IAAAA,IAAI,CAAC7H,OAAL,CAAa,qBAAb,EAAoC,CAAC6H,IAAD,CAApC,EAA4CoF,cAA5C,CAA2D,qBAA3D,EAAkF,CAACpF,IAAD,CAAlF;AACA;AACD;;AAED,WAAS0oB,IAAT,CAAcC,EAAd,EAAiB;AACf,QAAG,CAAC1lB,KAAJ,EAAWA,KAAK,GAAG0lB,EAAR,CADI,CAEf;;AACAF,IAAAA,IAAI,GAAGE,EAAE,GAAG1lB,KAAZ;AACAvB,IAAAA,EAAE,CAACH,KAAH,CAASvB,IAAT;;AAEA,QAAGyoB,IAAI,GAAGF,QAAV,EAAmB;AAAEC,MAAAA,IAAI,GAAGrxB,MAAM,CAACmL,qBAAP,CAA6BomB,IAA7B,EAAmC1oB,IAAnC,CAAP;AAAkD,KAAvE,MACI;AACF7I,MAAAA,MAAM,CAACqL,oBAAP,CAA4BgmB,IAA5B;AACAxoB,MAAAA,IAAI,CAAC7H,OAAL,CAAa,qBAAb,EAAoC,CAAC6H,IAAD,CAApC,EAA4CoF,cAA5C,CAA2D,qBAA3D,EAAkF,CAACpF,IAAD,CAAlF;AACD;AACF;;AACDwoB,EAAAA,IAAI,GAAGrxB,MAAM,CAACmL,qBAAP,CAA6BomB,IAA7B,CAAP;AACD;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACA,SAAS5wB,OAAT,CAAiB8wB,IAAjB,EAAuBrzB,OAAvB,EAAgC8yB,SAAhC,EAA2C5iB,EAA3C,EAA+C;AAC7ClQ,EAAAA,OAAO,GAAGN,6CAAC,CAACM,OAAD,CAAD,CAAWkH,EAAX,CAAc,CAAd,CAAV;AAEA,MAAI,CAAClH,OAAO,CAACsB,MAAb,EAAqB;AAErB,MAAIgyB,SAAS,GAAGD,IAAI,GAAGT,WAAW,CAAC,CAAD,CAAd,GAAoBA,WAAW,CAAC,CAAD,CAAnD;AACA,MAAIW,WAAW,GAAGF,IAAI,GAAGR,aAAa,CAAC,CAAD,CAAhB,GAAsBA,aAAa,CAAC,CAAD,CAAzD,CAN6C,CAQ7C;;AACAW,EAAAA,KAAK;AAELxzB,EAAAA,OAAO,CACJoF,QADH,CACY0tB,SADZ,EAEGltB,GAFH,CAEO,YAFP,EAEqB,MAFrB;AAIAmH,EAAAA,qBAAqB,CAAC,YAAM;AAC1B/M,IAAAA,OAAO,CAACoF,QAAR,CAAiBkuB,SAAjB;AACA,QAAID,IAAJ,EAAUrzB,OAAO,CAACsiB,IAAR;AACX,GAHoB,CAArB,CAf6C,CAoB7C;;AACAvV,EAAAA,qBAAqB,CAAC,YAAM;AAC1B;AACA;AACA;AACA/M,IAAAA,OAAO,CAAC,CAAD,CAAP,CAAWyzB,WAAX;AACAzzB,IAAAA,OAAO,CACJ4F,GADH,CACO,YADP,EACqB,EADrB,EAEGR,QAFH,CAEYmuB,WAFZ;AAGD,GARoB,CAArB,CArB6C,CA+B7C;;AACAvzB,EAAAA,OAAO,CAACmQ,GAAR,CAAYb,qEAAa,CAACtP,OAAD,CAAzB,EAAoCqF,MAApC,EAhC6C,CAkC7C;;AACA,WAASA,MAAT,GAAkB;AAChB,QAAI,CAACguB,IAAL,EAAWrzB,OAAO,CAACwW,IAAR;AACXgd,IAAAA,KAAK;AACL,QAAItjB,EAAJ,EAAQA,EAAE,CAAClE,KAAH,CAAShM,OAAT;AACT,GAvC4C,CAyC7C;;;AACA,WAASwzB,KAAT,GAAiB;AACfxzB,IAAAA,OAAO,CAAC,CAAD,CAAP,CAAW4P,KAAX,CAAiB8jB,kBAAjB,GAAsC,CAAtC;AACA1zB,IAAAA,OAAO,CAACwF,WAAR,WAAuB8tB,SAAvB,cAAoCC,WAApC,cAAmDT,SAAnD;AACD;AACF;;;;;;;;;;;;;;;;;;;ACrGD;AAEA,IAAMjtB,IAAI,GAAG;AACXE,EAAAA,OADW,mBACH4tB,IADG,EACgB;AAAA,QAAb7pB,IAAa,uEAAN,IAAM;AACzB6pB,IAAAA,IAAI,CAACvyB,IAAL,CAAU,MAAV,EAAkB,SAAlB;AACAuyB,IAAAA,IAAI,CAACxyB,IAAL,CAAU,GAAV,EAAeC,IAAf,CAAoB;AAAC,cAAQ;AAAT,KAApB;AAEA,QAAIwyB,KAAK,GAAGD,IAAI,CAACxyB,IAAL,CAAU,IAAV,EAAgBC,IAAhB,CAAqB;AAAC,cAAQ;AAAT,KAArB,CAAZ;AAAA,QACIyyB,YAAY,gBAAS/pB,IAAT,aADhB;AAAA,QAEIgqB,YAAY,aAAMD,YAAN,UAFhB;AAAA,QAGIE,WAAW,gBAASjqB,IAAT,oBAHf;AAAA,QAIIkqB,SAAS,GAAIlqB,IAAI,KAAK,WAJ1B,CAJyB,CAQe;;AAExC8pB,IAAAA,KAAK,CAAChzB,IAAN,CAAW,YAAW;AACpB,UAAIqzB,KAAK,GAAGv0B,6CAAC,CAAC,IAAD,CAAb;AAAA,UACIwG,IAAI,GAAG+tB,KAAK,CAACtzB,QAAN,CAAe,IAAf,CADX;;AAGA,UAAIuF,IAAI,CAAC5E,MAAT,EAAiB;AACf2yB,QAAAA,KAAK,CAAC7uB,QAAN,CAAe2uB,WAAf;;AACA,YAAGC,SAAH,EAAc;AACZC,UAAAA,KAAK,CAACtzB,QAAN,CAAe,SAAf,EAA0BS,IAA1B,CAA+B;AAC7B,6BAAiB,IADY;AAE7B,0BAAc6yB,KAAK,CAACtzB,QAAN,CAAe,SAAf,EAA0B6vB,IAA1B;AAFe,WAA/B,EADY,CAKZ;AACA;AACA;;AACA,cAAG1mB,IAAI,KAAK,WAAZ,EAAyB;AACvBmqB,YAAAA,KAAK,CAAC7yB,IAAN,CAAW;AAAC,+BAAiB;AAAlB,aAAX;AACD;AACF;;AACD8E,QAAAA,IAAI,CACDd,QADH,mBACuByuB,YADvB,GAEGzyB,IAFH,CAEQ;AACJ,0BAAgB,EADZ;AAEJ,kBAAQ;AAFJ,SAFR;;AAMA,YAAG0I,IAAI,KAAK,WAAZ,EAAyB;AACvB5D,UAAAA,IAAI,CAAC9E,IAAL,CAAU;AAAC,2BAAe;AAAhB,WAAV;AACD;AACF;;AAED,UAAI6yB,KAAK,CAAC/xB,MAAN,CAAa,gBAAb,EAA+BZ,MAAnC,EAA2C;AACzC2yB,QAAAA,KAAK,CAAC7uB,QAAN,2BAAkC0uB,YAAlC;AACD;AACF,KAhCD;AAkCA;AACD,GA9CU;AAgDX3rB,EAAAA,IAhDW,gBAgDNwrB,IAhDM,EAgDA7pB,IAhDA,EAgDM;AACf,QAAI;AACA+pB,IAAAA,YAAY,gBAAS/pB,IAAT,aADhB;AAAA,QAEIgqB,YAAY,aAAMD,YAAN,UAFhB;AAAA,QAGIE,WAAW,gBAASjqB,IAAT,oBAHf;AAKA6pB,IAAAA,IAAI,CACDxyB,IADH,CACQ,wDADR,EAEGqE,WAFH,WAEkBquB,YAFlB,cAEkCC,YAFlC,cAEkDC,WAFlD,yCAGGvqB,UAHH,CAGc,cAHd,EAG8B5D,GAH9B,CAGkC,SAHlC,EAG6C,EAH7C;AAKD;AA3DU,CAAb;;;;;;;;;;;;;;;;;;ACFA;;AAEA,SAASsuB,KAAT,CAAezpB,IAAf,EAAqBxK,OAArB,EAA8BiQ,EAA9B,EAAkC;AAChC,MAAInN,KAAK,GAAG,IAAZ;AAAA,MACIiwB,QAAQ,GAAG/yB,OAAO,CAAC+yB,QADvB;AAAA,MACgC;AAC5BmB,EAAAA,SAAS,GAAG/pB,MAAM,CAACC,IAAP,CAAYI,IAAI,CAACpK,IAAL,EAAZ,EAAyB,CAAzB,KAA+B,OAF/C;AAAA,MAGI+zB,MAAM,GAAG,CAAC,CAHd;AAAA,MAII1mB,KAJJ;AAAA,MAKIlB,KALJ;;AAOA,OAAK6nB,QAAL,GAAgB,KAAhB;;AAEA,OAAKC,OAAL,GAAe,YAAW;AACxBF,IAAAA,MAAM,GAAG,CAAC,CAAV;AACA5mB,IAAAA,YAAY,CAAChB,KAAD,CAAZ;AACA,SAAKkB,KAAL;AACD,GAJD;;AAMA,OAAKA,KAAL,GAAa,YAAW;AACtB,SAAK2mB,QAAL,GAAgB,KAAhB,CADsB,CAEtB;;AACA7mB,IAAAA,YAAY,CAAChB,KAAD,CAAZ;AACA4nB,IAAAA,MAAM,GAAGA,MAAM,IAAI,CAAV,GAAcpB,QAAd,GAAyBoB,MAAlC;AACA3pB,IAAAA,IAAI,CAACpK,IAAL,CAAU,QAAV,EAAoB,KAApB;AACAqN,IAAAA,KAAK,GAAGf,IAAI,CAACC,GAAL,EAAR;AACAJ,IAAAA,KAAK,GAAGE,UAAU,CAAC,YAAU;AAC3B,UAAGzM,OAAO,CAACs0B,QAAX,EAAoB;AAClBxxB,QAAAA,KAAK,CAACuxB,OAAN,GADkB,CACF;;AACjB;;AACD,UAAIpkB,EAAE,IAAI,OAAOA,EAAP,KAAc,UAAxB,EAAoC;AAAEA,QAAAA,EAAE;AAAK;AAC9C,KALiB,EAKfkkB,MALe,CAAlB;AAMA3pB,IAAAA,IAAI,CAAC7H,OAAL,yBAA8BuxB,SAA9B;AACD,GAdD;;AAgBA,OAAKK,KAAL,GAAa,YAAW;AACtB,SAAKH,QAAL,GAAgB,IAAhB,CADsB,CAEtB;;AACA7mB,IAAAA,YAAY,CAAChB,KAAD,CAAZ;AACA/B,IAAAA,IAAI,CAACpK,IAAL,CAAU,QAAV,EAAoB,IAApB;AACA,QAAIqP,GAAG,GAAG/C,IAAI,CAACC,GAAL,EAAV;AACAwnB,IAAAA,MAAM,GAAGA,MAAM,IAAI1kB,GAAG,GAAGhC,KAAV,CAAf;AACAjD,IAAAA,IAAI,CAAC7H,OAAL,0BAA+BuxB,SAA/B;AACD,GARD;AASD;;;;;;;;;;;;;;;;;;;;;;;;;AC3CD;AACA;AACA;AACA;AAEA;AAEA,IAAIzf,KAAK,GAAG,EAAZ;AAEA,IAAI+f,SAAJ;AAAA,IACIC,SADJ;AAAA,IAEIC,SAFJ;AAAA,IAGIC,WAHJ;AAAA,IAIIC,UAJJ;AAAA,IAKIC,QAAQ,GAAG,KALf;AAAA,IAMIC,QAAQ,GAAG,KANf;;AAQA,SAASC,UAAT,CAAoB5xB,CAApB,EAAuB;AACrB,OAAK6xB,mBAAL,CAAyB,WAAzB,EAAsCC,WAAtC;AACA,OAAKD,mBAAL,CAAyB,UAAzB,EAAqCD,UAArC,EAFqB,CAIrB;;AACA,MAAI,CAACD,QAAL,EAAe;AACb,QAAII,QAAQ,GAAGz1B,mDAAA,CAAQ,KAAR,EAAem1B,UAAU,IAAIzxB,CAA7B,CAAf;AACA1D,IAAAA,6CAAC,CAAC,IAAD,CAAD,CAAQkD,OAAR,CAAgBuyB,QAAhB;AACD;;AAEDN,EAAAA,UAAU,GAAG,IAAb;AACAC,EAAAA,QAAQ,GAAG,KAAX;AACAC,EAAAA,QAAQ,GAAG,KAAX;AACD;;AAED,SAASG,WAAT,CAAqB9xB,CAArB,EAAwB;AACtB,MAAI,SAAS1D,wEAAb,EAAyC;AAAE0D,IAAAA,CAAC,CAACC,cAAF;AAAqB;;AAEhE,MAAGyxB,QAAH,EAAa;AACX,QAAIQ,CAAC,GAAGlyB,CAAC,CAACuY,OAAF,CAAU,CAAV,EAAa4Z,KAArB,CADW,CAEX;;AACA,QAAIC,EAAE,GAAGf,SAAS,GAAGa,CAArB,CAHW,CAIX;;AACA,QAAIG,GAAJ;AACAV,IAAAA,QAAQ,GAAG,IAAX;AACAH,IAAAA,WAAW,GAAG,IAAIjoB,IAAJ,GAAWE,OAAX,KAAuB8nB,SAArC;;AACA,QAAGxtB,IAAI,CAACuuB,GAAL,CAASF,EAAT,KAAgB91B,uEAAhB,IAA6Ck1B,WAAW,IAAIl1B,uEAA/D,EAA0F;AACxF+1B,MAAAA,GAAG,GAAGD,EAAE,GAAG,CAAL,GAAS,MAAT,GAAkB,OAAxB;AACD,KAVU,CAWX;AACA;AACA;;;AACA,QAAGC,GAAH,EAAQ;AACNryB,MAAAA,CAAC,CAACC,cAAF;AACA2xB,MAAAA,UAAU,CAAChpB,KAAX,CAAiB,IAAjB,EAAuBF,SAAvB;AACApM,MAAAA,6CAAC,CAAC,IAAD,CAAD,CACGkD,OADH,CACWlD,mDAAA,CAAQ,OAAR,EAAiB0K,MAAM,CAACyrB,MAAP,CAAc,EAAd,EAAkBzyB,CAAlB,CAAjB,CADX,EACmDqyB,GADnD,EAEG7yB,OAFH,CAEWlD,mDAAA,gBAAgB+1B,GAAhB,GAAuBrrB,MAAM,CAACyrB,MAAP,CAAc,EAAd,EAAkBzyB,CAAlB,CAAvB,CAFX;AAGD;AACF;AAEF;;AAED,SAAS0yB,YAAT,CAAsB1yB,CAAtB,EAAyB;AAEvB,MAAIA,CAAC,CAACuY,OAAF,CAAUra,MAAV,KAAqB,CAAzB,EAA4B;AAC1BmzB,IAAAA,SAAS,GAAGrxB,CAAC,CAACuY,OAAF,CAAU,CAAV,EAAa4Z,KAAzB;AACAb,IAAAA,SAAS,GAAGtxB,CAAC,CAACuY,OAAF,CAAU,CAAV,EAAaC,KAAzB;AACAiZ,IAAAA,UAAU,GAAGzxB,CAAb;AACA0xB,IAAAA,QAAQ,GAAG,IAAX;AACAC,IAAAA,QAAQ,GAAG,KAAX;AACAJ,IAAAA,SAAS,GAAG,IAAIhoB,IAAJ,GAAWE,OAAX,EAAZ;AACA,SAAKkpB,gBAAL,CAAsB,WAAtB,EAAmCb,WAAnC,EAAgD;AAAEc,MAAAA,OAAO,EAAG,SAASt2B,wEAA0B2D;AAA/C,KAAhD;AACA,SAAK0yB,gBAAL,CAAsB,UAAtB,EAAkCf,UAAlC,EAA8C,KAA9C;AACD;AACF;;AAED,SAASpgB,IAAT,GAAgB;AACd,OAAKmhB,gBAAL,IAAyB,KAAKA,gBAAL,CAAsB,YAAtB,EAAoCD,YAApC,EAAkD;AAAEE,IAAAA,OAAO,EAAG;AAAZ,GAAlD,CAAzB;AACD;;AAED,SAASC,QAAT,GAAoB;AAClB,OAAKhB,mBAAL,CAAyB,YAAzB,EAAuCa,YAAvC;AACD;;IAEKI;AACJ,qBAAYx2B,CAAZ,EAAe;AAAA;;AACb,SAAK6I,OAAL,GAAe,OAAf;AACA,SAAK4tB,OAAL,GAAe,kBAAkB3mB,QAAQ,CAACqX,eAA1C;AACA,SAAKxjB,cAAL,GAAsB,KAAtB;AACA,SAAKsyB,aAAL,GAAqB,EAArB;AACA,SAAKC,aAAL,GAAqB,GAArB;AACA,SAAKl2B,CAAL,GAASA,CAAT;;AACA,SAAKa,KAAL;AACD;;;;WAED,iBAAQ;AACN,UAAIb,CAAC,GAAG,KAAKA,CAAb;AACAA,MAAAA,CAAC,CAAC+b,KAAF,CAAQ2a,OAAR,CAAgBC,KAAhB,GAAwB;AAAEC,QAAAA,KAAK,EAAE1hB;AAAT,OAAxB;AACAlV,MAAAA,CAAC,CAAC+b,KAAF,CAAQ2a,OAAR,CAAgBG,GAAhB,GAAsB;AAAED,QAAAA,KAAK,EAAE1hB;AAAT,OAAtB;AAEAlV,MAAAA,CAAC,CAACkB,IAAF,CAAO,CAAC,MAAD,EAAS,IAAT,EAAe,MAAf,EAAuB,OAAvB,CAAP,EAAwC,YAAY;AAClDlB,QAAAA,CAAC,CAAC+b,KAAF,CAAQ2a,OAAR,gBAAwB,IAAxB,KAAkC;AAAEE,UAAAA,KAAK,EAAE,iBAAU;AACnD52B,YAAAA,CAAC,CAAC,IAAD,CAAD,CAAQyD,EAAR,CAAW,OAAX,EAAoBzD,CAAC,CAAC82B,IAAtB;AACD;AAFiC,SAAlC;AAGD,OAJD;AAKD;;;;;AAGH;AACA;AACA;AACA;AACA;AACA;;;AAEA9hB,KAAK,CAAC+hB,cAAN,GAAuB,UAAS/2B,CAAT,EAAY;AACjCA,EAAAA,CAAC,CAAC21B,SAAF,GAAc,IAAIa,SAAJ,CAAcx2B,CAAd,CAAd;AACD,CAFD;AAIA;AACA;AACA;;;AACAgV,KAAK,CAACgiB,iBAAN,GAA0B,UAASh3B,CAAT,EAAY;AACpCA,EAAAA,CAAC,CAACyM,EAAF,CAAKwqB,QAAL,GAAgB,YAAU;AACxB,SAAK/1B,IAAL,CAAU,UAASqG,CAAT,EAAWnG,EAAX,EAAc;AACtBpB,MAAAA,CAAC,CAACoB,EAAD,CAAD,CAAM8M,IAAN,CAAW,2CAAX,EAAwD,UAAS6N,KAAT,EAAiB;AACvE;AACA;AACAmb,QAAAA,WAAW,CAACnb,KAAD,CAAX;AACD,OAJD;AAKD,KAND;;AAQA,QAAImb,WAAW,GAAG,SAAdA,WAAc,CAASnb,KAAT,EAAe;AAC/B,UAAIE,OAAO,GAAGF,KAAK,CAACob,cAApB;AAAA,UACIhzB,KAAK,GAAG8X,OAAO,CAAC,CAAD,CADnB;AAAA,UAEImb,UAAU,GAAG;AACXC,QAAAA,UAAU,EAAE,WADD;AAEXC,QAAAA,SAAS,EAAE,WAFA;AAGXC,QAAAA,QAAQ,EAAE;AAHC,OAFjB;AAAA,UAOIntB,IAAI,GAAGgtB,UAAU,CAACrb,KAAK,CAAC3R,IAAP,CAPrB;AAAA,UAQIotB,cARJ;;AAWA,UAAG,gBAAgBt1B,MAAhB,IAA0B,OAAOA,MAAM,CAACu1B,UAAd,KAA6B,UAA1D,EAAsE;AACpED,QAAAA,cAAc,GAAG,IAAIt1B,MAAM,CAACu1B,UAAX,CAAsBrtB,IAAtB,EAA4B;AAC3C,qBAAW,IADgC;AAE3C,wBAAc,IAF6B;AAG3C,qBAAWjG,KAAK,CAACuzB,OAH0B;AAI3C,qBAAWvzB,KAAK,CAACwzB,OAJ0B;AAK3C,qBAAWxzB,KAAK,CAACyzB,OAL0B;AAM3C,qBAAWzzB,KAAK,CAAC0zB;AAN0B,SAA5B,CAAjB;AAQD,OATD,MASO;AACLL,QAAAA,cAAc,GAAG1nB,QAAQ,CAACgoB,WAAT,CAAqB,YAArB,CAAjB;AACAN,QAAAA,cAAc,CAACO,cAAf,CAA8B3tB,IAA9B,EAAoC,IAApC,EAA0C,IAA1C,EAAgDlI,MAAhD,EAAwD,CAAxD,EAA2DiC,KAAK,CAACuzB,OAAjE,EAA0EvzB,KAAK,CAACwzB,OAAhF,EAAyFxzB,KAAK,CAACyzB,OAA/F,EAAwGzzB,KAAK,CAAC0zB,OAA9G,EAAuH,KAAvH,EAA8H,KAA9H,EAAqI,KAArI,EAA4I,KAA5I,EAAmJ;AAAC;AAApJ,UAA8J,IAA9J;AACD;;AACD1zB,MAAAA,KAAK,CAACoN,MAAN,CAAaymB,aAAb,CAA2BR,cAA3B;AACD,KA1BD;AA2BD,GApCD;AAqCD,CAtCD;;AAwCAxiB,KAAK,CAACE,IAAN,GAAa,UAAUlV,CAAV,EAAa;AAExB,MAAG,OAAOA,CAAC,CAAC21B,SAAT,KAAwB,WAA3B,EAAwC;AACtC3gB,IAAAA,KAAK,CAAC+hB,cAAN,CAAqB/2B,CAArB;AACAgV,IAAAA,KAAK,CAACgiB,iBAAN,CAAwBh3B,CAAxB;AACD;AACF,CAND;;;;;;;;;;;;;;;;;;;;;;;AChKA;AACA;AACA;;AAEA,IAAMi4B,gBAAgB,GAAI,YAAY;AACpC,MAAIC,QAAQ,GAAG,CAAC,QAAD,EAAW,KAAX,EAAkB,GAAlB,EAAuB,IAAvB,EAA6B,EAA7B,CAAf;;AACA,OAAK,IAAI3wB,CAAC,GAAC,CAAX,EAAcA,CAAC,GAAG2wB,QAAQ,CAACt2B,MAA3B,EAAmC2F,CAAC,EAApC,EAAwC;AACtC,QAAI,UAAG2wB,QAAQ,CAAC3wB,CAAD,CAAX,yBAAoCrF,MAAxC,EAAgD;AAC9C,aAAOA,MAAM,WAAIg2B,QAAQ,CAAC3wB,CAAD,CAAZ,sBAAb;AACD;AACF;;AACD,SAAO,KAAP;AACD,CARyB,EAA1B;;AAUA,IAAM4wB,QAAQ,GAAG,SAAXA,QAAW,CAAC/2B,EAAD,EAAKgJ,IAAL,EAAc;AAC7BhJ,EAAAA,EAAE,CAACT,IAAH,CAAQyJ,IAAR,EAAce,KAAd,CAAoB,GAApB,EAAyBZ,OAAzB,CAAiC,UAAAhJ,EAAE,EAAI;AACrCvB,IAAAA,6CAAC,YAAKuB,EAAL,EAAD,CAAa6I,IAAI,KAAK,OAAT,GAAmB,SAAnB,GAA+B,gBAA5C,YAAiEA,IAAjE,kBAAoF,CAAChJ,EAAD,CAApF;AACD,GAFD;AAGD,CAJD;;AAMA,IAAI2T,QAAQ,GAAG;AACbqjB,EAAAA,SAAS,EAAE;AACTC,IAAAA,KAAK,EAAE,EADE;AAETC,IAAAA,MAAM,EAAE;AAFC,GADE;AAKbC,EAAAA,YAAY,EAAE;AALD,CAAf;AAQAxjB,QAAQ,CAACqjB,SAAT,CAAmBC,KAAnB,GAA4B;AAC1BG,EAAAA,YAAY,EAAE,wBAAW;AACvBL,IAAAA,QAAQ,CAACn4B,6CAAC,CAAC,IAAD,CAAF,EAAU,MAAV,CAAR;AACD,GAHyB;AAI1By4B,EAAAA,aAAa,EAAE,yBAAW;AACxB,QAAIl3B,EAAE,GAAGvB,6CAAC,CAAC,IAAD,CAAD,CAAQW,IAAR,CAAa,OAAb,CAAT;;AACA,QAAIY,EAAJ,EAAQ;AACN42B,MAAAA,QAAQ,CAACn4B,6CAAC,CAAC,IAAD,CAAF,EAAU,OAAV,CAAR;AACD,KAFD,MAGK;AACHA,MAAAA,6CAAC,CAAC,IAAD,CAAD,CAAQkD,OAAR,CAAgB,kBAAhB;AACD;AACF,GAZyB;AAa1Bw1B,EAAAA,cAAc,EAAE,0BAAW;AACzB,QAAIn3B,EAAE,GAAGvB,6CAAC,CAAC,IAAD,CAAD,CAAQW,IAAR,CAAa,QAAb,CAAT;;AACA,QAAIY,EAAJ,EAAQ;AACN42B,MAAAA,QAAQ,CAACn4B,6CAAC,CAAC,IAAD,CAAF,EAAU,QAAV,CAAR;AACD,KAFD,MAEO;AACLA,MAAAA,6CAAC,CAAC,IAAD,CAAD,CAAQkD,OAAR,CAAgB,mBAAhB;AACD;AACF,GApByB;AAqB1By1B,EAAAA,iBAAiB,EAAE,2BAASj1B,CAAT,EAAY;AAC7B,QAAI0vB,SAAS,GAAGpzB,6CAAC,CAAC,IAAD,CAAD,CAAQW,IAAR,CAAa,UAAb,CAAhB,CAD6B,CAG7B;;AACA+C,IAAAA,CAAC,CAAC2Y,eAAF;;AAEA,QAAG+W,SAAS,KAAK,EAAjB,EAAoB;AAClBpR,MAAAA,sEAAA,CAAkBhiB,6CAAC,CAAC,IAAD,CAAnB,EAA2BozB,SAA3B,EAAsC,YAAW;AAC/CpzB,QAAAA,6CAAC,CAAC,IAAD,CAAD,CAAQkD,OAAR,CAAgB,WAAhB;AACD,OAFD;AAGD,KAJD,MAIK;AACHlD,MAAAA,6CAAC,CAAC,IAAD,CAAD,CAAQ44B,OAAR,GAAkB11B,OAAlB,CAA0B,WAA1B;AACD;AACF,GAlCyB;AAmC1B21B,EAAAA,mBAAmB,EAAE,+BAAW;AAC9B,QAAIt3B,EAAE,GAAGvB,6CAAC,CAAC,IAAD,CAAD,CAAQW,IAAR,CAAa,cAAb,CAAT;AACAX,IAAAA,6CAAC,YAAKuB,EAAL,EAAD,CAAY4O,cAAZ,CAA2B,mBAA3B,EAAgD,CAACnQ,6CAAC,CAAC,IAAD,CAAF,CAAhD;AACD;AAtCyB,CAA5B,EAyCA;;AACA+U,QAAQ,CAACwjB,YAAT,CAAsBO,eAAtB,GAAwC,UAACx1B,KAAD,EAAW;AACjDA,EAAAA,KAAK,CAACE,GAAN,CAAU,kBAAV,EAA8BuR,QAAQ,CAACqjB,SAAT,CAAmBC,KAAnB,CAAyBG,YAAvD;AACAl1B,EAAAA,KAAK,CAACG,EAAN,CAAS,kBAAT,EAA6B,aAA7B,EAA4CsR,QAAQ,CAACqjB,SAAT,CAAmBC,KAAnB,CAAyBG,YAArE;AACD,CAHD,EAKA;AACA;;;AACAzjB,QAAQ,CAACwjB,YAAT,CAAsBQ,gBAAtB,GAAyC,UAACz1B,KAAD,EAAW;AAClDA,EAAAA,KAAK,CAACE,GAAN,CAAU,kBAAV,EAA8BuR,QAAQ,CAACqjB,SAAT,CAAmBC,KAAnB,CAAyBI,aAAvD;AACAn1B,EAAAA,KAAK,CAACG,EAAN,CAAS,kBAAT,EAA6B,cAA7B,EAA6CsR,QAAQ,CAACqjB,SAAT,CAAmBC,KAAnB,CAAyBI,aAAtE;AACD,CAHD,EAKA;;;AACA1jB,QAAQ,CAACwjB,YAAT,CAAsBS,iBAAtB,GAA0C,UAAC11B,KAAD,EAAW;AACnDA,EAAAA,KAAK,CAACE,GAAN,CAAU,kBAAV,EAA8BuR,QAAQ,CAACqjB,SAAT,CAAmBC,KAAnB,CAAyBK,cAAvD;AACAp1B,EAAAA,KAAK,CAACG,EAAN,CAAS,kBAAT,EAA6B,eAA7B,EAA8CsR,QAAQ,CAACqjB,SAAT,CAAmBC,KAAnB,CAAyBK,cAAvE;AACD,CAHD,EAKA;;;AACA3jB,QAAQ,CAACwjB,YAAT,CAAsBU,oBAAtB,GAA6C,UAAC31B,KAAD,EAAW;AACtDA,EAAAA,KAAK,CAACE,GAAN,CAAU,kBAAV,EAA8BuR,QAAQ,CAACqjB,SAAT,CAAmBC,KAAnB,CAAyBM,iBAAvD;AACAr1B,EAAAA,KAAK,CAACG,EAAN,CAAS,kBAAT,EAA6B,mCAA7B,EAAkEsR,QAAQ,CAACqjB,SAAT,CAAmBC,KAAnB,CAAyBM,iBAA3F;AACD,CAHD,EAKA;;;AACA5jB,QAAQ,CAACwjB,YAAT,CAAsBW,sBAAtB,GAA+C,UAAC51B,KAAD,EAAW;AACxDA,EAAAA,KAAK,CAACE,GAAN,CAAU,kCAAV,EAA8CuR,QAAQ,CAACqjB,SAAT,CAAmBC,KAAnB,CAAyBQ,mBAAvE;AACAv1B,EAAAA,KAAK,CAACG,EAAN,CAAS,kCAAT,EAA6C,qBAA7C,EAAoEsR,QAAQ,CAACqjB,SAAT,CAAmBC,KAAnB,CAAyBQ,mBAA7F;AACD,CAHD,EAOA;;;AACA9jB,QAAQ,CAACqjB,SAAT,CAAmBE,MAAnB,GAA6B;AAC3Ba,EAAAA,cAAc,EAAE,wBAASC,MAAT,EAAiB;AAC/B,QAAG,CAACnB,gBAAJ,EAAqB;AAAC;AACpBmB,MAAAA,MAAM,CAACl4B,IAAP,CAAY,YAAU;AACpBlB,QAAAA,6CAAC,CAAC,IAAD,CAAD,CAAQmQ,cAAR,CAAuB,qBAAvB;AACD,OAFD;AAGD,KAL8B,CAM/B;;;AACAipB,IAAAA,MAAM,CAAC13B,IAAP,CAAY,aAAZ,EAA2B,QAA3B;AACD,GAT0B;AAU3BgmB,EAAAA,cAAc,EAAE,wBAAS0R,MAAT,EAAiB;AAC/B,QAAG,CAACnB,gBAAJ,EAAqB;AAAC;AACpBmB,MAAAA,MAAM,CAACl4B,IAAP,CAAY,YAAU;AACpBlB,QAAAA,6CAAC,CAAC,IAAD,CAAD,CAAQmQ,cAAR,CAAuB,qBAAvB;AACD,OAFD;AAGD,KAL8B,CAM/B;;;AACAipB,IAAAA,MAAM,CAAC13B,IAAP,CAAY,aAAZ,EAA2B,QAA3B;AACD,GAlB0B;AAmB3B23B,EAAAA,eAAe,EAAE,yBAAS31B,CAAT,EAAY41B,QAAZ,EAAqB;AACpC,QAAItwB,MAAM,GAAGtF,CAAC,CAAC4L,SAAF,CAAYnE,KAAZ,CAAkB,GAAlB,EAAuB,CAAvB,CAAb;AACA,QAAIjB,OAAO,GAAGlK,6CAAC,iBAAUgJ,MAAV,OAAD,CAAsBxD,GAAtB,4BAA6C8zB,QAA7C,SAAd;AAEApvB,IAAAA,OAAO,CAAChJ,IAAR,CAAa,YAAU;AACrB,UAAImC,KAAK,GAAGrD,6CAAC,CAAC,IAAD,CAAb;;AACAqD,MAAAA,KAAK,CAAC8M,cAAN,CAAqB,kBAArB,EAAyC,CAAC9M,KAAD,CAAzC;AACD,KAHD;AAID;AA3B0B,CAA7B,EA8BA;;AACA0R,QAAQ,CAACwjB,YAAT,CAAsBgB,kBAAtB,GAA2C,UAASjwB,UAAT,EAAqB;AAC9D,MAAIkwB,SAAS,GAAGx5B,6CAAC,CAAC,iBAAD,CAAjB;AAAA,MACIy5B,SAAS,GAAG,CAAC,UAAD,EAAa,SAAb,EAAwB,QAAxB,CADhB;;AAGA,MAAGnwB,UAAH,EAAc;AACZ,QAAG,OAAOA,UAAP,KAAsB,QAAzB,EAAkC;AAChCmwB,MAAAA,SAAS,CAAC/vB,IAAV,CAAeJ,UAAf;AACD,KAFD,MAEM,IAAG,QAAOA,UAAP,MAAsB,QAAtB,IAAkC,OAAOA,UAAU,CAAC,CAAD,CAAjB,KAAyB,QAA9D,EAAuE;AAC3EmwB,MAAAA,SAAS,GAAGA,SAAS,CAACjrB,MAAV,CAAiBlF,UAAjB,CAAZ;AACD,KAFK,MAED;AACH7E,MAAAA,OAAO,CAACoG,KAAR,CAAc,8BAAd;AACD;AACF;;AACD,MAAG2uB,SAAS,CAAC53B,MAAb,EAAoB;AAClB,QAAI83B,SAAS,GAAGD,SAAS,CAACluB,GAAV,CAAc,UAACtC,IAAD,EAAU;AACtC,kCAAqBA,IAArB;AACD,KAFe,EAEbwS,IAFa,CAER,GAFQ,CAAhB;AAIAzb,IAAAA,6CAAC,CAACkC,MAAD,CAAD,CAAUsB,GAAV,CAAck2B,SAAd,EAAyBj2B,EAAzB,CAA4Bi2B,SAA5B,EAAuC3kB,QAAQ,CAACqjB,SAAT,CAAmBE,MAAnB,CAA0Be,eAAjE;AACD;AACF,CApBD;;AAsBA,SAASM,sBAAT,CAAgCC,QAAhC,EAA0C12B,OAA1C,EAAmD22B,QAAnD,EAA6D;AAC3D,MAAI/sB,KAAJ;AAAA,MAAWf,IAAI,GAAGC,KAAK,CAACC,SAAN,CAAgBC,KAAhB,CAAsBC,IAAtB,CAA2BC,SAA3B,EAAsC,CAAtC,CAAlB;AACApM,EAAAA,6CAAC,CAACkC,MAAD,CAAD,CAAUsB,GAAV,CAAcN,OAAd,EAAuBO,EAAvB,CAA0BP,OAA1B,EAAmC,UAASQ,CAAT,EAAY;AAC7C,QAAIoJ,KAAJ,EAAW;AAAEgB,MAAAA,YAAY,CAAChB,KAAD,CAAZ;AAAsB;;AACnCA,IAAAA,KAAK,GAAGE,UAAU,CAAC,YAAU;AAC3B6sB,MAAAA,QAAQ,CAACvtB,KAAT,CAAe,IAAf,EAAqBP,IAArB;AACD,KAFiB,EAEf6tB,QAAQ,IAAI,EAFG,CAAlB,CAF6C,CAI1B;AACpB,GALD;AAMD;;AAED7kB,QAAQ,CAACwjB,YAAT,CAAsBuB,iBAAtB,GAA0C,UAASF,QAAT,EAAkB;AAC1D,MAAIR,MAAM,GAAGp5B,6CAAC,CAAC,eAAD,CAAd;;AACA,MAAGo5B,MAAM,CAACx3B,MAAV,EAAiB;AACf+3B,IAAAA,sBAAsB,CAACC,QAAD,EAAW,mBAAX,EAAgC7kB,QAAQ,CAACqjB,SAAT,CAAmBE,MAAnB,CAA0Ba,cAA1D,EAA0EC,MAA1E,CAAtB;AACD;AACF,CALD;;AAOArkB,QAAQ,CAACwjB,YAAT,CAAsBwB,iBAAtB,GAA0C,UAASH,QAAT,EAAkB;AAC1D,MAAIR,MAAM,GAAGp5B,6CAAC,CAAC,eAAD,CAAd;;AACA,MAAGo5B,MAAM,CAACx3B,MAAV,EAAiB;AACf+3B,IAAAA,sBAAsB,CAACC,QAAD,EAAW,mBAAX,EAAgC7kB,QAAQ,CAACqjB,SAAT,CAAmBE,MAAnB,CAA0B5Q,cAA1D,EAA0E0R,MAA1E,CAAtB;AACD;AACF,CALD;;AAOArkB,QAAQ,CAACwjB,YAAT,CAAsByB,yBAAtB,GAAkD,UAAS12B,KAAT,EAAgB;AAChE,MAAG,CAAC20B,gBAAJ,EAAqB;AAAE,WAAO,KAAP;AAAe;;AACtC,MAAImB,MAAM,GAAG91B,KAAK,CAAC7B,IAAN,CAAW,6CAAX,CAAb,CAFgE,CAIhE;;AACA,MAAIw4B,yBAAyB,GAAG,SAA5BA,yBAA4B,CAAUC,mBAAV,EAA+B;AAC7D,QAAI51B,OAAO,GAAGtE,6CAAC,CAACk6B,mBAAmB,CAAC,CAAD,CAAnB,CAAuB3oB,MAAxB,CAAf,CAD6D,CAG7D;;AACA,YAAQ2oB,mBAAmB,CAAC,CAAD,CAAnB,CAAuB9vB,IAA/B;AACE,WAAK,YAAL;AACE,YAAI9F,OAAO,CAAC5C,IAAR,CAAa,aAAb,MAAgC,QAAhC,IAA4Cw4B,mBAAmB,CAAC,CAAD,CAAnB,CAAuBC,aAAvB,KAAyC,aAAzF,EAAwG;AACtG71B,UAAAA,OAAO,CAAC6L,cAAR,CAAuB,qBAAvB,EAA8C,CAAC7L,OAAD,EAAUpC,MAAM,CAACykB,WAAjB,CAA9C;AACD;;AACD,YAAIriB,OAAO,CAAC5C,IAAR,CAAa,aAAb,MAAgC,QAAhC,IAA4Cw4B,mBAAmB,CAAC,CAAD,CAAnB,CAAuBC,aAAvB,KAAyC,aAAzF,EAAwG;AACtG71B,UAAAA,OAAO,CAAC6L,cAAR,CAAuB,qBAAvB,EAA8C,CAAC7L,OAAD,CAA9C;AACA;;AACF,YAAI41B,mBAAmB,CAAC,CAAD,CAAnB,CAAuBC,aAAvB,KAAyC,OAA7C,EAAsD;AACpD71B,UAAAA,OAAO,CAACC,OAAR,CAAgB,eAAhB,EAAiC7C,IAAjC,CAAsC,aAAtC,EAAoD,QAApD;AACA4C,UAAAA,OAAO,CAACC,OAAR,CAAgB,eAAhB,EAAiC4L,cAAjC,CAAgD,qBAAhD,EAAuE,CAAC7L,OAAO,CAACC,OAAR,CAAgB,eAAhB,CAAD,CAAvE;AACD;;AACD;;AAEF,WAAK,WAAL;AACED,QAAAA,OAAO,CAACC,OAAR,CAAgB,eAAhB,EAAiC7C,IAAjC,CAAsC,aAAtC,EAAoD,QAApD;AACA4C,QAAAA,OAAO,CAACC,OAAR,CAAgB,eAAhB,EAAiC4L,cAAjC,CAAgD,qBAAhD,EAAuE,CAAC7L,OAAO,CAACC,OAAR,CAAgB,eAAhB,CAAD,CAAvE;AACA;;AAEF;AACE,eAAO,KAAP;AACF;AArBF;AAuBD,GA3BD;;AA6BA,MAAI60B,MAAM,CAACx3B,MAAX,EAAmB;AACjB;AACA,SAAK,IAAI2F,CAAC,GAAG,CAAb,EAAgBA,CAAC,IAAI6xB,MAAM,CAACx3B,MAAP,GAAgB,CAArC,EAAwC2F,CAAC,EAAzC,EAA6C;AAC3C,UAAI6yB,eAAe,GAAG,IAAInC,gBAAJ,CAAqBgC,yBAArB,CAAtB;AACAG,MAAAA,eAAe,CAACC,OAAhB,CAAwBjB,MAAM,CAAC7xB,CAAD,CAA9B,EAAmC;AAAE+yB,QAAAA,UAAU,EAAE,IAAd;AAAoBC,QAAAA,SAAS,EAAE,IAA/B;AAAqCC,QAAAA,aAAa,EAAE,KAApD;AAA2DC,QAAAA,OAAO,EAAE,IAApE;AAA0EC,QAAAA,eAAe,EAAE,CAAC,aAAD,EAAgB,OAAhB;AAA3F,OAAnC;AACD;AACF;AACF,CAzCD;;AA2CA3lB,QAAQ,CAACwjB,YAAT,CAAsBoC,kBAAtB,GAA2C,YAAW;AACpD,MAAIC,SAAS,GAAG56B,6CAAC,CAAC8P,QAAD,CAAjB;AAEAiF,EAAAA,QAAQ,CAACwjB,YAAT,CAAsBO,eAAtB,CAAsC8B,SAAtC;AACA7lB,EAAAA,QAAQ,CAACwjB,YAAT,CAAsBQ,gBAAtB,CAAuC6B,SAAvC;AACA7lB,EAAAA,QAAQ,CAACwjB,YAAT,CAAsBS,iBAAtB,CAAwC4B,SAAxC;AACA7lB,EAAAA,QAAQ,CAACwjB,YAAT,CAAsBU,oBAAtB,CAA2C2B,SAA3C;AACA7lB,EAAAA,QAAQ,CAACwjB,YAAT,CAAsBW,sBAAtB,CAA6C0B,SAA7C;AAED,CATD;;AAWA7lB,QAAQ,CAACwjB,YAAT,CAAsBsC,kBAAtB,GAA2C,YAAW;AACpD,MAAID,SAAS,GAAG56B,6CAAC,CAAC8P,QAAD,CAAjB;AACAiF,EAAAA,QAAQ,CAACwjB,YAAT,CAAsByB,yBAAtB,CAAgDY,SAAhD;AACA7lB,EAAAA,QAAQ,CAACwjB,YAAT,CAAsBuB,iBAAtB;AACA/kB,EAAAA,QAAQ,CAACwjB,YAAT,CAAsBwB,iBAAtB;AACAhlB,EAAAA,QAAQ,CAACwjB,YAAT,CAAsBgB,kBAAtB;AACD,CAND;;AASAxkB,QAAQ,CAACG,IAAT,GAAgB,UAAUlV,CAAV,EAAa4I,UAAb,EAAyB;AACvC1I,EAAAA,8DAAM,CAACF,CAAC,CAACkC,MAAD,CAAF,EAAY,YAAY;AAC5B,QAAIlC,CAAC,CAAC86B,mBAAF,KAA0B,IAA9B,EAAoC;AAClC/lB,MAAAA,QAAQ,CAACwjB,YAAT,CAAsBoC,kBAAtB;AACA5lB,MAAAA,QAAQ,CAACwjB,YAAT,CAAsBsC,kBAAtB;AACA76B,MAAAA,CAAC,CAAC86B,mBAAF,GAAwB,IAAxB;AACD;AACF,GANK,CAAN;;AAQA,MAAGlyB,UAAH,EAAe;AACbA,IAAAA,UAAU,CAACmM,QAAX,GAAsBA,QAAtB,CADa,CAEb;;AACAnM,IAAAA,UAAU,CAACmyB,QAAX,GAAsBhmB,QAAQ,CAACwjB,YAAT,CAAsBsC,kBAA5C;AACD;AACF,CAdD;;;;;;;;;;;;;;;ACnPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAE,UAAUG,MAAV,EAAkBC,OAAlB,EAA4B;AAE7B;;AAEA,MAAK,sBAAOC,MAAP,OAAkB,QAAlB,IAA8B,QAAOA,MAAM,CAACC,OAAd,MAA0B,QAA7D,EAAwE;AAEvE;AACA;AACA;AACA;AACA;AACA;AACA;AACAD,IAAAA,MAAM,CAACC,OAAP,GAAiBH,MAAM,CAAClrB,QAAP,GAChBmrB,OAAO,CAAED,MAAF,EAAU,IAAV,CADS,GAEhB,UAAUI,CAAV,EAAc;AACb,UAAK,CAACA,CAAC,CAACtrB,QAAR,EAAmB;AAClB,cAAM,IAAI4b,KAAJ,CAAW,0CAAX,CAAN;AACA;;AACD,aAAOuP,OAAO,CAAEG,CAAF,CAAd;AACA,KAPF;AAQA,GAjBD,MAiBO;AACNH,IAAAA,OAAO,CAAED,MAAF,CAAP;AACA,GAvB4B,CAyB9B;;AACC,CA1BD,EA0BK,OAAO94B,MAAP,KAAkB,WAAlB,GAAgCA,MAAhC,GAAyC,IA1B9C,EA0BoD,UAAUA,MAAV,EAAkBm5B,QAAlB,EAA6B;AAEjF;AACA;AACA;AACA;AACA;;AAEA,MAAIC,GAAG,GAAG,EAAV;AAEA,MAAIC,QAAQ,GAAG7wB,MAAM,CAAC8wB,cAAtB;AAEA,MAAItvB,MAAK,GAAGovB,GAAG,CAACpvB,KAAhB;AAEA,MAAIuvB,IAAI,GAAGH,GAAG,CAACG,IAAJ,GAAW,UAAUhe,KAAV,EAAkB;AACvC,WAAO6d,GAAG,CAACG,IAAJ,CAAStvB,IAAT,CAAesR,KAAf,CAAP;AACA,GAFU,GAEP,UAAUA,KAAV,EAAkB;AACrB,WAAO6d,GAAG,CAAC9sB,MAAJ,CAAWlC,KAAX,CAAkB,EAAlB,EAAsBmR,KAAtB,CAAP;AACA,GAJD;AAOA,MAAI/T,IAAI,GAAG4xB,GAAG,CAAC5xB,IAAf;AAEA,MAAIG,OAAO,GAAGyxB,GAAG,CAACzxB,OAAlB;AAEA,MAAI6xB,UAAU,GAAG,EAAjB;AAEA,MAAI9sB,QAAQ,GAAG8sB,UAAU,CAAC9sB,QAA1B;AAEA,MAAI+sB,MAAM,GAAGD,UAAU,CAACxb,cAAxB;AAEA,MAAI0b,UAAU,GAAGD,MAAM,CAAC/sB,QAAxB;AAEA,MAAIitB,oBAAoB,GAAGD,UAAU,CAACzvB,IAAX,CAAiBzB,MAAjB,CAA3B;AAEA,MAAIoxB,OAAO,GAAG,EAAd;;AAEA,MAAIC,UAAU,GAAG,SAASA,UAAT,CAAqB3sB,GAArB,EAA2B;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAO,OAAOA,GAAP,KAAe,UAAf,IAA6B,OAAOA,GAAG,CAAC4sB,QAAX,KAAwB,QAArD,IACN,OAAO5sB,GAAG,CAACoO,IAAX,KAAoB,UADrB;AAEA,GAXF;;AAcA,MAAIye,QAAQ,GAAG,SAASA,QAAT,CAAmB7sB,GAAnB,EAAyB;AACtC,WAAOA,GAAG,IAAI,IAAP,IAAeA,GAAG,KAAKA,GAAG,CAAClN,MAAlC;AACA,GAFF;;AAKA,MAAI4N,QAAQ,GAAG5N,MAAM,CAAC4N,QAAtB;AAIC,MAAIosB,yBAAyB,GAAG;AAC/B9xB,IAAAA,IAAI,EAAE,IADyB;AAE/B6jB,IAAAA,GAAG,EAAE,IAF0B;AAG/BkO,IAAAA,KAAK,EAAE,IAHwB;AAI/BC,IAAAA,QAAQ,EAAE;AAJqB,GAAhC;;AAOA,WAASC,OAAT,CAAkBC,IAAlB,EAAwBC,IAAxB,EAA8BC,GAA9B,EAAoC;AACnCA,IAAAA,GAAG,GAAGA,GAAG,IAAI1sB,QAAb;AAEA,QAAIvI,CAAJ;AAAA,QAAOwS,GAAP;AAAA,QACCwW,MAAM,GAAGiM,GAAG,CAACzsB,aAAJ,CAAmB,QAAnB,CADV;AAGAwgB,IAAAA,MAAM,CAACO,IAAP,GAAcwL,IAAd;;AACA,QAAKC,IAAL,EAAY;AACX,WAAMh1B,CAAN,IAAW20B,yBAAX,EAAuC;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAniB,QAAAA,GAAG,GAAGwiB,IAAI,CAAEh1B,CAAF,CAAJ,IAAag1B,IAAI,CAACjX,YAAL,IAAqBiX,IAAI,CAACjX,YAAL,CAAmB/d,CAAnB,CAAxC;;AACA,YAAKwS,GAAL,EAAW;AACVwW,UAAAA,MAAM,CAAClW,YAAP,CAAqB9S,CAArB,EAAwBwS,GAAxB;AACA;AACD;AACD;;AACDyiB,IAAAA,GAAG,CAAC/L,IAAJ,CAASC,WAAT,CAAsBH,MAAtB,EAA+B1D,UAA/B,CAA0C4P,WAA1C,CAAuDlM,MAAvD;AACA;;AAGF,WAASmM,MAAT,CAAiBttB,GAAjB,EAAuB;AACtB,QAAKA,GAAG,IAAI,IAAZ,EAAmB;AAClB,aAAOA,GAAG,GAAG,EAAb;AACA,KAHqB,CAKtB;;;AACA,WAAO,QAAOA,GAAP,MAAe,QAAf,IAA2B,OAAOA,GAAP,KAAe,UAA1C,GACNssB,UAAU,CAAE9sB,QAAQ,CAACzC,IAAT,CAAeiD,GAAf,CAAF,CAAV,IAAsC,QADhC,WAECA,GAFD,CAAP;AAGA;AACD;AACA;AACA;;;AAIA,MACCvG,OAAO,GAAG,OADX;AAAA,MAGC;AACA8zB,EAAAA,MAAM,GAAG,SAATA,MAAS,CAAUC,QAAV,EAAoB7vB,OAApB,EAA8B;AAEtC;AACA;AACA,WAAO,IAAI4vB,MAAM,CAAClwB,EAAP,CAAUyI,IAAd,CAAoB0nB,QAApB,EAA8B7vB,OAA9B,CAAP;AACA,GATF;;AAWA4vB,EAAAA,MAAM,CAAClwB,EAAP,GAAYkwB,MAAM,CAAC1wB,SAAP,GAAmB;AAE9B;AACA4wB,IAAAA,MAAM,EAAEh0B,OAHsB;AAK9BU,IAAAA,WAAW,EAAEozB,MALiB;AAO9B;AACA/6B,IAAAA,MAAM,EAAE,CARsB;AAU9Bk7B,IAAAA,OAAO,EAAE,mBAAW;AACnB,aAAO5wB,MAAK,CAACC,IAAN,CAAY,IAAZ,CAAP;AACA,KAZ6B;AAc9B;AACA;AACAqV,IAAAA,GAAG,EAAE,aAAUub,GAAV,EAAgB;AAEpB;AACA,UAAKA,GAAG,IAAI,IAAZ,EAAmB;AAClB,eAAO7wB,MAAK,CAACC,IAAN,CAAY,IAAZ,CAAP;AACA,OALmB,CAOpB;;;AACA,aAAO4wB,GAAG,GAAG,CAAN,GAAU,KAAMA,GAAG,GAAG,KAAKn7B,MAAjB,CAAV,GAAsC,KAAMm7B,GAAN,CAA7C;AACA,KAzB6B;AA2B9B;AACA;AACAC,IAAAA,SAAS,EAAE,mBAAUC,KAAV,EAAkB;AAE5B;AACA,UAAInK,GAAG,GAAG6J,MAAM,CAACO,KAAP,CAAc,KAAK3zB,WAAL,EAAd,EAAkC0zB,KAAlC,CAAV,CAH4B,CAK5B;;AACAnK,MAAAA,GAAG,CAACqK,UAAJ,GAAiB,IAAjB,CAN4B,CAQ5B;;AACA,aAAOrK,GAAP;AACA,KAvC6B;AAyC9B;AACA5xB,IAAAA,IAAI,EAAE,cAAU0M,QAAV,EAAqB;AAC1B,aAAO+uB,MAAM,CAACz7B,IAAP,CAAa,IAAb,EAAmB0M,QAAnB,CAAP;AACA,KA5C6B;AA8C9BrC,IAAAA,GAAG,EAAE,aAAUqC,QAAV,EAAqB;AACzB,aAAO,KAAKovB,SAAL,CAAgBL,MAAM,CAACpxB,GAAP,CAAY,IAAZ,EAAkB,UAAUR,IAAV,EAAgBxD,CAAhB,EAAoB;AAC5D,eAAOqG,QAAQ,CAACzB,IAAT,CAAepB,IAAf,EAAqBxD,CAArB,EAAwBwD,IAAxB,CAAP;AACA,OAFsB,CAAhB,CAAP;AAGA,KAlD6B;AAoD9BmB,IAAAA,KAAK,EAAE,iBAAW;AACjB,aAAO,KAAK8wB,SAAL,CAAgB9wB,MAAK,CAACI,KAAN,CAAa,IAAb,EAAmBF,SAAnB,CAAhB,CAAP;AACA,KAtD6B;AAwD9BjI,IAAAA,KAAK,EAAE,iBAAW;AACjB,aAAO,KAAKqD,EAAL,CAAS,CAAT,CAAP;AACA,KA1D6B;AA4D9BpD,IAAAA,IAAI,EAAE,gBAAW;AAChB,aAAO,KAAKoD,EAAL,CAAS,CAAC,CAAV,CAAP;AACA,KA9D6B;AAgE9B41B,IAAAA,IAAI,EAAE,gBAAW;AAChB,aAAO,KAAKJ,SAAL,CAAgBL,MAAM,CAACU,IAAP,CAAa,IAAb,EAAmB,UAAUC,KAAV,EAAiB/1B,CAAjB,EAAqB;AAC9D,eAAO,CAAEA,CAAC,GAAG,CAAN,IAAY,CAAnB;AACA,OAFsB,CAAhB,CAAP;AAGA,KApE6B;AAsE9Bg2B,IAAAA,GAAG,EAAE,eAAW;AACf,aAAO,KAAKP,SAAL,CAAgBL,MAAM,CAACU,IAAP,CAAa,IAAb,EAAmB,UAAUC,KAAV,EAAiB/1B,CAAjB,EAAqB;AAC9D,eAAOA,CAAC,GAAG,CAAX;AACA,OAFsB,CAAhB,CAAP;AAGA,KA1E6B;AA4E9BC,IAAAA,EAAE,EAAE,YAAUD,CAAV,EAAc;AACjB,UAAI+f,GAAG,GAAG,KAAK1lB,MAAf;AAAA,UACC47B,CAAC,GAAG,CAACj2B,CAAD,IAAOA,CAAC,GAAG,CAAJ,GAAQ+f,GAAR,GAAc,CAArB,CADL;AAEA,aAAO,KAAK0V,SAAL,CAAgBQ,CAAC,IAAI,CAAL,IAAUA,CAAC,GAAGlW,GAAd,GAAoB,CAAE,KAAMkW,CAAN,CAAF,CAApB,GAAoC,EAApD,CAAP;AACA,KAhF6B;AAkF9BxtB,IAAAA,GAAG,EAAE,eAAW;AACf,aAAO,KAAKmtB,UAAL,IAAmB,KAAK5zB,WAAL,EAA1B;AACA,KApF6B;AAsF9B;AACA;AACAG,IAAAA,IAAI,EAAEA,IAxFwB;AAyF9B0kB,IAAAA,IAAI,EAAEkN,GAAG,CAAClN,IAzFoB;AA0F9BxkB,IAAAA,MAAM,EAAE0xB,GAAG,CAAC1xB;AA1FkB,GAA/B;;AA6FA+yB,EAAAA,MAAM,CAACl8B,MAAP,GAAgBk8B,MAAM,CAAClwB,EAAP,CAAUhM,MAAV,GAAmB,YAAW;AAC7C,QAAIF,OAAJ;AAAA,QAAa0I,IAAb;AAAA,QAAmBglB,GAAnB;AAAA,QAAwBwP,IAAxB;AAAA,QAA8BC,WAA9B;AAAA,QAA2C92B,KAA3C;AAAA,QACC2K,MAAM,GAAGnF,SAAS,CAAE,CAAF,CAAT,IAAkB,EAD5B;AAAA,QAEC7E,CAAC,GAAG,CAFL;AAAA,QAGC3F,MAAM,GAAGwK,SAAS,CAACxK,MAHpB;AAAA,QAIC+7B,IAAI,GAAG,KAJR,CAD6C,CAO7C;;AACA,QAAK,OAAOpsB,MAAP,KAAkB,SAAvB,EAAmC;AAClCosB,MAAAA,IAAI,GAAGpsB,MAAP,CADkC,CAGlC;;AACAA,MAAAA,MAAM,GAAGnF,SAAS,CAAE7E,CAAF,CAAT,IAAkB,EAA3B;AACAA,MAAAA,CAAC;AACD,KAd4C,CAgB7C;;;AACA,QAAK,QAAOgK,MAAP,MAAkB,QAAlB,IAA8B,CAACwqB,UAAU,CAAExqB,MAAF,CAA9C,EAA2D;AAC1DA,MAAAA,MAAM,GAAG,EAAT;AACA,KAnB4C,CAqB7C;;;AACA,QAAKhK,CAAC,KAAK3F,MAAX,EAAoB;AACnB2P,MAAAA,MAAM,GAAG,IAAT;AACAhK,MAAAA,CAAC;AACD;;AAED,WAAQA,CAAC,GAAG3F,MAAZ,EAAoB2F,CAAC,EAArB,EAA0B;AAEzB;AACA,UAAK,CAAEhH,OAAO,GAAG6L,SAAS,CAAE7E,CAAF,CAArB,KAAgC,IAArC,EAA4C;AAE3C;AACA,aAAM0B,IAAN,IAAc1I,OAAd,EAAwB;AACvBk9B,UAAAA,IAAI,GAAGl9B,OAAO,CAAE0I,IAAF,CAAd,CADuB,CAGvB;AACA;;AACA,cAAKA,IAAI,KAAK,WAAT,IAAwBsI,MAAM,KAAKksB,IAAxC,EAA+C;AAC9C;AACA,WAPsB,CASvB;;;AACA,cAAKE,IAAI,IAAIF,IAAR,KAAkBd,MAAM,CAACiB,aAAP,CAAsBH,IAAtB,MACpBC,WAAW,GAAG1xB,KAAK,CAACinB,OAAN,CAAewK,IAAf,CADM,CAAlB,CAAL,EAC6C;AAC5CxP,YAAAA,GAAG,GAAG1c,MAAM,CAAEtI,IAAF,CAAZ,CAD4C,CAG5C;;AACA,gBAAKy0B,WAAW,IAAI,CAAC1xB,KAAK,CAACinB,OAAN,CAAehF,GAAf,CAArB,EAA4C;AAC3CrnB,cAAAA,KAAK,GAAG,EAAR;AACA,aAFD,MAEO,IAAK,CAAC82B,WAAD,IAAgB,CAACf,MAAM,CAACiB,aAAP,CAAsB3P,GAAtB,CAAtB,EAAoD;AAC1DrnB,cAAAA,KAAK,GAAG,EAAR;AACA,aAFM,MAEA;AACNA,cAAAA,KAAK,GAAGqnB,GAAR;AACA;;AACDyP,YAAAA,WAAW,GAAG,KAAd,CAX4C,CAa5C;;AACAnsB,YAAAA,MAAM,CAAEtI,IAAF,CAAN,GAAiB0zB,MAAM,CAACl8B,MAAP,CAAek9B,IAAf,EAAqB/2B,KAArB,EAA4B62B,IAA5B,CAAjB,CAd4C,CAgB7C;AACC,WAlBD,MAkBO,IAAKA,IAAI,KAAK1R,SAAd,EAA0B;AAChCxa,YAAAA,MAAM,CAAEtI,IAAF,CAAN,GAAiBw0B,IAAjB;AACA;AACD;AACD;AACD,KAlE4C,CAoE7C;;;AACA,WAAOlsB,MAAP;AACA,GAtED;;AAwEAorB,EAAAA,MAAM,CAACl8B,MAAP,CAAe;AAEd;AACAo9B,IAAAA,OAAO,EAAE,WAAW,CAAEh1B,OAAO,GAAGpB,IAAI,CAACiI,MAAL,EAAZ,EAA4BV,OAA5B,CAAqC,KAArC,EAA4C,EAA5C,CAHN;AAKd;AACA8uB,IAAAA,OAAO,EAAE,IANK;AAQdjzB,IAAAA,KAAK,EAAE,eAAUkzB,GAAV,EAAgB;AACtB,YAAM,IAAIrS,KAAJ,CAAWqS,GAAX,CAAN;AACA,KAVa;AAYdjH,IAAAA,IAAI,EAAE,gBAAW,CAAE,CAZL;AAcd8G,IAAAA,aAAa,EAAE,uBAAUxuB,GAAV,EAAgB;AAC9B,UAAI4uB,KAAJ,EAAWC,IAAX,CAD8B,CAG9B;AACA;;AACA,UAAK,CAAC7uB,GAAD,IAAQR,QAAQ,CAACzC,IAAT,CAAeiD,GAAf,MAAyB,iBAAtC,EAA0D;AACzD,eAAO,KAAP;AACA;;AAED4uB,MAAAA,KAAK,GAAGzC,QAAQ,CAAEnsB,GAAF,CAAhB,CAT8B,CAW9B;;AACA,UAAK,CAAC4uB,KAAN,EAAc;AACb,eAAO,IAAP;AACA,OAd6B,CAgB9B;;;AACAC,MAAAA,IAAI,GAAGtC,MAAM,CAACxvB,IAAP,CAAa6xB,KAAb,EAAoB,aAApB,KAAuCA,KAAK,CAACz0B,WAApD;AACA,aAAO,OAAO00B,IAAP,KAAgB,UAAhB,IAA8BrC,UAAU,CAACzvB,IAAX,CAAiB8xB,IAAjB,MAA4BpC,oBAAjE;AACA,KAjCa;AAmCd/b,IAAAA,aAAa,EAAE,uBAAU1Q,GAAV,EAAgB;AAC9B,UAAInG,IAAJ;;AAEA,WAAMA,IAAN,IAAcmG,GAAd,EAAoB;AACnB,eAAO,KAAP;AACA;;AACD,aAAO,IAAP;AACA,KA1Ca;AA4Cd;AACA;AACA8uB,IAAAA,UAAU,EAAE,oBAAU5B,IAAV,EAAgB/7B,OAAhB,EAAyBi8B,GAAzB,EAA+B;AAC1CH,MAAAA,OAAO,CAAEC,IAAF,EAAQ;AAAEH,QAAAA,KAAK,EAAE57B,OAAO,IAAIA,OAAO,CAAC47B;AAA5B,OAAR,EAA6CK,GAA7C,CAAP;AACA,KAhDa;AAkDdt7B,IAAAA,IAAI,EAAE,cAAUkO,GAAV,EAAexB,QAAf,EAA0B;AAC/B,UAAIhM,MAAJ;AAAA,UAAY2F,CAAC,GAAG,CAAhB;;AAEA,UAAK42B,WAAW,CAAE/uB,GAAF,CAAhB,EAA0B;AACzBxN,QAAAA,MAAM,GAAGwN,GAAG,CAACxN,MAAb;;AACA,eAAQ2F,CAAC,GAAG3F,MAAZ,EAAoB2F,CAAC,EAArB,EAA0B;AACzB,cAAKqG,QAAQ,CAACzB,IAAT,CAAeiD,GAAG,CAAE7H,CAAF,CAAlB,EAAyBA,CAAzB,EAA4B6H,GAAG,CAAE7H,CAAF,CAA/B,MAA2C,KAAhD,EAAwD;AACvD;AACA;AACD;AACD,OAPD,MAOO;AACN,aAAMA,CAAN,IAAW6H,GAAX,EAAiB;AAChB,cAAKxB,QAAQ,CAACzB,IAAT,CAAeiD,GAAG,CAAE7H,CAAF,CAAlB,EAAyBA,CAAzB,EAA4B6H,GAAG,CAAE7H,CAAF,CAA/B,MAA2C,KAAhD,EAAwD;AACvD;AACA;AACD;AACD;;AAED,aAAO6H,GAAP;AACA,KArEa;AAuEd;AACAgvB,IAAAA,SAAS,EAAE,mBAAU9C,GAAV,EAAe5sB,OAAf,EAAyB;AACnC,UAAIokB,GAAG,GAAGpkB,OAAO,IAAI,EAArB;;AAEA,UAAK4sB,GAAG,IAAI,IAAZ,EAAmB;AAClB,YAAK6C,WAAW,CAAEzzB,MAAM,CAAE4wB,GAAF,CAAR,CAAhB,EAAoC;AACnCqB,UAAAA,MAAM,CAACO,KAAP,CAAcpK,GAAd,EACC,OAAOwI,GAAP,KAAe,QAAf,GACC,CAAEA,GAAF,CADD,GACWA,GAFZ;AAIA,SALD,MAKO;AACN5xB,UAAAA,IAAI,CAACyC,IAAL,CAAW2mB,GAAX,EAAgBwI,GAAhB;AACA;AACD;;AAED,aAAOxI,GAAP;AACA,KAvFa;AAyFduL,IAAAA,OAAO,EAAE,iBAAUtzB,IAAV,EAAgBuwB,GAAhB,EAAqB/zB,CAArB,EAAyB;AACjC,aAAO+zB,GAAG,IAAI,IAAP,GAAc,CAAC,CAAf,GAAmBzxB,OAAO,CAACsC,IAAR,CAAcmvB,GAAd,EAAmBvwB,IAAnB,EAAyBxD,CAAzB,CAA1B;AACA,KA3Fa;AA6Fd;AACA;AACA21B,IAAAA,KAAK,EAAE,eAAU/4B,KAAV,EAAiBm6B,MAAjB,EAA0B;AAChC,UAAIhX,GAAG,GAAG,CAACgX,MAAM,CAAC18B,MAAlB;AAAA,UACC47B,CAAC,GAAG,CADL;AAAA,UAECj2B,CAAC,GAAGpD,KAAK,CAACvC,MAFX;;AAIA,aAAQ47B,CAAC,GAAGlW,GAAZ,EAAiBkW,CAAC,EAAlB,EAAuB;AACtBr5B,QAAAA,KAAK,CAAEoD,CAAC,EAAH,CAAL,GAAe+2B,MAAM,CAAEd,CAAF,CAArB;AACA;;AAEDr5B,MAAAA,KAAK,CAACvC,MAAN,GAAe2F,CAAf;AAEA,aAAOpD,KAAP;AACA,KA3Ga;AA6Gdk5B,IAAAA,IAAI,EAAE,cAAUJ,KAAV,EAAiBrvB,QAAjB,EAA2B2wB,MAA3B,EAAoC;AACzC,UAAIC,eAAJ;AAAA,UACCtN,OAAO,GAAG,EADX;AAAA,UAEC3pB,CAAC,GAAG,CAFL;AAAA,UAGC3F,MAAM,GAAGq7B,KAAK,CAACr7B,MAHhB;AAAA,UAIC68B,cAAc,GAAG,CAACF,MAJnB,CADyC,CAOzC;AACA;;AACA,aAAQh3B,CAAC,GAAG3F,MAAZ,EAAoB2F,CAAC,EAArB,EAA0B;AACzBi3B,QAAAA,eAAe,GAAG,CAAC5wB,QAAQ,CAAEqvB,KAAK,CAAE11B,CAAF,CAAP,EAAcA,CAAd,CAA3B;;AACA,YAAKi3B,eAAe,KAAKC,cAAzB,EAA0C;AACzCvN,UAAAA,OAAO,CAACxnB,IAAR,CAAcuzB,KAAK,CAAE11B,CAAF,CAAnB;AACA;AACD;;AAED,aAAO2pB,OAAP;AACA,KA9Ha;AAgId;AACA3lB,IAAAA,GAAG,EAAE,aAAU0xB,KAAV,EAAiBrvB,QAAjB,EAA2B8wB,GAA3B,EAAiC;AACrC,UAAI98B,MAAJ;AAAA,UAAY8e,KAAZ;AAAA,UACCnZ,CAAC,GAAG,CADL;AAAA,UAECurB,GAAG,GAAG,EAFP,CADqC,CAKrC;;AACA,UAAKqL,WAAW,CAAElB,KAAF,CAAhB,EAA4B;AAC3Br7B,QAAAA,MAAM,GAAGq7B,KAAK,CAACr7B,MAAf;;AACA,eAAQ2F,CAAC,GAAG3F,MAAZ,EAAoB2F,CAAC,EAArB,EAA0B;AACzBmZ,UAAAA,KAAK,GAAG9S,QAAQ,CAAEqvB,KAAK,CAAE11B,CAAF,CAAP,EAAcA,CAAd,EAAiBm3B,GAAjB,CAAhB;;AAEA,cAAKhe,KAAK,IAAI,IAAd,EAAqB;AACpBoS,YAAAA,GAAG,CAACppB,IAAJ,CAAUgX,KAAV;AACA;AACD,SAR0B,CAU5B;;AACC,OAXD,MAWO;AACN,aAAMnZ,CAAN,IAAW01B,KAAX,EAAmB;AAClBvc,UAAAA,KAAK,GAAG9S,QAAQ,CAAEqvB,KAAK,CAAE11B,CAAF,CAAP,EAAcA,CAAd,EAAiBm3B,GAAjB,CAAhB;;AAEA,cAAKhe,KAAK,IAAI,IAAd,EAAqB;AACpBoS,YAAAA,GAAG,CAACppB,IAAJ,CAAUgX,KAAV;AACA;AACD;AACD,OAzBoC,CA2BrC;;;AACA,aAAO+a,IAAI,CAAE3I,GAAF,CAAX;AACA,KA9Ja;AAgKd;AACA6L,IAAAA,IAAI,EAAE,CAjKQ;AAmKd;AACA;AACA7C,IAAAA,OAAO,EAAEA;AArKK,GAAf;;AAwKA,MAAK,OAAO8C,MAAP,KAAkB,UAAvB,EAAoC;AACnCjC,IAAAA,MAAM,CAAClwB,EAAP,CAAWmyB,MAAM,CAACC,QAAlB,IAA+BvD,GAAG,CAAEsD,MAAM,CAACC,QAAT,CAAlC;AACA,GA3cgF,CA6cjF;;;AACAlC,EAAAA,MAAM,CAACz7B,IAAP,CAAa,uEAAuEiK,KAAvE,CAA8E,GAA9E,CAAb,EACC,UAAU2zB,EAAV,EAAc71B,IAAd,EAAqB;AACpByyB,IAAAA,UAAU,CAAE,aAAazyB,IAAb,GAAoB,GAAtB,CAAV,GAAwCA,IAAI,CAACO,WAAL,EAAxC;AACA,GAHF;;AAKA,WAAS20B,WAAT,CAAsB/uB,GAAtB,EAA4B;AAE3B;AACA;AACA;AACA;AACA,QAAIxN,MAAM,GAAG,CAAC,CAACwN,GAAF,IAAS,YAAYA,GAArB,IAA4BA,GAAG,CAACxN,MAA7C;AAAA,QACCwI,IAAI,GAAGsyB,MAAM,CAAEttB,GAAF,CADd;;AAGA,QAAK2sB,UAAU,CAAE3sB,GAAF,CAAV,IAAqB6sB,QAAQ,CAAE7sB,GAAF,CAAlC,EAA4C;AAC3C,aAAO,KAAP;AACA;;AAED,WAAOhF,IAAI,KAAK,OAAT,IAAoBxI,MAAM,KAAK,CAA/B,IACN,OAAOA,MAAP,KAAkB,QAAlB,IAA8BA,MAAM,GAAG,CAAvC,IAA8CA,MAAM,GAAG,CAAX,IAAkBwN,GAD/D;AAEA;;AACD,MAAI2vB,MAAM;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACE,YAAU78B,MAAV,EAAmB;AACrB,QAAIqF,CAAJ;AAAA,QACCu0B,OADD;AAAA,QAECkD,IAFD;AAAA,QAGCC,OAHD;AAAA,QAICC,KAJD;AAAA,QAKCC,QALD;AAAA,QAMCC,OAND;AAAA,QAOCC,MAPD;AAAA,QAQCC,gBARD;AAAA,QASCC,SATD;AAAA,QAUCC,YAVD;AAAA,QAYC;AACAC,IAAAA,WAbD;AAAA,QAcC3vB,QAdD;AAAA,QAeC4vB,OAfD;AAAA,QAgBCC,cAhBD;AAAA,QAiBCC,SAjBD;AAAA,QAkBCC,aAlBD;AAAA,QAmBC3O,OAnBD;AAAA,QAoBCle,QApBD;AAAA,QAsBC;AACA6qB,IAAAA,OAAO,GAAG,WAAW,IAAI,IAAI5wB,IAAJ,EAvB1B;AAAA,QAwBC6yB,YAAY,GAAG59B,MAAM,CAAC4N,QAxBvB;AAAA,QAyBCiwB,OAAO,GAAG,CAzBX;AAAA,QA0BCC,IAAI,GAAG,CA1BR;AAAA,QA2BCC,UAAU,GAAGC,WAAW,EA3BzB;AAAA,QA4BCC,UAAU,GAAGD,WAAW,EA5BzB;AAAA,QA6BCE,aAAa,GAAGF,WAAW,EA7B5B;AAAA,QA8BCG,sBAAsB,GAAGH,WAAW,EA9BrC;AAAA,QA+BCI,SAAS,GAAG,mBAAUjS,CAAV,EAAaC,CAAb,EAAiB;AAC5B,UAAKD,CAAC,KAAKC,CAAX,EAAe;AACdkR,QAAAA,YAAY,GAAG,IAAf;AACA;;AACD,aAAO,CAAP;AACA,KApCF;AAAA,QAsCC;AACA7D,IAAAA,MAAM,GAAK,EAAF,CAAOzb,cAvCjB;AAAA,QAwCCob,GAAG,GAAG,EAxCP;AAAA,QAyCCiF,GAAG,GAAGjF,GAAG,CAACiF,GAzCX;AAAA,QA0CCC,UAAU,GAAGlF,GAAG,CAAC5xB,IA1ClB;AAAA,QA2CCA,IAAI,GAAG4xB,GAAG,CAAC5xB,IA3CZ;AAAA,QA4CCwC,KAAK,GAAGovB,GAAG,CAACpvB,KA5Cb;AAAA,QA8CC;AACA;AACArC,IAAAA,OAAO,GAAG,SAAVA,OAAU,CAAU42B,IAAV,EAAgB11B,IAAhB,EAAuB;AAChC,UAAIxD,CAAC,GAAG,CAAR;AAAA,UACC+f,GAAG,GAAGmZ,IAAI,CAAC7+B,MADZ;;AAEA,aAAQ2F,CAAC,GAAG+f,GAAZ,EAAiB/f,CAAC,EAAlB,EAAuB;AACtB,YAAKk5B,IAAI,CAAEl5B,CAAF,CAAJ,KAAcwD,IAAnB,EAA0B;AACzB,iBAAOxD,CAAP;AACA;AACD;;AACD,aAAO,CAAC,CAAR;AACA,KAzDF;AAAA,QA2DCm5B,QAAQ,GAAG,8EACV,mDA5DF;AAAA,QA8DC;AAEA;AACAC,IAAAA,UAAU,GAAG,qBAjEd;AAAA,QAmEC;AACAC,IAAAA,UAAU,GAAG,4BAA4BD,UAA5B,GACZ,yCArEF;AAAA,QAuEC;AACArG,IAAAA,UAAU,GAAG,QAAQqG,UAAR,GAAqB,IAArB,GAA4BC,UAA5B,GAAyC,MAAzC,GAAkDD,UAAlD,GAEZ;AACA,mBAHY,GAGMA,UAHN,GAKZ;AACA;AACA,8DAPY,GAOiDC,UAPjD,GAO8D,MAP9D,GAQZD,UARY,GAQC,MAhFf;AAAA,QAkFCE,OAAO,GAAG,OAAOD,UAAP,GAAoB,UAApB,GAET;AACA;AACA,2DAJS,GAMT;AACA,8BAPS,GAOoBtG,UAPpB,GAOiC,MAPjC,GAST;AACA,QAVS,GAWT,QA7FF;AAAA,QA+FC;AACAwG,IAAAA,WAAW,GAAG,IAAIrmB,MAAJ,CAAYkmB,UAAU,GAAG,GAAzB,EAA8B,GAA9B,CAhGf;AAAA,QAiGCI,KAAK,GAAG,IAAItmB,MAAJ,CAAY,MAAMkmB,UAAN,GAAmB,6BAAnB,GACnBA,UADmB,GACN,IADN,EACY,GADZ,CAjGT;AAAA,QAoGCK,MAAM,GAAG,IAAIvmB,MAAJ,CAAY,MAAMkmB,UAAN,GAAmB,IAAnB,GAA0BA,UAA1B,GAAuC,GAAnD,CApGV;AAAA,QAqGCM,YAAY,GAAG,IAAIxmB,MAAJ,CAAY,MAAMkmB,UAAN,GAAmB,UAAnB,GAAgCA,UAAhC,GAA6C,GAA7C,GAAmDA,UAAnD,GAC1B,GADc,CArGhB;AAAA,QAuGCO,QAAQ,GAAG,IAAIzmB,MAAJ,CAAYkmB,UAAU,GAAG,IAAzB,CAvGZ;AAAA,QAyGCQ,OAAO,GAAG,IAAI1mB,MAAJ,CAAYomB,OAAZ,CAzGX;AAAA,QA0GCO,WAAW,GAAG,IAAI3mB,MAAJ,CAAY,MAAMmmB,UAAN,GAAmB,GAA/B,CA1Gf;AAAA,QA4GCS,SAAS,GAAG;AACX,YAAM,IAAI5mB,MAAJ,CAAY,QAAQmmB,UAAR,GAAqB,GAAjC,CADK;AAEX,eAAS,IAAInmB,MAAJ,CAAY,UAAUmmB,UAAV,GAAuB,GAAnC,CAFE;AAGX,aAAO,IAAInmB,MAAJ,CAAY,OAAOmmB,UAAP,GAAoB,OAAhC,CAHI;AAIX,cAAQ,IAAInmB,MAAJ,CAAY,MAAM6f,UAAlB,CAJG;AAKX,gBAAU,IAAI7f,MAAJ,CAAY,MAAMomB,OAAlB,CALC;AAMX,eAAS,IAAIpmB,MAAJ,CAAY,2DACpBkmB,UADoB,GACP,8BADO,GAC0BA,UAD1B,GACuC,aADvC,GAEpBA,UAFoB,GAEP,YAFO,GAEQA,UAFR,GAEqB,QAFjC,EAE2C,GAF3C,CANE;AASX,cAAQ,IAAIlmB,MAAJ,CAAY,SAASimB,QAAT,GAAoB,IAAhC,EAAsC,GAAtC,CATG;AAWX;AACA;AACA,sBAAgB,IAAIjmB,MAAJ,CAAY,MAAMkmB,UAAN,GAC3B,kDAD2B,GAC0BA,UAD1B,GAE3B,kBAF2B,GAENA,UAFM,GAEO,kBAFnB,EAEuC,GAFvC;AAbL,KA5Gb;AAAA,QA8HCW,KAAK,GAAG,QA9HT;AAAA,QA+HCC,OAAO,GAAG,qCA/HX;AAAA,QAgICC,OAAO,GAAG,QAhIX;AAAA,QAkICC,OAAO,GAAG,wBAlIX;AAAA,QAoIC;AACAC,IAAAA,UAAU,GAAG,kCArId;AAAA,QAuICC,QAAQ,GAAG,MAvIZ;AAAA,QAyIC;AACA;AACAC,IAAAA,SAAS,GAAG,IAAInnB,MAAJ,CAAY,yBAAyBkmB,UAAzB,GAAsC,sBAAlD,EAA0E,GAA1E,CA3Ib;AAAA,QA4ICkB,SAAS,GAAG,SAAZA,SAAY,CAAUC,MAAV,EAAkBC,MAAlB,EAA2B;AACtC,UAAIC,IAAI,GAAG,OAAOF,MAAM,CAAC51B,KAAP,CAAc,CAAd,CAAP,GAA2B,OAAtC;AAEA,aAAO61B,MAAM,GAEZ;AACAA,MAAAA,MAHY,GAKZ;AACA;AACA;AACA;AACAC,MAAAA,IAAI,GAAG,CAAP,GACCrT,MAAM,CAACC,YAAP,CAAqBoT,IAAI,GAAG,OAA5B,CADD,GAECrT,MAAM,CAACC,YAAP,CAAqBoT,IAAI,IAAI,EAAR,GAAa,MAAlC,EAA0CA,IAAI,GAAG,KAAP,GAAe,MAAzD,CAXF;AAYA,KA3JF;AAAA,QA6JC;AACA;AACAC,IAAAA,UAAU,GAAG,qDA/Jd;AAAA,QAgKCC,UAAU,GAAG,SAAbA,UAAa,CAAUC,EAAV,EAAcC,WAAd,EAA4B;AACxC,UAAKA,WAAL,EAAmB;AAElB;AACA,YAAKD,EAAE,KAAK,IAAZ,EAAmB;AAClB,iBAAO,QAAP;AACA,SALiB,CAOlB;;;AACA,eAAOA,EAAE,CAACj2B,KAAH,CAAU,CAAV,EAAa,CAAC,CAAd,IAAoB,IAApB,GACNi2B,EAAE,CAACE,UAAH,CAAeF,EAAE,CAACvgC,MAAH,GAAY,CAA3B,EAA+BgN,QAA/B,CAAyC,EAAzC,CADM,GAC0C,GADjD;AAEA,OAXuC,CAaxC;;;AACA,aAAO,OAAOuzB,EAAd;AACA,KA/KF;AAAA,QAiLC;AACA;AACA;AACA;AACAG,IAAAA,aAAa,GAAG,SAAhBA,aAAgB,GAAW;AAC1B7C,MAAAA,WAAW;AACX,KAvLF;AAAA,QAyLC8C,kBAAkB,GAAGC,aAAa,CACjC,UAAUz3B,IAAV,EAAiB;AAChB,aAAOA,IAAI,CAAC03B,QAAL,KAAkB,IAAlB,IAA0B13B,IAAI,CAAC23B,QAAL,CAAcl5B,WAAd,OAAgC,UAAjE;AACA,KAHgC,EAIjC;AAAEusB,MAAAA,GAAG,EAAE,YAAP;AAAqBjyB,MAAAA,IAAI,EAAE;AAA3B,KAJiC,CAzLnC,CADqB,CAiMrB;;;AACA,QAAI;AACH4F,MAAAA,IAAI,CAAC4C,KAAL,CACGgvB,GAAG,GAAGpvB,KAAK,CAACC,IAAN,CAAY2zB,YAAY,CAAC6C,UAAzB,CADT,EAEC7C,YAAY,CAAC6C,UAFd,EADG,CAMH;AACA;AACA;;AACArH,MAAAA,GAAG,CAAEwE,YAAY,CAAC6C,UAAb,CAAwB/gC,MAA1B,CAAH,CAAsCo6B,QAAtC;AACA,KAVD,CAUE,OAAQt4B,CAAR,EAAY;AACbgG,MAAAA,IAAI,GAAG;AAAE4C,QAAAA,KAAK,EAAEgvB,GAAG,CAAC15B,MAAJ,GAEf;AACA,kBAAU2P,MAAV,EAAkBqxB,GAAlB,EAAwB;AACvBpC,UAAAA,UAAU,CAACl0B,KAAX,CAAkBiF,MAAlB,EAA0BrF,KAAK,CAACC,IAAN,CAAYy2B,GAAZ,CAA1B;AACA,SALc,GAOf;AACA;AACA,kBAAUrxB,MAAV,EAAkBqxB,GAAlB,EAAwB;AACvB,cAAIpF,CAAC,GAAGjsB,MAAM,CAAC3P,MAAf;AAAA,cACC2F,CAAC,GAAG,CADL,CADuB,CAIvB;;AACA,iBAAUgK,MAAM,CAAEisB,CAAC,EAAH,CAAN,GAAgBoF,GAAG,CAAEr7B,CAAC,EAAH,CAA7B,EAAyC,CAAE;;AAC3CgK,UAAAA,MAAM,CAAC3P,MAAP,GAAgB47B,CAAC,GAAG,CAApB;AACA;AAhBK,OAAP;AAkBA;;AAED,aAASuB,MAAT,CAAiBnC,QAAjB,EAA2B7vB,OAA3B,EAAoC2B,OAApC,EAA6Cm0B,IAA7C,EAAoD;AACnD,UAAIC,CAAJ;AAAA,UAAOv7B,CAAP;AAAA,UAAUwD,IAAV;AAAA,UAAgBg4B,GAAhB;AAAA,UAAqBrtB,KAArB;AAAA,UAA4BstB,MAA5B;AAAA,UAAoCC,WAApC;AAAA,UACCC,UAAU,GAAGn2B,OAAO,IAAIA,OAAO,CAACo2B,aADjC;AAAA,UAGC;AACAnH,MAAAA,QAAQ,GAAGjvB,OAAO,GAAGA,OAAO,CAACivB,QAAX,GAAsB,CAJzC;AAMAttB,MAAAA,OAAO,GAAGA,OAAO,IAAI,EAArB,CAPmD,CASnD;;AACA,UAAK,OAAOkuB,QAAP,KAAoB,QAApB,IAAgC,CAACA,QAAjC,IACJZ,QAAQ,KAAK,CAAb,IAAkBA,QAAQ,KAAK,CAA/B,IAAoCA,QAAQ,KAAK,EADlD,EACuD;AAEtD,eAAOttB,OAAP;AACA,OAdkD,CAgBnD;;;AACA,UAAK,CAACm0B,IAAN,EAAa;AACZpD,QAAAA,WAAW,CAAE1yB,OAAF,CAAX;AACAA,QAAAA,OAAO,GAAGA,OAAO,IAAI+C,QAArB;;AAEA,YAAK6vB,cAAL,EAAsB;AAErB;AACA;AACA,cAAK3D,QAAQ,KAAK,EAAb,KAAqBtmB,KAAK,GAAGgsB,UAAU,CAAC/yB,IAAX,CAAiBiuB,QAAjB,CAA7B,CAAL,EAAkE;AAEjE;AACA,gBAAOkG,CAAC,GAAGptB,KAAK,CAAE,CAAF,CAAhB,EAA0B;AAEzB;AACA,kBAAKsmB,QAAQ,KAAK,CAAlB,EAAsB;AACrB,oBAAOjxB,IAAI,GAAGgC,OAAO,CAACq2B,cAAR,CAAwBN,CAAxB,CAAd,EAA8C;AAE7C;AACA;AACA;AACA,sBAAK/3B,IAAI,CAACxJ,EAAL,KAAYuhC,CAAjB,EAAqB;AACpBp0B,oBAAAA,OAAO,CAAChF,IAAR,CAAcqB,IAAd;AACA,2BAAO2D,OAAP;AACA;AACD,iBATD,MASO;AACN,yBAAOA,OAAP;AACA,iBAZoB,CActB;;AACC,eAfD,MAeO;AAEN;AACA;AACA;AACA,oBAAKw0B,UAAU,KAAMn4B,IAAI,GAAGm4B,UAAU,CAACE,cAAX,CAA2BN,CAA3B,CAAb,CAAV,IACJ9vB,QAAQ,CAAEjG,OAAF,EAAWhC,IAAX,CADJ,IAEJA,IAAI,CAACxJ,EAAL,KAAYuhC,CAFb,EAEiB;AAEhBp0B,kBAAAA,OAAO,CAAChF,IAAR,CAAcqB,IAAd;AACA,yBAAO2D,OAAP;AACA;AACD,eA9BwB,CAgC1B;;AACC,aAjCD,MAiCO,IAAKgH,KAAK,CAAE,CAAF,CAAV,EAAkB;AACxBhM,cAAAA,IAAI,CAAC4C,KAAL,CAAYoC,OAAZ,EAAqB3B,OAAO,CAACyjB,oBAAR,CAA8BoM,QAA9B,CAArB;AACA,qBAAOluB,OAAP,CAFwB,CAIzB;AACC,aALM,MAKA,IAAK,CAAEo0B,CAAC,GAAGptB,KAAK,CAAE,CAAF,CAAX,KAAsBomB,OAAO,CAACuH,sBAA9B,IACXt2B,OAAO,CAACs2B,sBADF,EAC2B;AAEjC35B,cAAAA,IAAI,CAAC4C,KAAL,CAAYoC,OAAZ,EAAqB3B,OAAO,CAACs2B,sBAAR,CAAgCP,CAAhC,CAArB;AACA,qBAAOp0B,OAAP;AACA;AACD,WAnDoB,CAqDrB;;;AACA,cAAKotB,OAAO,CAACwH,GAAR,IACJ,CAACjD,sBAAsB,CAAEzD,QAAQ,GAAG,GAAb,CADnB,KAEF,CAACgD,SAAD,IAAc,CAACA,SAAS,CAACpyB,IAAV,CAAgBovB,QAAhB,CAFb,OAIJ;AACA;AACEZ,UAAAA,QAAQ,KAAK,CAAb,IAAkBjvB,OAAO,CAAC21B,QAAR,CAAiBl5B,WAAjB,OAAmC,QANnD,CAAL,EAMqE;AAEpEy5B,YAAAA,WAAW,GAAGrG,QAAd;AACAsG,YAAAA,UAAU,GAAGn2B,OAAb,CAHoE,CAKpE;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,gBAAKivB,QAAQ,KAAK,CAAb,KACFkF,QAAQ,CAAC1zB,IAAT,CAAeovB,QAAf,KAA6BqE,YAAY,CAACzzB,IAAb,CAAmBovB,QAAnB,CAD3B,CAAL,EACkE;AAEjE;AACAsG,cAAAA,UAAU,GAAGvB,QAAQ,CAACn0B,IAAT,CAAeovB,QAAf,KAA6B2G,WAAW,CAAEx2B,OAAO,CAAC8f,UAAV,CAAxC,IACZ9f,OADD,CAHiE,CAMjE;AACA;;AACA,kBAAKm2B,UAAU,KAAKn2B,OAAf,IAA0B,CAAC+uB,OAAO,CAAC0H,KAAxC,EAAgD;AAE/C;AACA,oBAAOT,GAAG,GAAGh2B,OAAO,CAACuY,YAAR,CAAsB,IAAtB,CAAb,EAA8C;AAC7Cyd,kBAAAA,GAAG,GAAGA,GAAG,CAAC/zB,OAAJ,CAAaizB,UAAb,EAAyBC,UAAzB,CAAN;AACA,iBAFD,MAEO;AACNn1B,kBAAAA,OAAO,CAACsN,YAAR,CAAsB,IAAtB,EAA8B0oB,GAAG,GAAGlF,OAApC;AACA;AACD,eAhBgE,CAkBjE;;;AACAmF,cAAAA,MAAM,GAAG7D,QAAQ,CAAEvC,QAAF,CAAjB;AACAr1B,cAAAA,CAAC,GAAGy7B,MAAM,CAACphC,MAAX;;AACA,qBAAQ2F,CAAC,EAAT,EAAc;AACby7B,gBAAAA,MAAM,CAAEz7B,CAAF,CAAN,GAAc,CAAEw7B,GAAG,GAAG,MAAMA,GAAT,GAAe,QAApB,IAAiC,GAAjC,GACbU,UAAU,CAAET,MAAM,CAAEz7B,CAAF,CAAR,CADX;AAEA;;AACD07B,cAAAA,WAAW,GAAGD,MAAM,CAACvnB,IAAP,CAAa,GAAb,CAAd;AACA;;AAED,gBAAI;AACH/R,cAAAA,IAAI,CAAC4C,KAAL,CAAYoC,OAAZ,EACCw0B,UAAU,CAACQ,gBAAX,CAA6BT,WAA7B,CADD;AAGA,qBAAOv0B,OAAP;AACA,aALD,CAKE,OAAQi1B,QAAR,EAAmB;AACpBtD,cAAAA,sBAAsB,CAAEzD,QAAF,EAAY,IAAZ,CAAtB;AACA,aAPD,SAOU;AACT,kBAAKmG,GAAG,KAAKlF,OAAb,EAAuB;AACtB9wB,gBAAAA,OAAO,CAAC62B,eAAR,CAAyB,IAAzB;AACA;AACD;AACD;AACD;AACD,OAxIkD,CA0InD;;;AACA,aAAOvE,MAAM,CAAEzC,QAAQ,CAAC5tB,OAAT,CAAkB+xB,KAAlB,EAAyB,IAAzB,CAAF,EAAmCh0B,OAAnC,EAA4C2B,OAA5C,EAAqDm0B,IAArD,CAAb;AACA;AAED;AACA;AACA;AACA;AACA;AACA;;;AACA,aAAS3C,WAAT,GAAuB;AACtB,UAAIv1B,IAAI,GAAG,EAAX;;AAEA,eAASk5B,KAAT,CAAgB5jB,GAAhB,EAAqBS,KAArB,EAA6B;AAE5B;AACA,YAAK/V,IAAI,CAACjB,IAAL,CAAWuW,GAAG,GAAG,GAAjB,IAAyB+e,IAAI,CAAC8E,WAAnC,EAAiD;AAEhD;AACA,iBAAOD,KAAK,CAAEl5B,IAAI,CAACo5B,KAAL,EAAF,CAAZ;AACA;;AACD,eAASF,KAAK,CAAE5jB,GAAG,GAAG,GAAR,CAAL,GAAqBS,KAA9B;AACA;;AACD,aAAOmjB,KAAP;AACA;AAED;AACA;AACA;AACA;;;AACA,aAASG,YAAT,CAAuBv3B,EAAvB,EAA4B;AAC3BA,MAAAA,EAAE,CAAEoxB,OAAF,CAAF,GAAgB,IAAhB;AACA,aAAOpxB,EAAP;AACA;AAED;AACA;AACA;AACA;;;AACA,aAASw3B,MAAT,CAAiBx3B,EAAjB,EAAsB;AACrB,UAAIrL,EAAE,GAAG0O,QAAQ,CAACC,aAAT,CAAwB,UAAxB,CAAT;;AAEA,UAAI;AACH,eAAO,CAAC,CAACtD,EAAE,CAAErL,EAAF,CAAX;AACA,OAFD,CAEE,OAAQsC,CAAR,EAAY;AACb,eAAO,KAAP;AACA,OAJD,SAIU;AAET;AACA,YAAKtC,EAAE,CAACyrB,UAAR,EAAqB;AACpBzrB,UAAAA,EAAE,CAACyrB,UAAH,CAAc4P,WAAd,CAA2Br7B,EAA3B;AACA,SALQ,CAOT;;;AACAA,QAAAA,EAAE,GAAG,IAAL;AACA;AACD;AAED;AACA;AACA;AACA;AACA;;;AACA,aAAS8iC,SAAT,CAAoBC,KAApB,EAA2B/zB,OAA3B,EAAqC;AACpC,UAAIkrB,GAAG,GAAG6I,KAAK,CAACh5B,KAAN,CAAa,GAAb,CAAV;AAAA,UACC5D,CAAC,GAAG+zB,GAAG,CAAC15B,MADT;;AAGA,aAAQ2F,CAAC,EAAT,EAAc;AACby3B,QAAAA,IAAI,CAACoF,UAAL,CAAiB9I,GAAG,CAAE/zB,CAAF,CAApB,IAA8B6I,OAA9B;AACA;AACD;AAED;AACA;AACA;AACA;AACA;AACA;;;AACA,aAASi0B,YAAT,CAAuBhW,CAAvB,EAA0BC,CAA1B,EAA8B;AAC7B,UAAIgW,GAAG,GAAGhW,CAAC,IAAID,CAAf;AAAA,UACCkW,IAAI,GAAGD,GAAG,IAAIjW,CAAC,CAAC2N,QAAF,KAAe,CAAtB,IAA2B1N,CAAC,CAAC0N,QAAF,KAAe,CAA1C,IACN3N,CAAC,CAACmW,WAAF,GAAgBlW,CAAC,CAACkW,WAFpB,CAD6B,CAK7B;;AACA,UAAKD,IAAL,EAAY;AACX,eAAOA,IAAP;AACA,OAR4B,CAU7B;;;AACA,UAAKD,GAAL,EAAW;AACV,eAAUA,GAAG,GAAGA,GAAG,CAACjsB,WAApB,EAAoC;AACnC,cAAKisB,GAAG,KAAKhW,CAAb,EAAiB;AAChB,mBAAO,CAAC,CAAR;AACA;AACD;AACD;;AAED,aAAOD,CAAC,GAAG,CAAH,GAAO,CAAC,CAAhB;AACA;AAED;AACA;AACA;AACA;;;AACA,aAASoW,iBAAT,CAA4Br6B,IAA5B,EAAmC;AAClC,aAAO,UAAUW,IAAV,EAAiB;AACvB,YAAI9B,IAAI,GAAG8B,IAAI,CAAC23B,QAAL,CAAcl5B,WAAd,EAAX;AACA,eAAOP,IAAI,KAAK,OAAT,IAAoB8B,IAAI,CAACX,IAAL,KAAcA,IAAzC;AACA,OAHD;AAIA;AAED;AACA;AACA;AACA;;;AACA,aAASs6B,kBAAT,CAA6Bt6B,IAA7B,EAAoC;AACnC,aAAO,UAAUW,IAAV,EAAiB;AACvB,YAAI9B,IAAI,GAAG8B,IAAI,CAAC23B,QAAL,CAAcl5B,WAAd,EAAX;AACA,eAAO,CAAEP,IAAI,KAAK,OAAT,IAAoBA,IAAI,KAAK,QAA/B,KAA6C8B,IAAI,CAACX,IAAL,KAAcA,IAAlE;AACA,OAHD;AAIA;AAED;AACA;AACA;AACA;;;AACA,aAASu6B,oBAAT,CAA+BlC,QAA/B,EAA0C;AAEzC;AACA,aAAO,UAAU13B,IAAV,EAAiB;AAEvB;AACA;AACA;AACA,YAAK,UAAUA,IAAf,EAAsB;AAErB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAKA,IAAI,CAAC8hB,UAAL,IAAmB9hB,IAAI,CAAC03B,QAAL,KAAkB,KAA1C,EAAkD;AAEjD;AACA,gBAAK,WAAW13B,IAAhB,EAAuB;AACtB,kBAAK,WAAWA,IAAI,CAAC8hB,UAArB,EAAkC;AACjC,uBAAO9hB,IAAI,CAAC8hB,UAAL,CAAgB4V,QAAhB,KAA6BA,QAApC;AACA,eAFD,MAEO;AACN,uBAAO13B,IAAI,CAAC03B,QAAL,KAAkBA,QAAzB;AACA;AACD,aATgD,CAWjD;AACA;;;AACA,mBAAO13B,IAAI,CAAC65B,UAAL,KAAoBnC,QAApB,IAEN;;AACA;AACA13B,YAAAA,IAAI,CAAC65B,UAAL,KAAoB,CAACnC,QAArB,IACAF,kBAAkB,CAAEx3B,IAAF,CAAlB,KAA+B03B,QALhC;AAMA;;AAED,iBAAO13B,IAAI,CAAC03B,QAAL,KAAkBA,QAAzB,CA9BqB,CAgCtB;AACA;AACA;AACC,SAnCD,MAmCO,IAAK,WAAW13B,IAAhB,EAAuB;AAC7B,iBAAOA,IAAI,CAAC03B,QAAL,KAAkBA,QAAzB;AACA,SA1CsB,CA4CvB;;;AACA,eAAO,KAAP;AACA,OA9CD;AA+CA;AAED;AACA;AACA;AACA;;;AACA,aAASoC,sBAAT,CAAiCp4B,EAAjC,EAAsC;AACrC,aAAOu3B,YAAY,CAAE,UAAUc,QAAV,EAAqB;AACzCA,QAAAA,QAAQ,GAAG,CAACA,QAAZ;AACA,eAAOd,YAAY,CAAE,UAAUnB,IAAV,EAAgB3R,OAAhB,EAA0B;AAC9C,cAAIsM,CAAJ;AAAA,cACCuH,YAAY,GAAGt4B,EAAE,CAAE,EAAF,EAAMo2B,IAAI,CAACjhC,MAAX,EAAmBkjC,QAAnB,CADlB;AAAA,cAECv9B,CAAC,GAAGw9B,YAAY,CAACnjC,MAFlB,CAD8C,CAK9C;;AACA,iBAAQ2F,CAAC,EAAT,EAAc;AACb,gBAAKs7B,IAAI,CAAIrF,CAAC,GAAGuH,YAAY,CAAEx9B,CAAF,CAApB,CAAT,EAAyC;AACxCs7B,cAAAA,IAAI,CAAErF,CAAF,CAAJ,GAAY,EAAGtM,OAAO,CAAEsM,CAAF,CAAP,GAAeqF,IAAI,CAAErF,CAAF,CAAtB,CAAZ;AACA;AACD;AACD,SAXkB,CAAnB;AAYA,OAdkB,CAAnB;AAeA;AAED;AACA;AACA;AACA;AACA;;;AACA,aAAS+F,WAAT,CAAsBx2B,OAAtB,EAAgC;AAC/B,aAAOA,OAAO,IAAI,OAAOA,OAAO,CAACyjB,oBAAf,KAAwC,WAAnD,IAAkEzjB,OAAzE;AACA,KA1jBoB,CA4jBrB;;;AACA+uB,IAAAA,OAAO,GAAGiD,MAAM,CAACjD,OAAP,GAAiB,EAA3B;AAEA;AACA;AACA;AACA;AACA;;AACAoD,IAAAA,KAAK,GAAGH,MAAM,CAACG,KAAP,GAAe,UAAUn0B,IAAV,EAAiB;AACvC,UAAIuE,SAAS,GAAGvE,IAAI,IAAIA,IAAI,CAACi6B,YAA7B;AAAA,UACCtF,OAAO,GAAG30B,IAAI,IAAI,CAAEA,IAAI,CAACo4B,aAAL,IAAsBp4B,IAAxB,EAA+Boc,eADlD,CADuC,CAIvC;AACA;AACA;;AACA,aAAO,CAACma,KAAK,CAAC9zB,IAAN,CAAY8B,SAAS,IAAIowB,OAAO,IAAIA,OAAO,CAACgD,QAAhC,IAA4C,MAAxD,CAAR;AACA,KARD;AAUA;AACA;AACA;AACA;AACA;;;AACAjD,IAAAA,WAAW,GAAGV,MAAM,CAACU,WAAP,GAAqB,UAAUlD,IAAV,EAAiB;AACnD,UAAI0I,UAAJ;AAAA,UAAgBC,SAAhB;AAAA,UACC1I,GAAG,GAAGD,IAAI,GAAGA,IAAI,CAAC4G,aAAL,IAAsB5G,IAAzB,GAAgCuD,YAD3C,CADmD,CAInD;AACA;AACA;AACA;AACA;;AACA,UAAKtD,GAAG,IAAI1sB,QAAP,IAAmB0sB,GAAG,CAACR,QAAJ,KAAiB,CAApC,IAAyC,CAACQ,GAAG,CAACrV,eAAnD,EAAqE;AACpE,eAAOrX,QAAP;AACA,OAXkD,CAanD;;;AACAA,MAAAA,QAAQ,GAAG0sB,GAAX;AACAkD,MAAAA,OAAO,GAAG5vB,QAAQ,CAACqX,eAAnB;AACAwY,MAAAA,cAAc,GAAG,CAACT,KAAK,CAAEpvB,QAAF,CAAvB,CAhBmD,CAkBnD;AACA;AACA;AACA;AACA;AACA;;AACA,UAAKgwB,YAAY,IAAIhwB,QAAhB,KACFo1B,SAAS,GAAGp1B,QAAQ,CAACq1B,WADnB,KACoCD,SAAS,CAACniC,GAAV,KAAkBmiC,SAD3D,EACuE;AAEtE;AACA,YAAKA,SAAS,CAAC7O,gBAAf,EAAkC;AACjC6O,UAAAA,SAAS,CAAC7O,gBAAV,CAA4B,QAA5B,EAAsCiM,aAAtC,EAAqD,KAArD,EADiC,CAGlC;AACC,SAJD,MAIO,IAAK4C,SAAS,CAACE,WAAf,EAA6B;AACnCF,UAAAA,SAAS,CAACE,WAAV,CAAuB,UAAvB,EAAmC9C,aAAnC;AACA;AACD,OAnCkD,CAqCnD;AACA;AACA;AACA;AACA;;;AACAxG,MAAAA,OAAO,CAAC0H,KAAR,GAAgBS,MAAM,CAAE,UAAU7iC,EAAV,EAAe;AACtCs+B,QAAAA,OAAO,CAAChP,WAAR,CAAqBtvB,EAArB,EAA0BsvB,WAA1B,CAAuC5gB,QAAQ,CAACC,aAAT,CAAwB,KAAxB,CAAvC;AACA,eAAO,OAAO3O,EAAE,CAACsiC,gBAAV,KAA+B,WAA/B,IACN,CAACtiC,EAAE,CAACsiC,gBAAH,CAAqB,qBAArB,EAA6C9hC,MAD/C;AAEA,OAJqB,CAAtB;AAMA;AACD;AAEC;AACA;AACA;;AACAk6B,MAAAA,OAAO,CAACxB,UAAR,GAAqB2J,MAAM,CAAE,UAAU7iC,EAAV,EAAe;AAC3CA,QAAAA,EAAE,CAACR,SAAH,GAAe,GAAf;AACA,eAAO,CAACQ,EAAE,CAACkkB,YAAH,CAAiB,WAAjB,CAAR;AACA,OAH0B,CAA3B;AAKA;AACD;AAEC;;AACAwW,MAAAA,OAAO,CAACtL,oBAAR,GAA+ByT,MAAM,CAAE,UAAU7iC,EAAV,EAAe;AACrDA,QAAAA,EAAE,CAACsvB,WAAH,CAAgB5gB,QAAQ,CAACu1B,aAAT,CAAwB,EAAxB,CAAhB;AACA,eAAO,CAACjkC,EAAE,CAACovB,oBAAH,CAAyB,GAAzB,EAA+B5uB,MAAvC;AACA,OAHoC,CAArC,CA/DmD,CAoEnD;;AACAk6B,MAAAA,OAAO,CAACuH,sBAAR,GAAiC5B,OAAO,CAACj0B,IAAR,CAAcsC,QAAQ,CAACuzB,sBAAvB,CAAjC,CArEmD,CAuEnD;AACA;AACA;AACA;;AACAvH,MAAAA,OAAO,CAACwJ,OAAR,GAAkBrB,MAAM,CAAE,UAAU7iC,EAAV,EAAe;AACxCs+B,QAAAA,OAAO,CAAChP,WAAR,CAAqBtvB,EAArB,EAA0BG,EAA1B,GAA+Bs8B,OAA/B;AACA,eAAO,CAAC/tB,QAAQ,CAACy1B,iBAAV,IAA+B,CAACz1B,QAAQ,CAACy1B,iBAAT,CAA4B1H,OAA5B,EAAsCj8B,MAA7E;AACA,OAHuB,CAAxB,CA3EmD,CAgFnD;;AACA,UAAKk6B,OAAO,CAACwJ,OAAb,EAAuB;AACtBtG,QAAAA,IAAI,CAAC/zB,MAAL,CAAa,IAAb,IAAsB,UAAU1J,EAAV,EAAe;AACpC,cAAIikC,MAAM,GAAGjkC,EAAE,CAACyN,OAAH,CAAY4yB,SAAZ,EAAuBC,SAAvB,CAAb;AACA,iBAAO,UAAU92B,IAAV,EAAiB;AACvB,mBAAOA,IAAI,CAACua,YAAL,CAAmB,IAAnB,MAA8BkgB,MAArC;AACA,WAFD;AAGA,SALD;;AAMAxG,QAAAA,IAAI,CAACv9B,IAAL,CAAW,IAAX,IAAoB,UAAUF,EAAV,EAAcwL,OAAd,EAAwB;AAC3C,cAAK,OAAOA,OAAO,CAACq2B,cAAf,KAAkC,WAAlC,IAAiDzD,cAAtD,EAAuE;AACtE,gBAAI50B,IAAI,GAAGgC,OAAO,CAACq2B,cAAR,CAAwB7hC,EAAxB,CAAX;AACA,mBAAOwJ,IAAI,GAAG,CAAEA,IAAF,CAAH,GAAc,EAAzB;AACA;AACD,SALD;AAMA,OAbD,MAaO;AACNi0B,QAAAA,IAAI,CAAC/zB,MAAL,CAAa,IAAb,IAAuB,UAAU1J,EAAV,EAAe;AACrC,cAAIikC,MAAM,GAAGjkC,EAAE,CAACyN,OAAH,CAAY4yB,SAAZ,EAAuBC,SAAvB,CAAb;AACA,iBAAO,UAAU92B,IAAV,EAAiB;AACvB,gBAAIwxB,IAAI,GAAG,OAAOxxB,IAAI,CAAC06B,gBAAZ,KAAiC,WAAjC,IACV16B,IAAI,CAAC06B,gBAAL,CAAuB,IAAvB,CADD;AAEA,mBAAOlJ,IAAI,IAAIA,IAAI,CAAC7b,KAAL,KAAe8kB,MAA9B;AACA,WAJD;AAKA,SAPD,CADM,CAUN;AACA;;;AACAxG,QAAAA,IAAI,CAACv9B,IAAL,CAAW,IAAX,IAAoB,UAAUF,EAAV,EAAcwL,OAAd,EAAwB;AAC3C,cAAK,OAAOA,OAAO,CAACq2B,cAAf,KAAkC,WAAlC,IAAiDzD,cAAtD,EAAuE;AACtE,gBAAIpD,IAAJ;AAAA,gBAAUh1B,CAAV;AAAA,gBAAa01B,KAAb;AAAA,gBACClyB,IAAI,GAAGgC,OAAO,CAACq2B,cAAR,CAAwB7hC,EAAxB,CADR;;AAGA,gBAAKwJ,IAAL,EAAY;AAEX;AACAwxB,cAAAA,IAAI,GAAGxxB,IAAI,CAAC06B,gBAAL,CAAuB,IAAvB,CAAP;;AACA,kBAAKlJ,IAAI,IAAIA,IAAI,CAAC7b,KAAL,KAAenf,EAA5B,EAAiC;AAChC,uBAAO,CAAEwJ,IAAF,CAAP;AACA,eANU,CAQX;;;AACAkyB,cAAAA,KAAK,GAAGlwB,OAAO,CAACw4B,iBAAR,CAA2BhkC,EAA3B,CAAR;AACAgG,cAAAA,CAAC,GAAG,CAAJ;;AACA,qBAAUwD,IAAI,GAAGkyB,KAAK,CAAE11B,CAAC,EAAH,CAAtB,EAAkC;AACjCg1B,gBAAAA,IAAI,GAAGxxB,IAAI,CAAC06B,gBAAL,CAAuB,IAAvB,CAAP;;AACA,oBAAKlJ,IAAI,IAAIA,IAAI,CAAC7b,KAAL,KAAenf,EAA5B,EAAiC;AAChC,yBAAO,CAAEwJ,IAAF,CAAP;AACA;AACD;AACD;;AAED,mBAAO,EAAP;AACA;AACD,SA1BD;AA2BA,OArIkD,CAuInD;;;AACAi0B,MAAAA,IAAI,CAACv9B,IAAL,CAAW,KAAX,IAAqBq6B,OAAO,CAACtL,oBAAR,GACpB,UAAUkV,GAAV,EAAe34B,OAAf,EAAyB;AACxB,YAAK,OAAOA,OAAO,CAACyjB,oBAAf,KAAwC,WAA7C,EAA2D;AAC1D,iBAAOzjB,OAAO,CAACyjB,oBAAR,CAA8BkV,GAA9B,CAAP,CAD0D,CAG3D;AACC,SAJD,MAIO,IAAK5J,OAAO,CAACwH,GAAb,EAAmB;AACzB,iBAAOv2B,OAAO,CAAC22B,gBAAR,CAA0BgC,GAA1B,CAAP;AACA;AACD,OATmB,GAWpB,UAAUA,GAAV,EAAe34B,OAAf,EAAyB;AACxB,YAAIhC,IAAJ;AAAA,YACC46B,GAAG,GAAG,EADP;AAAA,YAECp+B,CAAC,GAAG,CAFL;AAAA,YAIC;AACAmH,QAAAA,OAAO,GAAG3B,OAAO,CAACyjB,oBAAR,CAA8BkV,GAA9B,CALX,CADwB,CAQxB;;AACA,YAAKA,GAAG,KAAK,GAAb,EAAmB;AAClB,iBAAU36B,IAAI,GAAG2D,OAAO,CAAEnH,CAAC,EAAH,CAAxB,EAAoC;AACnC,gBAAKwD,IAAI,CAACixB,QAAL,KAAkB,CAAvB,EAA2B;AAC1B2J,cAAAA,GAAG,CAACj8B,IAAJ,CAAUqB,IAAV;AACA;AACD;;AAED,iBAAO46B,GAAP;AACA;;AACD,eAAOj3B,OAAP;AACA,OA9BF,CAxImD,CAwKnD;;AACAswB,MAAAA,IAAI,CAACv9B,IAAL,CAAW,OAAX,IAAuBq6B,OAAO,CAACuH,sBAAR,IAAkC,UAAUziC,SAAV,EAAqBmM,OAArB,EAA+B;AACvF,YAAK,OAAOA,OAAO,CAACs2B,sBAAf,KAA0C,WAA1C,IAAyD1D,cAA9D,EAA+E;AAC9E,iBAAO5yB,OAAO,CAACs2B,sBAAR,CAAgCziC,SAAhC,CAAP;AACA;AACD,OAJD;AAMA;AACD;AAEC;AAEA;;;AACAi/B,MAAAA,aAAa,GAAG,EAAhB,CArLmD,CAuLnD;AACA;AACA;AACA;AACA;;AACAD,MAAAA,SAAS,GAAG,EAAZ;;AAEA,UAAO9D,OAAO,CAACwH,GAAR,GAAc7B,OAAO,CAACj0B,IAAR,CAAcsC,QAAQ,CAAC4zB,gBAAvB,CAArB,EAAmE;AAElE;AACA;AACAO,QAAAA,MAAM,CAAE,UAAU7iC,EAAV,EAAe;AAEtB,cAAIihB,KAAJ,CAFsB,CAItB;AACA;AACA;AACA;AACA;;AACAqd,UAAAA,OAAO,CAAChP,WAAR,CAAqBtvB,EAArB,EAA0BwkC,SAA1B,GAAsC,YAAY/H,OAAZ,GAAsB,QAAtB,GACrC,cADqC,GACpBA,OADoB,GACV,2BADU,GAErC,wCAFD,CATsB,CAatB;AACA;AACA;AACA;;AACA,cAAKz8B,EAAE,CAACsiC,gBAAH,CAAqB,sBAArB,EAA8C9hC,MAAnD,EAA4D;AAC3Dg+B,YAAAA,SAAS,CAACl2B,IAAV,CAAgB,WAAWi3B,UAAX,GAAwB,cAAxC;AACA,WAnBqB,CAqBtB;AACA;;;AACA,cAAK,CAACv/B,EAAE,CAACsiC,gBAAH,CAAqB,YAArB,EAAoC9hC,MAA1C,EAAmD;AAClDg+B,YAAAA,SAAS,CAACl2B,IAAV,CAAgB,QAAQi3B,UAAR,GAAqB,YAArB,GAAoCD,QAApC,GAA+C,GAA/D;AACA,WAzBqB,CA2BtB;;;AACA,cAAK,CAACt/B,EAAE,CAACsiC,gBAAH,CAAqB,UAAU7F,OAAV,GAAoB,IAAzC,EAAgDj8B,MAAtD,EAA+D;AAC9Dg+B,YAAAA,SAAS,CAACl2B,IAAV,CAAgB,IAAhB;AACA,WA9BqB,CAgCtB;AACA;AACA;AACA;AACA;;;AACA2Y,UAAAA,KAAK,GAAGvS,QAAQ,CAACC,aAAT,CAAwB,OAAxB,CAAR;AACAsS,UAAAA,KAAK,CAAChI,YAAN,CAAoB,MAApB,EAA4B,EAA5B;AACAjZ,UAAAA,EAAE,CAACsvB,WAAH,CAAgBrO,KAAhB;;AACA,cAAK,CAACjhB,EAAE,CAACsiC,gBAAH,CAAqB,WAArB,EAAmC9hC,MAAzC,EAAkD;AACjDg+B,YAAAA,SAAS,CAACl2B,IAAV,CAAgB,QAAQi3B,UAAR,GAAqB,OAArB,GAA+BA,UAA/B,GAA4C,IAA5C,GACfA,UADe,GACF,cADd;AAEA,WA3CqB,CA6CtB;AACA;AACA;;;AACA,cAAK,CAACv/B,EAAE,CAACsiC,gBAAH,CAAqB,UAArB,EAAkC9hC,MAAxC,EAAiD;AAChDg+B,YAAAA,SAAS,CAACl2B,IAAV,CAAgB,UAAhB;AACA,WAlDqB,CAoDtB;AACA;AACA;;;AACA,cAAK,CAACtI,EAAE,CAACsiC,gBAAH,CAAqB,OAAO7F,OAAP,GAAiB,IAAtC,EAA6Cj8B,MAAnD,EAA4D;AAC3Dg+B,YAAAA,SAAS,CAACl2B,IAAV,CAAgB,UAAhB;AACA,WAzDqB,CA2DtB;AACA;;;AACAtI,UAAAA,EAAE,CAACsiC,gBAAH,CAAqB,MAArB;AACA9D,UAAAA,SAAS,CAACl2B,IAAV,CAAgB,aAAhB;AACA,SA/DK,CAAN;AAiEAu6B,QAAAA,MAAM,CAAE,UAAU7iC,EAAV,EAAe;AACtBA,UAAAA,EAAE,CAACwkC,SAAH,GAAe,wCACd,gDADD,CADsB,CAItB;AACA;;AACA,cAAIvjB,KAAK,GAAGvS,QAAQ,CAACC,aAAT,CAAwB,OAAxB,CAAZ;AACAsS,UAAAA,KAAK,CAAChI,YAAN,CAAoB,MAApB,EAA4B,QAA5B;AACAjZ,UAAAA,EAAE,CAACsvB,WAAH,CAAgBrO,KAAhB,EAAwBhI,YAAxB,CAAsC,MAAtC,EAA8C,GAA9C,EARsB,CAUtB;AACA;;AACA,cAAKjZ,EAAE,CAACsiC,gBAAH,CAAqB,UAArB,EAAkC9hC,MAAvC,EAAgD;AAC/Cg+B,YAAAA,SAAS,CAACl2B,IAAV,CAAgB,SAASi3B,UAAT,GAAsB,aAAtC;AACA,WAdqB,CAgBtB;AACA;;;AACA,cAAKv/B,EAAE,CAACsiC,gBAAH,CAAqB,UAArB,EAAkC9hC,MAAlC,KAA6C,CAAlD,EAAsD;AACrDg+B,YAAAA,SAAS,CAACl2B,IAAV,CAAgB,UAAhB,EAA4B,WAA5B;AACA,WApBqB,CAsBtB;AACA;;;AACAg2B,UAAAA,OAAO,CAAChP,WAAR,CAAqBtvB,EAArB,EAA0BqhC,QAA1B,GAAqC,IAArC;;AACA,cAAKrhC,EAAE,CAACsiC,gBAAH,CAAqB,WAArB,EAAmC9hC,MAAnC,KAA8C,CAAnD,EAAuD;AACtDg+B,YAAAA,SAAS,CAACl2B,IAAV,CAAgB,UAAhB,EAA4B,WAA5B;AACA,WA3BqB,CA6BtB;AACA;;;AACAtI,UAAAA,EAAE,CAACsiC,gBAAH,CAAqB,MAArB;AACA9D,UAAAA,SAAS,CAACl2B,IAAV,CAAgB,MAAhB;AACA,SAjCK,CAAN;AAkCA;;AAED,UAAOoyB,OAAO,CAAC+J,eAAR,GAA0BpE,OAAO,CAACj0B,IAAR,CAAgB0jB,OAAO,GAAGwO,OAAO,CAACxO,OAAR,IAC1DwO,OAAO,CAACoG,qBADkD,IAE1DpG,OAAO,CAACqG,kBAFkD,IAG1DrG,OAAO,CAACsG,gBAHkD,IAI1DtG,OAAO,CAACuG,iBAJwB,CAAjC,EAImC;AAElChC,QAAAA,MAAM,CAAE,UAAU7iC,EAAV,EAAe;AAEtB;AACA;AACA06B,UAAAA,OAAO,CAACoK,iBAAR,GAA4BhV,OAAO,CAAC/kB,IAAR,CAAc/K,EAAd,EAAkB,GAAlB,CAA5B,CAJsB,CAMtB;AACA;;AACA8vB,UAAAA,OAAO,CAAC/kB,IAAR,CAAc/K,EAAd,EAAkB,WAAlB;AACAy+B,UAAAA,aAAa,CAACn2B,IAAd,CAAoB,IAApB,EAA0Bm3B,OAA1B;AACA,SAVK,CAAN;AAWA;;AAEDjB,MAAAA,SAAS,GAAGA,SAAS,CAACh+B,MAAV,IAAoB,IAAI6Y,MAAJ,CAAYmlB,SAAS,CAACnkB,IAAV,CAAgB,GAAhB,CAAZ,CAAhC;AACAokB,MAAAA,aAAa,GAAGA,aAAa,CAACj+B,MAAd,IAAwB,IAAI6Y,MAAJ,CAAYolB,aAAa,CAACpkB,IAAd,CAAoB,GAApB,CAAZ,CAAxC;AAEA;AACD;;AACCwpB,MAAAA,UAAU,GAAGxD,OAAO,CAACj0B,IAAR,CAAckyB,OAAO,CAACyG,uBAAtB,CAAb,CA/TmD,CAiUnD;AACA;AACA;;AACAnzB,MAAAA,QAAQ,GAAGiyB,UAAU,IAAIxD,OAAO,CAACj0B,IAAR,CAAckyB,OAAO,CAAC1sB,QAAtB,CAAd,GACV,UAAUqb,CAAV,EAAaC,CAAb,EAAiB;AAChB,YAAI8X,KAAK,GAAG/X,CAAC,CAAC2N,QAAF,KAAe,CAAf,GAAmB3N,CAAC,CAAClH,eAArB,GAAuCkH,CAAnD;AAAA,YACCgY,GAAG,GAAG/X,CAAC,IAAIA,CAAC,CAACzB,UADd;AAEA,eAAOwB,CAAC,KAAKgY,GAAN,IAAa,CAAC,EAAGA,GAAG,IAAIA,GAAG,CAACrK,QAAJ,KAAiB,CAAxB,KACvBoK,KAAK,CAACpzB,QAAN,GACCozB,KAAK,CAACpzB,QAAN,CAAgBqzB,GAAhB,CADD,GAEChY,CAAC,CAAC8X,uBAAF,IAA6B9X,CAAC,CAAC8X,uBAAF,CAA2BE,GAA3B,IAAmC,EAH1C,CAAH,CAArB;AAKA,OATS,GAUV,UAAUhY,CAAV,EAAaC,CAAb,EAAiB;AAChB,YAAKA,CAAL,EAAS;AACR,iBAAUA,CAAC,GAAGA,CAAC,CAACzB,UAAhB,EAA+B;AAC9B,gBAAKyB,CAAC,KAAKD,CAAX,EAAe;AACd,qBAAO,IAAP;AACA;AACD;AACD;;AACD,eAAO,KAAP;AACA,OAnBF;AAqBA;AACD;AAEC;;AACAiS,MAAAA,SAAS,GAAG2E,UAAU,GACtB,UAAU5W,CAAV,EAAaC,CAAb,EAAiB;AAEhB;AACA,YAAKD,CAAC,KAAKC,CAAX,EAAe;AACdkR,UAAAA,YAAY,GAAG,IAAf;AACA,iBAAO,CAAP;AACA,SANe,CAQhB;;;AACA,YAAI8G,OAAO,GAAG,CAACjY,CAAC,CAAC8X,uBAAH,GAA6B,CAAC7X,CAAC,CAAC6X,uBAA9C;;AACA,YAAKG,OAAL,EAAe;AACd,iBAAOA,OAAP;AACA,SAZe,CAchB;AACA;AACA;AACA;AACA;;;AACAA,QAAAA,OAAO,GAAG,CAAEjY,CAAC,CAAC8U,aAAF,IAAmB9U,CAArB,MAA8BC,CAAC,CAAC6U,aAAF,IAAmB7U,CAAjD,IACTD,CAAC,CAAC8X,uBAAF,CAA2B7X,CAA3B,CADS,GAGT;AACA,SAJD,CAnBgB,CAyBhB;;AACA,YAAKgY,OAAO,GAAG,CAAV,IACF,CAACxK,OAAO,CAACyK,YAAT,IAAyBjY,CAAC,CAAC6X,uBAAF,CAA2B9X,CAA3B,MAAmCiY,OAD/D,EAC2E;AAE1E;AACA;AACA;AACA;AACA;AACA,cAAKjY,CAAC,IAAIve,QAAL,IAAiBue,CAAC,CAAC8U,aAAF,IAAmBrD,YAAnB,IACrB9sB,QAAQ,CAAE8sB,YAAF,EAAgBzR,CAAhB,CADT,EAC+B;AAC9B,mBAAO,CAAC,CAAR;AACA,WAVyE,CAY1E;AACA;AACA;AACA;;;AACA,cAAKC,CAAC,IAAIxe,QAAL,IAAiBwe,CAAC,CAAC6U,aAAF,IAAmBrD,YAAnB,IACrB9sB,QAAQ,CAAE8sB,YAAF,EAAgBxR,CAAhB,CADT,EAC+B;AAC9B,mBAAO,CAAP;AACA,WAnByE,CAqB1E;;;AACA,iBAAOiR,SAAS,GACb11B,OAAO,CAAE01B,SAAF,EAAalR,CAAb,CAAP,GAA0BxkB,OAAO,CAAE01B,SAAF,EAAajR,CAAb,CADpB,GAEf,CAFD;AAGA;;AAED,eAAOgY,OAAO,GAAG,CAAV,GAAc,CAAC,CAAf,GAAmB,CAA1B;AACA,OAxDqB,GAyDtB,UAAUjY,CAAV,EAAaC,CAAb,EAAiB;AAEhB;AACA,YAAKD,CAAC,KAAKC,CAAX,EAAe;AACdkR,UAAAA,YAAY,GAAG,IAAf;AACA,iBAAO,CAAP;AACA;;AAED,YAAI8E,GAAJ;AAAA,YACC/8B,CAAC,GAAG,CADL;AAAA,YAECi/B,GAAG,GAAGnY,CAAC,CAACxB,UAFT;AAAA,YAGCwZ,GAAG,GAAG/X,CAAC,CAACzB,UAHT;AAAA,YAIC4Z,EAAE,GAAG,CAAEpY,CAAF,CAJN;AAAA,YAKCqY,EAAE,GAAG,CAAEpY,CAAF,CALN,CARgB,CAehB;;AACA,YAAK,CAACkY,GAAD,IAAQ,CAACH,GAAd,EAAoB;AAEnB;AACA;AACA;;AACA;AACA,iBAAOhY,CAAC,IAAIve,QAAL,GAAgB,CAAC,CAAjB,GACNwe,CAAC,IAAIxe,QAAL,GAAgB,CAAhB;AACA;AACA02B,UAAAA,GAAG,GAAG,CAAC,CAAJ,GACHH,GAAG,GAAG,CAAH,GACH9G,SAAS,GACP11B,OAAO,CAAE01B,SAAF,EAAalR,CAAb,CAAP,GAA0BxkB,OAAO,CAAE01B,SAAF,EAAajR,CAAb,CAD1B,GAET,CAPD,CANmB,CAepB;AACC,SAhBD,MAgBO,IAAKkY,GAAG,KAAKH,GAAb,EAAmB;AACzB,iBAAOhC,YAAY,CAAEhW,CAAF,EAAKC,CAAL,CAAnB;AACA,SAlCe,CAoChB;;;AACAgW,QAAAA,GAAG,GAAGjW,CAAN;;AACA,eAAUiW,GAAG,GAAGA,GAAG,CAACzX,UAApB,EAAmC;AAClC4Z,UAAAA,EAAE,CAACE,OAAH,CAAYrC,GAAZ;AACA;;AACDA,QAAAA,GAAG,GAAGhW,CAAN;;AACA,eAAUgW,GAAG,GAAGA,GAAG,CAACzX,UAApB,EAAmC;AAClC6Z,UAAAA,EAAE,CAACC,OAAH,CAAYrC,GAAZ;AACA,SA5Ce,CA8ChB;;;AACA,eAAQmC,EAAE,CAAEl/B,CAAF,CAAF,KAAYm/B,EAAE,CAAEn/B,CAAF,CAAtB,EAA8B;AAC7BA,UAAAA,CAAC;AACD;;AAED,eAAOA,CAAC,GAEP;AACA88B,QAAAA,YAAY,CAAEoC,EAAE,CAAEl/B,CAAF,CAAJ,EAAWm/B,EAAE,CAAEn/B,CAAF,CAAb,CAHL,GAKP;AACA;AACA;AACA;;AACA;AACAk/B,QAAAA,EAAE,CAAEl/B,CAAF,CAAF,IAAWu4B,YAAX,GAA0B,CAAC,CAA3B,GACA4G,EAAE,CAAEn/B,CAAF,CAAF,IAAWu4B,YAAX,GAA0B,CAA1B;AACA;AACA,SAbD;AAcA,OA1HD;AA4HA,aAAOhwB,QAAP;AACA,KA1dD;;AA4dAivB,IAAAA,MAAM,CAAC7N,OAAP,GAAiB,UAAU0V,IAAV,EAAgBC,QAAhB,EAA2B;AAC3C,aAAO9H,MAAM,CAAE6H,IAAF,EAAQ,IAAR,EAAc,IAAd,EAAoBC,QAApB,CAAb;AACA,KAFD;;AAIA9H,IAAAA,MAAM,CAAC8G,eAAP,GAAyB,UAAU96B,IAAV,EAAgB67B,IAAhB,EAAuB;AAC/CnH,MAAAA,WAAW,CAAE10B,IAAF,CAAX;;AAEA,UAAK+wB,OAAO,CAAC+J,eAAR,IAA2BlG,cAA3B,IACJ,CAACU,sBAAsB,CAAEuG,IAAI,GAAG,GAAT,CADnB,KAEF,CAAC/G,aAAD,IAAkB,CAACA,aAAa,CAACryB,IAAd,CAAoBo5B,IAApB,CAFjB,MAGF,CAAChH,SAAD,IAAkB,CAACA,SAAS,CAACpyB,IAAV,CAAgBo5B,IAAhB,CAHjB,CAAL,EAGiD;AAEhD,YAAI;AACH,cAAI9T,GAAG,GAAG5B,OAAO,CAAC/kB,IAAR,CAAcpB,IAAd,EAAoB67B,IAApB,CAAV,CADG,CAGH;;AACA,cAAK9T,GAAG,IAAIgJ,OAAO,CAACoK,iBAAf,IAEJ;AACA;AACAn7B,UAAAA,IAAI,CAAC+E,QAAL,IAAiB/E,IAAI,CAAC+E,QAAL,CAAcksB,QAAd,KAA2B,EAJ7C,EAIkD;AACjD,mBAAOlJ,GAAP;AACA;AACD,SAXD,CAWE,OAAQpvB,CAAR,EAAY;AACb28B,UAAAA,sBAAsB,CAAEuG,IAAF,EAAQ,IAAR,CAAtB;AACA;AACD;;AAED,aAAO7H,MAAM,CAAE6H,IAAF,EAAQ92B,QAAR,EAAkB,IAAlB,EAAwB,CAAE/E,IAAF,CAAxB,CAAN,CAAyCnJ,MAAzC,GAAkD,CAAzD;AACA,KAzBD;;AA2BAm9B,IAAAA,MAAM,CAAC/rB,QAAP,GAAkB,UAAUjG,OAAV,EAAmBhC,IAAnB,EAA0B;AAE3C;AACA;AACA;AACA;AACA;AACA,UAAK,CAAEgC,OAAO,CAACo2B,aAAR,IAAyBp2B,OAA3B,KAAwC+C,QAA7C,EAAwD;AACvD2vB,QAAAA,WAAW,CAAE1yB,OAAF,CAAX;AACA;;AACD,aAAOiG,QAAQ,CAAEjG,OAAF,EAAWhC,IAAX,CAAf;AACA,KAXD;;AAaAg0B,IAAAA,MAAM,CAACr9B,IAAP,GAAc,UAAUqJ,IAAV,EAAgB9B,IAAhB,EAAuB;AAEpC;AACA;AACA;AACA;AACA;AACA,UAAK,CAAE8B,IAAI,CAACo4B,aAAL,IAAsBp4B,IAAxB,KAAkC+E,QAAvC,EAAkD;AACjD2vB,QAAAA,WAAW,CAAE10B,IAAF,CAAX;AACA;;AAED,UAAI0B,EAAE,GAAGuyB,IAAI,CAACoF,UAAL,CAAiBn7B,IAAI,CAACO,WAAL,EAAjB,CAAT;AAAA,UAEC;AACAuQ,MAAAA,GAAG,GAAGtN,EAAE,IAAIkvB,MAAM,CAACxvB,IAAP,CAAa6yB,IAAI,CAACoF,UAAlB,EAA8Bn7B,IAAI,CAACO,WAAL,EAA9B,CAAN,GACLiD,EAAE,CAAE1B,IAAF,EAAQ9B,IAAR,EAAc,CAAC02B,cAAf,CADG,GAEL5T,SALF;AAOA,aAAOhS,GAAG,KAAKgS,SAAR,GACNhS,GADM,GAEN+hB,OAAO,CAACxB,UAAR,IAAsB,CAACqF,cAAvB,GACC50B,IAAI,CAACua,YAAL,CAAmBrc,IAAnB,CADD,GAEC,CAAE8Q,GAAG,GAAGhP,IAAI,CAAC06B,gBAAL,CAAuBx8B,IAAvB,CAAR,KAA2C8Q,GAAG,CAAC+sB,SAA/C,GACC/sB,GAAG,CAAC2G,KADL,GAEC,IANH;AAOA,KAzBD;;AA2BAqe,IAAAA,MAAM,CAAC+C,MAAP,GAAgB,UAAUiF,GAAV,EAAgB;AAC/B,aAAO,CAAEA,GAAG,GAAG,EAAR,EAAa/3B,OAAb,CAAsBizB,UAAtB,EAAkCC,UAAlC,CAAP;AACA,KAFD;;AAIAnD,IAAAA,MAAM,CAACl0B,KAAP,GAAe,UAAUkzB,GAAV,EAAgB;AAC9B,YAAM,IAAIrS,KAAJ,CAAW,4CAA4CqS,GAAvD,CAAN;AACA,KAFD;AAIA;AACA;AACA;AACA;;;AACAgB,IAAAA,MAAM,CAACiI,UAAP,GAAoB,UAAUt4B,OAAV,EAAoB;AACvC,UAAI3D,IAAJ;AAAA,UACCk8B,UAAU,GAAG,EADd;AAAA,UAECzJ,CAAC,GAAG,CAFL;AAAA,UAGCj2B,CAAC,GAAG,CAHL,CADuC,CAMvC;;AACAi4B,MAAAA,YAAY,GAAG,CAAC1D,OAAO,CAACoL,gBAAxB;AACA3H,MAAAA,SAAS,GAAG,CAACzD,OAAO,CAACqL,UAAT,IAAuBz4B,OAAO,CAACxC,KAAR,CAAe,CAAf,CAAnC;AACAwC,MAAAA,OAAO,CAAC0f,IAAR,CAAckS,SAAd;;AAEA,UAAKd,YAAL,EAAoB;AACnB,eAAUz0B,IAAI,GAAG2D,OAAO,CAAEnH,CAAC,EAAH,CAAxB,EAAoC;AACnC,cAAKwD,IAAI,KAAK2D,OAAO,CAAEnH,CAAF,CAArB,EAA6B;AAC5Bi2B,YAAAA,CAAC,GAAGyJ,UAAU,CAACv9B,IAAX,CAAiBnC,CAAjB,CAAJ;AACA;AACD;;AACD,eAAQi2B,CAAC,EAAT,EAAc;AACb9uB,UAAAA,OAAO,CAAC9E,MAAR,CAAgBq9B,UAAU,CAAEzJ,CAAF,CAA1B,EAAiC,CAAjC;AACA;AACD,OApBsC,CAsBvC;AACA;;;AACA+B,MAAAA,SAAS,GAAG,IAAZ;AAEA,aAAO7wB,OAAP;AACA,KA3BD;AA6BA;AACA;AACA;AACA;;;AACAuwB,IAAAA,OAAO,GAAGF,MAAM,CAACE,OAAP,GAAiB,UAAUl0B,IAAV,EAAiB;AAC3C,UAAIwxB,IAAJ;AAAA,UACCzJ,GAAG,GAAG,EADP;AAAA,UAECvrB,CAAC,GAAG,CAFL;AAAA,UAGCy0B,QAAQ,GAAGjxB,IAAI,CAACixB,QAHjB;;AAKA,UAAK,CAACA,QAAN,EAAiB;AAEhB;AACA,eAAUO,IAAI,GAAGxxB,IAAI,CAAExD,CAAC,EAAH,CAArB,EAAiC;AAEhC;AACAurB,UAAAA,GAAG,IAAImM,OAAO,CAAE1C,IAAF,CAAd;AACA;AACD,OARD,MAQO,IAAKP,QAAQ,KAAK,CAAb,IAAkBA,QAAQ,KAAK,CAA/B,IAAoCA,QAAQ,KAAK,EAAtD,EAA2D;AAEjE;AACA;AACA,YAAK,OAAOjxB,IAAI,CAACkmB,WAAZ,KAA4B,QAAjC,EAA4C;AAC3C,iBAAOlmB,IAAI,CAACkmB,WAAZ;AACA,SAFD,MAEO;AAEN;AACA,eAAMlmB,IAAI,GAAGA,IAAI,CAACq8B,UAAlB,EAA8Br8B,IAA9B,EAAoCA,IAAI,GAAGA,IAAI,CAACsN,WAAhD,EAA8D;AAC7Dya,YAAAA,GAAG,IAAImM,OAAO,CAAEl0B,IAAF,CAAd;AACA;AACD;AACD,OAbM,MAaA,IAAKixB,QAAQ,KAAK,CAAb,IAAkBA,QAAQ,KAAK,CAApC,EAAwC;AAC9C,eAAOjxB,IAAI,CAACs8B,SAAZ;AACA,OA7B0C,CA+B3C;;;AAEA,aAAOvU,GAAP;AACA,KAlCD;;AAoCAkM,IAAAA,IAAI,GAAGD,MAAM,CAACuI,SAAP,GAAmB;AAEzB;AACAxD,MAAAA,WAAW,EAAE,EAHY;AAKzByD,MAAAA,YAAY,EAAEvD,YALW;AAOzBtuB,MAAAA,KAAK,EAAE2rB,SAPkB;AASzB+C,MAAAA,UAAU,EAAE,EATa;AAWzB3iC,MAAAA,IAAI,EAAE,EAXmB;AAazB+lC,MAAAA,QAAQ,EAAE;AACT,aAAK;AAAEzR,UAAAA,GAAG,EAAE,YAAP;AAAqB5xB,UAAAA,KAAK,EAAE;AAA5B,SADI;AAET,aAAK;AAAE4xB,UAAAA,GAAG,EAAE;AAAP,SAFI;AAGT,aAAK;AAAEA,UAAAA,GAAG,EAAE,iBAAP;AAA0B5xB,UAAAA,KAAK,EAAE;AAAjC,SAHI;AAIT,aAAK;AAAE4xB,UAAAA,GAAG,EAAE;AAAP;AAJI,OAbe;AAoBzB0R,MAAAA,SAAS,EAAE;AACV,gBAAQ,cAAU/xB,KAAV,EAAkB;AACzBA,UAAAA,KAAK,CAAE,CAAF,CAAL,GAAaA,KAAK,CAAE,CAAF,CAAL,CAAW1G,OAAX,CAAoB4yB,SAApB,EAA+BC,SAA/B,CAAb,CADyB,CAGzB;;AACAnsB,UAAAA,KAAK,CAAE,CAAF,CAAL,GAAa,CAAEA,KAAK,CAAE,CAAF,CAAL,IAAcA,KAAK,CAAE,CAAF,CAAnB,IACdA,KAAK,CAAE,CAAF,CADS,IACA,EADF,EACO1G,OADP,CACgB4yB,SADhB,EAC2BC,SAD3B,CAAb;;AAGA,cAAKnsB,KAAK,CAAE,CAAF,CAAL,KAAe,IAApB,EAA2B;AAC1BA,YAAAA,KAAK,CAAE,CAAF,CAAL,GAAa,MAAMA,KAAK,CAAE,CAAF,CAAX,GAAmB,GAAhC;AACA;;AAED,iBAAOA,KAAK,CAACxJ,KAAN,CAAa,CAAb,EAAgB,CAAhB,CAAP;AACA,SAbS;AAeV,iBAAS,eAAUwJ,KAAV,EAAkB;AAE1B;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACGA,UAAAA,KAAK,CAAE,CAAF,CAAL,GAAaA,KAAK,CAAE,CAAF,CAAL,CAAWlM,WAAX,EAAb;;AAEA,cAAKkM,KAAK,CAAE,CAAF,CAAL,CAAWxJ,KAAX,CAAkB,CAAlB,EAAqB,CAArB,MAA6B,KAAlC,EAA0C;AAEzC;AACA,gBAAK,CAACwJ,KAAK,CAAE,CAAF,CAAX,EAAmB;AAClBqpB,cAAAA,MAAM,CAACl0B,KAAP,CAAc6K,KAAK,CAAE,CAAF,CAAnB;AACA,aALwC,CAOzC;AACA;;;AACAA,YAAAA,KAAK,CAAE,CAAF,CAAL,GAAa,EAAGA,KAAK,CAAE,CAAF,CAAL,GACfA,KAAK,CAAE,CAAF,CAAL,IAAeA,KAAK,CAAE,CAAF,CAAL,IAAc,CAA7B,CADe,GAEf,KAAMA,KAAK,CAAE,CAAF,CAAL,KAAe,MAAf,IAAyBA,KAAK,CAAE,CAAF,CAAL,KAAe,KAA9C,CAFY,CAAb;AAGAA,YAAAA,KAAK,CAAE,CAAF,CAAL,GAAa,EAAKA,KAAK,CAAE,CAAF,CAAL,GAAaA,KAAK,CAAE,CAAF,CAApB,IAA+BA,KAAK,CAAE,CAAF,CAAL,KAAe,KAAjD,CAAb,CAZyC,CAczC;AACA,WAfD,MAeO,IAAKA,KAAK,CAAE,CAAF,CAAV,EAAkB;AACxBqpB,YAAAA,MAAM,CAACl0B,KAAP,CAAc6K,KAAK,CAAE,CAAF,CAAnB;AACA;;AAED,iBAAOA,KAAP;AACA,SAjDS;AAmDV,kBAAU,gBAAUA,KAAV,EAAkB;AAC3B,cAAIgyB,MAAJ;AAAA,cACCC,QAAQ,GAAG,CAACjyB,KAAK,CAAE,CAAF,CAAN,IAAeA,KAAK,CAAE,CAAF,CADhC;;AAGA,cAAK2rB,SAAS,CAAE,OAAF,CAAT,CAAqB7zB,IAArB,CAA2BkI,KAAK,CAAE,CAAF,CAAhC,CAAL,EAA+C;AAC9C,mBAAO,IAAP;AACA,WAN0B,CAQ3B;;;AACA,cAAKA,KAAK,CAAE,CAAF,CAAV,EAAkB;AACjBA,YAAAA,KAAK,CAAE,CAAF,CAAL,GAAaA,KAAK,CAAE,CAAF,CAAL,IAAcA,KAAK,CAAE,CAAF,CAAnB,IAA4B,EAAzC,CADiB,CAGlB;AACC,WAJD,MAIO,IAAKiyB,QAAQ,IAAIxG,OAAO,CAAC3zB,IAAR,CAAcm6B,QAAd,CAAZ,MAEX;AACED,UAAAA,MAAM,GAAGvI,QAAQ,CAAEwI,QAAF,EAAY,IAAZ,CAHR,OAKX;AACED,UAAAA,MAAM,GAAGC,QAAQ,CAAC99B,OAAT,CAAkB,GAAlB,EAAuB89B,QAAQ,CAAC/lC,MAAT,GAAkB8lC,MAAzC,IAAoDC,QAAQ,CAAC/lC,MAN7D,CAAL,EAM6E;AAEnF;AACA8T,YAAAA,KAAK,CAAE,CAAF,CAAL,GAAaA,KAAK,CAAE,CAAF,CAAL,CAAWxJ,KAAX,CAAkB,CAAlB,EAAqBw7B,MAArB,CAAb;AACAhyB,YAAAA,KAAK,CAAE,CAAF,CAAL,GAAaiyB,QAAQ,CAACz7B,KAAT,CAAgB,CAAhB,EAAmBw7B,MAAnB,CAAb;AACA,WAxB0B,CA0B3B;;;AACA,iBAAOhyB,KAAK,CAACxJ,KAAN,CAAa,CAAb,EAAgB,CAAhB,CAAP;AACA;AA/ES,OApBc;AAsGzBjB,MAAAA,MAAM,EAAE;AAEP,eAAO,aAAU28B,gBAAV,EAA6B;AACnC,cAAIlF,QAAQ,GAAGkF,gBAAgB,CAAC54B,OAAjB,CAA0B4yB,SAA1B,EAAqCC,SAArC,EAAiDr4B,WAAjD,EAAf;AACA,iBAAOo+B,gBAAgB,KAAK,GAArB,GACN,YAAW;AACV,mBAAO,IAAP;AACA,WAHK,GAIN,UAAU78B,IAAV,EAAiB;AAChB,mBAAOA,IAAI,CAAC23B,QAAL,IAAiB33B,IAAI,CAAC23B,QAAL,CAAcl5B,WAAd,OAAgCk5B,QAAxD;AACA,WANF;AAOA,SAXM;AAaP,iBAAS,eAAU9hC,SAAV,EAAsB;AAC9B,cAAIinC,OAAO,GAAG5H,UAAU,CAAEr/B,SAAS,GAAG,GAAd,CAAxB;AAEA,iBAAOinC,OAAO,IACb,CAAEA,OAAO,GAAG,IAAIptB,MAAJ,CAAY,QAAQkmB,UAAR,GACvB,GADuB,GACjB//B,SADiB,GACL,GADK,GACC+/B,UADD,GACc,KAD1B,CAAZ,KACmDV,UAAU,CAC3Dr/B,SAD2D,EAChD,UAAUmK,IAAV,EAAiB;AAC3B,mBAAO88B,OAAO,CAACr6B,IAAR,CACN,OAAOzC,IAAI,CAACnK,SAAZ,KAA0B,QAA1B,IAAsCmK,IAAI,CAACnK,SAA3C,IACA,OAAOmK,IAAI,CAACua,YAAZ,KAA6B,WAA7B,IACCva,IAAI,CAACua,YAAL,CAAmB,OAAnB,CAFD,IAGA,EAJM,CAAP;AAMF,WAR4D,CAF9D;AAWA,SA3BM;AA6BP,gBAAQ,cAAUrc,IAAV,EAAgB6+B,QAAhB,EAA0BC,KAA1B,EAAkC;AACzC,iBAAO,UAAUh9B,IAAV,EAAiB;AACvB,gBAAIyJ,MAAM,GAAGuqB,MAAM,CAACr9B,IAAP,CAAaqJ,IAAb,EAAmB9B,IAAnB,CAAb;;AAEA,gBAAKuL,MAAM,IAAI,IAAf,EAAsB;AACrB,qBAAOszB,QAAQ,KAAK,IAApB;AACA;;AACD,gBAAK,CAACA,QAAN,EAAiB;AAChB,qBAAO,IAAP;AACA;;AAEDtzB,YAAAA,MAAM,IAAI,EAAV;AAEA;;AAEA,mBAAOszB,QAAQ,KAAK,GAAb,GAAmBtzB,MAAM,KAAKuzB,KAA9B,GACND,QAAQ,KAAK,IAAb,GAAoBtzB,MAAM,KAAKuzB,KAA/B,GACAD,QAAQ,KAAK,IAAb,GAAoBC,KAAK,IAAIvzB,MAAM,CAAC3K,OAAP,CAAgBk+B,KAAhB,MAA4B,CAAzD,GACAD,QAAQ,KAAK,IAAb,GAAoBC,KAAK,IAAIvzB,MAAM,CAAC3K,OAAP,CAAgBk+B,KAAhB,IAA0B,CAAC,CAAxD,GACAD,QAAQ,KAAK,IAAb,GAAoBC,KAAK,IAAIvzB,MAAM,CAACtI,KAAP,CAAc,CAAC67B,KAAK,CAACnmC,MAArB,MAAkCmmC,KAA/D,GACAD,QAAQ,KAAK,IAAb,GAAoB,CAAE,MAAMtzB,MAAM,CAACxF,OAAP,CAAgB8xB,WAAhB,EAA6B,GAA7B,CAAN,GAA2C,GAA7C,EAAmDj3B,OAAnD,CAA4Dk+B,KAA5D,IAAsE,CAAC,CAA3F,GACAD,QAAQ,KAAK,IAAb,GAAoBtzB,MAAM,KAAKuzB,KAAX,IAAoBvzB,MAAM,CAACtI,KAAP,CAAc,CAAd,EAAiB67B,KAAK,CAACnmC,MAAN,GAAe,CAAhC,MAAwCmmC,KAAK,GAAG,GAAxF,GACA,KAPD;AAQA;AAEA,WAxBD;AAyBA,SAvDM;AAyDP,iBAAS,eAAU39B,IAAV,EAAgB49B,IAAhB,EAAsBC,SAAtB,EAAiC9jC,KAAjC,EAAwCC,IAAxC,EAA+C;AACvD,cAAI8jC,MAAM,GAAG99B,IAAI,CAAC8B,KAAL,CAAY,CAAZ,EAAe,CAAf,MAAuB,KAApC;AAAA,cACCi8B,OAAO,GAAG/9B,IAAI,CAAC8B,KAAL,CAAY,CAAC,CAAb,MAAqB,MADhC;AAAA,cAECk8B,MAAM,GAAGJ,IAAI,KAAK,SAFnB;AAIA,iBAAO7jC,KAAK,KAAK,CAAV,IAAeC,IAAI,KAAK,CAAxB,GAEN;AACA,oBAAU2G,IAAV,EAAiB;AAChB,mBAAO,CAAC,CAACA,IAAI,CAAC8hB,UAAd;AACA,WALK,GAON,UAAU9hB,IAAV,EAAgBs9B,QAAhB,EAA0BC,GAA1B,EAAgC;AAC/B,gBAAIzE,KAAJ;AAAA,gBAAW0E,WAAX;AAAA,gBAAwBC,UAAxB;AAAA,gBAAoCjM,IAApC;AAAA,gBAA0CkM,SAA1C;AAAA,gBAAqDz6B,KAArD;AAAA,gBACC+nB,GAAG,GAAGmS,MAAM,KAAKC,OAAX,GAAqB,aAArB,GAAqC,iBAD5C;AAAA,gBAEC3lC,MAAM,GAAGuI,IAAI,CAAC8hB,UAFf;AAAA,gBAGC5jB,IAAI,GAAGm/B,MAAM,IAAIr9B,IAAI,CAAC23B,QAAL,CAAcl5B,WAAd,EAHlB;AAAA,gBAICk/B,QAAQ,GAAG,CAACJ,GAAD,IAAQ,CAACF,MAJrB;AAAA,gBAKC7D,IAAI,GAAG,KALR;;AAOA,gBAAK/hC,MAAL,EAAc;AAEb;AACA,kBAAK0lC,MAAL,EAAc;AACb,uBAAQnS,GAAR,EAAc;AACbwG,kBAAAA,IAAI,GAAGxxB,IAAP;;AACA,yBAAUwxB,IAAI,GAAGA,IAAI,CAAExG,GAAF,CAArB,EAAiC;AAChC,wBAAKqS,MAAM,GACV7L,IAAI,CAACmG,QAAL,CAAcl5B,WAAd,OAAgCP,IADtB,GAEVszB,IAAI,CAACP,QAAL,KAAkB,CAFnB,EAEuB;AAEtB,6BAAO,KAAP;AACA;AACD,mBATY,CAWb;;;AACAhuB,kBAAAA,KAAK,GAAG+nB,GAAG,GAAG3rB,IAAI,KAAK,MAAT,IAAmB,CAAC4D,KAApB,IAA6B,aAA3C;AACA;;AACD,uBAAO,IAAP;AACA;;AAEDA,cAAAA,KAAK,GAAG,CAAEm6B,OAAO,GAAG3lC,MAAM,CAAC4kC,UAAV,GAAuB5kC,MAAM,CAACmmC,SAAvC,CAAR,CArBa,CAuBb;;AACA,kBAAKR,OAAO,IAAIO,QAAhB,EAA2B;AAE1B;AAEA;AACAnM,gBAAAA,IAAI,GAAG/5B,MAAP;AACAgmC,gBAAAA,UAAU,GAAGjM,IAAI,CAAEsB,OAAF,CAAJ,KAAqBtB,IAAI,CAAEsB,OAAF,CAAJ,GAAkB,EAAvC,CAAb,CAN0B,CAQ1B;AACA;;AACA0K,gBAAAA,WAAW,GAAGC,UAAU,CAAEjM,IAAI,CAACqM,QAAP,CAAV,KACXJ,UAAU,CAAEjM,IAAI,CAACqM,QAAP,CAAV,GAA8B,EADnB,CAAd;AAGA/E,gBAAAA,KAAK,GAAG0E,WAAW,CAAEn+B,IAAF,CAAX,IAAuB,EAA/B;AACAq+B,gBAAAA,SAAS,GAAG5E,KAAK,CAAE,CAAF,CAAL,KAAe9D,OAAf,IAA0B8D,KAAK,CAAE,CAAF,CAA3C;AACAU,gBAAAA,IAAI,GAAGkE,SAAS,IAAI5E,KAAK,CAAE,CAAF,CAAzB;AACAtH,gBAAAA,IAAI,GAAGkM,SAAS,IAAIjmC,MAAM,CAACmgC,UAAP,CAAmB8F,SAAnB,CAApB;;AAEA,uBAAUlM,IAAI,GAAG,EAAEkM,SAAF,IAAelM,IAAf,IAAuBA,IAAI,CAAExG,GAAF,CAA3B,MAEhB;AACEwO,gBAAAA,IAAI,GAAGkE,SAAS,GAAG,CAHL,KAGYz6B,KAAK,CAACuyB,GAAN,EAH7B,EAG6C;AAE5C;AACA,sBAAKhE,IAAI,CAACP,QAAL,KAAkB,CAAlB,IAAuB,EAAEuI,IAAzB,IAAiChI,IAAI,KAAKxxB,IAA/C,EAAsD;AACrDw9B,oBAAAA,WAAW,CAAEn+B,IAAF,CAAX,GAAsB,CAAE21B,OAAF,EAAW0I,SAAX,EAAsBlE,IAAtB,CAAtB;AACA;AACA;AACD;AAED,eA9BD,MA8BO;AAEN;AACA,oBAAKmE,QAAL,EAAgB;AAEf;AACAnM,kBAAAA,IAAI,GAAGxxB,IAAP;AACAy9B,kBAAAA,UAAU,GAAGjM,IAAI,CAAEsB,OAAF,CAAJ,KAAqBtB,IAAI,CAAEsB,OAAF,CAAJ,GAAkB,EAAvC,CAAb,CAJe,CAMf;AACA;;AACA0K,kBAAAA,WAAW,GAAGC,UAAU,CAAEjM,IAAI,CAACqM,QAAP,CAAV,KACXJ,UAAU,CAAEjM,IAAI,CAACqM,QAAP,CAAV,GAA8B,EADnB,CAAd;AAGA/E,kBAAAA,KAAK,GAAG0E,WAAW,CAAEn+B,IAAF,CAAX,IAAuB,EAA/B;AACAq+B,kBAAAA,SAAS,GAAG5E,KAAK,CAAE,CAAF,CAAL,KAAe9D,OAAf,IAA0B8D,KAAK,CAAE,CAAF,CAA3C;AACAU,kBAAAA,IAAI,GAAGkE,SAAP;AACA,iBAjBK,CAmBN;AACA;;;AACA,oBAAKlE,IAAI,KAAK,KAAd,EAAsB;AAErB;AACA,yBAAUhI,IAAI,GAAG,EAAEkM,SAAF,IAAelM,IAAf,IAAuBA,IAAI,CAAExG,GAAF,CAA3B,KACdwO,IAAI,GAAGkE,SAAS,GAAG,CADL,KACYz6B,KAAK,CAACuyB,GAAN,EAD7B,EAC6C;AAE5C,wBAAK,CAAE6H,MAAM,GACZ7L,IAAI,CAACmG,QAAL,CAAcl5B,WAAd,OAAgCP,IADpB,GAEZszB,IAAI,CAACP,QAAL,KAAkB,CAFd,KAGJ,EAAEuI,IAHH,EAGU;AAET;AACA,0BAAKmE,QAAL,EAAgB;AACfF,wBAAAA,UAAU,GAAGjM,IAAI,CAAEsB,OAAF,CAAJ,KACVtB,IAAI,CAAEsB,OAAF,CAAJ,GAAkB,EADR,CAAb,CADe,CAIf;AACA;;AACA0K,wBAAAA,WAAW,GAAGC,UAAU,CAAEjM,IAAI,CAACqM,QAAP,CAAV,KACXJ,UAAU,CAAEjM,IAAI,CAACqM,QAAP,CAAV,GAA8B,EADnB,CAAd;AAGAL,wBAAAA,WAAW,CAAEn+B,IAAF,CAAX,GAAsB,CAAE21B,OAAF,EAAWwE,IAAX,CAAtB;AACA;;AAED,0BAAKhI,IAAI,KAAKxxB,IAAd,EAAqB;AACpB;AACA;AACD;AACD;AACD;AACD,eAzGY,CA2Gb;;;AACAw5B,cAAAA,IAAI,IAAIngC,IAAR;AACA,qBAAOmgC,IAAI,KAAKpgC,KAAT,IAAoBogC,IAAI,GAAGpgC,KAAP,KAAiB,CAAjB,IAAsBogC,IAAI,GAAGpgC,KAAP,IAAgB,CAAjE;AACA;AACD,WA9HF;AA+HA,SA7LM;AA+LP,kBAAU,gBAAU0kC,MAAV,EAAkB/D,QAAlB,EAA6B;AAEtC;AACA;AACA;AACA;AACA,cAAI/4B,IAAJ;AAAA,cACCU,EAAE,GAAGuyB,IAAI,CAAC6B,OAAL,CAAcgI,MAAd,KAA0B7J,IAAI,CAAC8J,UAAL,CAAiBD,MAAM,CAACr/B,WAAP,EAAjB,CAA1B,IACJu1B,MAAM,CAACl0B,KAAP,CAAc,yBAAyBg+B,MAAvC,CAFF,CANsC,CAUtC;AACA;AACA;;AACA,cAAKp8B,EAAE,CAAEoxB,OAAF,CAAP,EAAqB;AACpB,mBAAOpxB,EAAE,CAAEq4B,QAAF,CAAT;AACA,WAfqC,CAiBtC;;;AACA,cAAKr4B,EAAE,CAAC7K,MAAH,GAAY,CAAjB,EAAqB;AACpBmK,YAAAA,IAAI,GAAG,CAAE88B,MAAF,EAAUA,MAAV,EAAkB,EAAlB,EAAsB/D,QAAtB,CAAP;AACA,mBAAO9F,IAAI,CAAC8J,UAAL,CAAgB5oB,cAAhB,CAAgC2oB,MAAM,CAACr/B,WAAP,EAAhC,IACNw6B,YAAY,CAAE,UAAUnB,IAAV,EAAgB3R,OAAhB,EAA0B;AACvC,kBAAI/vB,GAAJ;AAAA,kBACCsxB,OAAO,GAAGhmB,EAAE,CAAEo2B,IAAF,EAAQiC,QAAR,CADb;AAAA,kBAECv9B,CAAC,GAAGkrB,OAAO,CAAC7wB,MAFb;;AAGA,qBAAQ2F,CAAC,EAAT,EAAc;AACbpG,gBAAAA,GAAG,GAAG0I,OAAO,CAAEg5B,IAAF,EAAQpQ,OAAO,CAAElrB,CAAF,CAAf,CAAb;AACAs7B,gBAAAA,IAAI,CAAE1hC,GAAF,CAAJ,GAAc,EAAG+vB,OAAO,CAAE/vB,GAAF,CAAP,GAAiBsxB,OAAO,CAAElrB,CAAF,CAA3B,CAAd;AACA;AACD,aARW,CADN,GAUN,UAAUwD,IAAV,EAAiB;AAChB,qBAAO0B,EAAE,CAAE1B,IAAF,EAAQ,CAAR,EAAWgB,IAAX,CAAT;AACA,aAZF;AAaA;;AAED,iBAAOU,EAAP;AACA;AAnOM,OAtGiB;AA4UzBo0B,MAAAA,OAAO,EAAE;AAER;AACA,eAAOmD,YAAY,CAAE,UAAUpH,QAAV,EAAqB;AAEzC;AACA;AACA;AACA,cAAIva,KAAK,GAAG,EAAZ;AAAA,cACC3T,OAAO,GAAG,EADX;AAAA,cAECq6B,OAAO,GAAG3J,OAAO,CAAExC,QAAQ,CAAC5tB,OAAT,CAAkB+xB,KAAlB,EAAyB,IAAzB,CAAF,CAFlB;AAIA,iBAAOgI,OAAO,CAAElL,OAAF,CAAP,GACNmG,YAAY,CAAE,UAAUnB,IAAV,EAAgB3R,OAAhB,EAAyBmX,QAAzB,EAAmCC,GAAnC,EAAyC;AACtD,gBAAIv9B,IAAJ;AAAA,gBACCi+B,SAAS,GAAGD,OAAO,CAAElG,IAAF,EAAQ,IAAR,EAAcyF,GAAd,EAAmB,EAAnB,CADpB;AAAA,gBAEC/gC,CAAC,GAAGs7B,IAAI,CAACjhC,MAFV,CADsD,CAKtD;;AACA,mBAAQ2F,CAAC,EAAT,EAAc;AACb,kBAAOwD,IAAI,GAAGi+B,SAAS,CAAEzhC,CAAF,CAAvB,EAAiC;AAChCs7B,gBAAAA,IAAI,CAAEt7B,CAAF,CAAJ,GAAY,EAAG2pB,OAAO,CAAE3pB,CAAF,CAAP,GAAewD,IAAlB,CAAZ;AACA;AACD;AACD,WAXW,CADN,GAaN,UAAUA,IAAV,EAAgBs9B,QAAhB,EAA0BC,GAA1B,EAAgC;AAC/BjmB,YAAAA,KAAK,CAAE,CAAF,CAAL,GAAatX,IAAb;AACAg+B,YAAAA,OAAO,CAAE1mB,KAAF,EAAS,IAAT,EAAeimB,GAAf,EAAoB55B,OAApB,CAAP,CAF+B,CAI/B;;AACA2T,YAAAA,KAAK,CAAE,CAAF,CAAL,GAAa,IAAb;AACA,mBAAO,CAAC3T,OAAO,CAAC6xB,GAAR,EAAR;AACA,WApBF;AAqBA,SA9BkB,CAHX;AAmCR,eAAOyD,YAAY,CAAE,UAAUpH,QAAV,EAAqB;AACzC,iBAAO,UAAU7xB,IAAV,EAAiB;AACvB,mBAAOg0B,MAAM,CAAEnC,QAAF,EAAY7xB,IAAZ,CAAN,CAAyBnJ,MAAzB,GAAkC,CAAzC;AACA,WAFD;AAGA,SAJkB,CAnCX;AAyCR,oBAAYoiC,YAAY,CAAE,UAAUlT,IAAV,EAAiB;AAC1CA,UAAAA,IAAI,GAAGA,IAAI,CAAC9hB,OAAL,CAAc4yB,SAAd,EAAyBC,SAAzB,CAAP;AACA,iBAAO,UAAU92B,IAAV,EAAiB;AACvB,mBAAO,CAAEA,IAAI,CAACkmB,WAAL,IAAoBgO,OAAO,CAAEl0B,IAAF,CAA7B,EAAwClB,OAAxC,CAAiDinB,IAAjD,IAA0D,CAAC,CAAlE;AACA,WAFD;AAGA,SALuB,CAzChB;AAgDR;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAQkT,YAAY,CAAE,UAAUiF,IAAV,EAAiB;AAEtC;AACA,cAAK,CAAC7H,WAAW,CAAC5zB,IAAZ,CAAkBy7B,IAAI,IAAI,EAA1B,CAAN,EAAuC;AACtClK,YAAAA,MAAM,CAACl0B,KAAP,CAAc,uBAAuBo+B,IAArC;AACA;;AACDA,UAAAA,IAAI,GAAGA,IAAI,CAACj6B,OAAL,CAAc4yB,SAAd,EAAyBC,SAAzB,EAAqCr4B,WAArC,EAAP;AACA,iBAAO,UAAUuB,IAAV,EAAiB;AACvB,gBAAIm+B,QAAJ;;AACA,eAAG;AACF,kBAAOA,QAAQ,GAAGvJ,cAAc,GAC/B50B,IAAI,CAACk+B,IAD0B,GAE/Bl+B,IAAI,CAACua,YAAL,CAAmB,UAAnB,KAAmCva,IAAI,CAACua,YAAL,CAAmB,MAAnB,CAFpC,EAEoE;AAEnE4jB,gBAAAA,QAAQ,GAAGA,QAAQ,CAAC1/B,WAAT,EAAX;AACA,uBAAO0/B,QAAQ,KAAKD,IAAb,IAAqBC,QAAQ,CAACr/B,OAAT,CAAkBo/B,IAAI,GAAG,GAAzB,MAAmC,CAA/D;AACA;AACD,aARD,QAQU,CAAEl+B,IAAI,GAAGA,IAAI,CAAC8hB,UAAd,KAA8B9hB,IAAI,CAACixB,QAAL,KAAkB,CAR1D;;AASA,mBAAO,KAAP;AACA,WAZD;AAaA,SApBmB,CAvDZ;AA6ER;AACA,kBAAU,gBAAUjxB,IAAV,EAAiB;AAC1B,cAAI3I,IAAI,GAAGF,MAAM,CAACC,QAAP,IAAmBD,MAAM,CAACC,QAAP,CAAgBC,IAA9C;AACA,iBAAOA,IAAI,IAAIA,IAAI,CAAC8J,KAAL,CAAY,CAAZ,MAAoBnB,IAAI,CAACxJ,EAAxC;AACA,SAjFO;AAmFR,gBAAQ,cAAUwJ,IAAV,EAAiB;AACxB,iBAAOA,IAAI,KAAK20B,OAAhB;AACA,SArFO;AAuFR,iBAAS,eAAU30B,IAAV,EAAiB;AACzB,iBAAOA,IAAI,KAAK+E,QAAQ,CAAC+T,aAAlB,KACJ,CAAC/T,QAAQ,CAACoB,QAAV,IAAsBpB,QAAQ,CAACoB,QAAT,EADlB,KAEN,CAAC,EAAGnG,IAAI,CAACX,IAAL,IAAaW,IAAI,CAACo+B,IAAlB,IAA0B,CAACp+B,IAAI,CAACq+B,QAAnC,CAFF;AAGA,SA3FO;AA6FR;AACA,mBAAWzE,oBAAoB,CAAE,KAAF,CA9FvB;AA+FR,oBAAYA,oBAAoB,CAAE,IAAF,CA/FxB;AAiGR,mBAAW,iBAAU55B,IAAV,EAAiB;AAE3B;AACA;AACA,cAAI23B,QAAQ,GAAG33B,IAAI,CAAC23B,QAAL,CAAcl5B,WAAd,EAAf;AACA,iBAASk5B,QAAQ,KAAK,OAAb,IAAwB,CAAC,CAAC33B,IAAI,CAACs+B,OAAjC,IACJ3G,QAAQ,KAAK,QAAb,IAAyB,CAAC,CAAC33B,IAAI,CAACu+B,QADnC;AAEA,SAxGO;AA0GR,oBAAY,kBAAUv+B,IAAV,EAAiB;AAE5B;AACA;AACA,cAAKA,IAAI,CAAC8hB,UAAV,EAAuB;AACtB;AACA9hB,YAAAA,IAAI,CAAC8hB,UAAL,CAAgB0c,aAAhB;AACA;;AAED,iBAAOx+B,IAAI,CAACu+B,QAAL,KAAkB,IAAzB;AACA,SApHO;AAsHR;AACA,iBAAS,eAAUv+B,IAAV,EAAiB;AAEzB;AACA;AACA;AACA;AACA,eAAMA,IAAI,GAAGA,IAAI,CAACq8B,UAAlB,EAA8Br8B,IAA9B,EAAoCA,IAAI,GAAGA,IAAI,CAACsN,WAAhD,EAA8D;AAC7D,gBAAKtN,IAAI,CAACixB,QAAL,GAAgB,CAArB,EAAyB;AACxB,qBAAO,KAAP;AACA;AACD;;AACD,iBAAO,IAAP;AACA,SAnIO;AAqIR,kBAAU,gBAAUjxB,IAAV,EAAiB;AAC1B,iBAAO,CAACi0B,IAAI,CAAC6B,OAAL,CAAc,OAAd,EAAyB91B,IAAzB,CAAR;AACA,SAvIO;AAyIR;AACA,kBAAU,gBAAUA,IAAV,EAAiB;AAC1B,iBAAOy2B,OAAO,CAACh0B,IAAR,CAAczC,IAAI,CAAC23B,QAAnB,CAAP;AACA,SA5IO;AA8IR,iBAAS,eAAU33B,IAAV,EAAiB;AACzB,iBAAOw2B,OAAO,CAAC/zB,IAAR,CAAczC,IAAI,CAAC23B,QAAnB,CAAP;AACA,SAhJO;AAkJR,kBAAU,gBAAU33B,IAAV,EAAiB;AAC1B,cAAI9B,IAAI,GAAG8B,IAAI,CAAC23B,QAAL,CAAcl5B,WAAd,EAAX;AACA,iBAAOP,IAAI,KAAK,OAAT,IAAoB8B,IAAI,CAACX,IAAL,KAAc,QAAlC,IAA8CnB,IAAI,KAAK,QAA9D;AACA,SArJO;AAuJR,gBAAQ,cAAU8B,IAAV,EAAiB;AACxB,cAAIrJ,IAAJ;AACA,iBAAOqJ,IAAI,CAAC23B,QAAL,CAAcl5B,WAAd,OAAgC,OAAhC,IACNuB,IAAI,CAACX,IAAL,KAAc,MADR,MAGN;AACA;AACE,WAAE1I,IAAI,GAAGqJ,IAAI,CAACua,YAAL,CAAmB,MAAnB,CAAT,KAA0C,IAA1C,IACD5jB,IAAI,CAAC8H,WAAL,OAAuB,MANlB,CAAP;AAOA,SAhKO;AAkKR;AACA,iBAASq7B,sBAAsB,CAAE,YAAW;AAC3C,iBAAO,CAAE,CAAF,CAAP;AACA,SAF8B,CAnKvB;AAuKR,gBAAQA,sBAAsB,CAAE,UAAU2E,aAAV,EAAyB5nC,MAAzB,EAAkC;AACjE,iBAAO,CAAEA,MAAM,GAAG,CAAX,CAAP;AACA,SAF6B,CAvKtB;AA2KR,cAAMijC,sBAAsB,CAAE,UAAU2E,aAAV,EAAyB5nC,MAAzB,EAAiCkjC,QAAjC,EAA4C;AACzE,iBAAO,CAAEA,QAAQ,GAAG,CAAX,GAAeA,QAAQ,GAAGljC,MAA1B,GAAmCkjC,QAArC,CAAP;AACA,SAF2B,CA3KpB;AA+KR,gBAAQD,sBAAsB,CAAE,UAAUE,YAAV,EAAwBnjC,MAAxB,EAAiC;AAChE,cAAI2F,CAAC,GAAG,CAAR;;AACA,iBAAQA,CAAC,GAAG3F,MAAZ,EAAoB2F,CAAC,IAAI,CAAzB,EAA6B;AAC5Bw9B,YAAAA,YAAY,CAACr7B,IAAb,CAAmBnC,CAAnB;AACA;;AACD,iBAAOw9B,YAAP;AACA,SAN6B,CA/KtB;AAuLR,eAAOF,sBAAsB,CAAE,UAAUE,YAAV,EAAwBnjC,MAAxB,EAAiC;AAC/D,cAAI2F,CAAC,GAAG,CAAR;;AACA,iBAAQA,CAAC,GAAG3F,MAAZ,EAAoB2F,CAAC,IAAI,CAAzB,EAA6B;AAC5Bw9B,YAAAA,YAAY,CAACr7B,IAAb,CAAmBnC,CAAnB;AACA;;AACD,iBAAOw9B,YAAP;AACA,SAN4B,CAvLrB;AA+LR,cAAMF,sBAAsB,CAAE,UAAUE,YAAV,EAAwBnjC,MAAxB,EAAgCkjC,QAAhC,EAA2C;AACxE,cAAIv9B,CAAC,GAAGu9B,QAAQ,GAAG,CAAX,GACPA,QAAQ,GAAGljC,MADJ,GAEPkjC,QAAQ,GAAGljC,MAAX,GACCA,MADD,GAECkjC,QAJF;;AAKA,iBAAQ,EAAEv9B,CAAF,IAAO,CAAf,GAAoB;AACnBw9B,YAAAA,YAAY,CAACr7B,IAAb,CAAmBnC,CAAnB;AACA;;AACD,iBAAOw9B,YAAP;AACA,SAV2B,CA/LpB;AA2MR,cAAMF,sBAAsB,CAAE,UAAUE,YAAV,EAAwBnjC,MAAxB,EAAgCkjC,QAAhC,EAA2C;AACxE,cAAIv9B,CAAC,GAAGu9B,QAAQ,GAAG,CAAX,GAAeA,QAAQ,GAAGljC,MAA1B,GAAmCkjC,QAA3C;;AACA,iBAAQ,EAAEv9B,CAAF,GAAM3F,MAAd,GAAwB;AACvBmjC,YAAAA,YAAY,CAACr7B,IAAb,CAAmBnC,CAAnB;AACA;;AACD,iBAAOw9B,YAAP;AACA,SAN2B;AA3MpB;AA5UgB,KAA1B;AAiiBA/F,IAAAA,IAAI,CAAC6B,OAAL,CAAc,KAAd,IAAwB7B,IAAI,CAAC6B,OAAL,CAAc,IAAd,CAAxB,CAxuDqB,CA0uDrB;;AACA,SAAMt5B,CAAN,IAAW;AAAEkiC,MAAAA,KAAK,EAAE,IAAT;AAAeC,MAAAA,QAAQ,EAAE,IAAzB;AAA+BC,MAAAA,IAAI,EAAE,IAArC;AAA2CC,MAAAA,QAAQ,EAAE,IAArD;AAA2D/b,MAAAA,KAAK,EAAE;AAAlE,KAAX,EAAsF;AACrFmR,MAAAA,IAAI,CAAC6B,OAAL,CAAct5B,CAAd,IAAoBk9B,iBAAiB,CAAEl9B,CAAF,CAArC;AACA;;AACD,SAAMA,CAAN,IAAW;AAAEsiC,MAAAA,MAAM,EAAE,IAAV;AAAgB/V,MAAAA,KAAK,EAAE;AAAvB,KAAX,EAA2C;AAC1CkL,MAAAA,IAAI,CAAC6B,OAAL,CAAct5B,CAAd,IAAoBm9B,kBAAkB,CAAEn9B,CAAF,CAAtC;AACA,KAhvDoB,CAkvDrB;;;AACA,aAASuhC,UAAT,GAAsB,CAAE;;AACxBA,IAAAA,UAAU,CAAC78B,SAAX,GAAuB+yB,IAAI,CAAC8K,OAAL,GAAe9K,IAAI,CAAC6B,OAA3C;AACA7B,IAAAA,IAAI,CAAC8J,UAAL,GAAkB,IAAIA,UAAJ,EAAlB;;AAEA3J,IAAAA,QAAQ,GAAGJ,MAAM,CAACI,QAAP,GAAkB,UAAUvC,QAAV,EAAoBmN,SAApB,EAAgC;AAC5D,UAAItX,OAAJ;AAAA,UAAa/c,KAAb;AAAA,UAAoBs0B,MAApB;AAAA,UAA4B5/B,IAA5B;AAAA,UACC6/B,KADD;AAAA,UACQjH,MADR;AAAA,UACgBkH,UADhB;AAAA,UAEClnB,MAAM,GAAGmd,UAAU,CAAEvD,QAAQ,GAAG,GAAb,CAFpB;;AAIA,UAAK5Z,MAAL,EAAc;AACb,eAAO+mB,SAAS,GAAG,CAAH,GAAO/mB,MAAM,CAAC9W,KAAP,CAAc,CAAd,CAAvB;AACA;;AAED+9B,MAAAA,KAAK,GAAGrN,QAAR;AACAoG,MAAAA,MAAM,GAAG,EAAT;AACAkH,MAAAA,UAAU,GAAGlL,IAAI,CAACyI,SAAlB;;AAEA,aAAQwC,KAAR,EAAgB;AAEf;AACA,YAAK,CAACxX,OAAD,KAAc/c,KAAK,GAAGsrB,MAAM,CAACryB,IAAP,CAAas7B,KAAb,CAAtB,CAAL,EAAoD;AACnD,cAAKv0B,KAAL,EAAa;AAEZ;AACAu0B,YAAAA,KAAK,GAAGA,KAAK,CAAC/9B,KAAN,CAAawJ,KAAK,CAAE,CAAF,CAAL,CAAW9T,MAAxB,KAAoCqoC,KAA5C;AACA;;AACDjH,UAAAA,MAAM,CAACt5B,IAAP,CAAesgC,MAAM,GAAG,EAAxB;AACA;;AAEDvX,QAAAA,OAAO,GAAG,KAAV,CAZe,CAcf;;AACA,YAAO/c,KAAK,GAAGurB,YAAY,CAACtyB,IAAb,CAAmBs7B,KAAnB,CAAf,EAA8C;AAC7CxX,UAAAA,OAAO,GAAG/c,KAAK,CAACquB,KAAN,EAAV;AACAiG,UAAAA,MAAM,CAACtgC,IAAP,CAAa;AACZgX,YAAAA,KAAK,EAAE+R,OADK;AAGZ;AACAroB,YAAAA,IAAI,EAAEsL,KAAK,CAAE,CAAF,CAAL,CAAW1G,OAAX,CAAoB+xB,KAApB,EAA2B,GAA3B;AAJM,WAAb;AAMAkJ,UAAAA,KAAK,GAAGA,KAAK,CAAC/9B,KAAN,CAAaumB,OAAO,CAAC7wB,MAArB,CAAR;AACA,SAxBc,CA0Bf;;;AACA,aAAMwI,IAAN,IAAc40B,IAAI,CAAC/zB,MAAnB,EAA4B;AAC3B,cAAK,CAAEyK,KAAK,GAAG2rB,SAAS,CAAEj3B,IAAF,CAAT,CAAkBuE,IAAlB,CAAwBs7B,KAAxB,CAAV,MAAiD,CAACC,UAAU,CAAE9/B,IAAF,CAAX,KACnDsL,KAAK,GAAGw0B,UAAU,CAAE9/B,IAAF,CAAV,CAAoBsL,KAApB,CAD2C,CAAjD,CAAL,EAC6C;AAC5C+c,YAAAA,OAAO,GAAG/c,KAAK,CAACquB,KAAN,EAAV;AACAiG,YAAAA,MAAM,CAACtgC,IAAP,CAAa;AACZgX,cAAAA,KAAK,EAAE+R,OADK;AAEZroB,cAAAA,IAAI,EAAEA,IAFM;AAGZ8mB,cAAAA,OAAO,EAAExb;AAHG,aAAb;AAKAu0B,YAAAA,KAAK,GAAGA,KAAK,CAAC/9B,KAAN,CAAaumB,OAAO,CAAC7wB,MAArB,CAAR;AACA;AACD;;AAED,YAAK,CAAC6wB,OAAN,EAAgB;AACf;AACA;AACD,OAxD2D,CA0D5D;AACA;AACA;;;AACA,aAAOsX,SAAS,GACfE,KAAK,CAACroC,MADS,GAEfqoC,KAAK,GACJlL,MAAM,CAACl0B,KAAP,CAAc+xB,QAAd,CADI,GAGJ;AACAuD,MAAAA,UAAU,CAAEvD,QAAF,EAAYoG,MAAZ,CAAV,CAA+B92B,KAA/B,CAAsC,CAAtC,CANF;AAOA,KApED;;AAsEA,aAASu3B,UAAT,CAAqBuG,MAArB,EAA8B;AAC7B,UAAIziC,CAAC,GAAG,CAAR;AAAA,UACC+f,GAAG,GAAG0iB,MAAM,CAACpoC,MADd;AAAA,UAECg7B,QAAQ,GAAG,EAFZ;;AAGA,aAAQr1B,CAAC,GAAG+f,GAAZ,EAAiB/f,CAAC,EAAlB,EAAuB;AACtBq1B,QAAAA,QAAQ,IAAIoN,MAAM,CAAEziC,CAAF,CAAN,CAAYmZ,KAAxB;AACA;;AACD,aAAOkc,QAAP;AACA;;AAED,aAAS4F,aAAT,CAAwBuG,OAAxB,EAAiCoB,UAAjC,EAA6C3wB,IAA7C,EAAoD;AACnD,UAAIuc,GAAG,GAAGoU,UAAU,CAACpU,GAArB;AAAA,UACCqU,IAAI,GAAGD,UAAU,CAACrmC,IADnB;AAAA,UAECmc,GAAG,GAAGmqB,IAAI,IAAIrU,GAFf;AAAA,UAGCsU,gBAAgB,GAAG7wB,IAAI,IAAIyG,GAAG,KAAK,YAHpC;AAAA,UAICqqB,QAAQ,GAAGtK,IAAI,EAJhB;AAMA,aAAOmK,UAAU,CAAChmC,KAAX,GAEN;AACA,gBAAU4G,IAAV,EAAgBgC,OAAhB,EAAyBu7B,GAAzB,EAA+B;AAC9B,eAAUv9B,IAAI,GAAGA,IAAI,CAAEgrB,GAAF,CAArB,EAAiC;AAChC,cAAKhrB,IAAI,CAACixB,QAAL,KAAkB,CAAlB,IAAuBqO,gBAA5B,EAA+C;AAC9C,mBAAOtB,OAAO,CAAEh+B,IAAF,EAAQgC,OAAR,EAAiBu7B,GAAjB,CAAd;AACA;AACD;;AACD,eAAO,KAAP;AACA,OAVK,GAYN;AACA,gBAAUv9B,IAAV,EAAgBgC,OAAhB,EAAyBu7B,GAAzB,EAA+B;AAC9B,YAAIiC,QAAJ;AAAA,YAAchC,WAAd;AAAA,YAA2BC,UAA3B;AAAA,YACCgC,QAAQ,GAAG,CAAEzK,OAAF,EAAWuK,QAAX,CADZ,CAD8B,CAI9B;;AACA,YAAKhC,GAAL,EAAW;AACV,iBAAUv9B,IAAI,GAAGA,IAAI,CAAEgrB,GAAF,CAArB,EAAiC;AAChC,gBAAKhrB,IAAI,CAACixB,QAAL,KAAkB,CAAlB,IAAuBqO,gBAA5B,EAA+C;AAC9C,kBAAKtB,OAAO,CAAEh+B,IAAF,EAAQgC,OAAR,EAAiBu7B,GAAjB,CAAZ,EAAqC;AACpC,uBAAO,IAAP;AACA;AACD;AACD;AACD,SARD,MAQO;AACN,iBAAUv9B,IAAI,GAAGA,IAAI,CAAEgrB,GAAF,CAArB,EAAiC;AAChC,gBAAKhrB,IAAI,CAACixB,QAAL,KAAkB,CAAlB,IAAuBqO,gBAA5B,EAA+C;AAC9C7B,cAAAA,UAAU,GAAGz9B,IAAI,CAAE8yB,OAAF,CAAJ,KAAqB9yB,IAAI,CAAE8yB,OAAF,CAAJ,GAAkB,EAAvC,CAAb,CAD8C,CAG9C;AACA;;AACA0K,cAAAA,WAAW,GAAGC,UAAU,CAAEz9B,IAAI,CAAC69B,QAAP,CAAV,KACXJ,UAAU,CAAEz9B,IAAI,CAAC69B,QAAP,CAAV,GAA8B,EADnB,CAAd;;AAGA,kBAAKwB,IAAI,IAAIA,IAAI,KAAKr/B,IAAI,CAAC23B,QAAL,CAAcl5B,WAAd,EAAtB,EAAoD;AACnDuB,gBAAAA,IAAI,GAAGA,IAAI,CAAEgrB,GAAF,CAAJ,IAAehrB,IAAtB;AACA,eAFD,MAEO,IAAK,CAAEw/B,QAAQ,GAAGhC,WAAW,CAAEtoB,GAAF,CAAxB,KACXsqB,QAAQ,CAAE,CAAF,CAAR,KAAkBxK,OADP,IACkBwK,QAAQ,CAAE,CAAF,CAAR,KAAkBD,QADzC,EACoD;AAE1D;AACA,uBAASE,QAAQ,CAAE,CAAF,CAAR,GAAgBD,QAAQ,CAAE,CAAF,CAAjC;AACA,eALM,MAKA;AAEN;AACAhC,gBAAAA,WAAW,CAAEtoB,GAAF,CAAX,GAAqBuqB,QAArB,CAHM,CAKN;;AACA,oBAAOA,QAAQ,CAAE,CAAF,CAAR,GAAgBzB,OAAO,CAAEh+B,IAAF,EAAQgC,OAAR,EAAiBu7B,GAAjB,CAA9B,EAAyD;AACxD,yBAAO,IAAP;AACA;AACD;AACD;AACD;AACD;;AACD,eAAO,KAAP;AACA,OAzDF;AA0DA;;AAED,aAASmC,cAAT,CAAyBC,QAAzB,EAAoC;AACnC,aAAOA,QAAQ,CAAC9oC,MAAT,GAAkB,CAAlB,GACN,UAAUmJ,IAAV,EAAgBgC,OAAhB,EAAyBu7B,GAAzB,EAA+B;AAC9B,YAAI/gC,CAAC,GAAGmjC,QAAQ,CAAC9oC,MAAjB;;AACA,eAAQ2F,CAAC,EAAT,EAAc;AACb,cAAK,CAACmjC,QAAQ,CAAEnjC,CAAF,CAAR,CAAewD,IAAf,EAAqBgC,OAArB,EAA8Bu7B,GAA9B,CAAN,EAA4C;AAC3C,mBAAO,KAAP;AACA;AACD;;AACD,eAAO,IAAP;AACA,OATK,GAUNoC,QAAQ,CAAE,CAAF,CAVT;AAWA;;AAED,aAASC,gBAAT,CAA2B/N,QAA3B,EAAqCgO,QAArC,EAA+Cl8B,OAA/C,EAAyD;AACxD,UAAInH,CAAC,GAAG,CAAR;AAAA,UACC+f,GAAG,GAAGsjB,QAAQ,CAAChpC,MADhB;;AAEA,aAAQ2F,CAAC,GAAG+f,GAAZ,EAAiB/f,CAAC,EAAlB,EAAuB;AACtBw3B,QAAAA,MAAM,CAAEnC,QAAF,EAAYgO,QAAQ,CAAErjC,CAAF,CAApB,EAA2BmH,OAA3B,CAAN;AACA;;AACD,aAAOA,OAAP;AACA;;AAED,aAASm8B,QAAT,CAAmB7B,SAAnB,EAA8Bz9B,GAA9B,EAAmCN,MAAnC,EAA2C8B,OAA3C,EAAoDu7B,GAApD,EAA0D;AACzD,UAAIv9B,IAAJ;AAAA,UACC+/B,YAAY,GAAG,EADhB;AAAA,UAECvjC,CAAC,GAAG,CAFL;AAAA,UAGC+f,GAAG,GAAG0hB,SAAS,CAACpnC,MAHjB;AAAA,UAICmpC,MAAM,GAAGx/B,GAAG,IAAI,IAJjB;;AAMA,aAAQhE,CAAC,GAAG+f,GAAZ,EAAiB/f,CAAC,EAAlB,EAAuB;AACtB,YAAOwD,IAAI,GAAGi+B,SAAS,CAAEzhC,CAAF,CAAvB,EAAiC;AAChC,cAAK,CAAC0D,MAAD,IAAWA,MAAM,CAAEF,IAAF,EAAQgC,OAAR,EAAiBu7B,GAAjB,CAAtB,EAA+C;AAC9CwC,YAAAA,YAAY,CAACphC,IAAb,CAAmBqB,IAAnB;;AACA,gBAAKggC,MAAL,EAAc;AACbx/B,cAAAA,GAAG,CAAC7B,IAAJ,CAAUnC,CAAV;AACA;AACD;AACD;AACD;;AAED,aAAOujC,YAAP;AACA;;AAED,aAASE,UAAT,CAAqBvD,SAArB,EAAgC7K,QAAhC,EAA0CmM,OAA1C,EAAmDkC,UAAnD,EAA+DC,UAA/D,EAA2EC,YAA3E,EAA0F;AACzF,UAAKF,UAAU,IAAI,CAACA,UAAU,CAAEpN,OAAF,CAA9B,EAA4C;AAC3CoN,QAAAA,UAAU,GAAGD,UAAU,CAAEC,UAAF,CAAvB;AACA;;AACD,UAAKC,UAAU,IAAI,CAACA,UAAU,CAAErN,OAAF,CAA9B,EAA4C;AAC3CqN,QAAAA,UAAU,GAAGF,UAAU,CAAEE,UAAF,EAAcC,YAAd,CAAvB;AACA;;AACD,aAAOnH,YAAY,CAAE,UAAUnB,IAAV,EAAgBn0B,OAAhB,EAAyB3B,OAAzB,EAAkCu7B,GAAlC,EAAwC;AAC5D,YAAI/c,IAAJ;AAAA,YAAUhkB,CAAV;AAAA,YAAawD,IAAb;AAAA,YACCqgC,MAAM,GAAG,EADV;AAAA,YAECC,OAAO,GAAG,EAFX;AAAA,YAGCC,WAAW,GAAG58B,OAAO,CAAC9M,MAHvB;AAAA,YAKC;AACAq7B,QAAAA,KAAK,GAAG4F,IAAI,IAAI8H,gBAAgB,CAC/B/N,QAAQ,IAAI,GADmB,EAE/B7vB,OAAO,CAACivB,QAAR,GAAmB,CAAEjvB,OAAF,CAAnB,GAAiCA,OAFF,EAG/B,EAH+B,CANjC;AAAA,YAYC;AACAw+B,QAAAA,SAAS,GAAG9D,SAAS,KAAM5E,IAAI,IAAI,CAACjG,QAAf,CAAT,GACXiO,QAAQ,CAAE5N,KAAF,EAASmO,MAAT,EAAiB3D,SAAjB,EAA4B16B,OAA5B,EAAqCu7B,GAArC,CADG,GAEXrL,KAfF;AAAA,YAiBCuO,UAAU,GAAGzC,OAAO,GAEnB;AACAmC,QAAAA,UAAU,KAAMrI,IAAI,GAAG4E,SAAH,GAAe6D,WAAW,IAAIL,UAAxC,CAAV,GAEC;AACA,UAHD,GAKC;AACAv8B,QAAAA,OATkB,GAUnB68B,SA3BF,CAD4D,CA8B5D;;AACA,YAAKxC,OAAL,EAAe;AACdA,UAAAA,OAAO,CAAEwC,SAAF,EAAaC,UAAb,EAAyBz+B,OAAzB,EAAkCu7B,GAAlC,CAAP;AACA,SAjC2D,CAmC5D;;;AACA,YAAK2C,UAAL,EAAkB;AACjB1f,UAAAA,IAAI,GAAGsf,QAAQ,CAAEW,UAAF,EAAcH,OAAd,CAAf;AACAJ,UAAAA,UAAU,CAAE1f,IAAF,EAAQ,EAAR,EAAYxe,OAAZ,EAAqBu7B,GAArB,CAAV,CAFiB,CAIjB;;AACA/gC,UAAAA,CAAC,GAAGgkB,IAAI,CAAC3pB,MAAT;;AACA,iBAAQ2F,CAAC,EAAT,EAAc;AACb,gBAAOwD,IAAI,GAAGwgB,IAAI,CAAEhkB,CAAF,CAAlB,EAA4B;AAC3BikC,cAAAA,UAAU,CAAEH,OAAO,CAAE9jC,CAAF,CAAT,CAAV,GAA6B,EAAGgkC,SAAS,CAAEF,OAAO,CAAE9jC,CAAF,CAAT,CAAT,GAA4BwD,IAA/B,CAA7B;AACA;AACD;AACD;;AAED,YAAK83B,IAAL,EAAY;AACX,cAAKqI,UAAU,IAAIzD,SAAnB,EAA+B;AAC9B,gBAAKyD,UAAL,EAAkB;AAEjB;AACA3f,cAAAA,IAAI,GAAG,EAAP;AACAhkB,cAAAA,CAAC,GAAGikC,UAAU,CAAC5pC,MAAf;;AACA,qBAAQ2F,CAAC,EAAT,EAAc;AACb,oBAAOwD,IAAI,GAAGygC,UAAU,CAAEjkC,CAAF,CAAxB,EAAkC;AAEjC;AACAgkB,kBAAAA,IAAI,CAAC7hB,IAAL,CAAa6hC,SAAS,CAAEhkC,CAAF,CAAT,GAAiBwD,IAA9B;AACA;AACD;;AACDmgC,cAAAA,UAAU,CAAE,IAAF,EAAUM,UAAU,GAAG,EAAvB,EAA6BjgB,IAA7B,EAAmC+c,GAAnC,CAAV;AACA,aAd6B,CAgB9B;;;AACA/gC,YAAAA,CAAC,GAAGikC,UAAU,CAAC5pC,MAAf;;AACA,mBAAQ2F,CAAC,EAAT,EAAc;AACb,kBAAK,CAAEwD,IAAI,GAAGygC,UAAU,CAAEjkC,CAAF,CAAnB,KACJ,CAAEgkB,IAAI,GAAG2f,UAAU,GAAGrhC,OAAO,CAAEg5B,IAAF,EAAQ93B,IAAR,CAAV,GAA2BqgC,MAAM,CAAE7jC,CAAF,CAApD,IAA8D,CAAC,CADhE,EACoE;AAEnEs7B,gBAAAA,IAAI,CAAEtX,IAAF,CAAJ,GAAe,EAAG7c,OAAO,CAAE6c,IAAF,CAAP,GAAkBxgB,IAArB,CAAf;AACA;AACD;AACD,WA1BU,CA4BZ;;AACC,SA7BD,MA6BO;AACNygC,UAAAA,UAAU,GAAGX,QAAQ,CACpBW,UAAU,KAAK98B,OAAf,GACC88B,UAAU,CAAC5hC,MAAX,CAAmB0hC,WAAnB,EAAgCE,UAAU,CAAC5pC,MAA3C,CADD,GAEC4pC,UAHmB,CAArB;;AAKA,cAAKN,UAAL,EAAkB;AACjBA,YAAAA,UAAU,CAAE,IAAF,EAAQx8B,OAAR,EAAiB88B,UAAjB,EAA6BlD,GAA7B,CAAV;AACA,WAFD,MAEO;AACN5+B,YAAAA,IAAI,CAAC4C,KAAL,CAAYoC,OAAZ,EAAqB88B,UAArB;AACA;AACD;AACD,OA1FkB,CAAnB;AA2FA;;AAED,aAASC,iBAAT,CAA4BzB,MAA5B,EAAqC;AACpC,UAAI0B,YAAJ;AAAA,UAAkB3C,OAAlB;AAAA,UAA2BvL,CAA3B;AAAA,UACClW,GAAG,GAAG0iB,MAAM,CAACpoC,MADd;AAAA,UAEC+pC,eAAe,GAAG3M,IAAI,CAACwI,QAAL,CAAewC,MAAM,CAAE,CAAF,CAAN,CAAY5/B,IAA3B,CAFnB;AAAA,UAGCwhC,gBAAgB,GAAGD,eAAe,IAAI3M,IAAI,CAACwI,QAAL,CAAe,GAAf,CAHvC;AAAA,UAICjgC,CAAC,GAAGokC,eAAe,GAAG,CAAH,GAAO,CAJ3B;AAAA,UAMC;AACAE,MAAAA,YAAY,GAAGrJ,aAAa,CAAE,UAAUz3B,IAAV,EAAiB;AAC9C,eAAOA,IAAI,KAAK2gC,YAAhB;AACA,OAF2B,EAEzBE,gBAFyB,EAEP,IAFO,CAP7B;AAAA,UAUCE,eAAe,GAAGtJ,aAAa,CAAE,UAAUz3B,IAAV,EAAiB;AACjD,eAAOlB,OAAO,CAAE6hC,YAAF,EAAgB3gC,IAAhB,CAAP,GAAgC,CAAC,CAAxC;AACA,OAF8B,EAE5B6gC,gBAF4B,EAEV,IAFU,CAVhC;AAAA,UAaClB,QAAQ,GAAG,CAAE,UAAU3/B,IAAV,EAAgBgC,OAAhB,EAAyBu7B,GAAzB,EAA+B;AAC3C,YAAIxV,GAAG,GAAK,CAAC6Y,eAAD,KAAsBrD,GAAG,IAAIv7B,OAAO,KAAKuyB,gBAAzC,CAAF,KACT,CAAEoM,YAAY,GAAG3+B,OAAjB,EAA2BivB,QAA3B,GACC6P,YAAY,CAAE9gC,IAAF,EAAQgC,OAAR,EAAiBu7B,GAAjB,CADb,GAECwD,eAAe,CAAE/gC,IAAF,EAAQgC,OAAR,EAAiBu7B,GAAjB,CAHP,CAAV,CAD2C,CAM3C;;AACAoD,QAAAA,YAAY,GAAG,IAAf;AACA,eAAO5Y,GAAP;AACA,OATU,CAbZ;;AAwBA,aAAQvrB,CAAC,GAAG+f,GAAZ,EAAiB/f,CAAC,EAAlB,EAAuB;AACtB,YAAOwhC,OAAO,GAAG/J,IAAI,CAACwI,QAAL,CAAewC,MAAM,CAAEziC,CAAF,CAAN,CAAY6C,IAA3B,CAAjB,EAAuD;AACtDsgC,UAAAA,QAAQ,GAAG,CAAElI,aAAa,CAAEiI,cAAc,CAAEC,QAAF,CAAhB,EAA8B3B,OAA9B,CAAf,CAAX;AACA,SAFD,MAEO;AACNA,UAAAA,OAAO,GAAG/J,IAAI,CAAC/zB,MAAL,CAAa++B,MAAM,CAAEziC,CAAF,CAAN,CAAY6C,IAAzB,EAAgCkC,KAAhC,CAAuC,IAAvC,EAA6C09B,MAAM,CAAEziC,CAAF,CAAN,CAAY2pB,OAAzD,CAAV,CADM,CAGN;;AACA,cAAK6X,OAAO,CAAElL,OAAF,CAAZ,EAA0B;AAEzB;AACAL,YAAAA,CAAC,GAAG,EAAEj2B,CAAN;;AACA,mBAAQi2B,CAAC,GAAGlW,GAAZ,EAAiBkW,CAAC,EAAlB,EAAuB;AACtB,kBAAKwB,IAAI,CAACwI,QAAL,CAAewC,MAAM,CAAExM,CAAF,CAAN,CAAYpzB,IAA3B,CAAL,EAAyC;AACxC;AACA;AACD;;AACD,mBAAO4gC,UAAU,CAChBzjC,CAAC,GAAG,CAAJ,IAASkjC,cAAc,CAAEC,QAAF,CADP,EAEhBnjC,CAAC,GAAG,CAAJ,IAASk8B,UAAU,EAEnB;AACAuG,YAAAA,MAAM,CACJ99B,KADF,CACS,CADT,EACY3E,CAAC,GAAG,CADhB,EAEEiH,MAFF,CAEU;AAAEkS,cAAAA,KAAK,EAAEspB,MAAM,CAAEziC,CAAC,GAAG,CAAN,CAAN,CAAgB6C,IAAhB,KAAyB,GAAzB,GAA+B,GAA/B,GAAqC;AAA9C,aAFV,CAHmB,CAAV,CAMP4E,OANO,CAME+xB,KANF,EAMS,IANT,CAFO,EAShBgI,OATgB,EAUhBxhC,CAAC,GAAGi2B,CAAJ,IAASiO,iBAAiB,CAAEzB,MAAM,CAAC99B,KAAP,CAAc3E,CAAd,EAAiBi2B,CAAjB,CAAF,CAVV,EAWhBA,CAAC,GAAGlW,GAAJ,IAAWmkB,iBAAiB,CAAIzB,MAAM,GAAGA,MAAM,CAAC99B,KAAP,CAAcsxB,CAAd,CAAb,CAXZ,EAYhBA,CAAC,GAAGlW,GAAJ,IAAWmc,UAAU,CAAEuG,MAAF,CAZL,CAAjB;AAcA;;AACDU,UAAAA,QAAQ,CAAChhC,IAAT,CAAeq/B,OAAf;AACA;AACD;;AAED,aAAO0B,cAAc,CAAEC,QAAF,CAArB;AACA;;AAED,aAASqB,wBAAT,CAAmCC,eAAnC,EAAoDC,WAApD,EAAkE;AACjE,UAAIC,KAAK,GAAGD,WAAW,CAACrqC,MAAZ,GAAqB,CAAjC;AAAA,UACCuqC,SAAS,GAAGH,eAAe,CAACpqC,MAAhB,GAAyB,CADtC;AAAA,UAECwqC,YAAY,GAAG,SAAfA,YAAe,CAAUvJ,IAAV,EAAgB91B,OAAhB,EAAyBu7B,GAAzB,EAA8B55B,OAA9B,EAAuC29B,SAAvC,EAAmD;AACjE,YAAIthC,IAAJ;AAAA,YAAUyyB,CAAV;AAAA,YAAauL,OAAb;AAAA,YACCuD,YAAY,GAAG,CADhB;AAAA,YAEC/kC,CAAC,GAAG,GAFL;AAAA,YAGCyhC,SAAS,GAAGnG,IAAI,IAAI,EAHrB;AAAA,YAIC0J,UAAU,GAAG,EAJd;AAAA,YAKCC,aAAa,GAAGlN,gBALjB;AAAA,YAOC;AACArC,QAAAA,KAAK,GAAG4F,IAAI,IAAIsJ,SAAS,IAAInN,IAAI,CAACv9B,IAAL,CAAW,KAAX,EAAoB,GAApB,EAAyB4qC,SAAzB,CAR9B;AAAA,YAUC;AACAI,QAAAA,aAAa,GAAK1M,OAAO,IAAIyM,aAAa,IAAI,IAAjB,GAAwB,CAAxB,GAA4B/kC,IAAI,CAACiI,MAAL,MAAiB,GAX3E;AAAA,YAYC4X,GAAG,GAAG2V,KAAK,CAACr7B,MAZb;;AAcA,YAAKyqC,SAAL,EAAiB;AAEhB;AACA;AACA;AACA;AACA/M,UAAAA,gBAAgB,GAAGvyB,OAAO,IAAI+C,QAAX,IAAuB/C,OAAvB,IAAkCs/B,SAArD;AACA,SAtBgE,CAwBjE;AACA;AACA;;;AACA,eAAQ9kC,CAAC,KAAK+f,GAAN,IAAa,CAAEvc,IAAI,GAAGkyB,KAAK,CAAE11B,CAAF,CAAd,KAAyB,IAA9C,EAAoDA,CAAC,EAArD,EAA0D;AACzD,cAAK4kC,SAAS,IAAIphC,IAAlB,EAAyB;AACxByyB,YAAAA,CAAC,GAAG,CAAJ,CADwB,CAGxB;AACA;AACA;AACA;;AACA,gBAAK,CAACzwB,OAAD,IAAYhC,IAAI,CAACo4B,aAAL,IAAsBrzB,QAAvC,EAAkD;AACjD2vB,cAAAA,WAAW,CAAE10B,IAAF,CAAX;AACAu9B,cAAAA,GAAG,GAAG,CAAC3I,cAAP;AACA;;AACD,mBAAUoJ,OAAO,GAAGiD,eAAe,CAAExO,CAAC,EAAH,CAAnC,EAA+C;AAC9C,kBAAKuL,OAAO,CAAEh+B,IAAF,EAAQgC,OAAO,IAAI+C,QAAnB,EAA6Bw4B,GAA7B,CAAZ,EAAiD;AAChD55B,gBAAAA,OAAO,CAAChF,IAAR,CAAcqB,IAAd;AACA;AACA;AACD;;AACD,gBAAKshC,SAAL,EAAiB;AAChBtM,cAAAA,OAAO,GAAG0M,aAAV;AACA;AACD,WArBwD,CAuBzD;;;AACA,cAAKP,KAAL,EAAa;AAEZ;AACA,gBAAOnhC,IAAI,GAAG,CAACg+B,OAAD,IAAYh+B,IAA1B,EAAmC;AAClCuhC,cAAAA,YAAY;AACZ,aALW,CAOZ;;;AACA,gBAAKzJ,IAAL,EAAY;AACXmG,cAAAA,SAAS,CAACt/B,IAAV,CAAgBqB,IAAhB;AACA;AACD;AACD,SA/DgE,CAiEjE;AACA;;;AACAuhC,QAAAA,YAAY,IAAI/kC,CAAhB,CAnEiE,CAqEjE;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,YAAK2kC,KAAK,IAAI3kC,CAAC,KAAK+kC,YAApB,EAAmC;AAClC9O,UAAAA,CAAC,GAAG,CAAJ;;AACA,iBAAUuL,OAAO,GAAGkD,WAAW,CAAEzO,CAAC,EAAH,CAA/B,EAA2C;AAC1CuL,YAAAA,OAAO,CAAEC,SAAF,EAAauD,UAAb,EAAyBx/B,OAAzB,EAAkCu7B,GAAlC,CAAP;AACA;;AAED,cAAKzF,IAAL,EAAY;AAEX;AACA,gBAAKyJ,YAAY,GAAG,CAApB,EAAwB;AACvB,qBAAQ/kC,CAAC,EAAT,EAAc;AACb,oBAAK,EAAGyhC,SAAS,CAAEzhC,CAAF,CAAT,IAAkBglC,UAAU,CAAEhlC,CAAF,CAA/B,CAAL,EAA8C;AAC7CglC,kBAAAA,UAAU,CAAEhlC,CAAF,CAAV,GAAkBg5B,GAAG,CAACp0B,IAAJ,CAAUuC,OAAV,CAAlB;AACA;AACD;AACD,aATU,CAWX;;;AACA69B,YAAAA,UAAU,GAAG1B,QAAQ,CAAE0B,UAAF,CAArB;AACA,WAnBiC,CAqBlC;;;AACA7iC,UAAAA,IAAI,CAAC4C,KAAL,CAAYoC,OAAZ,EAAqB69B,UAArB,EAtBkC,CAwBlC;;AACA,cAAKF,SAAS,IAAI,CAACxJ,IAAd,IAAsB0J,UAAU,CAAC3qC,MAAX,GAAoB,CAA1C,IACF0qC,YAAY,GAAGL,WAAW,CAACrqC,MAA7B,GAAwC,CADzC,EAC6C;AAE5Cm9B,YAAAA,MAAM,CAACiI,UAAP,CAAmBt4B,OAAnB;AACA;AACD,SA1GgE,CA4GjE;;;AACA,YAAK29B,SAAL,EAAiB;AAChBtM,UAAAA,OAAO,GAAG0M,aAAV;AACAnN,UAAAA,gBAAgB,GAAGkN,aAAnB;AACA;;AAED,eAAOxD,SAAP;AACA,OArHF;;AAuHA,aAAOkD,KAAK,GACXlI,YAAY,CAAEoI,YAAF,CADD,GAEXA,YAFD;AAGA;;AAEDhN,IAAAA,OAAO,GAAGL,MAAM,CAACK,OAAP,GAAiB,UAAUxC,QAAV,EAAoBlnB;AAAM;AAA1B,MAAoD;AAC9E,UAAInO,CAAJ;AAAA,UACC0kC,WAAW,GAAG,EADf;AAAA,UAECD,eAAe,GAAG,EAFnB;AAAA,UAGChpB,MAAM,GAAGod,aAAa,CAAExD,QAAQ,GAAG,GAAb,CAHvB;;AAKA,UAAK,CAAC5Z,MAAN,EAAe;AAEd;AACA,YAAK,CAACtN,KAAN,EAAc;AACbA,UAAAA,KAAK,GAAGypB,QAAQ,CAAEvC,QAAF,CAAhB;AACA;;AACDr1B,QAAAA,CAAC,GAAGmO,KAAK,CAAC9T,MAAV;;AACA,eAAQ2F,CAAC,EAAT,EAAc;AACbyb,UAAAA,MAAM,GAAGyoB,iBAAiB,CAAE/1B,KAAK,CAAEnO,CAAF,CAAP,CAA1B;;AACA,cAAKyb,MAAM,CAAE6a,OAAF,CAAX,EAAyB;AACxBoO,YAAAA,WAAW,CAACviC,IAAZ,CAAkBsZ,MAAlB;AACA,WAFD,MAEO;AACNgpB,YAAAA,eAAe,CAACtiC,IAAhB,CAAsBsZ,MAAtB;AACA;AACD,SAda,CAgBd;;;AACAA,QAAAA,MAAM,GAAGod,aAAa,CACrBxD,QADqB,EAErBmP,wBAAwB,CAAEC,eAAF,EAAmBC,WAAnB,CAFH,CAAtB,CAjBc,CAsBd;;AACAjpB,QAAAA,MAAM,CAAC4Z,QAAP,GAAkBA,QAAlB;AACA;;AACD,aAAO5Z,MAAP;AACA,KAhCD;AAkCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAqc,IAAAA,MAAM,GAAGN,MAAM,CAACM,MAAP,GAAgB,UAAUzC,QAAV,EAAoB7vB,OAApB,EAA6B2B,OAA7B,EAAsCm0B,IAAtC,EAA6C;AACrE,UAAIt7B,CAAJ;AAAA,UAAOyiC,MAAP;AAAA,UAAe0C,KAAf;AAAA,UAAsBtiC,IAAtB;AAAA,UAA4B3I,IAA5B;AAAA,UACCkrC,QAAQ,GAAG,OAAO/P,QAAP,KAAoB,UAApB,IAAkCA,QAD9C;AAAA,UAEClnB,KAAK,GAAG,CAACmtB,IAAD,IAAS1D,QAAQ,CAAIvC,QAAQ,GAAG+P,QAAQ,CAAC/P,QAAT,IAAqBA,QAApC,CAF1B;AAIAluB,MAAAA,OAAO,GAAGA,OAAO,IAAI,EAArB,CALqE,CAOrE;AACA;;AACA,UAAKgH,KAAK,CAAC9T,MAAN,KAAiB,CAAtB,EAA0B;AAEzB;AACAooC,QAAAA,MAAM,GAAGt0B,KAAK,CAAE,CAAF,CAAL,GAAaA,KAAK,CAAE,CAAF,CAAL,CAAWxJ,KAAX,CAAkB,CAAlB,CAAtB;;AACA,YAAK89B,MAAM,CAACpoC,MAAP,GAAgB,CAAhB,IAAqB,CAAE8qC,KAAK,GAAG1C,MAAM,CAAE,CAAF,CAAhB,EAAwB5/B,IAAxB,KAAiC,IAAtD,IACJ2C,OAAO,CAACivB,QAAR,KAAqB,CADjB,IACsB2D,cADtB,IACwCX,IAAI,CAACwI,QAAL,CAAewC,MAAM,CAAE,CAAF,CAAN,CAAY5/B,IAA3B,CAD7C,EACiF;AAEhF2C,UAAAA,OAAO,GAAG,CAAEiyB,IAAI,CAACv9B,IAAL,CAAW,IAAX,EAAmBirC,KAAK,CAACxb,OAAN,CAAe,CAAf,EAC7BliB,OAD6B,CACpB4yB,SADoB,EACTC,SADS,CAAnB,EACuB90B,OADvB,KACoC,EADtC,EAC4C,CAD5C,CAAV;;AAEA,cAAK,CAACA,OAAN,EAAgB;AACf,mBAAO2B,OAAP,CADe,CAGhB;AACC,WAJD,MAIO,IAAKi+B,QAAL,EAAgB;AACtB5/B,YAAAA,OAAO,GAAGA,OAAO,CAAC8f,UAAlB;AACA;;AAED+P,UAAAA,QAAQ,GAAGA,QAAQ,CAAC1wB,KAAT,CAAgB89B,MAAM,CAACjG,KAAP,GAAerjB,KAAf,CAAqB9e,MAArC,CAAX;AACA,SAlBwB,CAoBzB;;;AACA2F,QAAAA,CAAC,GAAG85B,SAAS,CAAE,cAAF,CAAT,CAA4B7zB,IAA5B,CAAkCovB,QAAlC,IAA+C,CAA/C,GAAmDoN,MAAM,CAACpoC,MAA9D;;AACA,eAAQ2F,CAAC,EAAT,EAAc;AACbmlC,UAAAA,KAAK,GAAG1C,MAAM,CAAEziC,CAAF,CAAd,CADa,CAGb;;AACA,cAAKy3B,IAAI,CAACwI,QAAL,CAAiBp9B,IAAI,GAAGsiC,KAAK,CAACtiC,IAA9B,CAAL,EAA8C;AAC7C;AACA;;AACD,cAAO3I,IAAI,GAAGu9B,IAAI,CAACv9B,IAAL,CAAW2I,IAAX,CAAd,EAAoC;AAEnC;AACA,gBAAOy4B,IAAI,GAAGphC,IAAI,CACjBirC,KAAK,CAACxb,OAAN,CAAe,CAAf,EAAmBliB,OAAnB,CAA4B4yB,SAA5B,EAAuCC,SAAvC,CADiB,EAEjBF,QAAQ,CAACn0B,IAAT,CAAew8B,MAAM,CAAE,CAAF,CAAN,CAAY5/B,IAA3B,KAAqCm5B,WAAW,CAAEx2B,OAAO,CAAC8f,UAAV,CAAhD,IACC9f,OAHgB,CAAlB,EAIM;AAEL;AACAi9B,cAAAA,MAAM,CAACpgC,MAAP,CAAerC,CAAf,EAAkB,CAAlB;AACAq1B,cAAAA,QAAQ,GAAGiG,IAAI,CAACjhC,MAAL,IAAe6hC,UAAU,CAAEuG,MAAF,CAApC;;AACA,kBAAK,CAACpN,QAAN,EAAiB;AAChBlzB,gBAAAA,IAAI,CAAC4C,KAAL,CAAYoC,OAAZ,EAAqBm0B,IAArB;AACA,uBAAOn0B,OAAP;AACA;;AAED;AACA;AACD;AACD;AACD,OA3DoE,CA6DrE;AACA;;;AACA,OAAEi+B,QAAQ,IAAIvN,OAAO,CAAExC,QAAF,EAAYlnB,KAAZ,CAArB,EACCmtB,IADD,EAEC91B,OAFD,EAGC,CAAC4yB,cAHF,EAICjxB,OAJD,EAKC,CAAC3B,OAAD,IAAY40B,QAAQ,CAACn0B,IAAT,CAAeovB,QAAf,KAA6B2G,WAAW,CAAEx2B,OAAO,CAAC8f,UAAV,CAApD,IAA8E9f,OAL/E;AAOA,aAAO2B,OAAP;AACA,KAvED,CAjwEqB,CA00ErB;AAEA;;;AACAotB,IAAAA,OAAO,CAACqL,UAAR,GAAqBtJ,OAAO,CAAC1yB,KAAR,CAAe,EAAf,EAAoBijB,IAApB,CAA0BkS,SAA1B,EAAsC7kB,IAAtC,CAA4C,EAA5C,MAAqDoiB,OAA1E,CA70EqB,CA+0ErB;AACA;;AACA/B,IAAAA,OAAO,CAACoL,gBAAR,GAA2B,CAAC,CAAC1H,YAA7B,CAj1EqB,CAm1ErB;;AACAC,IAAAA,WAAW,GAp1EU,CAs1ErB;AACA;;AACA3D,IAAAA,OAAO,CAACyK,YAAR,GAAuBtC,MAAM,CAAE,UAAU7iC,EAAV,EAAe;AAE7C;AACA,aAAOA,EAAE,CAAC+kC,uBAAH,CAA4Br2B,QAAQ,CAACC,aAAT,CAAwB,UAAxB,CAA5B,IAAqE,CAA5E;AACA,KAJ4B,CAA7B,CAx1EqB,CA81ErB;AACA;AACA;;AACA,QAAK,CAACk0B,MAAM,CAAE,UAAU7iC,EAAV,EAAe;AAC5BA,MAAAA,EAAE,CAACwkC,SAAH,GAAe,kBAAf;AACA,aAAOxkC,EAAE,CAACgmC,UAAH,CAAc9hB,YAAd,CAA4B,MAA5B,MAAyC,GAAhD;AACA,KAHW,CAAZ,EAGM;AACL4e,MAAAA,SAAS,CAAE,wBAAF,EAA4B,UAAUn5B,IAAV,EAAgB9B,IAAhB,EAAsBi2B,KAAtB,EAA8B;AAClE,YAAK,CAACA,KAAN,EAAc;AACb,iBAAOn0B,IAAI,CAACua,YAAL,CAAmBrc,IAAnB,EAAyBA,IAAI,CAACO,WAAL,OAAuB,MAAvB,GAAgC,CAAhC,GAAoC,CAA7D,CAAP;AACA;AACD,OAJQ,CAAT;AAKA,KA12EoB,CA42ErB;AACA;;;AACA,QAAK,CAACsyB,OAAO,CAACxB,UAAT,IAAuB,CAAC2J,MAAM,CAAE,UAAU7iC,EAAV,EAAe;AACnDA,MAAAA,EAAE,CAACwkC,SAAH,GAAe,UAAf;AACAxkC,MAAAA,EAAE,CAACgmC,UAAH,CAAc/sB,YAAd,CAA4B,OAA5B,EAAqC,EAArC;AACA,aAAOjZ,EAAE,CAACgmC,UAAH,CAAc9hB,YAAd,CAA4B,OAA5B,MAA0C,EAAjD;AACA,KAJkC,CAAnC,EAIM;AACL4e,MAAAA,SAAS,CAAE,OAAF,EAAW,UAAUn5B,IAAV,EAAgB6hC,KAAhB,EAAuB1N,KAAvB,EAA+B;AAClD,YAAK,CAACA,KAAD,IAAUn0B,IAAI,CAAC23B,QAAL,CAAcl5B,WAAd,OAAgC,OAA/C,EAAyD;AACxD,iBAAOuB,IAAI,CAAC8hC,YAAZ;AACA;AACD,OAJQ,CAAT;AAKA,KAx3EoB,CA03ErB;AACA;;;AACA,QAAK,CAAC5I,MAAM,CAAE,UAAU7iC,EAAV,EAAe;AAC5B,aAAOA,EAAE,CAACkkB,YAAH,CAAiB,UAAjB,KAAiC,IAAxC;AACA,KAFW,CAAZ,EAEM;AACL4e,MAAAA,SAAS,CAAExD,QAAF,EAAY,UAAU31B,IAAV,EAAgB9B,IAAhB,EAAsBi2B,KAAtB,EAA8B;AAClD,YAAInlB,GAAJ;;AACA,YAAK,CAACmlB,KAAN,EAAc;AACb,iBAAOn0B,IAAI,CAAE9B,IAAF,CAAJ,KAAiB,IAAjB,GAAwBA,IAAI,CAACO,WAAL,EAAxB,GACN,CAAEuQ,GAAG,GAAGhP,IAAI,CAAC06B,gBAAL,CAAuBx8B,IAAvB,CAAR,KAA2C8Q,GAAG,CAAC+sB,SAA/C,GACC/sB,GAAG,CAAC2G,KADL,GAEC,IAHF;AAIA;AACD,OARQ,CAAT;AASA;;AAED,WAAOqe,MAAP;AAEC,GA54ED,CA44EK78B,MA54EL,CAXA;;AA25EAy6B,EAAAA,MAAM,CAACl7B,IAAP,GAAcs9B,MAAd;AACApC,EAAAA,MAAM,CAACiK,IAAP,GAAc7H,MAAM,CAACuI,SAArB,CA/3FiF,CAi4FjF;;AACA3K,EAAAA,MAAM,CAACiK,IAAP,CAAa,GAAb,IAAqBjK,MAAM,CAACiK,IAAP,CAAY/F,OAAjC;AACAlE,EAAAA,MAAM,CAACqK,UAAP,GAAoBrK,MAAM,CAACmQ,MAAP,GAAgB/N,MAAM,CAACiI,UAA3C;AACArK,EAAAA,MAAM,CAAC7L,IAAP,GAAciO,MAAM,CAACE,OAArB;AACAtC,EAAAA,MAAM,CAACoQ,QAAP,GAAkBhO,MAAM,CAACG,KAAzB;AACAvC,EAAAA,MAAM,CAAC3pB,QAAP,GAAkB+rB,MAAM,CAAC/rB,QAAzB;AACA2pB,EAAAA,MAAM,CAACqQ,cAAP,GAAwBjO,MAAM,CAAC+C,MAA/B;;AAKA,MAAI/L,GAAG,GAAG,aAAUhrB,IAAV,EAAgBgrB,IAAhB,EAAqBkX,KAArB,EAA6B;AACtC,QAAIxa,OAAO,GAAG,EAAd;AAAA,QACCya,QAAQ,GAAGD,KAAK,KAAKlhB,SADtB;;AAGA,WAAQ,CAAEhhB,IAAI,GAAGA,IAAI,CAAEgrB,IAAF,CAAb,KAA0BhrB,IAAI,CAACixB,QAAL,KAAkB,CAApD,EAAwD;AACvD,UAAKjxB,IAAI,CAACixB,QAAL,KAAkB,CAAvB,EAA2B;AAC1B,YAAKkR,QAAQ,IAAIvQ,MAAM,CAAE5xB,IAAF,CAAN,CAAevG,EAAf,CAAmByoC,KAAnB,CAAjB,EAA8C;AAC7C;AACA;;AACDxa,QAAAA,OAAO,CAAC/oB,IAAR,CAAcqB,IAAd;AACA;AACD;;AACD,WAAO0nB,OAAP;AACA,GAbD;;AAgBA,MAAIrtB,SAAQ,GAAG,SAAXA,QAAW,CAAU+nC,CAAV,EAAapiC,IAAb,EAAoB;AAClC,QAAI0nB,OAAO,GAAG,EAAd;;AAEA,WAAQ0a,CAAR,EAAWA,CAAC,GAAGA,CAAC,CAAC90B,WAAjB,EAA+B;AAC9B,UAAK80B,CAAC,CAACnR,QAAF,KAAe,CAAf,IAAoBmR,CAAC,KAAKpiC,IAA/B,EAAsC;AACrC0nB,QAAAA,OAAO,CAAC/oB,IAAR,CAAcyjC,CAAd;AACA;AACD;;AAED,WAAO1a,OAAP;AACA,GAVD;;AAaA,MAAI2a,aAAa,GAAGzQ,MAAM,CAACiK,IAAP,CAAYlxB,KAAZ,CAAkB23B,YAAtC;;AAIA,WAAS3K,QAAT,CAAmB33B,IAAnB,EAAyB9B,IAAzB,EAAgC;AAE/B,WAAO8B,IAAI,CAAC23B,QAAL,IAAiB33B,IAAI,CAAC23B,QAAL,CAAcl5B,WAAd,OAAgCP,IAAI,CAACO,WAAL,EAAxD;AAEA;;AACD,MAAI8jC,UAAU,GAAK,iEAAnB,CAl7FiF,CAs7FjF;;AACA,WAASC,MAAT,CAAiB1G,QAAjB,EAA2B2G,SAA3B,EAAsChoC,GAAtC,EAA4C;AAC3C,QAAKu2B,UAAU,CAAEyR,SAAF,CAAf,EAA+B;AAC9B,aAAO7Q,MAAM,CAACU,IAAP,CAAawJ,QAAb,EAAuB,UAAU97B,IAAV,EAAgBxD,CAAhB,EAAoB;AACjD,eAAO,CAAC,CAACimC,SAAS,CAACrhC,IAAV,CAAgBpB,IAAhB,EAAsBxD,CAAtB,EAAyBwD,IAAzB,CAAF,KAAsCvF,GAA7C;AACA,OAFM,CAAP;AAGA,KAL0C,CAO3C;;;AACA,QAAKgoC,SAAS,CAACxR,QAAf,EAA0B;AACzB,aAAOW,MAAM,CAACU,IAAP,CAAawJ,QAAb,EAAuB,UAAU97B,IAAV,EAAiB;AAC9C,eAASA,IAAI,KAAKyiC,SAAX,KAA2BhoC,GAAlC;AACA,OAFM,CAAP;AAGA,KAZ0C,CAc3C;;;AACA,QAAK,OAAOgoC,SAAP,KAAqB,QAA1B,EAAqC;AACpC,aAAO7Q,MAAM,CAACU,IAAP,CAAawJ,QAAb,EAAuB,UAAU97B,IAAV,EAAiB;AAC9C,eAASlB,OAAO,CAACsC,IAAR,CAAcqhC,SAAd,EAAyBziC,IAAzB,IAAkC,CAAC,CAArC,KAA6CvF,GAApD;AACA,OAFM,CAAP;AAGA,KAnB0C,CAqB3C;;;AACA,WAAOm3B,MAAM,CAAC1xB,MAAP,CAAeuiC,SAAf,EAA0B3G,QAA1B,EAAoCrhC,GAApC,CAAP;AACA;;AAEDm3B,EAAAA,MAAM,CAAC1xB,MAAP,GAAgB,UAAU27B,IAAV,EAAgB3J,KAAhB,EAAuBz3B,GAAvB,EAA6B;AAC5C,QAAIuF,IAAI,GAAGkyB,KAAK,CAAE,CAAF,CAAhB;;AAEA,QAAKz3B,GAAL,EAAW;AACVohC,MAAAA,IAAI,GAAG,UAAUA,IAAV,GAAiB,GAAxB;AACA;;AAED,QAAK3J,KAAK,CAACr7B,MAAN,KAAiB,CAAjB,IAAsBmJ,IAAI,CAACixB,QAAL,KAAkB,CAA7C,EAAiD;AAChD,aAAOW,MAAM,CAACl7B,IAAP,CAAYokC,eAAZ,CAA6B96B,IAA7B,EAAmC67B,IAAnC,IAA4C,CAAE77B,IAAF,CAA5C,GAAuD,EAA9D;AACA;;AAED,WAAO4xB,MAAM,CAACl7B,IAAP,CAAYyvB,OAAZ,CAAqB0V,IAArB,EAA2BjK,MAAM,CAACU,IAAP,CAAaJ,KAAb,EAAoB,UAAUlyB,IAAV,EAAiB;AACtE,aAAOA,IAAI,CAACixB,QAAL,KAAkB,CAAzB;AACA,KAFiC,CAA3B,CAAP;AAGA,GAdD;;AAgBAW,EAAAA,MAAM,CAAClwB,EAAP,CAAUhM,MAAV,CAAkB;AACjBgB,IAAAA,IAAI,EAAE,cAAUm7B,QAAV,EAAqB;AAC1B,UAAIr1B,CAAJ;AAAA,UAAOurB,GAAP;AAAA,UACCxL,GAAG,GAAG,KAAK1lB,MADZ;AAAA,UAEC4rB,IAAI,GAAG,IAFR;;AAIA,UAAK,OAAOoP,QAAP,KAAoB,QAAzB,EAAoC;AACnC,eAAO,KAAKI,SAAL,CAAgBL,MAAM,CAAEC,QAAF,CAAN,CAAmB3xB,MAAnB,CAA2B,YAAW;AAC5D,eAAM1D,CAAC,GAAG,CAAV,EAAaA,CAAC,GAAG+f,GAAjB,EAAsB/f,CAAC,EAAvB,EAA4B;AAC3B,gBAAKo1B,MAAM,CAAC3pB,QAAP,CAAiBwa,IAAI,CAAEjmB,CAAF,CAArB,EAA4B,IAA5B,CAAL,EAA0C;AACzC,qBAAO,IAAP;AACA;AACD;AACD,SANsB,CAAhB,CAAP;AAOA;;AAEDurB,MAAAA,GAAG,GAAG,KAAKkK,SAAL,CAAgB,EAAhB,CAAN;;AAEA,WAAMz1B,CAAC,GAAG,CAAV,EAAaA,CAAC,GAAG+f,GAAjB,EAAsB/f,CAAC,EAAvB,EAA4B;AAC3Bo1B,QAAAA,MAAM,CAACl7B,IAAP,CAAam7B,QAAb,EAAuBpP,IAAI,CAAEjmB,CAAF,CAA3B,EAAkCurB,GAAlC;AACA;;AAED,aAAOxL,GAAG,GAAG,CAAN,GAAUqV,MAAM,CAACqK,UAAP,CAAmBlU,GAAnB,CAAV,GAAqCA,GAA5C;AACA,KAvBgB;AAwBjB7nB,IAAAA,MAAM,EAAE,gBAAU2xB,QAAV,EAAqB;AAC5B,aAAO,KAAKI,SAAL,CAAgBuQ,MAAM,CAAE,IAAF,EAAQ3Q,QAAQ,IAAI,EAApB,EAAwB,KAAxB,CAAtB,CAAP;AACA,KA1BgB;AA2BjBp3B,IAAAA,GAAG,EAAE,aAAUo3B,QAAV,EAAqB;AACzB,aAAO,KAAKI,SAAL,CAAgBuQ,MAAM,CAAE,IAAF,EAAQ3Q,QAAQ,IAAI,EAApB,EAAwB,IAAxB,CAAtB,CAAP;AACA,KA7BgB;AA8BjBp4B,IAAAA,EAAE,EAAE,YAAUo4B,QAAV,EAAqB;AACxB,aAAO,CAAC,CAAC2Q,MAAM,CACd,IADc,EAGd;AACA;AACA,aAAO3Q,QAAP,KAAoB,QAApB,IAAgCwQ,aAAa,CAAC5/B,IAAd,CAAoBovB,QAApB,CAAhC,GACCD,MAAM,CAAEC,QAAF,CADP,GAECA,QAAQ,IAAI,EAPC,EAQd,KARc,CAAN,CASPh7B,MATF;AAUA;AAzCgB,GAAlB,EAh+FiF,CA6gGjF;AAGA;;AACA,MAAI6rC,UAAJ;AAAA,MAEC;AACA;AACA;AACA;AACA/L,EAAAA,UAAU,GAAG,qCANd;AAAA,MAQCxsB,IAAI,GAAGynB,MAAM,CAAClwB,EAAP,CAAUyI,IAAV,GAAiB,UAAU0nB,QAAV,EAAoB7vB,OAApB,EAA6B2gC,IAA7B,EAAoC;AAC3D,QAAIh4B,KAAJ,EAAW3K,IAAX,CAD2D,CAG3D;;AACA,QAAK,CAAC6xB,QAAN,EAAiB;AAChB,aAAO,IAAP;AACA,KAN0D,CAQ3D;AACA;;;AACA8Q,IAAAA,IAAI,GAAGA,IAAI,IAAID,UAAf,CAV2D,CAY3D;;AACA,QAAK,OAAO7Q,QAAP,KAAoB,QAAzB,EAAoC;AACnC,UAAKA,QAAQ,CAAE,CAAF,CAAR,KAAkB,GAAlB,IACJA,QAAQ,CAAEA,QAAQ,CAACh7B,MAAT,GAAkB,CAApB,CAAR,KAAoC,GADhC,IAEJg7B,QAAQ,CAACh7B,MAAT,IAAmB,CAFpB,EAEwB;AAEvB;AACA8T,QAAAA,KAAK,GAAG,CAAE,IAAF,EAAQknB,QAAR,EAAkB,IAAlB,CAAR;AAEA,OAPD,MAOO;AACNlnB,QAAAA,KAAK,GAAGgsB,UAAU,CAAC/yB,IAAX,CAAiBiuB,QAAjB,CAAR;AACA,OAVkC,CAYnC;;;AACA,UAAKlnB,KAAK,KAAMA,KAAK,CAAE,CAAF,CAAL,IAAc,CAAC3I,OAArB,CAAV,EAA2C;AAE1C;AACA,YAAK2I,KAAK,CAAE,CAAF,CAAV,EAAkB;AACjB3I,UAAAA,OAAO,GAAGA,OAAO,YAAY4vB,MAAnB,GAA4B5vB,OAAO,CAAE,CAAF,CAAnC,GAA2CA,OAArD,CADiB,CAGjB;AACA;;AACA4vB,UAAAA,MAAM,CAACO,KAAP,CAAc,IAAd,EAAoBP,MAAM,CAACgR,SAAP,CACnBj4B,KAAK,CAAE,CAAF,CADc,EAEnB3I,OAAO,IAAIA,OAAO,CAACivB,QAAnB,GAA8BjvB,OAAO,CAACo2B,aAAR,IAAyBp2B,OAAvD,GAAiE+C,QAF9C,EAGnB,IAHmB,CAApB,EALiB,CAWjB;;AACA,cAAKw9B,UAAU,CAAC9/B,IAAX,CAAiBkI,KAAK,CAAE,CAAF,CAAtB,KAAiCinB,MAAM,CAACiB,aAAP,CAAsB7wB,OAAtB,CAAtC,EAAwE;AACvE,iBAAM2I,KAAN,IAAe3I,OAAf,EAAyB;AAExB;AACA,kBAAKgvB,UAAU,CAAE,KAAMrmB,KAAN,CAAF,CAAf,EAAmC;AAClC,qBAAMA,KAAN,EAAe3I,OAAO,CAAE2I,KAAF,CAAtB,EADkC,CAGnC;AACC,eAJD,MAIO;AACN,qBAAKhU,IAAL,CAAWgU,KAAX,EAAkB3I,OAAO,CAAE2I,KAAF,CAAzB;AACA;AACD;AACD;;AAED,iBAAO,IAAP,CA1BiB,CA4BlB;AACC,SA7BD,MA6BO;AACN3K,UAAAA,IAAI,GAAG+E,QAAQ,CAACszB,cAAT,CAAyB1tB,KAAK,CAAE,CAAF,CAA9B,CAAP;;AAEA,cAAK3K,IAAL,EAAY;AAEX;AACA,iBAAM,CAAN,IAAYA,IAAZ;AACA,iBAAKnJ,MAAL,GAAc,CAAd;AACA;;AACD,iBAAO,IAAP;AACA,SA1CyC,CA4C3C;;AACC,OA7CD,MA6CO,IAAK,CAACmL,OAAD,IAAYA,OAAO,CAAC8vB,MAAzB,EAAkC;AACxC,eAAO,CAAE9vB,OAAO,IAAI2gC,IAAb,EAAoBjsC,IAApB,CAA0Bm7B,QAA1B,CAAP,CADwC,CAGzC;AACA;AACC,OALM,MAKA;AACN,eAAO,KAAKrzB,WAAL,CAAkBwD,OAAlB,EAA4BtL,IAA5B,CAAkCm7B,QAAlC,CAAP;AACA,OAjEkC,CAmEpC;;AACC,KApED,MAoEO,IAAKA,QAAQ,CAACZ,QAAd,EAAyB;AAC/B,WAAM,CAAN,IAAYY,QAAZ;AACA,WAAKh7B,MAAL,GAAc,CAAd;AACA,aAAO,IAAP,CAH+B,CAKhC;AACA;AACC,KAPM,MAOA,IAAKm6B,UAAU,CAAEa,QAAF,CAAf,EAA8B;AACpC,aAAO8Q,IAAI,CAACE,KAAL,KAAe7hB,SAAf,GACN2hB,IAAI,CAACE,KAAL,CAAYhR,QAAZ,CADM,GAGN;AACAA,MAAAA,QAAQ,CAAED,MAAF,CAJT;AAKA;;AAED,WAAOA,MAAM,CAACyB,SAAP,CAAkBxB,QAAlB,EAA4B,IAA5B,CAAP;AACA,GAzGF,CAjhGiF,CA4nGjF;;;AACA1nB,EAAAA,IAAI,CAACjJ,SAAL,GAAiB0wB,MAAM,CAAClwB,EAAxB,CA7nGiF,CA+nGjF;;AACAghC,EAAAA,UAAU,GAAG9Q,MAAM,CAAE7sB,QAAF,CAAnB;AAGA,MAAI+9B,YAAY,GAAG,gCAAnB;AAAA,MAEC;AACAC,EAAAA,gBAAgB,GAAG;AAClB7sC,IAAAA,QAAQ,EAAE,IADQ;AAElB8sC,IAAAA,QAAQ,EAAE,IAFQ;AAGlBjqC,IAAAA,IAAI,EAAE,IAHY;AAIlBhC,IAAAA,IAAI,EAAE;AAJY,GAHpB;AAUA66B,EAAAA,MAAM,CAAClwB,EAAP,CAAUhM,MAAV,CAAkB;AACjB6Q,IAAAA,GAAG,EAAE,aAAUC,MAAV,EAAmB;AACvB,UAAIy8B,OAAO,GAAGrR,MAAM,CAAEprB,MAAF,EAAU,IAAV,CAApB;AAAA,UACC08B,CAAC,GAAGD,OAAO,CAACpsC,MADb;AAGA,aAAO,KAAKqJ,MAAL,CAAa,YAAW;AAC9B,YAAI1D,CAAC,GAAG,CAAR;;AACA,eAAQA,CAAC,GAAG0mC,CAAZ,EAAe1mC,CAAC,EAAhB,EAAqB;AACpB,cAAKo1B,MAAM,CAAC3pB,QAAP,CAAiB,IAAjB,EAAuBg7B,OAAO,CAAEzmC,CAAF,CAA9B,CAAL,EAA6C;AAC5C,mBAAO,IAAP;AACA;AACD;AACD,OAPM,CAAP;AAQA,KAbgB;AAejBhD,IAAAA,OAAO,EAAE,iBAAU+iC,SAAV,EAAqBv6B,OAArB,EAA+B;AACvC,UAAIu3B,GAAJ;AAAA,UACC/8B,CAAC,GAAG,CADL;AAAA,UAEC0mC,CAAC,GAAG,KAAKrsC,MAFV;AAAA,UAGC6wB,OAAO,GAAG,EAHX;AAAA,UAICub,OAAO,GAAG,OAAO1G,SAAP,KAAqB,QAArB,IAAiC3K,MAAM,CAAE2K,SAAF,CAJlD,CADuC,CAOvC;;AACA,UAAK,CAAC8F,aAAa,CAAC5/B,IAAd,CAAoB85B,SAApB,CAAN,EAAwC;AACvC,eAAQ//B,CAAC,GAAG0mC,CAAZ,EAAe1mC,CAAC,EAAhB,EAAqB;AACpB,eAAM+8B,GAAG,GAAG,KAAM/8B,CAAN,CAAZ,EAAuB+8B,GAAG,IAAIA,GAAG,KAAKv3B,OAAtC,EAA+Cu3B,GAAG,GAAGA,GAAG,CAACzX,UAAzD,EAAsE;AAErE;AACA,gBAAKyX,GAAG,CAACtI,QAAJ,GAAe,EAAf,KAAuBgS,OAAO,GAClCA,OAAO,CAAC95B,KAAR,CAAeowB,GAAf,IAAuB,CAAC,CADU,GAGlC;AACAA,YAAAA,GAAG,CAACtI,QAAJ,KAAiB,CAAjB,IACCW,MAAM,CAACl7B,IAAP,CAAYokC,eAAZ,CAA6BvB,GAA7B,EAAkCgD,SAAlC,CALG,CAAL,EAKoD;AAEnD7U,cAAAA,OAAO,CAAC/oB,IAAR,CAAc46B,GAAd;AACA;AACA;AACD;AACD;AACD;;AAED,aAAO,KAAKtH,SAAL,CAAgBvK,OAAO,CAAC7wB,MAAR,GAAiB,CAAjB,GAAqB+6B,MAAM,CAACqK,UAAP,CAAmBvU,OAAnB,CAArB,GAAoDA,OAApE,CAAP;AACA,KA3CgB;AA6CjB;AACAve,IAAAA,KAAK,EAAE,eAAUnJ,IAAV,EAAiB;AAEvB;AACA,UAAK,CAACA,IAAN,EAAa;AACZ,eAAS,KAAM,CAAN,KAAa,KAAM,CAAN,EAAU8hB,UAAzB,GAAwC,KAAK1oB,KAAL,GAAa+pC,OAAb,GAAuBtsC,MAA/D,GAAwE,CAAC,CAAhF;AACA,OALsB,CAOvB;;;AACA,UAAK,OAAOmJ,IAAP,KAAgB,QAArB,EAAgC;AAC/B,eAAOlB,OAAO,CAACsC,IAAR,CAAcwwB,MAAM,CAAE5xB,IAAF,CAApB,EAA8B,KAAM,CAAN,CAA9B,CAAP;AACA,OAVsB,CAYvB;;;AACA,aAAOlB,OAAO,CAACsC,IAAR,CAAc,IAAd,EAEN;AACApB,MAAAA,IAAI,CAAC8xB,MAAL,GAAc9xB,IAAI,CAAE,CAAF,CAAlB,GAA0BA,IAHpB,CAAP;AAKA,KAhEgB;AAkEjB5C,IAAAA,GAAG,EAAE,aAAUy0B,QAAV,EAAoB7vB,OAApB,EAA8B;AAClC,aAAO,KAAKiwB,SAAL,CACNL,MAAM,CAACqK,UAAP,CACCrK,MAAM,CAACO,KAAP,CAAc,KAAK1b,GAAL,EAAd,EAA0Bmb,MAAM,CAAEC,QAAF,EAAY7vB,OAAZ,CAAhC,CADD,CADM,CAAP;AAKA,KAxEgB;AA0EjB/B,IAAAA,OAAO,EAAE,iBAAU4xB,QAAV,EAAqB;AAC7B,aAAO,KAAKz0B,GAAL,CAAUy0B,QAAQ,IAAI,IAAZ,GAChB,KAAKO,UADW,GACE,KAAKA,UAAL,CAAgBlyB,MAAhB,CAAwB2xB,QAAxB,CADZ,CAAP;AAGA;AA9EgB,GAAlB;;AAiFA,WAASuR,OAAT,CAAkB7J,GAAlB,EAAuBvO,GAAvB,EAA6B;AAC5B,WAAQ,CAAEuO,GAAG,GAAGA,GAAG,CAAEvO,GAAF,CAAX,KAAwBuO,GAAG,CAACtI,QAAJ,KAAiB,CAAjD,EAAqD,CAAE;;AACvD,WAAOsI,GAAP;AACA;;AAED3H,EAAAA,MAAM,CAACz7B,IAAP,CAAa;AACZsB,IAAAA,MAAM,EAAE,gBAAUuI,IAAV,EAAiB;AACxB,UAAIvI,MAAM,GAAGuI,IAAI,CAAC8hB,UAAlB;AACA,aAAOrqB,MAAM,IAAIA,MAAM,CAACw5B,QAAP,KAAoB,EAA9B,GAAmCx5B,MAAnC,GAA4C,IAAnD;AACA,KAJW;AAKZoF,IAAAA,OAAO,EAAE,iBAAUmD,IAAV,EAAiB;AACzB,aAAOgrB,GAAG,CAAEhrB,IAAF,EAAQ,YAAR,CAAV;AACA,KAPW;AAQZ7C,IAAAA,YAAY,EAAE,sBAAU6C,IAAV,EAAgB+zB,EAAhB,EAAoBmO,KAApB,EAA4B;AACzC,aAAOlX,GAAG,CAAEhrB,IAAF,EAAQ,YAAR,EAAsBkiC,KAAtB,CAAV;AACA,KAVW;AAWZnpC,IAAAA,IAAI,EAAE,cAAUiH,IAAV,EAAiB;AACtB,aAAOojC,OAAO,CAAEpjC,IAAF,EAAQ,aAAR,CAAd;AACA,KAbW;AAcZjJ,IAAAA,IAAI,EAAE,cAAUiJ,IAAV,EAAiB;AACtB,aAAOojC,OAAO,CAAEpjC,IAAF,EAAQ,iBAAR,CAAd;AACA,KAhBW;AAiBZqjC,IAAAA,OAAO,EAAE,iBAAUrjC,IAAV,EAAiB;AACzB,aAAOgrB,GAAG,CAAEhrB,IAAF,EAAQ,aAAR,CAAV;AACA,KAnBW;AAoBZmjC,IAAAA,OAAO,EAAE,iBAAUnjC,IAAV,EAAiB;AACzB,aAAOgrB,GAAG,CAAEhrB,IAAF,EAAQ,iBAAR,CAAV;AACA,KAtBW;AAuBZsjC,IAAAA,SAAS,EAAE,mBAAUtjC,IAAV,EAAgB+zB,EAAhB,EAAoBmO,KAApB,EAA4B;AACtC,aAAOlX,GAAG,CAAEhrB,IAAF,EAAQ,aAAR,EAAuBkiC,KAAvB,CAAV;AACA,KAzBW;AA0BZqB,IAAAA,SAAS,EAAE,mBAAUvjC,IAAV,EAAgB+zB,EAAhB,EAAoBmO,KAApB,EAA4B;AACtC,aAAOlX,GAAG,CAAEhrB,IAAF,EAAQ,iBAAR,EAA2BkiC,KAA3B,CAAV;AACA,KA5BW;AA6BZ7nC,IAAAA,QAAQ,EAAE,kBAAU2F,IAAV,EAAiB;AAC1B,aAAO3F,SAAQ,CAAE,CAAE2F,IAAI,CAAC8hB,UAAL,IAAmB,EAArB,EAA0Bua,UAA5B,EAAwCr8B,IAAxC,CAAf;AACA,KA/BW;AAgCZ9J,IAAAA,QAAQ,EAAE,kBAAU8J,IAAV,EAAiB;AAC1B,aAAO3F,SAAQ,CAAE2F,IAAI,CAACq8B,UAAP,CAAf;AACA,KAlCW;AAmCZ2G,IAAAA,QAAQ,EAAE,kBAAUhjC,IAAV,EAAiB;AAC1B,UAAKA,IAAI,CAACwjC,eAAL,IAAwB,IAAxB,IAEJ;AACA;AACA;AACAhT,MAAAA,QAAQ,CAAExwB,IAAI,CAACwjC,eAAP,CALT,EAKoC;AAEnC,eAAOxjC,IAAI,CAACwjC,eAAZ;AACA,OATyB,CAW1B;AACA;AACA;;;AACA,UAAK7L,QAAQ,CAAE33B,IAAF,EAAQ,UAAR,CAAb,EAAoC;AACnCA,QAAAA,IAAI,GAAGA,IAAI,CAACyjC,OAAL,IAAgBzjC,IAAvB;AACA;;AAED,aAAO4xB,MAAM,CAACO,KAAP,CAAc,EAAd,EAAkBnyB,IAAI,CAAC43B,UAAvB,CAAP;AACA;AAtDW,GAAb,EAuDG,UAAU15B,IAAV,EAAgBwD,EAAhB,EAAqB;AACvBkwB,IAAAA,MAAM,CAAClwB,EAAP,CAAWxD,IAAX,IAAoB,UAAUgkC,KAAV,EAAiBrQ,QAAjB,EAA4B;AAC/C,UAAInK,OAAO,GAAGkK,MAAM,CAACpxB,GAAP,CAAY,IAAZ,EAAkBkB,EAAlB,EAAsBwgC,KAAtB,CAAd;;AAEA,UAAKhkC,IAAI,CAACiD,KAAL,CAAY,CAAC,CAAb,MAAqB,OAA1B,EAAoC;AACnC0wB,QAAAA,QAAQ,GAAGqQ,KAAX;AACA;;AAED,UAAKrQ,QAAQ,IAAI,OAAOA,QAAP,KAAoB,QAArC,EAAgD;AAC/CnK,QAAAA,OAAO,GAAGkK,MAAM,CAAC1xB,MAAP,CAAe2xB,QAAf,EAAyBnK,OAAzB,CAAV;AACA;;AAED,UAAK,KAAK7wB,MAAL,GAAc,CAAnB,EAAuB;AAEtB;AACA,YAAK,CAACksC,gBAAgB,CAAE7kC,IAAF,CAAtB,EAAiC;AAChC0zB,UAAAA,MAAM,CAACqK,UAAP,CAAmBvU,OAAnB;AACA,SALqB,CAOtB;;;AACA,YAAKob,YAAY,CAACrgC,IAAb,CAAmBvE,IAAnB,CAAL,EAAiC;AAChCwpB,UAAAA,OAAO,CAAC1L,OAAR;AACA;AACD;;AAED,aAAO,KAAKiW,SAAL,CAAgBvK,OAAhB,CAAP;AACA,KAzBD;AA0BA,GAlFD;AAmFA,MAAIgc,aAAa,GAAK,mBAAtB,CAtzGiF,CA0zGjF;;AACA,WAASC,aAAT,CAAwBnuC,OAAxB,EAAkC;AACjC,QAAIouC,MAAM,GAAG,EAAb;AACAhS,IAAAA,MAAM,CAACz7B,IAAP,CAAaX,OAAO,CAACmV,KAAR,CAAe+4B,aAAf,KAAkC,EAA/C,EAAmD,UAAU/yB,CAAV,EAAakzB,IAAb,EAAoB;AACtED,MAAAA,MAAM,CAAEC,IAAF,CAAN,GAAiB,IAAjB;AACA,KAFD;AAGA,WAAOD,MAAP;AACA;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AACAhS,EAAAA,MAAM,CAACkS,SAAP,GAAmB,UAAUtuC,OAAV,EAAoB;AAEtC;AACA;AACAA,IAAAA,OAAO,GAAG,OAAOA,OAAP,KAAmB,QAAnB,GACTmuC,aAAa,CAAEnuC,OAAF,CADJ,GAETo8B,MAAM,CAACl8B,MAAP,CAAe,EAAf,EAAmBF,OAAnB,CAFD;;AAIA,QAAI;AACHuuC,IAAAA,MADD;AAAA,QAGC;AACAC,IAAAA,MAJD;AAAA,QAMC;AACAC,IAAAA,MAPD;AAAA,QASC;AACAC,IAAAA,OAVD;AAAA,QAYC;AACAxO,IAAAA,IAAI,GAAG,EAbR;AAAA,QAeC;AACAyO,IAAAA,KAAK,GAAG,EAhBT;AAAA,QAkBC;AACAC,IAAAA,WAAW,GAAG,CAAC,CAnBhB;AAAA,QAqBC;AACAC,IAAAA,IAAI,GAAG,SAAPA,IAAO,GAAW;AAEjB;AACAH,MAAAA,OAAM,GAAGA,OAAM,IAAI1uC,OAAO,CAAC8uC,IAA3B,CAHiB,CAKjB;AACA;;AACAL,MAAAA,MAAK,GAAGF,MAAM,GAAG,IAAjB;;AACA,aAAQI,KAAK,CAACttC,MAAd,EAAsButC,WAAW,GAAG,CAAC,CAArC,EAAyC;AACxCJ,QAAAA,MAAM,GAAGG,KAAK,CAACnL,KAAN,EAAT;;AACA,eAAQ,EAAEoL,WAAF,GAAgB1O,IAAI,CAAC7+B,MAA7B,EAAsC;AAErC;AACA,cAAK6+B,IAAI,CAAE0O,WAAF,CAAJ,CAAoB7iC,KAApB,CAA2ByiC,MAAM,CAAE,CAAF,CAAjC,EAAwCA,MAAM,CAAE,CAAF,CAA9C,MAA0D,KAA1D,IACJxuC,OAAO,CAAC+uC,WADT,EACuB;AAEtB;AACAH,YAAAA,WAAW,GAAG1O,IAAI,CAAC7+B,MAAnB;AACAmtC,YAAAA,MAAM,GAAG,KAAT;AACA;AACD;AACD,OArBgB,CAuBjB;;;AACA,UAAK,CAACxuC,OAAO,CAACwuC,MAAd,EAAuB;AACtBA,QAAAA,MAAM,GAAG,KAAT;AACA;;AAEDD,MAAAA,MAAM,GAAG,KAAT,CA5BiB,CA8BjB;;AACA,UAAKG,OAAL,EAAc;AAEb;AACA,YAAKF,MAAL,EAAc;AACbtO,UAAAA,IAAI,GAAG,EAAP,CADa,CAGd;AACC,SAJD,MAIO;AACNA,UAAAA,IAAI,GAAG,EAAP;AACA;AACD;AACD,KAhEF;AAAA,QAkEC;AACAjT,IAAAA,IAAI,GAAG;AAEN;AACArlB,MAAAA,GAAG,EAAE,eAAW;AACf,YAAKs4B,IAAL,EAAY;AAEX;AACA,cAAKsO,MAAM,IAAI,CAACD,MAAhB,EAAyB;AACxBK,YAAAA,WAAW,GAAG1O,IAAI,CAAC7+B,MAAL,GAAc,CAA5B;AACAstC,YAAAA,KAAK,CAACxlC,IAAN,CAAYqlC,MAAZ;AACA;;AAED,WAAE,SAAS5mC,GAAT,CAAc4D,IAAd,EAAqB;AACtB4wB,YAAAA,MAAM,CAACz7B,IAAP,CAAa6K,IAAb,EAAmB,UAAU2P,CAAV,EAAagjB,GAAb,EAAmB;AACrC,kBAAK3C,UAAU,CAAE2C,GAAF,CAAf,EAAyB;AACxB,oBAAK,CAACn+B,OAAO,CAACusC,MAAT,IAAmB,CAACtf,IAAI,CAAClc,GAAL,CAAUotB,GAAV,CAAzB,EAA2C;AAC1C+B,kBAAAA,IAAI,CAAC/2B,IAAL,CAAWg1B,GAAX;AACA;AACD,eAJD,MAIO,IAAKA,GAAG,IAAIA,GAAG,CAAC98B,MAAX,IAAqB86B,MAAM,CAAEgC,GAAF,CAAN,KAAkB,QAA5C,EAAuD;AAE7D;AACAv2B,gBAAAA,GAAG,CAAEu2B,GAAF,CAAH;AACA;AACD,aAVD;AAWA,WAZD,EAYKtyB,SAZL;;AAcA,cAAK2iC,MAAM,IAAI,CAACD,MAAhB,EAAyB;AACxBM,YAAAA,IAAI;AACJ;AACD;;AACD,eAAO,IAAP;AACA,OA/BK;AAiCN;AACA5mC,MAAAA,MAAM,EAAE,kBAAW;AAClBm0B,QAAAA,MAAM,CAACz7B,IAAP,CAAakL,SAAb,EAAwB,UAAUsP,CAAV,EAAagjB,GAAb,EAAmB;AAC1C,cAAIxqB,KAAJ;;AACA,iBAAQ,CAAEA,KAAK,GAAGyoB,MAAM,CAAC0B,OAAP,CAAgBK,GAAhB,EAAqB+B,IAArB,EAA2BvsB,KAA3B,CAAV,IAAiD,CAAC,CAA1D,EAA8D;AAC7DusB,YAAAA,IAAI,CAAC72B,MAAL,CAAasK,KAAb,EAAoB,CAApB,EAD6D,CAG7D;;AACA,gBAAKA,KAAK,IAAIi7B,WAAd,EAA4B;AAC3BA,cAAAA,WAAW;AACX;AACD;AACD,SAVD;AAWA,eAAO,IAAP;AACA,OA/CK;AAiDN;AACA;AACA79B,MAAAA,GAAG,EAAE,aAAU7E,EAAV,EAAe;AACnB,eAAOA,EAAE,GACRkwB,MAAM,CAAC0B,OAAP,CAAgB5xB,EAAhB,EAAoBg0B,IAApB,IAA6B,CAAC,CADtB,GAERA,IAAI,CAAC7+B,MAAL,GAAc,CAFf;AAGA,OAvDK;AAyDN;AACA2tC,MAAAA,KAAK,EAAE,iBAAW;AACjB,YAAK9O,IAAL,EAAY;AACXA,UAAAA,IAAI,GAAG,EAAP;AACA;;AACD,eAAO,IAAP;AACA,OA/DK;AAiEN;AACA;AACA;AACA+O,MAAAA,OAAO,EAAE,mBAAW;AACnBP,QAAAA,OAAM,GAAGC,KAAK,GAAG,EAAjB;AACAzO,QAAAA,IAAI,GAAGsO,MAAM,GAAG,EAAhB;AACA,eAAO,IAAP;AACA,OAxEK;AAyENtM,MAAAA,QAAQ,EAAE,oBAAW;AACpB,eAAO,CAAChC,IAAR;AACA,OA3EK;AA6EN;AACA;AACA;AACAgP,MAAAA,IAAI,EAAE,gBAAW;AAChBR,QAAAA,OAAM,GAAGC,KAAK,GAAG,EAAjB;;AACA,YAAK,CAACH,MAAD,IAAW,CAACD,MAAjB,EAA0B;AACzBrO,UAAAA,IAAI,GAAGsO,MAAM,GAAG,EAAhB;AACA;;AACD,eAAO,IAAP;AACA,OAtFK;AAuFNE,MAAAA,MAAM,EAAE,kBAAW;AAClB,eAAO,CAAC,CAACA,OAAT;AACA,OAzFK;AA2FN;AACAS,MAAAA,QAAQ,EAAE,kBAAU3iC,OAAV,EAAmBhB,IAAnB,EAA0B;AACnC,YAAK,CAACkjC,OAAN,EAAe;AACdljC,UAAAA,IAAI,GAAGA,IAAI,IAAI,EAAf;AACAA,UAAAA,IAAI,GAAG,CAAEgB,OAAF,EAAWhB,IAAI,CAACG,KAAL,GAAaH,IAAI,CAACG,KAAL,EAAb,GAA4BH,IAAvC,CAAP;AACAmjC,UAAAA,KAAK,CAACxlC,IAAN,CAAYqC,IAAZ;;AACA,cAAK,CAAC+iC,MAAN,EAAe;AACdM,YAAAA,IAAI;AACJ;AACD;;AACD,eAAO,IAAP;AACA,OAtGK;AAwGN;AACAA,MAAAA,IAAI,EAAE,gBAAW;AAChB5hB,QAAAA,IAAI,CAACkiB,QAAL,CAAe,IAAf,EAAqBtjC,SAArB;AACA,eAAO,IAAP;AACA,OA5GK;AA8GN;AACA4iC,MAAAA,KAAK,EAAE,iBAAW;AACjB,eAAO,CAAC,CAACA,MAAT;AACA;AAjHK,KAnER;;AAuLA,WAAOxhB,IAAP;AACA,GAhMD;;AAmMA,WAASmiB,QAAT,CAAmBC,CAAnB,EAAuB;AACtB,WAAOA,CAAP;AACA;;AACD,WAASC,OAAT,CAAkBC,EAAlB,EAAuB;AACtB,UAAMA,EAAN;AACA;;AAED,WAASC,UAAT,CAAqBrvB,KAArB,EAA4BsvB,OAA5B,EAAqCC,MAArC,EAA6CC,OAA7C,EAAuD;AACtD,QAAIrkC,MAAJ;;AAEA,QAAI;AAEH;AACA,UAAK6U,KAAK,IAAIqb,UAAU,CAAIlwB,MAAM,GAAG6U,KAAK,CAACyvB,OAAnB,CAAxB,EAAyD;AACxDtkC,QAAAA,MAAM,CAACM,IAAP,CAAauU,KAAb,EAAqBsf,IAArB,CAA2BgQ,OAA3B,EAAqCI,IAArC,CAA2CH,MAA3C,EADwD,CAGzD;AACC,OAJD,MAIO,IAAKvvB,KAAK,IAAIqb,UAAU,CAAIlwB,MAAM,GAAG6U,KAAK,CAAC2vB,IAAnB,CAAxB,EAAsD;AAC5DxkC,QAAAA,MAAM,CAACM,IAAP,CAAauU,KAAb,EAAoBsvB,OAApB,EAA6BC,MAA7B,EAD4D,CAG7D;AACC,OAJM,MAIA;AAEN;AACA;AACA;AACAD,QAAAA,OAAO,CAAC1jC,KAAR,CAAeyf,SAAf,EAA0B,CAAErL,KAAF,EAAUxU,KAAV,CAAiBgkC,OAAjB,CAA1B;AACA,OAjBE,CAmBJ;AACA;AACA;;AACC,KAtBD,CAsBE,OAAQxvB,KAAR,EAAgB;AAEjB;AACA;AACAuvB,MAAAA,MAAM,CAAC3jC,KAAP,CAAcyf,SAAd,EAAyB,CAAErL,KAAF,CAAzB;AACA;AACD;;AAEDic,EAAAA,MAAM,CAACl8B,MAAP,CAAe;AAEd6vC,IAAAA,QAAQ,EAAE,kBAAU1jC,IAAV,EAAiB;AAC1B,UAAI2jC,MAAM,GAAG,CAEX;AACA;AACA,OAAE,QAAF,EAAY,UAAZ,EAAwB5T,MAAM,CAACkS,SAAP,CAAkB,QAAlB,CAAxB,EACClS,MAAM,CAACkS,SAAP,CAAkB,QAAlB,CADD,EAC+B,CAD/B,CAJW,EAMX,CAAE,SAAF,EAAa,MAAb,EAAqBlS,MAAM,CAACkS,SAAP,CAAkB,aAAlB,CAArB,EACClS,MAAM,CAACkS,SAAP,CAAkB,aAAlB,CADD,EACoC,CADpC,EACuC,UADvC,CANW,EAQX,CAAE,QAAF,EAAY,MAAZ,EAAoBlS,MAAM,CAACkS,SAAP,CAAkB,aAAlB,CAApB,EACClS,MAAM,CAACkS,SAAP,CAAkB,aAAlB,CADD,EACoC,CADpC,EACuC,UADvC,CARW,CAAb;AAAA,UAWC2B,MAAK,GAAG,SAXT;AAAA,UAYCL,QAAO,GAAG;AACTK,QAAAA,KAAK,EAAE,iBAAW;AACjB,iBAAOA,MAAP;AACA,SAHQ;AAITC,QAAAA,MAAM,EAAE,kBAAW;AAClBC,UAAAA,QAAQ,CAAC1Q,IAAT,CAAe5zB,SAAf,EAA2BgkC,IAA3B,CAAiChkC,SAAjC;AACA,iBAAO,IAAP;AACA,SAPQ;AAQT,iBAAS,gBAAUK,EAAV,EAAe;AACvB,iBAAO0jC,QAAO,CAACE,IAAR,CAAc,IAAd,EAAoB5jC,EAApB,CAAP;AACA,SAVQ;AAYT;AACAkkC,QAAAA,IAAI,EAAE;AAAU;AAAV,eAA6C;AAClD,cAAItmC,GAAG,GAAG+B,SAAV;AAEA,iBAAOuwB,MAAM,CAAC2T,QAAP,CAAiB,UAAUM,QAAV,EAAqB;AAC5CjU,YAAAA,MAAM,CAACz7B,IAAP,CAAaqvC,MAAb,EAAqB,UAAUzR,EAAV,EAAc+R,KAAd,EAAsB;AAE1C;AACA,kBAAIpkC,EAAE,GAAGsvB,UAAU,CAAE1xB,GAAG,CAAEwmC,KAAK,CAAE,CAAF,CAAP,CAAL,CAAV,IAAmCxmC,GAAG,CAAEwmC,KAAK,CAAE,CAAF,CAAP,CAA/C,CAH0C,CAK1C;AACA;AACA;;AACAH,cAAAA,QAAQ,CAAEG,KAAK,CAAE,CAAF,CAAP,CAAR,CAAwB,YAAW;AAClC,oBAAIC,QAAQ,GAAGrkC,EAAE,IAAIA,EAAE,CAACH,KAAH,CAAU,IAAV,EAAgBF,SAAhB,CAArB;;AACA,oBAAK0kC,QAAQ,IAAI/U,UAAU,CAAE+U,QAAQ,CAACX,OAAX,CAA3B,EAAkD;AACjDW,kBAAAA,QAAQ,CAACX,OAAT,GACEY,QADF,CACYH,QAAQ,CAACI,MADrB,EAEEhR,IAFF,CAEQ4Q,QAAQ,CAACZ,OAFjB,EAGEI,IAHF,CAGQQ,QAAQ,CAACX,MAHjB;AAIA,iBALD,MAKO;AACNW,kBAAAA,QAAQ,CAAEC,KAAK,CAAE,CAAF,CAAL,GAAa,MAAf,CAAR,CACC,IADD,EAECpkC,EAAE,GAAG,CAAEqkC,QAAF,CAAH,GAAkB1kC,SAFrB;AAIA;AACD,eAbD;AAcA,aAtBD;AAuBA/B,YAAAA,GAAG,GAAG,IAAN;AACA,WAzBM,EAyBH8lC,OAzBG,EAAP;AA0BA,SA1CQ;AA2CTE,QAAAA,IAAI,EAAE,cAAUY,WAAV,EAAuBC,UAAvB,EAAmCC,UAAnC,EAAgD;AACrD,cAAIC,QAAQ,GAAG,CAAf;;AACA,mBAASpB,OAAT,CAAkBqB,KAAlB,EAAyBX,QAAzB,EAAmCtgC,OAAnC,EAA4CsmB,OAA5C,EAAsD;AACrD,mBAAO,YAAW;AACjB,kBAAI4a,IAAI,GAAG,IAAX;AAAA,kBACCvlC,IAAI,GAAGK,SADR;AAAA,kBAECmlC,UAAU,GAAG,SAAbA,UAAa,GAAW;AACvB,oBAAIT,QAAJ,EAAcT,IAAd,CADuB,CAGvB;AACA;AACA;;AACA,oBAAKgB,KAAK,GAAGD,QAAb,EAAwB;AACvB;AACA;;AAEDN,gBAAAA,QAAQ,GAAG1gC,OAAO,CAAC9D,KAAR,CAAeglC,IAAf,EAAqBvlC,IAArB,CAAX,CAVuB,CAYvB;AACA;;AACA,oBAAK+kC,QAAQ,KAAKJ,QAAQ,CAACP,OAAT,EAAlB,EAAuC;AACtC,wBAAM,IAAI3jC,SAAJ,CAAe,0BAAf,CAAN;AACA,iBAhBsB,CAkBvB;AACA;AACA;AACA;;;AACA6jC,gBAAAA,IAAI,GAAGS,QAAQ,MAEd;AACA;AACA;AACE,wBAAOA,QAAP,MAAoB,QAApB,IACD,OAAOA,QAAP,KAAoB,UANP,CAAR,IAONA,QAAQ,CAACT,IAPV,CAtBuB,CA+BvB;;AACA,oBAAKtU,UAAU,CAAEsU,IAAF,CAAf,EAA0B;AAEzB;AACA,sBAAK3Z,OAAL,EAAe;AACd2Z,oBAAAA,IAAI,CAAClkC,IAAL,CACC2kC,QADD,EAECd,OAAO,CAAEoB,QAAF,EAAYV,QAAZ,EAAsBf,QAAtB,EAAgCjZ,OAAhC,CAFR,EAGCsZ,OAAO,CAAEoB,QAAF,EAAYV,QAAZ,EAAsBb,OAAtB,EAA+BnZ,OAA/B,CAHR,EADc,CAOf;AACC,mBARD,MAQO;AAEN;AACA0a,oBAAAA,QAAQ;AAERf,oBAAAA,IAAI,CAAClkC,IAAL,CACC2kC,QADD,EAECd,OAAO,CAAEoB,QAAF,EAAYV,QAAZ,EAAsBf,QAAtB,EAAgCjZ,OAAhC,CAFR,EAGCsZ,OAAO,CAAEoB,QAAF,EAAYV,QAAZ,EAAsBb,OAAtB,EAA+BnZ,OAA/B,CAHR,EAICsZ,OAAO,CAAEoB,QAAF,EAAYV,QAAZ,EAAsBf,QAAtB,EACNe,QAAQ,CAACc,UADH,CAJR;AAOA,mBAvBwB,CAyB1B;;AACC,iBA1BD,MA0BO;AAEN;AACA;AACA,sBAAKphC,OAAO,KAAKu/B,QAAjB,EAA4B;AAC3B2B,oBAAAA,IAAI,GAAGvlB,SAAP;AACAhgB,oBAAAA,IAAI,GAAG,CAAE+kC,QAAF,CAAP;AACA,mBAPK,CASN;AACA;;;AACA,mBAAEpa,OAAO,IAAIga,QAAQ,CAACe,WAAtB,EAAqCH,IAArC,EAA2CvlC,IAA3C;AACA;AACD,eAzEF;AAAA,kBA2EC;AACA2lC,cAAAA,OAAO,GAAGhb,OAAO,GAChB6a,UADgB,GAEhB,YAAW;AACV,oBAAI;AACHA,kBAAAA,UAAU;AACV,iBAFD,CAEE,OAAQ7tC,CAAR,EAAY;AAEb,sBAAKi5B,MAAM,CAAC2T,QAAP,CAAgBqB,aAArB,EAAqC;AACpChV,oBAAAA,MAAM,CAAC2T,QAAP,CAAgBqB,aAAhB,CAA+BjuC,CAA/B,EACCguC,OAAO,CAACE,UADT;AAEA,mBALY,CAOb;AACA;AACA;;;AACA,sBAAKP,KAAK,GAAG,CAAR,IAAaD,QAAlB,EAA6B;AAE5B;AACA;AACA,wBAAKhhC,OAAO,KAAKy/B,OAAjB,EAA2B;AAC1ByB,sBAAAA,IAAI,GAAGvlB,SAAP;AACAhgB,sBAAAA,IAAI,GAAG,CAAErI,CAAF,CAAP;AACA;;AAEDgtC,oBAAAA,QAAQ,CAACmB,UAAT,CAAqBP,IAArB,EAA2BvlC,IAA3B;AACA;AACD;AACD,eAvGH,CADiB,CA0GjB;AACA;AACA;AACA;;;AACA,kBAAKslC,KAAL,EAAa;AACZK,gBAAAA,OAAO;AACP,eAFD,MAEO;AAEN;AACA;AACA,oBAAK/U,MAAM,CAAC2T,QAAP,CAAgBwB,YAArB,EAAoC;AACnCJ,kBAAAA,OAAO,CAACE,UAAR,GAAqBjV,MAAM,CAAC2T,QAAP,CAAgBwB,YAAhB,EAArB;AACA;;AACD5vC,gBAAAA,MAAM,CAAC8K,UAAP,CAAmB0kC,OAAnB;AACA;AACD,aAzHD;AA0HA;;AAED,iBAAO/U,MAAM,CAAC2T,QAAP,CAAiB,UAAUM,QAAV,EAAqB;AAE5C;AACAL,YAAAA,MAAM,CAAE,CAAF,CAAN,CAAa,CAAb,EAAiBpoC,GAAjB,CACC6nC,OAAO,CACN,CADM,EAENY,QAFM,EAGN7U,UAAU,CAAEoV,UAAF,CAAV,GACCA,UADD,GAECxB,QALK,EAMNiB,QAAQ,CAACY,UANH,CADR,EAH4C,CAc5C;;AACAjB,YAAAA,MAAM,CAAE,CAAF,CAAN,CAAa,CAAb,EAAiBpoC,GAAjB,CACC6nC,OAAO,CACN,CADM,EAENY,QAFM,EAGN7U,UAAU,CAAEkV,WAAF,CAAV,GACCA,WADD,GAECtB,QALK,CADR,EAf4C,CAyB5C;;AACAY,YAAAA,MAAM,CAAE,CAAF,CAAN,CAAa,CAAb,EAAiBpoC,GAAjB,CACC6nC,OAAO,CACN,CADM,EAENY,QAFM,EAGN7U,UAAU,CAAEmV,UAAF,CAAV,GACCA,UADD,GAECrB,OALK,CADR;AASA,WAnCM,EAmCHM,OAnCG,EAAP;AAoCA,SA9MQ;AAgNT;AACA;AACAA,QAAAA,OAAO,EAAE,iBAAU/gC,GAAV,EAAgB;AACxB,iBAAOA,GAAG,IAAI,IAAP,GAAcutB,MAAM,CAACl8B,MAAP,CAAe2O,GAAf,EAAoB+gC,QAApB,CAAd,GAA8CA,QAArD;AACA;AApNQ,OAZX;AAAA,UAkOCO,QAAQ,GAAG,EAlOZ,CAD0B,CAqO1B;;AACA/T,MAAAA,MAAM,CAACz7B,IAAP,CAAaqvC,MAAb,EAAqB,UAAUhpC,CAAV,EAAaspC,KAAb,EAAqB;AACzC,YAAIpQ,IAAI,GAAGoQ,KAAK,CAAE,CAAF,CAAhB;AAAA,YACCkB,WAAW,GAAGlB,KAAK,CAAE,CAAF,CADpB,CADyC,CAIzC;AACA;AACA;;AACAV,QAAAA,QAAO,CAAEU,KAAK,CAAE,CAAF,CAAP,CAAP,GAAwBpQ,IAAI,CAACt4B,GAA7B,CAPyC,CASzC;;AACA,YAAK4pC,WAAL,EAAmB;AAClBtR,UAAAA,IAAI,CAACt4B,GAAL,CACC,YAAW;AAEV;AACA;AACAqoC,YAAAA,MAAK,GAAGuB,WAAR;AACA,WANF,EAQC;AACA;AACAxB,UAAAA,MAAM,CAAE,IAAIhpC,CAAN,CAAN,CAAiB,CAAjB,EAAqBioC,OAVtB,EAYC;AACA;AACAe,UAAAA,MAAM,CAAE,IAAIhpC,CAAN,CAAN,CAAiB,CAAjB,EAAqBioC,OAdtB,EAgBC;AACAe,UAAAA,MAAM,CAAE,CAAF,CAAN,CAAa,CAAb,EAAiBd,IAjBlB,EAmBC;AACAc,UAAAA,MAAM,CAAE,CAAF,CAAN,CAAa,CAAb,EAAiBd,IApBlB;AAsBA,SAjCwC,CAmCzC;AACA;AACA;;;AACAhP,QAAAA,IAAI,CAACt4B,GAAL,CAAU0oC,KAAK,CAAE,CAAF,CAAL,CAAWzB,IAArB,EAtCyC,CAwCzC;AACA;AACA;;AACAsB,QAAAA,QAAQ,CAAEG,KAAK,CAAE,CAAF,CAAP,CAAR,GAAyB,YAAW;AACnCH,UAAAA,QAAQ,CAAEG,KAAK,CAAE,CAAF,CAAL,GAAa,MAAf,CAAR,CAAiC,SAASH,QAAT,GAAoB3kB,SAApB,GAAgC,IAAjE,EAAuE3f,SAAvE;AACA,iBAAO,IAAP;AACA,SAHD,CA3CyC,CAgDzC;AACA;AACA;;;AACAskC,QAAAA,QAAQ,CAAEG,KAAK,CAAE,CAAF,CAAL,GAAa,MAAf,CAAR,GAAkCpQ,IAAI,CAACiP,QAAvC;AACA,OApDD,EAtO0B,CA4R1B;;AACAS,MAAAA,QAAO,CAACA,OAAR,CAAiBO,QAAjB,EA7R0B,CA+R1B;;;AACA,UAAK9jC,IAAL,EAAY;AACXA,QAAAA,IAAI,CAACT,IAAL,CAAWukC,QAAX,EAAqBA,QAArB;AACA,OAlSyB,CAoS1B;;;AACA,aAAOA,QAAP;AACA,KAxSa;AA0Sd;AACAsB,IAAAA,IAAI,EAAE,cAAUC,WAAV,EAAwB;AAC7B,UAEC;AACAC,MAAAA,SAAS,GAAG9lC,SAAS,CAACxK,MAHvB;AAAA,UAKC;AACA2F,MAAAA,CAAC,GAAG2qC,SANL;AAAA,UAQC;AACAC,MAAAA,eAAe,GAAGnmC,KAAK,CAAEzE,CAAF,CATxB;AAAA,UAUC6qC,aAAa,GAAGlmC,MAAK,CAACC,IAAN,CAAYC,SAAZ,CAVjB;AAAA,UAYC;AACAimC,MAAAA,OAAO,GAAG1V,MAAM,CAAC2T,QAAP,EAbX;AAAA,UAeC;AACAgC,MAAAA,UAAU,GAAG,SAAbA,UAAa,CAAU/qC,CAAV,EAAc;AAC1B,eAAO,UAAUmZ,KAAV,EAAkB;AACxByxB,UAAAA,eAAe,CAAE5qC,CAAF,CAAf,GAAuB,IAAvB;AACA6qC,UAAAA,aAAa,CAAE7qC,CAAF,CAAb,GAAqB6E,SAAS,CAACxK,MAAV,GAAmB,CAAnB,GAAuBsK,MAAK,CAACC,IAAN,CAAYC,SAAZ,CAAvB,GAAiDsU,KAAtE;;AACA,cAAK,CAAG,GAAEwxB,SAAV,EAAwB;AACvBG,YAAAA,OAAO,CAACZ,WAAR,CAAqBU,eAArB,EAAsCC,aAAtC;AACA;AACD,SAND;AAOA,OAxBF,CAD6B,CA2B7B;;;AACA,UAAKF,SAAS,IAAI,CAAlB,EAAsB;AACrBnC,QAAAA,UAAU,CAAEkC,WAAF,EAAeI,OAAO,CAACrS,IAAR,CAAcsS,UAAU,CAAE/qC,CAAF,CAAxB,EAAgCyoC,OAA/C,EAAwDqC,OAAO,CAACpC,MAAhE,EACT,CAACiC,SADQ,CAAV,CADqB,CAIrB;;AACA,YAAKG,OAAO,CAAC7B,KAAR,OAAoB,SAApB,IACJzU,UAAU,CAAEqW,aAAa,CAAE7qC,CAAF,CAAb,IAAsB6qC,aAAa,CAAE7qC,CAAF,CAAb,CAAmB8oC,IAA3C,CADX,EAC+D;AAE9D,iBAAOgC,OAAO,CAAChC,IAAR,EAAP;AACA;AACD,OAtC4B,CAwC7B;;;AACA,aAAQ9oC,CAAC,EAAT,EAAc;AACbwoC,QAAAA,UAAU,CAAEqC,aAAa,CAAE7qC,CAAF,CAAf,EAAsB+qC,UAAU,CAAE/qC,CAAF,CAAhC,EAAuC8qC,OAAO,CAACpC,MAA/C,CAAV;AACA;;AAED,aAAOoC,OAAO,CAAClC,OAAR,EAAP;AACA;AAzVa,GAAf,EApkHiF,CAi6HjF;AACA;;AACA,MAAIoC,WAAW,GAAG,wDAAlB;;AAEA5V,EAAAA,MAAM,CAAC2T,QAAP,CAAgBqB,aAAhB,GAAgC,UAAU9mC,KAAV,EAAiB2nC,KAAjB,EAAyB;AAExD;AACA;AACA,QAAKtwC,MAAM,CAACuC,OAAP,IAAkBvC,MAAM,CAACuC,OAAP,CAAewV,IAAjC,IAAyCpP,KAAzC,IAAkD0nC,WAAW,CAAC/kC,IAAZ,CAAkB3C,KAAK,CAAC5B,IAAxB,CAAvD,EAAwF;AACvF/G,MAAAA,MAAM,CAACuC,OAAP,CAAewV,IAAf,CAAqB,gCAAgCpP,KAAK,CAAC4nC,OAA3D,EAAoE5nC,KAAK,CAAC2nC,KAA1E,EAAiFA,KAAjF;AACA;AACD,GAPD;;AAYA7V,EAAAA,MAAM,CAAC+V,cAAP,GAAwB,UAAU7nC,KAAV,EAAkB;AACzC3I,IAAAA,MAAM,CAAC8K,UAAP,CAAmB,YAAW;AAC7B,YAAMnC,KAAN;AACA,KAFD;AAGA,GAJD,CAj7HiF,CA07HjF;;;AACA,MAAI8nC,SAAS,GAAGhW,MAAM,CAAC2T,QAAP,EAAhB;;AAEA3T,EAAAA,MAAM,CAAClwB,EAAP,CAAUmhC,KAAV,GAAkB,UAAUnhC,EAAV,EAAe;AAEhCkmC,IAAAA,SAAS,CACPtC,IADF,CACQ5jC,EADR,EAGC;AACA;AACA;AALD,KAMEmmC,KANF,CAMS,UAAU/nC,KAAV,EAAkB;AACzB8xB,MAAAA,MAAM,CAAC+V,cAAP,CAAuB7nC,KAAvB;AACA,KARF;AAUA,WAAO,IAAP;AACA,GAbD;;AAeA8xB,EAAAA,MAAM,CAACl8B,MAAP,CAAe;AAEd;AACAq9B,IAAAA,OAAO,EAAE,KAHK;AAKd;AACA;AACA+U,IAAAA,SAAS,EAAE,CAPG;AASd;AACAjF,IAAAA,KAAK,EAAE,eAAUkF,IAAV,EAAiB;AAEvB;AACA,UAAKA,IAAI,KAAK,IAAT,GAAgB,EAAEnW,MAAM,CAACkW,SAAzB,GAAqClW,MAAM,CAACmB,OAAjD,EAA2D;AAC1D;AACA,OALsB,CAOvB;;;AACAnB,MAAAA,MAAM,CAACmB,OAAP,GAAiB,IAAjB,CARuB,CAUvB;;AACA,UAAKgV,IAAI,KAAK,IAAT,IAAiB,EAAEnW,MAAM,CAACkW,SAAT,GAAqB,CAA3C,EAA+C;AAC9C;AACA,OAbsB,CAevB;;;AACAF,MAAAA,SAAS,CAAClB,WAAV,CAAuB3hC,QAAvB,EAAiC,CAAE6sB,MAAF,CAAjC;AACA;AA3Ba,GAAf;AA8BAA,EAAAA,MAAM,CAACiR,KAAP,CAAayC,IAAb,GAAoBsC,SAAS,CAACtC,IAA9B,CA1+HiF,CA4+HjF;;AACA,WAAS0C,SAAT,GAAqB;AACpBjjC,IAAAA,QAAQ,CAACylB,mBAAT,CAA8B,kBAA9B,EAAkDwd,SAAlD;AACA7wC,IAAAA,MAAM,CAACqzB,mBAAP,CAA4B,MAA5B,EAAoCwd,SAApC;AACApW,IAAAA,MAAM,CAACiR,KAAP;AACA,GAj/HgF,CAm/HjF;AACA;AACA;AACA;;;AACA,MAAK99B,QAAQ,CAACQ,UAAT,KAAwB,UAAxB,IACFR,QAAQ,CAACQ,UAAT,KAAwB,SAAxB,IAAqC,CAACR,QAAQ,CAACqX,eAAT,CAAyB6rB,QADlE,EAC+E;AAE9E;AACA9wC,IAAAA,MAAM,CAAC8K,UAAP,CAAmB2vB,MAAM,CAACiR,KAA1B;AAEA,GAND,MAMO;AAEN;AACA99B,IAAAA,QAAQ,CAACumB,gBAAT,CAA2B,kBAA3B,EAA+C0c,SAA/C,EAHM,CAKN;;AACA7wC,IAAAA,MAAM,CAACm0B,gBAAP,CAAyB,MAAzB,EAAiC0c,SAAjC;AACA,GApgIgF,CAygIjF;AACA;;;AACA,MAAIE,MAAM,GAAG,SAATA,MAAS,CAAUhW,KAAV,EAAiBxwB,EAAjB,EAAqBwT,GAArB,EAA0BS,KAA1B,EAAiCwyB,SAAjC,EAA4CC,QAA5C,EAAsDC,GAAtD,EAA4D;AACxE,QAAI7rC,CAAC,GAAG,CAAR;AAAA,QACC+f,GAAG,GAAG2V,KAAK,CAACr7B,MADb;AAAA,QAECyxC,IAAI,GAAGpzB,GAAG,IAAI,IAFf,CADwE,CAKxE;;AACA,QAAKyc,MAAM,CAAEzc,GAAF,CAAN,KAAkB,QAAvB,EAAkC;AACjCizB,MAAAA,SAAS,GAAG,IAAZ;;AACA,WAAM3rC,CAAN,IAAW0Y,GAAX,EAAiB;AAChBgzB,QAAAA,MAAM,CAAEhW,KAAF,EAASxwB,EAAT,EAAalF,CAAb,EAAgB0Y,GAAG,CAAE1Y,CAAF,CAAnB,EAA0B,IAA1B,EAAgC4rC,QAAhC,EAA0CC,GAA1C,CAAN;AACA,OAJgC,CAMlC;;AACC,KAPD,MAOO,IAAK1yB,KAAK,KAAKqL,SAAf,EAA2B;AACjCmnB,MAAAA,SAAS,GAAG,IAAZ;;AAEA,UAAK,CAACnX,UAAU,CAAErb,KAAF,CAAhB,EAA4B;AAC3B0yB,QAAAA,GAAG,GAAG,IAAN;AACA;;AAED,UAAKC,IAAL,EAAY;AAEX;AACA,YAAKD,GAAL,EAAW;AACV3mC,UAAAA,EAAE,CAACN,IAAH,CAAS8wB,KAAT,EAAgBvc,KAAhB;AACAjU,UAAAA,EAAE,GAAG,IAAL,CAFU,CAIX;AACC,SALD,MAKO;AACN4mC,UAAAA,IAAI,GAAG5mC,EAAP;;AACAA,UAAAA,EAAE,GAAG,YAAU1B,IAAV,EAAgBuoC,IAAhB,EAAsB5yB,KAAtB,EAA8B;AAClC,mBAAO2yB,IAAI,CAAClnC,IAAL,CAAWwwB,MAAM,CAAE5xB,IAAF,CAAjB,EAA2B2V,KAA3B,CAAP;AACA,WAFD;AAGA;AACD;;AAED,UAAKjU,EAAL,EAAU;AACT,eAAQlF,CAAC,GAAG+f,GAAZ,EAAiB/f,CAAC,EAAlB,EAAuB;AACtBkF,UAAAA,EAAE,CACDwwB,KAAK,CAAE11B,CAAF,CADJ,EACW0Y,GADX,EACgBmzB,GAAG,GACnB1yB,KADmB,GAEnBA,KAAK,CAACvU,IAAN,CAAY8wB,KAAK,CAAE11B,CAAF,CAAjB,EAAwBA,CAAxB,EAA2BkF,EAAE,CAAEwwB,KAAK,CAAE11B,CAAF,CAAP,EAAc0Y,GAAd,CAA7B,CAHA,CAAF;AAKA;AACD;AACD;;AAED,QAAKizB,SAAL,EAAiB;AAChB,aAAOjW,KAAP;AACA,KAjDuE,CAmDxE;;;AACA,QAAKoW,IAAL,EAAY;AACX,aAAO5mC,EAAE,CAACN,IAAH,CAAS8wB,KAAT,CAAP;AACA;;AAED,WAAO3V,GAAG,GAAG7a,EAAE,CAAEwwB,KAAK,CAAE,CAAF,CAAP,EAAchd,GAAd,CAAL,GAA2BkzB,QAArC;AACA,GAzDD,CA3gIiF,CAukIjF;;;AACA,MAAII,SAAS,GAAG,OAAhB;AAAA,MACCC,UAAU,GAAG,WADd,CAxkIiF,CA2kIjF;;AACA,WAASC,UAAT,CAAqBC,IAArB,EAA2BC,MAA3B,EAAoC;AACnC,WAAOA,MAAM,CAAC9kB,WAAP,EAAP;AACA,GA9kIgF,CAglIjF;AACA;AACA;;;AACA,WAAS+kB,SAAT,CAAoBC,MAApB,EAA6B;AAC5B,WAAOA,MAAM,CAAC7kC,OAAP,CAAgBukC,SAAhB,EAA2B,KAA3B,EAAmCvkC,OAAnC,CAA4CwkC,UAA5C,EAAwDC,UAAxD,CAAP;AACA;;AACD,MAAIK,UAAU,GAAG,SAAbA,UAAa,CAAUC,KAAV,EAAkB;AAElC;AACA;AACA;AACA;AACA;AACA;AACA,WAAOA,KAAK,CAAC/X,QAAN,KAAmB,CAAnB,IAAwB+X,KAAK,CAAC/X,QAAN,KAAmB,CAA3C,IAAgD,CAAG,CAAC+X,KAAK,CAAC/X,QAAjE;AACA,GATD;;AAcA,WAASgY,IAAT,GAAgB;AACf,SAAKnW,OAAL,GAAelB,MAAM,CAACkB,OAAP,GAAiBmW,IAAI,CAACC,GAAL,EAAhC;AACA;;AAEDD,EAAAA,IAAI,CAACC,GAAL,GAAW,CAAX;AAEAD,EAAAA,IAAI,CAAC/nC,SAAL,GAAiB;AAEhB43B,IAAAA,KAAK,EAAE,eAAUkQ,KAAV,EAAkB;AAExB;AACA,UAAIrzB,KAAK,GAAGqzB,KAAK,CAAE,KAAKlW,OAAP,CAAjB,CAHwB,CAKxB;;AACA,UAAK,CAACnd,KAAN,EAAc;AACbA,QAAAA,KAAK,GAAG,EAAR,CADa,CAGb;AACA;AACA;;AACA,YAAKozB,UAAU,CAAEC,KAAF,CAAf,EAA2B;AAE1B;AACA;AACA,cAAKA,KAAK,CAAC/X,QAAX,EAAsB;AACrB+X,YAAAA,KAAK,CAAE,KAAKlW,OAAP,CAAL,GAAwBnd,KAAxB,CADqB,CAGtB;AACA;AACA;AACC,WAND,MAMO;AACNhW,YAAAA,MAAM,CAACwpC,cAAP,CAAuBH,KAAvB,EAA8B,KAAKlW,OAAnC,EAA4C;AAC3Cnd,cAAAA,KAAK,EAAEA,KADoC;AAE3CyzB,cAAAA,YAAY,EAAE;AAF6B,aAA5C;AAIA;AACD;AACD;;AAED,aAAOzzB,KAAP;AACA,KAlCe;AAmChB0zB,IAAAA,GAAG,EAAE,aAAUL,KAAV,EAAiBpzC,IAAjB,EAAuB+f,KAAvB,EAA+B;AACnC,UAAI1W,IAAJ;AAAA,UACC65B,KAAK,GAAG,KAAKA,KAAL,CAAYkQ,KAAZ,CADT,CADmC,CAInC;AACA;;AACA,UAAK,OAAOpzC,IAAP,KAAgB,QAArB,EAAgC;AAC/BkjC,QAAAA,KAAK,CAAE+P,SAAS,CAAEjzC,IAAF,CAAX,CAAL,GAA6B+f,KAA7B,CAD+B,CAGhC;AACC,OAJD,MAIO;AAEN;AACA,aAAM1W,IAAN,IAAcrJ,IAAd,EAAqB;AACpBkjC,UAAAA,KAAK,CAAE+P,SAAS,CAAE5pC,IAAF,CAAX,CAAL,GAA6BrJ,IAAI,CAAEqJ,IAAF,CAAjC;AACA;AACD;;AACD,aAAO65B,KAAP;AACA,KArDe;AAsDhBriB,IAAAA,GAAG,EAAE,aAAUuyB,KAAV,EAAiB9zB,GAAjB,EAAuB;AAC3B,aAAOA,GAAG,KAAK8L,SAAR,GACN,KAAK8X,KAAL,CAAYkQ,KAAZ,CADM,GAGN;AACAA,MAAAA,KAAK,CAAE,KAAKlW,OAAP,CAAL,IAAyBkW,KAAK,CAAE,KAAKlW,OAAP,CAAL,CAAuB+V,SAAS,CAAE3zB,GAAF,CAAhC,CAJ1B;AAKA,KA5De;AA6DhBgzB,IAAAA,MAAM,EAAE,gBAAUc,KAAV,EAAiB9zB,GAAjB,EAAsBS,KAAtB,EAA8B;AAErC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAKT,GAAG,KAAK8L,SAAR,IACC9L,GAAG,IAAI,OAAOA,GAAP,KAAe,QAAxB,IAAsCS,KAAK,KAAKqL,SADpD,EACkE;AAEjE,eAAO,KAAKvK,GAAL,CAAUuyB,KAAV,EAAiB9zB,GAAjB,CAAP;AACA,OAjBoC,CAmBrC;AACA;AACA;AACA;AACA;AACA;;;AACA,WAAKm0B,GAAL,CAAUL,KAAV,EAAiB9zB,GAAjB,EAAsBS,KAAtB,EAzBqC,CA2BrC;AACA;;AACA,aAAOA,KAAK,KAAKqL,SAAV,GAAsBrL,KAAtB,GAA8BT,GAArC;AACA,KA3Fe;AA4FhBzX,IAAAA,MAAM,EAAE,gBAAUurC,KAAV,EAAiB9zB,GAAjB,EAAuB;AAC9B,UAAI1Y,CAAJ;AAAA,UACCs8B,KAAK,GAAGkQ,KAAK,CAAE,KAAKlW,OAAP,CADd;;AAGA,UAAKgG,KAAK,KAAK9X,SAAf,EAA2B;AAC1B;AACA;;AAED,UAAK9L,GAAG,KAAK8L,SAAb,EAAyB;AAExB;AACA,YAAK/f,KAAK,CAACinB,OAAN,CAAehT,GAAf,CAAL,EAA4B;AAE3B;AACA;AACAA,UAAAA,GAAG,GAAGA,GAAG,CAAC1U,GAAJ,CAASqoC,SAAT,CAAN;AACA,SALD,MAKO;AACN3zB,UAAAA,GAAG,GAAG2zB,SAAS,CAAE3zB,GAAF,CAAf,CADM,CAGN;AACA;;AACAA,UAAAA,GAAG,GAAGA,GAAG,IAAI4jB,KAAP,GACL,CAAE5jB,GAAF,CADK,GAEHA,GAAG,CAACvK,KAAJ,CAAW+4B,aAAX,KAA8B,EAFjC;AAGA;;AAEDlnC,QAAAA,CAAC,GAAG0Y,GAAG,CAACre,MAAR;;AAEA,eAAQ2F,CAAC,EAAT,EAAc;AACb,iBAAOs8B,KAAK,CAAE5jB,GAAG,CAAE1Y,CAAF,CAAL,CAAZ;AACA;AACD,OA/B6B,CAiC9B;;;AACA,UAAK0Y,GAAG,KAAK8L,SAAR,IAAqB4Q,MAAM,CAAC7c,aAAP,CAAsB+jB,KAAtB,CAA1B,EAA0D;AAEzD;AACA;AACA;AACA;AACA,YAAKkQ,KAAK,CAAC/X,QAAX,EAAsB;AACrB+X,UAAAA,KAAK,CAAE,KAAKlW,OAAP,CAAL,GAAwB9R,SAAxB;AACA,SAFD,MAEO;AACN,iBAAOgoB,KAAK,CAAE,KAAKlW,OAAP,CAAZ;AACA;AACD;AACD,KA1Ie;AA2IhBwW,IAAAA,OAAO,EAAE,iBAAUN,KAAV,EAAkB;AAC1B,UAAIlQ,KAAK,GAAGkQ,KAAK,CAAE,KAAKlW,OAAP,CAAjB;AACA,aAAOgG,KAAK,KAAK9X,SAAV,IAAuB,CAAC4Q,MAAM,CAAC7c,aAAP,CAAsB+jB,KAAtB,CAA/B;AACA;AA9Ie,GAAjB;AAgJA,MAAIyQ,QAAQ,GAAG,IAAIN,IAAJ,EAAf;AAEA,MAAIO,QAAQ,GAAG,IAAIP,IAAJ,EAAf,CA5vIiF,CAgwIjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,MAAIQ,MAAM,GAAG,+BAAb;AAAA,MACCC,UAAU,GAAG,QADd;;AAGA,WAASC,OAAT,CAAkB/zC,IAAlB,EAAyB;AACxB,QAAKA,IAAI,KAAK,MAAd,EAAuB;AACtB,aAAO,IAAP;AACA;;AAED,QAAKA,IAAI,KAAK,OAAd,EAAwB;AACvB,aAAO,KAAP;AACA;;AAED,QAAKA,IAAI,KAAK,MAAd,EAAuB;AACtB,aAAO,IAAP;AACA,KAXuB,CAaxB;;;AACA,QAAKA,IAAI,KAAK,CAACA,IAAD,GAAQ,EAAtB,EAA2B;AAC1B,aAAO,CAACA,IAAR;AACA;;AAED,QAAK6zC,MAAM,CAAChnC,IAAP,CAAa7M,IAAb,CAAL,EAA2B;AAC1B,aAAOg0C,IAAI,CAACC,KAAL,CAAYj0C,IAAZ,CAAP;AACA;;AAED,WAAOA,IAAP;AACA;;AAED,WAASk0C,QAAT,CAAmB9pC,IAAnB,EAAyBkV,GAAzB,EAA8Btf,IAA9B,EAAqC;AACpC,QAAIsI,IAAJ,CADoC,CAGpC;AACA;;AACA,QAAKtI,IAAI,KAAKorB,SAAT,IAAsBhhB,IAAI,CAACixB,QAAL,KAAkB,CAA7C,EAAiD;AAChD/yB,MAAAA,IAAI,GAAG,UAAUgX,GAAG,CAACjR,OAAJ,CAAaylC,UAAb,EAAyB,KAAzB,EAAiCjrC,WAAjC,EAAjB;AACA7I,MAAAA,IAAI,GAAGoK,IAAI,CAACua,YAAL,CAAmBrc,IAAnB,CAAP;;AAEA,UAAK,OAAOtI,IAAP,KAAgB,QAArB,EAAgC;AAC/B,YAAI;AACHA,UAAAA,IAAI,GAAG+zC,OAAO,CAAE/zC,IAAF,CAAd;AACA,SAFD,CAEE,OAAQ+C,CAAR,EAAY,CAAE,CAHe,CAK/B;;;AACA6wC,QAAAA,QAAQ,CAACH,GAAT,CAAcrpC,IAAd,EAAoBkV,GAApB,EAAyBtf,IAAzB;AACA,OAPD,MAOO;AACNA,QAAAA,IAAI,GAAGorB,SAAP;AACA;AACD;;AACD,WAAOprB,IAAP;AACA;;AAEDg8B,EAAAA,MAAM,CAACl8B,MAAP,CAAe;AACd4zC,IAAAA,OAAO,EAAE,iBAAUtpC,IAAV,EAAiB;AACzB,aAAOwpC,QAAQ,CAACF,OAAT,CAAkBtpC,IAAlB,KAA4BupC,QAAQ,CAACD,OAAT,CAAkBtpC,IAAlB,CAAnC;AACA,KAHa;AAKdpK,IAAAA,IAAI,EAAE,cAAUoK,IAAV,EAAgB9B,IAAhB,EAAsBtI,KAAtB,EAA6B;AAClC,aAAO4zC,QAAQ,CAACtB,MAAT,CAAiBloC,IAAjB,EAAuB9B,IAAvB,EAA6BtI,KAA7B,CAAP;AACA,KAPa;AASdoJ,IAAAA,UAAU,EAAE,oBAAUgB,IAAV,EAAgB9B,IAAhB,EAAuB;AAClCsrC,MAAAA,QAAQ,CAAC/rC,MAAT,CAAiBuC,IAAjB,EAAuB9B,IAAvB;AACA,KAXa;AAad;AACA;AACA6rC,IAAAA,KAAK,EAAE,eAAU/pC,IAAV,EAAgB9B,IAAhB,EAAsBtI,IAAtB,EAA6B;AACnC,aAAO2zC,QAAQ,CAACrB,MAAT,CAAiBloC,IAAjB,EAAuB9B,IAAvB,EAA6BtI,IAA7B,CAAP;AACA,KAjBa;AAmBdo0C,IAAAA,WAAW,EAAE,qBAAUhqC,IAAV,EAAgB9B,IAAhB,EAAuB;AACnCqrC,MAAAA,QAAQ,CAAC9rC,MAAT,CAAiBuC,IAAjB,EAAuB9B,IAAvB;AACA;AArBa,GAAf;AAwBA0zB,EAAAA,MAAM,CAAClwB,EAAP,CAAUhM,MAAV,CAAkB;AACjBE,IAAAA,IAAI,EAAE,cAAUsf,GAAV,EAAeS,KAAf,EAAuB;AAC5B,UAAInZ,CAAJ;AAAA,UAAO0B,IAAP;AAAA,UAAatI,IAAb;AAAA,UACCoK,IAAI,GAAG,KAAM,CAAN,CADR;AAAA,UAECo5B,KAAK,GAAGp5B,IAAI,IAAIA,IAAI,CAACuvB,UAFtB,CAD4B,CAK5B;;AACA,UAAKra,GAAG,KAAK8L,SAAb,EAAyB;AACxB,YAAK,KAAKnqB,MAAV,EAAmB;AAClBjB,UAAAA,IAAI,GAAG4zC,QAAQ,CAAC/yB,GAAT,CAAczW,IAAd,CAAP;;AAEA,cAAKA,IAAI,CAACixB,QAAL,KAAkB,CAAlB,IAAuB,CAACsY,QAAQ,CAAC9yB,GAAT,CAAczW,IAAd,EAAoB,cAApB,CAA7B,EAAoE;AACnExD,YAAAA,CAAC,GAAG48B,KAAK,CAACviC,MAAV;;AACA,mBAAQ2F,CAAC,EAAT,EAAc;AAEb;AACA;AACA,kBAAK48B,KAAK,CAAE58B,CAAF,CAAV,EAAkB;AACjB0B,gBAAAA,IAAI,GAAGk7B,KAAK,CAAE58B,CAAF,CAAL,CAAW0B,IAAlB;;AACA,oBAAKA,IAAI,CAACY,OAAL,CAAc,OAAd,MAA4B,CAAjC,EAAqC;AACpCZ,kBAAAA,IAAI,GAAG2qC,SAAS,CAAE3qC,IAAI,CAACiD,KAAL,CAAY,CAAZ,CAAF,CAAhB;AACA2oC,kBAAAA,QAAQ,CAAE9pC,IAAF,EAAQ9B,IAAR,EAActI,IAAI,CAAEsI,IAAF,CAAlB,CAAR;AACA;AACD;AACD;;AACDqrC,YAAAA,QAAQ,CAACF,GAAT,CAAcrpC,IAAd,EAAoB,cAApB,EAAoC,IAApC;AACA;AACD;;AAED,eAAOpK,IAAP;AACA,OA7B2B,CA+B5B;;;AACA,UAAK,QAAOsf,GAAP,MAAe,QAApB,EAA+B;AAC9B,eAAO,KAAK/e,IAAL,CAAW,YAAW;AAC5BqzC,UAAAA,QAAQ,CAACH,GAAT,CAAc,IAAd,EAAoBn0B,GAApB;AACA,SAFM,CAAP;AAGA;;AAED,aAAOgzB,MAAM,CAAE,IAAF,EAAQ,UAAUvyB,KAAV,EAAkB;AACtC,YAAI/f,IAAJ,CADsC,CAGtC;AACA;AACA;AACA;AACA;;AACA,YAAKoK,IAAI,IAAI2V,KAAK,KAAKqL,SAAvB,EAAmC;AAElC;AACA;AACAprB,UAAAA,IAAI,GAAG4zC,QAAQ,CAAC/yB,GAAT,CAAczW,IAAd,EAAoBkV,GAApB,CAAP;;AACA,cAAKtf,IAAI,KAAKorB,SAAd,EAA0B;AACzB,mBAAOprB,IAAP;AACA,WAPiC,CASlC;AACA;;;AACAA,UAAAA,IAAI,GAAGk0C,QAAQ,CAAE9pC,IAAF,EAAQkV,GAAR,CAAf;;AACA,cAAKtf,IAAI,KAAKorB,SAAd,EAA0B;AACzB,mBAAOprB,IAAP;AACA,WAdiC,CAgBlC;;;AACA;AACA,SA1BqC,CA4BtC;;;AACA,aAAKO,IAAL,CAAW,YAAW;AAErB;AACAqzC,UAAAA,QAAQ,CAACH,GAAT,CAAc,IAAd,EAAoBn0B,GAApB,EAAyBS,KAAzB;AACA,SAJD;AAKA,OAlCY,EAkCV,IAlCU,EAkCJA,KAlCI,EAkCGtU,SAAS,CAACxK,MAAV,GAAmB,CAlCtB,EAkCyB,IAlCzB,EAkC+B,IAlC/B,CAAb;AAmCA,KA1EgB;AA4EjBmI,IAAAA,UAAU,EAAE,oBAAUkW,GAAV,EAAgB;AAC3B,aAAO,KAAK/e,IAAL,CAAW,YAAW;AAC5BqzC,QAAAA,QAAQ,CAAC/rC,MAAT,CAAiB,IAAjB,EAAuByX,GAAvB;AACA,OAFM,CAAP;AAGA;AAhFgB,GAAlB;AAoFA0c,EAAAA,MAAM,CAACl8B,MAAP,CAAe;AACdyuC,IAAAA,KAAK,EAAE,eAAUnkC,IAAV,EAAgBX,IAAhB,EAAsBzJ,IAAtB,EAA6B;AACnC,UAAIuuC,KAAJ;;AAEA,UAAKnkC,IAAL,EAAY;AACXX,QAAAA,IAAI,GAAG,CAAEA,IAAI,IAAI,IAAV,IAAmB,OAA1B;AACA8kC,QAAAA,KAAK,GAAGoF,QAAQ,CAAC9yB,GAAT,CAAczW,IAAd,EAAoBX,IAApB,CAAR,CAFW,CAIX;;AACA,YAAKzJ,IAAL,EAAY;AACX,cAAK,CAACuuC,KAAD,IAAUljC,KAAK,CAACinB,OAAN,CAAetyB,IAAf,CAAf,EAAuC;AACtCuuC,YAAAA,KAAK,GAAGoF,QAAQ,CAACrB,MAAT,CAAiBloC,IAAjB,EAAuBX,IAAvB,EAA6BuyB,MAAM,CAACyB,SAAP,CAAkBz9B,IAAlB,CAA7B,CAAR;AACA,WAFD,MAEO;AACNuuC,YAAAA,KAAK,CAACxlC,IAAN,CAAY/I,IAAZ;AACA;AACD;;AACD,eAAOuuC,KAAK,IAAI,EAAhB;AACA;AACD,KAlBa;AAoBd8F,IAAAA,OAAO,EAAE,iBAAUjqC,IAAV,EAAgBX,IAAhB,EAAuB;AAC/BA,MAAAA,IAAI,GAAGA,IAAI,IAAI,IAAf;;AAEA,UAAI8kC,KAAK,GAAGvS,MAAM,CAACuS,KAAP,CAAcnkC,IAAd,EAAoBX,IAApB,CAAZ;AAAA,UACC6qC,WAAW,GAAG/F,KAAK,CAACttC,MADrB;AAAA,UAEC6K,EAAE,GAAGyiC,KAAK,CAACnL,KAAN,EAFN;AAAA,UAGCmR,KAAK,GAAGvY,MAAM,CAACwY,WAAP,CAAoBpqC,IAApB,EAA0BX,IAA1B,CAHT;AAAA,UAICtG,IAAI,GAAG,SAAPA,IAAO,GAAW;AACjB64B,QAAAA,MAAM,CAACqY,OAAP,CAAgBjqC,IAAhB,EAAsBX,IAAtB;AACA,OANF,CAH+B,CAW/B;;;AACA,UAAKqC,EAAE,KAAK,YAAZ,EAA2B;AAC1BA,QAAAA,EAAE,GAAGyiC,KAAK,CAACnL,KAAN,EAAL;AACAkR,QAAAA,WAAW;AACX;;AAED,UAAKxoC,EAAL,EAAU;AAET;AACA;AACA,YAAKrC,IAAI,KAAK,IAAd,EAAqB;AACpB8kC,UAAAA,KAAK,CAACvI,OAAN,CAAe,YAAf;AACA,SANQ,CAQT;;;AACA,eAAOuO,KAAK,CAACjvC,IAAb;AACAwG,QAAAA,EAAE,CAACN,IAAH,CAASpB,IAAT,EAAejH,IAAf,EAAqBoxC,KAArB;AACA;;AAED,UAAK,CAACD,WAAD,IAAgBC,KAArB,EAA6B;AAC5BA,QAAAA,KAAK,CAAC3F,KAAN,CAAYH,IAAZ;AACA;AACD,KArDa;AAuDd;AACA+F,IAAAA,WAAW,EAAE,qBAAUpqC,IAAV,EAAgBX,IAAhB,EAAuB;AACnC,UAAI6V,GAAG,GAAG7V,IAAI,GAAG,YAAjB;AACA,aAAOkqC,QAAQ,CAAC9yB,GAAT,CAAczW,IAAd,EAAoBkV,GAApB,KAA6Bq0B,QAAQ,CAACrB,MAAT,CAAiBloC,IAAjB,EAAuBkV,GAAvB,EAA4B;AAC/DsvB,QAAAA,KAAK,EAAE5S,MAAM,CAACkS,SAAP,CAAkB,aAAlB,EAAkC1mC,GAAlC,CAAuC,YAAW;AACxDmsC,UAAAA,QAAQ,CAAC9rC,MAAT,CAAiBuC,IAAjB,EAAuB,CAAEX,IAAI,GAAG,OAAT,EAAkB6V,GAAlB,CAAvB;AACA,SAFM;AADwD,OAA5B,CAApC;AAKA;AA/Da,GAAf;AAkEA0c,EAAAA,MAAM,CAAClwB,EAAP,CAAUhM,MAAV,CAAkB;AACjByuC,IAAAA,KAAK,EAAE,eAAU9kC,IAAV,EAAgBzJ,IAAhB,EAAuB;AAC7B,UAAIy0C,MAAM,GAAG,CAAb;;AAEA,UAAK,OAAOhrC,IAAP,KAAgB,QAArB,EAAgC;AAC/BzJ,QAAAA,IAAI,GAAGyJ,IAAP;AACAA,QAAAA,IAAI,GAAG,IAAP;AACAgrC,QAAAA,MAAM;AACN;;AAED,UAAKhpC,SAAS,CAACxK,MAAV,GAAmBwzC,MAAxB,EAAiC;AAChC,eAAOzY,MAAM,CAACuS,KAAP,CAAc,KAAM,CAAN,CAAd,EAAyB9kC,IAAzB,CAAP;AACA;;AAED,aAAOzJ,IAAI,KAAKorB,SAAT,GACN,IADM,GAEN,KAAK7qB,IAAL,CAAW,YAAW;AACrB,YAAIguC,KAAK,GAAGvS,MAAM,CAACuS,KAAP,CAAc,IAAd,EAAoB9kC,IAApB,EAA0BzJ,IAA1B,CAAZ,CADqB,CAGrB;;AACAg8B,QAAAA,MAAM,CAACwY,WAAP,CAAoB,IAApB,EAA0B/qC,IAA1B;;AAEA,YAAKA,IAAI,KAAK,IAAT,IAAiB8kC,KAAK,CAAE,CAAF,CAAL,KAAe,YAArC,EAAoD;AACnDvS,UAAAA,MAAM,CAACqY,OAAP,CAAgB,IAAhB,EAAsB5qC,IAAtB;AACA;AACD,OATD,CAFD;AAYA,KA1BgB;AA2BjB4qC,IAAAA,OAAO,EAAE,iBAAU5qC,IAAV,EAAiB;AACzB,aAAO,KAAKlJ,IAAL,CAAW,YAAW;AAC5By7B,QAAAA,MAAM,CAACqY,OAAP,CAAgB,IAAhB,EAAsB5qC,IAAtB;AACA,OAFM,CAAP;AAGA,KA/BgB;AAgCjBirC,IAAAA,UAAU,EAAE,oBAAUjrC,IAAV,EAAiB;AAC5B,aAAO,KAAK8kC,KAAL,CAAY9kC,IAAI,IAAI,IAApB,EAA0B,EAA1B,CAAP;AACA,KAlCgB;AAoCjB;AACA;AACA+lC,IAAAA,OAAO,EAAE,iBAAU/lC,IAAV,EAAgBgF,GAAhB,EAAsB;AAC9B,UAAIu2B,GAAJ;AAAA,UACC2P,KAAK,GAAG,CADT;AAAA,UAECC,KAAK,GAAG5Y,MAAM,CAAC2T,QAAP,EAFT;AAAA,UAGCzJ,QAAQ,GAAG,IAHZ;AAAA,UAICt/B,CAAC,GAAG,KAAK3F,MAJV;AAAA,UAKCouC,OAAO,GAAG,SAAVA,OAAU,GAAW;AACpB,YAAK,CAAG,GAAEsF,KAAV,EAAoB;AACnBC,UAAAA,KAAK,CAAC9D,WAAN,CAAmB5K,QAAnB,EAA6B,CAAEA,QAAF,CAA7B;AACA;AACD,OATF;;AAWA,UAAK,OAAOz8B,IAAP,KAAgB,QAArB,EAAgC;AAC/BgF,QAAAA,GAAG,GAAGhF,IAAN;AACAA,QAAAA,IAAI,GAAG2hB,SAAP;AACA;;AACD3hB,MAAAA,IAAI,GAAGA,IAAI,IAAI,IAAf;;AAEA,aAAQ7C,CAAC,EAAT,EAAc;AACbo+B,QAAAA,GAAG,GAAG2O,QAAQ,CAAC9yB,GAAT,CAAcqlB,QAAQ,CAAEt/B,CAAF,CAAtB,EAA6B6C,IAAI,GAAG,YAApC,CAAN;;AACA,YAAKu7B,GAAG,IAAIA,GAAG,CAAC4J,KAAhB,EAAwB;AACvB+F,UAAAA,KAAK;AACL3P,UAAAA,GAAG,CAAC4J,KAAJ,CAAUpnC,GAAV,CAAe6nC,OAAf;AACA;AACD;;AACDA,MAAAA,OAAO;AACP,aAAOuF,KAAK,CAACpF,OAAN,CAAe/gC,GAAf,CAAP;AACA;AAjEgB,GAAlB;AAmEA,MAAIomC,IAAI,GAAK,qCAAF,CAA0CC,MAArD;AAEA,MAAIC,OAAO,GAAG,IAAIj7B,MAAJ,CAAY,mBAAmB+6B,IAAnB,GAA0B,aAAtC,EAAqD,GAArD,CAAd;AAGA,MAAIG,SAAS,GAAG,CAAE,KAAF,EAAS,OAAT,EAAkB,QAAlB,EAA4B,MAA5B,CAAhB;AAEA,MAAIxuB,eAAe,GAAGrX,QAAQ,CAACqX,eAA/B;;AAIC,MAAIyuB,UAAU,GAAG,oBAAU7qC,IAAV,EAAiB;AAChC,WAAO4xB,MAAM,CAAC3pB,QAAP,CAAiBjI,IAAI,CAACo4B,aAAtB,EAAqCp4B,IAArC,CAAP;AACA,GAFF;AAAA,MAGC8qC,QAAQ,GAAG;AAAEA,IAAAA,QAAQ,EAAE;AAAZ,GAHZ,CAzjJgF,CA8jJhF;AACA;AACA;AACA;AACA;;;AACA,MAAK1uB,eAAe,CAAC2uB,WAArB,EAAmC;AAClCF,IAAAA,UAAU,GAAG,oBAAU7qC,IAAV,EAAiB;AAC7B,aAAO4xB,MAAM,CAAC3pB,QAAP,CAAiBjI,IAAI,CAACo4B,aAAtB,EAAqCp4B,IAArC,KACNA,IAAI,CAAC+qC,WAAL,CAAkBD,QAAlB,MAAiC9qC,IAAI,CAACo4B,aADvC;AAEA,KAHD;AAIA;;AACF,MAAI4S,kBAAkB,GAAG,SAArBA,kBAAqB,CAAUhrC,IAAV,EAAgB3J,EAAhB,EAAqB;AAE5C;AACA;AACA2J,IAAAA,IAAI,GAAG3J,EAAE,IAAI2J,IAAb,CAJ4C,CAM5C;;AACA,WAAOA,IAAI,CAACmF,KAAL,CAAWmR,OAAX,KAAuB,MAAvB,IACNtW,IAAI,CAACmF,KAAL,CAAWmR,OAAX,KAAuB,EAAvB,IAEA;AACA;AACA;AACA;AACAu0B,IAAAA,UAAU,CAAE7qC,IAAF,CANV,IAQA4xB,MAAM,CAACz2B,GAAP,CAAY6E,IAAZ,EAAkB,SAAlB,MAAkC,MATnC;AAUA,GAjBF;;AAqBA,WAASirC,SAAT,CAAoBjrC,IAApB,EAA0Bf,IAA1B,EAAgCisC,UAAhC,EAA4CC,KAA5C,EAAoD;AACnD,QAAIC,QAAJ;AAAA,QAAcC,KAAd;AAAA,QACCC,aAAa,GAAG,EADjB;AAAA,QAECC,YAAY,GAAGJ,KAAK,GACnB,YAAW;AACV,aAAOA,KAAK,CAAC5R,GAAN,EAAP;AACA,KAHkB,GAInB,YAAW;AACV,aAAO3H,MAAM,CAACz2B,GAAP,CAAY6E,IAAZ,EAAkBf,IAAlB,EAAwB,EAAxB,CAAP;AACA,KARH;AAAA,QASCusC,OAAO,GAAGD,YAAY,EATvB;AAAA,QAUCE,IAAI,GAAGP,UAAU,IAAIA,UAAU,CAAE,CAAF,CAAxB,KAAmCtZ,MAAM,CAAC8Z,SAAP,CAAkBzsC,IAAlB,IAA2B,EAA3B,GAAgC,IAAnE,CAVR;AAAA,QAYC;AACA0sC,IAAAA,aAAa,GAAG3rC,IAAI,CAACixB,QAAL,KACbW,MAAM,CAAC8Z,SAAP,CAAkBzsC,IAAlB,KAA4BwsC,IAAI,KAAK,IAAT,IAAiB,CAACD,OADjC,KAEfb,OAAO,CAAC/mC,IAAR,CAAcguB,MAAM,CAACz2B,GAAP,CAAY6E,IAAZ,EAAkBf,IAAlB,CAAd,CAfF;;AAiBA,QAAK0sC,aAAa,IAAIA,aAAa,CAAE,CAAF,CAAb,KAAuBF,IAA7C,EAAoD;AAEnD;AACA;AACAD,MAAAA,OAAO,GAAGA,OAAO,GAAG,CAApB,CAJmD,CAMnD;;AACAC,MAAAA,IAAI,GAAGA,IAAI,IAAIE,aAAa,CAAE,CAAF,CAA5B,CAPmD,CASnD;;AACAA,MAAAA,aAAa,GAAG,CAACH,OAAD,IAAY,CAA5B;;AAEA,aAAQF,aAAa,EAArB,EAA0B;AAEzB;AACA;AACA1Z,QAAAA,MAAM,CAACzsB,KAAP,CAAcnF,IAAd,EAAoBf,IAApB,EAA0B0sC,aAAa,GAAGF,IAA1C;;AACA,YAAK,CAAE,IAAIJ,KAAN,KAAkB,KAAMA,KAAK,GAAGE,YAAY,KAAKC,OAAjB,IAA4B,GAA1C,CAAlB,KAAuE,CAA5E,EAAgF;AAC/EF,UAAAA,aAAa,GAAG,CAAhB;AACA;;AACDK,QAAAA,aAAa,GAAGA,aAAa,GAAGN,KAAhC;AAEA;;AAEDM,MAAAA,aAAa,GAAGA,aAAa,GAAG,CAAhC;AACA/Z,MAAAA,MAAM,CAACzsB,KAAP,CAAcnF,IAAd,EAAoBf,IAApB,EAA0B0sC,aAAa,GAAGF,IAA1C,EAzBmD,CA2BnD;;AACAP,MAAAA,UAAU,GAAGA,UAAU,IAAI,EAA3B;AACA;;AAED,QAAKA,UAAL,EAAkB;AACjBS,MAAAA,aAAa,GAAG,CAACA,aAAD,IAAkB,CAACH,OAAnB,IAA8B,CAA9C,CADiB,CAGjB;;AACAJ,MAAAA,QAAQ,GAAGF,UAAU,CAAE,CAAF,CAAV,GACVS,aAAa,GAAG,CAAET,UAAU,CAAE,CAAF,CAAV,GAAkB,CAApB,IAA0BA,UAAU,CAAE,CAAF,CAD1C,GAEV,CAACA,UAAU,CAAE,CAAF,CAFZ;;AAGA,UAAKC,KAAL,EAAa;AACZA,QAAAA,KAAK,CAACM,IAAN,GAAaA,IAAb;AACAN,QAAAA,KAAK,CAACloC,KAAN,GAAc0oC,aAAd;AACAR,QAAAA,KAAK,CAAClmC,GAAN,GAAYmmC,QAAZ;AACA;AACD;;AACD,WAAOA,QAAP;AACA;;AAGD,MAAIQ,iBAAiB,GAAG,EAAxB;;AAEA,WAASC,iBAAT,CAA4B7rC,IAA5B,EAAmC;AAClC,QAAIwgB,IAAJ;AAAA,QACCiR,GAAG,GAAGzxB,IAAI,CAACo4B,aADZ;AAAA,QAECT,QAAQ,GAAG33B,IAAI,CAAC23B,QAFjB;AAAA,QAGCrhB,OAAO,GAAGs1B,iBAAiB,CAAEjU,QAAF,CAH5B;;AAKA,QAAKrhB,OAAL,EAAe;AACd,aAAOA,OAAP;AACA;;AAEDkK,IAAAA,IAAI,GAAGiR,GAAG,CAAC/lB,IAAJ,CAASia,WAAT,CAAsB8L,GAAG,CAACzsB,aAAJ,CAAmB2yB,QAAnB,CAAtB,CAAP;AACArhB,IAAAA,OAAO,GAAGsb,MAAM,CAACz2B,GAAP,CAAYqlB,IAAZ,EAAkB,SAAlB,CAAV;AAEAA,IAAAA,IAAI,CAACsB,UAAL,CAAgB4P,WAAhB,CAA6BlR,IAA7B;;AAEA,QAAKlK,OAAO,KAAK,MAAjB,EAA0B;AACzBA,MAAAA,OAAO,GAAG,OAAV;AACA;;AACDs1B,IAAAA,iBAAiB,CAAEjU,QAAF,CAAjB,GAAgCrhB,OAAhC;AAEA,WAAOA,OAAP;AACA;;AAED,WAASw1B,QAAT,CAAmBhQ,QAAnB,EAA6BjkB,IAA7B,EAAoC;AACnC,QAAIvB,OAAJ;AAAA,QAAatW,IAAb;AAAA,QACC+rC,MAAM,GAAG,EADV;AAAA,QAEC5iC,KAAK,GAAG,CAFT;AAAA,QAGCtS,MAAM,GAAGilC,QAAQ,CAACjlC,MAHnB,CADmC,CAMnC;;AACA,WAAQsS,KAAK,GAAGtS,MAAhB,EAAwBsS,KAAK,EAA7B,EAAkC;AACjCnJ,MAAAA,IAAI,GAAG87B,QAAQ,CAAE3yB,KAAF,CAAf;;AACA,UAAK,CAACnJ,IAAI,CAACmF,KAAX,EAAmB;AAClB;AACA;;AAEDmR,MAAAA,OAAO,GAAGtW,IAAI,CAACmF,KAAL,CAAWmR,OAArB;;AACA,UAAKuB,IAAL,EAAY;AAEX;AACA;AACA;AACA,YAAKvB,OAAO,KAAK,MAAjB,EAA0B;AACzBy1B,UAAAA,MAAM,CAAE5iC,KAAF,CAAN,GAAkBogC,QAAQ,CAAC9yB,GAAT,CAAczW,IAAd,EAAoB,SAApB,KAAmC,IAArD;;AACA,cAAK,CAAC+rC,MAAM,CAAE5iC,KAAF,CAAZ,EAAwB;AACvBnJ,YAAAA,IAAI,CAACmF,KAAL,CAAWmR,OAAX,GAAqB,EAArB;AACA;AACD;;AACD,YAAKtW,IAAI,CAACmF,KAAL,CAAWmR,OAAX,KAAuB,EAAvB,IAA6B00B,kBAAkB,CAAEhrC,IAAF,CAApD,EAA+D;AAC9D+rC,UAAAA,MAAM,CAAE5iC,KAAF,CAAN,GAAkB0iC,iBAAiB,CAAE7rC,IAAF,CAAnC;AACA;AACD,OAdD,MAcO;AACN,YAAKsW,OAAO,KAAK,MAAjB,EAA0B;AACzBy1B,UAAAA,MAAM,CAAE5iC,KAAF,CAAN,GAAkB,MAAlB,CADyB,CAGzB;;AACAogC,UAAAA,QAAQ,CAACF,GAAT,CAAcrpC,IAAd,EAAoB,SAApB,EAA+BsW,OAA/B;AACA;AACD;AACD,KApCkC,CAsCnC;;;AACA,SAAMnN,KAAK,GAAG,CAAd,EAAiBA,KAAK,GAAGtS,MAAzB,EAAiCsS,KAAK,EAAtC,EAA2C;AAC1C,UAAK4iC,MAAM,CAAE5iC,KAAF,CAAN,IAAmB,IAAxB,EAA+B;AAC9B2yB,QAAAA,QAAQ,CAAE3yB,KAAF,CAAR,CAAkBhE,KAAlB,CAAwBmR,OAAxB,GAAkCy1B,MAAM,CAAE5iC,KAAF,CAAxC;AACA;AACD;;AAED,WAAO2yB,QAAP;AACA;;AAEDlK,EAAAA,MAAM,CAAClwB,EAAP,CAAUhM,MAAV,CAAkB;AACjBmiB,IAAAA,IAAI,EAAE,gBAAW;AAChB,aAAOi0B,QAAQ,CAAE,IAAF,EAAQ,IAAR,CAAf;AACA,KAHgB;AAIjB//B,IAAAA,IAAI,EAAE,gBAAW;AAChB,aAAO+/B,QAAQ,CAAE,IAAF,CAAf;AACA,KANgB;AAOjBjzC,IAAAA,MAAM,EAAE,gBAAU4sC,KAAV,EAAkB;AACzB,UAAK,OAAOA,KAAP,KAAiB,SAAtB,EAAkC;AACjC,eAAOA,KAAK,GAAG,KAAK5tB,IAAL,EAAH,GAAiB,KAAK9L,IAAL,EAA7B;AACA;;AAED,aAAO,KAAK5V,IAAL,CAAW,YAAW;AAC5B,YAAK60C,kBAAkB,CAAE,IAAF,CAAvB,EAAkC;AACjCpZ,UAAAA,MAAM,CAAE,IAAF,CAAN,CAAe/Z,IAAf;AACA,SAFD,MAEO;AACN+Z,UAAAA,MAAM,CAAE,IAAF,CAAN,CAAe7lB,IAAf;AACA;AACD,OANM,CAAP;AAOA;AAnBgB,GAAlB;AAqBA,MAAIigC,cAAc,GAAK,uBAAvB;AAEA,MAAIC,QAAQ,GAAK,gCAAjB;AAEA,MAAIC,WAAW,GAAK,oCAApB;;AAIA,GAAE,YAAW;AACZ,QAAIC,QAAQ,GAAGpnC,QAAQ,CAACqnC,sBAAT,EAAf;AAAA,QACCC,GAAG,GAAGF,QAAQ,CAACxmB,WAAT,CAAsB5gB,QAAQ,CAACC,aAAT,CAAwB,KAAxB,CAAtB,CADP;AAAA,QAECsS,KAAK,GAAGvS,QAAQ,CAACC,aAAT,CAAwB,OAAxB,CAFT,CADY,CAKZ;AACA;AACA;AACA;;AACAsS,IAAAA,KAAK,CAAChI,YAAN,CAAoB,MAApB,EAA4B,OAA5B;AACAgI,IAAAA,KAAK,CAAChI,YAAN,CAAoB,SAApB,EAA+B,SAA/B;AACAgI,IAAAA,KAAK,CAAChI,YAAN,CAAoB,MAApB,EAA4B,GAA5B;AAEA+8B,IAAAA,GAAG,CAAC1mB,WAAJ,CAAiBrO,KAAjB,EAbY,CAeZ;AACA;;AACAyZ,IAAAA,OAAO,CAACub,UAAR,GAAqBD,GAAG,CAACE,SAAJ,CAAe,IAAf,EAAsBA,SAAtB,CAAiC,IAAjC,EAAwC3O,SAAxC,CAAkDU,OAAvE,CAjBY,CAmBZ;AACA;;AACA+N,IAAAA,GAAG,CAACxR,SAAJ,GAAgB,wBAAhB;AACA9J,IAAAA,OAAO,CAACyb,cAAR,GAAyB,CAAC,CAACH,GAAG,CAACE,SAAJ,CAAe,IAAf,EAAsB3O,SAAtB,CAAgCkE,YAA3D,CAtBY,CAwBZ;AACA;AACA;;AACAuK,IAAAA,GAAG,CAACxR,SAAJ,GAAgB,mBAAhB;AACA9J,IAAAA,OAAO,CAAC1wB,MAAR,GAAiB,CAAC,CAACgsC,GAAG,CAACzO,SAAvB;AACA,GA7BD,IAtwJiF,CAsyJjF;;;AACA,MAAI6O,OAAO,GAAG;AAEb;AACA;AACA;AACAC,IAAAA,KAAK,EAAE,CAAE,CAAF,EAAK,SAAL,EAAgB,UAAhB,CALM;AAMbC,IAAAA,GAAG,EAAE,CAAE,CAAF,EAAK,mBAAL,EAA0B,qBAA1B,CANQ;AAObC,IAAAA,EAAE,EAAE,CAAE,CAAF,EAAK,gBAAL,EAAuB,kBAAvB,CAPS;AAQbC,IAAAA,EAAE,EAAE,CAAE,CAAF,EAAK,oBAAL,EAA2B,uBAA3B,CARS;AAUbC,IAAAA,QAAQ,EAAE,CAAE,CAAF,EAAK,EAAL,EAAS,EAAT;AAVG,GAAd;AAaAL,EAAAA,OAAO,CAACM,KAAR,GAAgBN,OAAO,CAACO,KAAR,GAAgBP,OAAO,CAACQ,QAAR,GAAmBR,OAAO,CAACS,OAAR,GAAkBT,OAAO,CAACC,KAA7E;AACAD,EAAAA,OAAO,CAACU,EAAR,GAAaV,OAAO,CAACI,EAArB,CArzJiF,CAuzJjF;;AACA,MAAK,CAAC9b,OAAO,CAAC1wB,MAAd,EAAuB;AACtBosC,IAAAA,OAAO,CAACW,QAAR,GAAmBX,OAAO,CAACpsC,MAAR,GAAiB,CAAE,CAAF,EAAK,8BAAL,EAAqC,WAArC,CAApC;AACA;;AAGD,WAASgtC,MAAT,CAAiBrrC,OAAjB,EAA0B24B,GAA1B,EAAgC;AAE/B;AACA;AACA,QAAI5S,GAAJ;;AAEA,QAAK,OAAO/lB,OAAO,CAACyjB,oBAAf,KAAwC,WAA7C,EAA2D;AAC1DsC,MAAAA,GAAG,GAAG/lB,OAAO,CAACyjB,oBAAR,CAA8BkV,GAAG,IAAI,GAArC,CAAN;AAEA,KAHD,MAGO,IAAK,OAAO34B,OAAO,CAAC22B,gBAAf,KAAoC,WAAzC,EAAuD;AAC7D5Q,MAAAA,GAAG,GAAG/lB,OAAO,CAAC22B,gBAAR,CAA0BgC,GAAG,IAAI,GAAjC,CAAN;AAEA,KAHM,MAGA;AACN5S,MAAAA,GAAG,GAAG,EAAN;AACA;;AAED,QAAK4S,GAAG,KAAK3Z,SAAR,IAAqB2Z,GAAG,IAAIhD,QAAQ,CAAE31B,OAAF,EAAW24B,GAAX,CAAzC,EAA4D;AAC3D,aAAO/I,MAAM,CAACO,KAAP,CAAc,CAAEnwB,OAAF,CAAd,EAA2B+lB,GAA3B,CAAP;AACA;;AAED,WAAOA,GAAP;AACA,GAl1JgF,CAq1JjF;;;AACA,WAASulB,aAAT,CAAwBpb,KAAxB,EAA+Bqb,WAA/B,EAA6C;AAC5C,QAAI/wC,CAAC,GAAG,CAAR;AAAA,QACC0mC,CAAC,GAAGhR,KAAK,CAACr7B,MADX;;AAGA,WAAQ2F,CAAC,GAAG0mC,CAAZ,EAAe1mC,CAAC,EAAhB,EAAqB;AACpB+sC,MAAAA,QAAQ,CAACF,GAAT,CACCnX,KAAK,CAAE11B,CAAF,CADN,EAEC,YAFD,EAGC,CAAC+wC,WAAD,IAAgBhE,QAAQ,CAAC9yB,GAAT,CAAc82B,WAAW,CAAE/wC,CAAF,CAAzB,EAAgC,YAAhC,CAHjB;AAKA;AACD;;AAGD,MAAI+5B,KAAK,GAAG,WAAZ;;AAEA,WAASiX,aAAT,CAAwBtb,KAAxB,EAA+BlwB,OAA/B,EAAwCyrC,OAAxC,EAAiDC,SAAjD,EAA4DC,OAA5D,EAAsE;AACrE,QAAI3tC,IAAJ;AAAA,QAAU46B,GAAV;AAAA,QAAeD,GAAf;AAAA,QAAoB5+B,IAApB;AAAA,QAA0B6xC,QAA1B;AAAA,QAAoCnb,CAApC;AAAA,QACC0Z,QAAQ,GAAGnqC,OAAO,CAACoqC,sBAAR,EADZ;AAAA,QAECyB,KAAK,GAAG,EAFT;AAAA,QAGCrxC,CAAC,GAAG,CAHL;AAAA,QAIC0mC,CAAC,GAAGhR,KAAK,CAACr7B,MAJX;;AAMA,WAAQ2F,CAAC,GAAG0mC,CAAZ,EAAe1mC,CAAC,EAAhB,EAAqB;AACpBwD,MAAAA,IAAI,GAAGkyB,KAAK,CAAE11B,CAAF,CAAZ;;AAEA,UAAKwD,IAAI,IAAIA,IAAI,KAAK,CAAtB,EAA0B;AAEzB;AACA,YAAK2xB,MAAM,CAAE3xB,IAAF,CAAN,KAAmB,QAAxB,EAAmC;AAElC;AACA;AACA4xB,UAAAA,MAAM,CAACO,KAAP,CAAc0b,KAAd,EAAqB7tC,IAAI,CAACixB,QAAL,GAAgB,CAAEjxB,IAAF,CAAhB,GAA2BA,IAAhD,EAJkC,CAMnC;AACC,SAPD,MAOO,IAAK,CAACu2B,KAAK,CAAC9zB,IAAN,CAAYzC,IAAZ,CAAN,EAA2B;AACjC6tC,UAAAA,KAAK,CAAClvC,IAAN,CAAYqD,OAAO,CAAC8rC,cAAR,CAAwB9tC,IAAxB,CAAZ,EADiC,CAGlC;AACC,SAJM,MAIA;AACN46B,UAAAA,GAAG,GAAGA,GAAG,IAAIuR,QAAQ,CAACxmB,WAAT,CAAsB3jB,OAAO,CAACgD,aAAR,CAAuB,KAAvB,CAAtB,CAAb,CADM,CAGN;;AACA21B,UAAAA,GAAG,GAAG,CAAEsR,QAAQ,CAACroC,IAAT,CAAe5D,IAAf,KAAyB,CAAE,EAAF,EAAM,EAAN,CAA3B,EAAyC,CAAzC,EAA6CvB,WAA7C,EAAN;AACA1C,UAAAA,IAAI,GAAG0wC,OAAO,CAAE9R,GAAF,CAAP,IAAkB8R,OAAO,CAACK,QAAjC;AACAlS,UAAAA,GAAG,CAACC,SAAJ,GAAgB9+B,IAAI,CAAE,CAAF,CAAJ,GAAY61B,MAAM,CAACmc,aAAP,CAAsB/tC,IAAtB,CAAZ,GAA2CjE,IAAI,CAAE,CAAF,CAA/D,CANM,CAQN;;AACA02B,UAAAA,CAAC,GAAG12B,IAAI,CAAE,CAAF,CAAR;;AACA,iBAAQ02B,CAAC,EAAT,EAAc;AACbmI,YAAAA,GAAG,GAAGA,GAAG,CAACgD,SAAV;AACA,WAZK,CAcN;AACA;;;AACAhM,UAAAA,MAAM,CAACO,KAAP,CAAc0b,KAAd,EAAqBjT,GAAG,CAAChD,UAAzB,EAhBM,CAkBN;;AACAgD,UAAAA,GAAG,GAAGuR,QAAQ,CAAC9P,UAAf,CAnBM,CAqBN;;AACAzB,UAAAA,GAAG,CAAC1U,WAAJ,GAAkB,EAAlB;AACA;AACD;AACD,KAjDoE,CAmDrE;;;AACAimB,IAAAA,QAAQ,CAACjmB,WAAT,GAAuB,EAAvB;AAEA1pB,IAAAA,CAAC,GAAG,CAAJ;;AACA,WAAUwD,IAAI,GAAG6tC,KAAK,CAAErxC,CAAC,EAAH,CAAtB,EAAkC;AAEjC;AACA,UAAKkxC,SAAS,IAAI9b,MAAM,CAAC0B,OAAP,CAAgBtzB,IAAhB,EAAsB0tC,SAAtB,IAAoC,CAAC,CAAvD,EAA2D;AAC1D,YAAKC,OAAL,EAAe;AACdA,UAAAA,OAAO,CAAChvC,IAAR,CAAcqB,IAAd;AACA;;AACD;AACA;;AAED4tC,MAAAA,QAAQ,GAAG/C,UAAU,CAAE7qC,IAAF,CAArB,CAViC,CAYjC;;AACA46B,MAAAA,GAAG,GAAGyS,MAAM,CAAElB,QAAQ,CAACxmB,WAAT,CAAsB3lB,IAAtB,CAAF,EAAgC,QAAhC,CAAZ,CAbiC,CAejC;;AACA,UAAK4tC,QAAL,EAAgB;AACfN,QAAAA,aAAa,CAAE1S,GAAF,CAAb;AACA,OAlBgC,CAoBjC;;;AACA,UAAK6S,OAAL,EAAe;AACdhb,QAAAA,CAAC,GAAG,CAAJ;;AACA,eAAUzyB,IAAI,GAAG46B,GAAG,CAAEnI,CAAC,EAAH,CAApB,EAAgC;AAC/B,cAAKyZ,WAAW,CAACzpC,IAAZ,CAAkBzC,IAAI,CAACX,IAAL,IAAa,EAA/B,CAAL,EAA2C;AAC1CouC,YAAAA,OAAO,CAAC9uC,IAAR,CAAcqB,IAAd;AACA;AACD;AACD;AACD;;AAED,WAAOmsC,QAAP;AACA;;AAGD,MAAI6B,cAAc,GAAG,qBAArB;;AAEA,WAASC,UAAT,GAAsB;AACrB,WAAO,IAAP;AACA;;AAED,WAASC,WAAT,GAAuB;AACtB,WAAO,KAAP;AACA,GAx8JgF,CA08JjF;AACA;AACA;AACA;AACA;AACA;;;AACA,WAASC,UAAT,CAAqBnuC,IAArB,EAA2BX,IAA3B,EAAkC;AACjC,WAASW,IAAI,KAAKouC,iBAAiB,EAA5B,MAAuC/uC,IAAI,KAAK,OAAhD,CAAP;AACA,GAl9JgF,CAo9JjF;AACA;AACA;;;AACA,WAAS+uC,iBAAT,GAA6B;AAC5B,QAAI;AACH,aAAOrpC,QAAQ,CAAC+T,aAAhB;AACA,KAFD,CAEE,OAAQjZ,GAAR,EAAc,CAAG;AACnB;;AAED,WAASnH,GAAT,CAAasH,IAAb,EAAmBquC,KAAnB,EAA0Bxc,QAA1B,EAAoCj8B,IAApC,EAA0C8L,EAA1C,EAA8CgE,GAA9C,EAAoD;AACnD,QAAI4oC,MAAJ,EAAYjvC,IAAZ,CADmD,CAGnD;;AACA,QAAK,QAAOgvC,KAAP,MAAiB,QAAtB,EAAiC;AAEhC;AACA,UAAK,OAAOxc,QAAP,KAAoB,QAAzB,EAAoC;AAEnC;AACAj8B,QAAAA,IAAI,GAAGA,IAAI,IAAIi8B,QAAf;AACAA,QAAAA,QAAQ,GAAG7Q,SAAX;AACA;;AACD,WAAM3hB,IAAN,IAAcgvC,KAAd,EAAsB;AACrB31C,QAAAA,GAAE,CAAEsH,IAAF,EAAQX,IAAR,EAAcwyB,QAAd,EAAwBj8B,IAAxB,EAA8By4C,KAAK,CAAEhvC,IAAF,CAAnC,EAA6CqG,GAA7C,CAAF;AACA;;AACD,aAAO1F,IAAP;AACA;;AAED,QAAKpK,IAAI,IAAI,IAAR,IAAgB8L,EAAE,IAAI,IAA3B,EAAkC;AAEjC;AACAA,MAAAA,EAAE,GAAGmwB,QAAL;AACAj8B,MAAAA,IAAI,GAAGi8B,QAAQ,GAAG7Q,SAAlB;AACA,KALD,MAKO,IAAKtf,EAAE,IAAI,IAAX,EAAkB;AACxB,UAAK,OAAOmwB,QAAP,KAAoB,QAAzB,EAAoC;AAEnC;AACAnwB,QAAAA,EAAE,GAAG9L,IAAL;AACAA,QAAAA,IAAI,GAAGorB,SAAP;AACA,OALD,MAKO;AAEN;AACAtf,QAAAA,EAAE,GAAG9L,IAAL;AACAA,QAAAA,IAAI,GAAGi8B,QAAP;AACAA,QAAAA,QAAQ,GAAG7Q,SAAX;AACA;AACD;;AACD,QAAKtf,EAAE,KAAK,KAAZ,EAAoB;AACnBA,MAAAA,EAAE,GAAGwsC,WAAL;AACA,KAFD,MAEO,IAAK,CAACxsC,EAAN,EAAW;AACjB,aAAO1B,IAAP;AACA;;AAED,QAAK0F,GAAG,KAAK,CAAb,EAAiB;AAChB4oC,MAAAA,MAAM,GAAG5sC,EAAT;;AACAA,MAAAA,EAAE,GAAG,YAAUsP,KAAV,EAAkB;AAEtB;AACA4gB,QAAAA,MAAM,GAAGn5B,GAAT,CAAcuY,KAAd;AACA,eAAOs9B,MAAM,CAAC/sC,KAAP,CAAc,IAAd,EAAoBF,SAApB,CAAP;AACA,OALD,CAFgB,CAShB;;;AACAK,MAAAA,EAAE,CAACkyB,IAAH,GAAU0a,MAAM,CAAC1a,IAAP,KAAiB0a,MAAM,CAAC1a,IAAP,GAAchC,MAAM,CAACgC,IAAP,EAA/B,CAAV;AACA;;AACD,WAAO5zB,IAAI,CAAC7J,IAAL,CAAW,YAAW;AAC5By7B,MAAAA,MAAM,CAAC5gB,KAAP,CAAa5T,GAAb,CAAkB,IAAlB,EAAwBixC,KAAxB,EAA+B3sC,EAA/B,EAAmC9L,IAAnC,EAAyCi8B,QAAzC;AACA,KAFM,CAAP;AAGA;AAED;AACA;AACA;AACA;;;AACAD,EAAAA,MAAM,CAAC5gB,KAAP,GAAe;AAEdif,IAAAA,MAAM,EAAE,EAFM;AAId7yB,IAAAA,GAAG,EAAE,aAAU4C,IAAV,EAAgBquC,KAAhB,EAAuBhpC,OAAvB,EAAgCzP,IAAhC,EAAsCi8B,QAAtC,EAAiD;AAErD,UAAI0c,WAAJ;AAAA,UAAiBC,WAAjB;AAAA,UAA8B5T,GAA9B;AAAA,UACC5X,MADD;AAAA,UACSyrB,CADT;AAAA,UACYC,SADZ;AAAA,UAEC/iB,OAFD;AAAA,UAEUgjB,QAFV;AAAA,UAEoBtvC,IAFpB;AAAA,UAE0BuvC,UAF1B;AAAA,UAEsCC,QAFtC;AAAA,UAGCC,QAAQ,GAAGvF,QAAQ,CAAC9yB,GAAT,CAAczW,IAAd,CAHZ,CAFqD,CAOrD;;AACA,UAAK,CAAC+oC,UAAU,CAAE/oC,IAAF,CAAhB,EAA2B;AAC1B;AACA,OAVoD,CAYrD;;;AACA,UAAKqF,OAAO,CAACA,OAAb,EAAuB;AACtBkpC,QAAAA,WAAW,GAAGlpC,OAAd;AACAA,QAAAA,OAAO,GAAGkpC,WAAW,CAAClpC,OAAtB;AACAwsB,QAAAA,QAAQ,GAAG0c,WAAW,CAAC1c,QAAvB;AACA,OAjBoD,CAmBrD;AACA;;;AACA,UAAKA,QAAL,EAAgB;AACfD,QAAAA,MAAM,CAACl7B,IAAP,CAAYokC,eAAZ,CAA6B1e,eAA7B,EAA8CyV,QAA9C;AACA,OAvBoD,CAyBrD;;;AACA,UAAK,CAACxsB,OAAO,CAACuuB,IAAd,EAAqB;AACpBvuB,QAAAA,OAAO,CAACuuB,IAAR,GAAehC,MAAM,CAACgC,IAAP,EAAf;AACA,OA5BoD,CA8BrD;;;AACA,UAAK,EAAG5Q,MAAM,GAAG8rB,QAAQ,CAAC9rB,MAArB,CAAL,EAAqC;AACpCA,QAAAA,MAAM,GAAG8rB,QAAQ,CAAC9rB,MAAT,GAAkBrjB,MAAM,CAACovC,MAAP,CAAe,IAAf,CAA3B;AACA;;AACD,UAAK,EAAGP,WAAW,GAAGM,QAAQ,CAACE,MAA1B,CAAL,EAA0C;AACzCR,QAAAA,WAAW,GAAGM,QAAQ,CAACE,MAAT,GAAkB,UAAUr2C,CAAV,EAAc;AAE7C;AACA;AACA,iBAAO,OAAOi5B,MAAP,KAAkB,WAAlB,IAAiCA,MAAM,CAAC5gB,KAAP,CAAai+B,SAAb,KAA2Bt2C,CAAC,CAAC0G,IAA9D,GACNuyB,MAAM,CAAC5gB,KAAP,CAAak+B,QAAb,CAAsB3tC,KAAtB,CAA6BvB,IAA7B,EAAmCqB,SAAnC,CADM,GAC2C2f,SADlD;AAEA,SAND;AAOA,OA1CoD,CA4CrD;;;AACAqtB,MAAAA,KAAK,GAAG,CAAEA,KAAK,IAAI,EAAX,EAAgB1jC,KAAhB,CAAuB+4B,aAAvB,KAA0C,CAAE,EAAF,CAAlD;AACA+K,MAAAA,CAAC,GAAGJ,KAAK,CAACx3C,MAAV;;AACA,aAAQ43C,CAAC,EAAT,EAAc;AACb7T,QAAAA,GAAG,GAAGoT,cAAc,CAACpqC,IAAf,CAAqByqC,KAAK,CAAEI,CAAF,CAA1B,KAAqC,EAA3C;AACApvC,QAAAA,IAAI,GAAGwvC,QAAQ,GAAGjU,GAAG,CAAE,CAAF,CAArB;AACAgU,QAAAA,UAAU,GAAG,CAAEhU,GAAG,CAAE,CAAF,CAAH,IAAY,EAAd,EAAmBx6B,KAAnB,CAA0B,GAA1B,EAAgCijB,IAAhC,EAAb,CAHa,CAKb;;AACA,YAAK,CAAChkB,IAAN,EAAa;AACZ;AACA,SARY,CAUb;;;AACAssB,QAAAA,OAAO,GAAGiG,MAAM,CAAC5gB,KAAP,CAAa2a,OAAb,CAAsBtsB,IAAtB,KAAgC,EAA1C,CAXa,CAab;;AACAA,QAAAA,IAAI,GAAG,CAAEwyB,QAAQ,GAAGlG,OAAO,CAACwjB,YAAX,GAA0BxjB,OAAO,CAACyjB,QAA5C,KAA0D/vC,IAAjE,CAda,CAgBb;;AACAssB,QAAAA,OAAO,GAAGiG,MAAM,CAAC5gB,KAAP,CAAa2a,OAAb,CAAsBtsB,IAAtB,KAAgC,EAA1C,CAjBa,CAmBb;;AACAqvC,QAAAA,SAAS,GAAG9c,MAAM,CAACl8B,MAAP,CAAe;AAC1B2J,UAAAA,IAAI,EAAEA,IADoB;AAE1BwvC,UAAAA,QAAQ,EAAEA,QAFgB;AAG1Bj5C,UAAAA,IAAI,EAAEA,IAHoB;AAI1ByP,UAAAA,OAAO,EAAEA,OAJiB;AAK1BuuB,UAAAA,IAAI,EAAEvuB,OAAO,CAACuuB,IALY;AAM1B/B,UAAAA,QAAQ,EAAEA,QANgB;AAO1ByQ,UAAAA,YAAY,EAAEzQ,QAAQ,IAAID,MAAM,CAACiK,IAAP,CAAYlxB,KAAZ,CAAkB23B,YAAlB,CAA+B7/B,IAA/B,CAAqCovB,QAArC,CAPA;AAQ1BttB,UAAAA,SAAS,EAAEqqC,UAAU,CAACl+B,IAAX,CAAiB,GAAjB;AARe,SAAf,EAST69B,WATS,CAAZ,CApBa,CA+Bb;;AACA,YAAK,EAAGI,QAAQ,GAAG3rB,MAAM,CAAE3jB,IAAF,CAApB,CAAL,EAAsC;AACrCsvC,UAAAA,QAAQ,GAAG3rB,MAAM,CAAE3jB,IAAF,CAAN,GAAiB,EAA5B;AACAsvC,UAAAA,QAAQ,CAACU,aAAT,GAAyB,CAAzB,CAFqC,CAIrC;;AACA,cAAK,CAAC1jB,OAAO,CAACE,KAAT,IACJF,OAAO,CAACE,KAAR,CAAczqB,IAAd,CAAoBpB,IAApB,EAA0BpK,IAA1B,EAAgCg5C,UAAhC,EAA4CJ,WAA5C,MAA8D,KAD/D,EACuE;AAEtE,gBAAKxuC,IAAI,CAACsrB,gBAAV,EAA6B;AAC5BtrB,cAAAA,IAAI,CAACsrB,gBAAL,CAAuBjsB,IAAvB,EAA6BmvC,WAA7B;AACA;AACD;AACD;;AAED,YAAK7iB,OAAO,CAACvuB,GAAb,EAAmB;AAClBuuB,UAAAA,OAAO,CAACvuB,GAAR,CAAYgE,IAAZ,CAAkBpB,IAAlB,EAAwB0uC,SAAxB;;AAEA,cAAK,CAACA,SAAS,CAACrpC,OAAV,CAAkBuuB,IAAxB,EAA+B;AAC9B8a,YAAAA,SAAS,CAACrpC,OAAV,CAAkBuuB,IAAlB,GAAyBvuB,OAAO,CAACuuB,IAAjC;AACA;AACD,SApDY,CAsDb;;;AACA,YAAK/B,QAAL,EAAgB;AACf8c,UAAAA,QAAQ,CAAC9vC,MAAT,CAAiB8vC,QAAQ,CAACU,aAAT,EAAjB,EAA2C,CAA3C,EAA8CX,SAA9C;AACA,SAFD,MAEO;AACNC,UAAAA,QAAQ,CAAChwC,IAAT,CAAe+vC,SAAf;AACA,SA3DY,CA6Db;;;AACA9c,QAAAA,MAAM,CAAC5gB,KAAP,CAAaif,MAAb,CAAqB5wB,IAArB,IAA8B,IAA9B;AACA;AAED,KApHa;AAsHd;AACA5B,IAAAA,MAAM,EAAE,gBAAUuC,IAAV,EAAgBquC,KAAhB,EAAuBhpC,OAAvB,EAAgCwsB,QAAhC,EAA0Cyd,WAA1C,EAAwD;AAE/D,UAAI7c,CAAJ;AAAA,UAAO8c,SAAP;AAAA,UAAkB3U,GAAlB;AAAA,UACC5X,MADD;AAAA,UACSyrB,CADT;AAAA,UACYC,SADZ;AAAA,UAEC/iB,OAFD;AAAA,UAEUgjB,QAFV;AAAA,UAEoBtvC,IAFpB;AAAA,UAE0BuvC,UAF1B;AAAA,UAEsCC,QAFtC;AAAA,UAGCC,QAAQ,GAAGvF,QAAQ,CAACD,OAAT,CAAkBtpC,IAAlB,KAA4BupC,QAAQ,CAAC9yB,GAAT,CAAczW,IAAd,CAHxC;;AAKA,UAAK,CAAC8uC,QAAD,IAAa,EAAG9rB,MAAM,GAAG8rB,QAAQ,CAAC9rB,MAArB,CAAlB,EAAkD;AACjD;AACA,OAT8D,CAW/D;;;AACAqrB,MAAAA,KAAK,GAAG,CAAEA,KAAK,IAAI,EAAX,EAAgB1jC,KAAhB,CAAuB+4B,aAAvB,KAA0C,CAAE,EAAF,CAAlD;AACA+K,MAAAA,CAAC,GAAGJ,KAAK,CAACx3C,MAAV;;AACA,aAAQ43C,CAAC,EAAT,EAAc;AACb7T,QAAAA,GAAG,GAAGoT,cAAc,CAACpqC,IAAf,CAAqByqC,KAAK,CAAEI,CAAF,CAA1B,KAAqC,EAA3C;AACApvC,QAAAA,IAAI,GAAGwvC,QAAQ,GAAGjU,GAAG,CAAE,CAAF,CAArB;AACAgU,QAAAA,UAAU,GAAG,CAAEhU,GAAG,CAAE,CAAF,CAAH,IAAY,EAAd,EAAmBx6B,KAAnB,CAA0B,GAA1B,EAAgCijB,IAAhC,EAAb,CAHa,CAKb;;AACA,YAAK,CAAChkB,IAAN,EAAa;AACZ,eAAMA,IAAN,IAAc2jB,MAAd,EAAuB;AACtB4O,YAAAA,MAAM,CAAC5gB,KAAP,CAAavT,MAAb,CAAqBuC,IAArB,EAA2BX,IAAI,GAAGgvC,KAAK,CAAEI,CAAF,CAAvC,EAA8CppC,OAA9C,EAAuDwsB,QAAvD,EAAiE,IAAjE;AACA;;AACD;AACA;;AAEDlG,QAAAA,OAAO,GAAGiG,MAAM,CAAC5gB,KAAP,CAAa2a,OAAb,CAAsBtsB,IAAtB,KAAgC,EAA1C;AACAA,QAAAA,IAAI,GAAG,CAAEwyB,QAAQ,GAAGlG,OAAO,CAACwjB,YAAX,GAA0BxjB,OAAO,CAACyjB,QAA5C,KAA0D/vC,IAAjE;AACAsvC,QAAAA,QAAQ,GAAG3rB,MAAM,CAAE3jB,IAAF,CAAN,IAAkB,EAA7B;AACAu7B,QAAAA,GAAG,GAAGA,GAAG,CAAE,CAAF,CAAH,IACL,IAAIlrB,MAAJ,CAAY,YAAYk/B,UAAU,CAACl+B,IAAX,CAAiB,eAAjB,CAAZ,GAAiD,SAA7D,CADD,CAhBa,CAmBb;;AACA6+B,QAAAA,SAAS,GAAG9c,CAAC,GAAGkc,QAAQ,CAAC93C,MAAzB;;AACA,eAAQ47B,CAAC,EAAT,EAAc;AACbic,UAAAA,SAAS,GAAGC,QAAQ,CAAElc,CAAF,CAApB;;AAEA,cAAK,CAAE6c,WAAW,IAAIT,QAAQ,KAAKH,SAAS,CAACG,QAAxC,MACF,CAACxpC,OAAD,IAAYA,OAAO,CAACuuB,IAAR,KAAiB8a,SAAS,CAAC9a,IADrC,MAEF,CAACgH,GAAD,IAAQA,GAAG,CAACn4B,IAAJ,CAAUisC,SAAS,CAACnqC,SAApB,CAFN,MAGF,CAACstB,QAAD,IAAaA,QAAQ,KAAK6c,SAAS,CAAC7c,QAApC,IACDA,QAAQ,KAAK,IAAb,IAAqB6c,SAAS,CAAC7c,QAJ5B,CAAL,EAI8C;AAC7C8c,YAAAA,QAAQ,CAAC9vC,MAAT,CAAiB4zB,CAAjB,EAAoB,CAApB;;AAEA,gBAAKic,SAAS,CAAC7c,QAAf,EAA0B;AACzB8c,cAAAA,QAAQ,CAACU,aAAT;AACA;;AACD,gBAAK1jB,OAAO,CAACluB,MAAb,EAAsB;AACrBkuB,cAAAA,OAAO,CAACluB,MAAR,CAAe2D,IAAf,CAAqBpB,IAArB,EAA2B0uC,SAA3B;AACA;AACD;AACD,SAtCY,CAwCb;AACA;;;AACA,YAAKa,SAAS,IAAI,CAACZ,QAAQ,CAAC93C,MAA5B,EAAqC;AACpC,cAAK,CAAC80B,OAAO,CAACH,QAAT,IACJG,OAAO,CAACH,QAAR,CAAiBpqB,IAAjB,CAAuBpB,IAAvB,EAA6B4uC,UAA7B,EAAyCE,QAAQ,CAACE,MAAlD,MAA+D,KADhE,EACwE;AAEvEpd,YAAAA,MAAM,CAAC4d,WAAP,CAAoBxvC,IAApB,EAA0BX,IAA1B,EAAgCyvC,QAAQ,CAACE,MAAzC;AACA;;AAED,iBAAOhsB,MAAM,CAAE3jB,IAAF,CAAb;AACA;AACD,OAjE8D,CAmE/D;;;AACA,UAAKuyB,MAAM,CAAC7c,aAAP,CAAsBiO,MAAtB,CAAL,EAAsC;AACrCumB,QAAAA,QAAQ,CAAC9rC,MAAT,CAAiBuC,IAAjB,EAAuB,eAAvB;AACA;AACD,KA9La;AAgMdkvC,IAAAA,QAAQ,EAAE,kBAAUO,WAAV,EAAwB;AAEjC,UAAIjzC,CAAJ;AAAA,UAAOi2B,CAAP;AAAA,UAAU1K,GAAV;AAAA,UAAeL,OAAf;AAAA,UAAwBgnB,SAAxB;AAAA,UAAmCgB,YAAnC;AAAA,UACC1uC,IAAI,GAAG,IAAIC,KAAJ,CAAWI,SAAS,CAACxK,MAArB,CADR;AAAA,UAGC;AACAma,MAAAA,KAAK,GAAG4gB,MAAM,CAAC5gB,KAAP,CAAa2+B,GAAb,CAAkBF,WAAlB,CAJT;AAAA,UAMCd,QAAQ,GAAG,CACVpF,QAAQ,CAAC9yB,GAAT,CAAc,IAAd,EAAoB,QAApB,KAAkC9W,MAAM,CAACovC,MAAP,CAAe,IAAf,CADxB,EAER/9B,KAAK,CAAC3R,IAFE,KAEQ,EARpB;AAAA,UASCssB,OAAO,GAAGiG,MAAM,CAAC5gB,KAAP,CAAa2a,OAAb,CAAsB3a,KAAK,CAAC3R,IAA5B,KAAsC,EATjD,CAFiC,CAajC;;AACA2B,MAAAA,IAAI,CAAE,CAAF,CAAJ,GAAYgQ,KAAZ;;AAEA,WAAMxU,CAAC,GAAG,CAAV,EAAaA,CAAC,GAAG6E,SAAS,CAACxK,MAA3B,EAAmC2F,CAAC,EAApC,EAAyC;AACxCwE,QAAAA,IAAI,CAAExE,CAAF,CAAJ,GAAY6E,SAAS,CAAE7E,CAAF,CAArB;AACA;;AAEDwU,MAAAA,KAAK,CAAC4+B,cAAN,GAAuB,IAAvB,CApBiC,CAsBjC;;AACA,UAAKjkB,OAAO,CAACkkB,WAAR,IAAuBlkB,OAAO,CAACkkB,WAAR,CAAoBzuC,IAApB,CAA0B,IAA1B,EAAgC4P,KAAhC,MAA4C,KAAxE,EAAgF;AAC/E;AACA,OAzBgC,CA2BjC;;;AACA0+B,MAAAA,YAAY,GAAG9d,MAAM,CAAC5gB,KAAP,CAAa29B,QAAb,CAAsBvtC,IAAtB,CAA4B,IAA5B,EAAkC4P,KAAlC,EAAyC29B,QAAzC,CAAf,CA5BiC,CA8BjC;;AACAnyC,MAAAA,CAAC,GAAG,CAAJ;;AACA,aAAQ,CAAEkrB,OAAO,GAAGgoB,YAAY,CAAElzC,CAAC,EAAH,CAAxB,KAAqC,CAACwU,KAAK,CAAC8+B,oBAAN,EAA9C,EAA6E;AAC5E9+B,QAAAA,KAAK,CAAC1K,aAAN,GAAsBohB,OAAO,CAAC1nB,IAA9B;AAEAyyB,QAAAA,CAAC,GAAG,CAAJ;;AACA,eAAQ,CAAEic,SAAS,GAAGhnB,OAAO,CAACinB,QAAR,CAAkBlc,CAAC,EAAnB,CAAd,KACP,CAACzhB,KAAK,CAAC++B,6BAAN,EADF,EAC0C;AAEzC;AACA;AACA,cAAK,CAAC/+B,KAAK,CAACg/B,UAAP,IAAqBtB,SAAS,CAACnqC,SAAV,KAAwB,KAA7C,IACJyM,KAAK,CAACg/B,UAAN,CAAiBvtC,IAAjB,CAAuBisC,SAAS,CAACnqC,SAAjC,CADD,EACgD;AAE/CyM,YAAAA,KAAK,CAAC09B,SAAN,GAAkBA,SAAlB;AACA19B,YAAAA,KAAK,CAACpb,IAAN,GAAa84C,SAAS,CAAC94C,IAAvB;AAEAmyB,YAAAA,GAAG,GAAG,CAAE,CAAE6J,MAAM,CAAC5gB,KAAP,CAAa2a,OAAb,CAAsB+iB,SAAS,CAACG,QAAhC,KAA8C,EAAhD,EAAqDG,MAArD,IACPN,SAAS,CAACrpC,OADL,EACe9D,KADf,CACsBmmB,OAAO,CAAC1nB,IAD9B,EACoCgB,IADpC,CAAN;;AAGA,gBAAK+mB,GAAG,KAAK/G,SAAb,EAAyB;AACxB,kBAAK,CAAEhQ,KAAK,CAACvH,MAAN,GAAese,GAAjB,MAA2B,KAAhC,EAAwC;AACvC/W,gBAAAA,KAAK,CAACpY,cAAN;AACAoY,gBAAAA,KAAK,CAACM,eAAN;AACA;AACD;AACD;AACD;AACD,OA1DgC,CA4DjC;;;AACA,UAAKqa,OAAO,CAACskB,YAAb,EAA4B;AAC3BtkB,QAAAA,OAAO,CAACskB,YAAR,CAAqB7uC,IAArB,CAA2B,IAA3B,EAAiC4P,KAAjC;AACA;;AAED,aAAOA,KAAK,CAACvH,MAAb;AACA,KAlQa;AAoQdklC,IAAAA,QAAQ,EAAE,kBAAU39B,KAAV,EAAiB29B,SAAjB,EAA4B;AACrC,UAAInyC,CAAJ;AAAA,UAAOkyC,SAAP;AAAA,UAAkB1S,GAAlB;AAAA,UAAuBkU,eAAvB;AAAA,UAAwCC,gBAAxC;AAAA,UACCT,YAAY,GAAG,EADhB;AAAA,UAECL,aAAa,GAAGV,SAAQ,CAACU,aAF1B;AAAA,UAGC9V,GAAG,GAAGvoB,KAAK,CAACxK,MAHb,CADqC,CAMrC;;AACA,UAAK6oC,aAAa,IAEjB;AACA;AACA9V,MAAAA,GAAG,CAACtI,QAJA,IAMJ;AACA;AACA;AACA;AACA;AACA,QAAGjgB,KAAK,CAAC3R,IAAN,KAAe,OAAf,IAA0B2R,KAAK,CAACo/B,MAAN,IAAgB,CAA7C,CAXD,EAWoD;AAEnD,eAAQ7W,GAAG,KAAK,IAAhB,EAAsBA,GAAG,GAAGA,GAAG,CAACzX,UAAJ,IAAkB,IAA9C,EAAqD;AAEpD;AACA;AACA,cAAKyX,GAAG,CAACtI,QAAJ,KAAiB,CAAjB,IAAsB,EAAGjgB,KAAK,CAAC3R,IAAN,KAAe,OAAf,IAA0Bk6B,GAAG,CAAC7B,QAAJ,KAAiB,IAA9C,CAA3B,EAAkF;AACjFwY,YAAAA,eAAe,GAAG,EAAlB;AACAC,YAAAA,gBAAgB,GAAG,EAAnB;;AACA,iBAAM3zC,CAAC,GAAG,CAAV,EAAaA,CAAC,GAAG6yC,aAAjB,EAAgC7yC,CAAC,EAAjC,EAAsC;AACrCkyC,cAAAA,SAAS,GAAGC,SAAQ,CAAEnyC,CAAF,CAApB,CADqC,CAGrC;;AACAw/B,cAAAA,GAAG,GAAG0S,SAAS,CAAC7c,QAAV,GAAqB,GAA3B;;AAEA,kBAAKse,gBAAgB,CAAEnU,GAAF,CAAhB,KAA4Bhb,SAAjC,EAA6C;AAC5CmvB,gBAAAA,gBAAgB,CAAEnU,GAAF,CAAhB,GAA0B0S,SAAS,CAACpM,YAAV,GACzB1Q,MAAM,CAAEoK,GAAF,EAAO,IAAP,CAAN,CAAoB7yB,KAApB,CAA2BowB,GAA3B,IAAmC,CAAC,CADX,GAEzB3H,MAAM,CAACl7B,IAAP,CAAaslC,GAAb,EAAkB,IAAlB,EAAwB,IAAxB,EAA8B,CAAEzC,GAAF,CAA9B,EAAwC1iC,MAFzC;AAGA;;AACD,kBAAKs5C,gBAAgB,CAAEnU,GAAF,CAArB,EAA+B;AAC9BkU,gBAAAA,eAAe,CAACvxC,IAAhB,CAAsB+vC,SAAtB;AACA;AACD;;AACD,gBAAKwB,eAAe,CAACr5C,MAArB,EAA8B;AAC7B64C,cAAAA,YAAY,CAAC/wC,IAAb,CAAmB;AAAEqB,gBAAAA,IAAI,EAAEu5B,GAAR;AAAaoV,gBAAAA,QAAQ,EAAEuB;AAAvB,eAAnB;AACA;AACD;AACD;AACD,OA/CoC,CAiDrC;;;AACA3W,MAAAA,GAAG,GAAG,IAAN;;AACA,UAAK8V,aAAa,GAAGV,SAAQ,CAAC93C,MAA9B,EAAuC;AACtC64C,QAAAA,YAAY,CAAC/wC,IAAb,CAAmB;AAAEqB,UAAAA,IAAI,EAAEu5B,GAAR;AAAaoV,UAAAA,QAAQ,EAAEA,SAAQ,CAACxtC,KAAT,CAAgBkuC,aAAhB;AAAvB,SAAnB;AACA;;AAED,aAAOK,YAAP;AACA,KA5Ta;AA8TdW,IAAAA,OAAO,EAAE,iBAAUnyC,IAAV,EAAgBoyC,IAAhB,EAAuB;AAC/B3wC,MAAAA,MAAM,CAACwpC,cAAP,CAAuBvX,MAAM,CAACjH,KAAP,CAAazpB,SAApC,EAA+ChD,IAA/C,EAAqD;AACpDqyC,QAAAA,UAAU,EAAE,IADwC;AAEpDnH,QAAAA,YAAY,EAAE,IAFsC;AAIpD3yB,QAAAA,GAAG,EAAEua,UAAU,CAAEsf,IAAF,CAAV,GACJ,YAAW;AACV,cAAK,KAAKE,aAAV,EAA0B;AACzB,mBAAOF,IAAI,CAAE,KAAKE,aAAP,CAAX;AACA;AACD,SALG,GAMJ,YAAW;AACV,cAAK,KAAKA,aAAV,EAA0B;AACzB,mBAAO,KAAKA,aAAL,CAAoBtyC,IAApB,CAAP;AACA;AACD,SAdkD;AAgBpDmrC,QAAAA,GAAG,EAAE,aAAU1zB,KAAV,EAAkB;AACtBhW,UAAAA,MAAM,CAACwpC,cAAP,CAAuB,IAAvB,EAA6BjrC,IAA7B,EAAmC;AAClCqyC,YAAAA,UAAU,EAAE,IADsB;AAElCnH,YAAAA,YAAY,EAAE,IAFoB;AAGlCqH,YAAAA,QAAQ,EAAE,IAHwB;AAIlC96B,YAAAA,KAAK,EAAEA;AAJ2B,WAAnC;AAMA;AAvBmD,OAArD;AAyBA,KAxVa;AA0Vdg6B,IAAAA,GAAG,EAAE,aAAUa,aAAV,EAA0B;AAC9B,aAAOA,aAAa,CAAE5e,MAAM,CAACkB,OAAT,CAAb,GACN0d,aADM,GAEN,IAAI5e,MAAM,CAACjH,KAAX,CAAkB6lB,aAAlB,CAFD;AAGA,KA9Va;AAgWd7kB,IAAAA,OAAO,EAAE;AACR+kB,MAAAA,IAAI,EAAE;AAEL;AACAC,QAAAA,QAAQ,EAAE;AAHL,OADE;AAMRC,MAAAA,KAAK,EAAE;AAEN;AACA/kB,QAAAA,KAAK,EAAE,eAAUj2B,IAAV,EAAiB;AAEvB;AACA;AACA,cAAIS,EAAE,GAAG,QAAQT,IAAjB,CAJuB,CAMvB;;AACA,cAAKo2C,cAAc,CAACvpC,IAAf,CAAqBpM,EAAE,CAACgJ,IAAxB,KACJhJ,EAAE,CAACu6C,KADC,IACQjZ,QAAQ,CAAEthC,EAAF,EAAM,OAAN,CADrB,EACuC;AAEtC;AACAw6C,YAAAA,cAAc,CAAEx6C,EAAF,EAAM,OAAN,EAAe43C,UAAf,CAAd;AACA,WAZsB,CAcvB;;;AACA,iBAAO,KAAP;AACA,SAnBK;AAoBN91C,QAAAA,OAAO,EAAE,iBAAUvC,IAAV,EAAiB;AAEzB;AACA;AACA,cAAIS,EAAE,GAAG,QAAQT,IAAjB,CAJyB,CAMzB;;AACA,cAAKo2C,cAAc,CAACvpC,IAAf,CAAqBpM,EAAE,CAACgJ,IAAxB,KACJhJ,EAAE,CAACu6C,KADC,IACQjZ,QAAQ,CAAEthC,EAAF,EAAM,OAAN,CADrB,EACuC;AAEtCw6C,YAAAA,cAAc,CAAEx6C,EAAF,EAAM,OAAN,CAAd;AACA,WAXwB,CAazB;;;AACA,iBAAO,IAAP;AACA,SAnCK;AAqCN;AACA;AACAy2C,QAAAA,QAAQ,EAAE,kBAAU97B,KAAV,EAAkB;AAC3B,cAAIxK,MAAM,GAAGwK,KAAK,CAACxK,MAAnB;AACA,iBAAOwlC,cAAc,CAACvpC,IAAf,CAAqB+D,MAAM,CAACnH,IAA5B,KACNmH,MAAM,CAACoqC,KADD,IACUjZ,QAAQ,CAAEnxB,MAAF,EAAU,OAAV,CADlB,IAEN+iC,QAAQ,CAAC9yB,GAAT,CAAcjQ,MAAd,EAAsB,OAAtB,CAFM,IAGNmxB,QAAQ,CAAEnxB,MAAF,EAAU,GAAV,CAHT;AAIA;AA7CK,OANC;AAsDRsqC,MAAAA,YAAY,EAAE;AACbb,QAAAA,YAAY,EAAE,sBAAUj/B,KAAV,EAAkB;AAE/B;AACA;AACA,cAAKA,KAAK,CAACvH,MAAN,KAAiBuX,SAAjB,IAA8BhQ,KAAK,CAACw/B,aAAzC,EAAyD;AACxDx/B,YAAAA,KAAK,CAACw/B,aAAN,CAAoB/rB,WAApB,GAAkCzT,KAAK,CAACvH,MAAxC;AACA;AACD;AARY;AAtDN;AAhWK,GAAf,CA9hKiF,CAi8KjF;AACA;AACA;AACA;;AACA,WAASonC,cAAT,CAAyBx6C,EAAzB,EAA6BgJ,IAA7B,EAAmC8uC,UAAnC,EAAgD;AAE/C;AACA,QAAK,CAACA,UAAN,EAAmB;AAClB,UAAK5E,QAAQ,CAAC9yB,GAAT,CAAcpgB,EAAd,EAAkBgJ,IAAlB,MAA6B2hB,SAAlC,EAA8C;AAC7C4Q,QAAAA,MAAM,CAAC5gB,KAAP,CAAa5T,GAAb,CAAkB/G,EAAlB,EAAsBgJ,IAAtB,EAA4B4uC,UAA5B;AACA;;AACD;AACA,KAR8C,CAU/C;;;AACA1E,IAAAA,QAAQ,CAACF,GAAT,CAAchzC,EAAd,EAAkBgJ,IAAlB,EAAwB,KAAxB;AACAuyB,IAAAA,MAAM,CAAC5gB,KAAP,CAAa5T,GAAb,CAAkB/G,EAAlB,EAAsBgJ,IAAtB,EAA4B;AAC3BkF,MAAAA,SAAS,EAAE,KADgB;AAE3Bc,MAAAA,OAAO,EAAE,iBAAU2L,KAAV,EAAkB;AAC1B,YAAI+/B,QAAJ;AAAA,YAActnC,MAAd;AAAA,YACCunC,KAAK,GAAGzH,QAAQ,CAAC9yB,GAAT,CAAc,IAAd,EAAoBpX,IAApB,CADT;;AAGA,YAAO2R,KAAK,CAACigC,SAAN,GAAkB,CAApB,IAA2B,KAAM5xC,IAAN,CAAhC,EAA+C;AAE9C;AACA;AACA;AACA,cAAK,CAAC2xC,KAAK,CAACn6C,MAAZ,EAAqB;AAEpB;AACA;AACA;AACAm6C,YAAAA,KAAK,GAAG7vC,MAAK,CAACC,IAAN,CAAYC,SAAZ,CAAR;AACAkoC,YAAAA,QAAQ,CAACF,GAAT,CAAc,IAAd,EAAoBhqC,IAApB,EAA0B2xC,KAA1B,EANoB,CAQpB;AACA;AACA;;AACAD,YAAAA,QAAQ,GAAG5C,UAAU,CAAE,IAAF,EAAQ9uC,IAAR,CAArB;AACA,iBAAMA,IAAN;AACAoK,YAAAA,MAAM,GAAG8/B,QAAQ,CAAC9yB,GAAT,CAAc,IAAd,EAAoBpX,IAApB,CAAT;;AACA,gBAAK2xC,KAAK,KAAKvnC,MAAV,IAAoBsnC,QAAzB,EAAoC;AACnCxH,cAAAA,QAAQ,CAACF,GAAT,CAAc,IAAd,EAAoBhqC,IAApB,EAA0B,KAA1B;AACA,aAFD,MAEO;AACNoK,cAAAA,MAAM,GAAG,EAAT;AACA;;AACD,gBAAKunC,KAAK,KAAKvnC,MAAf,EAAwB;AAEvB;AACAuH,cAAAA,KAAK,CAACjE,wBAAN;AACAiE,cAAAA,KAAK,CAACpY,cAAN,GAJuB,CAMvB;AACA;AACA;AACA;AACA;;AACA,qBAAO6Q,MAAM,IAAIA,MAAM,CAACkM,KAAxB;AACA,aA/BmB,CAiCrB;AACA;AACA;AACA;AACA;AACA;;AACC,WAvCD,MAuCO,IAAK,CAAEic,MAAM,CAAC5gB,KAAP,CAAa2a,OAAb,CAAsBtsB,IAAtB,KAAgC,EAAlC,EAAuC8vC,YAA5C,EAA2D;AACjEn+B,YAAAA,KAAK,CAACM,eAAN;AACA,WA9C6C,CAgD/C;AACA;;AACC,SAlDD,MAkDO,IAAK0/B,KAAK,CAACn6C,MAAX,EAAoB;AAE1B;AACA0yC,UAAAA,QAAQ,CAACF,GAAT,CAAc,IAAd,EAAoBhqC,IAApB,EAA0B;AACzBsW,YAAAA,KAAK,EAAEic,MAAM,CAAC5gB,KAAP,CAAa7Y,OAAb,EAEN;AACA;AACAy5B,YAAAA,MAAM,CAACl8B,MAAP,CAAes7C,KAAK,CAAE,CAAF,CAApB,EAA2Bpf,MAAM,CAACjH,KAAP,CAAazpB,SAAxC,CAJM,EAKN8vC,KAAK,CAAC7vC,KAAN,CAAa,CAAb,CALM,EAMN,IANM;AADkB,WAA1B,EAH0B,CAc1B;;AACA6P,UAAAA,KAAK,CAACjE,wBAAN;AACA;AACD;AAzE0B,KAA5B;AA2EA;;AAED6kB,EAAAA,MAAM,CAAC4d,WAAP,GAAqB,UAAUxvC,IAAV,EAAgBX,IAAhB,EAAsB2vC,MAAtB,EAA+B;AAEnD;AACA,QAAKhvC,IAAI,CAACwqB,mBAAV,EAAgC;AAC/BxqB,MAAAA,IAAI,CAACwqB,mBAAL,CAA0BnrB,IAA1B,EAAgC2vC,MAAhC;AACA;AACD,GAND;;AAQApd,EAAAA,MAAM,CAACjH,KAAP,GAAe,UAAUzH,GAAV,EAAeguB,KAAf,EAAuB;AAErC;AACA,QAAK,EAAG,gBAAgBtf,MAAM,CAACjH,KAA1B,CAAL,EAAyC;AACxC,aAAO,IAAIiH,MAAM,CAACjH,KAAX,CAAkBzH,GAAlB,EAAuBguB,KAAvB,CAAP;AACA,KALoC,CAOrC;;;AACA,QAAKhuB,GAAG,IAAIA,GAAG,CAAC7jB,IAAhB,EAAuB;AACtB,WAAKmxC,aAAL,GAAqBttB,GAArB;AACA,WAAK7jB,IAAL,GAAY6jB,GAAG,CAAC7jB,IAAhB,CAFsB,CAItB;AACA;;AACA,WAAK8xC,kBAAL,GAA0BjuB,GAAG,CAACkuB,gBAAJ,IACxBluB,GAAG,CAACkuB,gBAAJ,KAAyBpwB,SAAzB,IAEA;AACAkC,MAAAA,GAAG,CAACuB,WAAJ,KAAoB,KAJI,GAKzBwpB,UALyB,GAMzBC,WAND,CANsB,CActB;AACA;AACA;;AACA,WAAK1nC,MAAL,GAAgB0c,GAAG,CAAC1c,MAAJ,IAAc0c,GAAG,CAAC1c,MAAJ,CAAWyqB,QAAX,KAAwB,CAAxC,GACb/N,GAAG,CAAC1c,MAAJ,CAAWsb,UADE,GAEboB,GAAG,CAAC1c,MAFL;AAIA,WAAKF,aAAL,GAAqB4c,GAAG,CAAC5c,aAAzB;AACA,WAAKL,aAAL,GAAqBid,GAAG,CAACjd,aAAzB,CAtBsB,CAwBvB;AACC,KAzBD,MAyBO;AACN,WAAK5G,IAAL,GAAY6jB,GAAZ;AACA,KAnCoC,CAqCrC;;;AACA,QAAKguB,KAAL,EAAa;AACZtf,MAAAA,MAAM,CAACl8B,MAAP,CAAe,IAAf,EAAqBw7C,KAArB;AACA,KAxCoC,CA0CrC;;;AACA,SAAKG,SAAL,GAAiBnuB,GAAG,IAAIA,GAAG,CAACmuB,SAAX,IAAwBnvC,IAAI,CAACC,GAAL,EAAzC,CA3CqC,CA6CrC;;AACA,SAAMyvB,MAAM,CAACkB,OAAb,IAAyB,IAAzB;AACA,GA/CD,CAtiLiF,CAulLjF;AACA;;;AACAlB,EAAAA,MAAM,CAACjH,KAAP,CAAazpB,SAAb,GAAyB;AACxB1C,IAAAA,WAAW,EAAEozB,MAAM,CAACjH,KADI;AAExBwmB,IAAAA,kBAAkB,EAAEjD,WAFI;AAGxB4B,IAAAA,oBAAoB,EAAE5B,WAHE;AAIxB6B,IAAAA,6BAA6B,EAAE7B,WAJP;AAKxBoD,IAAAA,WAAW,EAAE,KALW;AAOxB14C,IAAAA,cAAc,EAAE,0BAAW;AAC1B,UAAID,CAAC,GAAG,KAAK63C,aAAb;AAEA,WAAKW,kBAAL,GAA0BlD,UAA1B;;AAEA,UAAKt1C,CAAC,IAAI,CAAC,KAAK24C,WAAhB,EAA8B;AAC7B34C,QAAAA,CAAC,CAACC,cAAF;AACA;AACD,KAfuB;AAgBxB0Y,IAAAA,eAAe,EAAE,2BAAW;AAC3B,UAAI3Y,CAAC,GAAG,KAAK63C,aAAb;AAEA,WAAKV,oBAAL,GAA4B7B,UAA5B;;AAEA,UAAKt1C,CAAC,IAAI,CAAC,KAAK24C,WAAhB,EAA8B;AAC7B34C,QAAAA,CAAC,CAAC2Y,eAAF;AACA;AACD,KAxBuB;AAyBxBvE,IAAAA,wBAAwB,EAAE,oCAAW;AACpC,UAAIpU,CAAC,GAAG,KAAK63C,aAAb;AAEA,WAAKT,6BAAL,GAAqC9B,UAArC;;AAEA,UAAKt1C,CAAC,IAAI,CAAC,KAAK24C,WAAhB,EAA8B;AAC7B34C,QAAAA,CAAC,CAACoU,wBAAF;AACA;;AAED,WAAKuE,eAAL;AACA;AAnCuB,GAAzB,CAzlLiF,CA+nLjF;;AACAsgB,EAAAA,MAAM,CAACz7B,IAAP,CAAa;AACZ8tB,IAAAA,MAAM,EAAE,IADI;AAEZstB,IAAAA,OAAO,EAAE,IAFG;AAGZC,IAAAA,UAAU,EAAE,IAHA;AAIZplB,IAAAA,cAAc,EAAE,IAJJ;AAKZpI,IAAAA,OAAO,EAAE,IALG;AAMZytB,IAAAA,MAAM,EAAE,IANI;AAOZC,IAAAA,UAAU,EAAE,IAPA;AAQZC,IAAAA,OAAO,EAAE,IARG;AASZ7mB,IAAAA,KAAK,EAAE,IATK;AAUZ3Z,IAAAA,KAAK,EAAE,IAVK;AAWZ4S,IAAAA,QAAQ,EAAE,IAXE;AAYZ6tB,IAAAA,IAAI,EAAE,IAZM;AAaZ,YAAQ,IAbI;AAcZrgB,IAAAA,IAAI,EAAE,IAdM;AAeZsgB,IAAAA,QAAQ,EAAE,IAfE;AAgBZ38B,IAAAA,GAAG,EAAE,IAhBO;AAiBZyO,IAAAA,OAAO,EAAE,IAjBG;AAkBZysB,IAAAA,MAAM,EAAE,IAlBI;AAmBZ0B,IAAAA,OAAO,EAAE,IAnBG;AAoBZjlB,IAAAA,OAAO,EAAE,IApBG;AAqBZC,IAAAA,OAAO,EAAE,IArBG;AAsBZilB,IAAAA,OAAO,EAAE,IAtBG;AAuBZC,IAAAA,OAAO,EAAE,IAvBG;AAwBZC,IAAAA,SAAS,EAAE,IAxBC;AAyBZC,IAAAA,WAAW,EAAE,IAzBD;AA0BZvlB,IAAAA,OAAO,EAAE,IA1BG;AA2BZC,IAAAA,OAAO,EAAE,IA3BG;AA4BZulB,IAAAA,aAAa,EAAE,IA5BH;AA6BZC,IAAAA,SAAS,EAAE,IA7BC;AA8BZlhC,IAAAA,OAAO,EAAE,IA9BG;AA+BZwO,IAAAA,KAAK,EAAE;AA/BK,GAAb,EAgCGkS,MAAM,CAAC5gB,KAAP,CAAaq/B,OAhChB;AAkCAze,EAAAA,MAAM,CAACz7B,IAAP,CAAa;AAAE8C,IAAAA,KAAK,EAAE,SAAT;AAAoBsQ,IAAAA,IAAI,EAAE;AAA1B,GAAb,EAAqD,UAAUlK,IAAV,EAAgB8vC,YAAhB,EAA+B;AACnFvd,IAAAA,MAAM,CAAC5gB,KAAP,CAAa2a,OAAb,CAAsBtsB,IAAtB,IAA+B;AAE9B;AACAwsB,MAAAA,KAAK,EAAE,iBAAW;AAEjB;AACA;AACA;AACAglB,QAAAA,cAAc,CAAE,IAAF,EAAQxxC,IAAR,EAAc8uC,UAAd,CAAd,CALiB,CAOjB;;AACA,eAAO,KAAP;AACA,OAZ6B;AAa9Bh2C,MAAAA,OAAO,EAAE,mBAAW;AAEnB;AACA04C,QAAAA,cAAc,CAAE,IAAF,EAAQxxC,IAAR,CAAd,CAHmB,CAKnB;;AACA,eAAO,IAAP;AACA,OApB6B;AAsB9B;AACA;AACAytC,MAAAA,QAAQ,EAAE,oBAAW;AACpB,eAAO,IAAP;AACA,OA1B6B;AA4B9BqC,MAAAA,YAAY,EAAEA;AA5BgB,KAA/B;AA8BA,GA/BD,EAlqLiF,CAmsLjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACAvd,EAAAA,MAAM,CAACz7B,IAAP,CAAa;AACZk8C,IAAAA,UAAU,EAAE,WADA;AAEZC,IAAAA,UAAU,EAAE,UAFA;AAGZC,IAAAA,YAAY,EAAE,aAHF;AAIZC,IAAAA,YAAY,EAAE;AAJF,GAAb,EAKG,UAAUC,IAAV,EAAgB9C,GAAhB,EAAsB;AACxB/d,IAAAA,MAAM,CAAC5gB,KAAP,CAAa2a,OAAb,CAAsB8mB,IAAtB,IAA+B;AAC9BtD,MAAAA,YAAY,EAAEQ,GADgB;AAE9BP,MAAAA,QAAQ,EAAEO,GAFoB;AAI9BX,MAAAA,MAAM,EAAE,gBAAUh+B,KAAV,EAAkB;AACzB,YAAI+W,GAAJ;AAAA,YACCvhB,MAAM,GAAG,IADV;AAAA,YAECksC,OAAO,GAAG1hC,KAAK,CAAC/K,aAFjB;AAAA,YAGCyoC,SAAS,GAAG19B,KAAK,CAAC09B,SAHnB,CADyB,CAMzB;AACA;;AACA,YAAK,CAACgE,OAAD,IAAcA,OAAO,KAAKlsC,MAAZ,IAAsB,CAACorB,MAAM,CAAC3pB,QAAP,CAAiBzB,MAAjB,EAAyBksC,OAAzB,CAA1C,EAAiF;AAChF1hC,UAAAA,KAAK,CAAC3R,IAAN,GAAaqvC,SAAS,CAACG,QAAvB;AACA9mB,UAAAA,GAAG,GAAG2mB,SAAS,CAACrpC,OAAV,CAAkB9D,KAAlB,CAAyB,IAAzB,EAA+BF,SAA/B,CAAN;AACA2P,UAAAA,KAAK,CAAC3R,IAAN,GAAaswC,GAAb;AACA;;AACD,eAAO5nB,GAAP;AACA;AAlB6B,KAA/B;AAoBA,GA1BD;AA4BA6J,EAAAA,MAAM,CAAClwB,EAAP,CAAUhM,MAAV,CAAkB;AAEjBgD,IAAAA,EAAE,EAAE,YAAU21C,KAAV,EAAiBxc,QAAjB,EAA2Bj8B,IAA3B,EAAiC8L,EAAjC,EAAsC;AACzC,aAAOhJ,GAAE,CAAE,IAAF,EAAQ21C,KAAR,EAAexc,QAAf,EAAyBj8B,IAAzB,EAA+B8L,EAA/B,CAAT;AACA,KAJgB;AAKjBgE,IAAAA,GAAG,EAAE,aAAU2oC,KAAV,EAAiBxc,QAAjB,EAA2Bj8B,IAA3B,EAAiC8L,EAAjC,EAAsC;AAC1C,aAAOhJ,GAAE,CAAE,IAAF,EAAQ21C,KAAR,EAAexc,QAAf,EAAyBj8B,IAAzB,EAA+B8L,EAA/B,EAAmC,CAAnC,CAAT;AACA,KAPgB;AAQjBjJ,IAAAA,GAAG,EAAE,aAAU41C,KAAV,EAAiBxc,QAAjB,EAA2BnwB,EAA3B,EAAgC;AACpC,UAAIgtC,SAAJ,EAAervC,IAAf;;AACA,UAAKgvC,KAAK,IAAIA,KAAK,CAACz1C,cAAf,IAAiCy1C,KAAK,CAACK,SAA5C,EAAwD;AAEvD;AACAA,QAAAA,SAAS,GAAGL,KAAK,CAACK,SAAlB;AACA9c,QAAAA,MAAM,CAAEyc,KAAK,CAACuB,cAAR,CAAN,CAA+Bn3C,GAA/B,CACCi2C,SAAS,CAACnqC,SAAV,GACCmqC,SAAS,CAACG,QAAV,GAAqB,GAArB,GAA2BH,SAAS,CAACnqC,SADtC,GAECmqC,SAAS,CAACG,QAHZ,EAICH,SAAS,CAAC7c,QAJX,EAKC6c,SAAS,CAACrpC,OALX;AAOA,eAAO,IAAP;AACA;;AACD,UAAK,QAAOgpC,KAAP,MAAiB,QAAtB,EAAiC;AAEhC;AACA,aAAMhvC,IAAN,IAAcgvC,KAAd,EAAsB;AACrB,eAAK51C,GAAL,CAAU4G,IAAV,EAAgBwyB,QAAhB,EAA0Bwc,KAAK,CAAEhvC,IAAF,CAA/B;AACA;;AACD,eAAO,IAAP;AACA;;AACD,UAAKwyB,QAAQ,KAAK,KAAb,IAAsB,OAAOA,QAAP,KAAoB,UAA/C,EAA4D;AAE3D;AACAnwB,QAAAA,EAAE,GAAGmwB,QAAL;AACAA,QAAAA,QAAQ,GAAG7Q,SAAX;AACA;;AACD,UAAKtf,EAAE,KAAK,KAAZ,EAAoB;AACnBA,QAAAA,EAAE,GAAGwsC,WAAL;AACA;;AACD,aAAO,KAAK/3C,IAAL,CAAW,YAAW;AAC5By7B,QAAAA,MAAM,CAAC5gB,KAAP,CAAavT,MAAb,CAAqB,IAArB,EAA2B4wC,KAA3B,EAAkC3sC,EAAlC,EAAsCmwB,QAAtC;AACA,OAFM,CAAP;AAGA;AA3CgB,GAAlB;AA+CA,MAEC;AACA;AACA;AACA8gB,EAAAA,YAAY,GAAG,uBALhB;AAAA,MAOC;AACAC,EAAAA,QAAQ,GAAG,mCARZ;AAAA,MASCC,YAAY,GAAG,0CAThB,CAtxLiF,CAiyLjF;;AACA,WAASC,kBAAT,CAA6B9yC,IAA7B,EAAmCyjC,OAAnC,EAA6C;AAC5C,QAAK9L,QAAQ,CAAE33B,IAAF,EAAQ,OAAR,CAAR,IACJ23B,QAAQ,CAAE8L,OAAO,CAACxS,QAAR,KAAqB,EAArB,GAA0BwS,OAA1B,GAAoCA,OAAO,CAACpH,UAA9C,EAA0D,IAA1D,CADT,EAC4E;AAE3E,aAAOzK,MAAM,CAAE5xB,IAAF,CAAN,CAAe9J,QAAf,CAAyB,OAAzB,EAAoC,CAApC,KAA2C8J,IAAlD;AACA;;AAED,WAAOA,IAAP;AACA,GA1yLgF,CA4yLjF;;;AACA,WAAS+yC,aAAT,CAAwB/yC,IAAxB,EAA+B;AAC9BA,IAAAA,IAAI,CAACX,IAAL,GAAY,CAAEW,IAAI,CAACua,YAAL,CAAmB,MAAnB,MAAgC,IAAlC,IAA2C,GAA3C,GAAiDva,IAAI,CAACX,IAAlE;AACA,WAAOW,IAAP;AACA;;AACD,WAASgzC,aAAT,CAAwBhzC,IAAxB,EAA+B;AAC9B,QAAK,CAAEA,IAAI,CAACX,IAAL,IAAa,EAAf,EAAoB8B,KAApB,CAA2B,CAA3B,EAA8B,CAA9B,MAAsC,OAA3C,EAAqD;AACpDnB,MAAAA,IAAI,CAACX,IAAL,GAAYW,IAAI,CAACX,IAAL,CAAU8B,KAAV,CAAiB,CAAjB,CAAZ;AACA,KAFD,MAEO;AACNnB,MAAAA,IAAI,CAAC64B,eAAL,CAAsB,MAAtB;AACA;;AAED,WAAO74B,IAAP;AACA;;AAED,WAASizC,cAAT,CAAyB/vB,GAAzB,EAA8BgwB,IAA9B,EAAqC;AACpC,QAAI12C,CAAJ,EAAO0mC,CAAP,EAAU7jC,IAAV,EAAgB8zC,QAAhB,EAA0BC,QAA1B,EAAoCC,QAApC,EAA8CrwB,MAA9C;;AAEA,QAAKkwB,IAAI,CAACjiB,QAAL,KAAkB,CAAvB,EAA2B;AAC1B;AACA,KALmC,CAOpC;;;AACA,QAAKsY,QAAQ,CAACD,OAAT,CAAkBpmB,GAAlB,CAAL,EAA+B;AAC9BiwB,MAAAA,QAAQ,GAAG5J,QAAQ,CAAC9yB,GAAT,CAAcyM,GAAd,CAAX;AACAF,MAAAA,MAAM,GAAGmwB,QAAQ,CAACnwB,MAAlB;;AAEA,UAAKA,MAAL,EAAc;AACbumB,QAAAA,QAAQ,CAAC9rC,MAAT,CAAiBy1C,IAAjB,EAAuB,eAAvB;;AAEA,aAAM7zC,IAAN,IAAc2jB,MAAd,EAAuB;AACtB,eAAMxmB,CAAC,GAAG,CAAJ,EAAO0mC,CAAC,GAAGlgB,MAAM,CAAE3jB,IAAF,CAAN,CAAexI,MAAhC,EAAwC2F,CAAC,GAAG0mC,CAA5C,EAA+C1mC,CAAC,EAAhD,EAAqD;AACpDo1B,YAAAA,MAAM,CAAC5gB,KAAP,CAAa5T,GAAb,CAAkB81C,IAAlB,EAAwB7zC,IAAxB,EAA8B2jB,MAAM,CAAE3jB,IAAF,CAAN,CAAgB7C,CAAhB,CAA9B;AACA;AACD;AACD;AACD,KArBmC,CAuBpC;;;AACA,QAAKgtC,QAAQ,CAACF,OAAT,CAAkBpmB,GAAlB,CAAL,EAA+B;AAC9BkwB,MAAAA,QAAQ,GAAG5J,QAAQ,CAACtB,MAAT,CAAiBhlB,GAAjB,CAAX;AACAmwB,MAAAA,QAAQ,GAAGzhB,MAAM,CAACl8B,MAAP,CAAe,EAAf,EAAmB09C,QAAnB,CAAX;AAEA5J,MAAAA,QAAQ,CAACH,GAAT,CAAc6J,IAAd,EAAoBG,QAApB;AACA;AACD,GAz1LgF,CA21LjF;;;AACA,WAASC,QAAT,CAAmBpwB,GAAnB,EAAwBgwB,IAAxB,EAA+B;AAC9B,QAAIvb,QAAQ,GAAGub,IAAI,CAACvb,QAAL,CAAcl5B,WAAd,EAAf,CAD8B,CAG9B;;AACA,QAAKk5B,QAAQ,KAAK,OAAb,IAAwBqU,cAAc,CAACvpC,IAAf,CAAqBygB,GAAG,CAAC7jB,IAAzB,CAA7B,EAA+D;AAC9D6zC,MAAAA,IAAI,CAAC5U,OAAL,GAAepb,GAAG,CAACob,OAAnB,CAD8D,CAG/D;AACC,KAJD,MAIO,IAAK3G,QAAQ,KAAK,OAAb,IAAwBA,QAAQ,KAAK,UAA1C,EAAuD;AAC7Dub,MAAAA,IAAI,CAACpR,YAAL,GAAoB5e,GAAG,CAAC4e,YAAxB;AACA;AACD;;AAED,WAASyR,QAAT,CAAmBC,UAAnB,EAA+BxyC,IAA/B,EAAqC6B,QAArC,EAA+C8qC,OAA/C,EAAyD;AAExD;AACA3sC,IAAAA,IAAI,GAAG0vB,IAAI,CAAE1vB,IAAF,CAAX;AAEA,QAAImrC,QAAJ;AAAA,QAAc/yC,KAAd;AAAA,QAAqBq0C,OAArB;AAAA,QAA8BgG,UAA9B;AAAA,QAA0CjiB,IAA1C;AAAA,QAAgDC,GAAhD;AAAA,QACCj1B,CAAC,GAAG,CADL;AAAA,QAEC0mC,CAAC,GAAGsQ,UAAU,CAAC38C,MAFhB;AAAA,QAGC68C,QAAQ,GAAGxQ,CAAC,GAAG,CAHhB;AAAA,QAICvtB,KAAK,GAAG3U,IAAI,CAAE,CAAF,CAJb;AAAA,QAKC2yC,eAAe,GAAG3iB,UAAU,CAAErb,KAAF,CAL7B,CALwD,CAYxD;;AACA,QAAKg+B,eAAe,IAChBzQ,CAAC,GAAG,CAAJ,IAAS,OAAOvtB,KAAP,KAAiB,QAA1B,IACD,CAACob,OAAO,CAACub,UADR,IACsBsG,QAAQ,CAACnwC,IAAT,CAAekT,KAAf,CAF1B,EAEqD;AACpD,aAAO69B,UAAU,CAACr9C,IAAX,CAAiB,UAAUgT,KAAV,EAAkB;AACzC,YAAIsZ,IAAI,GAAG+wB,UAAU,CAAC/2C,EAAX,CAAe0M,KAAf,CAAX;;AACA,YAAKwqC,eAAL,EAAuB;AACtB3yC,UAAAA,IAAI,CAAE,CAAF,CAAJ,GAAY2U,KAAK,CAACvU,IAAN,CAAY,IAAZ,EAAkB+H,KAAlB,EAAyBsZ,IAAI,CAAC3I,IAAL,EAAzB,CAAZ;AACA;;AACDy5B,QAAAA,QAAQ,CAAE9wB,IAAF,EAAQzhB,IAAR,EAAc6B,QAAd,EAAwB8qC,OAAxB,CAAR;AACA,OANM,CAAP;AAOA;;AAED,QAAKzK,CAAL,EAAS;AACRiJ,MAAAA,QAAQ,GAAGqB,aAAa,CAAExsC,IAAF,EAAQwyC,UAAU,CAAE,CAAF,CAAV,CAAgBpb,aAAxB,EAAuC,KAAvC,EAA8Cob,UAA9C,EAA0D7F,OAA1D,CAAxB;AACAv0C,MAAAA,KAAK,GAAG+yC,QAAQ,CAAC9P,UAAjB;;AAEA,UAAK8P,QAAQ,CAACvU,UAAT,CAAoB/gC,MAApB,KAA+B,CAApC,EAAwC;AACvCs1C,QAAAA,QAAQ,GAAG/yC,KAAX;AACA,OANO,CAQR;;;AACA,UAAKA,KAAK,IAAIu0C,OAAd,EAAwB;AACvBF,QAAAA,OAAO,GAAG7b,MAAM,CAACpxB,GAAP,CAAY6sC,MAAM,CAAElB,QAAF,EAAY,QAAZ,CAAlB,EAA0C4G,aAA1C,CAAV;AACAU,QAAAA,UAAU,GAAGhG,OAAO,CAAC52C,MAArB,CAFuB,CAIvB;AACA;AACA;;AACA,eAAQ2F,CAAC,GAAG0mC,CAAZ,EAAe1mC,CAAC,EAAhB,EAAqB;AACpBg1B,UAAAA,IAAI,GAAG2a,QAAP;;AAEA,cAAK3vC,CAAC,KAAKk3C,QAAX,EAAsB;AACrBliB,YAAAA,IAAI,GAAGI,MAAM,CAAC/1B,KAAP,CAAc21B,IAAd,EAAoB,IAApB,EAA0B,IAA1B,CAAP,CADqB,CAGrB;;AACA,gBAAKiiB,UAAL,EAAkB;AAEjB;AACA;AACA7hB,cAAAA,MAAM,CAACO,KAAP,CAAcsb,OAAd,EAAuBJ,MAAM,CAAE7b,IAAF,EAAQ,QAAR,CAA7B;AACA;AACD;;AAED3uB,UAAAA,QAAQ,CAACzB,IAAT,CAAeoyC,UAAU,CAAEh3C,CAAF,CAAzB,EAAgCg1B,IAAhC,EAAsCh1B,CAAtC;AACA;;AAED,YAAKi3C,UAAL,EAAkB;AACjBhiB,UAAAA,GAAG,GAAGgc,OAAO,CAAEA,OAAO,CAAC52C,MAAR,GAAiB,CAAnB,CAAP,CAA8BuhC,aAApC,CADiB,CAGjB;;AACAxG,UAAAA,MAAM,CAACpxB,GAAP,CAAYitC,OAAZ,EAAqBuF,aAArB,EAJiB,CAMjB;;AACA,eAAMx2C,CAAC,GAAG,CAAV,EAAaA,CAAC,GAAGi3C,UAAjB,EAA6Bj3C,CAAC,EAA9B,EAAmC;AAClCg1B,YAAAA,IAAI,GAAGic,OAAO,CAAEjxC,CAAF,CAAd;;AACA,gBAAK0vC,WAAW,CAACzpC,IAAZ,CAAkB+uB,IAAI,CAACnyB,IAAL,IAAa,EAA/B,KACJ,CAACkqC,QAAQ,CAACrB,MAAT,CAAiB1W,IAAjB,EAAuB,YAAvB,CADG,IAEJI,MAAM,CAAC3pB,QAAP,CAAiBwpB,GAAjB,EAAsBD,IAAtB,CAFD,EAEgC;AAE/B,kBAAKA,IAAI,CAACtO,GAAL,IAAY,CAAEsO,IAAI,CAACnyB,IAAL,IAAa,EAAf,EAAoBZ,WAApB,OAAuC,QAAxD,EAAmE;AAElE;AACA,oBAAKmzB,MAAM,CAACgiB,QAAP,IAAmB,CAACpiB,IAAI,CAACH,QAA9B,EAAyC;AACxCO,kBAAAA,MAAM,CAACgiB,QAAP,CAAiBpiB,IAAI,CAACtO,GAAtB,EAA2B;AAC1BkO,oBAAAA,KAAK,EAAEI,IAAI,CAACJ,KAAL,IAAcI,IAAI,CAACjX,YAAL,CAAmB,OAAnB;AADK,mBAA3B,EAEGkX,GAFH;AAGA;AACD,eARD,MAQO;AACNH,gBAAAA,OAAO,CAAEE,IAAI,CAACtL,WAAL,CAAiBjiB,OAAjB,CAA0B4uC,YAA1B,EAAwC,EAAxC,CAAF,EAAgDrhB,IAAhD,EAAsDC,GAAtD,CAAP;AACA;AACD;AACD;AACD;AACD;AACD;;AAED,WAAO+hB,UAAP;AACA;;AAED,WAAS/1C,OAAT,CAAiBuC,IAAjB,EAAuB6xB,QAAvB,EAAiCgiB,QAAjC,EAA4C;AAC3C,QAAIriB,IAAJ;AAAA,QACCqc,KAAK,GAAGhc,QAAQ,GAAGD,MAAM,CAAC1xB,MAAP,CAAe2xB,QAAf,EAAyB7xB,IAAzB,CAAH,GAAqCA,IADtD;AAAA,QAECxD,CAAC,GAAG,CAFL;;AAIA,WAAQ,CAAEg1B,IAAI,GAAGqc,KAAK,CAAErxC,CAAF,CAAd,KAAyB,IAAjC,EAAuCA,CAAC,EAAxC,EAA6C;AAC5C,UAAK,CAACq3C,QAAD,IAAariB,IAAI,CAACP,QAAL,KAAkB,CAApC,EAAwC;AACvCW,QAAAA,MAAM,CAACkiB,SAAP,CAAkBzG,MAAM,CAAE7b,IAAF,CAAxB;AACA;;AAED,UAAKA,IAAI,CAAC1P,UAAV,EAAuB;AACtB,YAAK+xB,QAAQ,IAAIhJ,UAAU,CAAErZ,IAAF,CAA3B,EAAsC;AACrC8b,UAAAA,aAAa,CAAED,MAAM,CAAE7b,IAAF,EAAQ,QAAR,CAAR,CAAb;AACA;;AACDA,QAAAA,IAAI,CAAC1P,UAAL,CAAgB4P,WAAhB,CAA6BF,IAA7B;AACA;AACD;;AAED,WAAOxxB,IAAP;AACA;;AAED4xB,EAAAA,MAAM,CAACl8B,MAAP,CAAe;AACdq4C,IAAAA,aAAa,EAAE,uBAAUj0B,IAAV,EAAiB;AAC/B,aAAOA,IAAP;AACA,KAHa;AAKdje,IAAAA,KAAK,EAAE,eAAUmE,IAAV,EAAgB+zC,aAAhB,EAA+BC,iBAA/B,EAAmD;AACzD,UAAIx3C,CAAJ;AAAA,UAAO0mC,CAAP;AAAA,UAAU+Q,WAAV;AAAA,UAAuBC,YAAvB;AAAA,UACCr4C,KAAK,GAAGmE,IAAI,CAACusC,SAAL,CAAgB,IAAhB,CADT;AAAA,UAEC4H,MAAM,GAAGtJ,UAAU,CAAE7qC,IAAF,CAFpB,CADyD,CAKzD;;AACA,UAAK,CAAC+wB,OAAO,CAACyb,cAAT,KAA6BxsC,IAAI,CAACixB,QAAL,KAAkB,CAAlB,IAAuBjxB,IAAI,CAACixB,QAAL,KAAkB,EAAtE,KACH,CAACW,MAAM,CAACoQ,QAAP,CAAiBhiC,IAAjB,CADH,EAC6B;AAE5B;AACAk0C,QAAAA,YAAY,GAAG7G,MAAM,CAAExxC,KAAF,CAArB;AACAo4C,QAAAA,WAAW,GAAG5G,MAAM,CAAErtC,IAAF,CAApB;;AAEA,aAAMxD,CAAC,GAAG,CAAJ,EAAO0mC,CAAC,GAAG+Q,WAAW,CAACp9C,MAA7B,EAAqC2F,CAAC,GAAG0mC,CAAzC,EAA4C1mC,CAAC,EAA7C,EAAkD;AACjD82C,UAAAA,QAAQ,CAAEW,WAAW,CAAEz3C,CAAF,CAAb,EAAoB03C,YAAY,CAAE13C,CAAF,CAAhC,CAAR;AACA;AACD,OAhBwD,CAkBzD;;;AACA,UAAKu3C,aAAL,EAAqB;AACpB,YAAKC,iBAAL,EAAyB;AACxBC,UAAAA,WAAW,GAAGA,WAAW,IAAI5G,MAAM,CAAErtC,IAAF,CAAnC;AACAk0C,UAAAA,YAAY,GAAGA,YAAY,IAAI7G,MAAM,CAAExxC,KAAF,CAArC;;AAEA,eAAMW,CAAC,GAAG,CAAJ,EAAO0mC,CAAC,GAAG+Q,WAAW,CAACp9C,MAA7B,EAAqC2F,CAAC,GAAG0mC,CAAzC,EAA4C1mC,CAAC,EAA7C,EAAkD;AACjDy2C,YAAAA,cAAc,CAAEgB,WAAW,CAAEz3C,CAAF,CAAb,EAAoB03C,YAAY,CAAE13C,CAAF,CAAhC,CAAd;AACA;AACD,SAPD,MAOO;AACNy2C,UAAAA,cAAc,CAAEjzC,IAAF,EAAQnE,KAAR,CAAd;AACA;AACD,OA9BwD,CAgCzD;;;AACAq4C,MAAAA,YAAY,GAAG7G,MAAM,CAAExxC,KAAF,EAAS,QAAT,CAArB;;AACA,UAAKq4C,YAAY,CAACr9C,MAAb,GAAsB,CAA3B,EAA+B;AAC9By2C,QAAAA,aAAa,CAAE4G,YAAF,EAAgB,CAACC,MAAD,IAAW9G,MAAM,CAAErtC,IAAF,EAAQ,QAAR,CAAjC,CAAb;AACA,OApCwD,CAsCzD;;;AACA,aAAOnE,KAAP;AACA,KA7Ca;AA+Cdi4C,IAAAA,SAAS,EAAE,mBAAU5hB,KAAV,EAAkB;AAC5B,UAAIt8B,IAAJ;AAAA,UAAUoK,IAAV;AAAA,UAAgBX,IAAhB;AAAA,UACCssB,OAAO,GAAGiG,MAAM,CAAC5gB,KAAP,CAAa2a,OADxB;AAAA,UAECnvB,CAAC,GAAG,CAFL;;AAIA,aAAQ,CAAEwD,IAAI,GAAGkyB,KAAK,CAAE11B,CAAF,CAAd,MAA0BwkB,SAAlC,EAA6CxkB,CAAC,EAA9C,EAAmD;AAClD,YAAKusC,UAAU,CAAE/oC,IAAF,CAAf,EAA0B;AACzB,cAAOpK,IAAI,GAAGoK,IAAI,CAAEupC,QAAQ,CAACzW,OAAX,CAAlB,EAA2C;AAC1C,gBAAKl9B,IAAI,CAACotB,MAAV,EAAmB;AAClB,mBAAM3jB,IAAN,IAAczJ,IAAI,CAACotB,MAAnB,EAA4B;AAC3B,oBAAK2I,OAAO,CAAEtsB,IAAF,CAAZ,EAAuB;AACtBuyB,kBAAAA,MAAM,CAAC5gB,KAAP,CAAavT,MAAb,CAAqBuC,IAArB,EAA2BX,IAA3B,EADsB,CAGvB;AACC,iBAJD,MAIO;AACNuyB,kBAAAA,MAAM,CAAC4d,WAAP,CAAoBxvC,IAApB,EAA0BX,IAA1B,EAAgCzJ,IAAI,CAACo5C,MAArC;AACA;AACD;AACD,aAXyC,CAa1C;AACA;;;AACAhvC,YAAAA,IAAI,CAAEupC,QAAQ,CAACzW,OAAX,CAAJ,GAA2B9R,SAA3B;AACA;;AACD,cAAKhhB,IAAI,CAAEwpC,QAAQ,CAAC1W,OAAX,CAAT,EAAgC;AAE/B;AACA;AACA9yB,YAAAA,IAAI,CAAEwpC,QAAQ,CAAC1W,OAAX,CAAJ,GAA2B9R,SAA3B;AACA;AACD;AACD;AACD;AA/Ea,GAAf;AAkFA4Q,EAAAA,MAAM,CAAClwB,EAAP,CAAUhM,MAAV,CAAkB;AACjB8H,IAAAA,MAAM,EAAE,gBAAUq0B,QAAV,EAAqB;AAC5B,aAAOp0B,OAAM,CAAE,IAAF,EAAQo0B,QAAR,EAAkB,IAAlB,CAAb;AACA,KAHgB;AAKjBp0B,IAAAA,MAAM,EAAE,gBAAUo0B,QAAV,EAAqB;AAC5B,aAAOp0B,OAAM,CAAE,IAAF,EAAQo0B,QAAR,CAAb;AACA,KAPgB;AASjB9L,IAAAA,IAAI,EAAE,cAAUpQ,KAAV,EAAkB;AACvB,aAAOuyB,MAAM,CAAE,IAAF,EAAQ,UAAUvyB,KAAV,EAAkB;AACtC,eAAOA,KAAK,KAAKqL,SAAV,GACN4Q,MAAM,CAAC7L,IAAP,CAAa,IAAb,CADM,GAEN,KAAKye,KAAL,GAAaruC,IAAb,CAAmB,YAAW;AAC7B,cAAK,KAAK86B,QAAL,KAAkB,CAAlB,IAAuB,KAAKA,QAAL,KAAkB,EAAzC,IAA+C,KAAKA,QAAL,KAAkB,CAAtE,EAA0E;AACzE,iBAAK/K,WAAL,GAAmBvQ,KAAnB;AACA;AACD,SAJD,CAFD;AAOA,OARY,EAQV,IARU,EAQJA,KARI,EAQGtU,SAAS,CAACxK,MARb,CAAb;AASA,KAnBgB;AAqBjBwQ,IAAAA,MAAM,EAAE,kBAAW;AAClB,aAAOksC,QAAQ,CAAE,IAAF,EAAQlyC,SAAR,EAAmB,UAAUrB,IAAV,EAAiB;AAClD,YAAK,KAAKixB,QAAL,KAAkB,CAAlB,IAAuB,KAAKA,QAAL,KAAkB,EAAzC,IAA+C,KAAKA,QAAL,KAAkB,CAAtE,EAA0E;AACzE,cAAIzqB,MAAM,GAAGssC,kBAAkB,CAAE,IAAF,EAAQ9yC,IAAR,CAA/B;AACAwG,UAAAA,MAAM,CAACmf,WAAP,CAAoB3lB,IAApB;AACA;AACD,OALc,CAAf;AAMA,KA5BgB;AA8BjBuH,IAAAA,OAAO,EAAE,mBAAW;AACnB,aAAOgsC,QAAQ,CAAE,IAAF,EAAQlyC,SAAR,EAAmB,UAAUrB,IAAV,EAAiB;AAClD,YAAK,KAAKixB,QAAL,KAAkB,CAAlB,IAAuB,KAAKA,QAAL,KAAkB,EAAzC,IAA+C,KAAKA,QAAL,KAAkB,CAAtE,EAA0E;AACzE,cAAIzqB,MAAM,GAAGssC,kBAAkB,CAAE,IAAF,EAAQ9yC,IAAR,CAA/B;AACAwG,UAAAA,MAAM,CAACof,YAAP,CAAqB5lB,IAArB,EAA2BwG,MAAM,CAAC61B,UAAlC;AACA;AACD,OALc,CAAf;AAMA,KArCgB;AAuCjB+X,IAAAA,MAAM,EAAE,kBAAW;AAClB,aAAOb,QAAQ,CAAE,IAAF,EAAQlyC,SAAR,EAAmB,UAAUrB,IAAV,EAAiB;AAClD,YAAK,KAAK8hB,UAAV,EAAuB;AACtB,eAAKA,UAAL,CAAgB8D,YAAhB,CAA8B5lB,IAA9B,EAAoC,IAApC;AACA;AACD,OAJc,CAAf;AAKA,KA7CgB;AA+CjB/D,IAAAA,KAAK,EAAE,iBAAW;AACjB,aAAOs3C,QAAQ,CAAE,IAAF,EAAQlyC,SAAR,EAAmB,UAAUrB,IAAV,EAAiB;AAClD,YAAK,KAAK8hB,UAAV,EAAuB;AACtB,eAAKA,UAAL,CAAgB8D,YAAhB,CAA8B5lB,IAA9B,EAAoC,KAAKsN,WAAzC;AACA;AACD,OAJc,CAAf;AAKA,KArDgB;AAuDjBk3B,IAAAA,KAAK,EAAE,iBAAW;AACjB,UAAIxkC,IAAJ;AAAA,UACCxD,CAAC,GAAG,CADL;;AAGA,aAAQ,CAAEwD,IAAI,GAAG,KAAMxD,CAAN,CAAT,KAAwB,IAAhC,EAAsCA,CAAC,EAAvC,EAA4C;AAC3C,YAAKwD,IAAI,CAACixB,QAAL,KAAkB,CAAvB,EAA2B;AAE1B;AACAW,UAAAA,MAAM,CAACkiB,SAAP,CAAkBzG,MAAM,CAAErtC,IAAF,EAAQ,KAAR,CAAxB,EAH0B,CAK1B;;AACAA,UAAAA,IAAI,CAACkmB,WAAL,GAAmB,EAAnB;AACA;AACD;;AAED,aAAO,IAAP;AACA,KAvEgB;AAyEjBrqB,IAAAA,KAAK,EAAE,eAAUk4C,aAAV,EAAyBC,iBAAzB,EAA6C;AACnDD,MAAAA,aAAa,GAAGA,aAAa,IAAI,IAAjB,GAAwB,KAAxB,GAAgCA,aAAhD;AACAC,MAAAA,iBAAiB,GAAGA,iBAAiB,IAAI,IAArB,GAA4BD,aAA5B,GAA4CC,iBAAhE;AAEA,aAAO,KAAKxzC,GAAL,CAAU,YAAW;AAC3B,eAAOoxB,MAAM,CAAC/1B,KAAP,CAAc,IAAd,EAAoBk4C,aAApB,EAAmCC,iBAAnC,CAAP;AACA,OAFM,CAAP;AAGA,KAhFgB;AAkFjBl6B,IAAAA,IAAI,EAAE,cAAUnE,KAAV,EAAkB;AACvB,aAAOuyB,MAAM,CAAE,IAAF,EAAQ,UAAUvyB,KAAV,EAAkB;AACtC,YAAI3V,IAAI,GAAG,KAAM,CAAN,KAAa,EAAxB;AAAA,YACCxD,CAAC,GAAG,CADL;AAAA,YAEC0mC,CAAC,GAAG,KAAKrsC,MAFV;;AAIA,YAAK8e,KAAK,KAAKqL,SAAV,IAAuBhhB,IAAI,CAACixB,QAAL,KAAkB,CAA9C,EAAkD;AACjD,iBAAOjxB,IAAI,CAAC66B,SAAZ;AACA,SAPqC,CAStC;;;AACA,YAAK,OAAOllB,KAAP,KAAiB,QAAjB,IAA6B,CAACg9B,YAAY,CAAClwC,IAAb,CAAmBkT,KAAnB,CAA9B,IACJ,CAAC82B,OAAO,CAAE,CAAER,QAAQ,CAACroC,IAAT,CAAe+R,KAAf,KAA0B,CAAE,EAAF,EAAM,EAAN,CAA5B,EAA0C,CAA1C,EAA8ClX,WAA9C,EAAF,CADT,EAC2E;AAE1EkX,UAAAA,KAAK,GAAGic,MAAM,CAACmc,aAAP,CAAsBp4B,KAAtB,CAAR;;AAEA,cAAI;AACH,mBAAQnZ,CAAC,GAAG0mC,CAAZ,EAAe1mC,CAAC,EAAhB,EAAqB;AACpBwD,cAAAA,IAAI,GAAG,KAAMxD,CAAN,KAAa,EAApB,CADoB,CAGpB;;AACA,kBAAKwD,IAAI,CAACixB,QAAL,KAAkB,CAAvB,EAA2B;AAC1BW,gBAAAA,MAAM,CAACkiB,SAAP,CAAkBzG,MAAM,CAAErtC,IAAF,EAAQ,KAAR,CAAxB;AACAA,gBAAAA,IAAI,CAAC66B,SAAL,GAAiBllB,KAAjB;AACA;AACD;;AAED3V,YAAAA,IAAI,GAAG,CAAP,CAXG,CAaJ;AACC,WAdD,CAcE,OAAQrH,CAAR,EAAY,CAAE;AAChB;;AAED,YAAKqH,IAAL,EAAY;AACX,eAAKwkC,KAAL,GAAan9B,MAAb,CAAqBsO,KAArB;AACA;AACD,OAnCY,EAmCV,IAnCU,EAmCJA,KAnCI,EAmCGtU,SAAS,CAACxK,MAnCb,CAAb;AAoCA,KAvHgB;AAyHjBw9C,IAAAA,WAAW,EAAE,uBAAW;AACvB,UAAI1G,OAAO,GAAG,EAAd,CADuB,CAGvB;;AACA,aAAO4F,QAAQ,CAAE,IAAF,EAAQlyC,SAAR,EAAmB,UAAUrB,IAAV,EAAiB;AAClD,YAAIvI,MAAM,GAAG,KAAKqqB,UAAlB;;AAEA,YAAK8P,MAAM,CAAC0B,OAAP,CAAgB,IAAhB,EAAsBqa,OAAtB,IAAkC,CAAvC,EAA2C;AAC1C/b,UAAAA,MAAM,CAACkiB,SAAP,CAAkBzG,MAAM,CAAE,IAAF,CAAxB;;AACA,cAAK51C,MAAL,EAAc;AACbA,YAAAA,MAAM,CAAC68C,YAAP,CAAqBt0C,IAArB,EAA2B,IAA3B;AACA;AACD,SARiD,CAUnD;;AACC,OAXc,EAWZ2tC,OAXY,CAAf;AAYA;AAzIgB,GAAlB;AA4IA/b,EAAAA,MAAM,CAACz7B,IAAP,CAAa;AACZqgB,IAAAA,QAAQ,EAAE,QADE;AAEZ1a,IAAAA,SAAS,EAAE,SAFC;AAGZ8pB,IAAAA,YAAY,EAAE,QAHF;AAIZpW,IAAAA,WAAW,EAAE,OAJD;AAKZ+kC,IAAAA,UAAU,EAAE;AALA,GAAb,EAMG,UAAUr2C,IAAV,EAAgBs2C,QAAhB,EAA2B;AAC7B5iB,IAAAA,MAAM,CAAClwB,EAAP,CAAWxD,IAAX,IAAoB,UAAU2zB,QAAV,EAAqB;AACxC,UAAIK,KAAJ;AAAA,UACCnK,GAAG,GAAG,EADP;AAAA,UAEC0sB,MAAM,GAAG7iB,MAAM,CAAEC,QAAF,CAFhB;AAAA,UAGCx4B,IAAI,GAAGo7C,MAAM,CAAC59C,MAAP,GAAgB,CAHxB;AAAA,UAIC2F,CAAC,GAAG,CAJL;;AAMA,aAAQA,CAAC,IAAInD,IAAb,EAAmBmD,CAAC,EAApB,EAAyB;AACxB01B,QAAAA,KAAK,GAAG11B,CAAC,KAAKnD,IAAN,GAAa,IAAb,GAAoB,KAAKwC,KAAL,CAAY,IAAZ,CAA5B;AACA+1B,QAAAA,MAAM,CAAE6iB,MAAM,CAAEj4C,CAAF,CAAR,CAAN,CAAuBg4C,QAAvB,EAAmCtiB,KAAnC,EAFwB,CAIxB;AACA;;AACAvzB,QAAAA,IAAI,CAAC4C,KAAL,CAAYwmB,GAAZ,EAAiBmK,KAAK,CAACzb,GAAN,EAAjB;AACA;;AAED,aAAO,KAAKwb,SAAL,CAAgBlK,GAAhB,CAAP;AACA,KAjBD;AAkBA,GAzBD;AA0BA,MAAI2sB,SAAS,GAAG,IAAIhlC,MAAJ,CAAY,OAAO+6B,IAAP,GAAc,iBAA1B,EAA6C,GAA7C,CAAhB;;AAEA,MAAIkK,SAAS,GAAG,SAAZA,SAAY,CAAU30C,IAAV,EAAiB;AAE/B;AACA;AACA;AACA,QAAI4xC,IAAI,GAAG5xC,IAAI,CAACo4B,aAAL,CAAmBgC,WAA9B;;AAEA,QAAK,CAACwX,IAAD,IAAS,CAACA,IAAI,CAACgD,MAApB,EAA6B;AAC5BhD,MAAAA,IAAI,GAAGz6C,MAAP;AACA;;AAED,WAAOy6C,IAAI,CAAC9zB,gBAAL,CAAuB9d,IAAvB,CAAP;AACA,GAZF;;AAcA,MAAI60C,IAAI,GAAG,SAAPA,IAAO,CAAU70C,IAAV,EAAgBxK,OAAhB,EAAyBqN,QAAzB,EAAoC;AAC9C,QAAIklB,GAAJ;AAAA,QAAS7pB,IAAT;AAAA,QACC42C,GAAG,GAAG,EADP,CAD8C,CAI9C;;AACA,SAAM52C,IAAN,IAAc1I,OAAd,EAAwB;AACvBs/C,MAAAA,GAAG,CAAE52C,IAAF,CAAH,GAAc8B,IAAI,CAACmF,KAAL,CAAYjH,IAAZ,CAAd;AACA8B,MAAAA,IAAI,CAACmF,KAAL,CAAYjH,IAAZ,IAAqB1I,OAAO,CAAE0I,IAAF,CAA5B;AACA;;AAED6pB,IAAAA,GAAG,GAAGllB,QAAQ,CAACzB,IAAT,CAAepB,IAAf,CAAN,CAV8C,CAY9C;;AACA,SAAM9B,IAAN,IAAc1I,OAAd,EAAwB;AACvBwK,MAAAA,IAAI,CAACmF,KAAL,CAAYjH,IAAZ,IAAqB42C,GAAG,CAAE52C,IAAF,CAAxB;AACA;;AAED,WAAO6pB,GAAP;AACA,GAlBD;;AAqBA,MAAIgtB,SAAS,GAAG,IAAIrlC,MAAJ,CAAYk7B,SAAS,CAACl6B,IAAV,CAAgB,GAAhB,CAAZ,EAAmC,GAAnC,CAAhB;;AAIA,GAAE,YAAW;AAEZ;AACA;AACA,aAASskC,iBAAT,GAA6B;AAE5B;AACA,UAAK,CAAC3I,GAAN,EAAY;AACX;AACA;;AAEDpxB,MAAAA,SAAS,CAAC9V,KAAV,CAAgB8gB,OAAhB,GAA0B,gDACzB,mCADD;AAEAomB,MAAAA,GAAG,CAAClnC,KAAJ,CAAU8gB,OAAV,GACC,2EACA,qCADA,GAEA,kBAHD;AAIA7J,MAAAA,eAAe,CAACuJ,WAAhB,CAA6B1K,SAA7B,EAAyC0K,WAAzC,CAAsD0mB,GAAtD;AAEA,UAAI4I,QAAQ,GAAG99C,MAAM,CAAC2mB,gBAAP,CAAyBuuB,GAAzB,CAAf;AACA6I,MAAAA,gBAAgB,GAAGD,QAAQ,CAACj9C,GAAT,KAAiB,IAApC,CAhB4B,CAkB5B;;AACAm9C,MAAAA,qBAAqB,GAAGC,kBAAkB,CAAEH,QAAQ,CAACI,UAAX,CAAlB,KAA8C,EAAtE,CAnB4B,CAqB5B;AACA;;AACAhJ,MAAAA,GAAG,CAAClnC,KAAJ,CAAUmwC,KAAV,GAAkB,KAAlB;AACAC,MAAAA,iBAAiB,GAAGH,kBAAkB,CAAEH,QAAQ,CAACK,KAAX,CAAlB,KAAyC,EAA7D,CAxB4B,CA0B5B;AACA;;AACAE,MAAAA,oBAAoB,GAAGJ,kBAAkB,CAAEH,QAAQ,CAACprC,KAAX,CAAlB,KAAyC,EAAhE,CA5B4B,CA8B5B;AACA;AACA;AACA;;AACAwiC,MAAAA,GAAG,CAAClnC,KAAJ,CAAUuF,QAAV,GAAqB,UAArB;AACA+qC,MAAAA,gBAAgB,GAAGL,kBAAkB,CAAE/I,GAAG,CAACrjB,WAAJ,GAAkB,CAApB,CAAlB,KAA8C,EAAjE;AAEA5M,MAAAA,eAAe,CAACsV,WAAhB,CAA6BzW,SAA7B,EArC4B,CAuC5B;AACA;;AACAoxB,MAAAA,GAAG,GAAG,IAAN;AACA;;AAED,aAAS+I,kBAAT,CAA6BM,OAA7B,EAAuC;AACtC,aAAOh5C,IAAI,CAACke,KAAL,CAAY5W,UAAU,CAAE0xC,OAAF,CAAtB,CAAP;AACA;;AAED,QAAIR,gBAAJ;AAAA,QAAsBM,oBAAtB;AAAA,QAA4CC,gBAA5C;AAAA,QAA8DF,iBAA9D;AAAA,QACCI,uBADD;AAAA,QAC0BR,qBAD1B;AAAA,QAECl6B,SAAS,GAAGlW,QAAQ,CAACC,aAAT,CAAwB,KAAxB,CAFb;AAAA,QAGCqnC,GAAG,GAAGtnC,QAAQ,CAACC,aAAT,CAAwB,KAAxB,CAHP,CApDY,CAyDZ;;AACA,QAAK,CAACqnC,GAAG,CAAClnC,KAAV,EAAkB;AACjB;AACA,KA5DW,CA8DZ;AACA;;;AACAknC,IAAAA,GAAG,CAAClnC,KAAJ,CAAUywC,cAAV,GAA2B,aAA3B;AACAvJ,IAAAA,GAAG,CAACE,SAAJ,CAAe,IAAf,EAAsBpnC,KAAtB,CAA4BywC,cAA5B,GAA6C,EAA7C;AACA7kB,IAAAA,OAAO,CAAC8kB,eAAR,GAA0BxJ,GAAG,CAAClnC,KAAJ,CAAUywC,cAAV,KAA6B,aAAvD;AAEAhkB,IAAAA,MAAM,CAACl8B,MAAP,CAAeq7B,OAAf,EAAwB;AACvB+kB,MAAAA,iBAAiB,EAAE,6BAAW;AAC7Bd,QAAAA,iBAAiB;AACjB,eAAOQ,oBAAP;AACA,OAJsB;AAKvBO,MAAAA,cAAc,EAAE,0BAAW;AAC1Bf,QAAAA,iBAAiB;AACjB,eAAOO,iBAAP;AACA,OARsB;AASvBS,MAAAA,aAAa,EAAE,yBAAW;AACzBhB,QAAAA,iBAAiB;AACjB,eAAOE,gBAAP;AACA,OAZsB;AAavBe,MAAAA,kBAAkB,EAAE,8BAAW;AAC9BjB,QAAAA,iBAAiB;AACjB,eAAOG,qBAAP;AACA,OAhBsB;AAiBvBe,MAAAA,aAAa,EAAE,yBAAW;AACzBlB,QAAAA,iBAAiB;AACjB,eAAOS,gBAAP;AACA,OApBsB;AAsBvB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAU,MAAAA,oBAAoB,EAAE,gCAAW;AAChC,YAAIC,KAAJ,EAAWxJ,EAAX,EAAeyJ,OAAf,EAAwBC,OAAxB;;AACA,YAAKX,uBAAuB,IAAI,IAAhC,EAAuC;AACtCS,UAAAA,KAAK,GAAGrxC,QAAQ,CAACC,aAAT,CAAwB,OAAxB,CAAR;AACA4nC,UAAAA,EAAE,GAAG7nC,QAAQ,CAACC,aAAT,CAAwB,IAAxB,CAAL;AACAqxC,UAAAA,OAAO,GAAGtxC,QAAQ,CAACC,aAAT,CAAwB,KAAxB,CAAV;AAEAoxC,UAAAA,KAAK,CAACjxC,KAAN,CAAY8gB,OAAZ,GAAsB,0DAAtB;AACA2mB,UAAAA,EAAE,CAACznC,KAAH,CAAS8gB,OAAT,GAAmB,kBAAnB,CANsC,CAQtC;AACA;AACA;;AACA2mB,UAAAA,EAAE,CAACznC,KAAH,CAAS4D,MAAT,GAAkB,KAAlB;AACAstC,UAAAA,OAAO,CAAClxC,KAAR,CAAc4D,MAAd,GAAuB,KAAvB,CAZsC,CActC;AACA;AACA;AACA;AACA;AACA;;AACAstC,UAAAA,OAAO,CAAClxC,KAAR,CAAcmR,OAAd,GAAwB,OAAxB;AAEA8F,UAAAA,eAAe,CACbuJ,WADF,CACeywB,KADf,EAEEzwB,WAFF,CAEeinB,EAFf,EAGEjnB,WAHF,CAGe0wB,OAHf;AAKAC,UAAAA,OAAO,GAAGn/C,MAAM,CAAC2mB,gBAAP,CAAyB8uB,EAAzB,CAAV;AACA+I,UAAAA,uBAAuB,GAAKltC,QAAQ,CAAE6tC,OAAO,CAACvtC,MAAV,EAAkB,EAAlB,CAAR,GAC3BN,QAAQ,CAAE6tC,OAAO,CAACC,cAAV,EAA0B,EAA1B,CADmB,GAE3B9tC,QAAQ,CAAE6tC,OAAO,CAACE,iBAAV,EAA6B,EAA7B,CAFiB,KAEuB5J,EAAE,CAAC6J,YAFpD;AAIAr6B,UAAAA,eAAe,CAACsV,WAAhB,CAA6B0kB,KAA7B;AACA;;AACD,eAAOT,uBAAP;AACA;AApEsB,KAAxB;AAsEA,GA1ID;;AA6IA,WAASe,MAAT,CAAiB12C,IAAjB,EAAuB9B,IAAvB,EAA6By4C,QAA7B,EAAwC;AACvC,QAAI9sC,KAAJ;AAAA,QAAW+sC,QAAX;AAAA,QAAqBC,QAArB;AAAA,QAA+B9uB,GAA/B;AAAA,QAEC;AACA;AACA;AACA;AACA5iB,IAAAA,KAAK,GAAGnF,IAAI,CAACmF,KANd;AAQAwxC,IAAAA,QAAQ,GAAGA,QAAQ,IAAIhC,SAAS,CAAE30C,IAAF,CAAhC,CATuC,CAWvC;AACA;AACA;;AACA,QAAK22C,QAAL,EAAgB;AACf5uB,MAAAA,GAAG,GAAG4uB,QAAQ,CAACG,gBAAT,CAA2B54C,IAA3B,KAAqCy4C,QAAQ,CAAEz4C,IAAF,CAAnD;;AAEA,UAAK6pB,GAAG,KAAK,EAAR,IAAc,CAAC8iB,UAAU,CAAE7qC,IAAF,CAA9B,EAAyC;AACxC+nB,QAAAA,GAAG,GAAG6J,MAAM,CAACzsB,KAAP,CAAcnF,IAAd,EAAoB9B,IAApB,CAAN;AACA,OALc,CAOf;AACA;AACA;AACA;AACA;;;AACA,UAAK,CAAC6yB,OAAO,CAACglB,cAAR,EAAD,IAA6BrB,SAAS,CAACjyC,IAAV,CAAgBslB,GAAhB,CAA7B,IAAsDgtB,SAAS,CAACtyC,IAAV,CAAgBvE,IAAhB,CAA3D,EAAoF;AAEnF;AACA2L,QAAAA,KAAK,GAAG1E,KAAK,CAAC0E,KAAd;AACA+sC,QAAAA,QAAQ,GAAGzxC,KAAK,CAACyxC,QAAjB;AACAC,QAAAA,QAAQ,GAAG1xC,KAAK,CAAC0xC,QAAjB,CALmF,CAOnF;;AACA1xC,QAAAA,KAAK,CAACyxC,QAAN,GAAiBzxC,KAAK,CAAC0xC,QAAN,GAAiB1xC,KAAK,CAAC0E,KAAN,GAAcke,GAAhD;AACAA,QAAAA,GAAG,GAAG4uB,QAAQ,CAAC9sC,KAAf,CATmF,CAWnF;;AACA1E,QAAAA,KAAK,CAAC0E,KAAN,GAAcA,KAAd;AACA1E,QAAAA,KAAK,CAACyxC,QAAN,GAAiBA,QAAjB;AACAzxC,QAAAA,KAAK,CAAC0xC,QAAN,GAAiBA,QAAjB;AACA;AACD;;AAED,WAAO9uB,GAAG,KAAK/G,SAAR,GAEN;AACA;AACA+G,IAAAA,GAAG,GAAG,EAJA,GAKNA,GALD;AAMA;;AAGD,WAASgvB,YAAT,CAAuBC,WAAvB,EAAoCC,MAApC,EAA6C;AAE5C;AACA,WAAO;AACNxgC,MAAAA,GAAG,EAAE,eAAW;AACf,YAAKugC,WAAW,EAAhB,EAAqB;AAEpB;AACA;AACA,iBAAO,KAAKvgC,GAAZ;AACA;AACA,SAPc,CASf;;;AACA,eAAO,CAAE,KAAKA,GAAL,GAAWwgC,MAAb,EAAsB11C,KAAtB,CAA6B,IAA7B,EAAmCF,SAAnC,CAAP;AACA;AAZK,KAAP;AAcA;;AAGD,MAAI61C,WAAW,GAAG,CAAE,QAAF,EAAY,KAAZ,EAAmB,IAAnB,CAAlB;AAAA,MACCC,UAAU,GAAGpyC,QAAQ,CAACC,aAAT,CAAwB,KAAxB,EAAgCG,KAD9C;AAAA,MAECiyC,WAAW,GAAG,EAFf,CAj9MiF,CAq9MjF;;AACA,WAASC,cAAT,CAAyBn5C,IAAzB,EAAgC;AAE/B;AACA,QAAIo5C,OAAO,GAAGp5C,IAAI,CAAE,CAAF,CAAJ,CAAU4lB,WAAV,KAA0B5lB,IAAI,CAACiD,KAAL,CAAY,CAAZ,CAAxC;AAAA,QACC3E,CAAC,GAAG06C,WAAW,CAACrgD,MADjB;;AAGA,WAAQ2F,CAAC,EAAT,EAAc;AACb0B,MAAAA,IAAI,GAAGg5C,WAAW,CAAE16C,CAAF,CAAX,GAAmB86C,OAA1B;;AACA,UAAKp5C,IAAI,IAAIi5C,UAAb,EAA0B;AACzB,eAAOj5C,IAAP;AACA;AACD;AACD,GAl+MgF,CAo+MjF;;;AACA,WAASq5C,aAAT,CAAwBr5C,IAAxB,EAA+B;AAC9B,QAAIs5C,KAAK,GAAG5lB,MAAM,CAAC6lB,QAAP,CAAiBv5C,IAAjB,KAA2Bk5C,WAAW,CAAEl5C,IAAF,CAAlD;;AAEA,QAAKs5C,KAAL,EAAa;AACZ,aAAOA,KAAP;AACA;;AACD,QAAKt5C,IAAI,IAAIi5C,UAAb,EAA0B;AACzB,aAAOj5C,IAAP;AACA;;AACD,WAAOk5C,WAAW,CAAEl5C,IAAF,CAAX,GAAsBm5C,cAAc,CAAEn5C,IAAF,CAAd,IAA0BA,IAAvD;AACA;;AAGD,MAEC;AACA;AACA;AACAw5C,EAAAA,YAAY,GAAG,2BALhB;AAAA,MAMCC,WAAW,GAAG,KANf;AAAA,MAOCC,OAAO,GAAG;AAAEltC,IAAAA,QAAQ,EAAE,UAAZ;AAAwB6L,IAAAA,UAAU,EAAE,QAApC;AAA8CD,IAAAA,OAAO,EAAE;AAAvD,GAPX;AAAA,MAQCuhC,kBAAkB,GAAG;AACpBC,IAAAA,aAAa,EAAE,GADK;AAEpBC,IAAAA,UAAU,EAAE;AAFQ,GARtB;;AAaA,WAASC,iBAAT,CAA4BzlB,KAA5B,EAAmC5c,KAAnC,EAA0CsiC,QAA1C,EAAqD;AAEpD;AACA;AACA,QAAI9xB,OAAO,GAAGwkB,OAAO,CAAC/mC,IAAR,CAAc+R,KAAd,CAAd;AACA,WAAOwQ,OAAO,GAEb;AACAzpB,IAAAA,IAAI,CAACC,GAAL,CAAU,CAAV,EAAawpB,OAAO,CAAE,CAAF,CAAP,IAAiB8xB,QAAQ,IAAI,CAA7B,CAAb,KAAoD9xB,OAAO,CAAE,CAAF,CAAP,IAAgB,IAApE,CAHa,GAIbxQ,KAJD;AAKA;;AAED,WAASuiC,kBAAT,CAA6Bl4C,IAA7B,EAAmCm4C,SAAnC,EAA8CC,GAA9C,EAAmDC,WAAnD,EAAgEC,MAAhE,EAAwEC,WAAxE,EAAsF;AACrF,QAAI/7C,CAAC,GAAG27C,SAAS,KAAK,OAAd,GAAwB,CAAxB,GAA4B,CAApC;AAAA,QACCK,KAAK,GAAG,CADT;AAAA,QAECpnC,KAAK,GAAG,CAFT,CADqF,CAKrF;;AACA,QAAKgnC,GAAG,MAAOC,WAAW,GAAG,QAAH,GAAc,SAAhC,CAAR,EAAsD;AACrD,aAAO,CAAP;AACA;;AAED,WAAQ77C,CAAC,GAAG,CAAZ,EAAeA,CAAC,IAAI,CAApB,EAAwB;AAEvB;AACA,UAAK47C,GAAG,KAAK,QAAb,EAAwB;AACvBhnC,QAAAA,KAAK,IAAIwgB,MAAM,CAACz2B,GAAP,CAAY6E,IAAZ,EAAkBo4C,GAAG,GAAGxN,SAAS,CAAEpuC,CAAF,CAAjC,EAAwC,IAAxC,EAA8C87C,MAA9C,CAAT;AACA,OALsB,CAOvB;;;AACA,UAAK,CAACD,WAAN,EAAoB;AAEnB;AACAjnC,QAAAA,KAAK,IAAIwgB,MAAM,CAACz2B,GAAP,CAAY6E,IAAZ,EAAkB,YAAY4qC,SAAS,CAAEpuC,CAAF,CAAvC,EAA8C,IAA9C,EAAoD87C,MAApD,CAAT,CAHmB,CAKnB;;AACA,YAAKF,GAAG,KAAK,SAAb,EAAyB;AACxBhnC,UAAAA,KAAK,IAAIwgB,MAAM,CAACz2B,GAAP,CAAY6E,IAAZ,EAAkB,WAAW4qC,SAAS,CAAEpuC,CAAF,CAApB,GAA4B,OAA9C,EAAuD,IAAvD,EAA6D87C,MAA7D,CAAT,CADwB,CAGzB;AACC,SAJD,MAIO;AACNE,UAAAA,KAAK,IAAI5mB,MAAM,CAACz2B,GAAP,CAAY6E,IAAZ,EAAkB,WAAW4qC,SAAS,CAAEpuC,CAAF,CAApB,GAA4B,OAA9C,EAAuD,IAAvD,EAA6D87C,MAA7D,CAAT;AACA,SAZkB,CAcpB;AACA;;AACC,OAhBD,MAgBO;AAEN;AACA,YAAKF,GAAG,KAAK,SAAb,EAAyB;AACxBhnC,UAAAA,KAAK,IAAIwgB,MAAM,CAACz2B,GAAP,CAAY6E,IAAZ,EAAkB,YAAY4qC,SAAS,CAAEpuC,CAAF,CAAvC,EAA8C,IAA9C,EAAoD87C,MAApD,CAAT;AACA,SALK,CAON;;;AACA,YAAKF,GAAG,KAAK,QAAb,EAAwB;AACvBhnC,UAAAA,KAAK,IAAIwgB,MAAM,CAACz2B,GAAP,CAAY6E,IAAZ,EAAkB,WAAW4qC,SAAS,CAAEpuC,CAAF,CAApB,GAA4B,OAA9C,EAAuD,IAAvD,EAA6D87C,MAA7D,CAAT;AACA;AACD;AACD,KA9CoF,CAgDrF;;;AACA,QAAK,CAACD,WAAD,IAAgBE,WAAW,IAAI,CAApC,EAAwC;AAEvC;AACA;AACAnnC,MAAAA,KAAK,IAAI1U,IAAI,CAACC,GAAL,CAAU,CAAV,EAAaD,IAAI,CAAC+7C,IAAL,CACrBz4C,IAAI,CAAE,WAAWm4C,SAAS,CAAE,CAAF,CAAT,CAAer0B,WAAf,EAAX,GAA0Cq0B,SAAS,CAACh3C,KAAV,CAAiB,CAAjB,CAA5C,CAAJ,GACAo3C,WADA,GAEAnnC,KAFA,GAGAonC,KAHA,GAIA,GALqB,CAOtB;AACA;AARsB,OAAb,KASF,CATP;AAUA;;AAED,WAAOpnC,KAAP;AACA;;AAED,WAASsnC,gBAAT,CAA2B14C,IAA3B,EAAiCm4C,SAAjC,EAA4CK,KAA5C,EAAoD;AAEnD;AACA,QAAIF,MAAM,GAAG3D,SAAS,CAAE30C,IAAF,CAAtB;AAAA,QAEC;AACA;AACA24C,IAAAA,eAAe,GAAG,CAAC5nB,OAAO,CAAC+kB,iBAAR,EAAD,IAAgC0C,KAJnD;AAAA,QAKCH,WAAW,GAAGM,eAAe,IAC5B/mB,MAAM,CAACz2B,GAAP,CAAY6E,IAAZ,EAAkB,WAAlB,EAA+B,KAA/B,EAAsCs4C,MAAtC,MAAmD,YANrD;AAAA,QAOCM,gBAAgB,GAAGP,WAPpB;AAAA,QASCrpC,GAAG,GAAG0nC,MAAM,CAAE12C,IAAF,EAAQm4C,SAAR,EAAmBG,MAAnB,CATb;AAAA,QAUCO,UAAU,GAAG,WAAWV,SAAS,CAAE,CAAF,CAAT,CAAer0B,WAAf,EAAX,GAA0Cq0B,SAAS,CAACh3C,KAAV,CAAiB,CAAjB,CAVxD,CAHmD,CAenD;AACA;;AACA,QAAKuzC,SAAS,CAACjyC,IAAV,CAAgBuM,GAAhB,CAAL,EAA6B;AAC5B,UAAK,CAACwpC,KAAN,EAAc;AACb,eAAOxpC,GAAP;AACA;;AACDA,MAAAA,GAAG,GAAG,MAAN;AACA,KAtBkD,CAyBnD;AACA;AACA;;;AACA,QAAK,CAAE,CAAC+hB,OAAO,CAAC+kB,iBAAR,EAAD,IAAgCuC,WAAhC,IAEN;AACA;AACA;AACA;AACA,KAACtnB,OAAO,CAAColB,oBAAR,EAAD,IAAmCxe,QAAQ,CAAE33B,IAAF,EAAQ,IAAR,CANrC,IAQN;AACA;AACAgP,IAAAA,GAAG,KAAK,MAVF,IAYN;AACA;AACA,KAAChL,UAAU,CAAEgL,GAAF,CAAX,IAAsB4iB,MAAM,CAACz2B,GAAP,CAAY6E,IAAZ,EAAkB,SAAlB,EAA6B,KAA7B,EAAoCs4C,MAApC,MAAiD,QAdnE,KAgBJ;AACAt4C,IAAAA,IAAI,CAAC84C,cAAL,GAAsBjiD,MAjBvB,EAiBgC;AAE/BwhD,MAAAA,WAAW,GAAGzmB,MAAM,CAACz2B,GAAP,CAAY6E,IAAZ,EAAkB,WAAlB,EAA+B,KAA/B,EAAsCs4C,MAAtC,MAAmD,YAAjE,CAF+B,CAI/B;AACA;AACA;;AACAM,MAAAA,gBAAgB,GAAGC,UAAU,IAAI74C,IAAjC;;AACA,UAAK44C,gBAAL,EAAwB;AACvB5pC,QAAAA,GAAG,GAAGhP,IAAI,CAAE64C,UAAF,CAAV;AACA;AACD,KAxDkD,CA0DnD;;;AACA7pC,IAAAA,GAAG,GAAGhL,UAAU,CAAEgL,GAAF,CAAV,IAAqB,CAA3B,CA3DmD,CA6DnD;;AACA,WAASA,GAAG,GACXkpC,kBAAkB,CACjBl4C,IADiB,EAEjBm4C,SAFiB,EAGjBK,KAAK,KAAMH,WAAW,GAAG,QAAH,GAAc,SAA/B,CAHY,EAIjBO,gBAJiB,EAKjBN,MALiB,EAOjB;AACAtpC,IAAAA,GARiB,CADZ,GAWH,IAXJ;AAYA;;AAED4iB,EAAAA,MAAM,CAACl8B,MAAP,CAAe;AAEd;AACA;AACAqjD,IAAAA,QAAQ,EAAE;AACTC,MAAAA,OAAO,EAAE;AACRviC,QAAAA,GAAG,EAAE,aAAUzW,IAAV,EAAgB22C,QAAhB,EAA2B;AAC/B,cAAKA,QAAL,EAAgB;AAEf;AACA,gBAAI5uB,GAAG,GAAG2uB,MAAM,CAAE12C,IAAF,EAAQ,SAAR,CAAhB;AACA,mBAAO+nB,GAAG,KAAK,EAAR,GAAa,GAAb,GAAmBA,GAA1B;AACA;AACD;AARO;AADA,KAJI;AAiBd;AACA2jB,IAAAA,SAAS,EAAE;AACV,iCAA2B,IADjB;AAEV,qBAAe,IAFL;AAGV,qBAAe,IAHL;AAIV,kBAAY,IAJF;AAKV,oBAAc,IALJ;AAMV,oBAAc,IANJ;AAOV,kBAAY,IAPF;AAQV,oBAAc,IARJ;AASV,uBAAiB,IATP;AAUV,yBAAmB,IAVT;AAWV,iBAAW,IAXD;AAYV,oBAAc,IAZJ;AAaV,sBAAgB,IAbN;AAcV,oBAAc,IAdJ;AAeV,iBAAW,IAfD;AAgBV,eAAS,IAhBC;AAiBV,iBAAW,IAjBD;AAkBV,gBAAU,IAlBA;AAmBV,gBAAU,IAnBA;AAoBV,cAAQ;AApBE,KAlBG;AAyCd;AACA;AACA+L,IAAAA,QAAQ,EAAE,EA3CI;AA6Cd;AACAtyC,IAAAA,KAAK,EAAE,eAAUnF,IAAV,EAAgB9B,IAAhB,EAAsByX,KAAtB,EAA6B6iC,KAA7B,EAAqC;AAE3C;AACA,UAAK,CAACx4C,IAAD,IAASA,IAAI,CAACixB,QAAL,KAAkB,CAA3B,IAAgCjxB,IAAI,CAACixB,QAAL,KAAkB,CAAlD,IAAuD,CAACjxB,IAAI,CAACmF,KAAlE,EAA0E;AACzE;AACA,OAL0C,CAO3C;;;AACA,UAAI4iB,GAAJ;AAAA,UAAS1oB,IAAT;AAAA,UAAe8qC,KAAf;AAAA,UACC8O,QAAQ,GAAGpQ,SAAS,CAAE3qC,IAAF,CADrB;AAAA,UAECg7C,YAAY,GAAGvB,WAAW,CAACl1C,IAAZ,CAAkBvE,IAAlB,CAFhB;AAAA,UAGCiH,KAAK,GAAGnF,IAAI,CAACmF,KAHd,CAR2C,CAa3C;AACA;AACA;;AACA,UAAK,CAAC+zC,YAAN,EAAqB;AACpBh7C,QAAAA,IAAI,GAAGq5C,aAAa,CAAE0B,QAAF,CAApB;AACA,OAlB0C,CAoB3C;;;AACA9O,MAAAA,KAAK,GAAGvY,MAAM,CAACmnB,QAAP,CAAiB76C,IAAjB,KAA2B0zB,MAAM,CAACmnB,QAAP,CAAiBE,QAAjB,CAAnC,CArB2C,CAuB3C;;AACA,UAAKtjC,KAAK,KAAKqL,SAAf,EAA2B;AAC1B3hB,QAAAA,IAAI,WAAUsW,KAAV,CAAJ,CAD0B,CAG1B;;AACA,YAAKtW,IAAI,KAAK,QAAT,KAAuB0oB,GAAG,GAAG4iB,OAAO,CAAC/mC,IAAR,CAAc+R,KAAd,CAA7B,KAAwDoS,GAAG,CAAE,CAAF,CAAhE,EAAwE;AACvEpS,UAAAA,KAAK,GAAGs1B,SAAS,CAAEjrC,IAAF,EAAQ9B,IAAR,EAAc6pB,GAAd,CAAjB,CADuE,CAGvE;;AACA1oB,UAAAA,IAAI,GAAG,QAAP;AACA,SATyB,CAW1B;;;AACA,YAAKsW,KAAK,IAAI,IAAT,IAAiBA,KAAK,KAAKA,KAAhC,EAAwC;AACvC;AACA,SAdyB,CAgB1B;AACA;AACA;;;AACA,YAAKtW,IAAI,KAAK,QAAT,IAAqB,CAAC65C,YAA3B,EAA0C;AACzCvjC,UAAAA,KAAK,IAAIoS,GAAG,IAAIA,GAAG,CAAE,CAAF,CAAV,KAAqB6J,MAAM,CAAC8Z,SAAP,CAAkBuN,QAAlB,IAA+B,EAA/B,GAAoC,IAAzD,CAAT;AACA,SArByB,CAuB1B;;;AACA,YAAK,CAACloB,OAAO,CAAC8kB,eAAT,IAA4BlgC,KAAK,KAAK,EAAtC,IAA4CzX,IAAI,CAACY,OAAL,CAAc,YAAd,MAAiC,CAAlF,EAAsF;AACrFqG,UAAAA,KAAK,CAAEjH,IAAF,CAAL,GAAgB,SAAhB;AACA,SA1ByB,CA4B1B;;;AACA,YAAK,CAACisC,KAAD,IAAU,EAAG,SAASA,KAAZ,CAAV,IACJ,CAAEx0B,KAAK,GAAGw0B,KAAK,CAACd,GAAN,CAAWrpC,IAAX,EAAiB2V,KAAjB,EAAwB6iC,KAAxB,CAAV,MAAgDx3B,SADjD,EAC6D;AAE5D,cAAKk4B,YAAL,EAAoB;AACnB/zC,YAAAA,KAAK,CAACg0C,WAAN,CAAmBj7C,IAAnB,EAAyByX,KAAzB;AACA,WAFD,MAEO;AACNxQ,YAAAA,KAAK,CAAEjH,IAAF,CAAL,GAAgByX,KAAhB;AACA;AACD;AAED,OAvCD,MAuCO;AAEN;AACA,YAAKw0B,KAAK,IAAI,SAASA,KAAlB,IACJ,CAAEpiB,GAAG,GAAGoiB,KAAK,CAAC1zB,GAAN,CAAWzW,IAAX,EAAiB,KAAjB,EAAwBw4C,KAAxB,CAAR,MAA8Cx3B,SAD/C,EAC2D;AAE1D,iBAAO+G,GAAP;AACA,SAPK,CASN;;;AACA,eAAO5iB,KAAK,CAAEjH,IAAF,CAAZ;AACA;AACD,KAzHa;AA2Hd/C,IAAAA,GAAG,EAAE,aAAU6E,IAAV,EAAgB9B,IAAhB,EAAsBs6C,KAAtB,EAA6BF,MAA7B,EAAsC;AAC1C,UAAItpC,GAAJ;AAAA,UAASgjB,GAAT;AAAA,UAAcmY,KAAd;AAAA,UACC8O,QAAQ,GAAGpQ,SAAS,CAAE3qC,IAAF,CADrB;AAAA,UAECg7C,YAAY,GAAGvB,WAAW,CAACl1C,IAAZ,CAAkBvE,IAAlB,CAFhB,CAD0C,CAK1C;AACA;AACA;;AACA,UAAK,CAACg7C,YAAN,EAAqB;AACpBh7C,QAAAA,IAAI,GAAGq5C,aAAa,CAAE0B,QAAF,CAApB;AACA,OAVyC,CAY1C;;;AACA9O,MAAAA,KAAK,GAAGvY,MAAM,CAACmnB,QAAP,CAAiB76C,IAAjB,KAA2B0zB,MAAM,CAACmnB,QAAP,CAAiBE,QAAjB,CAAnC,CAb0C,CAe1C;;AACA,UAAK9O,KAAK,IAAI,SAASA,KAAvB,EAA+B;AAC9Bn7B,QAAAA,GAAG,GAAGm7B,KAAK,CAAC1zB,GAAN,CAAWzW,IAAX,EAAiB,IAAjB,EAAuBw4C,KAAvB,CAAN;AACA,OAlByC,CAoB1C;;;AACA,UAAKxpC,GAAG,KAAKgS,SAAb,EAAyB;AACxBhS,QAAAA,GAAG,GAAG0nC,MAAM,CAAE12C,IAAF,EAAQ9B,IAAR,EAAco6C,MAAd,CAAZ;AACA,OAvByC,CAyB1C;;;AACA,UAAKtpC,GAAG,KAAK,QAAR,IAAoB9Q,IAAI,IAAI25C,kBAAjC,EAAsD;AACrD7oC,QAAAA,GAAG,GAAG6oC,kBAAkB,CAAE35C,IAAF,CAAxB;AACA,OA5ByC,CA8B1C;;;AACA,UAAKs6C,KAAK,KAAK,EAAV,IAAgBA,KAArB,EAA6B;AAC5BxmB,QAAAA,GAAG,GAAGhuB,UAAU,CAAEgL,GAAF,CAAhB;AACA,eAAOwpC,KAAK,KAAK,IAAV,IAAkBY,QAAQ,CAAEpnB,GAAF,CAA1B,GAAoCA,GAAG,IAAI,CAA3C,GAA+ChjB,GAAtD;AACA;;AAED,aAAOA,GAAP;AACA;AAhKa,GAAf;AAmKA4iB,EAAAA,MAAM,CAACz7B,IAAP,CAAa,CAAE,QAAF,EAAY,OAAZ,CAAb,EAAoC,UAAU49B,EAAV,EAAcokB,SAAd,EAA0B;AAC7DvmB,IAAAA,MAAM,CAACmnB,QAAP,CAAiBZ,SAAjB,IAA+B;AAC9B1hC,MAAAA,GAAG,EAAE,aAAUzW,IAAV,EAAgB22C,QAAhB,EAA0B6B,KAA1B,EAAkC;AACtC,YAAK7B,QAAL,EAAgB;AAEf;AACA;AACA,iBAAOe,YAAY,CAACj1C,IAAb,CAAmBmvB,MAAM,CAACz2B,GAAP,CAAY6E,IAAZ,EAAkB,SAAlB,CAAnB,OAEN;AACA;AACA;AACA;AACA;AACA;AACE,WAACA,IAAI,CAAC84C,cAAL,GAAsBjiD,MAAvB,IAAiC,CAACmJ,IAAI,CAAC4J,qBAAL,GAA6BC,KAR3D,IASNgrC,IAAI,CAAE70C,IAAF,EAAQ43C,OAAR,EAAiB,YAAW;AAC/B,mBAAOc,gBAAgB,CAAE14C,IAAF,EAAQm4C,SAAR,EAAmBK,KAAnB,CAAvB;AACA,WAFG,CATE,GAYNE,gBAAgB,CAAE14C,IAAF,EAAQm4C,SAAR,EAAmBK,KAAnB,CAZjB;AAaA;AACD,OApB6B;AAsB9BnP,MAAAA,GAAG,EAAE,aAAUrpC,IAAV,EAAgB2V,KAAhB,EAAuB6iC,KAAvB,EAA+B;AACnC,YAAIryB,OAAJ;AAAA,YACCmyB,MAAM,GAAG3D,SAAS,CAAE30C,IAAF,CADnB;AAAA,YAGC;AACA;AACAq5C,QAAAA,kBAAkB,GAAG,CAACtoB,OAAO,CAACmlB,aAAR,EAAD,IACpBoC,MAAM,CAAC5tC,QAAP,KAAoB,UANtB;AAAA,YAQC;AACAiuC,QAAAA,eAAe,GAAGU,kBAAkB,IAAIb,KATzC;AAAA,YAUCH,WAAW,GAAGM,eAAe,IAC5B/mB,MAAM,CAACz2B,GAAP,CAAY6E,IAAZ,EAAkB,WAAlB,EAA+B,KAA/B,EAAsCs4C,MAAtC,MAAmD,YAXrD;AAAA,YAYCL,QAAQ,GAAGO,KAAK,GACfN,kBAAkB,CACjBl4C,IADiB,EAEjBm4C,SAFiB,EAGjBK,KAHiB,EAIjBH,WAJiB,EAKjBC,MALiB,CADH,GAQf,CApBF,CADmC,CAuBnC;AACA;;AACA,YAAKD,WAAW,IAAIgB,kBAApB,EAAyC;AACxCpB,UAAAA,QAAQ,IAAIv7C,IAAI,CAAC+7C,IAAL,CACXz4C,IAAI,CAAE,WAAWm4C,SAAS,CAAE,CAAF,CAAT,CAAer0B,WAAf,EAAX,GAA0Cq0B,SAAS,CAACh3C,KAAV,CAAiB,CAAjB,CAA5C,CAAJ,GACA6C,UAAU,CAAEs0C,MAAM,CAAEH,SAAF,CAAR,CADV,GAEAD,kBAAkB,CAAEl4C,IAAF,EAAQm4C,SAAR,EAAmB,QAAnB,EAA6B,KAA7B,EAAoCG,MAApC,CAFlB,GAGA,GAJW,CAAZ;AAMA,SAhCkC,CAkCnC;;;AACA,YAAKL,QAAQ,KAAM9xB,OAAO,GAAGwkB,OAAO,CAAC/mC,IAAR,CAAc+R,KAAd,CAAhB,CAAR,IACJ,CAAEwQ,OAAO,CAAE,CAAF,CAAP,IAAgB,IAAlB,MAA6B,IAD9B,EACqC;AAEpCnmB,UAAAA,IAAI,CAACmF,KAAL,CAAYgzC,SAAZ,IAA0BxiC,KAA1B;AACAA,UAAAA,KAAK,GAAGic,MAAM,CAACz2B,GAAP,CAAY6E,IAAZ,EAAkBm4C,SAAlB,CAAR;AACA;;AAED,eAAOH,iBAAiB,CAAEh4C,IAAF,EAAQ2V,KAAR,EAAesiC,QAAf,CAAxB;AACA;AAjE6B,KAA/B;AAmEA,GApED;AAsEArmB,EAAAA,MAAM,CAACmnB,QAAP,CAAgB1D,UAAhB,GAA6B0B,YAAY,CAAEhmB,OAAO,CAACklB,kBAAV,EACxC,UAAUj2C,IAAV,EAAgB22C,QAAhB,EAA2B;AAC1B,QAAKA,QAAL,EAAgB;AACf,aAAO,CAAE3yC,UAAU,CAAE0yC,MAAM,CAAE12C,IAAF,EAAQ,YAAR,CAAR,CAAV,IACRA,IAAI,CAAC4J,qBAAL,GAA6B6O,IAA7B,GACCo8B,IAAI,CAAE70C,IAAF,EAAQ;AAAEq1C,QAAAA,UAAU,EAAE;AAAd,OAAR,EAA2B,YAAW;AACzC,eAAOr1C,IAAI,CAAC4J,qBAAL,GAA6B6O,IAApC;AACA,OAFG,CAFC,IAKH,IALJ;AAMA;AACD,GAVuC,CAAzC,CAp4NiF,CAi5NjF;;AACAmZ,EAAAA,MAAM,CAACz7B,IAAP,CAAa;AACZuiB,IAAAA,MAAM,EAAE,EADI;AAEZ4gC,IAAAA,OAAO,EAAE,EAFG;AAGZC,IAAAA,MAAM,EAAE;AAHI,GAAb,EAIG,UAAUC,MAAV,EAAkBC,MAAlB,EAA2B;AAC7B7nB,IAAAA,MAAM,CAACmnB,QAAP,CAAiBS,MAAM,GAAGC,MAA1B,IAAqC;AACpCC,MAAAA,MAAM,EAAE,gBAAU/jC,KAAV,EAAkB;AACzB,YAAInZ,CAAC,GAAG,CAAR;AAAA,YACCm9C,QAAQ,GAAG,EADZ;AAAA,YAGC;AACAzyB,QAAAA,KAAK,GAAG,OAAOvR,KAAP,KAAiB,QAAjB,GAA4BA,KAAK,CAACvV,KAAN,CAAa,GAAb,CAA5B,GAAiD,CAAEuV,KAAF,CAJ1D;;AAMA,eAAQnZ,CAAC,GAAG,CAAZ,EAAeA,CAAC,EAAhB,EAAqB;AACpBm9C,UAAAA,QAAQ,CAAEH,MAAM,GAAG5O,SAAS,CAAEpuC,CAAF,CAAlB,GAA0Bi9C,MAA5B,CAAR,GACCvyB,KAAK,CAAE1qB,CAAF,CAAL,IAAc0qB,KAAK,CAAE1qB,CAAC,GAAG,CAAN,CAAnB,IAAgC0qB,KAAK,CAAE,CAAF,CADtC;AAEA;;AAED,eAAOyyB,QAAP;AACA;AAdmC,KAArC;;AAiBA,QAAKH,MAAM,KAAK,QAAhB,EAA2B;AAC1B5nB,MAAAA,MAAM,CAACmnB,QAAP,CAAiBS,MAAM,GAAGC,MAA1B,EAAmCpQ,GAAnC,GAAyC2O,iBAAzC;AACA;AACD,GAzBD;AA2BApmB,EAAAA,MAAM,CAAClwB,EAAP,CAAUhM,MAAV,CAAkB;AACjByF,IAAAA,GAAG,EAAE,aAAU+C,IAAV,EAAgByX,KAAhB,EAAwB;AAC5B,aAAOuyB,MAAM,CAAE,IAAF,EAAQ,UAAUloC,IAAV,EAAgB9B,IAAhB,EAAsByX,KAAtB,EAA8B;AAClD,YAAI2iC,MAAJ;AAAA,YAAY/7B,GAAZ;AAAA,YACC/b,GAAG,GAAG,EADP;AAAA,YAEChE,CAAC,GAAG,CAFL;;AAIA,YAAKyE,KAAK,CAACinB,OAAN,CAAehqB,IAAf,CAAL,EAA6B;AAC5Bo6C,UAAAA,MAAM,GAAG3D,SAAS,CAAE30C,IAAF,CAAlB;AACAuc,UAAAA,GAAG,GAAGre,IAAI,CAACrH,MAAX;;AAEA,iBAAQ2F,CAAC,GAAG+f,GAAZ,EAAiB/f,CAAC,EAAlB,EAAuB;AACtBgE,YAAAA,GAAG,CAAEtC,IAAI,CAAE1B,CAAF,CAAN,CAAH,GAAmBo1B,MAAM,CAACz2B,GAAP,CAAY6E,IAAZ,EAAkB9B,IAAI,CAAE1B,CAAF,CAAtB,EAA6B,KAA7B,EAAoC87C,MAApC,CAAnB;AACA;;AAED,iBAAO93C,GAAP;AACA;;AAED,eAAOmV,KAAK,KAAKqL,SAAV,GACN4Q,MAAM,CAACzsB,KAAP,CAAcnF,IAAd,EAAoB9B,IAApB,EAA0ByX,KAA1B,CADM,GAENic,MAAM,CAACz2B,GAAP,CAAY6E,IAAZ,EAAkB9B,IAAlB,CAFD;AAGA,OAnBY,EAmBVA,IAnBU,EAmBJyX,KAnBI,EAmBGtU,SAAS,CAACxK,MAAV,GAAmB,CAnBtB,CAAb;AAoBA;AAtBgB,GAAlB;;AA0BA,WAAS+iD,KAAT,CAAgB55C,IAAhB,EAAsBxK,OAAtB,EAA+ByJ,IAA/B,EAAqCgG,GAArC,EAA0C40C,MAA1C,EAAmD;AAClD,WAAO,IAAID,KAAK,CAAC14C,SAAN,CAAgBiJ,IAApB,CAA0BnK,IAA1B,EAAgCxK,OAAhC,EAAyCyJ,IAAzC,EAA+CgG,GAA/C,EAAoD40C,MAApD,CAAP;AACA;;AACDjoB,EAAAA,MAAM,CAACgoB,KAAP,GAAeA,KAAf;AAEAA,EAAAA,KAAK,CAAC14C,SAAN,GAAkB;AACjB1C,IAAAA,WAAW,EAAEo7C,KADI;AAEjBzvC,IAAAA,IAAI,EAAE,cAAUnK,IAAV,EAAgBxK,OAAhB,EAAyByJ,IAAzB,EAA+BgG,GAA/B,EAAoC40C,MAApC,EAA4CpO,IAA5C,EAAmD;AACxD,WAAKzrC,IAAL,GAAYA,IAAZ;AACA,WAAKf,IAAL,GAAYA,IAAZ;AACA,WAAK46C,MAAL,GAAcA,MAAM,IAAIjoB,MAAM,CAACioB,MAAP,CAAc/M,QAAtC;AACA,WAAKt3C,OAAL,GAAeA,OAAf;AACA,WAAKyN,KAAL,GAAa,KAAKd,GAAL,GAAW,KAAKo3B,GAAL,EAAxB;AACA,WAAKt0B,GAAL,GAAWA,GAAX;AACA,WAAKwmC,IAAL,GAAYA,IAAI,KAAM7Z,MAAM,CAAC8Z,SAAP,CAAkBzsC,IAAlB,IAA2B,EAA3B,GAAgC,IAAtC,CAAhB;AACA,KAVgB;AAWjBs6B,IAAAA,GAAG,EAAE,eAAW;AACf,UAAI4Q,KAAK,GAAGyP,KAAK,CAACE,SAAN,CAAiB,KAAK76C,IAAtB,CAAZ;AAEA,aAAOkrC,KAAK,IAAIA,KAAK,CAAC1zB,GAAf,GACN0zB,KAAK,CAAC1zB,GAAN,CAAW,IAAX,CADM,GAENmjC,KAAK,CAACE,SAAN,CAAgBhN,QAAhB,CAAyBr2B,GAAzB,CAA8B,IAA9B,CAFD;AAGA,KAjBgB;AAkBjBsjC,IAAAA,GAAG,EAAE,aAAUC,OAAV,EAAoB;AACxB,UAAIC,KAAJ;AAAA,UACC9P,KAAK,GAAGyP,KAAK,CAACE,SAAN,CAAiB,KAAK76C,IAAtB,CADT;;AAGA,UAAK,KAAKzJ,OAAL,CAAa+yB,QAAlB,EAA6B;AAC5B,aAAK2xB,GAAL,GAAWD,KAAK,GAAGroB,MAAM,CAACioB,MAAP,CAAe,KAAKA,MAApB,EAClBG,OADkB,EACT,KAAKxkD,OAAL,CAAa+yB,QAAb,GAAwByxB,OADf,EACwB,CADxB,EAC2B,CAD3B,EAC8B,KAAKxkD,OAAL,CAAa+yB,QAD3C,CAAnB;AAGA,OAJD,MAIO;AACN,aAAK2xB,GAAL,GAAWD,KAAK,GAAGD,OAAnB;AACA;;AACD,WAAK73C,GAAL,GAAW,CAAE,KAAK8C,GAAL,GAAW,KAAKhC,KAAlB,IAA4Bg3C,KAA5B,GAAoC,KAAKh3C,KAApD;;AAEA,UAAK,KAAKzN,OAAL,CAAa2kD,IAAlB,EAAyB;AACxB,aAAK3kD,OAAL,CAAa2kD,IAAb,CAAkB/4C,IAAlB,CAAwB,KAAKpB,IAA7B,EAAmC,KAAKmC,GAAxC,EAA6C,IAA7C;AACA;;AAED,UAAKgoC,KAAK,IAAIA,KAAK,CAACd,GAApB,EAA0B;AACzBc,QAAAA,KAAK,CAACd,GAAN,CAAW,IAAX;AACA,OAFD,MAEO;AACNuQ,QAAAA,KAAK,CAACE,SAAN,CAAgBhN,QAAhB,CAAyBzD,GAAzB,CAA8B,IAA9B;AACA;;AACD,aAAO,IAAP;AACA;AAzCgB,GAAlB;AA4CAuQ,EAAAA,KAAK,CAAC14C,SAAN,CAAgBiJ,IAAhB,CAAqBjJ,SAArB,GAAiC04C,KAAK,CAAC14C,SAAvC;AAEA04C,EAAAA,KAAK,CAACE,SAAN,GAAkB;AACjBhN,IAAAA,QAAQ,EAAE;AACTr2B,MAAAA,GAAG,EAAE,aAAU00B,KAAV,EAAkB;AACtB,YAAI1hC,MAAJ,CADsB,CAGtB;AACA;;AACA,YAAK0hC,KAAK,CAACnrC,IAAN,CAAWixB,QAAX,KAAwB,CAAxB,IACJka,KAAK,CAACnrC,IAAN,CAAYmrC,KAAK,CAAClsC,IAAlB,KAA4B,IAA5B,IAAoCksC,KAAK,CAACnrC,IAAN,CAAWmF,KAAX,CAAkBgmC,KAAK,CAAClsC,IAAxB,KAAkC,IADvE,EAC8E;AAC7E,iBAAOksC,KAAK,CAACnrC,IAAN,CAAYmrC,KAAK,CAAClsC,IAAlB,CAAP;AACA,SARqB,CAUtB;AACA;AACA;AACA;;;AACAwK,QAAAA,MAAM,GAAGmoB,MAAM,CAACz2B,GAAP,CAAYgwC,KAAK,CAACnrC,IAAlB,EAAwBmrC,KAAK,CAAClsC,IAA9B,EAAoC,EAApC,CAAT,CAdsB,CAgBtB;;AACA,eAAO,CAACwK,MAAD,IAAWA,MAAM,KAAK,MAAtB,GAA+B,CAA/B,GAAmCA,MAA1C;AACA,OAnBQ;AAoBT4/B,MAAAA,GAAG,EAAE,aAAU8B,KAAV,EAAkB;AAEtB;AACA;AACA;AACA,YAAKvZ,MAAM,CAACwoB,EAAP,CAAUD,IAAV,CAAgBhP,KAAK,CAAClsC,IAAtB,CAAL,EAAoC;AACnC2yB,UAAAA,MAAM,CAACwoB,EAAP,CAAUD,IAAV,CAAgBhP,KAAK,CAAClsC,IAAtB,EAA8BksC,KAA9B;AACA,SAFD,MAEO,IAAKA,KAAK,CAACnrC,IAAN,CAAWixB,QAAX,KAAwB,CAAxB,KACXW,MAAM,CAACmnB,QAAP,CAAiB5N,KAAK,CAAClsC,IAAvB,KACCksC,KAAK,CAACnrC,IAAN,CAAWmF,KAAX,CAAkBoyC,aAAa,CAAEpM,KAAK,CAAClsC,IAAR,CAA/B,KAAmD,IAFzC,CAAL,EAEuD;AAC7D2yB,UAAAA,MAAM,CAACzsB,KAAP,CAAcgmC,KAAK,CAACnrC,IAApB,EAA0BmrC,KAAK,CAAClsC,IAAhC,EAAsCksC,KAAK,CAAChpC,GAAN,GAAYgpC,KAAK,CAACM,IAAxD;AACA,SAJM,MAIA;AACNN,UAAAA,KAAK,CAACnrC,IAAN,CAAYmrC,KAAK,CAAClsC,IAAlB,IAA2BksC,KAAK,CAAChpC,GAAjC;AACA;AACD;AAlCQ;AADO,GAAlB,CA1/NiF,CAiiOjF;AACA;;AACAy3C,EAAAA,KAAK,CAACE,SAAN,CAAgB/hD,SAAhB,GAA4B6hD,KAAK,CAACE,SAAN,CAAgBO,UAAhB,GAA6B;AACxDhR,IAAAA,GAAG,EAAE,aAAU8B,KAAV,EAAkB;AACtB,UAAKA,KAAK,CAACnrC,IAAN,CAAWixB,QAAX,IAAuBka,KAAK,CAACnrC,IAAN,CAAW8hB,UAAvC,EAAoD;AACnDqpB,QAAAA,KAAK,CAACnrC,IAAN,CAAYmrC,KAAK,CAAClsC,IAAlB,IAA2BksC,KAAK,CAAChpC,GAAjC;AACA;AACD;AALuD,GAAzD;AAQAyvB,EAAAA,MAAM,CAACioB,MAAP,GAAgB;AACfS,IAAAA,MAAM,EAAE,gBAAU76C,CAAV,EAAc;AACrB,aAAOA,CAAP;AACA,KAHc;AAIf86C,IAAAA,KAAK,EAAE,eAAU96C,CAAV,EAAc;AACpB,aAAO,MAAM/C,IAAI,CAAC89C,GAAL,CAAU/6C,CAAC,GAAG/C,IAAI,CAAC+9C,EAAnB,IAA0B,CAAvC;AACA,KANc;AAOf3N,IAAAA,QAAQ,EAAE;AAPK,GAAhB;AAUAlb,EAAAA,MAAM,CAACwoB,EAAP,GAAYR,KAAK,CAAC14C,SAAN,CAAgBiJ,IAA5B,CArjOiF,CAujOjF;;AACAynB,EAAAA,MAAM,CAACwoB,EAAP,CAAUD,IAAV,GAAiB,EAAjB;AAKA,MACCO,KADD;AAAA,MACQC,UADR;AAAA,MAECC,QAAQ,GAAG,wBAFZ;AAAA,MAGCC,IAAI,GAAG,aAHR;;AAKA,WAASC,QAAT,GAAoB;AACnB,QAAKH,UAAL,EAAkB;AACjB,UAAK51C,QAAQ,CAACg2C,MAAT,KAAoB,KAApB,IAA6B5jD,MAAM,CAACmL,qBAAzC,EAAiE;AAChEnL,QAAAA,MAAM,CAACmL,qBAAP,CAA8Bw4C,QAA9B;AACA,OAFD,MAEO;AACN3jD,QAAAA,MAAM,CAAC8K,UAAP,CAAmB64C,QAAnB,EAA6BlpB,MAAM,CAACwoB,EAAP,CAAUY,QAAvC;AACA;;AAEDppB,MAAAA,MAAM,CAACwoB,EAAP,CAAUa,IAAV;AACA;AACD,GA5kOgF,CA8kOjF;;;AACA,WAASC,WAAT,GAAuB;AACtB/jD,IAAAA,MAAM,CAAC8K,UAAP,CAAmB,YAAW;AAC7By4C,MAAAA,KAAK,GAAG15B,SAAR;AACA,KAFD;AAGA,WAAS05B,KAAK,GAAGx4C,IAAI,CAACC,GAAL,EAAjB;AACA,GAplOgF,CAslOjF;;;AACA,WAASg5C,KAAT,CAAgB97C,IAAhB,EAAsB+7C,YAAtB,EAAqC;AACpC,QAAI17B,KAAJ;AAAA,QACCljB,CAAC,GAAG,CADL;AAAA,QAEC48B,KAAK,GAAG;AAAErwB,MAAAA,MAAM,EAAE1J;AAAV,KAFT,CADoC,CAKpC;AACA;;AACA+7C,IAAAA,YAAY,GAAGA,YAAY,GAAG,CAAH,GAAO,CAAlC;;AACA,WAAQ5+C,CAAC,GAAG,CAAZ,EAAeA,CAAC,IAAI,IAAI4+C,YAAxB,EAAuC;AACtC17B,MAAAA,KAAK,GAAGkrB,SAAS,CAAEpuC,CAAF,CAAjB;AACA48B,MAAAA,KAAK,CAAE,WAAW1Z,KAAb,CAAL,GAA4B0Z,KAAK,CAAE,YAAY1Z,KAAd,CAAL,GAA6BrgB,IAAzD;AACA;;AAED,QAAK+7C,YAAL,EAAoB;AACnBhiB,MAAAA,KAAK,CAAC4f,OAAN,GAAgB5f,KAAK,CAACvvB,KAAN,GAAcxK,IAA9B;AACA;;AAED,WAAO+5B,KAAP;AACA;;AAED,WAASiiB,WAAT,CAAsB1lC,KAAtB,EAA6B1W,IAA7B,EAAmCopB,SAAnC,EAA+C;AAC9C,QAAI8iB,KAAJ;AAAA,QACCqI,UAAU,GAAG,CAAE8H,SAAS,CAACC,QAAV,CAAoBt8C,IAApB,KAA8B,EAAhC,EAAqCwE,MAArC,CAA6C63C,SAAS,CAACC,QAAV,CAAoB,GAApB,CAA7C,CADd;AAAA,QAECpyC,KAAK,GAAG,CAFT;AAAA,QAGCtS,MAAM,GAAG28C,UAAU,CAAC38C,MAHrB;;AAIA,WAAQsS,KAAK,GAAGtS,MAAhB,EAAwBsS,KAAK,EAA7B,EAAkC;AACjC,UAAOgiC,KAAK,GAAGqI,UAAU,CAAErqC,KAAF,CAAV,CAAoB/H,IAApB,CAA0BinB,SAA1B,EAAqCppB,IAArC,EAA2C0W,KAA3C,CAAf,EAAsE;AAErE;AACA,eAAOw1B,KAAP;AACA;AACD;AACD;;AAED,WAASqQ,gBAAT,CAA2Bx7C,IAA3B,EAAiCkxC,KAAjC,EAAwC/wC,IAAxC,EAA+C;AAC9C,QAAIlB,IAAJ;AAAA,QAAU0W,KAAV;AAAA,QAAiB9c,MAAjB;AAAA,QAAyBsxC,KAAzB;AAAA,QAAgCsR,OAAhC;AAAA,QAAyCC,SAAzC;AAAA,QAAoDC,cAApD;AAAA,QAAoErlC,OAApE;AAAA,QACCslC,KAAK,GAAG,WAAW1K,KAAX,IAAoB,YAAYA,KADzC;AAAA,QAEC1oB,IAAI,GAAG,IAFR;AAAA,QAGCiqB,IAAI,GAAG,EAHR;AAAA,QAICttC,KAAK,GAAGnF,IAAI,CAACmF,KAJd;AAAA,QAKC41C,MAAM,GAAG/6C,IAAI,CAACixB,QAAL,IAAiB+Z,kBAAkB,CAAEhrC,IAAF,CAL7C;AAAA,QAMC67C,QAAQ,GAAGtS,QAAQ,CAAC9yB,GAAT,CAAczW,IAAd,EAAoB,QAApB,CANZ,CAD8C,CAS9C;;AACA,QAAK,CAACG,IAAI,CAACgkC,KAAX,EAAmB;AAClBgG,MAAAA,KAAK,GAAGvY,MAAM,CAACwY,WAAP,CAAoBpqC,IAApB,EAA0B,IAA1B,CAAR;;AACA,UAAKmqC,KAAK,CAAC2R,QAAN,IAAkB,IAAvB,EAA8B;AAC7B3R,QAAAA,KAAK,CAAC2R,QAAN,GAAiB,CAAjB;AACAL,QAAAA,OAAO,GAAGtR,KAAK,CAAC3F,KAAN,CAAYH,IAAtB;;AACA8F,QAAAA,KAAK,CAAC3F,KAAN,CAAYH,IAAZ,GAAmB,YAAW;AAC7B,cAAK,CAAC8F,KAAK,CAAC2R,QAAZ,EAAuB;AACtBL,YAAAA,OAAO;AACP;AACD,SAJD;AAKA;;AACDtR,MAAAA,KAAK,CAAC2R,QAAN;AAEAtzB,MAAAA,IAAI,CAACkd,MAAL,CAAa,YAAW;AAEvB;AACAld,QAAAA,IAAI,CAACkd,MAAL,CAAa,YAAW;AACvByE,UAAAA,KAAK,CAAC2R,QAAN;;AACA,cAAK,CAAClqB,MAAM,CAACuS,KAAP,CAAcnkC,IAAd,EAAoB,IAApB,EAA2BnJ,MAAjC,EAA0C;AACzCszC,YAAAA,KAAK,CAAC3F,KAAN,CAAYH,IAAZ;AACA;AACD,SALD;AAMA,OATD;AAUA,KAjC6C,CAmC9C;;;AACA,SAAMplC,IAAN,IAAciyC,KAAd,EAAsB;AACrBv7B,MAAAA,KAAK,GAAGu7B,KAAK,CAAEjyC,IAAF,CAAb;;AACA,UAAK27C,QAAQ,CAACn4C,IAAT,CAAekT,KAAf,CAAL,EAA8B;AAC7B,eAAOu7B,KAAK,CAAEjyC,IAAF,CAAZ;AACApG,QAAAA,MAAM,GAAGA,MAAM,IAAI8c,KAAK,KAAK,QAA7B;;AACA,YAAKA,KAAK,MAAOolC,MAAM,GAAG,MAAH,GAAY,MAAzB,CAAV,EAA8C;AAE7C;AACA;AACA,cAAKplC,KAAK,KAAK,MAAV,IAAoBkmC,QAApB,IAAgCA,QAAQ,CAAE58C,IAAF,CAAR,KAAqB+hB,SAA1D,EAAsE;AACrE+5B,YAAAA,MAAM,GAAG,IAAT,CADqE,CAGtE;AACC,WAJD,MAIO;AACN;AACA;AACD;;AACDtI,QAAAA,IAAI,CAAExzC,IAAF,CAAJ,GAAe48C,QAAQ,IAAIA,QAAQ,CAAE58C,IAAF,CAApB,IAAgC2yB,MAAM,CAACzsB,KAAP,CAAcnF,IAAd,EAAoBf,IAApB,CAA/C;AACA;AACD,KAvD6C,CAyD9C;;;AACAy8C,IAAAA,SAAS,GAAG,CAAC9pB,MAAM,CAAC7c,aAAP,CAAsBm8B,KAAtB,CAAb;;AACA,QAAK,CAACwK,SAAD,IAAc9pB,MAAM,CAAC7c,aAAP,CAAsB09B,IAAtB,CAAnB,EAAkD;AACjD;AACA,KA7D6C,CA+D9C;;;AACA,QAAKmJ,KAAK,IAAI57C,IAAI,CAACixB,QAAL,KAAkB,CAAhC,EAAoC;AAEnC;AACA;AACA;AACA;AACA9wB,MAAAA,IAAI,CAAC47C,QAAL,GAAgB,CAAE52C,KAAK,CAAC42C,QAAR,EAAkB52C,KAAK,CAAC62C,SAAxB,EAAmC72C,KAAK,CAAC82C,SAAzC,CAAhB,CANmC,CAQnC;;AACAN,MAAAA,cAAc,GAAGE,QAAQ,IAAIA,QAAQ,CAACvlC,OAAtC;;AACA,UAAKqlC,cAAc,IAAI,IAAvB,EAA8B;AAC7BA,QAAAA,cAAc,GAAGpS,QAAQ,CAAC9yB,GAAT,CAAczW,IAAd,EAAoB,SAApB,CAAjB;AACA;;AACDsW,MAAAA,OAAO,GAAGsb,MAAM,CAACz2B,GAAP,CAAY6E,IAAZ,EAAkB,SAAlB,CAAV;;AACA,UAAKsW,OAAO,KAAK,MAAjB,EAA0B;AACzB,YAAKqlC,cAAL,EAAsB;AACrBrlC,UAAAA,OAAO,GAAGqlC,cAAV;AACA,SAFD,MAEO;AAEN;AACA7P,UAAAA,QAAQ,CAAE,CAAE9rC,IAAF,CAAF,EAAY,IAAZ,CAAR;AACA27C,UAAAA,cAAc,GAAG37C,IAAI,CAACmF,KAAL,CAAWmR,OAAX,IAAsBqlC,cAAvC;AACArlC,UAAAA,OAAO,GAAGsb,MAAM,CAACz2B,GAAP,CAAY6E,IAAZ,EAAkB,SAAlB,CAAV;AACA8rC,UAAAA,QAAQ,CAAE,CAAE9rC,IAAF,CAAF,CAAR;AACA;AACD,OAzBkC,CA2BnC;;;AACA,UAAKsW,OAAO,KAAK,QAAZ,IAAwBA,OAAO,KAAK,cAAZ,IAA8BqlC,cAAc,IAAI,IAA7E,EAAoF;AACnF,YAAK/pB,MAAM,CAACz2B,GAAP,CAAY6E,IAAZ,EAAkB,OAAlB,MAAgC,MAArC,EAA8C;AAE7C;AACA,cAAK,CAAC07C,SAAN,EAAkB;AACjBlzB,YAAAA,IAAI,CAACyM,IAAL,CAAW,YAAW;AACrB9vB,cAAAA,KAAK,CAACmR,OAAN,GAAgBqlC,cAAhB;AACA,aAFD;;AAGA,gBAAKA,cAAc,IAAI,IAAvB,EAA8B;AAC7BrlC,cAAAA,OAAO,GAAGnR,KAAK,CAACmR,OAAhB;AACAqlC,cAAAA,cAAc,GAAGrlC,OAAO,KAAK,MAAZ,GAAqB,EAArB,GAA0BA,OAA3C;AACA;AACD;;AACDnR,UAAAA,KAAK,CAACmR,OAAN,GAAgB,cAAhB;AACA;AACD;AACD;;AAED,QAAKnW,IAAI,CAAC47C,QAAV,EAAqB;AACpB52C,MAAAA,KAAK,CAAC42C,QAAN,GAAiB,QAAjB;AACAvzB,MAAAA,IAAI,CAACkd,MAAL,CAAa,YAAW;AACvBvgC,QAAAA,KAAK,CAAC42C,QAAN,GAAiB57C,IAAI,CAAC47C,QAAL,CAAe,CAAf,CAAjB;AACA52C,QAAAA,KAAK,CAAC62C,SAAN,GAAkB77C,IAAI,CAAC47C,QAAL,CAAe,CAAf,CAAlB;AACA52C,QAAAA,KAAK,CAAC82C,SAAN,GAAkB97C,IAAI,CAAC47C,QAAL,CAAe,CAAf,CAAlB;AACA,OAJD;AAKA,KArH6C,CAuH9C;;;AACAL,IAAAA,SAAS,GAAG,KAAZ;;AACA,SAAMz8C,IAAN,IAAcwzC,IAAd,EAAqB;AAEpB;AACA,UAAK,CAACiJ,SAAN,EAAkB;AACjB,YAAKG,QAAL,EAAgB;AACf,cAAK,YAAYA,QAAjB,EAA4B;AAC3Bd,YAAAA,MAAM,GAAGc,QAAQ,CAACd,MAAlB;AACA;AACD,SAJD,MAIO;AACNc,UAAAA,QAAQ,GAAGtS,QAAQ,CAACrB,MAAT,CAAiBloC,IAAjB,EAAuB,QAAvB,EAAiC;AAAEsW,YAAAA,OAAO,EAAEqlC;AAAX,WAAjC,CAAX;AACA,SAPgB,CASjB;;;AACA,YAAK9iD,MAAL,EAAc;AACbgjD,UAAAA,QAAQ,CAACd,MAAT,GAAkB,CAACA,MAAnB;AACA,SAZgB,CAcjB;;;AACA,YAAKA,MAAL,EAAc;AACbjP,UAAAA,QAAQ,CAAE,CAAE9rC,IAAF,CAAF,EAAY,IAAZ,CAAR;AACA;AAED;;;AAEAwoB,QAAAA,IAAI,CAACyM,IAAL,CAAW,YAAW;AAErB;AAEA;AACA,cAAK,CAAC8lB,MAAN,EAAe;AACdjP,YAAAA,QAAQ,CAAE,CAAE9rC,IAAF,CAAF,CAAR;AACA;;AACDupC,UAAAA,QAAQ,CAAC9rC,MAAT,CAAiBuC,IAAjB,EAAuB,QAAvB;;AACA,eAAMf,IAAN,IAAcwzC,IAAd,EAAqB;AACpB7gB,YAAAA,MAAM,CAACzsB,KAAP,CAAcnF,IAAd,EAAoBf,IAApB,EAA0BwzC,IAAI,CAAExzC,IAAF,CAA9B;AACA;AACD,SAZD;AAaA,OArCmB,CAuCpB;;;AACAy8C,MAAAA,SAAS,GAAGL,WAAW,CAAEN,MAAM,GAAGc,QAAQ,CAAE58C,IAAF,CAAX,GAAsB,CAA9B,EAAiCA,IAAjC,EAAuCupB,IAAvC,CAAvB;;AACA,UAAK,EAAGvpB,IAAI,IAAI48C,QAAX,CAAL,EAA6B;AAC5BA,QAAAA,QAAQ,CAAE58C,IAAF,CAAR,GAAmBy8C,SAAS,CAACz4C,KAA7B;;AACA,YAAK83C,MAAL,EAAc;AACbW,UAAAA,SAAS,CAACz2C,GAAV,GAAgBy2C,SAAS,CAACz4C,KAA1B;AACAy4C,UAAAA,SAAS,CAACz4C,KAAV,GAAkB,CAAlB;AACA;AACD;AACD;AACD;;AAED,WAASi5C,UAAT,CAAqBhL,KAArB,EAA4BiL,aAA5B,EAA4C;AAC3C,QAAIhzC,KAAJ,EAAWjL,IAAX,EAAiB27C,MAAjB,EAAyBlkC,KAAzB,EAAgCw0B,KAAhC,CAD2C,CAG3C;;AACA,SAAMhhC,KAAN,IAAe+nC,KAAf,EAAuB;AACtBhzC,MAAAA,IAAI,GAAG2qC,SAAS,CAAE1/B,KAAF,CAAhB;AACA0wC,MAAAA,MAAM,GAAGsC,aAAa,CAAEj+C,IAAF,CAAtB;AACAyX,MAAAA,KAAK,GAAGu7B,KAAK,CAAE/nC,KAAF,CAAb;;AACA,UAAKlI,KAAK,CAACinB,OAAN,CAAevS,KAAf,CAAL,EAA8B;AAC7BkkC,QAAAA,MAAM,GAAGlkC,KAAK,CAAE,CAAF,CAAd;AACAA,QAAAA,KAAK,GAAGu7B,KAAK,CAAE/nC,KAAF,CAAL,GAAiBwM,KAAK,CAAE,CAAF,CAA9B;AACA;;AAED,UAAKxM,KAAK,KAAKjL,IAAf,EAAsB;AACrBgzC,QAAAA,KAAK,CAAEhzC,IAAF,CAAL,GAAgByX,KAAhB;AACA,eAAOu7B,KAAK,CAAE/nC,KAAF,CAAZ;AACA;;AAEDghC,MAAAA,KAAK,GAAGvY,MAAM,CAACmnB,QAAP,CAAiB76C,IAAjB,CAAR;;AACA,UAAKisC,KAAK,IAAI,YAAYA,KAA1B,EAAkC;AACjCx0B,QAAAA,KAAK,GAAGw0B,KAAK,CAACuP,MAAN,CAAc/jC,KAAd,CAAR;AACA,eAAOu7B,KAAK,CAAEhzC,IAAF,CAAZ,CAFiC,CAIjC;AACA;;AACA,aAAMiL,KAAN,IAAewM,KAAf,EAAuB;AACtB,cAAK,EAAGxM,KAAK,IAAI+nC,KAAZ,CAAL,EAA2B;AAC1BA,YAAAA,KAAK,CAAE/nC,KAAF,CAAL,GAAiBwM,KAAK,CAAExM,KAAF,CAAtB;AACAgzC,YAAAA,aAAa,CAAEhzC,KAAF,CAAb,GAAyB0wC,MAAzB;AACA;AACD;AACD,OAZD,MAYO;AACNsC,QAAAA,aAAa,CAAEj+C,IAAF,CAAb,GAAwB27C,MAAxB;AACA;AACD;AACD;;AAED,WAASyB,SAAT,CAAoBt7C,IAApB,EAA0Bo8C,UAA1B,EAAsC5mD,OAAtC,EAAgD;AAC/C,QAAIiU,MAAJ;AAAA,QACC4yC,OADD;AAAA,QAEClzC,KAAK,GAAG,CAFT;AAAA,QAGCtS,MAAM,GAAGykD,SAAS,CAACgB,UAAV,CAAqBzlD,MAH/B;AAAA,QAIC8uC,QAAQ,GAAG/T,MAAM,CAAC2T,QAAP,GAAkBG,MAAlB,CAA0B,YAAW;AAE/C;AACA,aAAOuV,IAAI,CAACj7C,IAAZ;AACA,KAJU,CAJZ;AAAA,QASCi7C,IAAI,GAAG,SAAPA,IAAO,GAAW;AACjB,UAAKoB,OAAL,EAAe;AACd,eAAO,KAAP;AACA;;AACD,UAAIE,WAAW,GAAG7B,KAAK,IAAIQ,WAAW,EAAtC;AAAA,UACC/T,SAAS,GAAGzqC,IAAI,CAACC,GAAL,CAAU,CAAV,EAAa0rB,SAAS,CAAC6B,SAAV,GAAsB7B,SAAS,CAACE,QAAhC,GAA2Cg0B,WAAxD,CADb;AAAA,UAGC;AACA;AACA/7B,MAAAA,IAAI,GAAG2mB,SAAS,GAAG9e,SAAS,CAACE,QAAtB,IAAkC,CAL1C;AAAA,UAMCyxB,OAAO,GAAG,IAAIx5B,IANf;AAAA,UAOCrX,KAAK,GAAG,CAPT;AAAA,UAQCtS,MAAM,GAAGwxB,SAAS,CAACm0B,MAAV,CAAiB3lD,MAR3B;;AAUA,aAAQsS,KAAK,GAAGtS,MAAhB,EAAwBsS,KAAK,EAA7B,EAAkC;AACjCkf,QAAAA,SAAS,CAACm0B,MAAV,CAAkBrzC,KAAlB,EAA0B4wC,GAA1B,CAA+BC,OAA/B;AACA;;AAEDrU,MAAAA,QAAQ,CAACc,UAAT,CAAqBzmC,IAArB,EAA2B,CAAEqoB,SAAF,EAAa2xB,OAAb,EAAsB7S,SAAtB,CAA3B,EAlBiB,CAoBjB;;AACA,UAAK6S,OAAO,GAAG,CAAV,IAAenjD,MAApB,EAA6B;AAC5B,eAAOswC,SAAP;AACA,OAvBgB,CAyBjB;;;AACA,UAAK,CAACtwC,MAAN,EAAe;AACd8uC,QAAAA,QAAQ,CAACc,UAAT,CAAqBzmC,IAArB,EAA2B,CAAEqoB,SAAF,EAAa,CAAb,EAAgB,CAAhB,CAA3B;AACA,OA5BgB,CA8BjB;;;AACAsd,MAAAA,QAAQ,CAACe,WAAT,CAAsB1mC,IAAtB,EAA4B,CAAEqoB,SAAF,CAA5B;AACA,aAAO,KAAP;AACA,KA1CF;AAAA,QA2CCA,SAAS,GAAGsd,QAAQ,CAACP,OAAT,CAAkB;AAC7BplC,MAAAA,IAAI,EAAEA,IADuB;AAE7BkxC,MAAAA,KAAK,EAAEtf,MAAM,CAACl8B,MAAP,CAAe,EAAf,EAAmB0mD,UAAnB,CAFsB;AAG7Bj8C,MAAAA,IAAI,EAAEyxB,MAAM,CAACl8B,MAAP,CAAe,IAAf,EAAqB;AAC1BymD,QAAAA,aAAa,EAAE,EADW;AAE1BtC,QAAAA,MAAM,EAAEjoB,MAAM,CAACioB,MAAP,CAAc/M;AAFI,OAArB,EAGHt3C,OAHG,CAHuB;AAO7BinD,MAAAA,kBAAkB,EAAEL,UAPS;AAQ7BM,MAAAA,eAAe,EAAElnD,OARY;AAS7B00B,MAAAA,SAAS,EAAEwwB,KAAK,IAAIQ,WAAW,EATF;AAU7B3yB,MAAAA,QAAQ,EAAE/yB,OAAO,CAAC+yB,QAVW;AAW7Bi0B,MAAAA,MAAM,EAAE,EAXqB;AAY7BnB,MAAAA,WAAW,EAAE,qBAAUp8C,IAAV,EAAgBgG,GAAhB,EAAsB;AAClC,YAAIkmC,KAAK,GAAGvZ,MAAM,CAACgoB,KAAP,CAAc55C,IAAd,EAAoBqoB,SAAS,CAACloB,IAA9B,EAAoClB,IAApC,EAA0CgG,GAA1C,EACXojB,SAAS,CAACloB,IAAV,CAAeg8C,aAAf,CAA8Bl9C,IAA9B,KAAwCopB,SAAS,CAACloB,IAAV,CAAe05C,MAD5C,CAAZ;AAEAxxB,QAAAA,SAAS,CAACm0B,MAAV,CAAiB79C,IAAjB,CAAuBwsC,KAAvB;AACA,eAAOA,KAAP;AACA,OAjB4B;AAkB7BjwC,MAAAA,IAAI,EAAE,cAAUyhD,OAAV,EAAoB;AACzB,YAAIxzC,KAAK,GAAG,CAAZ;AAAA,YAEC;AACA;AACAtS,QAAAA,MAAM,GAAG8lD,OAAO,GAAGt0B,SAAS,CAACm0B,MAAV,CAAiB3lD,MAApB,GAA6B,CAJ9C;;AAKA,YAAKwlD,OAAL,EAAe;AACd,iBAAO,IAAP;AACA;;AACDA,QAAAA,OAAO,GAAG,IAAV;;AACA,eAAQlzC,KAAK,GAAGtS,MAAhB,EAAwBsS,KAAK,EAA7B,EAAkC;AACjCkf,UAAAA,SAAS,CAACm0B,MAAV,CAAkBrzC,KAAlB,EAA0B4wC,GAA1B,CAA+B,CAA/B;AACA,SAZwB,CAczB;;;AACA,YAAK4C,OAAL,EAAe;AACdhX,UAAAA,QAAQ,CAACc,UAAT,CAAqBzmC,IAArB,EAA2B,CAAEqoB,SAAF,EAAa,CAAb,EAAgB,CAAhB,CAA3B;AACAsd,UAAAA,QAAQ,CAACe,WAAT,CAAsB1mC,IAAtB,EAA4B,CAAEqoB,SAAF,EAAas0B,OAAb,CAA5B;AACA,SAHD,MAGO;AACNhX,UAAAA,QAAQ,CAACmB,UAAT,CAAqB9mC,IAArB,EAA2B,CAAEqoB,SAAF,EAAas0B,OAAb,CAA3B;AACA;;AACD,eAAO,IAAP;AACA;AAxC4B,KAAlB,CA3Cb;AAAA,QAqFCzL,KAAK,GAAG7oB,SAAS,CAAC6oB,KArFnB;;AAuFAgL,IAAAA,UAAU,CAAEhL,KAAF,EAAS7oB,SAAS,CAACloB,IAAV,CAAeg8C,aAAxB,CAAV;;AAEA,WAAQhzC,KAAK,GAAGtS,MAAhB,EAAwBsS,KAAK,EAA7B,EAAkC;AACjCM,MAAAA,MAAM,GAAG6xC,SAAS,CAACgB,UAAV,CAAsBnzC,KAAtB,EAA8B/H,IAA9B,CAAoCinB,SAApC,EAA+CroB,IAA/C,EAAqDkxC,KAArD,EAA4D7oB,SAAS,CAACloB,IAAtE,CAAT;;AACA,UAAKsJ,MAAL,EAAc;AACb,YAAKunB,UAAU,CAAEvnB,MAAM,CAACvO,IAAT,CAAf,EAAiC;AAChC02B,UAAAA,MAAM,CAACwY,WAAP,CAAoB/hB,SAAS,CAACroB,IAA9B,EAAoCqoB,SAAS,CAACloB,IAAV,CAAegkC,KAAnD,EAA2DjpC,IAA3D,GACCuO,MAAM,CAACvO,IAAP,CAAYiI,IAAZ,CAAkBsG,MAAlB,CADD;AAEA;;AACD,eAAOA,MAAP;AACA;AACD;;AAEDmoB,IAAAA,MAAM,CAACpxB,GAAP,CAAY0wC,KAAZ,EAAmBmK,WAAnB,EAAgChzB,SAAhC;;AAEA,QAAK2I,UAAU,CAAE3I,SAAS,CAACloB,IAAV,CAAe8C,KAAjB,CAAf,EAA0C;AACzColB,MAAAA,SAAS,CAACloB,IAAV,CAAe8C,KAAf,CAAqB7B,IAArB,CAA2BpB,IAA3B,EAAiCqoB,SAAjC;AACA,KAzG8C,CA2G/C;;;AACAA,IAAAA,SAAS,CACP2d,QADF,CACY3d,SAAS,CAACloB,IAAV,CAAe6lC,QAD3B,EAEE/Q,IAFF,CAEQ5M,SAAS,CAACloB,IAAV,CAAe80B,IAFvB,EAE6B5M,SAAS,CAACloB,IAAV,CAAewiB,QAF5C,EAGE0iB,IAHF,CAGQhd,SAAS,CAACloB,IAAV,CAAeklC,IAHvB,EAIEK,MAJF,CAIUrd,SAAS,CAACloB,IAAV,CAAeulC,MAJzB;AAMA9T,IAAAA,MAAM,CAACwoB,EAAP,CAAUr4C,KAAV,CACC6vB,MAAM,CAACl8B,MAAP,CAAeulD,IAAf,EAAqB;AACpBj7C,MAAAA,IAAI,EAAEA,IADc;AAEpBwoB,MAAAA,IAAI,EAAEH,SAFc;AAGpB8b,MAAAA,KAAK,EAAE9b,SAAS,CAACloB,IAAV,CAAegkC;AAHF,KAArB,CADD;AAQA,WAAO9b,SAAP;AACA;;AAEDuJ,EAAAA,MAAM,CAAC0pB,SAAP,GAAmB1pB,MAAM,CAACl8B,MAAP,CAAe4lD,SAAf,EAA0B;AAE5CC,IAAAA,QAAQ,EAAE;AACT,WAAK,CAAE,UAAUt8C,IAAV,EAAgB0W,KAAhB,EAAwB;AAC9B,YAAIw1B,KAAK,GAAG,KAAKkQ,WAAL,CAAkBp8C,IAAlB,EAAwB0W,KAAxB,CAAZ;AACAs1B,QAAAA,SAAS,CAAEE,KAAK,CAACnrC,IAAR,EAAcf,IAAd,EAAoB0rC,OAAO,CAAC/mC,IAAR,CAAc+R,KAAd,CAApB,EAA2Cw1B,KAA3C,CAAT;AACA,eAAOA,KAAP;AACA,OAJI;AADI,KAFkC;AAU5CyR,IAAAA,OAAO,EAAE,iBAAU1L,KAAV,EAAiBruC,QAAjB,EAA4B;AACpC,UAAKmuB,UAAU,CAAEkgB,KAAF,CAAf,EAA2B;AAC1BruC,QAAAA,QAAQ,GAAGquC,KAAX;AACAA,QAAAA,KAAK,GAAG,CAAE,GAAF,CAAR;AACA,OAHD,MAGO;AACNA,QAAAA,KAAK,GAAGA,KAAK,CAACvmC,KAAN,CAAa+4B,aAAb,CAAR;AACA;;AAED,UAAIzkC,IAAJ;AAAA,UACCkK,KAAK,GAAG,CADT;AAAA,UAECtS,MAAM,GAAGq6C,KAAK,CAACr6C,MAFhB;;AAIA,aAAQsS,KAAK,GAAGtS,MAAhB,EAAwBsS,KAAK,EAA7B,EAAkC;AACjClK,QAAAA,IAAI,GAAGiyC,KAAK,CAAE/nC,KAAF,CAAZ;AACAmyC,QAAAA,SAAS,CAACC,QAAV,CAAoBt8C,IAApB,IAA6Bq8C,SAAS,CAACC,QAAV,CAAoBt8C,IAApB,KAA8B,EAA3D;AACAq8C,QAAAA,SAAS,CAACC,QAAV,CAAoBt8C,IAApB,EAA2B28B,OAA3B,CAAoC/4B,QAApC;AACA;AACD,KA3B2C;AA6B5Cy5C,IAAAA,UAAU,EAAE,CAAEd,gBAAF,CA7BgC;AA+B5CqB,IAAAA,SAAS,EAAE,mBAAUh6C,QAAV,EAAoB0E,OAApB,EAA8B;AACxC,UAAKA,OAAL,EAAe;AACd+zC,QAAAA,SAAS,CAACgB,UAAV,CAAqB1gB,OAArB,CAA8B/4B,QAA9B;AACA,OAFD,MAEO;AACNy4C,QAAAA,SAAS,CAACgB,UAAV,CAAqB39C,IAArB,CAA2BkE,QAA3B;AACA;AACD;AArC2C,GAA1B,CAAnB;;AAwCA+uB,EAAAA,MAAM,CAACkrB,KAAP,GAAe,UAAUA,KAAV,EAAiBjD,MAAjB,EAAyBn4C,EAAzB,EAA8B;AAC5C,QAAInB,GAAG,GAAGu8C,KAAK,IAAI,QAAOA,KAAP,MAAiB,QAA1B,GAAqClrB,MAAM,CAACl8B,MAAP,CAAe,EAAf,EAAmBonD,KAAnB,CAArC,GAAkE;AAC3En6B,MAAAA,QAAQ,EAAEjhB,EAAE,IAAI,CAACA,EAAD,IAAOm4C,MAAb,IACT7oB,UAAU,CAAE8rB,KAAF,CAAV,IAAuBA,KAFmD;AAG3Ev0B,MAAAA,QAAQ,EAAEu0B,KAHiE;AAI3EjD,MAAAA,MAAM,EAAEn4C,EAAE,IAAIm4C,MAAN,IAAgBA,MAAM,IAAI,CAAC7oB,UAAU,CAAE6oB,MAAF,CAArB,IAAmCA;AAJgB,KAA5E,CAD4C,CAQ5C;;AACA,QAAKjoB,MAAM,CAACwoB,EAAP,CAAU3hD,GAAf,EAAqB;AACpB8H,MAAAA,GAAG,CAACgoB,QAAJ,GAAe,CAAf;AAEA,KAHD,MAGO;AACN,UAAK,OAAOhoB,GAAG,CAACgoB,QAAX,KAAwB,QAA7B,EAAwC;AACvC,YAAKhoB,GAAG,CAACgoB,QAAJ,IAAgBqJ,MAAM,CAACwoB,EAAP,CAAU2C,MAA/B,EAAwC;AACvCx8C,UAAAA,GAAG,CAACgoB,QAAJ,GAAeqJ,MAAM,CAACwoB,EAAP,CAAU2C,MAAV,CAAkBx8C,GAAG,CAACgoB,QAAtB,CAAf;AAEA,SAHD,MAGO;AACNhoB,UAAAA,GAAG,CAACgoB,QAAJ,GAAeqJ,MAAM,CAACwoB,EAAP,CAAU2C,MAAV,CAAiBjQ,QAAhC;AACA;AACD;AACD,KArB2C,CAuB5C;;;AACA,QAAKvsC,GAAG,CAAC4jC,KAAJ,IAAa,IAAb,IAAqB5jC,GAAG,CAAC4jC,KAAJ,KAAc,IAAxC,EAA+C;AAC9C5jC,MAAAA,GAAG,CAAC4jC,KAAJ,GAAY,IAAZ;AACA,KA1B2C,CA4B5C;;;AACA5jC,IAAAA,GAAG,CAACu0C,GAAJ,GAAUv0C,GAAG,CAACoiB,QAAd;;AAEApiB,IAAAA,GAAG,CAACoiB,QAAJ,GAAe,YAAW;AACzB,UAAKqO,UAAU,CAAEzwB,GAAG,CAACu0C,GAAN,CAAf,EAA6B;AAC5Bv0C,QAAAA,GAAG,CAACu0C,GAAJ,CAAQ1zC,IAAR,CAAc,IAAd;AACA;;AAED,UAAKb,GAAG,CAAC4jC,KAAT,EAAiB;AAChBvS,QAAAA,MAAM,CAACqY,OAAP,CAAgB,IAAhB,EAAsB1pC,GAAG,CAAC4jC,KAA1B;AACA;AACD,KARD;;AAUA,WAAO5jC,GAAP;AACA,GA1CD;;AA4CAqxB,EAAAA,MAAM,CAAClwB,EAAP,CAAUhM,MAAV,CAAkB;AACjBsnD,IAAAA,MAAM,EAAE,gBAAUF,KAAV,EAAiBG,EAAjB,EAAqBpD,MAArB,EAA6Bh3C,QAA7B,EAAwC;AAE/C;AACA,aAAO,KAAK3C,MAAL,CAAa8qC,kBAAb,EAAkC7vC,GAAlC,CAAuC,SAAvC,EAAkD,CAAlD,EAAsD0c,IAAtD,GAEN;AAFM,OAGL5S,GAHK,GAGCnN,OAHD,CAGU;AAAEkhD,QAAAA,OAAO,EAAEiE;AAAX,OAHV,EAG2BH,KAH3B,EAGkCjD,MAHlC,EAG0Ch3C,QAH1C,CAAP;AAIA,KARgB;AASjB/K,IAAAA,OAAO,EAAE,iBAAUmH,IAAV,EAAgB69C,KAAhB,EAAuBjD,MAAvB,EAA+Bh3C,QAA/B,EAA0C;AAClD,UAAI2hC,KAAK,GAAG5S,MAAM,CAAC7c,aAAP,CAAsB9V,IAAtB,CAAZ;AAAA,UACCi+C,MAAM,GAAGtrB,MAAM,CAACkrB,KAAP,CAAcA,KAAd,EAAqBjD,MAArB,EAA6Bh3C,QAA7B,CADV;AAAA,UAECs6C,WAAW,GAAG,SAAdA,WAAc,GAAW;AAExB;AACA,YAAI30B,IAAI,GAAG8yB,SAAS,CAAE,IAAF,EAAQ1pB,MAAM,CAACl8B,MAAP,CAAe,EAAf,EAAmBuJ,IAAnB,CAAR,EAAmCi+C,MAAnC,CAApB,CAHwB,CAKxB;;AACA,YAAK1Y,KAAK,IAAI+E,QAAQ,CAAC9yB,GAAT,CAAc,IAAd,EAAoB,QAApB,CAAd,EAA+C;AAC9C+R,UAAAA,IAAI,CAACttB,IAAL,CAAW,IAAX;AACA;AACD,OAXF;;AAaAiiD,MAAAA,WAAW,CAACviD,MAAZ,GAAqBuiD,WAArB;AAEA,aAAO3Y,KAAK,IAAI0Y,MAAM,CAAC/Y,KAAP,KAAiB,KAA1B,GACN,KAAKhuC,IAAL,CAAWgnD,WAAX,CADM,GAEN,KAAKhZ,KAAL,CAAY+Y,MAAM,CAAC/Y,KAAnB,EAA0BgZ,WAA1B,CAFD;AAGA,KA5BgB;AA6BjBjiD,IAAAA,IAAI,EAAE,cAAUmE,IAAV,EAAgBirC,UAAhB,EAA4BqS,OAA5B,EAAsC;AAC3C,UAAIS,SAAS,GAAG,SAAZA,SAAY,CAAUjT,KAAV,EAAkB;AACjC,YAAIjvC,IAAI,GAAGivC,KAAK,CAACjvC,IAAjB;AACA,eAAOivC,KAAK,CAACjvC,IAAb;AACAA,QAAAA,IAAI,CAAEyhD,OAAF,CAAJ;AACA,OAJD;;AAMA,UAAK,OAAOt9C,IAAP,KAAgB,QAArB,EAAgC;AAC/Bs9C,QAAAA,OAAO,GAAGrS,UAAV;AACAA,QAAAA,UAAU,GAAGjrC,IAAb;AACAA,QAAAA,IAAI,GAAG2hB,SAAP;AACA;;AACD,UAAKspB,UAAL,EAAkB;AACjB,aAAKnG,KAAL,CAAY9kC,IAAI,IAAI,IAApB,EAA0B,EAA1B;AACA;;AAED,aAAO,KAAKlJ,IAAL,CAAW,YAAW;AAC5B,YAAI8zC,OAAO,GAAG,IAAd;AAAA,YACC9gC,KAAK,GAAG9J,IAAI,IAAI,IAAR,IAAgBA,IAAI,GAAG,YADhC;AAAA,YAECg+C,MAAM,GAAGzrB,MAAM,CAACyrB,MAFjB;AAAA,YAGCznD,IAAI,GAAG2zC,QAAQ,CAAC9yB,GAAT,CAAc,IAAd,CAHR;;AAKA,YAAKtN,KAAL,EAAa;AACZ,cAAKvT,IAAI,CAAEuT,KAAF,CAAJ,IAAiBvT,IAAI,CAAEuT,KAAF,CAAJ,CAAcjO,IAApC,EAA2C;AAC1CkiD,YAAAA,SAAS,CAAExnD,IAAI,CAAEuT,KAAF,CAAN,CAAT;AACA;AACD,SAJD,MAIO;AACN,eAAMA,KAAN,IAAevT,IAAf,EAAsB;AACrB,gBAAKA,IAAI,CAAEuT,KAAF,CAAJ,IAAiBvT,IAAI,CAAEuT,KAAF,CAAJ,CAAcjO,IAA/B,IAAuC2/C,IAAI,CAACp4C,IAAL,CAAW0G,KAAX,CAA5C,EAAiE;AAChEi0C,cAAAA,SAAS,CAAExnD,IAAI,CAAEuT,KAAF,CAAN,CAAT;AACA;AACD;AACD;;AAED,aAAMA,KAAK,GAAGk0C,MAAM,CAACxmD,MAArB,EAA6BsS,KAAK,EAAlC,GAAwC;AACvC,cAAKk0C,MAAM,CAAEl0C,KAAF,CAAN,CAAgBnJ,IAAhB,KAAyB,IAAzB,KACFX,IAAI,IAAI,IAAR,IAAgBg+C,MAAM,CAAEl0C,KAAF,CAAN,CAAgBg7B,KAAhB,KAA0B9kC,IADxC,CAAL,EACsD;AAErDg+C,YAAAA,MAAM,CAAEl0C,KAAF,CAAN,CAAgBqf,IAAhB,CAAqBttB,IAArB,CAA2ByhD,OAA3B;AACA1S,YAAAA,OAAO,GAAG,KAAV;AACAoT,YAAAA,MAAM,CAACx+C,MAAP,CAAesK,KAAf,EAAsB,CAAtB;AACA;AACD,SA1B2B,CA4B5B;AACA;AACA;;;AACA,YAAK8gC,OAAO,IAAI,CAAC0S,OAAjB,EAA2B;AAC1B/qB,UAAAA,MAAM,CAACqY,OAAP,CAAgB,IAAhB,EAAsB5qC,IAAtB;AACA;AACD,OAlCM,CAAP;AAmCA,KAhFgB;AAiFjBzE,IAAAA,MAAM,EAAE,gBAAUyE,IAAV,EAAiB;AACxB,UAAKA,IAAI,KAAK,KAAd,EAAsB;AACrBA,QAAAA,IAAI,GAAGA,IAAI,IAAI,IAAf;AACA;;AACD,aAAO,KAAKlJ,IAAL,CAAW,YAAW;AAC5B,YAAIgT,KAAJ;AAAA,YACCvT,IAAI,GAAG2zC,QAAQ,CAAC9yB,GAAT,CAAc,IAAd,CADR;AAAA,YAEC0tB,KAAK,GAAGvuC,IAAI,CAAEyJ,IAAI,GAAG,OAAT,CAFb;AAAA,YAGC8qC,KAAK,GAAGv0C,IAAI,CAAEyJ,IAAI,GAAG,YAAT,CAHb;AAAA,YAICg+C,MAAM,GAAGzrB,MAAM,CAACyrB,MAJjB;AAAA,YAKCxmD,MAAM,GAAGstC,KAAK,GAAGA,KAAK,CAACttC,MAAT,GAAkB,CALjC,CAD4B,CAQ5B;;AACAjB,QAAAA,IAAI,CAACgF,MAAL,GAAc,IAAd,CAT4B,CAW5B;;AACAg3B,QAAAA,MAAM,CAACuS,KAAP,CAAc,IAAd,EAAoB9kC,IAApB,EAA0B,EAA1B;;AAEA,YAAK8qC,KAAK,IAAIA,KAAK,CAACjvC,IAApB,EAA2B;AAC1BivC,UAAAA,KAAK,CAACjvC,IAAN,CAAWkG,IAAX,CAAiB,IAAjB,EAAuB,IAAvB;AACA,SAhB2B,CAkB5B;;;AACA,aAAM+H,KAAK,GAAGk0C,MAAM,CAACxmD,MAArB,EAA6BsS,KAAK,EAAlC,GAAwC;AACvC,cAAKk0C,MAAM,CAAEl0C,KAAF,CAAN,CAAgBnJ,IAAhB,KAAyB,IAAzB,IAAiCq9C,MAAM,CAAEl0C,KAAF,CAAN,CAAgBg7B,KAAhB,KAA0B9kC,IAAhE,EAAuE;AACtEg+C,YAAAA,MAAM,CAAEl0C,KAAF,CAAN,CAAgBqf,IAAhB,CAAqBttB,IAArB,CAA2B,IAA3B;AACAmiD,YAAAA,MAAM,CAACx+C,MAAP,CAAesK,KAAf,EAAsB,CAAtB;AACA;AACD,SAxB2B,CA0B5B;;;AACA,aAAMA,KAAK,GAAG,CAAd,EAAiBA,KAAK,GAAGtS,MAAzB,EAAiCsS,KAAK,EAAtC,EAA2C;AAC1C,cAAKg7B,KAAK,CAAEh7B,KAAF,CAAL,IAAkBg7B,KAAK,CAAEh7B,KAAF,CAAL,CAAevO,MAAtC,EAA+C;AAC9CupC,YAAAA,KAAK,CAAEh7B,KAAF,CAAL,CAAevO,MAAf,CAAsBwG,IAAtB,CAA4B,IAA5B;AACA;AACD,SA/B2B,CAiC5B;;;AACA,eAAOxL,IAAI,CAACgF,MAAZ;AACA,OAnCM,CAAP;AAoCA;AAzHgB,GAAlB;AA4HAg3B,EAAAA,MAAM,CAACz7B,IAAP,CAAa,CAAE,QAAF,EAAY,MAAZ,EAAoB,MAApB,CAAb,EAA2C,UAAU49B,EAAV,EAAc71B,IAAd,EAAqB;AAC/D,QAAIo/C,KAAK,GAAG1rB,MAAM,CAAClwB,EAAP,CAAWxD,IAAX,CAAZ;;AACA0zB,IAAAA,MAAM,CAAClwB,EAAP,CAAWxD,IAAX,IAAoB,UAAU4+C,KAAV,EAAiBjD,MAAjB,EAAyBh3C,QAAzB,EAAoC;AACvD,aAAOi6C,KAAK,IAAI,IAAT,IAAiB,OAAOA,KAAP,KAAiB,SAAlC,GACNQ,KAAK,CAAC/7C,KAAN,CAAa,IAAb,EAAmBF,SAAnB,CADM,GAEN,KAAKvJ,OAAL,CAAcqjD,KAAK,CAAEj9C,IAAF,EAAQ,IAAR,CAAnB,EAAmC4+C,KAAnC,EAA0CjD,MAA1C,EAAkDh3C,QAAlD,CAFD;AAGA,KAJD;AAKA,GAPD,EAvpPiF,CAgqPjF;;AACA+uB,EAAAA,MAAM,CAACz7B,IAAP,CAAa;AACZ0E,IAAAA,SAAS,EAAEsgD,KAAK,CAAE,MAAF,CADJ;AAEZngD,IAAAA,OAAO,EAAEmgD,KAAK,CAAE,MAAF,CAFF;AAGZoC,IAAAA,WAAW,EAAEpC,KAAK,CAAE,QAAF,CAHN;AAIZqC,IAAAA,MAAM,EAAE;AAAExE,MAAAA,OAAO,EAAE;AAAX,KAJI;AAKZnrB,IAAAA,OAAO,EAAE;AAAEmrB,MAAAA,OAAO,EAAE;AAAX,KALG;AAMZyE,IAAAA,UAAU,EAAE;AAAEzE,MAAAA,OAAO,EAAE;AAAX;AANA,GAAb,EAOG,UAAU96C,IAAV,EAAgBgzC,KAAhB,EAAwB;AAC1Btf,IAAAA,MAAM,CAAClwB,EAAP,CAAWxD,IAAX,IAAoB,UAAU4+C,KAAV,EAAiBjD,MAAjB,EAAyBh3C,QAAzB,EAAoC;AACvD,aAAO,KAAK/K,OAAL,CAAco5C,KAAd,EAAqB4L,KAArB,EAA4BjD,MAA5B,EAAoCh3C,QAApC,CAAP;AACA,KAFD;AAGA,GAXD;AAaA+uB,EAAAA,MAAM,CAACyrB,MAAP,GAAgB,EAAhB;;AACAzrB,EAAAA,MAAM,CAACwoB,EAAP,CAAUa,IAAV,GAAiB,YAAW;AAC3B,QAAIl5C,KAAJ;AAAA,QACCvF,CAAC,GAAG,CADL;AAAA,QAEC6gD,MAAM,GAAGzrB,MAAM,CAACyrB,MAFjB;AAIA3C,IAAAA,KAAK,GAAGx4C,IAAI,CAACC,GAAL,EAAR;;AAEA,WAAQ3F,CAAC,GAAG6gD,MAAM,CAACxmD,MAAnB,EAA2B2F,CAAC,EAA5B,EAAiC;AAChCuF,MAAAA,KAAK,GAAGs7C,MAAM,CAAE7gD,CAAF,CAAd,CADgC,CAGhC;;AACA,UAAK,CAACuF,KAAK,EAAN,IAAYs7C,MAAM,CAAE7gD,CAAF,CAAN,KAAgBuF,KAAjC,EAAyC;AACxCs7C,QAAAA,MAAM,CAACx+C,MAAP,CAAerC,CAAC,EAAhB,EAAoB,CAApB;AACA;AACD;;AAED,QAAK,CAAC6gD,MAAM,CAACxmD,MAAb,EAAsB;AACrB+6B,MAAAA,MAAM,CAACwoB,EAAP,CAAUl/C,IAAV;AACA;;AACDw/C,IAAAA,KAAK,GAAG15B,SAAR;AACA,GApBD;;AAsBA4Q,EAAAA,MAAM,CAACwoB,EAAP,CAAUr4C,KAAV,GAAkB,UAAUA,KAAV,EAAkB;AACnC6vB,IAAAA,MAAM,CAACyrB,MAAP,CAAc1+C,IAAd,CAAoBoD,KAApB;AACA6vB,IAAAA,MAAM,CAACwoB,EAAP,CAAUn3C,KAAV;AACA,GAHD;;AAKA2uB,EAAAA,MAAM,CAACwoB,EAAP,CAAUY,QAAV,GAAqB,EAArB;;AACAppB,EAAAA,MAAM,CAACwoB,EAAP,CAAUn3C,KAAV,GAAkB,YAAW;AAC5B,QAAK03C,UAAL,EAAkB;AACjB;AACA;;AAEDA,IAAAA,UAAU,GAAG,IAAb;AACAG,IAAAA,QAAQ;AACR,GAPD;;AASAlpB,EAAAA,MAAM,CAACwoB,EAAP,CAAUl/C,IAAV,GAAiB,YAAW;AAC3By/C,IAAAA,UAAU,GAAG,IAAb;AACA,GAFD;;AAIA/oB,EAAAA,MAAM,CAACwoB,EAAP,CAAU2C,MAAV,GAAmB;AAClBW,IAAAA,IAAI,EAAE,GADY;AAElBC,IAAAA,IAAI,EAAE,GAFY;AAIlB;AACA7Q,IAAAA,QAAQ,EAAE;AALQ,GAAnB,CAxtPiF,CAiuPjF;AACA;;AACAlb,EAAAA,MAAM,CAAClwB,EAAP,CAAUI,KAAV,GAAkB,UAAU87C,IAAV,EAAgBv+C,IAAhB,EAAuB;AACxCu+C,IAAAA,IAAI,GAAGhsB,MAAM,CAACwoB,EAAP,GAAYxoB,MAAM,CAACwoB,EAAP,CAAU2C,MAAV,CAAkBa,IAAlB,KAA4BA,IAAxC,GAA+CA,IAAtD;AACAv+C,IAAAA,IAAI,GAAGA,IAAI,IAAI,IAAf;AAEA,WAAO,KAAK8kC,KAAL,CAAY9kC,IAAZ,EAAkB,UAAUtG,IAAV,EAAgBoxC,KAAhB,EAAwB;AAChD,UAAI9+B,OAAO,GAAGlU,MAAM,CAAC8K,UAAP,CAAmBlJ,IAAnB,EAAyB6kD,IAAzB,CAAd;;AACAzT,MAAAA,KAAK,CAACjvC,IAAN,GAAa,YAAW;AACvB/D,QAAAA,MAAM,CAAC4L,YAAP,CAAqBsI,OAArB;AACA,OAFD;AAGA,KALM,CAAP;AAMA,GAVD;;AAaA,GAAE,YAAW;AACZ,QAAIiM,KAAK,GAAGvS,QAAQ,CAACC,aAAT,CAAwB,OAAxB,CAAZ;AAAA,QACCsvB,MAAM,GAAGvvB,QAAQ,CAACC,aAAT,CAAwB,QAAxB,CADV;AAAA,QAECzE,GAAG,GAAG+zB,MAAM,CAAC3O,WAAP,CAAoB5gB,QAAQ,CAACC,aAAT,CAAwB,QAAxB,CAApB,CAFP;AAIAsS,IAAAA,KAAK,CAACjY,IAAN,GAAa,UAAb,CALY,CAOZ;AACA;;AACA0xB,IAAAA,OAAO,CAAC8sB,OAAR,GAAkBvmC,KAAK,CAAC3B,KAAN,KAAgB,EAAlC,CATY,CAWZ;AACA;;AACAob,IAAAA,OAAO,CAAC+sB,WAAR,GAAsBv9C,GAAG,CAACg+B,QAA1B,CAbY,CAeZ;AACA;;AACAjnB,IAAAA,KAAK,GAAGvS,QAAQ,CAACC,aAAT,CAAwB,OAAxB,CAAR;AACAsS,IAAAA,KAAK,CAAC3B,KAAN,GAAc,GAAd;AACA2B,IAAAA,KAAK,CAACjY,IAAN,GAAa,OAAb;AACA0xB,IAAAA,OAAO,CAACgtB,UAAR,GAAqBzmC,KAAK,CAAC3B,KAAN,KAAgB,GAArC;AACA,GArBD;;AAwBA,MAAIqoC,QAAJ;AAAA,MACC3kB,UAAU,GAAGzH,MAAM,CAACiK,IAAP,CAAYxC,UAD1B;AAGAzH,EAAAA,MAAM,CAAClwB,EAAP,CAAUhM,MAAV,CAAkB;AACjBiB,IAAAA,IAAI,EAAE,cAAUuH,IAAV,EAAgByX,KAAhB,EAAwB;AAC7B,aAAOuyB,MAAM,CAAE,IAAF,EAAQtW,MAAM,CAACj7B,IAAf,EAAqBuH,IAArB,EAA2ByX,KAA3B,EAAkCtU,SAAS,CAACxK,MAAV,GAAmB,CAArD,CAAb;AACA,KAHgB;AAKjBkI,IAAAA,UAAU,EAAE,oBAAUb,IAAV,EAAiB;AAC5B,aAAO,KAAK/H,IAAL,CAAW,YAAW;AAC5By7B,QAAAA,MAAM,CAAC7yB,UAAP,CAAmB,IAAnB,EAAyBb,IAAzB;AACA,OAFM,CAAP;AAGA;AATgB,GAAlB;AAYA0zB,EAAAA,MAAM,CAACl8B,MAAP,CAAe;AACdiB,IAAAA,IAAI,EAAE,cAAUqJ,IAAV,EAAgB9B,IAAhB,EAAsByX,KAAtB,EAA8B;AACnC,UAAIoS,GAAJ;AAAA,UAASoiB,KAAT;AAAA,UACC8T,KAAK,GAAGj+C,IAAI,CAACixB,QADd,CADmC,CAInC;;AACA,UAAKgtB,KAAK,KAAK,CAAV,IAAeA,KAAK,KAAK,CAAzB,IAA8BA,KAAK,KAAK,CAA7C,EAAiD;AAChD;AACA,OAPkC,CASnC;;;AACA,UAAK,OAAOj+C,IAAI,CAACua,YAAZ,KAA6B,WAAlC,EAAgD;AAC/C,eAAOqX,MAAM,CAAC3yB,IAAP,CAAae,IAAb,EAAmB9B,IAAnB,EAAyByX,KAAzB,CAAP;AACA,OAZkC,CAcnC;AACA;;;AACA,UAAKsoC,KAAK,KAAK,CAAV,IAAe,CAACrsB,MAAM,CAACoQ,QAAP,CAAiBhiC,IAAjB,CAArB,EAA+C;AAC9CmqC,QAAAA,KAAK,GAAGvY,MAAM,CAACssB,SAAP,CAAkBhgD,IAAI,CAACO,WAAL,EAAlB,MACLmzB,MAAM,CAACiK,IAAP,CAAYlxB,KAAZ,CAAkBwzC,IAAlB,CAAuB17C,IAAvB,CAA6BvE,IAA7B,IAAsC8/C,QAAtC,GAAiDh9B,SAD5C,CAAR;AAEA;;AAED,UAAKrL,KAAK,KAAKqL,SAAf,EAA2B;AAC1B,YAAKrL,KAAK,KAAK,IAAf,EAAsB;AACrBic,UAAAA,MAAM,CAAC7yB,UAAP,CAAmBiB,IAAnB,EAAyB9B,IAAzB;AACA;AACA;;AAED,YAAKisC,KAAK,IAAI,SAASA,KAAlB,IACJ,CAAEpiB,GAAG,GAAGoiB,KAAK,CAACd,GAAN,CAAWrpC,IAAX,EAAiB2V,KAAjB,EAAwBzX,IAAxB,CAAR,MAA6C8iB,SAD9C,EAC0D;AACzD,iBAAO+G,GAAP;AACA;;AAED/nB,QAAAA,IAAI,CAACsP,YAAL,CAAmBpR,IAAnB,EAAyByX,KAAK,GAAG,EAAjC;AACA,eAAOA,KAAP;AACA;;AAED,UAAKw0B,KAAK,IAAI,SAASA,KAAlB,IAA2B,CAAEpiB,GAAG,GAAGoiB,KAAK,CAAC1zB,GAAN,CAAWzW,IAAX,EAAiB9B,IAAjB,CAAR,MAAsC,IAAtE,EAA6E;AAC5E,eAAO6pB,GAAP;AACA;;AAEDA,MAAAA,GAAG,GAAG6J,MAAM,CAACl7B,IAAP,CAAYC,IAAZ,CAAkBqJ,IAAlB,EAAwB9B,IAAxB,CAAN,CAxCmC,CA0CnC;;AACA,aAAO6pB,GAAG,IAAI,IAAP,GAAc/G,SAAd,GAA0B+G,GAAjC;AACA,KA7Ca;AA+Cdm2B,IAAAA,SAAS,EAAE;AACV7+C,MAAAA,IAAI,EAAE;AACLgqC,QAAAA,GAAG,EAAE,aAAUrpC,IAAV,EAAgB2V,KAAhB,EAAwB;AAC5B,cAAK,CAACob,OAAO,CAACgtB,UAAT,IAAuBpoC,KAAK,KAAK,OAAjC,IACJgiB,QAAQ,CAAE33B,IAAF,EAAQ,OAAR,CADT,EAC6B;AAC5B,gBAAIgP,GAAG,GAAGhP,IAAI,CAAC2V,KAAf;AACA3V,YAAAA,IAAI,CAACsP,YAAL,CAAmB,MAAnB,EAA2BqG,KAA3B;;AACA,gBAAK3G,GAAL,EAAW;AACVhP,cAAAA,IAAI,CAAC2V,KAAL,GAAa3G,GAAb;AACA;;AACD,mBAAO2G,KAAP;AACA;AACD;AAXI;AADI,KA/CG;AA+Dd5W,IAAAA,UAAU,EAAE,oBAAUiB,IAAV,EAAgB2V,KAAhB,EAAwB;AACnC,UAAIzX,IAAJ;AAAA,UACC1B,CAAC,GAAG,CADL;AAAA,UAGC;AACA;AACA4hD,MAAAA,SAAS,GAAGzoC,KAAK,IAAIA,KAAK,CAAChL,KAAN,CAAa+4B,aAAb,CALtB;;AAOA,UAAK0a,SAAS,IAAIp+C,IAAI,CAACixB,QAAL,KAAkB,CAApC,EAAwC;AACvC,eAAU/yB,IAAI,GAAGkgD,SAAS,CAAE5hD,CAAC,EAAH,CAA1B,EAAsC;AACrCwD,UAAAA,IAAI,CAAC64B,eAAL,CAAsB36B,IAAtB;AACA;AACD;AACD;AA5Ea,GAAf,EAvxPiF,CAs2PjF;;AACA8/C,EAAAA,QAAQ,GAAG;AACV3U,IAAAA,GAAG,EAAE,aAAUrpC,IAAV,EAAgB2V,KAAhB,EAAuBzX,IAAvB,EAA8B;AAClC,UAAKyX,KAAK,KAAK,KAAf,EAAuB;AAEtB;AACAic,QAAAA,MAAM,CAAC7yB,UAAP,CAAmBiB,IAAnB,EAAyB9B,IAAzB;AACA,OAJD,MAIO;AACN8B,QAAAA,IAAI,CAACsP,YAAL,CAAmBpR,IAAnB,EAAyBA,IAAzB;AACA;;AACD,aAAOA,IAAP;AACA;AAVS,GAAX;AAaA0zB,EAAAA,MAAM,CAACz7B,IAAP,CAAay7B,MAAM,CAACiK,IAAP,CAAYlxB,KAAZ,CAAkBwzC,IAAlB,CAAuBzT,MAAvB,CAA8B//B,KAA9B,CAAqC,MAArC,CAAb,EAA4D,UAAUopB,EAAV,EAAc71B,IAAd,EAAqB;AAChF,QAAImgD,MAAM,GAAGhlB,UAAU,CAAEn7B,IAAF,CAAV,IAAsB0zB,MAAM,CAACl7B,IAAP,CAAYC,IAA/C;;AAEA0iC,IAAAA,UAAU,CAAEn7B,IAAF,CAAV,GAAqB,UAAU8B,IAAV,EAAgB9B,IAAhB,EAAsBi2B,KAAtB,EAA8B;AAClD,UAAIpM,GAAJ;AAAA,UAASinB,MAAT;AAAA,UACCsP,aAAa,GAAGpgD,IAAI,CAACO,WAAL,EADjB;;AAGA,UAAK,CAAC01B,KAAN,EAAc;AAEb;AACA6a,QAAAA,MAAM,GAAG3V,UAAU,CAAEilB,aAAF,CAAnB;AACAjlB,QAAAA,UAAU,CAAEilB,aAAF,CAAV,GAA8Bv2B,GAA9B;AACAA,QAAAA,GAAG,GAAGs2B,MAAM,CAAEr+C,IAAF,EAAQ9B,IAAR,EAAci2B,KAAd,CAAN,IAA+B,IAA/B,GACLmqB,aADK,GAEL,IAFD;AAGAjlB,QAAAA,UAAU,CAAEilB,aAAF,CAAV,GAA8BtP,MAA9B;AACA;;AACD,aAAOjnB,GAAP;AACA,KAfD;AAgBA,GAnBD;AAwBA,MAAIw2B,UAAU,GAAG,qCAAjB;AAAA,MACCC,UAAU,GAAG,eADd;AAGA5sB,EAAAA,MAAM,CAAClwB,EAAP,CAAUhM,MAAV,CAAkB;AACjBuJ,IAAAA,IAAI,EAAE,cAAUf,IAAV,EAAgByX,KAAhB,EAAwB;AAC7B,aAAOuyB,MAAM,CAAE,IAAF,EAAQtW,MAAM,CAAC3yB,IAAf,EAAqBf,IAArB,EAA2ByX,KAA3B,EAAkCtU,SAAS,CAACxK,MAAV,GAAmB,CAArD,CAAb;AACA,KAHgB;AAKjB4nD,IAAAA,UAAU,EAAE,oBAAUvgD,IAAV,EAAiB;AAC5B,aAAO,KAAK/H,IAAL,CAAW,YAAW;AAC5B,eAAO,KAAMy7B,MAAM,CAAC8sB,OAAP,CAAgBxgD,IAAhB,KAA0BA,IAAhC,CAAP;AACA,OAFM,CAAP;AAGA;AATgB,GAAlB;AAYA0zB,EAAAA,MAAM,CAACl8B,MAAP,CAAe;AACduJ,IAAAA,IAAI,EAAE,cAAUe,IAAV,EAAgB9B,IAAhB,EAAsByX,KAAtB,EAA8B;AACnC,UAAIoS,GAAJ;AAAA,UAASoiB,KAAT;AAAA,UACC8T,KAAK,GAAGj+C,IAAI,CAACixB,QADd,CADmC,CAInC;;AACA,UAAKgtB,KAAK,KAAK,CAAV,IAAeA,KAAK,KAAK,CAAzB,IAA8BA,KAAK,KAAK,CAA7C,EAAiD;AAChD;AACA;;AAED,UAAKA,KAAK,KAAK,CAAV,IAAe,CAACrsB,MAAM,CAACoQ,QAAP,CAAiBhiC,IAAjB,CAArB,EAA+C;AAE9C;AACA9B,QAAAA,IAAI,GAAG0zB,MAAM,CAAC8sB,OAAP,CAAgBxgD,IAAhB,KAA0BA,IAAjC;AACAisC,QAAAA,KAAK,GAAGvY,MAAM,CAACkoB,SAAP,CAAkB57C,IAAlB,CAAR;AACA;;AAED,UAAKyX,KAAK,KAAKqL,SAAf,EAA2B;AAC1B,YAAKmpB,KAAK,IAAI,SAASA,KAAlB,IACJ,CAAEpiB,GAAG,GAAGoiB,KAAK,CAACd,GAAN,CAAWrpC,IAAX,EAAiB2V,KAAjB,EAAwBzX,IAAxB,CAAR,MAA6C8iB,SAD9C,EAC0D;AACzD,iBAAO+G,GAAP;AACA;;AAED,eAAS/nB,IAAI,CAAE9B,IAAF,CAAJ,GAAeyX,KAAxB;AACA;;AAED,UAAKw0B,KAAK,IAAI,SAASA,KAAlB,IAA2B,CAAEpiB,GAAG,GAAGoiB,KAAK,CAAC1zB,GAAN,CAAWzW,IAAX,EAAiB9B,IAAjB,CAAR,MAAsC,IAAtE,EAA6E;AAC5E,eAAO6pB,GAAP;AACA;;AAED,aAAO/nB,IAAI,CAAE9B,IAAF,CAAX;AACA,KA/Ba;AAiCd47C,IAAAA,SAAS,EAAE;AACVzb,MAAAA,QAAQ,EAAE;AACT5nB,QAAAA,GAAG,EAAE,aAAUzW,IAAV,EAAiB;AAErB;AACA;AACA;AACA;AACA;AACA,cAAI2+C,QAAQ,GAAG/sB,MAAM,CAACl7B,IAAP,CAAYC,IAAZ,CAAkBqJ,IAAlB,EAAwB,UAAxB,CAAf;;AAEA,cAAK2+C,QAAL,EAAgB;AACf,mBAAOl2C,QAAQ,CAAEk2C,QAAF,EAAY,EAAZ,CAAf;AACA;;AAED,cACCJ,UAAU,CAAC97C,IAAX,CAAiBzC,IAAI,CAAC23B,QAAtB,KACA6mB,UAAU,CAAC/7C,IAAX,CAAiBzC,IAAI,CAAC23B,QAAtB,KACA33B,IAAI,CAACo+B,IAHN,EAIE;AACD,mBAAO,CAAP;AACA;;AAED,iBAAO,CAAC,CAAR;AACA;AAvBQ;AADA,KAjCG;AA6DdsgB,IAAAA,OAAO,EAAE;AACR,aAAO,SADC;AAER,eAAS;AAFD;AA7DK,GAAf,EA35PiF,CA89PjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAK,CAAC3tB,OAAO,CAAC+sB,WAAd,EAA4B;AAC3BlsB,IAAAA,MAAM,CAACkoB,SAAP,CAAiBvb,QAAjB,GAA4B;AAC3B9nB,MAAAA,GAAG,EAAE,aAAUzW,IAAV,EAAiB;AAErB;AAEA,YAAIvI,MAAM,GAAGuI,IAAI,CAAC8hB,UAAlB;;AACA,YAAKrqB,MAAM,IAAIA,MAAM,CAACqqB,UAAtB,EAAmC;AAClCrqB,UAAAA,MAAM,CAACqqB,UAAP,CAAkB0c,aAAlB;AACA;;AACD,eAAO,IAAP;AACA,OAV0B;AAW3B6K,MAAAA,GAAG,EAAE,aAAUrpC,IAAV,EAAiB;AAErB;AAEA,YAAIvI,MAAM,GAAGuI,IAAI,CAAC8hB,UAAlB;;AACA,YAAKrqB,MAAL,EAAc;AACbA,UAAAA,MAAM,CAAC+mC,aAAP;;AAEA,cAAK/mC,MAAM,CAACqqB,UAAZ,EAAyB;AACxBrqB,YAAAA,MAAM,CAACqqB,UAAP,CAAkB0c,aAAlB;AACA;AACD;AACD;AAvB0B,KAA5B;AAyBA;;AAED5M,EAAAA,MAAM,CAACz7B,IAAP,CAAa,CACZ,UADY,EAEZ,UAFY,EAGZ,WAHY,EAIZ,aAJY,EAKZ,aALY,EAMZ,SANY,EAOZ,SAPY,EAQZ,QARY,EASZ,aATY,EAUZ,iBAVY,CAAb,EAWG,YAAW;AACby7B,IAAAA,MAAM,CAAC8sB,OAAP,CAAgB,KAAKjgD,WAAL,EAAhB,IAAuC,IAAvC;AACA,GAbD,EAlgQiF,CAohQhF;AACA;;AACA,WAASmgD,gBAAT,CAA2BjpC,KAA3B,EAAmC;AAClC,QAAIspB,MAAM,GAAGtpB,KAAK,CAAChL,KAAN,CAAa+4B,aAAb,KAAgC,EAA7C;AACA,WAAOzE,MAAM,CAACvuB,IAAP,CAAa,GAAb,CAAP;AACA;;AAGF,WAASmuC,QAAT,CAAmB7+C,IAAnB,EAA0B;AACzB,WAAOA,IAAI,CAACua,YAAL,IAAqBva,IAAI,CAACua,YAAL,CAAmB,OAAnB,CAArB,IAAqD,EAA5D;AACA;;AAED,WAASukC,cAAT,CAAyBnpC,KAAzB,EAAiC;AAChC,QAAK1U,KAAK,CAACinB,OAAN,CAAevS,KAAf,CAAL,EAA8B;AAC7B,aAAOA,KAAP;AACA;;AACD,QAAK,OAAOA,KAAP,KAAiB,QAAtB,EAAiC;AAChC,aAAOA,KAAK,CAAChL,KAAN,CAAa+4B,aAAb,KAAgC,EAAvC;AACA;;AACD,WAAO,EAAP;AACA;;AAED9R,EAAAA,MAAM,CAAClwB,EAAP,CAAUhM,MAAV,CAAkB;AACjBiF,IAAAA,QAAQ,EAAE,kBAAUgb,KAAV,EAAkB;AAC3B,UAAIopC,OAAJ;AAAA,UAAa/+C,IAAb;AAAA,UAAmBu5B,GAAnB;AAAA,UAAwBylB,QAAxB;AAAA,UAAkCC,KAAlC;AAAA,UAAyCxsB,CAAzC;AAAA,UAA4CysB,UAA5C;AAAA,UACC1iD,CAAC,GAAG,CADL;;AAGA,UAAKw0B,UAAU,CAAErb,KAAF,CAAf,EAA2B;AAC1B,eAAO,KAAKxf,IAAL,CAAW,UAAUs8B,CAAV,EAAc;AAC/Bb,UAAAA,MAAM,CAAE,IAAF,CAAN,CAAej3B,QAAf,CAAyBgb,KAAK,CAACvU,IAAN,CAAY,IAAZ,EAAkBqxB,CAAlB,EAAqBosB,QAAQ,CAAE,IAAF,CAA7B,CAAzB;AACA,SAFM,CAAP;AAGA;;AAEDE,MAAAA,OAAO,GAAGD,cAAc,CAAEnpC,KAAF,CAAxB;;AAEA,UAAKopC,OAAO,CAACloD,MAAb,EAAsB;AACrB,eAAUmJ,IAAI,GAAG,KAAMxD,CAAC,EAAP,CAAjB,EAAiC;AAChCwiD,UAAAA,QAAQ,GAAGH,QAAQ,CAAE7+C,IAAF,CAAnB;AACAu5B,UAAAA,GAAG,GAAGv5B,IAAI,CAACixB,QAAL,KAAkB,CAAlB,IAAyB,MAAM2tB,gBAAgB,CAAEI,QAAF,CAAtB,GAAqC,GAApE;;AAEA,cAAKzlB,GAAL,EAAW;AACV9G,YAAAA,CAAC,GAAG,CAAJ;;AACA,mBAAUwsB,KAAK,GAAGF,OAAO,CAAEtsB,CAAC,EAAH,CAAzB,EAAqC;AACpC,kBAAK8G,GAAG,CAACz6B,OAAJ,CAAa,MAAMmgD,KAAN,GAAc,GAA3B,IAAmC,CAAxC,EAA4C;AAC3C1lB,gBAAAA,GAAG,IAAI0lB,KAAK,GAAG,GAAf;AACA;AACD,aANS,CAQV;;;AACAC,YAAAA,UAAU,GAAGN,gBAAgB,CAAErlB,GAAF,CAA7B;;AACA,gBAAKylB,QAAQ,KAAKE,UAAlB,EAA+B;AAC9Bl/C,cAAAA,IAAI,CAACsP,YAAL,CAAmB,OAAnB,EAA4B4vC,UAA5B;AACA;AACD;AACD;AACD;;AAED,aAAO,IAAP;AACA,KApCgB;AAsCjBnkD,IAAAA,WAAW,EAAE,qBAAU4a,KAAV,EAAkB;AAC9B,UAAIopC,OAAJ;AAAA,UAAa/+C,IAAb;AAAA,UAAmBu5B,GAAnB;AAAA,UAAwBylB,QAAxB;AAAA,UAAkCC,KAAlC;AAAA,UAAyCxsB,CAAzC;AAAA,UAA4CysB,UAA5C;AAAA,UACC1iD,CAAC,GAAG,CADL;;AAGA,UAAKw0B,UAAU,CAAErb,KAAF,CAAf,EAA2B;AAC1B,eAAO,KAAKxf,IAAL,CAAW,UAAUs8B,CAAV,EAAc;AAC/Bb,UAAAA,MAAM,CAAE,IAAF,CAAN,CAAe72B,WAAf,CAA4B4a,KAAK,CAACvU,IAAN,CAAY,IAAZ,EAAkBqxB,CAAlB,EAAqBosB,QAAQ,CAAE,IAAF,CAA7B,CAA5B;AACA,SAFM,CAAP;AAGA;;AAED,UAAK,CAACx9C,SAAS,CAACxK,MAAhB,EAAyB;AACxB,eAAO,KAAKF,IAAL,CAAW,OAAX,EAAoB,EAApB,CAAP;AACA;;AAEDooD,MAAAA,OAAO,GAAGD,cAAc,CAAEnpC,KAAF,CAAxB;;AAEA,UAAKopC,OAAO,CAACloD,MAAb,EAAsB;AACrB,eAAUmJ,IAAI,GAAG,KAAMxD,CAAC,EAAP,CAAjB,EAAiC;AAChCwiD,UAAAA,QAAQ,GAAGH,QAAQ,CAAE7+C,IAAF,CAAnB,CADgC,CAGhC;;AACAu5B,UAAAA,GAAG,GAAGv5B,IAAI,CAACixB,QAAL,KAAkB,CAAlB,IAAyB,MAAM2tB,gBAAgB,CAAEI,QAAF,CAAtB,GAAqC,GAApE;;AAEA,cAAKzlB,GAAL,EAAW;AACV9G,YAAAA,CAAC,GAAG,CAAJ;;AACA,mBAAUwsB,KAAK,GAAGF,OAAO,CAAEtsB,CAAC,EAAH,CAAzB,EAAqC;AAEpC;AACA,qBAAQ8G,GAAG,CAACz6B,OAAJ,CAAa,MAAMmgD,KAAN,GAAc,GAA3B,IAAmC,CAAC,CAA5C,EAAgD;AAC/C1lB,gBAAAA,GAAG,GAAGA,GAAG,CAACt1B,OAAJ,CAAa,MAAMg7C,KAAN,GAAc,GAA3B,EAAgC,GAAhC,CAAN;AACA;AACD,aARS,CAUV;;;AACAC,YAAAA,UAAU,GAAGN,gBAAgB,CAAErlB,GAAF,CAA7B;;AACA,gBAAKylB,QAAQ,KAAKE,UAAlB,EAA+B;AAC9Bl/C,cAAAA,IAAI,CAACsP,YAAL,CAAmB,OAAnB,EAA4B4vC,UAA5B;AACA;AACD;AACD;AACD;;AAED,aAAO,IAAP;AACA,KAjFgB;AAmFjB3lC,IAAAA,WAAW,EAAE,qBAAU5D,KAAV,EAAiBwpC,QAAjB,EAA4B;AACxC,UAAI9/C,IAAI,WAAUsW,KAAV,CAAR;AAAA,UACCypC,YAAY,GAAG//C,IAAI,KAAK,QAAT,IAAqB4B,KAAK,CAACinB,OAAN,CAAevS,KAAf,CADrC;;AAGA,UAAK,OAAOwpC,QAAP,KAAoB,SAApB,IAAiCC,YAAtC,EAAqD;AACpD,eAAOD,QAAQ,GAAG,KAAKxkD,QAAL,CAAegb,KAAf,CAAH,GAA4B,KAAK5a,WAAL,CAAkB4a,KAAlB,CAA3C;AACA;;AAED,UAAKqb,UAAU,CAAErb,KAAF,CAAf,EAA2B;AAC1B,eAAO,KAAKxf,IAAL,CAAW,UAAUqG,CAAV,EAAc;AAC/Bo1B,UAAAA,MAAM,CAAE,IAAF,CAAN,CAAerY,WAAf,CACC5D,KAAK,CAACvU,IAAN,CAAY,IAAZ,EAAkB5E,CAAlB,EAAqBqiD,QAAQ,CAAE,IAAF,CAA7B,EAAuCM,QAAvC,CADD,EAECA,QAFD;AAIA,SALM,CAAP;AAMA;;AAED,aAAO,KAAKhpD,IAAL,CAAW,YAAW;AAC5B,YAAIN,SAAJ,EAAe2G,CAAf,EAAkBimB,IAAlB,EAAwB48B,UAAxB;;AAEA,YAAKD,YAAL,EAAoB;AAEnB;AACA5iD,UAAAA,CAAC,GAAG,CAAJ;AACAimB,UAAAA,IAAI,GAAGmP,MAAM,CAAE,IAAF,CAAb;AACAytB,UAAAA,UAAU,GAAGP,cAAc,CAAEnpC,KAAF,CAA3B;;AAEA,iBAAU9f,SAAS,GAAGwpD,UAAU,CAAE7iD,CAAC,EAAH,CAAhC,EAA4C;AAE3C;AACA,gBAAKimB,IAAI,CAAC/qB,QAAL,CAAe7B,SAAf,CAAL,EAAkC;AACjC4sB,cAAAA,IAAI,CAAC1nB,WAAL,CAAkBlF,SAAlB;AACA,aAFD,MAEO;AACN4sB,cAAAA,IAAI,CAAC9nB,QAAL,CAAe9E,SAAf;AACA;AACD,WAfkB,CAiBpB;;AACC,SAlBD,MAkBO,IAAK8f,KAAK,KAAKqL,SAAV,IAAuB3hB,IAAI,KAAK,SAArC,EAAiD;AACvDxJ,UAAAA,SAAS,GAAGgpD,QAAQ,CAAE,IAAF,CAApB;;AACA,cAAKhpD,SAAL,EAAiB;AAEhB;AACA0zC,YAAAA,QAAQ,CAACF,GAAT,CAAc,IAAd,EAAoB,eAApB,EAAqCxzC,SAArC;AACA,WANsD,CAQvD;AACA;AACA;AACA;;;AACA,cAAK,KAAKyZ,YAAV,EAAyB;AACxB,iBAAKA,YAAL,CAAmB,OAAnB,EACCzZ,SAAS,IAAI8f,KAAK,KAAK,KAAvB,GACC,EADD,GAEC4zB,QAAQ,CAAC9yB,GAAT,CAAc,IAAd,EAAoB,eAApB,KAAyC,EAH3C;AAKA;AACD;AACD,OAzCM,CAAP;AA0CA,KA9IgB;AAgJjB/e,IAAAA,QAAQ,EAAE,kBAAUm6B,QAAV,EAAqB;AAC9B,UAAIh8B,SAAJ;AAAA,UAAemK,IAAf;AAAA,UACCxD,CAAC,GAAG,CADL;AAGA3G,MAAAA,SAAS,GAAG,MAAMg8B,QAAN,GAAiB,GAA7B;;AACA,aAAU7xB,IAAI,GAAG,KAAMxD,CAAC,EAAP,CAAjB,EAAiC;AAChC,YAAKwD,IAAI,CAACixB,QAAL,KAAkB,CAAlB,IACJ,CAAE,MAAM2tB,gBAAgB,CAAEC,QAAQ,CAAE7+C,IAAF,CAAV,CAAtB,GAA6C,GAA/C,EAAqDlB,OAArD,CAA8DjJ,SAA9D,IAA4E,CAAC,CAD9E,EACkF;AACjF,iBAAO,IAAP;AACA;AACD;;AAED,aAAO,KAAP;AACA;AA7JgB,GAAlB;AAmKA,MAAIypD,OAAO,GAAG,KAAd;AAEA1tB,EAAAA,MAAM,CAAClwB,EAAP,CAAUhM,MAAV,CAAkB;AACjBsZ,IAAAA,GAAG,EAAE,aAAU2G,KAAV,EAAkB;AACtB,UAAIw0B,KAAJ;AAAA,UAAWpiB,GAAX;AAAA,UAAgB4rB,eAAhB;AAAA,UACC3zC,IAAI,GAAG,KAAM,CAAN,CADR;;AAGA,UAAK,CAACqB,SAAS,CAACxK,MAAhB,EAAyB;AACxB,YAAKmJ,IAAL,EAAY;AACXmqC,UAAAA,KAAK,GAAGvY,MAAM,CAAC2tB,QAAP,CAAiBv/C,IAAI,CAACX,IAAtB,KACPuyB,MAAM,CAAC2tB,QAAP,CAAiBv/C,IAAI,CAAC23B,QAAL,CAAcl5B,WAAd,EAAjB,CADD;;AAGA,cAAK0rC,KAAK,IACT,SAASA,KADL,IAEJ,CAAEpiB,GAAG,GAAGoiB,KAAK,CAAC1zB,GAAN,CAAWzW,IAAX,EAAiB,OAAjB,CAAR,MAAyCghB,SAF1C,EAGE;AACD,mBAAO+G,GAAP;AACA;;AAEDA,UAAAA,GAAG,GAAG/nB,IAAI,CAAC2V,KAAX,CAXW,CAaX;;AACA,cAAK,OAAOoS,GAAP,KAAe,QAApB,EAA+B;AAC9B,mBAAOA,GAAG,CAAC9jB,OAAJ,CAAaq7C,OAAb,EAAsB,EAAtB,CAAP;AACA,WAhBU,CAkBX;;;AACA,iBAAOv3B,GAAG,IAAI,IAAP,GAAc,EAAd,GAAmBA,GAA1B;AACA;;AAED;AACA;;AAED4rB,MAAAA,eAAe,GAAG3iB,UAAU,CAAErb,KAAF,CAA5B;AAEA,aAAO,KAAKxf,IAAL,CAAW,UAAUqG,CAAV,EAAc;AAC/B,YAAIwS,GAAJ;;AAEA,YAAK,KAAKiiB,QAAL,KAAkB,CAAvB,EAA2B;AAC1B;AACA;;AAED,YAAK0iB,eAAL,EAAuB;AACtB3kC,UAAAA,GAAG,GAAG2G,KAAK,CAACvU,IAAN,CAAY,IAAZ,EAAkB5E,CAAlB,EAAqBo1B,MAAM,CAAE,IAAF,CAAN,CAAe5iB,GAAf,EAArB,CAAN;AACA,SAFD,MAEO;AACNA,UAAAA,GAAG,GAAG2G,KAAN;AACA,SAX8B,CAa/B;;;AACA,YAAK3G,GAAG,IAAI,IAAZ,EAAmB;AAClBA,UAAAA,GAAG,GAAG,EAAN;AAEA,SAHD,MAGO,IAAK,OAAOA,GAAP,KAAe,QAApB,EAA+B;AACrCA,UAAAA,GAAG,IAAI,EAAP;AAEA,SAHM,MAGA,IAAK/N,KAAK,CAACinB,OAAN,CAAelZ,GAAf,CAAL,EAA4B;AAClCA,UAAAA,GAAG,GAAG4iB,MAAM,CAACpxB,GAAP,CAAYwO,GAAZ,EAAiB,UAAU2G,KAAV,EAAkB;AACxC,mBAAOA,KAAK,IAAI,IAAT,GAAgB,EAAhB,GAAqBA,KAAK,GAAG,EAApC;AACA,WAFK,CAAN;AAGA;;AAEDw0B,QAAAA,KAAK,GAAGvY,MAAM,CAAC2tB,QAAP,CAAiB,KAAKlgD,IAAtB,KAAgCuyB,MAAM,CAAC2tB,QAAP,CAAiB,KAAK5nB,QAAL,CAAcl5B,WAAd,EAAjB,CAAxC,CA1B+B,CA4B/B;;AACA,YAAK,CAAC0rC,KAAD,IAAU,EAAG,SAASA,KAAZ,CAAV,IAAiCA,KAAK,CAACd,GAAN,CAAW,IAAX,EAAiBr6B,GAAjB,EAAsB,OAAtB,MAAoCgS,SAA1E,EAAsF;AACrF,eAAKrL,KAAL,GAAa3G,GAAb;AACA;AACD,OAhCM,CAAP;AAiCA;AAlEgB,GAAlB;AAqEA4iB,EAAAA,MAAM,CAACl8B,MAAP,CAAe;AACd6pD,IAAAA,QAAQ,EAAE;AACTl/C,MAAAA,MAAM,EAAE;AACPoW,QAAAA,GAAG,EAAE,aAAUzW,IAAV,EAAiB;AAErB,cAAIgP,GAAG,GAAG4iB,MAAM,CAACl7B,IAAP,CAAYC,IAAZ,CAAkBqJ,IAAlB,EAAwB,OAAxB,CAAV;AACA,iBAAOgP,GAAG,IAAI,IAAP,GACNA,GADM,GAGN;AACA;AACA;AACA;AACA4vC,UAAAA,gBAAgB,CAAEhtB,MAAM,CAAC7L,IAAP,CAAa/lB,IAAb,CAAF,CAPjB;AAQA;AAZM,OADC;AAeTs0B,MAAAA,MAAM,EAAE;AACP7d,QAAAA,GAAG,EAAE,aAAUzW,IAAV,EAAiB;AACrB,cAAI2V,KAAJ;AAAA,cAAWtV,MAAX;AAAA,cAAmB7D,CAAnB;AAAA,cACChH,OAAO,GAAGwK,IAAI,CAACxK,OADhB;AAAA,cAEC2T,KAAK,GAAGnJ,IAAI,CAACw+B,aAFd;AAAA,cAGC94B,GAAG,GAAG1F,IAAI,CAACX,IAAL,KAAc,YAHrB;AAAA,cAIC0sC,MAAM,GAAGrmC,GAAG,GAAG,IAAH,GAAU,EAJvB;AAAA,cAKC/I,GAAG,GAAG+I,GAAG,GAAGyD,KAAK,GAAG,CAAX,GAAe3T,OAAO,CAACqB,MALjC;;AAOA,cAAKsS,KAAK,GAAG,CAAb,EAAiB;AAChB3M,YAAAA,CAAC,GAAGG,GAAJ;AAEA,WAHD,MAGO;AACNH,YAAAA,CAAC,GAAGkJ,GAAG,GAAGyD,KAAH,GAAW,CAAlB;AACA,WAboB,CAerB;;;AACA,iBAAQ3M,CAAC,GAAGG,GAAZ,EAAiBH,CAAC,EAAlB,EAAuB;AACtB6D,YAAAA,MAAM,GAAG7K,OAAO,CAAEgH,CAAF,CAAhB,CADsB,CAGtB;AACA;;AACA,gBAAK,CAAE6D,MAAM,CAACk+B,QAAP,IAAmB/hC,CAAC,KAAK2M,KAA3B,KAEH;AACA,aAAC9I,MAAM,CAACq3B,QAHL,KAID,CAACr3B,MAAM,CAACyhB,UAAP,CAAkB4V,QAAnB,IACD,CAACC,QAAQ,CAAEt3B,MAAM,CAACyhB,UAAT,EAAqB,UAArB,CALP,CAAL,EAKkD;AAEjD;AACAnM,cAAAA,KAAK,GAAGic,MAAM,CAAEvxB,MAAF,CAAN,CAAiB2O,GAAjB,EAAR,CAHiD,CAKjD;;AACA,kBAAKtJ,GAAL,EAAW;AACV,uBAAOiQ,KAAP;AACA,eARgD,CAUjD;;;AACAo2B,cAAAA,MAAM,CAACptC,IAAP,CAAagX,KAAb;AACA;AACD;;AAED,iBAAOo2B,MAAP;AACA,SA3CM;AA6CP1C,QAAAA,GAAG,EAAE,aAAUrpC,IAAV,EAAgB2V,KAAhB,EAAwB;AAC5B,cAAI6pC,SAAJ;AAAA,cAAen/C,MAAf;AAAA,cACC7K,OAAO,GAAGwK,IAAI,CAACxK,OADhB;AAAA,cAECu2C,MAAM,GAAGna,MAAM,CAACyB,SAAP,CAAkB1d,KAAlB,CAFV;AAAA,cAGCnZ,CAAC,GAAGhH,OAAO,CAACqB,MAHb;;AAKA,iBAAQ2F,CAAC,EAAT,EAAc;AACb6D,YAAAA,MAAM,GAAG7K,OAAO,CAAEgH,CAAF,CAAhB;AAEA;;AAEA,gBAAK6D,MAAM,CAACk+B,QAAP,GACJ3M,MAAM,CAAC0B,OAAP,CAAgB1B,MAAM,CAAC2tB,QAAP,CAAgBl/C,MAAhB,CAAuBoW,GAAvB,CAA4BpW,MAA5B,CAAhB,EAAsD0rC,MAAtD,IAAiE,CAAC,CADnE,EAEE;AACDyT,cAAAA,SAAS,GAAG,IAAZ;AACA;AAED;;AACA,WAlB2B,CAoB5B;;;AACA,cAAK,CAACA,SAAN,EAAkB;AACjBx/C,YAAAA,IAAI,CAACw+B,aAAL,GAAqB,CAAC,CAAtB;AACA;;AACD,iBAAOuN,MAAP;AACA;AAtEM;AAfC;AADI,GAAf,EApxQiF,CA+2QjF;;AACAna,EAAAA,MAAM,CAACz7B,IAAP,CAAa,CAAE,OAAF,EAAW,UAAX,CAAb,EAAsC,YAAW;AAChDy7B,IAAAA,MAAM,CAAC2tB,QAAP,CAAiB,IAAjB,IAA0B;AACzBlW,MAAAA,GAAG,EAAE,aAAUrpC,IAAV,EAAgB2V,KAAhB,EAAwB;AAC5B,YAAK1U,KAAK,CAACinB,OAAN,CAAevS,KAAf,CAAL,EAA8B;AAC7B,iBAAS3V,IAAI,CAACs+B,OAAL,GAAe1M,MAAM,CAAC0B,OAAP,CAAgB1B,MAAM,CAAE5xB,IAAF,CAAN,CAAegP,GAAf,EAAhB,EAAsC2G,KAAtC,IAAgD,CAAC,CAAzE;AACA;AACD;AALwB,KAA1B;;AAOA,QAAK,CAACob,OAAO,CAAC8sB,OAAd,EAAwB;AACvBjsB,MAAAA,MAAM,CAAC2tB,QAAP,CAAiB,IAAjB,EAAwB9oC,GAAxB,GAA8B,UAAUzW,IAAV,EAAiB;AAC9C,eAAOA,IAAI,CAACua,YAAL,CAAmB,OAAnB,MAAiC,IAAjC,GAAwC,IAAxC,GAA+Cva,IAAI,CAAC2V,KAA3D;AACA,OAFD;AAGA;AACD,GAbD,EAh3QiF,CAk4QjF;;AAGAob,EAAAA,OAAO,CAAC0uB,OAAR,GAAkB,eAAetoD,MAAjC;;AAGA,MAAIuoD,WAAW,GAAG,iCAAlB;AAAA,MACCC,uBAAuB,GAAG,SAA1BA,uBAA0B,CAAUhnD,CAAV,EAAc;AACvCA,IAAAA,CAAC,CAAC2Y,eAAF;AACA,GAHF;;AAKAsgB,EAAAA,MAAM,CAACl8B,MAAP,CAAek8B,MAAM,CAAC5gB,KAAtB,EAA6B;AAE5B7Y,IAAAA,OAAO,EAAE,iBAAU6Y,KAAV,EAAiBpb,IAAjB,EAAuBoK,IAAvB,EAA6B4/C,YAA7B,EAA4C;AAEpD,UAAIpjD,CAAJ;AAAA,UAAO+8B,GAAP;AAAA,UAAYqB,GAAZ;AAAA,UAAiBilB,UAAjB;AAAA,UAA6BC,MAA7B;AAAA,UAAqC9Q,MAArC;AAAA,UAA6CrjB,OAA7C;AAAA,UAAsDo0B,WAAtD;AAAA,UACCC,SAAS,GAAG,CAAEhgD,IAAI,IAAI+E,QAAV,CADb;AAAA,UAEC1F,IAAI,GAAGuxB,MAAM,CAACxvB,IAAP,CAAa4P,KAAb,EAAoB,MAApB,IAA+BA,KAAK,CAAC3R,IAArC,GAA4C2R,KAFpD;AAAA,UAGC49B,UAAU,GAAGhe,MAAM,CAACxvB,IAAP,CAAa4P,KAAb,EAAoB,WAApB,IAAoCA,KAAK,CAACzM,SAAN,CAAgBnE,KAAhB,CAAuB,GAAvB,CAApC,GAAmE,EAHjF;AAKAm5B,MAAAA,GAAG,GAAGwmB,WAAW,GAAGnlB,GAAG,GAAG56B,IAAI,GAAGA,IAAI,IAAI+E,QAAzC,CAPoD,CASpD;;AACA,UAAK/E,IAAI,CAACixB,QAAL,KAAkB,CAAlB,IAAuBjxB,IAAI,CAACixB,QAAL,KAAkB,CAA9C,EAAkD;AACjD;AACA,OAZmD,CAcpD;;;AACA,UAAKyuB,WAAW,CAACj9C,IAAZ,CAAkBpD,IAAI,GAAGuyB,MAAM,CAAC5gB,KAAP,CAAai+B,SAAtC,CAAL,EAAyD;AACxD;AACA;;AAED,UAAK5vC,IAAI,CAACP,OAAL,CAAc,GAAd,IAAsB,CAAC,CAA5B,EAAgC;AAE/B;AACA8vC,QAAAA,UAAU,GAAGvvC,IAAI,CAACe,KAAL,CAAY,GAAZ,CAAb;AACAf,QAAAA,IAAI,GAAGuvC,UAAU,CAAC5V,KAAX,EAAP;AACA4V,QAAAA,UAAU,CAACvrB,IAAX;AACA;;AACDy8B,MAAAA,MAAM,GAAGzgD,IAAI,CAACP,OAAL,CAAc,GAAd,IAAsB,CAAtB,IAA2B,OAAOO,IAA3C,CA1BoD,CA4BpD;;AACA2R,MAAAA,KAAK,GAAGA,KAAK,CAAE4gB,MAAM,CAACkB,OAAT,CAAL,GACP9hB,KADO,GAEP,IAAI4gB,MAAM,CAACjH,KAAX,CAAkBtrB,IAAlB,EAAwB,QAAO2R,KAAP,MAAiB,QAAjB,IAA6BA,KAArD,CAFD,CA7BoD,CAiCpD;;AACAA,MAAAA,KAAK,CAACigC,SAAN,GAAkB2O,YAAY,GAAG,CAAH,GAAO,CAArC;AACA5uC,MAAAA,KAAK,CAACzM,SAAN,GAAkBqqC,UAAU,CAACl+B,IAAX,CAAiB,GAAjB,CAAlB;AACAM,MAAAA,KAAK,CAACg/B,UAAN,GAAmBh/B,KAAK,CAACzM,SAAN,GAClB,IAAImL,MAAJ,CAAY,YAAYk/B,UAAU,CAACl+B,IAAX,CAAiB,eAAjB,CAAZ,GAAiD,SAA7D,CADkB,GAElB,IAFD,CApCoD,CAwCpD;;AACAM,MAAAA,KAAK,CAACvH,MAAN,GAAeuX,SAAf;;AACA,UAAK,CAAChQ,KAAK,CAACxK,MAAZ,EAAqB;AACpBwK,QAAAA,KAAK,CAACxK,MAAN,GAAexG,IAAf;AACA,OA5CmD,CA8CpD;;;AACApK,MAAAA,IAAI,GAAGA,IAAI,IAAI,IAAR,GACN,CAAEob,KAAF,CADM,GAEN4gB,MAAM,CAACyB,SAAP,CAAkBz9B,IAAlB,EAAwB,CAAEob,KAAF,CAAxB,CAFD,CA/CoD,CAmDpD;;AACA2a,MAAAA,OAAO,GAAGiG,MAAM,CAAC5gB,KAAP,CAAa2a,OAAb,CAAsBtsB,IAAtB,KAAgC,EAA1C;;AACA,UAAK,CAACugD,YAAD,IAAiBj0B,OAAO,CAACxzB,OAAzB,IAAoCwzB,OAAO,CAACxzB,OAAR,CAAgBoJ,KAAhB,CAAuBvB,IAAvB,EAA6BpK,IAA7B,MAAwC,KAAjF,EAAyF;AACxF;AACA,OAvDmD,CAyDpD;AACA;;;AACA,UAAK,CAACgqD,YAAD,IAAiB,CAACj0B,OAAO,CAACglB,QAA1B,IAAsC,CAACzf,QAAQ,CAAElxB,IAAF,CAApD,EAA+D;AAE9D6/C,QAAAA,UAAU,GAAGl0B,OAAO,CAACwjB,YAAR,IAAwB9vC,IAArC;;AACA,YAAK,CAACqgD,WAAW,CAACj9C,IAAZ,CAAkBo9C,UAAU,GAAGxgD,IAA/B,CAAN,EAA8C;AAC7Ck6B,UAAAA,GAAG,GAAGA,GAAG,CAACzX,UAAV;AACA;;AACD,eAAQyX,GAAR,EAAaA,GAAG,GAAGA,GAAG,CAACzX,UAAvB,EAAoC;AACnCk+B,UAAAA,SAAS,CAACrhD,IAAV,CAAgB46B,GAAhB;AACAqB,UAAAA,GAAG,GAAGrB,GAAN;AACA,SAT6D,CAW9D;;;AACA,YAAKqB,GAAG,MAAO56B,IAAI,CAACo4B,aAAL,IAAsBrzB,QAA7B,CAAR,EAAkD;AACjDi7C,UAAAA,SAAS,CAACrhD,IAAV,CAAgBi8B,GAAG,CAACR,WAAJ,IAAmBQ,GAAG,CAACqlB,YAAvB,IAAuC9oD,MAAvD;AACA;AACD,OA1EmD,CA4EpD;;;AACAqF,MAAAA,CAAC,GAAG,CAAJ;;AACA,aAAQ,CAAE+8B,GAAG,GAAGymB,SAAS,CAAExjD,CAAC,EAAH,CAAjB,KAA8B,CAACwU,KAAK,CAAC8+B,oBAAN,EAAvC,EAAsE;AACrEiQ,QAAAA,WAAW,GAAGxmB,GAAd;AACAvoB,QAAAA,KAAK,CAAC3R,IAAN,GAAa7C,CAAC,GAAG,CAAJ,GACZqjD,UADY,GAEZl0B,OAAO,CAACyjB,QAAR,IAAoB/vC,IAFrB,CAFqE,CAMrE;;AACA2vC,QAAAA,MAAM,GAAG,CAAEzF,QAAQ,CAAC9yB,GAAT,CAAc8iB,GAAd,EAAmB,QAAnB,KAAiC55B,MAAM,CAACovC,MAAP,CAAe,IAAf,CAAnC,EAA4D/9B,KAAK,CAAC3R,IAAlE,KACRkqC,QAAQ,CAAC9yB,GAAT,CAAc8iB,GAAd,EAAmB,QAAnB,CADD;;AAEA,YAAKyV,MAAL,EAAc;AACbA,UAAAA,MAAM,CAACztC,KAAP,CAAcg4B,GAAd,EAAmB3jC,IAAnB;AACA,SAXoE,CAarE;;;AACAo5C,QAAAA,MAAM,GAAG8Q,MAAM,IAAIvmB,GAAG,CAAEumB,MAAF,CAAtB;;AACA,YAAK9Q,MAAM,IAAIA,MAAM,CAACztC,KAAjB,IAA0BwnC,UAAU,CAAExP,GAAF,CAAzC,EAAmD;AAClDvoB,UAAAA,KAAK,CAACvH,MAAN,GAAeulC,MAAM,CAACztC,KAAP,CAAcg4B,GAAd,EAAmB3jC,IAAnB,CAAf;;AACA,cAAKob,KAAK,CAACvH,MAAN,KAAiB,KAAtB,EAA8B;AAC7BuH,YAAAA,KAAK,CAACpY,cAAN;AACA;AACD;AACD;;AACDoY,MAAAA,KAAK,CAAC3R,IAAN,GAAaA,IAAb,CApGoD,CAsGpD;;AACA,UAAK,CAACugD,YAAD,IAAiB,CAAC5uC,KAAK,CAACmgC,kBAAN,EAAvB,EAAoD;AAEnD,YAAK,CAAE,CAACxlB,OAAO,CAACmhB,QAAT,IACNnhB,OAAO,CAACmhB,QAAR,CAAiBvrC,KAAjB,CAAwBy+C,SAAS,CAACxqB,GAAV,EAAxB,EAAyC5/B,IAAzC,MAAoD,KADhD,KAEJmzC,UAAU,CAAE/oC,IAAF,CAFX,EAEsB;AAErB;AACA;AACA,cAAK8/C,MAAM,IAAI9uB,UAAU,CAAEhxB,IAAI,CAAEX,IAAF,CAAN,CAApB,IAAwC,CAAC6xB,QAAQ,CAAElxB,IAAF,CAAtD,EAAiE;AAEhE;AACA46B,YAAAA,GAAG,GAAG56B,IAAI,CAAE8/C,MAAF,CAAV;;AAEA,gBAAKllB,GAAL,EAAW;AACV56B,cAAAA,IAAI,CAAE8/C,MAAF,CAAJ,GAAiB,IAAjB;AACA,aAP+D,CAShE;;;AACAluB,YAAAA,MAAM,CAAC5gB,KAAP,CAAai+B,SAAb,GAAyB5vC,IAAzB;;AAEA,gBAAK2R,KAAK,CAAC8+B,oBAAN,EAAL,EAAoC;AACnCiQ,cAAAA,WAAW,CAACz0B,gBAAZ,CAA8BjsB,IAA9B,EAAoCsgD,uBAApC;AACA;;AAED3/C,YAAAA,IAAI,CAAEX,IAAF,CAAJ;;AAEA,gBAAK2R,KAAK,CAAC8+B,oBAAN,EAAL,EAAoC;AACnCiQ,cAAAA,WAAW,CAACv1B,mBAAZ,CAAiCnrB,IAAjC,EAAuCsgD,uBAAvC;AACA;;AAED/tB,YAAAA,MAAM,CAAC5gB,KAAP,CAAai+B,SAAb,GAAyBjuB,SAAzB;;AAEA,gBAAK4Z,GAAL,EAAW;AACV56B,cAAAA,IAAI,CAAE8/C,MAAF,CAAJ,GAAiBllB,GAAjB;AACA;AACD;AACD;AACD;;AAED,aAAO5pB,KAAK,CAACvH,MAAb;AACA,KAjJ2B;AAmJ5B;AACA;AACAy2C,IAAAA,QAAQ,EAAE,kBAAU7gD,IAAV,EAAgBW,IAAhB,EAAsBgR,KAAtB,EAA8B;AACvC,UAAIrY,CAAC,GAAGi5B,MAAM,CAACl8B,MAAP,CACP,IAAIk8B,MAAM,CAACjH,KAAX,EADO,EAEP3Z,KAFO,EAGP;AACC3R,QAAAA,IAAI,EAAEA,IADP;AAECiyC,QAAAA,WAAW,EAAE;AAFd,OAHO,CAAR;AASA1f,MAAAA,MAAM,CAAC5gB,KAAP,CAAa7Y,OAAb,CAAsBQ,CAAtB,EAAyB,IAAzB,EAA+BqH,IAA/B;AACA;AAhK2B,GAA7B;AAoKA4xB,EAAAA,MAAM,CAAClwB,EAAP,CAAUhM,MAAV,CAAkB;AAEjByC,IAAAA,OAAO,EAAE,iBAAUkH,IAAV,EAAgBzJ,IAAhB,EAAuB;AAC/B,aAAO,KAAKO,IAAL,CAAW,YAAW;AAC5By7B,QAAAA,MAAM,CAAC5gB,KAAP,CAAa7Y,OAAb,CAAsBkH,IAAtB,EAA4BzJ,IAA5B,EAAkC,IAAlC;AACA,OAFM,CAAP;AAGA,KANgB;AAOjBwP,IAAAA,cAAc,EAAE,wBAAU/F,IAAV,EAAgBzJ,IAAhB,EAAuB;AACtC,UAAIoK,IAAI,GAAG,KAAM,CAAN,CAAX;;AACA,UAAKA,IAAL,EAAY;AACX,eAAO4xB,MAAM,CAAC5gB,KAAP,CAAa7Y,OAAb,CAAsBkH,IAAtB,EAA4BzJ,IAA5B,EAAkCoK,IAAlC,EAAwC,IAAxC,CAAP;AACA;AACD;AAZgB,GAAlB,EAjjRiF,CAikRjF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA,MAAK,CAAC+wB,OAAO,CAAC0uB,OAAd,EAAwB;AACvB7tB,IAAAA,MAAM,CAACz7B,IAAP,CAAa;AAAE8C,MAAAA,KAAK,EAAE,SAAT;AAAoBsQ,MAAAA,IAAI,EAAE;AAA1B,KAAb,EAAqD,UAAUkpC,IAAV,EAAgB9C,GAAhB,EAAsB;AAE1E;AACA,UAAItqC,OAAO,GAAG,SAAVA,OAAU,CAAU2L,KAAV,EAAkB;AAC/B4gB,QAAAA,MAAM,CAAC5gB,KAAP,CAAakvC,QAAb,CAAuBvQ,GAAvB,EAA4B3+B,KAAK,CAACxK,MAAlC,EAA0CorB,MAAM,CAAC5gB,KAAP,CAAa2+B,GAAb,CAAkB3+B,KAAlB,CAA1C;AACA,OAFD;;AAIA4gB,MAAAA,MAAM,CAAC5gB,KAAP,CAAa2a,OAAb,CAAsBgkB,GAAtB,IAA8B;AAC7B9jB,QAAAA,KAAK,EAAE,iBAAW;AAEjB;AACA;AACA,cAAI4F,GAAG,GAAG,KAAK2G,aAAL,IAAsB,KAAKrzB,QAA3B,IAAuC,IAAjD;AAAA,cACCo7C,QAAQ,GAAG5W,QAAQ,CAACrB,MAAT,CAAiBzW,GAAjB,EAAsBke,GAAtB,CADZ;;AAGA,cAAK,CAACwQ,QAAN,EAAiB;AAChB1uB,YAAAA,GAAG,CAACnG,gBAAJ,CAAsBmnB,IAAtB,EAA4BptC,OAA5B,EAAqC,IAArC;AACA;;AACDkkC,UAAAA,QAAQ,CAACrB,MAAT,CAAiBzW,GAAjB,EAAsBke,GAAtB,EAA2B,CAAEwQ,QAAQ,IAAI,CAAd,IAAoB,CAA/C;AACA,SAZ4B;AAa7B30B,QAAAA,QAAQ,EAAE,oBAAW;AACpB,cAAIiG,GAAG,GAAG,KAAK2G,aAAL,IAAsB,KAAKrzB,QAA3B,IAAuC,IAAjD;AAAA,cACCo7C,QAAQ,GAAG5W,QAAQ,CAACrB,MAAT,CAAiBzW,GAAjB,EAAsBke,GAAtB,IAA8B,CAD1C;;AAGA,cAAK,CAACwQ,QAAN,EAAiB;AAChB1uB,YAAAA,GAAG,CAACjH,mBAAJ,CAAyBioB,IAAzB,EAA+BptC,OAA/B,EAAwC,IAAxC;AACAkkC,YAAAA,QAAQ,CAAC9rC,MAAT,CAAiBg0B,GAAjB,EAAsBke,GAAtB;AAEA,WAJD,MAIO;AACNpG,YAAAA,QAAQ,CAACrB,MAAT,CAAiBzW,GAAjB,EAAsBke,GAAtB,EAA2BwQ,QAA3B;AACA;AACD;AAxB4B,OAA9B;AA0BA,KAjCD;AAkCA;;AACD,MAAI/oD,QAAQ,GAAGD,MAAM,CAACC,QAAtB;AAEA,MAAIg6B,KAAK,GAAG;AAAEwC,IAAAA,IAAI,EAAE1xB,IAAI,CAACC,GAAL;AAAR,GAAZ;AAEA,MAAIi+C,MAAM,GAAK,IAAf,CAjnRiF,CAqnRjF;;AACAxuB,EAAAA,MAAM,CAACyuB,QAAP,GAAkB,UAAUzqD,IAAV,EAAiB;AAClC,QAAI2nC,GAAJ,EAAS+iB,eAAT;;AACA,QAAK,CAAC1qD,IAAD,IAAS,OAAOA,IAAP,KAAgB,QAA9B,EAAyC;AACxC,aAAO,IAAP;AACA,KAJiC,CAMlC;AACA;;;AACA,QAAI;AACH2nC,MAAAA,GAAG,GAAK,IAAIpmC,MAAM,CAACopD,SAAX,EAAF,CAA2BC,eAA3B,CAA4C5qD,IAA5C,EAAkD,UAAlD,CAAN;AACA,KAFD,CAEE,OAAQ+C,CAAR,EAAY,CAAE;;AAEhB2nD,IAAAA,eAAe,GAAG/iB,GAAG,IAAIA,GAAG,CAAC9X,oBAAJ,CAA0B,aAA1B,EAA2C,CAA3C,CAAzB;;AACA,QAAK,CAAC8X,GAAD,IAAQ+iB,eAAb,EAA+B;AAC9B1uB,MAAAA,MAAM,CAAC9xB,KAAP,CAAc,mBACbwgD,eAAe,GACd1uB,MAAM,CAACpxB,GAAP,CAAY8/C,eAAe,CAAC1oB,UAA5B,EAAwC,UAAUvhC,EAAV,EAAe;AACtD,eAAOA,EAAE,CAAC6vB,WAAV;AACA,OAFD,EAEIxV,IAFJ,CAEU,IAFV,CADc,GAId9a,IALY,CAAd;AAOA;;AACD,WAAO2nC,GAAP;AACA,GAvBD;;AA0BA,MACCkjB,QAAQ,GAAG,OADZ;AAAA,MAECC,KAAK,GAAG,QAFT;AAAA,MAGCC,eAAe,GAAG,uCAHnB;AAAA,MAICC,YAAY,GAAG,oCAJhB;;AAMA,WAASC,WAAT,CAAsBrH,MAAtB,EAA8Bn1C,GAA9B,EAAmCy8C,WAAnC,EAAgD1jD,GAAhD,EAAsD;AACrD,QAAIc,IAAJ;;AAEA,QAAK+C,KAAK,CAACinB,OAAN,CAAe7jB,GAAf,CAAL,EAA4B;AAE3B;AACAutB,MAAAA,MAAM,CAACz7B,IAAP,CAAakO,GAAb,EAAkB,UAAU7H,CAAV,EAAaqoC,CAAb,EAAiB;AAClC,YAAKic,WAAW,IAAIL,QAAQ,CAACh+C,IAAT,CAAe+2C,MAAf,CAApB,EAA8C;AAE7C;AACAp8C,UAAAA,GAAG,CAAEo8C,MAAF,EAAU3U,CAAV,CAAH;AAEA,SALD,MAKO;AAEN;AACAgc,UAAAA,WAAW,CACVrH,MAAM,GAAG,GAAT,IAAiB,QAAO3U,CAAP,MAAa,QAAb,IAAyBA,CAAC,IAAI,IAA9B,GAAqCroC,CAArC,GAAyC,EAA1D,IAAiE,GADvD,EAEVqoC,CAFU,EAGVic,WAHU,EAIV1jD,GAJU,CAAX;AAMA;AACD,OAhBD;AAkBA,KArBD,MAqBO,IAAK,CAAC0jD,WAAD,IAAgBnvB,MAAM,CAAEttB,GAAF,CAAN,KAAkB,QAAvC,EAAkD;AAExD;AACA,WAAMnG,IAAN,IAAcmG,GAAd,EAAoB;AACnBw8C,QAAAA,WAAW,CAAErH,MAAM,GAAG,GAAT,GAAet7C,IAAf,GAAsB,GAAxB,EAA6BmG,GAAG,CAAEnG,IAAF,CAAhC,EAA0C4iD,WAA1C,EAAuD1jD,GAAvD,CAAX;AACA;AAED,KAPM,MAOA;AAEN;AACAA,MAAAA,GAAG,CAAEo8C,MAAF,EAAUn1C,GAAV,CAAH;AACA;AACD,GA1rRgF,CA4rRjF;AACA;;;AACAutB,EAAAA,MAAM,CAAC5J,KAAP,GAAe,UAAU1E,CAAV,EAAaw9B,WAAb,EAA2B;AACzC,QAAItH,MAAJ;AAAA,QACCuH,CAAC,GAAG,EADL;AAAA,QAEC3jD,GAAG,GAAG,SAANA,GAAM,CAAU8X,GAAV,EAAe8rC,eAAf,EAAiC;AAEtC;AACA,UAAIrrC,KAAK,GAAGqb,UAAU,CAAEgwB,eAAF,CAAV,GACXA,eAAe,EADJ,GAEXA,eAFD;AAIAD,MAAAA,CAAC,CAAEA,CAAC,CAAClqD,MAAJ,CAAD,GAAgBoqD,kBAAkB,CAAE/rC,GAAF,CAAlB,GAA4B,GAA5B,GACf+rC,kBAAkB,CAAEtrC,KAAK,IAAI,IAAT,GAAgB,EAAhB,GAAqBA,KAAvB,CADnB;AAEA,KAXF;;AAaA,QAAK2N,CAAC,IAAI,IAAV,EAAiB;AAChB,aAAO,EAAP;AACA,KAhBwC,CAkBzC;;;AACA,QAAKriB,KAAK,CAACinB,OAAN,CAAe5E,CAAf,KAAwBA,CAAC,CAACwO,MAAF,IAAY,CAACF,MAAM,CAACiB,aAAP,CAAsBvP,CAAtB,CAA1C,EAAwE;AAEvE;AACAsO,MAAAA,MAAM,CAACz7B,IAAP,CAAamtB,CAAb,EAAgB,YAAW;AAC1BlmB,QAAAA,GAAG,CAAE,KAAKc,IAAP,EAAa,KAAKyX,KAAlB,CAAH;AACA,OAFD;AAIA,KAPD,MAOO;AAEN;AACA;AACA,WAAM6jC,MAAN,IAAgBl2B,CAAhB,EAAoB;AACnBu9B,QAAAA,WAAW,CAAErH,MAAF,EAAUl2B,CAAC,CAAEk2B,MAAF,CAAX,EAAuBsH,WAAvB,EAAoC1jD,GAApC,CAAX;AACA;AACD,KAjCwC,CAmCzC;;;AACA,WAAO2jD,CAAC,CAACrwC,IAAF,CAAQ,GAAR,CAAP;AACA,GArCD;;AAuCAkhB,EAAAA,MAAM,CAAClwB,EAAP,CAAUhM,MAAV,CAAkB;AACjBwrD,IAAAA,SAAS,EAAE,qBAAW;AACrB,aAAOtvB,MAAM,CAAC5J,KAAP,CAAc,KAAKm5B,cAAL,EAAd,CAAP;AACA,KAHgB;AAIjBA,IAAAA,cAAc,EAAE,0BAAW;AAC1B,aAAO,KAAK3gD,GAAL,CAAU,YAAW;AAE3B;AACA,YAAIs7B,QAAQ,GAAGlK,MAAM,CAAC3yB,IAAP,CAAa,IAAb,EAAmB,UAAnB,CAAf;AACA,eAAO68B,QAAQ,GAAGlK,MAAM,CAACyB,SAAP,CAAkByI,QAAlB,CAAH,GAAkC,IAAjD;AACA,OALM,EAKH57B,MALG,CAKK,YAAW;AACtB,YAAIb,IAAI,GAAG,KAAKA,IAAhB,CADsB,CAGtB;;AACA,eAAO,KAAKnB,IAAL,IAAa,CAAC0zB,MAAM,CAAE,IAAF,CAAN,CAAen4B,EAAf,CAAmB,WAAnB,CAAd,IACNmnD,YAAY,CAACn+C,IAAb,CAAmB,KAAKk1B,QAAxB,CADM,IACgC,CAACgpB,eAAe,CAACl+C,IAAhB,CAAsBpD,IAAtB,CADjC,KAEJ,KAAKi/B,OAAL,IAAgB,CAAC0N,cAAc,CAACvpC,IAAf,CAAqBpD,IAArB,CAFb,CAAP;AAGA,OAZM,EAYHmB,GAZG,CAYE,UAAUuzB,EAAV,EAAc/zB,IAAd,EAAqB;AAC7B,YAAIgP,GAAG,GAAG4iB,MAAM,CAAE,IAAF,CAAN,CAAe5iB,GAAf,EAAV;;AAEA,YAAKA,GAAG,IAAI,IAAZ,EAAmB;AAClB,iBAAO,IAAP;AACA;;AAED,YAAK/N,KAAK,CAACinB,OAAN,CAAelZ,GAAf,CAAL,EAA4B;AAC3B,iBAAO4iB,MAAM,CAACpxB,GAAP,CAAYwO,GAAZ,EAAiB,UAAUA,GAAV,EAAgB;AACvC,mBAAO;AAAE9Q,cAAAA,IAAI,EAAE8B,IAAI,CAAC9B,IAAb;AAAmByX,cAAAA,KAAK,EAAE3G,GAAG,CAAC/K,OAAJ,CAAay8C,KAAb,EAAoB,MAApB;AAA1B,aAAP;AACA,WAFM,CAAP;AAGA;;AAED,eAAO;AAAExiD,UAAAA,IAAI,EAAE8B,IAAI,CAAC9B,IAAb;AAAmByX,UAAAA,KAAK,EAAE3G,GAAG,CAAC/K,OAAJ,CAAay8C,KAAb,EAAoB,MAApB;AAA1B,SAAP;AACA,OA1BM,EA0BHjqC,GA1BG,EAAP;AA2BA;AAhCgB,GAAlB;AAoCA,MACC2qC,GAAG,GAAG,MADP;AAAA,MAECC,KAAK,GAAG,MAFT;AAAA,MAGCC,UAAU,GAAG,eAHd;AAAA,MAICC,QAAQ,GAAG,4BAJZ;AAAA,MAMC;AACAC,EAAAA,cAAc,GAAG,2DAPlB;AAAA,MAQCC,UAAU,GAAG,gBARd;AAAA,MASCC,SAAS,GAAG,OATb;;AAWC;AACD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACCpF,EAAAA,UAAU,GAAG,EApBd;;AAsBC;AACD;AACA;AACA;AACA;AACCqF,EAAAA,UAAU,GAAG,EA3Bd;AAAA,MA6BC;AACAC,EAAAA,QAAQ,GAAG,KAAKn+C,MAAL,CAAa,GAAb,CA9BZ;AAAA,MAgCC;AACAo+C,EAAAA,YAAY,GAAG98C,QAAQ,CAACC,aAAT,CAAwB,GAAxB,CAjChB;AAmCA68C,EAAAA,YAAY,CAACzjB,IAAb,GAAoBhnC,QAAQ,CAACgnC,IAA7B,CA5yRiF,CA8yRjF;;AACA,WAAS0jB,2BAAT,CAAsCC,SAAtC,EAAkD;AAEjD;AACA,WAAO,UAAUC,kBAAV,EAA8BngD,IAA9B,EAAqC;AAE3C,UAAK,OAAOmgD,kBAAP,KAA8B,QAAnC,EAA8C;AAC7CngD,QAAAA,IAAI,GAAGmgD,kBAAP;AACAA,QAAAA,kBAAkB,GAAG,GAArB;AACA;;AAED,UAAIC,QAAJ;AAAA,UACCzlD,CAAC,GAAG,CADL;AAAA,UAEC0lD,SAAS,GAAGF,kBAAkB,CAACvjD,WAAnB,GAAiCkM,KAAjC,CAAwC+4B,aAAxC,KAA2D,EAFxE;;AAIA,UAAK1S,UAAU,CAAEnvB,IAAF,CAAf,EAA0B;AAEzB;AACA,eAAUogD,QAAQ,GAAGC,SAAS,CAAE1lD,CAAC,EAAH,CAA9B,EAA0C;AAEzC;AACA,cAAKylD,QAAQ,CAAE,CAAF,CAAR,KAAkB,GAAvB,EAA6B;AAC5BA,YAAAA,QAAQ,GAAGA,QAAQ,CAAC9gD,KAAT,CAAgB,CAAhB,KAAuB,GAAlC;AACA,aAAE4gD,SAAS,CAAEE,QAAF,CAAT,GAAwBF,SAAS,CAAEE,QAAF,CAAT,IAAyB,EAAnD,EAAwDrmB,OAAxD,CAAiE/5B,IAAjE,EAF4B,CAI7B;AACC,WALD,MAKO;AACN,aAAEkgD,SAAS,CAAEE,QAAF,CAAT,GAAwBF,SAAS,CAAEE,QAAF,CAAT,IAAyB,EAAnD,EAAwDtjD,IAAxD,CAA8DkD,IAA9D;AACA;AACD;AACD;AACD,KA3BD;AA4BA,GA90RgF,CAg1RjF;;;AACA,WAASsgD,6BAAT,CAAwCJ,SAAxC,EAAmDvsD,OAAnD,EAA4DknD,eAA5D,EAA6E0F,KAA7E,EAAqF;AAEpF,QAAIC,SAAS,GAAG,EAAhB;AAAA,QACCC,gBAAgB,GAAKP,SAAS,KAAKJ,UADpC;;AAGA,aAASY,OAAT,CAAkBN,QAAlB,EAA6B;AAC5B,UAAI1jB,QAAJ;AACA8jB,MAAAA,SAAS,CAAEJ,QAAF,CAAT,GAAwB,IAAxB;AACArwB,MAAAA,MAAM,CAACz7B,IAAP,CAAa4rD,SAAS,CAAEE,QAAF,CAAT,IAAyB,EAAtC,EAA0C,UAAUtxC,CAAV,EAAa6xC,kBAAb,EAAkC;AAC3E,YAAIC,mBAAmB,GAAGD,kBAAkB,CAAEhtD,OAAF,EAAWknD,eAAX,EAA4B0F,KAA5B,CAA5C;;AACA,YAAK,OAAOK,mBAAP,KAA+B,QAA/B,IACJ,CAACH,gBADG,IACiB,CAACD,SAAS,CAAEI,mBAAF,CADhC,EAC0D;AAEzDjtD,UAAAA,OAAO,CAAC0sD,SAAR,CAAkBtmB,OAAlB,CAA2B6mB,mBAA3B;AACAF,UAAAA,OAAO,CAAEE,mBAAF,CAAP;AACA,iBAAO,KAAP;AACA,SAND,MAMO,IAAKH,gBAAL,EAAwB;AAC9B,iBAAO,EAAG/jB,QAAQ,GAAGkkB,mBAAd,CAAP;AACA;AACD,OAXD;AAYA,aAAOlkB,QAAP;AACA;;AAED,WAAOgkB,OAAO,CAAE/sD,OAAO,CAAC0sD,SAAR,CAAmB,CAAnB,CAAF,CAAP,IAAqC,CAACG,SAAS,CAAE,GAAF,CAAV,IAAqBE,OAAO,CAAE,GAAF,CAAxE;AACA,GAz2RgF,CA22RjF;AACA;AACA;;;AACA,WAASG,UAAT,CAAqBl8C,MAArB,EAA6B0c,GAA7B,EAAmC;AAClC,QAAIhO,GAAJ;AAAA,QAAS0d,IAAT;AAAA,QACC+vB,WAAW,GAAG/wB,MAAM,CAACgxB,YAAP,CAAoBD,WAApB,IAAmC,EADlD;;AAGA,SAAMztC,GAAN,IAAagO,GAAb,EAAmB;AAClB,UAAKA,GAAG,CAAEhO,GAAF,CAAH,KAAe8L,SAApB,EAAgC;AAC/B,SAAE2hC,WAAW,CAAEztC,GAAF,CAAX,GAAqB1O,MAArB,GAAgCosB,IAAI,KAAMA,IAAI,GAAG,EAAb,CAAtC,EAA6D1d,GAA7D,IAAqEgO,GAAG,CAAEhO,GAAF,CAAxE;AACA;AACD;;AACD,QAAK0d,IAAL,EAAY;AACXhB,MAAAA,MAAM,CAACl8B,MAAP,CAAe,IAAf,EAAqB8Q,MAArB,EAA6BosB,IAA7B;AACA;;AAED,WAAOpsB,MAAP;AACA;AAED;AACA;AACA;AACA;;;AACA,WAASq8C,mBAAT,CAA8B9B,CAA9B,EAAiCqB,KAAjC,EAAwCU,SAAxC,EAAoD;AAEnD,QAAIC,EAAJ;AAAA,QAAQ1jD,IAAR;AAAA,QAAc2jD,aAAd;AAAA,QAA6BC,aAA7B;AAAA,QACCjgB,QAAQ,GAAG+d,CAAC,CAAC/d,QADd;AAAA,QAECkf,SAAS,GAAGnB,CAAC,CAACmB,SAFf,CAFmD,CAMnD;;AACA,WAAQA,SAAS,CAAE,CAAF,CAAT,KAAmB,GAA3B,EAAiC;AAChCA,MAAAA,SAAS,CAAClpB,KAAV;;AACA,UAAK+pB,EAAE,KAAK/hC,SAAZ,EAAwB;AACvB+hC,QAAAA,EAAE,GAAGhC,CAAC,CAACmC,QAAF,IAAcd,KAAK,CAACe,iBAAN,CAAyB,cAAzB,CAAnB;AACA;AACD,KAZkD,CAcnD;;;AACA,QAAKJ,EAAL,EAAU;AACT,WAAM1jD,IAAN,IAAc2jC,QAAd,EAAyB;AACxB,YAAKA,QAAQ,CAAE3jC,IAAF,CAAR,IAAoB2jC,QAAQ,CAAE3jC,IAAF,CAAR,CAAiBoD,IAAjB,CAAuBsgD,EAAvB,CAAzB,EAAuD;AACtDb,UAAAA,SAAS,CAACtmB,OAAV,CAAmBv8B,IAAnB;AACA;AACA;AACD;AACD,KAtBkD,CAwBnD;;;AACA,QAAK6iD,SAAS,CAAE,CAAF,CAAT,IAAkBY,SAAvB,EAAmC;AAClCE,MAAAA,aAAa,GAAGd,SAAS,CAAE,CAAF,CAAzB;AACA,KAFD,MAEO;AAEN;AACA,WAAM7iD,IAAN,IAAcyjD,SAAd,EAA0B;AACzB,YAAK,CAACZ,SAAS,CAAE,CAAF,CAAV,IAAmBnB,CAAC,CAACqC,UAAF,CAAc/jD,IAAI,GAAG,GAAP,GAAa6iD,SAAS,CAAE,CAAF,CAApC,CAAxB,EAAsE;AACrEc,UAAAA,aAAa,GAAG3jD,IAAhB;AACA;AACA;;AACD,YAAK,CAAC4jD,aAAN,EAAsB;AACrBA,UAAAA,aAAa,GAAG5jD,IAAhB;AACA;AACD,OAXK,CAaN;;;AACA2jD,MAAAA,aAAa,GAAGA,aAAa,IAAIC,aAAjC;AACA,KA1CkD,CA4CnD;AACA;AACA;;;AACA,QAAKD,aAAL,EAAqB;AACpB,UAAKA,aAAa,KAAKd,SAAS,CAAE,CAAF,CAAhC,EAAwC;AACvCA,QAAAA,SAAS,CAACtmB,OAAV,CAAmBonB,aAAnB;AACA;;AACD,aAAOF,SAAS,CAAEE,aAAF,CAAhB;AACA;AACD;AAED;AACA;AACA;;;AACA,WAASK,WAAT,CAAsBtC,CAAtB,EAAyBuC,QAAzB,EAAmClB,KAAnC,EAA0CmB,SAA1C,EAAsD;AACrD,QAAIC,KAAJ;AAAA,QAAWrrC,OAAX;AAAA,QAAoBsrC,IAApB;AAAA,QAA0B7oB,GAA1B;AAAA,QAA+B7jC,IAA/B;AAAA,QACCqsD,UAAU,GAAG,EADd;AAAA,QAGC;AACAlB,IAAAA,SAAS,GAAGnB,CAAC,CAACmB,SAAF,CAAY/gD,KAAZ,EAJb,CADqD,CAOrD;;AACA,QAAK+gD,SAAS,CAAE,CAAF,CAAd,EAAsB;AACrB,WAAMuB,IAAN,IAAc1C,CAAC,CAACqC,UAAhB,EAA6B;AAC5BA,QAAAA,UAAU,CAAEK,IAAI,CAAChlD,WAAL,EAAF,CAAV,GAAmCsiD,CAAC,CAACqC,UAAF,CAAcK,IAAd,CAAnC;AACA;AACD;;AAEDtrC,IAAAA,OAAO,GAAG+pC,SAAS,CAAClpB,KAAV,EAAV,CAdqD,CAgBrD;;AACA,WAAQ7gB,OAAR,EAAkB;AAEjB,UAAK4oC,CAAC,CAAC2C,cAAF,CAAkBvrC,OAAlB,CAAL,EAAmC;AAClCiqC,QAAAA,KAAK,CAAErB,CAAC,CAAC2C,cAAF,CAAkBvrC,OAAlB,CAAF,CAAL,GAAuCmrC,QAAvC;AACA,OAJgB,CAMjB;;;AACA,UAAK,CAACvsD,IAAD,IAASwsD,SAAT,IAAsBxC,CAAC,CAAC4C,UAA7B,EAA0C;AACzCL,QAAAA,QAAQ,GAAGvC,CAAC,CAAC4C,UAAF,CAAcL,QAAd,EAAwBvC,CAAC,CAACkB,QAA1B,CAAX;AACA;;AAEDlrD,MAAAA,IAAI,GAAGohB,OAAP;AACAA,MAAAA,OAAO,GAAG+pC,SAAS,CAAClpB,KAAV,EAAV;;AAEA,UAAK7gB,OAAL,EAAe;AAEd;AACA,YAAKA,OAAO,KAAK,GAAjB,EAAuB;AAEtBA,UAAAA,OAAO,GAAGphB,IAAV,CAFsB,CAIvB;AACC,SALD,MAKO,IAAKA,IAAI,KAAK,GAAT,IAAgBA,IAAI,KAAKohB,OAA9B,EAAwC;AAE9C;AACAsrC,UAAAA,IAAI,GAAGL,UAAU,CAAErsD,IAAI,GAAG,GAAP,GAAaohB,OAAf,CAAV,IAAsCirC,UAAU,CAAE,OAAOjrC,OAAT,CAAvD,CAH8C,CAK9C;;AACA,cAAK,CAACsrC,IAAN,EAAa;AACZ,iBAAMD,KAAN,IAAeJ,UAAf,EAA4B;AAE3B;AACAxoB,cAAAA,GAAG,GAAG4oB,KAAK,CAACpjD,KAAN,CAAa,GAAb,CAAN;;AACA,kBAAKw6B,GAAG,CAAE,CAAF,CAAH,KAAaziB,OAAlB,EAA4B;AAE3B;AACAsrC,gBAAAA,IAAI,GAAGL,UAAU,CAAErsD,IAAI,GAAG,GAAP,GAAa6jC,GAAG,CAAE,CAAF,CAAlB,CAAV,IACNwoB,UAAU,CAAE,OAAOxoB,GAAG,CAAE,CAAF,CAAZ,CADX;;AAEA,oBAAK6oB,IAAL,EAAY;AAEX;AACA,sBAAKA,IAAI,KAAK,IAAd,EAAqB;AACpBA,oBAAAA,IAAI,GAAGL,UAAU,CAAEI,KAAF,CAAjB,CADoB,CAGrB;AACC,mBAJD,MAIO,IAAKJ,UAAU,CAAEI,KAAF,CAAV,KAAwB,IAA7B,EAAoC;AAC1CrrC,oBAAAA,OAAO,GAAGyiB,GAAG,CAAE,CAAF,CAAb;AACAsnB,oBAAAA,SAAS,CAACtmB,OAAV,CAAmBhB,GAAG,CAAE,CAAF,CAAtB;AACA;;AACD;AACA;AACD;AACD;AACD,WA/B6C,CAiC9C;;;AACA,cAAK6oB,IAAI,KAAK,IAAd,EAAqB;AAEpB;AACA,gBAAKA,IAAI,IAAI1C,CAAC,CAAC6C,MAAf,EAAwB;AACvBN,cAAAA,QAAQ,GAAGG,IAAI,CAAEH,QAAF,CAAf;AACA,aAFD,MAEO;AACN,kBAAI;AACHA,gBAAAA,QAAQ,GAAGG,IAAI,CAAEH,QAAF,CAAf;AACA,eAFD,CAEE,OAAQ3qD,CAAR,EAAY;AACb,uBAAO;AACN8sC,kBAAAA,KAAK,EAAE,aADD;AAEN3lC,kBAAAA,KAAK,EAAE2jD,IAAI,GAAG9qD,CAAH,GAAO,wBAAwB5B,IAAxB,GAA+B,MAA/B,GAAwCohB;AAFpD,iBAAP;AAIA;AACD;AACD;AACD;AACD;AACD;;AAED,WAAO;AAAEstB,MAAAA,KAAK,EAAE,SAAT;AAAoB7vC,MAAAA,IAAI,EAAE0tD;AAA1B,KAAP;AACA;;AAED1xB,EAAAA,MAAM,CAACl8B,MAAP,CAAe;AAEd;AACAmuD,IAAAA,MAAM,EAAE,CAHM;AAKd;AACAC,IAAAA,YAAY,EAAE,EANA;AAOdC,IAAAA,IAAI,EAAE,EAPQ;AASdnB,IAAAA,YAAY,EAAE;AACboB,MAAAA,GAAG,EAAE5sD,QAAQ,CAACgnC,IADD;AAEb/+B,MAAAA,IAAI,EAAE,KAFO;AAGb4kD,MAAAA,OAAO,EAAEzC,cAAc,CAAC/+C,IAAf,CAAqBrL,QAAQ,CAAC8sD,QAA9B,CAHI;AAIbj0B,MAAAA,MAAM,EAAE,IAJK;AAKbk0B,MAAAA,WAAW,EAAE,IALA;AAMbC,MAAAA,KAAK,EAAE,IANM;AAObC,MAAAA,WAAW,EAAE,kDAPA;;AASb;AACF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AAEEC,MAAAA,OAAO,EAAE;AACR,aAAK1C,QADG;AAER77B,QAAAA,IAAI,EAAE,YAFE;AAGRjM,QAAAA,IAAI,EAAE,WAHE;AAIRyjB,QAAAA,GAAG,EAAE,2BAJG;AAKRgnB,QAAAA,IAAI,EAAE;AALE,OArBI;AA6BbvhB,MAAAA,QAAQ,EAAE;AACTzF,QAAAA,GAAG,EAAE,SADI;AAETzjB,QAAAA,IAAI,EAAE,QAFG;AAGTyqC,QAAAA,IAAI,EAAE;AAHG,OA7BG;AAmCbb,MAAAA,cAAc,EAAE;AACfnmB,QAAAA,GAAG,EAAE,aADU;AAEfxX,QAAAA,IAAI,EAAE,cAFS;AAGfw+B,QAAAA,IAAI,EAAE;AAHS,OAnCH;AAyCb;AACA;AACAnB,MAAAA,UAAU,EAAE;AAEX;AACA,kBAAUx/B,MAHC;AAKX;AACA,qBAAa,IANF;AAQX;AACA,qBAAagmB,IAAI,CAACC,KATP;AAWX;AACA,oBAAYjY,MAAM,CAACyuB;AAZR,OA3CC;AA0Db;AACA;AACA;AACA;AACAsC,MAAAA,WAAW,EAAE;AACZqB,QAAAA,GAAG,EAAE,IADO;AAEZhiD,QAAAA,OAAO,EAAE;AAFG;AA9DA,KATA;AA6Ed;AACA;AACA;AACAwiD,IAAAA,SAAS,EAAE,mBAAUh+C,MAAV,EAAkBi+C,QAAlB,EAA6B;AACvC,aAAOA,QAAQ,GAEd;AACA/B,MAAAA,UAAU,CAAEA,UAAU,CAAEl8C,MAAF,EAAUorB,MAAM,CAACgxB,YAAjB,CAAZ,EAA6C6B,QAA7C,CAHI,GAKd;AACA/B,MAAAA,UAAU,CAAE9wB,MAAM,CAACgxB,YAAT,EAAuBp8C,MAAvB,CANX;AAOA,KAxFa;AA0Fdk+C,IAAAA,aAAa,EAAE5C,2BAA2B,CAAExF,UAAF,CA1F5B;AA2FdqI,IAAAA,aAAa,EAAE7C,2BAA2B,CAAEH,UAAF,CA3F5B;AA6Fd;AACAiD,IAAAA,IAAI,EAAE,cAAUZ,GAAV,EAAexuD,OAAf,EAAyB;AAE9B;AACA,UAAK,QAAOwuD,GAAP,MAAe,QAApB,EAA+B;AAC9BxuD,QAAAA,OAAO,GAAGwuD,GAAV;AACAA,QAAAA,GAAG,GAAGhjC,SAAN;AACA,OAN6B,CAQ9B;;;AACAxrB,MAAAA,OAAO,GAAGA,OAAO,IAAI,EAArB;;AAEA,UAAIqvD,SAAJ;AAAA,UAEC;AACAC,MAAAA,QAHD;AAAA,UAKC;AACAC,MAAAA,qBAND;AAAA,UAOCC,eAPD;AAAA,UASC;AACAC,MAAAA,YAVD;AAAA,UAYC;AACAC,MAAAA,SAbD;AAAA,UAeC;AACAld,MAAAA,SAhBD;AAAA,UAkBC;AACAmd,MAAAA,WAnBD;AAAA,UAqBC;AACA3oD,MAAAA,CAtBD;AAAA,UAwBC;AACA4oD,MAAAA,QAzBD;AAAA,UA2BC;AACArE,MAAAA,CAAC,GAAGnvB,MAAM,CAAC4yB,SAAP,CAAkB,EAAlB,EAAsBhvD,OAAtB,CA5BL;AAAA,UA8BC;AACA6vD,MAAAA,eAAe,GAAGtE,CAAC,CAAC/+C,OAAF,IAAa++C,CA/BhC;AAAA,UAiCC;AACAuE,MAAAA,kBAAkB,GAAGvE,CAAC,CAAC/+C,OAAF,KAClBqjD,eAAe,CAACp0B,QAAhB,IAA4Bo0B,eAAe,CAACvzB,MAD1B,IAEpBF,MAAM,CAAEyzB,eAAF,CAFc,GAGpBzzB,MAAM,CAAC5gB,KArCT;AAAA,UAuCC;AACA20B,MAAAA,QAAQ,GAAG/T,MAAM,CAAC2T,QAAP,EAxCZ;AAAA,UAyCCggB,gBAAgB,GAAG3zB,MAAM,CAACkS,SAAP,CAAkB,aAAlB,CAzCpB;AAAA,UA2CC;AACA0hB,MAAAA,WAAU,GAAGzE,CAAC,CAACyE,UAAF,IAAgB,EA5C9B;AAAA,UA8CC;AACAC,MAAAA,cAAc,GAAG,EA/ClB;AAAA,UAgDCC,mBAAmB,GAAG,EAhDvB;AAAA,UAkDC;AACAC,MAAAA,QAAQ,GAAG,UAnDZ;AAAA,UAqDC;AACAvD,MAAAA,KAAK,GAAG;AACP78C,QAAAA,UAAU,EAAE,CADL;AAGP;AACA49C,QAAAA,iBAAiB,EAAE,2BAAUjuC,GAAV,EAAgB;AAClC,cAAIvK,KAAJ;;AACA,cAAKq9B,SAAL,EAAiB;AAChB,gBAAK,CAACgd,eAAN,EAAwB;AACvBA,cAAAA,eAAe,GAAG,EAAlB;;AACA,qBAAUr6C,KAAK,GAAG42C,QAAQ,CAAC39C,IAAT,CAAemhD,qBAAf,CAAlB,EAA6D;AAC5DC,gBAAAA,eAAe,CAAEr6C,KAAK,CAAE,CAAF,CAAL,CAAWlM,WAAX,KAA2B,GAA7B,CAAf,GACC,CAAEumD,eAAe,CAAEr6C,KAAK,CAAE,CAAF,CAAL,CAAWlM,WAAX,KAA2B,GAA7B,CAAf,IAAqD,EAAvD,EACEgF,MADF,CACUkH,KAAK,CAAE,CAAF,CADf,CADD;AAGA;AACD;;AACDA,YAAAA,KAAK,GAAGq6C,eAAe,CAAE9vC,GAAG,CAACzW,WAAJ,KAAoB,GAAtB,CAAvB;AACA;;AACD,iBAAOkM,KAAK,IAAI,IAAT,GAAgB,IAAhB,GAAuBA,KAAK,CAAC+F,IAAN,CAAY,IAAZ,CAA9B;AACA,SAlBM;AAoBP;AACAk1C,QAAAA,qBAAqB,EAAE,iCAAW;AACjC,iBAAO5d,SAAS,GAAG+c,qBAAH,GAA2B,IAA3C;AACA,SAvBM;AAyBP;AACAc,QAAAA,gBAAgB,EAAE,0BAAU3nD,IAAV,EAAgByX,KAAhB,EAAwB;AACzC,cAAKqyB,SAAS,IAAI,IAAlB,EAAyB;AACxB9pC,YAAAA,IAAI,GAAGwnD,mBAAmB,CAAExnD,IAAI,CAACO,WAAL,EAAF,CAAnB,GACNinD,mBAAmB,CAAExnD,IAAI,CAACO,WAAL,EAAF,CAAnB,IAA6CP,IAD9C;AAEAunD,YAAAA,cAAc,CAAEvnD,IAAF,CAAd,GAAyByX,KAAzB;AACA;;AACD,iBAAO,IAAP;AACA,SAjCM;AAmCP;AACAmwC,QAAAA,gBAAgB,EAAE,0BAAUzmD,IAAV,EAAiB;AAClC,cAAK2oC,SAAS,IAAI,IAAlB,EAAyB;AACxB+Y,YAAAA,CAAC,CAACmC,QAAF,GAAa7jD,IAAb;AACA;;AACD,iBAAO,IAAP;AACA,SAzCM;AA2CP;AACAmmD,QAAAA,UAAU,EAAE,oBAAUhlD,GAAV,EAAgB;AAC3B,cAAI+wB,IAAJ;;AACA,cAAK/wB,GAAL,EAAW;AACV,gBAAKwnC,SAAL,EAAiB;AAEhB;AACAoa,cAAAA,KAAK,CAAC1c,MAAN,CAAcllC,GAAG,CAAE4hD,KAAK,CAAC2D,MAAR,CAAjB;AACA,aAJD,MAIO;AAEN;AACA,mBAAMx0B,IAAN,IAAc/wB,GAAd,EAAoB;AACnBglD,gBAAAA,WAAU,CAAEj0B,IAAF,CAAV,GAAqB,CAAEi0B,WAAU,CAAEj0B,IAAF,CAAZ,EAAsB/wB,GAAG,CAAE+wB,IAAF,CAAzB,CAArB;AACA;AACD;AACD;;AACD,iBAAO,IAAP;AACA,SA5DM;AA8DP;AACAy0B,QAAAA,KAAK,EAAE,eAAUC,UAAV,EAAuB;AAC7B,cAAIC,SAAS,GAAGD,UAAU,IAAIN,QAA9B;;AACA,cAAKd,SAAL,EAAiB;AAChBA,YAAAA,SAAS,CAACmB,KAAV,CAAiBE,SAAjB;AACA;;AACDjxB,UAAAA,IAAI,CAAE,CAAF,EAAKixB,SAAL,CAAJ;AACA,iBAAO,IAAP;AACA;AAtEM,OAtDT,CAX8B,CA0I9B;;;AACAvgB,MAAAA,QAAQ,CAACP,OAAT,CAAkBgd,KAAlB,EA3I8B,CA6I9B;AACA;AACA;;AACArB,MAAAA,CAAC,CAACiD,GAAF,GAAQ,CAAE,CAAEA,GAAG,IAAIjD,CAAC,CAACiD,GAAT,IAAgB5sD,QAAQ,CAACgnC,IAA3B,IAAoC,EAAtC,EACNn6B,OADM,CACGy9C,SADH,EACctqD,QAAQ,CAAC8sD,QAAT,GAAoB,IADlC,CAAR,CAhJ8B,CAmJ9B;;AACAnD,MAAAA,CAAC,CAAC1hD,IAAF,GAAS7J,OAAO,CAACsL,MAAR,IAAkBtL,OAAO,CAAC6J,IAA1B,IAAkC0hD,CAAC,CAACjgD,MAApC,IAA8CigD,CAAC,CAAC1hD,IAAzD,CApJ8B,CAsJ9B;;AACA0hD,MAAAA,CAAC,CAACmB,SAAF,GAAc,CAAEnB,CAAC,CAACkB,QAAF,IAAc,GAAhB,EAAsBxjD,WAAtB,GAAoCkM,KAApC,CAA2C+4B,aAA3C,KAA8D,CAAE,EAAF,CAA5E,CAvJ8B,CAyJ9B;;AACA,UAAKqd,CAAC,CAACoF,WAAF,IAAiB,IAAtB,EAA6B;AAC5BjB,QAAAA,SAAS,GAAGngD,QAAQ,CAACC,aAAT,CAAwB,GAAxB,CAAZ,CAD4B,CAG5B;AACA;AACA;;AACA,YAAI;AACHkgD,UAAAA,SAAS,CAAC9mB,IAAV,GAAiB2iB,CAAC,CAACiD,GAAnB,CADG,CAGH;AACA;;AACAkB,UAAAA,SAAS,CAAC9mB,IAAV,GAAiB8mB,SAAS,CAAC9mB,IAA3B;AACA2iB,UAAAA,CAAC,CAACoF,WAAF,GAAgBtE,YAAY,CAACqC,QAAb,GAAwB,IAAxB,GAA+BrC,YAAY,CAACuE,IAA5C,KACflB,SAAS,CAAChB,QAAV,GAAqB,IAArB,GAA4BgB,SAAS,CAACkB,IADvC;AAEA,SARD,CAQE,OAAQztD,CAAR,EAAY;AAEb;AACA;AACAooD,UAAAA,CAAC,CAACoF,WAAF,GAAgB,IAAhB;AACA;AACD,OA9K6B,CAgL9B;;;AACA,UAAKpF,CAAC,CAACnrD,IAAF,IAAUmrD,CAAC,CAACoD,WAAZ,IAA2B,OAAOpD,CAAC,CAACnrD,IAAT,KAAkB,QAAlD,EAA6D;AAC5DmrD,QAAAA,CAAC,CAACnrD,IAAF,GAASg8B,MAAM,CAAC5J,KAAP,CAAc+4B,CAAC,CAACnrD,IAAhB,EAAsBmrD,CAAC,CAACD,WAAxB,CAAT;AACA,OAnL6B,CAqL9B;;;AACAqB,MAAAA,6BAA6B,CAAE7F,UAAF,EAAcyE,CAAd,EAAiBvrD,OAAjB,EAA0B4sD,KAA1B,CAA7B,CAtL8B,CAwL9B;;AACA,UAAKpa,SAAL,EAAiB;AAChB,eAAOoa,KAAP;AACA,OA3L6B,CA6L9B;AACA;;;AACA+C,MAAAA,WAAW,GAAGvzB,MAAM,CAAC5gB,KAAP,IAAgB+vC,CAAC,CAAC9wB,MAAhC,CA/L8B,CAiM9B;;AACA,UAAKk1B,WAAW,IAAIvzB,MAAM,CAACiyB,MAAP,OAAoB,CAAxC,EAA4C;AAC3CjyB,QAAAA,MAAM,CAAC5gB,KAAP,CAAa7Y,OAAb,CAAsB,WAAtB;AACA,OApM6B,CAsM9B;;;AACA4oD,MAAAA,CAAC,CAAC1hD,IAAF,GAAS0hD,CAAC,CAAC1hD,IAAF,CAAOykB,WAAP,EAAT,CAvM8B,CAyM9B;;AACAi9B,MAAAA,CAAC,CAACsF,UAAF,GAAe,CAAC5E,UAAU,CAACh/C,IAAX,CAAiBs+C,CAAC,CAAC1hD,IAAnB,CAAhB,CA1M8B,CA4M9B;AACA;AACA;;AACAylD,MAAAA,QAAQ,GAAG/D,CAAC,CAACiD,GAAF,CAAM//C,OAAN,CAAeo9C,KAAf,EAAsB,EAAtB,CAAX,CA/M8B,CAiN9B;;AACA,UAAK,CAACN,CAAC,CAACsF,UAAR,EAAqB;AAEpB;AACAjB,QAAAA,QAAQ,GAAGrE,CAAC,CAACiD,GAAF,CAAM7iD,KAAN,CAAa2jD,QAAQ,CAACjuD,MAAtB,CAAX,CAHoB,CAKpB;;AACA,YAAKkqD,CAAC,CAACnrD,IAAF,KAAYmrD,CAAC,CAACoD,WAAF,IAAiB,OAAOpD,CAAC,CAACnrD,IAAT,KAAkB,QAA/C,CAAL,EAAiE;AAChEkvD,UAAAA,QAAQ,IAAI,CAAE1E,MAAM,CAAC39C,IAAP,CAAaqiD,QAAb,IAA0B,GAA1B,GAAgC,GAAlC,IAA0C/D,CAAC,CAACnrD,IAAxD,CADgE,CAGhE;;AACA,iBAAOmrD,CAAC,CAACnrD,IAAT;AACA,SAXmB,CAapB;;;AACA,YAAKmrD,CAAC,CAACjoB,KAAF,KAAY,KAAjB,EAAyB;AACxBgsB,UAAAA,QAAQ,GAAGA,QAAQ,CAAC7gD,OAAT,CAAkBq9C,UAAlB,EAA8B,IAA9B,CAAX;AACA8D,UAAAA,QAAQ,GAAG,CAAEhF,MAAM,CAAC39C,IAAP,CAAaqiD,QAAb,IAA0B,GAA1B,GAAgC,GAAlC,IAA0C,IAA1C,GAAmD1zB,KAAK,CAACwC,IAAN,EAAnD,GACVwxB,QADD;AAEA,SAlBmB,CAoBpB;;;AACArE,QAAAA,CAAC,CAACiD,GAAF,GAAQc,QAAQ,GAAGM,QAAnB,CArBoB,CAuBrB;AACC,OAxBD,MAwBO,IAAKrE,CAAC,CAACnrD,IAAF,IAAUmrD,CAAC,CAACoD,WAAZ,IACX,CAAEpD,CAAC,CAACsD,WAAF,IAAiB,EAAnB,EAAwBvlD,OAAxB,CAAiC,mCAAjC,MAA2E,CADrE,EACyE;AAC/EiiD,QAAAA,CAAC,CAACnrD,IAAF,GAASmrD,CAAC,CAACnrD,IAAF,CAAOqO,OAAP,CAAgBm9C,GAAhB,EAAqB,GAArB,CAAT;AACA,OA7O6B,CA+O9B;;;AACA,UAAKL,CAAC,CAACuF,UAAP,EAAoB;AACnB,YAAK10B,MAAM,CAACkyB,YAAP,CAAqBgB,QAArB,CAAL,EAAuC;AACtC1C,UAAAA,KAAK,CAACyD,gBAAN,CAAwB,mBAAxB,EAA6Cj0B,MAAM,CAACkyB,YAAP,CAAqBgB,QAArB,CAA7C;AACA;;AACD,YAAKlzB,MAAM,CAACmyB,IAAP,CAAae,QAAb,CAAL,EAA+B;AAC9B1C,UAAAA,KAAK,CAACyD,gBAAN,CAAwB,eAAxB,EAAyCj0B,MAAM,CAACmyB,IAAP,CAAae,QAAb,CAAzC;AACA;AACD,OAvP6B,CAyP9B;;;AACA,UAAK/D,CAAC,CAACnrD,IAAF,IAAUmrD,CAAC,CAACsF,UAAZ,IAA0BtF,CAAC,CAACsD,WAAF,KAAkB,KAA5C,IAAqD7uD,OAAO,CAAC6uD,WAAlE,EAAgF;AAC/EjC,QAAAA,KAAK,CAACyD,gBAAN,CAAwB,cAAxB,EAAwC9E,CAAC,CAACsD,WAA1C;AACA,OA5P6B,CA8P9B;;;AACAjC,MAAAA,KAAK,CAACyD,gBAAN,CACC,QADD,EAEC9E,CAAC,CAACmB,SAAF,CAAa,CAAb,KAAoBnB,CAAC,CAACuD,OAAF,CAAWvD,CAAC,CAACmB,SAAF,CAAa,CAAb,CAAX,CAApB,GACCnB,CAAC,CAACuD,OAAF,CAAWvD,CAAC,CAACmB,SAAF,CAAa,CAAb,CAAX,KACGnB,CAAC,CAACmB,SAAF,CAAa,CAAb,MAAqB,GAArB,GAA2B,OAAON,QAAP,GAAkB,UAA7C,GAA0D,EAD7D,CADD,GAGCb,CAAC,CAACuD,OAAF,CAAW,GAAX,CALF,EA/P8B,CAuQ9B;;AACA,WAAM9nD,CAAN,IAAWukD,CAAC,CAACwF,OAAb,EAAuB;AACtBnE,QAAAA,KAAK,CAACyD,gBAAN,CAAwBrpD,CAAxB,EAA2BukD,CAAC,CAACwF,OAAF,CAAW/pD,CAAX,CAA3B;AACA,OA1Q6B,CA4Q9B;;;AACA,UAAKukD,CAAC,CAACyF,UAAF,KACFzF,CAAC,CAACyF,UAAF,CAAaplD,IAAb,CAAmBikD,eAAnB,EAAoCjD,KAApC,EAA2CrB,CAA3C,MAAmD,KAAnD,IAA4D/Y,SAD1D,CAAL,EAC6E;AAE5E;AACA,eAAOoa,KAAK,CAAC4D,KAAN,EAAP;AACA,OAlR6B,CAoR9B;;;AACAL,MAAAA,QAAQ,GAAG,OAAX,CArR8B,CAuR9B;;AACAJ,MAAAA,gBAAgB,CAACnoD,GAAjB,CAAsB2jD,CAAC,CAACp+B,QAAxB;AACAy/B,MAAAA,KAAK,CAACntB,IAAN,CAAY8rB,CAAC,CAAC0F,OAAd;AACArE,MAAAA,KAAK,CAAC/c,IAAN,CAAY0b,CAAC,CAACjhD,KAAd,EA1R8B,CA4R9B;;AACA+kD,MAAAA,SAAS,GAAG1C,6BAA6B,CAAER,UAAF,EAAcZ,CAAd,EAAiBvrD,OAAjB,EAA0B4sD,KAA1B,CAAzC,CA7R8B,CA+R9B;;AACA,UAAK,CAACyC,SAAN,EAAkB;AACjB5vB,QAAAA,IAAI,CAAE,CAAC,CAAH,EAAM,cAAN,CAAJ;AACA,OAFD,MAEO;AACNmtB,QAAAA,KAAK,CAAC78C,UAAN,GAAmB,CAAnB,CADM,CAGN;;AACA,YAAK4/C,WAAL,EAAmB;AAClBG,UAAAA,kBAAkB,CAACntD,OAAnB,CAA4B,UAA5B,EAAwC,CAAEiqD,KAAF,EAASrB,CAAT,CAAxC;AACA,SANK,CAQN;;;AACA,YAAK/Y,SAAL,EAAiB;AAChB,iBAAOoa,KAAP;AACA,SAXK,CAaN;;;AACA,YAAKrB,CAAC,CAACqD,KAAF,IAAWrD,CAAC,CAAC11C,OAAF,GAAY,CAA5B,EAAgC;AAC/B45C,UAAAA,YAAY,GAAG9tD,MAAM,CAAC8K,UAAP,CAAmB,YAAW;AAC5CmgD,YAAAA,KAAK,CAAC4D,KAAN,CAAa,SAAb;AACA,WAFc,EAEZjF,CAAC,CAAC11C,OAFU,CAAf;AAGA;;AAED,YAAI;AACH28B,UAAAA,SAAS,GAAG,KAAZ;AACA6c,UAAAA,SAAS,CAAC6B,IAAV,CAAgBjB,cAAhB,EAAgCxwB,IAAhC;AACA,SAHD,CAGE,OAAQt8B,CAAR,EAAY;AAEb;AACA,cAAKqvC,SAAL,EAAiB;AAChB,kBAAMrvC,CAAN;AACA,WALY,CAOb;;;AACAs8B,UAAAA,IAAI,CAAE,CAAC,CAAH,EAAMt8B,CAAN,CAAJ;AACA;AACD,OAnU6B,CAqU9B;;;AACA,eAASs8B,IAAT,CAAe8wB,MAAf,EAAuBY,gBAAvB,EAAyC7D,SAAzC,EAAoDyD,OAApD,EAA8D;AAC7D,YAAIhD,SAAJ;AAAA,YAAekD,OAAf;AAAA,YAAwB3mD,KAAxB;AAAA,YAA+BwjD,QAA/B;AAAA,YAAyCsD,QAAzC;AAAA,YACCX,UAAU,GAAGU,gBADd,CAD6D,CAI7D;;AACA,YAAK3e,SAAL,EAAiB;AAChB;AACA;;AAEDA,QAAAA,SAAS,GAAG,IAAZ,CAT6D,CAW7D;;AACA,YAAKid,YAAL,EAAoB;AACnB9tD,UAAAA,MAAM,CAAC4L,YAAP,CAAqBkiD,YAArB;AACA,SAd4D,CAgB7D;AACA;;;AACAJ,QAAAA,SAAS,GAAG7jC,SAAZ,CAlB6D,CAoB7D;;AACA+jC,QAAAA,qBAAqB,GAAGwB,OAAO,IAAI,EAAnC,CArB6D,CAuB7D;;AACAnE,QAAAA,KAAK,CAAC78C,UAAN,GAAmBwgD,MAAM,GAAG,CAAT,GAAa,CAAb,GAAiB,CAApC,CAxB6D,CA0B7D;;AACAxC,QAAAA,SAAS,GAAGwC,MAAM,IAAI,GAAV,IAAiBA,MAAM,GAAG,GAA1B,IAAiCA,MAAM,KAAK,GAAxD,CA3B6D,CA6B7D;;AACA,YAAKjD,SAAL,EAAiB;AAChBQ,UAAAA,QAAQ,GAAGT,mBAAmB,CAAE9B,CAAF,EAAKqB,KAAL,EAAYU,SAAZ,CAA9B;AACA,SAhC4D,CAkC7D;;;AACA,YAAK,CAACS,SAAD,IACJ3xB,MAAM,CAAC0B,OAAP,CAAgB,QAAhB,EAA0BytB,CAAC,CAACmB,SAA5B,IAA0C,CAAC,CADvC,IAEJtwB,MAAM,CAAC0B,OAAP,CAAgB,MAAhB,EAAwBytB,CAAC,CAACmB,SAA1B,IAAwC,CAFzC,EAE6C;AAC5CnB,UAAAA,CAAC,CAACqC,UAAF,CAAc,aAAd,IAAgC,YAAW,CAAE,CAA7C;AACA,SAvC4D,CAyC7D;;;AACAE,QAAAA,QAAQ,GAAGD,WAAW,CAAEtC,CAAF,EAAKuC,QAAL,EAAelB,KAAf,EAAsBmB,SAAtB,CAAtB,CA1C6D,CA4C7D;;AACA,YAAKA,SAAL,EAAiB;AAEhB;AACA,cAAKxC,CAAC,CAACuF,UAAP,EAAoB;AACnBM,YAAAA,QAAQ,GAAGxE,KAAK,CAACe,iBAAN,CAAyB,eAAzB,CAAX;;AACA,gBAAKyD,QAAL,EAAgB;AACfh1B,cAAAA,MAAM,CAACkyB,YAAP,CAAqBgB,QAArB,IAAkC8B,QAAlC;AACA;;AACDA,YAAAA,QAAQ,GAAGxE,KAAK,CAACe,iBAAN,CAAyB,MAAzB,CAAX;;AACA,gBAAKyD,QAAL,EAAgB;AACfh1B,cAAAA,MAAM,CAACmyB,IAAP,CAAae,QAAb,IAA0B8B,QAA1B;AACA;AACD,WAZe,CAchB;;;AACA,cAAKb,MAAM,KAAK,GAAX,IAAkBhF,CAAC,CAAC1hD,IAAF,KAAW,MAAlC,EAA2C;AAC1C4mD,YAAAA,UAAU,GAAG,WAAb,CAD0C,CAG3C;AACC,WAJD,MAIO,IAAKF,MAAM,KAAK,GAAhB,EAAsB;AAC5BE,YAAAA,UAAU,GAAG,aAAb,CAD4B,CAG7B;AACC,WAJM,MAIA;AACNA,YAAAA,UAAU,GAAG3C,QAAQ,CAAC7d,KAAtB;AACAghB,YAAAA,OAAO,GAAGnD,QAAQ,CAAC1tD,IAAnB;AACAkK,YAAAA,KAAK,GAAGwjD,QAAQ,CAACxjD,KAAjB;AACAyjD,YAAAA,SAAS,GAAG,CAACzjD,KAAb;AACA;AACD,SA7BD,MA6BO;AAEN;AACAA,UAAAA,KAAK,GAAGmmD,UAAR;;AACA,cAAKF,MAAM,IAAI,CAACE,UAAhB,EAA6B;AAC5BA,YAAAA,UAAU,GAAG,OAAb;;AACA,gBAAKF,MAAM,GAAG,CAAd,EAAkB;AACjBA,cAAAA,MAAM,GAAG,CAAT;AACA;AACD;AACD,SApF4D,CAsF7D;;;AACA3D,QAAAA,KAAK,CAAC2D,MAAN,GAAeA,MAAf;AACA3D,QAAAA,KAAK,CAAC6D,UAAN,GAAmB,CAAEU,gBAAgB,IAAIV,UAAtB,IAAqC,EAAxD,CAxF6D,CA0F7D;;AACA,YAAK1C,SAAL,EAAiB;AAChB5d,UAAAA,QAAQ,CAACe,WAAT,CAAsB2e,eAAtB,EAAuC,CAAEoB,OAAF,EAAWR,UAAX,EAAuB7D,KAAvB,CAAvC;AACA,SAFD,MAEO;AACNzc,UAAAA,QAAQ,CAACmB,UAAT,CAAqBue,eAArB,EAAsC,CAAEjD,KAAF,EAAS6D,UAAT,EAAqBnmD,KAArB,CAAtC;AACA,SA/F4D,CAiG7D;;;AACAsiD,QAAAA,KAAK,CAACoD,UAAN,CAAkBA,WAAlB;AACAA,QAAAA,WAAU,GAAGxkC,SAAb;;AAEA,YAAKmkC,WAAL,EAAmB;AAClBG,UAAAA,kBAAkB,CAACntD,OAAnB,CAA4BorD,SAAS,GAAG,aAAH,GAAmB,WAAxD,EACC,CAAEnB,KAAF,EAASrB,CAAT,EAAYwC,SAAS,GAAGkD,OAAH,GAAa3mD,KAAlC,CADD;AAEA,SAxG4D,CA0G7D;;;AACAylD,QAAAA,gBAAgB,CAAC5gB,QAAjB,CAA2B0gB,eAA3B,EAA4C,CAAEjD,KAAF,EAAS6D,UAAT,CAA5C;;AAEA,YAAKd,WAAL,EAAmB;AAClBG,UAAAA,kBAAkB,CAACntD,OAAnB,CAA4B,cAA5B,EAA4C,CAAEiqD,KAAF,EAASrB,CAAT,CAA5C,EADkB,CAGlB;;AACA,cAAK,CAAG,GAAEnvB,MAAM,CAACiyB,MAAjB,EAA4B;AAC3BjyB,YAAAA,MAAM,CAAC5gB,KAAP,CAAa7Y,OAAb,CAAsB,UAAtB;AACA;AACD;AACD;;AAED,aAAOiqD,KAAP;AACA,KA5hBa;AA8hBdyE,IAAAA,OAAO,EAAE,iBAAU7C,GAAV,EAAepuD,IAAf,EAAqBiN,QAArB,EAAgC;AACxC,aAAO+uB,MAAM,CAACnb,GAAP,CAAYutC,GAAZ,EAAiBpuD,IAAjB,EAAuBiN,QAAvB,EAAiC,MAAjC,CAAP;AACA,KAhiBa;AAkiBdikD,IAAAA,SAAS,EAAE,mBAAU9C,GAAV,EAAenhD,QAAf,EAA0B;AACpC,aAAO+uB,MAAM,CAACnb,GAAP,CAAYutC,GAAZ,EAAiBhjC,SAAjB,EAA4Bne,QAA5B,EAAsC,QAAtC,CAAP;AACA;AApiBa,GAAf;AAuiBA+uB,EAAAA,MAAM,CAACz7B,IAAP,CAAa,CAAE,KAAF,EAAS,MAAT,CAAb,EAAgC,UAAU49B,EAAV,EAAcjzB,MAAd,EAAuB;AACtD8wB,IAAAA,MAAM,CAAE9wB,MAAF,CAAN,GAAmB,UAAUkjD,GAAV,EAAepuD,IAAf,EAAqBiN,QAArB,EAA+BxD,IAA/B,EAAsC;AAExD;AACA,UAAK2xB,UAAU,CAAEp7B,IAAF,CAAf,EAA0B;AACzByJ,QAAAA,IAAI,GAAGA,IAAI,IAAIwD,QAAf;AACAA,QAAAA,QAAQ,GAAGjN,IAAX;AACAA,QAAAA,IAAI,GAAGorB,SAAP;AACA,OAPuD,CASxD;;;AACA,aAAO4Q,MAAM,CAACgzB,IAAP,CAAahzB,MAAM,CAACl8B,MAAP,CAAe;AAClCsuD,QAAAA,GAAG,EAAEA,GAD6B;AAElC3kD,QAAAA,IAAI,EAAEyB,MAF4B;AAGlCmhD,QAAAA,QAAQ,EAAE5iD,IAHwB;AAIlCzJ,QAAAA,IAAI,EAAEA,IAJ4B;AAKlC6wD,QAAAA,OAAO,EAAE5jD;AALyB,OAAf,EAMjB+uB,MAAM,CAACiB,aAAP,CAAsBmxB,GAAtB,KAA+BA,GANd,CAAb,CAAP;AAOA,KAjBD;AAkBA,GAnBD;AAqBApyB,EAAAA,MAAM,CAAC8yB,aAAP,CAAsB,UAAU3D,CAAV,EAAc;AACnC,QAAIvkD,CAAJ;;AACA,SAAMA,CAAN,IAAWukD,CAAC,CAACwF,OAAb,EAAuB;AACtB,UAAK/pD,CAAC,CAACiC,WAAF,OAAoB,cAAzB,EAA0C;AACzCsiD,QAAAA,CAAC,CAACsD,WAAF,GAAgBtD,CAAC,CAACwF,OAAF,CAAW/pD,CAAX,KAAkB,EAAlC;AACA;AACD;AACD,GAPD;;AAUAo1B,EAAAA,MAAM,CAACgiB,QAAP,GAAkB,UAAUoQ,GAAV,EAAexuD,OAAf,EAAwBi8B,GAAxB,EAA8B;AAC/C,WAAOG,MAAM,CAACgzB,IAAP,CAAa;AACnBZ,MAAAA,GAAG,EAAEA,GADc;AAGnB;AACA3kD,MAAAA,IAAI,EAAE,KAJa;AAKnB4iD,MAAAA,QAAQ,EAAE,QALS;AAMnBnpB,MAAAA,KAAK,EAAE,IANY;AAOnBsrB,MAAAA,KAAK,EAAE,KAPY;AAQnBn0B,MAAAA,MAAM,EAAE,KARW;AAUnB;AACA;AACA;AACAmzB,MAAAA,UAAU,EAAE;AACX,uBAAe,sBAAW,CAAE;AADjB,OAbO;AAgBnBO,MAAAA,UAAU,EAAE,oBAAUL,QAAV,EAAqB;AAChC1xB,QAAAA,MAAM,CAACuB,UAAP,CAAmBmwB,QAAnB,EAA6B9tD,OAA7B,EAAsCi8B,GAAtC;AACA;AAlBkB,KAAb,CAAP;AAoBA,GArBD;;AAwBAG,EAAAA,MAAM,CAAClwB,EAAP,CAAUhM,MAAV,CAAkB;AACjBqxD,IAAAA,OAAO,EAAE,iBAAUjtC,IAAV,EAAiB;AACzB,UAAI/d,IAAJ;;AAEA,UAAK,KAAM,CAAN,CAAL,EAAiB;AAChB,YAAKi1B,UAAU,CAAElX,IAAF,CAAf,EAA0B;AACzBA,UAAAA,IAAI,GAAGA,IAAI,CAAC1Y,IAAL,CAAW,KAAM,CAAN,CAAX,CAAP;AACA,SAHe,CAKhB;;;AACArF,QAAAA,IAAI,GAAG61B,MAAM,CAAE9X,IAAF,EAAQ,KAAM,CAAN,EAAUse,aAAlB,CAAN,CAAwC37B,EAAxC,CAA4C,CAA5C,EAAgDZ,KAAhD,CAAuD,IAAvD,CAAP;;AAEA,YAAK,KAAM,CAAN,EAAUimB,UAAf,EAA4B;AAC3B/lB,UAAAA,IAAI,CAAC6pB,YAAL,CAAmB,KAAM,CAAN,CAAnB;AACA;;AAED7pB,QAAAA,IAAI,CAACyE,GAAL,CAAU,YAAW;AACpB,cAAIR,IAAI,GAAG,IAAX;;AAEA,iBAAQA,IAAI,CAACgnD,iBAAb,EAAiC;AAChChnD,YAAAA,IAAI,GAAGA,IAAI,CAACgnD,iBAAZ;AACA;;AAED,iBAAOhnD,IAAP;AACA,SARD,EAQIqH,MARJ,CAQY,IARZ;AASA;;AAED,aAAO,IAAP;AACA,KA5BgB;AA8BjB4/C,IAAAA,SAAS,EAAE,mBAAUntC,IAAV,EAAiB;AAC3B,UAAKkX,UAAU,CAAElX,IAAF,CAAf,EAA0B;AACzB,eAAO,KAAK3jB,IAAL,CAAW,UAAUqG,CAAV,EAAc;AAC/Bo1B,UAAAA,MAAM,CAAE,IAAF,CAAN,CAAeq1B,SAAf,CAA0BntC,IAAI,CAAC1Y,IAAL,CAAW,IAAX,EAAiB5E,CAAjB,CAA1B;AACA,SAFM,CAAP;AAGA;;AAED,aAAO,KAAKrG,IAAL,CAAW,YAAW;AAC5B,YAAIssB,IAAI,GAAGmP,MAAM,CAAE,IAAF,CAAjB;AAAA,YACCoR,QAAQ,GAAGvgB,IAAI,CAACugB,QAAL,EADZ;;AAGA,YAAKA,QAAQ,CAACnsC,MAAd,EAAuB;AACtBmsC,UAAAA,QAAQ,CAAC+jB,OAAT,CAAkBjtC,IAAlB;AAEA,SAHD,MAGO;AACN2I,UAAAA,IAAI,CAACpb,MAAL,CAAayS,IAAb;AACA;AACD,OAVM,CAAP;AAWA,KAhDgB;AAkDjB/d,IAAAA,IAAI,EAAE,cAAU+d,IAAV,EAAiB;AACtB,UAAIotC,cAAc,GAAGl2B,UAAU,CAAElX,IAAF,CAA/B;AAEA,aAAO,KAAK3jB,IAAL,CAAW,UAAUqG,CAAV,EAAc;AAC/Bo1B,QAAAA,MAAM,CAAE,IAAF,CAAN,CAAem1B,OAAf,CAAwBG,cAAc,GAAGptC,IAAI,CAAC1Y,IAAL,CAAW,IAAX,EAAiB5E,CAAjB,CAAH,GAA0Bsd,IAAhE;AACA,OAFM,CAAP;AAGA,KAxDgB;AA0DjBhQ,IAAAA,MAAM,EAAE,gBAAU+nB,QAAV,EAAqB;AAC5B,WAAKp6B,MAAL,CAAao6B,QAAb,EAAwBp3B,GAAxB,CAA6B,MAA7B,EAAsCtE,IAAtC,CAA4C,YAAW;AACtDy7B,QAAAA,MAAM,CAAE,IAAF,CAAN,CAAeyiB,WAAf,CAA4B,KAAKzc,UAAjC;AACA,OAFD;AAGA,aAAO,IAAP;AACA;AA/DgB,GAAlB;;AAmEAhG,EAAAA,MAAM,CAACiK,IAAP,CAAY/F,OAAZ,CAAoBilB,MAApB,GAA6B,UAAU/6C,IAAV,EAAiB;AAC7C,WAAO,CAAC4xB,MAAM,CAACiK,IAAP,CAAY/F,OAAZ,CAAoBqxB,OAApB,CAA6BnnD,IAA7B,CAAR;AACA,GAFD;;AAGA4xB,EAAAA,MAAM,CAACiK,IAAP,CAAY/F,OAAZ,CAAoBqxB,OAApB,GAA8B,UAAUnnD,IAAV,EAAiB;AAC9C,WAAO,CAAC,EAAGA,IAAI,CAACgpB,WAAL,IAAoBhpB,IAAI,CAACy2C,YAAzB,IAAyCz2C,IAAI,CAAC84C,cAAL,GAAsBjiD,MAAlE,CAAR;AACA,GAFD;;AAOA+6B,EAAAA,MAAM,CAACgxB,YAAP,CAAoBwE,GAApB,GAA0B,YAAW;AACpC,QAAI;AACH,aAAO,IAAIjwD,MAAM,CAACkwD,cAAX,EAAP;AACA,KAFD,CAEE,OAAQ1uD,CAAR,EAAY,CAAE;AAChB,GAJD;;AAMA,MAAI2uD,gBAAgB,GAAG;AAErB;AACA,OAAG,GAHkB;AAKrB;AACA;AACA,UAAM;AAPe,GAAvB;AAAA,MASCC,YAAY,GAAG31B,MAAM,CAACgxB,YAAP,CAAoBwE,GAApB,EAThB;AAWAr2B,EAAAA,OAAO,CAACy2B,IAAR,GAAe,CAAC,CAACD,YAAF,IAAoB,qBAAqBA,YAAxD;AACAx2B,EAAAA,OAAO,CAAC6zB,IAAR,GAAe2C,YAAY,GAAG,CAAC,CAACA,YAAhC;AAEA31B,EAAAA,MAAM,CAAC+yB,aAAP,CAAsB,UAAUnvD,OAAV,EAAoB;AACzC,QAAIqN,SAAJ,EAAc4kD,aAAd,CADyC,CAGzC;;;AACA,QAAK12B,OAAO,CAACy2B,IAAR,IAAgBD,YAAY,IAAI,CAAC/xD,OAAO,CAAC2wD,WAA9C,EAA4D;AAC3D,aAAO;AACNO,QAAAA,IAAI,EAAE,cAAUH,OAAV,EAAmB5jC,QAAnB,EAA8B;AACnC,cAAInmB,CAAJ;AAAA,cACC4qD,GAAG,GAAG5xD,OAAO,CAAC4xD,GAAR,EADP;AAGAA,UAAAA,GAAG,CAACtqD,IAAJ,CACCtH,OAAO,CAAC6J,IADT,EAEC7J,OAAO,CAACwuD,GAFT,EAGCxuD,OAAO,CAAC4uD,KAHT,EAIC5uD,OAAO,CAACkyD,QAJT,EAKClyD,OAAO,CAACqpC,QALT,EAJmC,CAYnC;;AACA,cAAKrpC,OAAO,CAACmyD,SAAb,EAAyB;AACxB,iBAAMnrD,CAAN,IAAWhH,OAAO,CAACmyD,SAAnB,EAA+B;AAC9BP,cAAAA,GAAG,CAAE5qD,CAAF,CAAH,GAAWhH,OAAO,CAACmyD,SAAR,CAAmBnrD,CAAnB,CAAX;AACA;AACD,WAjBkC,CAmBnC;;;AACA,cAAKhH,OAAO,CAAC0tD,QAAR,IAAoBkE,GAAG,CAACtB,gBAA7B,EAAgD;AAC/CsB,YAAAA,GAAG,CAACtB,gBAAJ,CAAsBtwD,OAAO,CAAC0tD,QAA9B;AACA,WAtBkC,CAwBnC;AACA;AACA;AACA;AACA;;;AACA,cAAK,CAAC1tD,OAAO,CAAC2wD,WAAT,IAAwB,CAACI,OAAO,CAAE,kBAAF,CAArC,EAA8D;AAC7DA,YAAAA,OAAO,CAAE,kBAAF,CAAP,GAAgC,gBAAhC;AACA,WA/BkC,CAiCnC;;;AACA,eAAM/pD,CAAN,IAAW+pD,OAAX,EAAqB;AACpBa,YAAAA,GAAG,CAACvB,gBAAJ,CAAsBrpD,CAAtB,EAAyB+pD,OAAO,CAAE/pD,CAAF,CAAhC;AACA,WApCkC,CAsCnC;;;AACAqG,UAAAA,SAAQ,GAAG,kBAAUxD,IAAV,EAAiB;AAC3B,mBAAO,YAAW;AACjB,kBAAKwD,SAAL,EAAgB;AACfA,gBAAAA,SAAQ,GAAG4kD,aAAa,GAAGL,GAAG,CAACQ,MAAJ,GAC1BR,GAAG,CAACS,OAAJ,GAAcT,GAAG,CAACU,OAAJ,GAAcV,GAAG,CAACW,SAAJ,GAC3BX,GAAG,CAACY,kBAAJ,GAAyB,IAF3B;;AAIA,oBAAK3oD,IAAI,KAAK,OAAd,EAAwB;AACvB+nD,kBAAAA,GAAG,CAACpB,KAAJ;AACA,iBAFD,MAEO,IAAK3mD,IAAI,KAAK,OAAd,EAAwB;AAE9B;AACA;AACA;AACA,sBAAK,OAAO+nD,GAAG,CAACrB,MAAX,KAAsB,QAA3B,EAAsC;AACrCpjC,oBAAAA,QAAQ,CAAE,CAAF,EAAK,OAAL,CAAR;AACA,mBAFD,MAEO;AACNA,oBAAAA,QAAQ,EAEP;AACAykC,oBAAAA,GAAG,CAACrB,MAHG,EAIPqB,GAAG,CAACnB,UAJG,CAAR;AAMA;AACD,iBAfM,MAeA;AACNtjC,kBAAAA,QAAQ,CACP2kC,gBAAgB,CAAEF,GAAG,CAACrB,MAAN,CAAhB,IAAkCqB,GAAG,CAACrB,MAD/B,EAEPqB,GAAG,CAACnB,UAFG,EAIP;AACA;AACA;AACA,mBAAEmB,GAAG,CAACa,YAAJ,IAAoB,MAAtB,MAAmC,MAAnC,IACA,OAAOb,GAAG,CAACc,YAAX,KAA4B,QAD5B,GAEC;AAAEC,oBAAAA,MAAM,EAAEf,GAAG,CAAC9D;AAAd,mBAFD,GAGC;AAAEv9B,oBAAAA,IAAI,EAAEqhC,GAAG,CAACc;AAAZ,mBAVM,EAWPd,GAAG,CAACxB,qBAAJ,EAXO,CAAR;AAaA;AACD;AACD,aAvCD;AAwCA,WAzCD,CAvCmC,CAkFnC;;;AACAwB,UAAAA,GAAG,CAACQ,MAAJ,GAAa/kD,SAAQ,EAArB;AACA4kD,UAAAA,aAAa,GAAGL,GAAG,CAACS,OAAJ,GAAcT,GAAG,CAACW,SAAJ,GAAgBllD,SAAQ,CAAE,OAAF,CAAtD,CApFmC,CAsFnC;AACA;AACA;;AACA,cAAKukD,GAAG,CAACU,OAAJ,KAAgB9mC,SAArB,EAAiC;AAChComC,YAAAA,GAAG,CAACU,OAAJ,GAAcL,aAAd;AACA,WAFD,MAEO;AACNL,YAAAA,GAAG,CAACY,kBAAJ,GAAyB,YAAW;AAEnC;AACA,kBAAKZ,GAAG,CAAC7hD,UAAJ,KAAmB,CAAxB,EAA4B;AAE3B;AACA;AACA;AACA;AACApO,gBAAAA,MAAM,CAAC8K,UAAP,CAAmB,YAAW;AAC7B,sBAAKY,SAAL,EAAgB;AACf4kD,oBAAAA,aAAa;AACb;AACD,iBAJD;AAKA;AACD,aAfD;AAgBA,WA5GkC,CA8GnC;;;AACA5kD,UAAAA,SAAQ,GAAGA,SAAQ,CAAE,OAAF,CAAnB;;AAEA,cAAI;AAEH;AACAukD,YAAAA,GAAG,CAACV,IAAJ,CAAUlxD,OAAO,CAAC6wD,UAAR,IAAsB7wD,OAAO,CAACI,IAA9B,IAAsC,IAAhD;AACA,WAJD,CAIE,OAAQ+C,CAAR,EAAY;AAEb;AACA,gBAAKkK,SAAL,EAAgB;AACf,oBAAMlK,CAAN;AACA;AACD;AACD,SA7HK;AA+HNqtD,QAAAA,KAAK,EAAE,iBAAW;AACjB,cAAKnjD,SAAL,EAAgB;AACfA,YAAAA,SAAQ;AACR;AACD;AAnIK,OAAP;AAqIA;AACD,GA3ID,EA3tTiF,CA22TjF;;AACA+uB,EAAAA,MAAM,CAAC8yB,aAAP,CAAsB,UAAU3D,CAAV,EAAc;AACnC,QAAKA,CAAC,CAACoF,WAAP,EAAqB;AACpBpF,MAAAA,CAAC,CAAC/d,QAAF,CAAWxd,MAAX,GAAoB,KAApB;AACA;AACD,GAJD,EA52TiF,CAk3TjF;;AACAoM,EAAAA,MAAM,CAAC4yB,SAAP,CAAkB;AACjBF,IAAAA,OAAO,EAAE;AACR9+B,MAAAA,MAAM,EAAE,8CACP;AAFO,KADQ;AAKjBwd,IAAAA,QAAQ,EAAE;AACTxd,MAAAA,MAAM,EAAE;AADC,KALO;AAQjB49B,IAAAA,UAAU,EAAE;AACX,qBAAe,oBAAUr9B,IAAV,EAAiB;AAC/B6L,QAAAA,MAAM,CAACuB,UAAP,CAAmBpN,IAAnB;AACA,eAAOA,IAAP;AACA;AAJU;AARK,GAAlB,EAn3TiF,CAm4TjF;;AACA6L,EAAAA,MAAM,CAAC8yB,aAAP,CAAsB,QAAtB,EAAgC,UAAU3D,CAAV,EAAc;AAC7C,QAAKA,CAAC,CAACjoB,KAAF,KAAY9X,SAAjB,EAA6B;AAC5B+/B,MAAAA,CAAC,CAACjoB,KAAF,GAAU,KAAV;AACA;;AACD,QAAKioB,CAAC,CAACoF,WAAP,EAAqB;AACpBpF,MAAAA,CAAC,CAAC1hD,IAAF,GAAS,KAAT;AACA;AACD,GAPD,EAp4TiF,CA64TjF;;AACAuyB,EAAAA,MAAM,CAAC+yB,aAAP,CAAsB,QAAtB,EAAgC,UAAU5D,CAAV,EAAc;AAE7C;AACA,QAAKA,CAAC,CAACoF,WAAF,IAAiBpF,CAAC,CAACqH,WAAxB,EAAsC;AACrC,UAAI5iC,MAAJ,EAAY3iB,UAAZ;;AACA,aAAO;AACN6jD,QAAAA,IAAI,EAAE,cAAU/1C,CAAV,EAAagS,QAAb,EAAwB;AAC7B6C,UAAAA,MAAM,GAAGoM,MAAM,CAAE,UAAF,CAAN,CACPj7B,IADO,CACDoqD,CAAC,CAACqH,WAAF,IAAiB,EADhB,EAEPnpD,IAFO,CAED;AAAEopD,YAAAA,OAAO,EAAEtH,CAAC,CAACuH,aAAb;AAA4BplC,YAAAA,GAAG,EAAE69B,CAAC,CAACiD;AAAnC,WAFC,EAGPtrD,EAHO,CAGH,YAHG,EAGWmK,UAAQ,GAAG,kBAAU0lD,GAAV,EAAgB;AAC7C/iC,YAAAA,MAAM,CAAC/nB,MAAP;AACAoF,YAAAA,UAAQ,GAAG,IAAX;;AACA,gBAAK0lD,GAAL,EAAW;AACV5lC,cAAAA,QAAQ,CAAE4lC,GAAG,CAAClpD,IAAJ,KAAa,OAAb,GAAuB,GAAvB,GAA6B,GAA/B,EAAoCkpD,GAAG,CAAClpD,IAAxC,CAAR;AACA;AACD,WATO,CAAT,CAD6B,CAY7B;;AACA0F,UAAAA,QAAQ,CAAC2gB,IAAT,CAAcC,WAAd,CAA2BH,MAAM,CAAE,CAAF,CAAjC;AACA,SAfK;AAgBNwgC,QAAAA,KAAK,EAAE,iBAAW;AACjB,cAAKnjD,UAAL,EAAgB;AACfA,YAAAA,UAAQ;AACR;AACD;AApBK,OAAP;AAsBA;AACD,GA5BD;AAiCA,MAAI2lD,YAAY,GAAG,EAAnB;AAAA,MACCC,MAAM,GAAG,mBADV,CA/6TiF,CAk7TjF;;AACA72B,EAAAA,MAAM,CAAC4yB,SAAP,CAAkB;AACjBkE,IAAAA,KAAK,EAAE,UADU;AAEjBC,IAAAA,aAAa,EAAE,yBAAW;AACzB,UAAI9lD,QAAQ,GAAG2lD,YAAY,CAAChzB,GAAb,MAAwB5D,MAAM,CAACkB,OAAP,GAAiB,GAAjB,GAAyB1B,KAAK,CAACwC,IAAN,EAAhE;AACA,WAAM/wB,QAAN,IAAmB,IAAnB;AACA,aAAOA,QAAP;AACA;AANgB,GAAlB,EAn7TiF,CA47TjF;;AACA+uB,EAAAA,MAAM,CAAC8yB,aAAP,CAAsB,YAAtB,EAAoC,UAAU3D,CAAV,EAAa6H,gBAAb,EAA+BxG,KAA/B,EAAuC;AAE1E,QAAIyG,YAAJ;AAAA,QAAkBC,WAAlB;AAAA,QAA+BC,iBAA/B;AAAA,QACCC,QAAQ,GAAGjI,CAAC,CAAC2H,KAAF,KAAY,KAAZ,KAAuBD,MAAM,CAAChmD,IAAP,CAAas+C,CAAC,CAACiD,GAAf,IACjC,KADiC,GAEjC,OAAOjD,CAAC,CAACnrD,IAAT,KAAkB,QAAlB,IACC,CAAEmrD,CAAC,CAACsD,WAAF,IAAiB,EAAnB,EACEvlD,OADF,CACW,mCADX,MACqD,CAFtD,IAGC2pD,MAAM,CAAChmD,IAAP,CAAas+C,CAAC,CAACnrD,IAAf,CAHD,IAG0B,MALhB,CADZ,CAF0E,CAW1E;;AACA,QAAKozD,QAAQ,IAAIjI,CAAC,CAACmB,SAAF,CAAa,CAAb,MAAqB,OAAtC,EAAgD;AAE/C;AACA2G,MAAAA,YAAY,GAAG9H,CAAC,CAAC4H,aAAF,GAAkB33B,UAAU,CAAE+vB,CAAC,CAAC4H,aAAJ,CAAV,GAChC5H,CAAC,CAAC4H,aAAF,EADgC,GAEhC5H,CAAC,CAAC4H,aAFH,CAH+C,CAO/C;;AACA,UAAKK,QAAL,EAAgB;AACfjI,QAAAA,CAAC,CAAEiI,QAAF,CAAD,GAAgBjI,CAAC,CAAEiI,QAAF,CAAD,CAAc/kD,OAAd,CAAuBwkD,MAAvB,EAA+B,OAAOI,YAAtC,CAAhB;AACA,OAFD,MAEO,IAAK9H,CAAC,CAAC2H,KAAF,KAAY,KAAjB,EAAyB;AAC/B3H,QAAAA,CAAC,CAACiD,GAAF,IAAS,CAAE5D,MAAM,CAAC39C,IAAP,CAAas+C,CAAC,CAACiD,GAAf,IAAuB,GAAvB,GAA6B,GAA/B,IAAuCjD,CAAC,CAAC2H,KAAzC,GAAiD,GAAjD,GAAuDG,YAAhE;AACA,OAZ8C,CAc/C;;;AACA9H,MAAAA,CAAC,CAACqC,UAAF,CAAc,aAAd,IAAgC,YAAW;AAC1C,YAAK,CAAC2F,iBAAN,EAA0B;AACzBn3B,UAAAA,MAAM,CAAC9xB,KAAP,CAAc+oD,YAAY,GAAG,iBAA7B;AACA;;AACD,eAAOE,iBAAiB,CAAE,CAAF,CAAxB;AACA,OALD,CAf+C,CAsB/C;;;AACAhI,MAAAA,CAAC,CAACmB,SAAF,CAAa,CAAb,IAAmB,MAAnB,CAvB+C,CAyB/C;;AACA4G,MAAAA,WAAW,GAAG3xD,MAAM,CAAE0xD,YAAF,CAApB;;AACA1xD,MAAAA,MAAM,CAAE0xD,YAAF,CAAN,GAAyB,YAAW;AACnCE,QAAAA,iBAAiB,GAAG1nD,SAApB;AACA,OAFD,CA3B+C,CA+B/C;;;AACA+gD,MAAAA,KAAK,CAAC1c,MAAN,CAAc,YAAW;AAExB;AACA,YAAKojB,WAAW,KAAK9nC,SAArB,EAAiC;AAChC4Q,UAAAA,MAAM,CAAEz6B,MAAF,CAAN,CAAiBsnD,UAAjB,CAA6BoK,YAA7B,EADgC,CAGjC;AACC,SAJD,MAIO;AACN1xD,UAAAA,MAAM,CAAE0xD,YAAF,CAAN,GAAyBC,WAAzB;AACA,SATuB,CAWxB;;;AACA,YAAK/H,CAAC,CAAE8H,YAAF,CAAN,EAAyB;AAExB;AACA9H,UAAAA,CAAC,CAAC4H,aAAF,GAAkBC,gBAAgB,CAACD,aAAnC,CAHwB,CAKxB;;AACAH,UAAAA,YAAY,CAAC7pD,IAAb,CAAmBkqD,YAAnB;AACA,SAnBuB,CAqBxB;;;AACA,YAAKE,iBAAiB,IAAI/3B,UAAU,CAAE83B,WAAF,CAApC,EAAsD;AACrDA,UAAAA,WAAW,CAAEC,iBAAiB,CAAE,CAAF,CAAnB,CAAX;AACA;;AAEDA,QAAAA,iBAAiB,GAAGD,WAAW,GAAG9nC,SAAlC;AACA,OA3BD,EAhC+C,CA6D/C;;AACA,aAAO,QAAP;AACA;AACD,GA5ED,EA77TiF,CA8gUjF;AACA;AACA;AACA;AACA;;AACA+P,EAAAA,OAAO,CAACk4B,kBAAR,GAA+B,YAAW;AACzC,QAAIv9C,IAAI,GAAG3G,QAAQ,CAACmkD,cAAT,CAAwBD,kBAAxB,CAA4C,EAA5C,EAAiDv9C,IAA5D;AACAA,IAAAA,IAAI,CAACmvB,SAAL,GAAiB,4BAAjB;AACA,WAAOnvB,IAAI,CAACksB,UAAL,CAAgB/gC,MAAhB,KAA2B,CAAlC;AACA,GAJ4B,EAA7B,CAnhUiF,CA0hUjF;AACA;AACA;AACA;;;AACA+6B,EAAAA,MAAM,CAACgR,SAAP,GAAmB,UAAUhtC,IAAV,EAAgBoM,OAAhB,EAAyBmnD,WAAzB,EAAuC;AACzD,QAAK,OAAOvzD,IAAP,KAAgB,QAArB,EAAgC;AAC/B,aAAO,EAAP;AACA;;AACD,QAAK,OAAOoM,OAAP,KAAmB,SAAxB,EAAoC;AACnCmnD,MAAAA,WAAW,GAAGnnD,OAAd;AACAA,MAAAA,OAAO,GAAG,KAAV;AACA;;AAED,QAAIyM,IAAJ,EAAU26C,MAAV,EAAkB3b,OAAlB;;AAEA,QAAK,CAACzrC,OAAN,EAAgB;AAEf;AACA;AACA,UAAK+uB,OAAO,CAACk4B,kBAAb,EAAkC;AACjCjnD,QAAAA,OAAO,GAAG+C,QAAQ,CAACmkD,cAAT,CAAwBD,kBAAxB,CAA4C,EAA5C,CAAV,CADiC,CAGjC;AACA;AACA;;AACAx6C,QAAAA,IAAI,GAAGzM,OAAO,CAACgD,aAAR,CAAuB,MAAvB,CAAP;AACAyJ,QAAAA,IAAI,CAAC2vB,IAAL,GAAYr5B,QAAQ,CAAC3N,QAAT,CAAkBgnC,IAA9B;AACAp8B,QAAAA,OAAO,CAAC0jB,IAAR,CAAaC,WAAb,CAA0BlX,IAA1B;AACA,OATD,MASO;AACNzM,QAAAA,OAAO,GAAG+C,QAAV;AACA;AACD;;AAEDqkD,IAAAA,MAAM,GAAG7mB,UAAU,CAAC3+B,IAAX,CAAiBhO,IAAjB,CAAT;AACA63C,IAAAA,OAAO,GAAG,CAAC0b,WAAD,IAAgB,EAA1B,CA9ByD,CAgCzD;;AACA,QAAKC,MAAL,EAAc;AACb,aAAO,CAAEpnD,OAAO,CAACgD,aAAR,CAAuBokD,MAAM,CAAE,CAAF,CAA7B,CAAF,CAAP;AACA;;AAEDA,IAAAA,MAAM,GAAG5b,aAAa,CAAE,CAAE53C,IAAF,CAAF,EAAYoM,OAAZ,EAAqByrC,OAArB,CAAtB;;AAEA,QAAKA,OAAO,IAAIA,OAAO,CAAC52C,MAAxB,EAAiC;AAChC+6B,MAAAA,MAAM,CAAE6b,OAAF,CAAN,CAAkBhwC,MAAlB;AACA;;AAED,WAAOm0B,MAAM,CAACO,KAAP,CAAc,EAAd,EAAkBi3B,MAAM,CAACxxB,UAAzB,CAAP;AACA,GA5CD;AA+CA;AACA;AACA;;;AACAhG,EAAAA,MAAM,CAAClwB,EAAP,CAAUgvC,IAAV,GAAiB,UAAUsT,GAAV,EAAeqF,MAAf,EAAuBxmD,QAAvB,EAAkC;AAClD,QAAIgvB,QAAJ;AAAA,QAAcxyB,IAAd;AAAA,QAAoBikD,QAApB;AAAA,QACC7gC,IAAI,GAAG,IADR;AAAA,QAEChqB,GAAG,GAAGurD,GAAG,CAACllD,OAAJ,CAAa,GAAb,CAFP;;AAIA,QAAKrG,GAAG,GAAG,CAAC,CAAZ,EAAgB;AACfo5B,MAAAA,QAAQ,GAAG+sB,gBAAgB,CAAEoF,GAAG,CAAC7iD,KAAJ,CAAW1I,GAAX,CAAF,CAA3B;AACAurD,MAAAA,GAAG,GAAGA,GAAG,CAAC7iD,KAAJ,CAAW,CAAX,EAAc1I,GAAd,CAAN;AACA,KARiD,CAUlD;;;AACA,QAAKu4B,UAAU,CAAEq4B,MAAF,CAAf,EAA4B;AAE3B;AACAxmD,MAAAA,QAAQ,GAAGwmD,MAAX;AACAA,MAAAA,MAAM,GAAGroC,SAAT,CAJ2B,CAM5B;AACC,KAPD,MAOO,IAAKqoC,MAAM,IAAI,QAAOA,MAAP,MAAkB,QAAjC,EAA4C;AAClDhqD,MAAAA,IAAI,GAAG,MAAP;AACA,KApBiD,CAsBlD;;;AACA,QAAKojB,IAAI,CAAC5rB,MAAL,GAAc,CAAnB,EAAuB;AACtB+6B,MAAAA,MAAM,CAACgzB,IAAP,CAAa;AACZZ,QAAAA,GAAG,EAAEA,GADO;AAGZ;AACA;AACA;AACA3kD,QAAAA,IAAI,EAAEA,IAAI,IAAI,KANF;AAOZ4iD,QAAAA,QAAQ,EAAE,MAPE;AAQZrsD,QAAAA,IAAI,EAAEyzD;AARM,OAAb,EASIp0B,IATJ,CASU,UAAUizB,YAAV,EAAyB;AAElC;AACA5E,QAAAA,QAAQ,GAAGjiD,SAAX;AAEAohB,QAAAA,IAAI,CAAC3I,IAAL,CAAW+X,QAAQ,GAElB;AACA;AACAD,QAAAA,MAAM,CAAE,OAAF,CAAN,CAAkBvqB,MAAlB,CAA0BuqB,MAAM,CAACgR,SAAP,CAAkBslB,YAAlB,CAA1B,EAA6DxxD,IAA7D,CAAmEm7B,QAAnE,CAJkB,GAMlB;AACAq2B,QAAAA,YAPD,EALkC,CAcnC;AACA;AACA;AACC,OA1BD,EA0BIxiB,MA1BJ,CA0BY7iC,QAAQ,IAAI,UAAUu/C,KAAV,EAAiB2D,MAAjB,EAA0B;AACjDtjC,QAAAA,IAAI,CAACtsB,IAAL,CAAW,YAAW;AACrB0M,UAAAA,QAAQ,CAACtB,KAAT,CAAgB,IAAhB,EAAsB+hD,QAAQ,IAAI,CAAElB,KAAK,CAAC8F,YAAR,EAAsBnC,MAAtB,EAA8B3D,KAA9B,CAAlC;AACA,SAFD;AAGA,OA9BD;AA+BA;;AAED,WAAO,IAAP;AACA,GA1DD;;AA+DAxwB,EAAAA,MAAM,CAACiK,IAAP,CAAY/F,OAAZ,CAAoBwzB,QAApB,GAA+B,UAAUtpD,IAAV,EAAiB;AAC/C,WAAO4xB,MAAM,CAACU,IAAP,CAAaV,MAAM,CAACyrB,MAApB,EAA4B,UAAU37C,EAAV,EAAe;AACjD,aAAO1B,IAAI,KAAK0B,EAAE,CAAC1B,IAAnB;AACA,KAFM,EAEHnJ,MAFJ;AAGA,GAJD;;AASA+6B,EAAAA,MAAM,CAAC/5B,MAAP,GAAgB;AACf0xD,IAAAA,SAAS,EAAE,mBAAUvpD,IAAV,EAAgBxK,OAAhB,EAAyBgH,CAAzB,EAA6B;AACvC,UAAIgtD,WAAJ;AAAA,UAAiBC,OAAjB;AAAA,UAA0BC,SAA1B;AAAA,UAAqCC,MAArC;AAAA,UAA6CC,SAA7C;AAAA,UAAwDC,UAAxD;AAAA,UAAoEC,iBAApE;AAAA,UACCp/C,QAAQ,GAAGknB,MAAM,CAACz2B,GAAP,CAAY6E,IAAZ,EAAkB,UAAlB,CADZ;AAAA,UAEC+pD,OAAO,GAAGn4B,MAAM,CAAE5xB,IAAF,CAFjB;AAAA,UAGCkxC,KAAK,GAAG,EAHT,CADuC,CAMvC;;AACA,UAAKxmC,QAAQ,KAAK,QAAlB,EAA6B;AAC5B1K,QAAAA,IAAI,CAACmF,KAAL,CAAWuF,QAAX,GAAsB,UAAtB;AACA;;AAEDk/C,MAAAA,SAAS,GAAGG,OAAO,CAAClyD,MAAR,EAAZ;AACA6xD,MAAAA,SAAS,GAAG93B,MAAM,CAACz2B,GAAP,CAAY6E,IAAZ,EAAkB,KAAlB,CAAZ;AACA6pD,MAAAA,UAAU,GAAGj4B,MAAM,CAACz2B,GAAP,CAAY6E,IAAZ,EAAkB,MAAlB,CAAb;AACA8pD,MAAAA,iBAAiB,GAAG,CAAEp/C,QAAQ,KAAK,UAAb,IAA2BA,QAAQ,KAAK,OAA1C,KACnB,CAAEg/C,SAAS,GAAGG,UAAd,EAA2B/qD,OAA3B,CAAoC,MAApC,IAA+C,CAAC,CADjD,CAduC,CAiBvC;AACA;;AACA,UAAKgrD,iBAAL,EAAyB;AACxBN,QAAAA,WAAW,GAAGO,OAAO,CAACr/C,QAAR,EAAd;AACAi/C,QAAAA,MAAM,GAAGH,WAAW,CAACxxD,GAArB;AACAyxD,QAAAA,OAAO,GAAGD,WAAW,CAAC/wC,IAAtB;AAEA,OALD,MAKO;AACNkxC,QAAAA,MAAM,GAAG3lD,UAAU,CAAE0lD,SAAF,CAAV,IAA2B,CAApC;AACAD,QAAAA,OAAO,GAAGzlD,UAAU,CAAE6lD,UAAF,CAAV,IAA4B,CAAtC;AACA;;AAED,UAAK74B,UAAU,CAAEx7B,OAAF,CAAf,EAA6B;AAE5B;AACAA,QAAAA,OAAO,GAAGA,OAAO,CAAC4L,IAAR,CAAcpB,IAAd,EAAoBxD,CAApB,EAAuBo1B,MAAM,CAACl8B,MAAP,CAAe,EAAf,EAAmBk0D,SAAnB,CAAvB,CAAV;AACA;;AAED,UAAKp0D,OAAO,CAACwC,GAAR,IAAe,IAApB,EAA2B;AAC1Bk5C,QAAAA,KAAK,CAACl5C,GAAN,GAAcxC,OAAO,CAACwC,GAAR,GAAc4xD,SAAS,CAAC5xD,GAA1B,GAAkC2xD,MAA9C;AACA;;AACD,UAAKn0D,OAAO,CAACijB,IAAR,IAAgB,IAArB,EAA4B;AAC3By4B,QAAAA,KAAK,CAACz4B,IAAN,GAAejjB,OAAO,CAACijB,IAAR,GAAemxC,SAAS,CAACnxC,IAA3B,GAAoCgxC,OAAjD;AACA;;AAED,UAAK,WAAWj0D,OAAhB,EAA0B;AACzBA,QAAAA,OAAO,CAACw0D,KAAR,CAAc5oD,IAAd,CAAoBpB,IAApB,EAA0BkxC,KAA1B;AAEA,OAHD,MAGO;AACN6Y,QAAAA,OAAO,CAAC5uD,GAAR,CAAa+1C,KAAb;AACA;AACD;AAjDc,GAAhB;AAoDAtf,EAAAA,MAAM,CAAClwB,EAAP,CAAUhM,MAAV,CAAkB;AAEjB;AACAmC,IAAAA,MAAM,EAAE,gBAAUrC,OAAV,EAAoB;AAE3B;AACA,UAAK6L,SAAS,CAACxK,MAAf,EAAwB;AACvB,eAAOrB,OAAO,KAAKwrB,SAAZ,GACN,IADM,GAEN,KAAK7qB,IAAL,CAAW,UAAUqG,CAAV,EAAc;AACxBo1B,UAAAA,MAAM,CAAC/5B,MAAP,CAAc0xD,SAAd,CAAyB,IAAzB,EAA+B/zD,OAA/B,EAAwCgH,CAAxC;AACA,SAFD,CAFD;AAKA;;AAED,UAAIolB,IAAJ;AAAA,UAAUqoC,GAAV;AAAA,UACCjqD,IAAI,GAAG,KAAM,CAAN,CADR;;AAGA,UAAK,CAACA,IAAN,EAAa;AACZ;AACA,OAhB0B,CAkB3B;AACA;AACA;AACA;;;AACA,UAAK,CAACA,IAAI,CAAC84C,cAAL,GAAsBjiD,MAA5B,EAAqC;AACpC,eAAO;AAAEmB,UAAAA,GAAG,EAAE,CAAP;AAAUygB,UAAAA,IAAI,EAAE;AAAhB,SAAP;AACA,OAxB0B,CA0B3B;;;AACAmJ,MAAAA,IAAI,GAAG5hB,IAAI,CAAC4J,qBAAL,EAAP;AACAqgD,MAAAA,GAAG,GAAGjqD,IAAI,CAACo4B,aAAL,CAAmBgC,WAAzB;AACA,aAAO;AACNpiC,QAAAA,GAAG,EAAE4pB,IAAI,CAAC5pB,GAAL,GAAWiyD,GAAG,CAACruC,WADd;AAENnD,QAAAA,IAAI,EAAEmJ,IAAI,CAACnJ,IAAL,GAAYwxC,GAAG,CAAC/nC;AAFhB,OAAP;AAIA,KApCgB;AAsCjB;AACA;AACAxX,IAAAA,QAAQ,EAAE,oBAAW;AACpB,UAAK,CAAC,KAAM,CAAN,CAAN,EAAkB;AACjB;AACA;;AAED,UAAIw/C,YAAJ;AAAA,UAAkBryD,MAAlB;AAAA,UAA0B45B,GAA1B;AAAA,UACCzxB,IAAI,GAAG,KAAM,CAAN,CADR;AAAA,UAECmqD,YAAY,GAAG;AAAEnyD,QAAAA,GAAG,EAAE,CAAP;AAAUygB,QAAAA,IAAI,EAAE;AAAhB,OAFhB,CALoB,CASpB;;AACA,UAAKmZ,MAAM,CAACz2B,GAAP,CAAY6E,IAAZ,EAAkB,UAAlB,MAAmC,OAAxC,EAAkD;AAEjD;AACAnI,QAAAA,MAAM,GAAGmI,IAAI,CAAC4J,qBAAL,EAAT;AAEA,OALD,MAKO;AACN/R,QAAAA,MAAM,GAAG,KAAKA,MAAL,EAAT,CADM,CAGN;AACA;;AACA45B,QAAAA,GAAG,GAAGzxB,IAAI,CAACo4B,aAAX;AACA8xB,QAAAA,YAAY,GAAGlqD,IAAI,CAACkqD,YAAL,IAAqBz4B,GAAG,CAACrV,eAAxC;;AACA,eAAQ8tC,YAAY,KACjBA,YAAY,KAAKz4B,GAAG,CAAC/lB,IAArB,IAA6Bw+C,YAAY,KAAKz4B,GAAG,CAACrV,eADjC,CAAZ,IAEPwV,MAAM,CAACz2B,GAAP,CAAY+uD,YAAZ,EAA0B,UAA1B,MAA2C,QAF5C,EAEuD;AAEtDA,UAAAA,YAAY,GAAGA,YAAY,CAACpoC,UAA5B;AACA;;AACD,YAAKooC,YAAY,IAAIA,YAAY,KAAKlqD,IAAjC,IAAyCkqD,YAAY,CAACj5B,QAAb,KAA0B,CAAxE,EAA4E;AAE3E;AACAk5B,UAAAA,YAAY,GAAGv4B,MAAM,CAAEs4B,YAAF,CAAN,CAAuBryD,MAAvB,EAAf;AACAsyD,UAAAA,YAAY,CAACnyD,GAAb,IAAoB45B,MAAM,CAACz2B,GAAP,CAAY+uD,YAAZ,EAA0B,gBAA1B,EAA4C,IAA5C,CAApB;AACAC,UAAAA,YAAY,CAAC1xC,IAAb,IAAqBmZ,MAAM,CAACz2B,GAAP,CAAY+uD,YAAZ,EAA0B,iBAA1B,EAA6C,IAA7C,CAArB;AACA;AACD,OAnCmB,CAqCpB;;;AACA,aAAO;AACNlyD,QAAAA,GAAG,EAAEH,MAAM,CAACG,GAAP,GAAamyD,YAAY,CAACnyD,GAA1B,GAAgC45B,MAAM,CAACz2B,GAAP,CAAY6E,IAAZ,EAAkB,WAAlB,EAA+B,IAA/B,CAD/B;AAENyY,QAAAA,IAAI,EAAE5gB,MAAM,CAAC4gB,IAAP,GAAc0xC,YAAY,CAAC1xC,IAA3B,GAAkCmZ,MAAM,CAACz2B,GAAP,CAAY6E,IAAZ,EAAkB,YAAlB,EAAgC,IAAhC;AAFlC,OAAP;AAIA,KAlFgB;AAoFjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACAkqD,IAAAA,YAAY,EAAE,wBAAW;AACxB,aAAO,KAAK1pD,GAAL,CAAU,YAAW;AAC3B,YAAI0pD,YAAY,GAAG,KAAKA,YAAxB;;AAEA,eAAQA,YAAY,IAAIt4B,MAAM,CAACz2B,GAAP,CAAY+uD,YAAZ,EAA0B,UAA1B,MAA2C,QAAnE,EAA8E;AAC7EA,UAAAA,YAAY,GAAGA,YAAY,CAACA,YAA5B;AACA;;AAED,eAAOA,YAAY,IAAI9tC,eAAvB;AACA,OARM,CAAP;AASA;AAxGgB,GAAlB,EA5sUiF,CAuzUjF;;AACAwV,EAAAA,MAAM,CAACz7B,IAAP,CAAa;AAAEkkD,IAAAA,UAAU,EAAE,aAAd;AAA6BtiD,IAAAA,SAAS,EAAE;AAAxC,GAAb,EAAsE,UAAU+I,MAAV,EAAkB7B,IAAlB,EAAyB;AAC9F,QAAIjH,GAAG,GAAG,kBAAkBiH,IAA5B;;AAEA2yB,IAAAA,MAAM,CAAClwB,EAAP,CAAWZ,MAAX,IAAsB,UAAUkO,GAAV,EAAgB;AACrC,aAAOk5B,MAAM,CAAE,IAAF,EAAQ,UAAUloC,IAAV,EAAgBc,MAAhB,EAAwBkO,GAAxB,EAA8B;AAElD;AACA,YAAIi7C,GAAJ;;AACA,YAAK/4B,QAAQ,CAAElxB,IAAF,CAAb,EAAwB;AACvBiqD,UAAAA,GAAG,GAAGjqD,IAAN;AACA,SAFD,MAEO,IAAKA,IAAI,CAACixB,QAAL,KAAkB,CAAvB,EAA2B;AACjCg5B,UAAAA,GAAG,GAAGjqD,IAAI,CAACo6B,WAAX;AACA;;AAED,YAAKprB,GAAG,KAAKgS,SAAb,EAAyB;AACxB,iBAAOipC,GAAG,GAAGA,GAAG,CAAEhrD,IAAF,CAAN,GAAiBe,IAAI,CAAEc,MAAF,CAA/B;AACA;;AAED,YAAKmpD,GAAL,EAAW;AACVA,UAAAA,GAAG,CAACr4C,QAAJ,CACC,CAAC5Z,GAAD,GAAOgX,GAAP,GAAai7C,GAAG,CAAC/nC,WADlB,EAEClqB,GAAG,GAAGgX,GAAH,GAASi7C,GAAG,CAACruC,WAFjB;AAKA,SAND,MAMO;AACN5b,UAAAA,IAAI,CAAEc,MAAF,CAAJ,GAAiBkO,GAAjB;AACA;AACD,OAvBY,EAuBVlO,MAvBU,EAuBFkO,GAvBE,EAuBG3N,SAAS,CAACxK,MAvBb,CAAb;AAwBA,KAzBD;AA0BA,GA7BD,EAxzUiF,CAu1UjF;AACA;AACA;AACA;AACA;AACA;;AACA+6B,EAAAA,MAAM,CAACz7B,IAAP,CAAa,CAAE,KAAF,EAAS,MAAT,CAAb,EAAgC,UAAU49B,EAAV,EAAc90B,IAAd,EAAqB;AACpD2yB,IAAAA,MAAM,CAACmnB,QAAP,CAAiB95C,IAAjB,IAA0B83C,YAAY,CAAEhmB,OAAO,CAACilB,aAAV,EACrC,UAAUh2C,IAAV,EAAgB22C,QAAhB,EAA2B;AAC1B,UAAKA,QAAL,EAAgB;AACfA,QAAAA,QAAQ,GAAGD,MAAM,CAAE12C,IAAF,EAAQf,IAAR,CAAjB,CADe,CAGf;;AACA,eAAOy1C,SAAS,CAACjyC,IAAV,CAAgBk0C,QAAhB,IACN/kB,MAAM,CAAE5xB,IAAF,CAAN,CAAe0K,QAAf,GAA2BzL,IAA3B,IAAoC,IAD9B,GAEN03C,QAFD;AAGA;AACD,KAVoC,CAAtC;AAYA,GAbD,EA71UiF,CA62UjF;;AACA/kB,EAAAA,MAAM,CAACz7B,IAAP,CAAa;AAAEi0D,IAAAA,MAAM,EAAE,QAAV;AAAoBC,IAAAA,KAAK,EAAE;AAA3B,GAAb,EAAmD,UAAUnsD,IAAV,EAAgBmB,IAAhB,EAAuB;AACzEuyB,IAAAA,MAAM,CAACz7B,IAAP,CAAa;AACZmjD,MAAAA,OAAO,EAAE,UAAUp7C,IADP;AAEZulC,MAAAA,OAAO,EAAEpkC,IAFG;AAGZ,UAAI,UAAUnB;AAHF,KAAb,EAIG,UAAUosD,YAAV,EAAwBC,QAAxB,EAAmC;AAErC;AACA34B,MAAAA,MAAM,CAAClwB,EAAP,CAAW6oD,QAAX,IAAwB,UAAU7xC,MAAV,EAAkB/C,KAAlB,EAA0B;AACjD,YAAIwyB,SAAS,GAAG9mC,SAAS,CAACxK,MAAV,KAAsByzD,YAAY,IAAI,OAAO5xC,MAAP,KAAkB,SAAxD,CAAhB;AAAA,YACC8/B,KAAK,GAAG8R,YAAY,KAAM5xC,MAAM,KAAK,IAAX,IAAmB/C,KAAK,KAAK,IAA7B,GAAoC,QAApC,GAA+C,QAArD,CADrB;AAGA,eAAOuyB,MAAM,CAAE,IAAF,EAAQ,UAAUloC,IAAV,EAAgBX,IAAhB,EAAsBsW,KAAtB,EAA8B;AAClD,cAAI8b,GAAJ;;AAEA,cAAKP,QAAQ,CAAElxB,IAAF,CAAb,EAAwB;AAEvB;AACA,mBAAOuqD,QAAQ,CAACzrD,OAAT,CAAkB,OAAlB,MAAgC,CAAhC,GACNkB,IAAI,CAAE,UAAU9B,IAAZ,CADE,GAEN8B,IAAI,CAAC+E,QAAL,CAAcqX,eAAd,CAA+B,WAAWle,IAA1C,CAFD;AAGA,WATiD,CAWlD;;;AACA,cAAK8B,IAAI,CAACixB,QAAL,KAAkB,CAAvB,EAA2B;AAC1BQ,YAAAA,GAAG,GAAGzxB,IAAI,CAACoc,eAAX,CAD0B,CAG1B;AACA;;AACA,mBAAO1f,IAAI,CAACC,GAAL,CACNqD,IAAI,CAAC0L,IAAL,CAAW,WAAWxN,IAAtB,CADM,EACwBuzB,GAAG,CAAE,WAAWvzB,IAAb,CAD3B,EAEN8B,IAAI,CAAC0L,IAAL,CAAW,WAAWxN,IAAtB,CAFM,EAEwBuzB,GAAG,CAAE,WAAWvzB,IAAb,CAF3B,EAGNuzB,GAAG,CAAE,WAAWvzB,IAAb,CAHG,CAAP;AAKA;;AAED,iBAAOyX,KAAK,KAAKqL,SAAV,GAEN;AACA4Q,UAAAA,MAAM,CAACz2B,GAAP,CAAY6E,IAAZ,EAAkBX,IAAlB,EAAwBm5C,KAAxB,CAHM,GAKN;AACA5mB,UAAAA,MAAM,CAACzsB,KAAP,CAAcnF,IAAd,EAAoBX,IAApB,EAA0BsW,KAA1B,EAAiC6iC,KAAjC,CAND;AAOA,SA/BY,EA+BVn5C,IA/BU,EA+BJ8oC,SAAS,GAAGzvB,MAAH,GAAYsI,SA/BjB,EA+B4BmnB,SA/B5B,CAAb;AAgCA,OApCD;AAqCA,KA5CD;AA6CA,GA9CD;AAiDAvW,EAAAA,MAAM,CAACz7B,IAAP,CAAa,CACZ,WADY,EAEZ,UAFY,EAGZ,cAHY,EAIZ,WAJY,EAKZ,aALY,EAMZ,UANY,CAAb,EAOG,UAAU49B,EAAV,EAAc10B,IAAd,EAAqB;AACvBuyB,IAAAA,MAAM,CAAClwB,EAAP,CAAWrC,IAAX,IAAoB,UAAUqC,EAAV,EAAe;AAClC,aAAO,KAAKhJ,EAAL,CAAS2G,IAAT,EAAeqC,EAAf,CAAP;AACA,KAFD;AAGA,GAXD;AAgBAkwB,EAAAA,MAAM,CAAClwB,EAAP,CAAUhM,MAAV,CAAkB;AAEjByN,IAAAA,IAAI,EAAE,cAAUkrC,KAAV,EAAiBz4C,IAAjB,EAAuB8L,EAAvB,EAA4B;AACjC,aAAO,KAAKhJ,EAAL,CAAS21C,KAAT,EAAgB,IAAhB,EAAsBz4C,IAAtB,EAA4B8L,EAA5B,CAAP;AACA,KAJgB;AAKjB8oD,IAAAA,MAAM,EAAE,gBAAUnc,KAAV,EAAiB3sC,EAAjB,EAAsB;AAC7B,aAAO,KAAKjJ,GAAL,CAAU41C,KAAV,EAAiB,IAAjB,EAAuB3sC,EAAvB,CAAP;AACA,KAPgB;AASjB+oD,IAAAA,QAAQ,EAAE,kBAAU54B,QAAV,EAAoBwc,KAApB,EAA2Bz4C,IAA3B,EAAiC8L,EAAjC,EAAsC;AAC/C,aAAO,KAAKhJ,EAAL,CAAS21C,KAAT,EAAgBxc,QAAhB,EAA0Bj8B,IAA1B,EAAgC8L,EAAhC,CAAP;AACA,KAXgB;AAYjBgpD,IAAAA,UAAU,EAAE,oBAAU74B,QAAV,EAAoBwc,KAApB,EAA2B3sC,EAA3B,EAAgC;AAE3C;AACA,aAAOL,SAAS,CAACxK,MAAV,KAAqB,CAArB,GACN,KAAK4B,GAAL,CAAUo5B,QAAV,EAAoB,IAApB,CADM,GAEN,KAAKp5B,GAAL,CAAU41C,KAAV,EAAiBxc,QAAQ,IAAI,IAA7B,EAAmCnwB,EAAnC,CAFD;AAGA,KAlBgB;AAoBjBwJ,IAAAA,KAAK,EAAE,eAAUy/C,MAAV,EAAkBC,KAAlB,EAA0B;AAChC,aAAO,KAAKvY,UAAL,CAAiBsY,MAAjB,EAA0BrY,UAA1B,CAAsCsY,KAAK,IAAID,MAA/C,CAAP;AACA;AAtBgB,GAAlB;AAyBA/4B,EAAAA,MAAM,CAACz7B,IAAP,CACC,CAAE,8DACF,uEADE,GAEF,yDAFA,EAE4DiK,KAF5D,CAEmE,GAFnE,CADD,EAIC,UAAU2zB,EAAV,EAAc71B,IAAd,EAAqB;AAEpB;AACA0zB,IAAAA,MAAM,CAAClwB,EAAP,CAAWxD,IAAX,IAAoB,UAAUtI,IAAV,EAAgB8L,EAAhB,EAAqB;AACxC,aAAOL,SAAS,CAACxK,MAAV,GAAmB,CAAnB,GACN,KAAK6B,EAAL,CAASwF,IAAT,EAAe,IAAf,EAAqBtI,IAArB,EAA2B8L,EAA3B,CADM,GAEN,KAAKvJ,OAAL,CAAc+F,IAAd,CAFD;AAGA,KAJD;AAKA,GAZF,EAx8UiF,CA09UjF;AACA;;AACA,MAAI83B,KAAK,GAAG,oCAAZ,CA59UiF,CA89UjF;AACA;AACA;AACA;;AACApE,EAAAA,MAAM,CAACi5B,KAAP,GAAe,UAAUnpD,EAAV,EAAcM,OAAd,EAAwB;AACtC,QAAI44B,GAAJ,EAAS55B,IAAT,EAAe6pD,KAAf;;AAEA,QAAK,OAAO7oD,OAAP,KAAmB,QAAxB,EAAmC;AAClC44B,MAAAA,GAAG,GAAGl5B,EAAE,CAAEM,OAAF,CAAR;AACAA,MAAAA,OAAO,GAAGN,EAAV;AACAA,MAAAA,EAAE,GAAGk5B,GAAL;AACA,KAPqC,CAStC;AACA;;;AACA,QAAK,CAAC5J,UAAU,CAAEtvB,EAAF,CAAhB,EAAyB;AACxB,aAAOsf,SAAP;AACA,KAbqC,CAetC;;;AACAhgB,IAAAA,IAAI,GAAGG,MAAK,CAACC,IAAN,CAAYC,SAAZ,EAAuB,CAAvB,CAAP;;AACAwpD,IAAAA,KAAK,GAAG,iBAAW;AAClB,aAAOnpD,EAAE,CAACH,KAAH,CAAUS,OAAO,IAAI,IAArB,EAA2BhB,IAAI,CAACyC,MAAL,CAAatC,MAAK,CAACC,IAAN,CAAYC,SAAZ,CAAb,CAA3B,CAAP;AACA,KAFD,CAjBsC,CAqBtC;;;AACAwpD,IAAAA,KAAK,CAACj3B,IAAN,GAAalyB,EAAE,CAACkyB,IAAH,GAAUlyB,EAAE,CAACkyB,IAAH,IAAWhC,MAAM,CAACgC,IAAP,EAAlC;AAEA,WAAOi3B,KAAP;AACA,GAzBD;;AA2BAj5B,EAAAA,MAAM,CAACk5B,SAAP,GAAmB,UAAUC,IAAV,EAAiB;AACnC,QAAKA,IAAL,EAAY;AACXn5B,MAAAA,MAAM,CAACkW,SAAP;AACA,KAFD,MAEO;AACNlW,MAAAA,MAAM,CAACiR,KAAP,CAAc,IAAd;AACA;AACD,GAND;;AAOAjR,EAAAA,MAAM,CAAC1J,OAAP,GAAiBjnB,KAAK,CAACinB,OAAvB;AACA0J,EAAAA,MAAM,CAACo5B,SAAP,GAAmBphB,IAAI,CAACC,KAAxB;AACAjY,EAAAA,MAAM,CAAC+F,QAAP,GAAkBA,QAAlB;AACA/F,EAAAA,MAAM,CAACZ,UAAP,GAAoBA,UAApB;AACAY,EAAAA,MAAM,CAACV,QAAP,GAAkBA,QAAlB;AACAU,EAAAA,MAAM,CAACiX,SAAP,GAAmBA,SAAnB;AACAjX,EAAAA,MAAM,CAACvyB,IAAP,GAAcsyB,MAAd;AAEAC,EAAAA,MAAM,CAACzvB,GAAP,GAAaD,IAAI,CAACC,GAAlB;;AAEAyvB,EAAAA,MAAM,CAACq5B,SAAP,GAAmB,UAAU5mD,GAAV,EAAgB;AAElC;AACA;AACA;AACA,QAAIhF,IAAI,GAAGuyB,MAAM,CAACvyB,IAAP,CAAagF,GAAb,CAAX;AACA,WAAO,CAAEhF,IAAI,KAAK,QAAT,IAAqBA,IAAI,KAAK,QAAhC,KAEN;AACA;AACA;AACA,KAAC0E,KAAK,CAAEM,GAAG,GAAGL,UAAU,CAAEK,GAAF,CAAlB,CALP;AAMA,GAZD;;AAcAutB,EAAAA,MAAM,CAACnxB,IAAP,GAAc,UAAUslB,IAAV,EAAiB;AAC9B,WAAOA,IAAI,IAAI,IAAR,GACN,EADM,GAEN,CAAEA,IAAI,GAAG,EAAT,EAAc9hB,OAAd,CAAuB+xB,KAAvB,EAA8B,EAA9B,CAFD;AAGA,GAJD,CA5hViF,CAoiVjF;AACA;AACA;AACA;AACA;AACA;AACA;AAEA;AACA;AACA;AACA;;;AAEA,MAAK,IAAL,EAAkD;AACjDk1B,IAAAA,iCAAkB,EAAZ,mCAAgB,YAAW;AAChC,aAAOt5B,MAAP;AACA,KAFK;AAAA,kGAAN;AAGA;;AAKD,MAEC;AACAw5B,EAAAA,OAAO,GAAGj0D,MAAM,CAACy6B,MAHlB;AAAA,MAKC;AACAy5B,EAAAA,EAAE,GAAGl0D,MAAM,CAAClC,CANb;;AAQA28B,EAAAA,MAAM,CAAC05B,UAAP,GAAoB,UAAU14B,IAAV,EAAiB;AACpC,QAAKz7B,MAAM,CAAClC,CAAP,KAAa28B,MAAlB,EAA2B;AAC1Bz6B,MAAAA,MAAM,CAAClC,CAAP,GAAWo2D,EAAX;AACA;;AAED,QAAKz4B,IAAI,IAAIz7B,MAAM,CAACy6B,MAAP,KAAkBA,MAA/B,EAAwC;AACvCz6B,MAAAA,MAAM,CAACy6B,MAAP,GAAgBw5B,OAAhB;AACA;;AAED,WAAOx5B,MAAP;AACA,GAVD,CAlkViF,CA8kVjF;AACA;AACA;;;AACA,MAAK,OAAOtB,QAAP,KAAoB,WAAzB,EAAuC;AACtCn5B,IAAAA,MAAM,CAACy6B,MAAP,GAAgBz6B,MAAM,CAAClC,CAAP,GAAW28B,MAA3B;AACA;;AAKD,SAAOA,MAAP;AACC,CAnnVD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACbA;AAEA;AACA;CAEA;;AACA;AACA;AACA;AACA;AACA;AACA;CAEA;;AACA;AACA;AACA;AACA;CAEA;AACA;AACA;;CAEA;;AACA;AACA;CAEA;;AACA;AACA;AACA;CAEA;;AACA;AAEA/zB,uFAAA,CAAuB5I,CAAvB,GAEA;AACA;;AACA4I,+EAAA,GAAiB0tD,0EAAjB;AACA1tD,uFAAA,GAAyB0tD,kFAAzB;AACA1tD,yFAAA,GAA2B0tD,oFAA3B;AACA1tD,wFAAA,GAA0B0tD,mFAA1B;AACA1tD,kFAAA,GAAoB0tD,6EAApB;AAEA1tD,+EAAA,GAAiB4I,wEAAjB,EACA;;AACA5I,oFAAA,GAAsBxI,kFAAtB;AACAwI,sFAAA,GAAwBF,sFAAxB;AACAE,kFAAA,GAAoBoZ,8EAApB;AACApZ,gFAAA,GAAkByqB,4EAAlB;AACAzqB,gFAAA,GAAkBzC,0EAAlB;AACAyC,iFAAA,GAAmB4rB,4EAAnB,EAEA;AACA;;AACAxf,iFAAA,CAAWhV,CAAX;AACA+U,uFAAA,CAAc/U,CAAd,EAAiB4I,2EAAjB;;AACAF,4FAAA,IAEA;;;AACAE,kFAAA,CAAkBvI,gFAAlB,EAA6B,WAA7B;AACAuI,kFAAA,CAAkBxC,wFAAlB,EAAiC,eAAjC;AACAwC,kFAAA,CAAkB6I,gFAAlB,EAA6B,WAA7B;AACA7I,kFAAA,CAAkBqM,8EAAlB,EAA4B,UAA5B;AACArM,kFAAA,CAAkBwO,sFAAlB,EAAgC,cAAhC,GACA;AACA;AACA;;AACAxO,kFAAA,CAAkB0Q,gFAAlB,EAA6B,WAA7B,GACA;;AACA1Q,kFAAA,CAAkBmZ,0FAAlB,EAAkC,gBAAlC;AACAnZ,kFAAA,CAAkBqZ,8FAAlB,EAAoC,kBAApC;AACArZ,kFAAA,CAAkBma,0EAAlB,EAA0B,QAA1B,GACA;;AACAna,kFAAA,CAAkBsc,sFAAlB,EAAgC,cAAhC;AACAtc,kFAAA,CAAkBid,0EAAlB,EAA0B,QAA1B;AACAjd,kFAAA,CAAkBiW,sEAAlB,EAAwB,MAAxB;AACAjW,kFAAA,CAAkB4iB,4EAAlB,EAA2B,SAA3B,GACA;;AACA5iB,kFAAA,CAAkBuW,4GAAlB,EAA2C,yBAA3C;;;;;;;UChFA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCzBA;WACA;WACA;WACA,eAAe,4BAA4B;WAC3C,eAAe;WACf,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA,8CAA8C;;;;;WCA9C;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;WCNA;WACA;WACA;WACA;WACA;;;;;;;;;;;;;ACJA;AAGAnf,CAAC,CAAC8P,QAAD,CAAD,CAAYrF,UAAZ,G","sources":["webpack://foundation-zurb-template/./node_modules/foundation-sites/js/foundation.accordion.js","webpack://foundation-zurb-template/./node_modules/foundation-sites/js/foundation.accordionMenu.js","webpack://foundation-zurb-template/./node_modules/foundation-sites/js/foundation.core.js","webpack://foundation-zurb-template/./node_modules/foundation-sites/js/foundation.core.plugin.js","webpack://foundation-zurb-template/./node_modules/foundation-sites/js/foundation.core.utils.js","webpack://foundation-zurb-template/./node_modules/foundation-sites/js/foundation.drilldown.js","webpack://foundation-zurb-template/./node_modules/foundation-sites/js/foundation.dropdown.js","webpack://foundation-zurb-template/./node_modules/foundation-sites/js/foundation.dropdownMenu.js","webpack://foundation-zurb-template/./node_modules/foundation-sites/js/foundation.offcanvas.js","webpack://foundation-zurb-template/./node_modules/foundation-sites/js/foundation.positionable.js","webpack://foundation-zurb-template/./node_modules/foundation-sites/js/foundation.responsiveAccordionTabs.js","webpack://foundation-zurb-template/./node_modules/foundation-sites/js/foundation.responsiveMenu.js","webpack://foundation-zurb-template/./node_modules/foundation-sites/js/foundation.responsiveToggle.js","webpack://foundation-zurb-template/./node_modules/foundation-sites/js/foundation.reveal.js","webpack://foundation-zurb-template/./node_modules/foundation-sites/js/foundation.smoothScroll.js","webpack://foundation-zurb-template/./node_modules/foundation-sites/js/foundation.sticky.js","webpack://foundation-zurb-template/./node_modules/foundation-sites/js/foundation.tabs.js","webpack://foundation-zurb-template/./node_modules/foundation-sites/js/foundation.toggler.js","webpack://foundation-zurb-template/./node_modules/foundation-sites/js/foundation.util.box.js","webpack://foundation-zurb-template/./node_modules/foundation-sites/js/foundation.util.imageLoader.js","webpack://foundation-zurb-template/./node_modules/foundation-sites/js/foundation.util.keyboard.js","webpack://foundation-zurb-template/./node_modules/foundation-sites/js/foundation.util.mediaQuery.js","webpack://foundation-zurb-template/./node_modules/foundation-sites/js/foundation.util.motion.js","webpack://foundation-zurb-template/./node_modules/foundation-sites/js/foundation.util.nest.js","webpack://foundation-zurb-template/./node_modules/foundation-sites/js/foundation.util.timer.js","webpack://foundation-zurb-template/./node_modules/foundation-sites/js/foundation.util.touch.js","webpack://foundation-zurb-template/./node_modules/foundation-sites/js/foundation.util.triggers.js","webpack://foundation-zurb-template/./node_modules/jquery/dist/jquery.js","webpack://foundation-zurb-template/./src/assets/js/lib/foundation-explicit-pieces.js","webpack://foundation-zurb-template/webpack/bootstrap","webpack://foundation-zurb-template/webpack/runtime/compat get default export","webpack://foundation-zurb-template/webpack/runtime/define property getters","webpack://foundation-zurb-template/webpack/runtime/hasOwnProperty shorthand","webpack://foundation-zurb-template/webpack/runtime/make namespace object","webpack://foundation-zurb-template/webpack/runtime/node module decorator","webpack://foundation-zurb-template/./src/assets/js/app.js"],"sourcesContent":["import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad, GetYoDigits } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\n\n/**\n * Accordion module.\n * @module foundation.accordion\n * @requires foundation.util.keyboard\n */\n\nclass Accordion extends Plugin {\n /**\n * Creates a new instance of an accordion.\n * @class\n * @name Accordion\n * @fires Accordion#init\n * @param {jQuery} element - jQuery object to make into an accordion.\n * @param {Object} options - a plain object with settings to override the default options.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Accordion.defaults, this.$element.data(), options);\n\n this.className = 'Accordion'; // ie9 back compat\n this._init();\n\n Keyboard.register('Accordion', {\n 'ENTER': 'toggle',\n 'SPACE': 'toggle',\n 'ARROW_DOWN': 'next',\n 'ARROW_UP': 'previous',\n 'HOME': 'first',\n 'END': 'last',\n });\n }\n\n /**\n * Initializes the accordion by animating the preset active pane(s).\n * @private\n */\n _init() {\n this._isInitializing = true;\n\n this.$tabs = this.$element.children('[data-accordion-item]');\n\n\n this.$tabs.each(function(idx, el) {\n var $el = $(el),\n $content = $el.children('[data-tab-content]'),\n id = $content[0].id || GetYoDigits(6, 'accordion'),\n linkId = (el.id) ? `${el.id}-label` : `${id}-label`;\n\n $el.find('a:first').attr({\n 'aria-controls': id,\n 'id': linkId,\n 'aria-expanded': false\n });\n\n $content.attr({'role': 'region', 'aria-labelledby': linkId, 'aria-hidden': true, 'id': id});\n });\n\n var $initActive = this.$element.find('.is-active').children('[data-tab-content]');\n if ($initActive.length) {\n // Save up the initial hash to return to it later when going back in history\n this._initialAnchor = $initActive.prev('a').attr('href');\n this._openSingleTab($initActive);\n }\n\n this._checkDeepLink = () => {\n var anchor = window.location.hash;\n\n if (!anchor.length) {\n // If we are still initializing and there is no anchor, then there is nothing to do\n if (this._isInitializing) return;\n // Otherwise, move to the initial anchor\n if (this._initialAnchor) anchor = this._initialAnchor;\n }\n\n var $anchor = anchor && $(anchor);\n var $link = anchor && this.$element.find(`[href$=\"${anchor}\"]`);\n // Whether the anchor element that has been found is part of this element\n var isOwnAnchor = !!($anchor.length && $link.length);\n\n if (isOwnAnchor) {\n // If there is an anchor for the hash, open it (if not already active)\n if ($anchor && $link && $link.length) {\n if (!$link.parent('[data-accordion-item]').hasClass('is-active')) {\n this._openSingleTab($anchor);\n }\n }\n // Otherwise, close everything\n else {\n this._closeAllTabs();\n }\n\n // Roll up a little to show the titles\n if (this.options.deepLinkSmudge) {\n onLoad($(window), () => {\n var offset = this.$element.offset();\n $('html, body').animate({ scrollTop: offset.top - this.options.deepLinkSmudgeOffset }, this.options.deepLinkSmudgeDelay);\n });\n }\n\n /**\n * Fires when the plugin has deeplinked at pageload\n * @event Accordion#deeplink\n */\n this.$element.trigger('deeplink.zf.accordion', [$link, $anchor]);\n }\n }\n\n //use browser to open a tab, if it exists in this tabset\n if (this.options.deepLink) {\n this._checkDeepLink();\n }\n\n this._events();\n\n this._isInitializing = false;\n }\n\n /**\n * Adds event handlers for items within the accordion.\n * @private\n */\n _events() {\n var _this = this;\n\n this.$tabs.each(function() {\n var $elem = $(this);\n var $tabContent = $elem.children('[data-tab-content]');\n if ($tabContent.length) {\n $elem.children('a').off('click.zf.accordion keydown.zf.accordion')\n .on('click.zf.accordion', function(e) {\n e.preventDefault();\n _this.toggle($tabContent);\n }).on('keydown.zf.accordion', function(e) {\n Keyboard.handleKey(e, 'Accordion', {\n toggle: function() {\n _this.toggle($tabContent);\n },\n next: function() {\n var $a = $elem.next().find('a').focus();\n if (!_this.options.multiExpand) {\n $a.trigger('click.zf.accordion')\n }\n },\n previous: function() {\n var $a = $elem.prev().find('a').focus();\n if (!_this.options.multiExpand) {\n $a.trigger('click.zf.accordion')\n }\n },\n first: function() {\n var $a = _this.$tabs.first().find('.accordion-title').focus();\n if (!_this.options.multiExpand) {\n $a.trigger('click.zf.accordion');\n }\n },\n last: function() {\n var $a = _this.$tabs.last().find('.accordion-title').focus();\n if (!_this.options.multiExpand) {\n $a.trigger('click.zf.accordion');\n }\n },\n handled: function() {\n e.preventDefault();\n }\n });\n });\n }\n });\n if (this.options.deepLink) {\n $(window).on('hashchange', this._checkDeepLink);\n }\n }\n\n /**\n * Toggles the selected content pane's open/close state.\n * @param {jQuery} $target - jQuery object of the pane to toggle (`.accordion-content`).\n * @function\n */\n toggle($target) {\n if ($target.closest('[data-accordion]').is('[disabled]')) {\n console.info('Cannot toggle an accordion that is disabled.');\n return;\n }\n if ($target.parent().hasClass('is-active')) {\n this.up($target);\n } else {\n this.down($target);\n }\n //either replace or update browser history\n if (this.options.deepLink) {\n var anchor = $target.prev('a').attr('href');\n\n if (this.options.updateHistory) {\n history.pushState({}, '', anchor);\n } else {\n history.replaceState({}, '', anchor);\n }\n }\n }\n\n /**\n * Opens the accordion tab defined by `$target`.\n * @param {jQuery} $target - Accordion pane to open (`.accordion-content`).\n * @fires Accordion#down\n * @function\n */\n down($target) {\n if ($target.closest('[data-accordion]').is('[disabled]')) {\n console.info('Cannot call down on an accordion that is disabled.');\n return;\n }\n\n if (this.options.multiExpand)\n this._openTab($target);\n else\n this._openSingleTab($target);\n }\n\n /**\n * Closes the tab defined by `$target`.\n * It may be ignored if the Accordion options don't allow it.\n *\n * @param {jQuery} $target - Accordion tab to close (`.accordion-content`).\n * @fires Accordion#up\n * @function\n */\n up($target) {\n if (this.$element.is('[disabled]')) {\n console.info('Cannot call up on an accordion that is disabled.');\n return;\n }\n\n // Don't close the item if it is already closed\n const $targetItem = $target.parent();\n if (!$targetItem.hasClass('is-active')) return;\n\n // Don't close the item if there is no other active item (unless with `allowAllClosed`)\n const $othersItems = $targetItem.siblings();\n if (!this.options.allowAllClosed && !$othersItems.hasClass('is-active')) return;\n\n this._closeTab($target);\n }\n\n /**\n * Make the tab defined by `$target` the only opened tab, closing all others tabs.\n * @param {jQuery} $target - Accordion tab to open (`.accordion-content`).\n * @function\n * @private\n */\n _openSingleTab($target) {\n // Close all the others active tabs.\n const $activeContents = this.$element.children('.is-active').children('[data-tab-content]');\n if ($activeContents.length) {\n this._closeTab($activeContents.not($target));\n }\n\n // Then open the target.\n this._openTab($target);\n }\n\n /**\n * Opens the tab defined by `$target`.\n * @param {jQuery} $target - Accordion tab to open (`.accordion-content`).\n * @fires Accordion#down\n * @function\n * @private\n */\n _openTab($target) {\n const $targetItem = $target.parent();\n const targetContentId = $target.attr('aria-labelledby');\n\n $target.attr('aria-hidden', false);\n $targetItem.addClass('is-active');\n\n $(`#${targetContentId}`).attr({\n 'aria-expanded': true\n });\n\n $target.finish().slideDown(this.options.slideSpeed, () => {\n /**\n * Fires when the tab is done opening.\n * @event Accordion#down\n */\n this.$element.trigger('down.zf.accordion', [$target]);\n });\n }\n\n /**\n * Closes the tab defined by `$target`.\n * @param {jQuery} $target - Accordion tab to close (`.accordion-content`).\n * @fires Accordion#up\n * @function\n * @private\n */\n _closeTab($target) {\n const $targetItem = $target.parent();\n const targetContentId = $target.attr('aria-labelledby');\n\n $target.attr('aria-hidden', true)\n $targetItem.removeClass('is-active');\n\n $(`#${targetContentId}`).attr({\n 'aria-expanded': false\n });\n\n $target.finish().slideUp(this.options.slideSpeed, () => {\n /**\n * Fires when the tab is done collapsing up.\n * @event Accordion#up\n */\n this.$element.trigger('up.zf.accordion', [$target]);\n });\n }\n\n /**\n * Closes all active tabs\n * @fires Accordion#up\n * @function\n * @private\n */\n _closeAllTabs() {\n var $activeTabs = this.$element.children('.is-active').children('[data-tab-content]');\n if ($activeTabs.length) {\n this._closeTab($activeTabs);\n }\n }\n\n /**\n * Destroys an instance of an accordion.\n * @fires Accordion#destroyed\n * @function\n */\n _destroy() {\n this.$element.find('[data-tab-content]').stop(true).slideUp(0).css('display', '');\n this.$element.find('a').off('.zf.accordion');\n if (this.options.deepLink) {\n $(window).off('hashchange', this._checkDeepLink);\n }\n\n }\n}\n\nAccordion.defaults = {\n /**\n * Amount of time to animate the opening of an accordion pane.\n * @option\n * @type {number}\n * @default 250\n */\n slideSpeed: 250,\n /**\n * Allow the accordion to have multiple open panes.\n * @option\n * @type {boolean}\n * @default false\n */\n multiExpand: false,\n /**\n * Allow the accordion to close all panes.\n * @option\n * @type {boolean}\n * @default false\n */\n allowAllClosed: false,\n /**\n * Link the location hash to the open pane.\n * Set the location hash when the opened pane changes, and open and scroll to the corresponding pane when the location changes.\n * @option\n * @type {boolean}\n * @default false\n */\n deepLink: false,\n /**\n * If `deepLink` is enabled, adjust the deep link scroll to make sure the top of the accordion panel is visible\n * @option\n * @type {boolean}\n * @default false\n */\n deepLinkSmudge: false,\n /**\n * If `deepLinkSmudge` is enabled, animation time (ms) for the deep link adjustment\n * @option\n * @type {number}\n * @default 300\n */\n deepLinkSmudgeDelay: 300,\n /**\n * If `deepLinkSmudge` is enabled, the offset for scrollToTtop to prevent overlap by a sticky element at the top of the page\n * @option\n * @type {number}\n * @default 0\n */\n deepLinkSmudgeOffset: 0,\n /**\n * If `deepLink` is enabled, update the browser history with the open accordion\n * @option\n * @type {boolean}\n * @default false\n */\n updateHistory: false\n};\n\nexport { Accordion };\n","import $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Nest } from './foundation.util.nest';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * AccordionMenu module.\n * @module foundation.accordionMenu\n * @requires foundation.util.keyboard\n * @requires foundation.util.nest\n */\n\nclass AccordionMenu extends Plugin {\n /**\n * Creates a new instance of an accordion menu.\n * @class\n * @name AccordionMenu\n * @fires AccordionMenu#init\n * @param {jQuery} element - jQuery object to make into an accordion menu.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, AccordionMenu.defaults, this.$element.data(), options);\n this.className = 'AccordionMenu'; // ie9 back compat\n\n this._init();\n\n Keyboard.register('AccordionMenu', {\n 'ENTER': 'toggle',\n 'SPACE': 'toggle',\n 'ARROW_RIGHT': 'open',\n 'ARROW_UP': 'up',\n 'ARROW_DOWN': 'down',\n 'ARROW_LEFT': 'close',\n 'ESCAPE': 'closeAll'\n });\n }\n\n\n\n /**\n * Initializes the accordion menu by hiding all nested menus.\n * @private\n */\n _init() {\n Nest.Feather(this.$element, 'accordion');\n\n var _this = this;\n\n this.$element.find('[data-submenu]').not('.is-active').slideUp(0);//.find('a').css('padding-left', '1rem');\n this.$element.attr({\n 'aria-multiselectable': this.options.multiOpen\n });\n\n this.$menuLinks = this.$element.find('.is-accordion-submenu-parent');\n this.$menuLinks.each(function() {\n var linkId = this.id || GetYoDigits(6, 'acc-menu-link'),\n $elem = $(this),\n $sub = $elem.children('[data-submenu]'),\n subId = $sub[0].id || GetYoDigits(6, 'acc-menu'),\n isActive = $sub.hasClass('is-active');\n\n if (_this.options.parentLink) {\n let $anchor = $elem.children('a');\n $anchor.clone().prependTo($sub).wrap('
  • ');\n }\n\n if (_this.options.submenuToggle) {\n $elem.addClass('has-submenu-toggle');\n $elem.children('a').after('');\n } else {\n $elem.attr({\n 'aria-controls': subId,\n 'aria-expanded': isActive,\n 'id': linkId\n });\n }\n $sub.attr({\n 'aria-labelledby': linkId,\n 'aria-hidden': !isActive,\n 'role': 'group',\n 'id': subId\n });\n });\n var initPanes = this.$element.find('.is-active');\n if (initPanes.length) {\n initPanes.each(function() {\n _this.down($(this));\n });\n }\n this._events();\n }\n\n /**\n * Adds event handlers for items within the menu.\n * @private\n */\n _events() {\n var _this = this;\n\n this.$element.find('li').each(function() {\n var $submenu = $(this).children('[data-submenu]');\n\n if ($submenu.length) {\n if (_this.options.submenuToggle) {\n $(this).children('.submenu-toggle').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function(e) {\n _this.toggle($submenu);\n });\n } else {\n $(this).children('a').off('click.zf.accordionMenu').on('click.zf.accordionMenu', function(e) {\n e.preventDefault();\n _this.toggle($submenu);\n });\n }\n }\n }).on('keydown.zf.accordionMenu', function(e) {\n var $element = $(this),\n $elements = $element.parent('ul').children('li'),\n $prevElement,\n $nextElement,\n $target = $element.children('[data-submenu]');\n\n $elements.each(function(i) {\n if ($(this).is($element)) {\n $prevElement = $elements.eq(Math.max(0, i-1)).find('a').first();\n $nextElement = $elements.eq(Math.min(i+1, $elements.length-1)).find('a').first();\n\n if ($(this).children('[data-submenu]:visible').length) { // has open sub menu\n $nextElement = $element.find('li:first-child').find('a').first();\n }\n if ($(this).is(':first-child')) { // is first element of sub menu\n $prevElement = $element.parents('li').first().find('a').first();\n } else if ($prevElement.parents('li').first().children('[data-submenu]:visible').length) { // if previous element has open sub menu\n $prevElement = $prevElement.parents('li').find('li:last-child').find('a').first();\n }\n if ($(this).is(':last-child')) { // is last element of sub menu\n $nextElement = $element.parents('li').first().next('li').find('a').first();\n }\n\n return;\n }\n });\n\n Keyboard.handleKey(e, 'AccordionMenu', {\n open: function() {\n if ($target.is(':hidden')) {\n _this.down($target);\n $target.find('li').first().find('a').first().focus();\n }\n },\n close: function() {\n if ($target.length && !$target.is(':hidden')) { // close active sub of this item\n _this.up($target);\n } else if ($element.parent('[data-submenu]').length) { // close currently open sub\n _this.up($element.parent('[data-submenu]'));\n $element.parents('li').first().find('a').first().focus();\n }\n },\n up: function() {\n $prevElement.focus();\n return true;\n },\n down: function() {\n $nextElement.focus();\n return true;\n },\n toggle: function() {\n if (_this.options.submenuToggle) {\n return false;\n }\n if ($element.children('[data-submenu]').length) {\n _this.toggle($element.children('[data-submenu]'));\n return true;\n }\n },\n closeAll: function() {\n _this.hideAll();\n },\n handled: function(preventDefault) {\n if (preventDefault) {\n e.preventDefault();\n }\n }\n });\n });//.attr('tabindex', 0);\n }\n\n /**\n * Closes all panes of the menu.\n * @function\n */\n hideAll() {\n this.up(this.$element.find('[data-submenu]'));\n }\n\n /**\n * Opens all panes of the menu.\n * @function\n */\n showAll() {\n this.down(this.$element.find('[data-submenu]'));\n }\n\n /**\n * Toggles the open/close state of a submenu.\n * @function\n * @param {jQuery} $target - the submenu to toggle\n */\n toggle($target) {\n if (!$target.is(':animated')) {\n if (!$target.is(':hidden')) {\n this.up($target);\n }\n else {\n this.down($target);\n }\n }\n }\n\n /**\n * Opens the sub-menu defined by `$target`.\n * @param {jQuery} $target - Sub-menu to open.\n * @fires AccordionMenu#down\n */\n down($target) {\n // If having multiple submenus active is disabled, close all the submenus\n // that are not parents or children of the targeted submenu.\n if (!this.options.multiOpen) {\n // The \"branch\" of the targetted submenu, from the component root to\n // the active submenus nested in it.\n const $targetBranch = $target.parentsUntil(this.$element)\n .add($target)\n .add($target.find('.is-active'));\n // All the active submenus that are not in the branch.\n const $othersActiveSubmenus = this.$element.find('.is-active').not($targetBranch);\n\n this.up($othersActiveSubmenus);\n }\n\n $target\n .addClass('is-active')\n .attr({ 'aria-hidden': false });\n\n if (this.options.submenuToggle) {\n $target.prev('.submenu-toggle').attr({'aria-expanded': true});\n }\n else {\n $target.parent('.is-accordion-submenu-parent').attr({'aria-expanded': true});\n }\n\n $target.slideDown(this.options.slideSpeed, () => {\n /**\n * Fires when the menu is done opening.\n * @event AccordionMenu#down\n */\n this.$element.trigger('down.zf.accordionMenu', [$target]);\n });\n }\n\n /**\n * Closes the sub-menu defined by `$target`. All sub-menus inside the target will be closed as well.\n * @param {jQuery} $target - Sub-menu to close.\n * @fires AccordionMenu#up\n */\n up($target) {\n const $submenus = $target.find('[data-submenu]');\n const $allmenus = $target.add($submenus);\n\n $submenus.slideUp(0);\n $allmenus\n .removeClass('is-active')\n .attr('aria-hidden', true);\n\n if (this.options.submenuToggle) {\n $allmenus.prev('.submenu-toggle').attr('aria-expanded', false);\n }\n else {\n $allmenus.parent('.is-accordion-submenu-parent').attr('aria-expanded', false);\n }\n\n $target.slideUp(this.options.slideSpeed, () => {\n /**\n * Fires when the menu is done collapsing up.\n * @event AccordionMenu#up\n */\n this.$element.trigger('up.zf.accordionMenu', [$target]);\n });\n }\n\n /**\n * Destroys an instance of accordion menu.\n * @fires AccordionMenu#destroyed\n */\n _destroy() {\n this.$element.find('[data-submenu]').slideDown(0).css('display', '');\n this.$element.find('a').off('click.zf.accordionMenu');\n this.$element.find('[data-is-parent-link]').detach();\n\n if (this.options.submenuToggle) {\n this.$element.find('.has-submenu-toggle').removeClass('has-submenu-toggle');\n this.$element.find('.submenu-toggle').remove();\n }\n\n Nest.Burn(this.$element, 'accordion');\n }\n}\n\nAccordionMenu.defaults = {\n /**\n * Adds the parent link to the submenu.\n * @option\n * @type {boolean}\n * @default false\n */\n parentLink: false,\n /**\n * Amount of time to animate the opening of a submenu in ms.\n * @option\n * @type {number}\n * @default 250\n */\n slideSpeed: 250,\n /**\n * Adds a separate submenu toggle button. This allows the parent item to have a link.\n * @option\n * @example true\n */\n submenuToggle: false,\n /**\n * The text used for the submenu toggle if enabled. This is used for screen readers only.\n * @option\n * @example true\n */\n submenuToggleText: 'Toggle menu',\n /**\n * Allow the menu to have multiple open panes.\n * @option\n * @type {boolean}\n * @default true\n */\n multiOpen: true\n};\n\nexport { AccordionMenu };\n","import $ from 'jquery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { MediaQuery } from './foundation.util.mediaQuery';\n\nvar FOUNDATION_VERSION = '6.7.3';\n\n// Global Foundation object\n// This is attached to the window, or used as a module for AMD/Browserify\nvar Foundation = {\n version: FOUNDATION_VERSION,\n\n /**\n * Stores initialized plugins.\n */\n _plugins: {},\n\n /**\n * Stores generated unique ids for plugin instances\n */\n _uuids: [],\n\n /**\n * Defines a Foundation plugin, adding it to the `Foundation` namespace and the list of plugins to initialize when reflowing.\n * @param {Object} plugin - The constructor of the plugin.\n */\n plugin: function(plugin, name) {\n // Object key to use when adding to global Foundation object\n // Examples: Foundation.Reveal, Foundation.OffCanvas\n var className = (name || functionName(plugin));\n // Object key to use when storing the plugin, also used to create the identifying data attribute for the plugin\n // Examples: data-reveal, data-off-canvas\n var attrName = hyphenate(className);\n\n // Add to the Foundation object and the plugins list (for reflowing)\n this._plugins[attrName] = this[className] = plugin;\n },\n /**\n * @function\n * Populates the _uuids array with pointers to each individual plugin instance.\n * Adds the `zfPlugin` data-attribute to programmatically created plugins to allow use of $(selector).foundation(method) calls.\n * Also fires the initialization event for each plugin, consolidating repetitive code.\n * @param {Object} plugin - an instance of a plugin, usually `this` in context.\n * @param {String} name - the name of the plugin, passed as a camelCased string.\n * @fires Plugin#init\n */\n registerPlugin: function(plugin, name){\n var pluginName = name ? hyphenate(name) : functionName(plugin.constructor).toLowerCase();\n plugin.uuid = GetYoDigits(6, pluginName);\n\n if(!plugin.$element.attr(`data-${pluginName}`)){ plugin.$element.attr(`data-${pluginName}`, plugin.uuid); }\n if(!plugin.$element.data('zfPlugin')){ plugin.$element.data('zfPlugin', plugin); }\n /**\n * Fires when the plugin has initialized.\n * @event Plugin#init\n */\n plugin.$element.trigger(`init.zf.${pluginName}`);\n\n this._uuids.push(plugin.uuid);\n\n return;\n },\n /**\n * @function\n * Removes the plugins uuid from the _uuids array.\n * Removes the zfPlugin data attribute, as well as the data-plugin-name attribute.\n * Also fires the destroyed event for the plugin, consolidating repetitive code.\n * @param {Object} plugin - an instance of a plugin, usually `this` in context.\n * @fires Plugin#destroyed\n */\n unregisterPlugin: function(plugin){\n var pluginName = hyphenate(functionName(plugin.$element.data('zfPlugin').constructor));\n\n this._uuids.splice(this._uuids.indexOf(plugin.uuid), 1);\n plugin.$element.removeAttr(`data-${pluginName}`).removeData('zfPlugin')\n /**\n * Fires when the plugin has been destroyed.\n * @event Plugin#destroyed\n */\n .trigger(`destroyed.zf.${pluginName}`);\n for(var prop in plugin){\n plugin[prop] = null;//clean up script to prep for garbage collection.\n }\n return;\n },\n\n /**\n * @function\n * Causes one or more active plugins to re-initialize, resetting event listeners, recalculating positions, etc.\n * @param {String} plugins - optional string of an individual plugin key, attained by calling `$(element).data('pluginName')`, or string of a plugin class i.e. `'dropdown'`\n * @default If no argument is passed, reflow all currently active plugins.\n */\n reInit: function(plugins){\n var isJQ = plugins instanceof $;\n try{\n if(isJQ){\n plugins.each(function(){\n $(this).data('zfPlugin')._init();\n });\n }else{\n var type = typeof plugins,\n _this = this,\n fns = {\n 'object': function(plgs){\n plgs.forEach(function(p){\n p = hyphenate(p);\n $('[data-'+ p +']').foundation('_init');\n });\n },\n 'string': function(){\n plugins = hyphenate(plugins);\n $('[data-'+ plugins +']').foundation('_init');\n },\n 'undefined': function(){\n this['object'](Object.keys(_this._plugins));\n }\n };\n fns[type](plugins);\n }\n }catch(err){\n console.error(err);\n }finally{\n return plugins;\n }\n },\n\n /**\n * Initialize plugins on any elements within `elem` (and `elem` itself) that aren't already initialized.\n * @param {Object} elem - jQuery object containing the element to check inside. Also checks the element itself, unless it's the `document` object.\n * @param {String|Array} plugins - A list of plugins to initialize. Leave this out to initialize everything.\n */\n reflow: function(elem, plugins) {\n\n // If plugins is undefined, just grab everything\n if (typeof plugins === 'undefined') {\n plugins = Object.keys(this._plugins);\n }\n // If plugins is a string, convert it to an array with one item\n else if (typeof plugins === 'string') {\n plugins = [plugins];\n }\n\n var _this = this;\n\n // Iterate through each plugin\n $.each(plugins, function(i, name) {\n // Get the current plugin\n var plugin = _this._plugins[name];\n\n // Localize the search to all elements inside elem, as well as elem itself, unless elem === document\n var $elem = $(elem).find('[data-'+name+']').addBack('[data-'+name+']').filter(function () {\n return typeof $(this).data(\"zfPlugin\") === 'undefined';\n });\n\n // For each plugin found, initialize it\n $elem.each(function() {\n var $el = $(this),\n opts = { reflow: true };\n\n if($el.attr('data-options')){\n $el.attr('data-options').split(';').forEach(function(option, _index){\n var opt = option.split(':').map(function(el){ return el.trim(); });\n if(opt[0]) opts[opt[0]] = parseValue(opt[1]);\n });\n }\n try{\n $el.data('zfPlugin', new plugin($(this), opts));\n }catch(er){\n console.error(er);\n }finally{\n return;\n }\n });\n });\n },\n getFnName: functionName,\n\n addToJquery: function($) {\n // TODO: consider not making this a jQuery function\n // TODO: need way to reflow vs. re-initialize\n /**\n * The Foundation jQuery method.\n * @param {String|Array} method - An action to perform on the current jQuery object.\n */\n var foundation = function(method) {\n var type = typeof method,\n $noJS = $('.no-js');\n\n if($noJS.length){\n $noJS.removeClass('no-js');\n }\n\n if(type === 'undefined'){//needs to initialize the Foundation object, or an individual plugin.\n MediaQuery._init();\n Foundation.reflow(this);\n }else if(type === 'string'){//an individual method to invoke on a plugin or group of plugins\n var args = Array.prototype.slice.call(arguments, 1);//collect all the arguments, if necessary\n var plugClass = this.data('zfPlugin');//determine the class of plugin\n\n if(typeof plugClass !== 'undefined' && typeof plugClass[method] !== 'undefined'){//make sure both the class and method exist\n if(this.length === 1){//if there's only one, call it directly.\n plugClass[method].apply(plugClass, args);\n }else{\n this.each(function(i, el){//otherwise loop through the jQuery collection and invoke the method on each\n plugClass[method].apply($(el).data('zfPlugin'), args);\n });\n }\n }else{//error for no class or no method\n throw new ReferenceError(\"We're sorry, '\" + method + \"' is not an available method for \" + (plugClass ? functionName(plugClass) : 'this element') + '.');\n }\n }else{//error for invalid argument type\n throw new TypeError(`We're sorry, ${type} is not a valid parameter. You must use a string representing the method you wish to invoke.`);\n }\n return this;\n };\n $.fn.foundation = foundation;\n return $;\n }\n};\n\nFoundation.util = {\n /**\n * Function for applying a debounce effect to a function call.\n * @function\n * @param {Function} func - Function to be called at end of timeout.\n * @param {Number} delay - Time in ms to delay the call of `func`.\n * @returns function\n */\n throttle: function (func, delay) {\n var timer = null;\n\n return function () {\n var context = this, args = arguments;\n\n if (timer === null) {\n timer = setTimeout(function () {\n func.apply(context, args);\n timer = null;\n }, delay);\n }\n };\n }\n};\n\nwindow.Foundation = Foundation;\n\n// Polyfill for requestAnimationFrame\n(function() {\n if (!Date.now || !window.Date.now)\n window.Date.now = Date.now = function() { return new Date().getTime(); };\n\n var vendors = ['webkit', 'moz'];\n for (var i = 0; i < vendors.length && !window.requestAnimationFrame; ++i) {\n var vp = vendors[i];\n window.requestAnimationFrame = window[vp+'RequestAnimationFrame'];\n window.cancelAnimationFrame = (window[vp+'CancelAnimationFrame']\n || window[vp+'CancelRequestAnimationFrame']);\n }\n if (/iP(ad|hone|od).*OS 6/.test(window.navigator.userAgent)\n || !window.requestAnimationFrame || !window.cancelAnimationFrame) {\n var lastTime = 0;\n window.requestAnimationFrame = function(callback) {\n var now = Date.now();\n var nextTime = Math.max(lastTime + 16, now);\n return setTimeout(function() { callback(lastTime = nextTime); },\n nextTime - now);\n };\n window.cancelAnimationFrame = clearTimeout;\n }\n /**\n * Polyfill for performance.now, required by rAF\n */\n if(!window.performance || !window.performance.now){\n window.performance = {\n start: Date.now(),\n now: function(){ return Date.now() - this.start; }\n };\n }\n})();\nif (!Function.prototype.bind) {\n Function.prototype.bind = function(oThis) {\n if (typeof this !== 'function') {\n // closest thing possible to the ECMAScript 5\n // internal IsCallable function\n throw new TypeError('Function.prototype.bind - what is trying to be bound is not callable');\n }\n\n var aArgs = Array.prototype.slice.call(arguments, 1),\n fToBind = this,\n fNOP = function() {},\n fBound = function() {\n return fToBind.apply(this instanceof fNOP\n ? this\n : oThis,\n aArgs.concat(Array.prototype.slice.call(arguments)));\n };\n\n if (this.prototype) {\n // native functions don't have a prototype\n fNOP.prototype = this.prototype;\n }\n fBound.prototype = new fNOP();\n\n return fBound;\n };\n}\n// Polyfill to get the name of a function in IE9\nfunction functionName(fn) {\n if (typeof Function.prototype.name === 'undefined') {\n var funcNameRegex = /function\\s([^(]{1,})\\(/;\n var results = (funcNameRegex).exec((fn).toString());\n return (results && results.length > 1) ? results[1].trim() : \"\";\n }\n else if (typeof fn.prototype === 'undefined') {\n return fn.constructor.name;\n }\n else {\n return fn.prototype.constructor.name;\n }\n}\nfunction parseValue(str){\n if ('true' === str) return true;\n else if ('false' === str) return false;\n else if (!isNaN(str * 1)) return parseFloat(str);\n return str;\n}\n// Convert PascalCase to kebab-case\n// Thank you: http://stackoverflow.com/a/8955580\nfunction hyphenate(str) {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\nexport {Foundation};\n","import $ from 'jquery';\nimport { GetYoDigits } from './foundation.core.utils';\n\n// Abstract class for providing lifecycle hooks. Expect plugins to define AT LEAST\n// {function} _setup (replaces previous constructor),\n// {function} _destroy (replaces previous destroy)\nclass Plugin {\n\n constructor(element, options) {\n this._setup(element, options);\n var pluginName = getPluginName(this);\n this.uuid = GetYoDigits(6, pluginName);\n\n if(!this.$element.attr(`data-${pluginName}`)){ this.$element.attr(`data-${pluginName}`, this.uuid); }\n if(!this.$element.data('zfPlugin')){ this.$element.data('zfPlugin', this); }\n /**\n * Fires when the plugin has initialized.\n * @event Plugin#init\n */\n this.$element.trigger(`init.zf.${pluginName}`);\n }\n\n destroy() {\n this._destroy();\n var pluginName = getPluginName(this);\n this.$element.removeAttr(`data-${pluginName}`).removeData('zfPlugin')\n /**\n * Fires when the plugin has been destroyed.\n * @event Plugin#destroyed\n */\n .trigger(`destroyed.zf.${pluginName}`);\n for(var prop in this){\n this[prop] = null;//clean up script to prep for garbage collection.\n }\n }\n}\n\n// Convert PascalCase to kebab-case\n// Thank you: http://stackoverflow.com/a/8955580\nfunction hyphenate(str) {\n return str.replace(/([a-z])([A-Z])/g, '$1-$2').toLowerCase();\n}\n\nfunction getPluginName(obj) {\n return hyphenate(obj.className);\n}\n\nexport {Plugin};\n","import $ from 'jquery';\n\n// Core Foundation Utilities, utilized in a number of places.\n\n /**\n * Returns a boolean for RTL support\n */\nfunction rtl() {\n return $('html').attr('dir') === 'rtl';\n}\n\n/**\n * returns a random base-36 uid with namespacing\n * @function\n * @param {Number} length - number of random base-36 digits desired. Increase for more random strings.\n * @param {String} namespace - name of plugin to be incorporated in uid, optional.\n * @default {String} '' - if no plugin name is provided, nothing is appended to the uid.\n * @returns {String} - unique id\n */\nfunction GetYoDigits(length = 6, namespace){\n let str = '';\n const chars = '0123456789abcdefghijklmnopqrstuvwxyz';\n const charsLength = chars.length;\n for (let i = 0; i < length; i++) {\n str += chars[Math.floor(Math.random() * charsLength)];\n }\n return namespace ? `${str}-${namespace}` : str;\n}\n\n/**\n * Escape a string so it can be used as a regexp pattern\n * @function\n * @see https://stackoverflow.com/a/9310752/4317384\n *\n * @param {String} str - string to escape.\n * @returns {String} - escaped string\n */\nfunction RegExpEscape(str){\n return str.replace(/[-[\\]{}()*+?.,\\\\^$|#\\s]/g, '\\\\$&');\n}\n\nfunction transitionend($elem){\n var transitions = {\n 'transition': 'transitionend',\n 'WebkitTransition': 'webkitTransitionEnd',\n 'MozTransition': 'transitionend',\n 'OTransition': 'otransitionend'\n };\n var elem = document.createElement('div'),\n end;\n\n for (let transition in transitions){\n if (typeof elem.style[transition] !== 'undefined'){\n end = transitions[transition];\n }\n }\n if (end) {\n return end;\n } else {\n setTimeout(function(){\n $elem.triggerHandler('transitionend', [$elem]);\n }, 1);\n return 'transitionend';\n }\n}\n\n/**\n * Return an event type to listen for window load.\n *\n * If `$elem` is passed, an event will be triggered on `$elem`. If window is already loaded, the event will still be triggered.\n * If `handler` is passed, attach it to the event on `$elem`.\n * Calling `onLoad` without handler allows you to get the event type that will be triggered before attaching the handler by yourself.\n * @function\n *\n * @param {Object} [] $elem - jQuery element on which the event will be triggered if passed.\n * @param {Function} [] handler - function to attach to the event.\n * @returns {String} - event type that should or will be triggered.\n */\nfunction onLoad($elem, handler) {\n const didLoad = document.readyState === 'complete';\n const eventType = (didLoad ? '_didLoad' : 'load') + '.zf.util.onLoad';\n const cb = () => $elem.triggerHandler(eventType);\n\n if ($elem) {\n if (handler) $elem.one(eventType, handler);\n\n if (didLoad)\n setTimeout(cb);\n else\n $(window).one('load', cb);\n }\n\n return eventType;\n}\n\n/**\n * Retuns an handler for the `mouseleave` that ignore disappeared mouses.\n *\n * If the mouse \"disappeared\" from the document (like when going on a browser UI element, See https://git.io/zf-11410),\n * the event is ignored.\n * - If the `ignoreLeaveWindow` is `true`, the event is ignored when the user actually left the window\n * (like by switching to an other window with [Alt]+[Tab]).\n * - If the `ignoreReappear` is `true`, the event will be ignored when the mouse will reappear later on the document\n * outside of the element it left.\n *\n * @function\n *\n * @param {Function} [] handler - handler for the filtered `mouseleave` event to watch.\n * @param {Object} [] options - object of options:\n * - {Boolean} [false] ignoreLeaveWindow - also ignore when the user switched windows.\n * - {Boolean} [false] ignoreReappear - also ignore when the mouse reappeared outside of the element it left.\n * @returns {Function} - filtered handler to use to listen on the `mouseleave` event.\n */\nfunction ignoreMousedisappear(handler, { ignoreLeaveWindow = false, ignoreReappear = false } = {}) {\n return function leaveEventHandler(eLeave, ...rest) {\n const callback = handler.bind(this, eLeave, ...rest);\n\n // The mouse left: call the given callback if the mouse entered elsewhere\n if (eLeave.relatedTarget !== null) {\n return callback();\n }\n\n // Otherwise, check if the mouse actually left the window.\n // In firefox if the user switched between windows, the window sill have the focus by the time\n // the event is triggered. We have to debounce the event to test this case.\n setTimeout(function leaveEventDebouncer() {\n if (!ignoreLeaveWindow && document.hasFocus && !document.hasFocus()) {\n return callback();\n }\n\n // Otherwise, wait for the mouse to reeapear outside of the element,\n if (!ignoreReappear) {\n $(document).one('mouseenter', function reenterEventHandler(eReenter) {\n if (!$(eLeave.currentTarget).has(eReenter.target).length) {\n // Fill where the mouse finally entered.\n eLeave.relatedTarget = eReenter.target;\n callback();\n }\n });\n }\n\n }, 0);\n };\n}\n\n\nexport { rtl, GetYoDigits, RegExpEscape, transitionend, onLoad, ignoreMousedisappear };\n","import $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Nest } from './foundation.util.nest';\nimport { GetYoDigits, transitionend } from './foundation.core.utils';\nimport { Box } from './foundation.util.box';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * Drilldown module.\n * @module foundation.drilldown\n * @requires foundation.util.keyboard\n * @requires foundation.util.nest\n * @requires foundation.util.box\n */\n\nclass Drilldown extends Plugin {\n /**\n * Creates a new instance of a drilldown menu.\n * @class\n * @name Drilldown\n * @param {jQuery} element - jQuery object to make into an accordion menu.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Drilldown.defaults, this.$element.data(), options);\n this.className = 'Drilldown'; // ie9 back compat\n\n this._init();\n\n Keyboard.register('Drilldown', {\n 'ENTER': 'open',\n 'SPACE': 'open',\n 'ARROW_RIGHT': 'next',\n 'ARROW_UP': 'up',\n 'ARROW_DOWN': 'down',\n 'ARROW_LEFT': 'previous',\n 'ESCAPE': 'close',\n });\n }\n\n /**\n * Initializes the drilldown by creating jQuery collections of elements\n * @private\n */\n _init() {\n Nest.Feather(this.$element, 'drilldown');\n\n if(this.options.autoApplyClass) {\n this.$element.addClass('drilldown');\n }\n\n this.$element.attr({\n 'aria-multiselectable': false\n });\n this.$submenuAnchors = this.$element.find('li.is-drilldown-submenu-parent').children('a');\n this.$submenus = this.$submenuAnchors.parent('li').children('[data-submenu]').attr('role', 'group');\n this.$menuItems = this.$element.find('li').not('.js-drilldown-back').find('a');\n\n // Set the main menu as current by default (unless a submenu is selected)\n // Used to set the wrapper height when the drilldown is closed/reopened from any (sub)menu\n this.$currentMenu = this.$element;\n\n this.$element.attr('data-mutate', (this.$element.attr('data-drilldown') || GetYoDigits(6, 'drilldown')));\n\n this._prepareMenu();\n this._registerEvents();\n\n this._keyboardEvents();\n }\n\n /**\n * prepares drilldown menu by setting attributes to links and elements\n * sets a min height to prevent content jumping\n * wraps the element if not already wrapped\n * @private\n * @function\n */\n _prepareMenu() {\n var _this = this;\n // if(!this.options.holdOpen){\n // this._menuLinkEvents();\n // }\n this.$submenuAnchors.each(function(){\n var $link = $(this);\n var $sub = $link.parent();\n if(_this.options.parentLink){\n $link.clone().prependTo($sub.children('[data-submenu]')).wrap('
  • ');\n }\n $link.data('savedHref', $link.attr('href')).removeAttr('href').attr('tabindex', 0);\n $link.children('[data-submenu]')\n .attr({\n 'aria-hidden': true,\n 'tabindex': 0,\n 'role': 'group'\n });\n _this._events($link);\n });\n this.$submenus.each(function(){\n var $menu = $(this),\n $back = $menu.find('.js-drilldown-back');\n if(!$back.length){\n switch (_this.options.backButtonPosition) {\n case \"bottom\":\n $menu.append(_this.options.backButton);\n break;\n case \"top\":\n $menu.prepend(_this.options.backButton);\n break;\n default:\n console.error(\"Unsupported backButtonPosition value '\" + _this.options.backButtonPosition + \"'\");\n }\n }\n _this._back($menu);\n });\n\n this.$submenus.addClass('invisible');\n if(!this.options.autoHeight) {\n this.$submenus.addClass('drilldown-submenu-cover-previous');\n }\n\n // create a wrapper on element if it doesn't exist.\n if(!this.$element.parent().hasClass('is-drilldown')){\n this.$wrapper = $(this.options.wrapper).addClass('is-drilldown');\n if(this.options.animateHeight) this.$wrapper.addClass('animate-height');\n this.$element.wrap(this.$wrapper);\n }\n // set wrapper\n this.$wrapper = this.$element.parent();\n this.$wrapper.css(this._getMaxDims());\n }\n\n _resize() {\n this.$wrapper.css({'max-width': 'none', 'min-height': 'none'});\n // _getMaxDims has side effects (boo) but calling it should update all other necessary heights & widths\n this.$wrapper.css(this._getMaxDims());\n }\n\n /**\n * Adds event handlers to elements in the menu.\n * @function\n * @private\n * @param {jQuery} $elem - the current menu item to add handlers to.\n */\n _events($elem) {\n var _this = this;\n\n $elem.off('click.zf.drilldown')\n .on('click.zf.drilldown', function(e){\n if($(e.target).parentsUntil('ul', 'li').hasClass('is-drilldown-submenu-parent')){\n e.preventDefault();\n }\n\n // if(e.target !== e.currentTarget.firstElementChild){\n // return false;\n // }\n _this._show($elem.parent('li'));\n\n if(_this.options.closeOnClick){\n var $body = $('body');\n $body.off('.zf.drilldown').on('click.zf.drilldown', function(e){\n if (e.target === _this.$element[0] || $.contains(_this.$element[0], e.target)) { return; }\n e.preventDefault();\n _this._hideAll();\n $body.off('.zf.drilldown');\n });\n }\n });\n }\n\n /**\n * Adds event handlers to the menu element.\n * @function\n * @private\n */\n _registerEvents() {\n if(this.options.scrollTop){\n this._bindHandler = this._scrollTop.bind(this);\n this.$element.on('open.zf.drilldown hide.zf.drilldown close.zf.drilldown closed.zf.drilldown',this._bindHandler);\n }\n this.$element.on('mutateme.zf.trigger', this._resize.bind(this));\n }\n\n /**\n * Scroll to Top of Element or data-scroll-top-element\n * @function\n * @fires Drilldown#scrollme\n */\n _scrollTop() {\n var _this = this;\n var $scrollTopElement = _this.options.scrollTopElement!=''?$(_this.options.scrollTopElement):_this.$element,\n scrollPos = parseInt($scrollTopElement.offset().top+_this.options.scrollTopOffset, 10);\n $('html, body').stop(true).animate({ scrollTop: scrollPos }, _this.options.animationDuration, _this.options.animationEasing,function(){\n /**\n * Fires after the menu has scrolled\n * @event Drilldown#scrollme\n */\n if(this===$('html')[0])_this.$element.trigger('scrollme.zf.drilldown');\n });\n }\n\n /**\n * Adds keydown event listener to `li`'s in the menu.\n * @private\n */\n _keyboardEvents() {\n var _this = this;\n\n this.$menuItems.add(this.$element.find('.js-drilldown-back > a, .is-submenu-parent-item > a')).on('keydown.zf.drilldown', function(e){\n var $element = $(this),\n $elements = $element.parent('li').parent('ul').children('li').children('a'),\n $prevElement,\n $nextElement;\n\n $elements.each(function(i) {\n if ($(this).is($element)) {\n $prevElement = $elements.eq(Math.max(0, i-1));\n $nextElement = $elements.eq(Math.min(i+1, $elements.length-1));\n return;\n }\n });\n\n Keyboard.handleKey(e, 'Drilldown', {\n next: function() {\n if ($element.is(_this.$submenuAnchors)) {\n _this._show($element.parent('li'));\n $element.parent('li').one(transitionend($element), function(){\n $element.parent('li').find('ul li a').not('.js-drilldown-back a').first().focus();\n });\n return true;\n }\n },\n previous: function() {\n _this._hide($element.parent('li').parent('ul'));\n $element.parent('li').parent('ul').one(transitionend($element), function(){\n setTimeout(function() {\n $element.parent('li').parent('ul').parent('li').children('a').first().focus();\n }, 1);\n });\n return true;\n },\n up: function() {\n $prevElement.focus();\n // Don't tap focus on first element in root ul\n return !$element.is(_this.$element.find('> li:first-child > a'));\n },\n down: function() {\n $nextElement.focus();\n // Don't tap focus on last element in root ul\n return !$element.is(_this.$element.find('> li:last-child > a'));\n },\n close: function() {\n // Don't close on element in root ul\n if (!$element.is(_this.$element.find('> li > a'))) {\n _this._hide($element.parent().parent());\n $element.parent().parent().siblings('a').focus();\n }\n },\n open: function() {\n if (_this.options.parentLink && $element.attr('href')) { // Link with href\n return false;\n } else if (!$element.is(_this.$menuItems)) { // not menu item means back button\n _this._hide($element.parent('li').parent('ul'));\n $element.parent('li').parent('ul').one(transitionend($element), function(){\n setTimeout(function() {\n $element.parent('li').parent('ul').parent('li').children('a').first().focus();\n }, 1);\n });\n return true;\n } else if ($element.is(_this.$submenuAnchors)) { // Sub menu item\n _this._show($element.parent('li'));\n $element.parent('li').one(transitionend($element), function(){\n $element.parent('li').find('ul li a').not('.js-drilldown-back a').first().focus();\n });\n return true;\n }\n },\n handled: function(preventDefault) {\n if (preventDefault) {\n e.preventDefault();\n }\n }\n });\n }); // end keyboardAccess\n }\n\n /**\n * Closes all open elements, and returns to root menu.\n * @function\n * @fires Drilldown#close\n * @fires Drilldown#closed\n */\n _hideAll() {\n var $elem = this.$element.find('.is-drilldown-submenu.is-active')\n $elem.addClass('is-closing');\n\n if (this.options.autoHeight) {\n const calcHeight = $elem.parent().closest('ul').data('calcHeight');\n this.$wrapper.css({ height: calcHeight });\n }\n\n /**\n * Fires when the menu is closing.\n * @event Drilldown#close\n */\n this.$element.trigger('close.zf.drilldown');\n\n $elem.one(transitionend($elem), () => {\n $elem.removeClass('is-active is-closing');\n\n /**\n * Fires when the menu is fully closed.\n * @event Drilldown#closed\n */\n this.$element.trigger('closed.zf.drilldown');\n });\n }\n\n /**\n * Adds event listener for each `back` button, and closes open menus.\n * @function\n * @fires Drilldown#back\n * @param {jQuery} $elem - the current sub-menu to add `back` event.\n */\n _back($elem) {\n var _this = this;\n $elem.off('click.zf.drilldown');\n $elem.children('.js-drilldown-back')\n .on('click.zf.drilldown', function(e){\n // console.log('mouseup on back');\n _this._hide($elem);\n\n // If there is a parent submenu, call show\n let parentSubMenu = $elem.parent('li').parent('ul').parent('li');\n if (parentSubMenu.length) {\n _this._show(parentSubMenu);\n }\n else {\n _this.$currentMenu = _this.$element;\n }\n });\n }\n\n /**\n * Adds event listener to menu items w/o submenus to close open menus on click.\n * @function\n * @private\n */\n _menuLinkEvents() {\n var _this = this;\n this.$menuItems.not('.is-drilldown-submenu-parent')\n .off('click.zf.drilldown')\n .on('click.zf.drilldown', function(e){\n setTimeout(function(){\n _this._hideAll();\n }, 0);\n });\n }\n\n /**\n * Sets the CSS classes for submenu to show it.\n * @function\n * @private\n * @param {jQuery} $elem - the target submenu (`ul` tag)\n * @param {boolean} trigger - trigger drilldown event\n */\n _setShowSubMenuClasses($elem, trigger) {\n $elem.addClass('is-active').removeClass('invisible').attr('aria-hidden', false);\n $elem.parent('li').attr('aria-expanded', true);\n if (trigger === true) {\n this.$element.trigger('open.zf.drilldown', [$elem]);\n }\n }\n\n /**\n * Sets the CSS classes for submenu to hide it.\n * @function\n * @private\n * @param {jQuery} $elem - the target submenu (`ul` tag)\n * @param {boolean} trigger - trigger drilldown event\n */\n _setHideSubMenuClasses($elem, trigger) {\n $elem.removeClass('is-active').addClass('invisible').attr('aria-hidden', true);\n $elem.parent('li').attr('aria-expanded', false);\n if (trigger === true) {\n $elem.trigger('hide.zf.drilldown', [$elem]);\n }\n }\n\n /**\n * Opens a specific drilldown (sub)menu no matter which (sub)menu in it is currently visible.\n * Compared to _show() this lets you jump into any submenu without clicking through every submenu on the way to it.\n * @function\n * @fires Drilldown#open\n * @param {jQuery} $elem - the target (sub)menu (`ul` tag)\n * @param {boolean} autoFocus - if true the first link in the target (sub)menu gets auto focused\n */\n _showMenu($elem, autoFocus) {\n\n var _this = this;\n\n // Reset drilldown\n var $expandedSubmenus = this.$element.find('li[aria-expanded=\"true\"] > ul[data-submenu]');\n $expandedSubmenus.each(function(index) {\n _this._setHideSubMenuClasses($(this));\n });\n\n // Save the menu as the currently displayed one.\n this.$currentMenu = $elem;\n\n // If target menu is root, focus first link & exit\n if ($elem.is('[data-drilldown]')) {\n if (autoFocus === true) $elem.find('li > a').first().focus();\n if (this.options.autoHeight) this.$wrapper.css('height', $elem.data('calcHeight'));\n return;\n }\n\n // Find all submenus on way to root incl. the element itself\n var $submenus = $elem.children().first().parentsUntil('[data-drilldown]', '[data-submenu]');\n\n // Open target menu and all submenus on its way to root\n $submenus.each(function(index) {\n\n // Update height of first child (target menu) if autoHeight option true\n if (index === 0 && _this.options.autoHeight) {\n _this.$wrapper.css('height', $(this).data('calcHeight'));\n }\n\n var isLastChild = index == $submenus.length - 1;\n\n // Add transitionsend listener to last child (root due to reverse order) to open target menu's first link\n // Last child makes sure the event gets always triggered even if going through several menus\n if (isLastChild === true) {\n $(this).one(transitionend($(this)), () => {\n if (autoFocus === true) {\n $elem.find('li > a').first().focus();\n }\n });\n }\n\n _this._setShowSubMenuClasses($(this), isLastChild);\n });\n }\n\n /**\n * Opens a submenu.\n * @function\n * @fires Drilldown#open\n * @param {jQuery} $elem - the current element with a submenu to open, i.e. the `li` tag.\n */\n _show($elem) {\n const $submenu = $elem.children('[data-submenu]');\n\n $elem.attr('aria-expanded', true);\n\n this.$currentMenu = $submenu;\n\n //hide drilldown parent menu when submenu is open\n // this removes it from the dom so that the tab key will take the user to the next visible element\n $elem.parent().closest('ul').addClass('invisible');\n\n // add visible class to submenu to override invisible class above\n $submenu.addClass('is-active visible').removeClass('invisible').attr('aria-hidden', false);\n\n if (this.options.autoHeight) {\n this.$wrapper.css({ height: $submenu.data('calcHeight') });\n }\n\n /**\n * Fires when the submenu has opened.\n * @event Drilldown#open\n */\n this.$element.trigger('open.zf.drilldown', [$elem]);\n }\n\n /**\n * Hides a submenu\n * @function\n * @fires Drilldown#hide\n * @param {jQuery} $elem - the current sub-menu to hide, i.e. the `ul` tag.\n */\n _hide($elem) {\n if(this.options.autoHeight) this.$wrapper.css({height:$elem.parent().closest('ul').data('calcHeight')});\n var _this = this;\n $elem.parent().closest('ul').removeClass('invisible');\n $elem.parent('li').attr('aria-expanded', false);\n $elem.attr('aria-hidden', true);\n $elem.addClass('is-closing')\n .one(transitionend($elem), function(){\n $elem.removeClass('is-active is-closing visible');\n $elem.blur().addClass('invisible');\n });\n /**\n * Fires when the submenu has closed.\n * @event Drilldown#hide\n */\n $elem.trigger('hide.zf.drilldown', [$elem]);\n }\n\n /**\n * Iterates through the nested menus to calculate the min-height, and max-width for the menu.\n * Prevents content jumping.\n * @function\n * @private\n */\n _getMaxDims() {\n var maxHeight = 0, result = {}, _this = this;\n\n // Recalculate menu heights and total max height\n this.$submenus.add(this.$element).each(function(){\n var numOfElems = $(this).children('li').length;\n var height = Box.GetDimensions(this).height;\n\n maxHeight = height > maxHeight ? height : maxHeight;\n\n if(_this.options.autoHeight) {\n $(this).data('calcHeight',height);\n }\n });\n\n if (this.options.autoHeight)\n result['height'] = this.$currentMenu.data('calcHeight');\n else\n result['min-height'] = `${maxHeight}px`;\n\n result['max-width'] = `${this.$element[0].getBoundingClientRect().width}px`;\n\n return result;\n }\n\n /**\n * Destroys the Drilldown Menu\n * @function\n */\n _destroy() {\n $('body').off('.zf.drilldown');\n if(this.options.scrollTop) this.$element.off('.zf.drilldown',this._bindHandler);\n this._hideAll();\n\t this.$element.off('mutateme.zf.trigger');\n Nest.Burn(this.$element, 'drilldown');\n this.$element.unwrap()\n .find('.js-drilldown-back, .is-submenu-parent-item').remove()\n .end().find('.is-active, .is-closing, .is-drilldown-submenu').removeClass('is-active is-closing is-drilldown-submenu').off('transitionend otransitionend webkitTransitionEnd')\n .end().find('[data-submenu]').removeAttr('aria-hidden tabindex role');\n this.$submenuAnchors.each(function() {\n $(this).off('.zf.drilldown');\n });\n\n this.$element.find('[data-is-parent-link]').detach();\n this.$submenus.removeClass('drilldown-submenu-cover-previous invisible');\n\n this.$element.find('a').each(function(){\n var $link = $(this);\n $link.removeAttr('tabindex');\n if($link.data('savedHref')){\n $link.attr('href', $link.data('savedHref')).removeData('savedHref');\n }else{ return; }\n });\n };\n}\n\nDrilldown.defaults = {\n /**\n * Drilldowns depend on styles in order to function properly; in the default build of Foundation these are\n * on the `drilldown` class. This option auto-applies this class to the drilldown upon initialization.\n * @option\n * @type {boolean}\n * @default true\n */\n autoApplyClass: true,\n /**\n * Markup used for JS generated back button. Prepended or appended (see backButtonPosition) to submenu lists and deleted on `destroy` method, 'js-drilldown-back' class required. Remove the backslash (`\\`) if copy and pasting.\n * @option\n * @type {string}\n * @default '
  • Back
  • '\n */\n backButton: '
  • Back
  • ',\n /**\n * Position the back button either at the top or bottom of drilldown submenus. Can be `'left'` or `'bottom'`.\n * @option\n * @type {string}\n * @default top\n */\n backButtonPosition: 'top',\n /**\n * Markup used to wrap drilldown menu. Use a class name for independent styling; the JS applied class: `is-drilldown` is required. Remove the backslash (`\\`) if copy and pasting.\n * @option\n * @type {string}\n * @default '
    '\n */\n wrapper: '
    ',\n /**\n * Adds the parent link to the submenu.\n * @option\n * @type {boolean}\n * @default false\n */\n parentLink: false,\n /**\n * Allow the menu to return to root list on body click.\n * @option\n * @type {boolean}\n * @default false\n */\n closeOnClick: false,\n /**\n * Allow the menu to auto adjust height.\n * @option\n * @type {boolean}\n * @default false\n */\n autoHeight: false,\n /**\n * Animate the auto adjust height.\n * @option\n * @type {boolean}\n * @default false\n */\n animateHeight: false,\n /**\n * Scroll to the top of the menu after opening a submenu or navigating back using the menu back button\n * @option\n * @type {boolean}\n * @default false\n */\n scrollTop: false,\n /**\n * String jquery selector (for example 'body') of element to take offset().top from, if empty string the drilldown menu offset().top is taken\n * @option\n * @type {string}\n * @default ''\n */\n scrollTopElement: '',\n /**\n * ScrollTop offset\n * @option\n * @type {number}\n * @default 0\n */\n scrollTopOffset: 0,\n /**\n * Scroll animation duration\n * @option\n * @type {number}\n * @default 500\n */\n animationDuration: 500,\n /**\n * Scroll animation easing. Can be `'swing'` or `'linear'`.\n * @option\n * @type {string}\n * @see {@link https://api.jquery.com/animate|JQuery animate}\n * @default 'swing'\n */\n animationEasing: 'swing'\n // holdOpen: false\n};\n\nexport {Drilldown};\n","import $ from 'jquery';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { GetYoDigits, ignoreMousedisappear } from './foundation.core.utils';\nimport { Positionable } from './foundation.positionable';\n\nimport { Triggers } from './foundation.util.triggers';\nimport { Touch } from './foundation.util.touch'\n\n/**\n * Dropdown module.\n * @module foundation.dropdown\n * @requires foundation.util.keyboard\n * @requires foundation.util.box\n * @requires foundation.util.touch\n * @requires foundation.util.triggers\n */\nclass Dropdown extends Positionable {\n /**\n * Creates a new instance of a dropdown.\n * @class\n * @name Dropdown\n * @param {jQuery} element - jQuery object to make into a dropdown.\n * Object should be of the dropdown panel, rather than its anchor.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Dropdown.defaults, this.$element.data(), options);\n this.className = 'Dropdown'; // ie9 back compat\n\n // Touch and Triggers init are idempotent, just need to make sure they are initialized\n Touch.init($);\n Triggers.init($);\n\n this._init();\n\n Keyboard.register('Dropdown', {\n 'ENTER': 'toggle',\n 'SPACE': 'toggle',\n 'ESCAPE': 'close'\n });\n }\n\n /**\n * Initializes the plugin by setting/checking options and attributes, adding helper variables, and saving the anchor.\n * @function\n * @private\n */\n _init() {\n var $id = this.$element.attr('id');\n\n this.$anchors = $(`[data-toggle=\"${$id}\"]`).length ? $(`[data-toggle=\"${$id}\"]`) : $(`[data-open=\"${$id}\"]`);\n this.$anchors.attr({\n 'aria-controls': $id,\n 'data-is-focus': false,\n 'data-yeti-box': $id,\n 'aria-haspopup': true,\n 'aria-expanded': false\n });\n\n this._setCurrentAnchor(this.$anchors.first());\n\n if(this.options.parentClass){\n this.$parent = this.$element.parents('.' + this.options.parentClass);\n }else{\n this.$parent = null;\n }\n\n // Set [aria-labelledby] on the Dropdown if it is not set\n if (typeof this.$element.attr('aria-labelledby') === 'undefined') {\n // Get the anchor ID or create one\n if (typeof this.$currentAnchor.attr('id') === 'undefined') {\n this.$currentAnchor.attr('id', GetYoDigits(6, 'dd-anchor'));\n }\n\n this.$element.attr('aria-labelledby', this.$currentAnchor.attr('id'));\n }\n\n this.$element.attr({\n 'aria-hidden': 'true',\n 'data-yeti-box': $id,\n 'data-resize': $id,\n });\n\n super._init();\n this._events();\n }\n\n _getDefaultPosition() {\n // handle legacy classnames\n var position = this.$element[0].className.match(/(top|left|right|bottom)/g);\n if(position) {\n return position[0];\n } else {\n return 'bottom'\n }\n }\n\n _getDefaultAlignment() {\n // handle legacy float approach\n var horizontalPosition = /float-(\\S+)/.exec(this.$currentAnchor.attr('class'));\n if(horizontalPosition) {\n return horizontalPosition[1];\n }\n\n return super._getDefaultAlignment();\n }\n\n\n\n /**\n * Sets the position and orientation of the dropdown pane, checks for collisions if allow-overlap is not true.\n * Recursively calls itself if a collision is detected, with a new position class.\n * @function\n * @private\n */\n _setPosition() {\n this.$element.removeClass(`has-position-${this.position} has-alignment-${this.alignment}`);\n super._setPosition(this.$currentAnchor, this.$element, this.$parent);\n this.$element.addClass(`has-position-${this.position} has-alignment-${this.alignment}`);\n }\n\n /**\n * Make it a current anchor.\n * Current anchor as the reference for the position of Dropdown panes.\n * @param {HTML} el - DOM element of the anchor.\n * @function\n * @private\n */\n _setCurrentAnchor(el) {\n this.$currentAnchor = $(el);\n }\n\n /**\n * Adds event listeners to the element utilizing the triggers utility library.\n * @function\n * @private\n */\n _events() {\n var _this = this,\n hasTouch = 'ontouchstart' in window || (typeof window.ontouchstart !== 'undefined');\n\n this.$element.on({\n 'open.zf.trigger': this.open.bind(this),\n 'close.zf.trigger': this.close.bind(this),\n 'toggle.zf.trigger': this.toggle.bind(this),\n 'resizeme.zf.trigger': this._setPosition.bind(this)\n });\n\n this.$anchors.off('click.zf.trigger')\n .on('click.zf.trigger', function(e) {\n _this._setCurrentAnchor(this);\n\n if (\n // if forceFollow false, always prevent default action\n (_this.options.forceFollow === false) ||\n // if forceFollow true and hover option true, only prevent default action on 1st click\n // on 2nd click (dropown opened) the default action (e.g. follow a href) gets executed\n (hasTouch && _this.options.hover && _this.$element.hasClass('is-open') === false)\n ) {\n e.preventDefault();\n }\n });\n\n if(this.options.hover){\n this.$anchors.off('mouseenter.zf.dropdown mouseleave.zf.dropdown')\n .on('mouseenter.zf.dropdown', function(){\n _this._setCurrentAnchor(this);\n\n var bodyData = $('body').data();\n if(typeof(bodyData.whatinput) === 'undefined' || bodyData.whatinput === 'mouse') {\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function(){\n _this.open();\n _this.$anchors.data('hover', true);\n }, _this.options.hoverDelay);\n }\n }).on('mouseleave.zf.dropdown', ignoreMousedisappear(function(){\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function(){\n _this.close();\n _this.$anchors.data('hover', false);\n }, _this.options.hoverDelay);\n }));\n if(this.options.hoverPane){\n this.$element.off('mouseenter.zf.dropdown mouseleave.zf.dropdown')\n .on('mouseenter.zf.dropdown', function(){\n clearTimeout(_this.timeout);\n }).on('mouseleave.zf.dropdown', ignoreMousedisappear(function(){\n clearTimeout(_this.timeout);\n _this.timeout = setTimeout(function(){\n _this.close();\n _this.$anchors.data('hover', false);\n }, _this.options.hoverDelay);\n }));\n }\n }\n this.$anchors.add(this.$element).on('keydown.zf.dropdown', function(e) {\n\n var $target = $(this),\n visibleFocusableElements = Keyboard.findFocusable(_this.$element);\n\n Keyboard.handleKey(e, 'Dropdown', {\n open: function() {\n if ($target.is(_this.$anchors) && !$target.is('input, textarea')) {\n _this.open();\n _this.$element.attr('tabindex', -1).focus();\n e.preventDefault();\n }\n },\n close: function() {\n _this.close();\n _this.$anchors.focus();\n }\n });\n });\n }\n\n /**\n * Adds an event handler to the body to close any dropdowns on a click.\n * @function\n * @private\n */\n _addBodyHandler() {\n var $body = $(document.body).not(this.$element),\n _this = this;\n $body.off('click.zf.dropdown tap.zf.dropdown')\n .on('click.zf.dropdown tap.zf.dropdown', function (e) {\n if(_this.$anchors.is(e.target) || _this.$anchors.find(e.target).length) {\n return;\n }\n if(_this.$element.is(e.target) || _this.$element.find(e.target).length) {\n return;\n }\n _this.close();\n $body.off('click.zf.dropdown tap.zf.dropdown');\n });\n }\n\n /**\n * Opens the dropdown pane, and fires a bubbling event to close other dropdowns.\n * @function\n * @fires Dropdown#closeme\n * @fires Dropdown#show\n */\n open() {\n // var _this = this;\n /**\n * Fires to close other open dropdowns, typically when dropdown is opening\n * @event Dropdown#closeme\n */\n this.$element.trigger('closeme.zf.dropdown', this.$element.attr('id'));\n this.$anchors.addClass('hover')\n .attr({'aria-expanded': true});\n // this.$element/*.show()*/;\n\n this.$element.addClass('is-opening');\n this._setPosition();\n this.$element.removeClass('is-opening').addClass('is-open')\n .attr({'aria-hidden': false});\n\n if(this.options.autoFocus){\n var $focusable = Keyboard.findFocusable(this.$element);\n if($focusable.length){\n $focusable.eq(0).focus();\n }\n }\n\n if(this.options.closeOnClick){ this._addBodyHandler(); }\n\n if (this.options.trapFocus) {\n Keyboard.trapFocus(this.$element);\n }\n\n /**\n * Fires once the dropdown is visible.\n * @event Dropdown#show\n */\n this.$element.trigger('show.zf.dropdown', [this.$element]);\n }\n\n /**\n * Closes the open dropdown pane.\n * @function\n * @fires Dropdown#hide\n */\n close() {\n if(!this.$element.hasClass('is-open')){\n return false;\n }\n this.$element.removeClass('is-open')\n .attr({'aria-hidden': true});\n\n this.$anchors.removeClass('hover')\n .attr('aria-expanded', false);\n\n /**\n * Fires once the dropdown is no longer visible.\n * @event Dropdown#hide\n */\n this.$element.trigger('hide.zf.dropdown', [this.$element]);\n\n if (this.options.trapFocus) {\n Keyboard.releaseFocus(this.$element);\n }\n }\n\n /**\n * Toggles the dropdown pane's visibility.\n * @function\n */\n toggle() {\n if(this.$element.hasClass('is-open')){\n if(this.$anchors.data('hover')) return;\n this.close();\n }else{\n this.open();\n }\n }\n\n /**\n * Destroys the dropdown.\n * @function\n */\n _destroy() {\n this.$element.off('.zf.trigger').hide();\n this.$anchors.off('.zf.dropdown');\n $(document.body).off('click.zf.dropdown tap.zf.dropdown');\n\n }\n}\n\nDropdown.defaults = {\n /**\n * Class that designates bounding container of Dropdown (default: window)\n * @option\n * @type {?string}\n * @default null\n */\n parentClass: null,\n /**\n * Amount of time to delay opening a submenu on hover event.\n * @option\n * @type {number}\n * @default 250\n */\n hoverDelay: 250,\n /**\n * Allow submenus to open on hover events\n * @option\n * @type {boolean}\n * @default false\n */\n hover: false,\n /**\n * Don't close dropdown when hovering over dropdown pane\n * @option\n * @type {boolean}\n * @default false\n */\n hoverPane: false,\n /**\n * Number of pixels between the dropdown pane and the triggering element on open.\n * @option\n * @type {number}\n * @default 0\n */\n vOffset: 0,\n /**\n * Number of pixels between the dropdown pane and the triggering element on open.\n * @option\n * @type {number}\n * @default 0\n */\n hOffset: 0,\n /**\n * Position of dropdown. Can be left, right, bottom, top, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n position: 'auto',\n /**\n * Alignment of dropdown relative to anchor. Can be left, right, bottom, top, center, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n alignment: 'auto',\n /**\n * Allow overlap of container/window. If false, dropdown will first try to position as defined by data-position and data-alignment, but reposition if it would cause an overflow.\n * @option\n * @type {boolean}\n * @default false\n */\n allowOverlap: false,\n /**\n * Allow overlap of only the bottom of the container. This is the most common\n * behavior for dropdowns, allowing the dropdown to extend the bottom of the\n * screen but not otherwise influence or break out of the container.\n * @option\n * @type {boolean}\n * @default true\n */\n allowBottomOverlap: true,\n /**\n * Allow the plugin to trap focus to the dropdown pane if opened with keyboard commands.\n * @option\n * @type {boolean}\n * @default false\n */\n trapFocus: false,\n /**\n * Allow the plugin to set focus to the first focusable element within the pane, regardless of method of opening.\n * @option\n * @type {boolean}\n * @default false\n */\n autoFocus: false,\n /**\n * Allows a click on the body to close the dropdown.\n * @option\n * @type {boolean}\n * @default false\n */\n closeOnClick: false,\n /**\n * If true the default action of the toggle (e.g. follow a link with href) gets executed on click. If hover option is also true the default action gets prevented on first click for mobile / touch devices and executed on second click.\n * @option\n * @type {boolean}\n * @default true\n */\n forceFollow: true\n};\n\nexport {Dropdown};\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { rtl as Rtl, ignoreMousedisappear } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { Nest } from './foundation.util.nest';\nimport { Box } from './foundation.util.box';\nimport { Touch } from './foundation.util.touch'\n\n\n/**\n * DropdownMenu module.\n * @module foundation.dropdownMenu\n * @requires foundation.util.keyboard\n * @requires foundation.util.box\n * @requires foundation.util.nest\n * @requires foundation.util.touch\n */\n\nclass DropdownMenu extends Plugin {\n /**\n * Creates a new instance of DropdownMenu.\n * @class\n * @name DropdownMenu\n * @fires DropdownMenu#init\n * @param {jQuery} element - jQuery object to make into a dropdown menu.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, DropdownMenu.defaults, this.$element.data(), options);\n this.className = 'DropdownMenu'; // ie9 back compat\n\n Touch.init($); // Touch init is idempotent, we just need to make sure it's initialied.\n\n this._init();\n\n Keyboard.register('DropdownMenu', {\n 'ENTER': 'open',\n 'SPACE': 'open',\n 'ARROW_RIGHT': 'next',\n 'ARROW_UP': 'up',\n 'ARROW_DOWN': 'down',\n 'ARROW_LEFT': 'previous',\n 'ESCAPE': 'close'\n });\n }\n\n /**\n * Initializes the plugin, and calls _prepareMenu\n * @private\n * @function\n */\n _init() {\n Nest.Feather(this.$element, 'dropdown');\n\n var subs = this.$element.find('li.is-dropdown-submenu-parent');\n this.$element.children('.is-dropdown-submenu-parent').children('.is-dropdown-submenu').addClass('first-sub');\n\n this.$menuItems = this.$element.find('li[role=\"none\"]');\n this.$tabs = this.$element.children('li[role=\"none\"]');\n this.$tabs.find('ul.is-dropdown-submenu').addClass(this.options.verticalClass);\n\n if (this.options.alignment === 'auto') {\n if (this.$element.hasClass(this.options.rightClass) || Rtl() || this.$element.parents('.top-bar-right').is('*')) {\n this.options.alignment = 'right';\n subs.addClass('opens-left');\n } else {\n this.options.alignment = 'left';\n subs.addClass('opens-right');\n }\n } else {\n if (this.options.alignment === 'right') {\n subs.addClass('opens-left');\n } else {\n subs.addClass('opens-right');\n }\n }\n this.changed = false;\n this._events();\n };\n\n _isVertical() {\n return this.$tabs.css('display') === 'block' || this.$element.css('flex-direction') === 'column';\n }\n\n _isRtl() {\n return this.$element.hasClass('align-right') || (Rtl() && !this.$element.hasClass('align-left'));\n }\n\n /**\n * Adds event listeners to elements within the menu\n * @private\n * @function\n */\n _events() {\n var _this = this,\n hasTouch = 'ontouchstart' in window || (typeof window.ontouchstart !== 'undefined'),\n parClass = 'is-dropdown-submenu-parent';\n\n // used for onClick and in the keyboard handlers\n var handleClickFn = function(e) {\n var $elem = $(e.target).parentsUntil('ul', `.${parClass}`),\n hasSub = $elem.hasClass(parClass),\n hasClicked = $elem.attr('data-is-click') === 'true',\n $sub = $elem.children('.is-dropdown-submenu');\n\n if (hasSub) {\n if (hasClicked) {\n if (!_this.options.closeOnClick\n || (!_this.options.clickOpen && !hasTouch)\n || (_this.options.forceFollow && hasTouch)) {\n return;\n }\n e.stopImmediatePropagation();\n e.preventDefault();\n _this._hide($elem);\n }\n else {\n e.stopImmediatePropagation();\n e.preventDefault();\n _this._show($sub);\n $elem.add($elem.parentsUntil(_this.$element, `.${parClass}`)).attr('data-is-click', true);\n }\n }\n };\n\n if (this.options.clickOpen || hasTouch) {\n this.$menuItems.on('click.zf.dropdownMenu touchstart.zf.dropdownMenu', handleClickFn);\n }\n\n // Handle Leaf element Clicks\n if(_this.options.closeOnClickInside){\n this.$menuItems.on('click.zf.dropdownMenu', function(e) {\n var $elem = $(this),\n hasSub = $elem.hasClass(parClass);\n if(!hasSub){\n _this._hide();\n }\n });\n }\n\n if (hasTouch && this.options.disableHoverOnTouch) this.options.disableHover = true;\n\n if (!this.options.disableHover) {\n this.$menuItems.on('mouseenter.zf.dropdownMenu', function (e) {\n var $elem = $(this),\n hasSub = $elem.hasClass(parClass);\n\n if (hasSub) {\n clearTimeout($elem.data('_delay'));\n $elem.data('_delay', setTimeout(function () {\n _this._show($elem.children('.is-dropdown-submenu'));\n }, _this.options.hoverDelay));\n }\n }).on('mouseleave.zf.dropdownMenu', ignoreMousedisappear(function (e) {\n var $elem = $(this),\n hasSub = $elem.hasClass(parClass);\n if (hasSub && _this.options.autoclose) {\n if ($elem.attr('data-is-click') === 'true' && _this.options.clickOpen) { return false; }\n\n clearTimeout($elem.data('_delay'));\n $elem.data('_delay', setTimeout(function () {\n _this._hide($elem);\n }, _this.options.closingTime));\n }\n }));\n }\n this.$menuItems.on('keydown.zf.dropdownMenu', function(e) {\n var $element = $(e.target).parentsUntil('ul', '[role=\"none\"]'),\n isTab = _this.$tabs.index($element) > -1,\n $elements = isTab ? _this.$tabs : $element.siblings('li').add($element),\n $prevElement,\n $nextElement;\n\n $elements.each(function(i) {\n if ($(this).is($element)) {\n $prevElement = $elements.eq(i-1);\n $nextElement = $elements.eq(i+1);\n return;\n }\n });\n\n var nextSibling = function() {\n $nextElement.children('a:first').focus();\n e.preventDefault();\n }, prevSibling = function() {\n $prevElement.children('a:first').focus();\n e.preventDefault();\n }, openSub = function() {\n var $sub = $element.children('ul.is-dropdown-submenu');\n if ($sub.length) {\n _this._show($sub);\n $element.find('li > a:first').focus();\n e.preventDefault();\n } else { return; }\n }, closeSub = function() {\n //if ($element.is(':first-child')) {\n var close = $element.parent('ul').parent('li');\n close.children('a:first').focus();\n _this._hide(close);\n e.preventDefault();\n //}\n };\n var functions = {\n open: openSub,\n close: function() {\n _this._hide(_this.$element);\n _this.$menuItems.eq(0).children('a').focus(); // focus to first element\n e.preventDefault();\n }\n };\n\n if (isTab) {\n if (_this._isVertical()) { // vertical menu\n if (_this._isRtl()) { // right aligned\n $.extend(functions, {\n down: nextSibling,\n up: prevSibling,\n next: closeSub,\n previous: openSub\n });\n } else { // left aligned\n $.extend(functions, {\n down: nextSibling,\n up: prevSibling,\n next: openSub,\n previous: closeSub\n });\n }\n } else { // horizontal menu\n if (_this._isRtl()) { // right aligned\n $.extend(functions, {\n next: prevSibling,\n previous: nextSibling,\n down: openSub,\n up: closeSub\n });\n } else { // left aligned\n $.extend(functions, {\n next: nextSibling,\n previous: prevSibling,\n down: openSub,\n up: closeSub\n });\n }\n }\n } else { // not tabs -> one sub\n if (_this._isRtl()) { // right aligned\n $.extend(functions, {\n next: closeSub,\n previous: openSub,\n down: nextSibling,\n up: prevSibling\n });\n } else { // left aligned\n $.extend(functions, {\n next: openSub,\n previous: closeSub,\n down: nextSibling,\n up: prevSibling\n });\n }\n }\n Keyboard.handleKey(e, 'DropdownMenu', functions);\n\n });\n }\n\n /**\n * Adds an event handler to the body to close any dropdowns on a click.\n * @function\n * @private\n */\n _addBodyHandler() {\n const $body = $(document.body);\n this._removeBodyHandler();\n $body.on('click.zf.dropdownMenu tap.zf.dropdownMenu', (e) => {\n var isItself = !!$(e.target).closest(this.$element).length;\n if (isItself) return;\n\n this._hide();\n this._removeBodyHandler();\n });\n }\n\n /**\n * Remove the body event handler. See `_addBodyHandler`.\n * @function\n * @private\n */\n _removeBodyHandler() {\n $(document.body).off('click.zf.dropdownMenu tap.zf.dropdownMenu');\n }\n\n /**\n * Opens a dropdown pane, and checks for collisions first.\n * @param {jQuery} $sub - ul element that is a submenu to show\n * @function\n * @private\n * @fires DropdownMenu#show\n */\n _show($sub) {\n var idx = this.$tabs.index(this.$tabs.filter(function(i, el) {\n return $(el).find($sub).length > 0;\n }));\n var $sibs = $sub.parent('li.is-dropdown-submenu-parent').siblings('li.is-dropdown-submenu-parent');\n this._hide($sibs, idx);\n $sub.css('visibility', 'hidden').addClass('js-dropdown-active')\n .parent('li.is-dropdown-submenu-parent').addClass('is-active');\n var clear = Box.ImNotTouchingYou($sub, null, true);\n if (!clear) {\n var oldClass = this.options.alignment === 'left' ? '-right' : '-left',\n $parentLi = $sub.parent('.is-dropdown-submenu-parent');\n $parentLi.removeClass(`opens${oldClass}`).addClass(`opens-${this.options.alignment}`);\n clear = Box.ImNotTouchingYou($sub, null, true);\n if (!clear) {\n $parentLi.removeClass(`opens-${this.options.alignment}`).addClass('opens-inner');\n }\n this.changed = true;\n }\n $sub.css('visibility', '');\n if (this.options.closeOnClick) { this._addBodyHandler(); }\n /**\n * Fires when the new dropdown pane is visible.\n * @event DropdownMenu#show\n */\n this.$element.trigger('show.zf.dropdownMenu', [$sub]);\n }\n\n /**\n * Hides a single, currently open dropdown pane, if passed a parameter, otherwise, hides everything.\n * @function\n * @param {jQuery} $elem - element with a submenu to hide\n * @param {Number} idx - index of the $tabs collection to hide\n * @fires DropdownMenu#hide\n * @private\n */\n _hide($elem, idx) {\n var $toClose;\n if ($elem && $elem.length) {\n $toClose = $elem;\n } else if (typeof idx !== 'undefined') {\n $toClose = this.$tabs.not(function(i, el) {\n return i === idx;\n });\n }\n else {\n $toClose = this.$element;\n }\n var somethingToClose = $toClose.hasClass('is-active') || $toClose.find('.is-active').length > 0;\n\n if (somethingToClose) {\n var $activeItem = $toClose.find('li.is-active');\n $activeItem.add($toClose).attr({\n 'data-is-click': false\n }).removeClass('is-active');\n\n $toClose.find('ul.js-dropdown-active').removeClass('js-dropdown-active');\n\n if (this.changed || $toClose.find('opens-inner').length) {\n var oldClass = this.options.alignment === 'left' ? 'right' : 'left';\n $toClose.find('li.is-dropdown-submenu-parent').add($toClose)\n .removeClass(`opens-inner opens-${this.options.alignment}`)\n .addClass(`opens-${oldClass}`);\n this.changed = false;\n }\n\n clearTimeout($activeItem.data('_delay'));\n this._removeBodyHandler();\n\n /**\n * Fires when the open menus are closed.\n * @event DropdownMenu#hide\n */\n this.$element.trigger('hide.zf.dropdownMenu', [$toClose]);\n }\n }\n\n /**\n * Destroys the plugin.\n * @function\n */\n _destroy() {\n this.$menuItems.off('.zf.dropdownMenu').removeAttr('data-is-click')\n .removeClass('is-right-arrow is-left-arrow is-down-arrow opens-right opens-left opens-inner');\n $(document.body).off('.zf.dropdownMenu');\n Nest.Burn(this.$element, 'dropdown');\n }\n}\n\n/**\n * Default settings for plugin\n */\nDropdownMenu.defaults = {\n /**\n * Disallows hover events from opening submenus\n * @option\n * @type {boolean}\n * @default false\n */\n disableHover: false,\n /**\n * Disallows hover on touch devices\n * @option\n * @type {boolean}\n * @default true\n */\n disableHoverOnTouch: true,\n /**\n * Allow a submenu to automatically close on a mouseleave event, if not clicked open.\n * @option\n * @type {boolean}\n * @default true\n */\n autoclose: true,\n /**\n * Amount of time to delay opening a submenu on hover event.\n * @option\n * @type {number}\n * @default 50\n */\n hoverDelay: 50,\n /**\n * Allow a submenu to open/remain open on parent click event. Allows cursor to move away from menu.\n * @option\n * @type {boolean}\n * @default false\n */\n clickOpen: false,\n /**\n * Amount of time to delay closing a submenu on a mouseleave event.\n * @option\n * @type {number}\n * @default 500\n */\n\n closingTime: 500,\n /**\n * Position of the menu relative to what direction the submenus should open. Handled by JS. Can be `'auto'`, `'left'` or `'right'`.\n * @option\n * @type {string}\n * @default 'auto'\n */\n alignment: 'auto',\n /**\n * Allow clicks on the body to close any open submenus.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnClick: true,\n /**\n * Allow clicks on leaf anchor links to close any open submenus.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnClickInside: true,\n /**\n * Class applied to vertical oriented menus, Foundation default is `vertical`. Update this if using your own class.\n * @option\n * @type {string}\n * @default 'vertical'\n */\n verticalClass: 'vertical',\n /**\n * Class applied to right-side oriented menus, Foundation default is `align-right`. Update this if using your own class.\n * @option\n * @type {string}\n * @default 'align-right'\n */\n rightClass: 'align-right',\n /**\n * Boolean to force overide the clicking of links to perform default action, on second touch event for mobile.\n * @option\n * @type {boolean}\n * @default true\n */\n forceFollow: true\n};\n\nexport {DropdownMenu};\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad, transitionend, RegExpEscape } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { MediaQuery } from './foundation.util.mediaQuery';\n\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * OffCanvas module.\n * @module foundation.offCanvas\n * @requires foundation.util.keyboard\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.triggers\n */\n\nclass OffCanvas extends Plugin {\n /**\n * Creates a new instance of an off-canvas wrapper.\n * @class\n * @name OffCanvas\n * @fires OffCanvas#init\n * @param {Object} element - jQuery object to initialize.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.className = 'OffCanvas'; // ie9 back compat\n this.$element = element;\n this.options = $.extend({}, OffCanvas.defaults, this.$element.data(), options);\n this.contentClasses = { base: [], reveal: [] };\n this.$lastTrigger = $();\n this.$triggers = $();\n this.position = 'left';\n this.$content = $();\n this.nested = !!(this.options.nested);\n this.$sticky = $();\n this.isInCanvas = false;\n\n // Defines the CSS transition/position classes of the off-canvas content container.\n $(['push', 'overlap']).each((index, val) => {\n this.contentClasses.base.push('has-transition-'+val);\n });\n $(['left', 'right', 'top', 'bottom']).each((index, val) => {\n this.contentClasses.base.push('has-position-'+val);\n this.contentClasses.reveal.push('has-reveal-'+val);\n });\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n MediaQuery._init();\n\n this._init();\n this._events();\n\n Keyboard.register('OffCanvas', {\n 'ESCAPE': 'close'\n });\n\n }\n\n /**\n * Initializes the off-canvas wrapper by adding the exit overlay (if needed).\n * @function\n * @private\n */\n _init() {\n var id = this.$element.attr('id');\n\n this.$element.attr('aria-hidden', 'true');\n\n // Find off-canvas content, either by ID (if specified), by siblings or by closest selector (fallback)\n if (this.options.contentId) {\n this.$content = $('#'+this.options.contentId);\n } else if (this.$element.siblings('[data-off-canvas-content]').length) {\n this.$content = this.$element.siblings('[data-off-canvas-content]').first();\n } else {\n this.$content = this.$element.closest('[data-off-canvas-content]').first();\n }\n\n if (!this.options.contentId) {\n // Assume that the off-canvas element is nested if it isn't a sibling of the content\n this.nested = this.$element.siblings('[data-off-canvas-content]').length === 0;\n\n } else if (this.options.contentId && this.options.nested === null) {\n // Warning if using content ID without setting the nested option\n // Once the element is nested it is required to work properly in this case\n console.warn('Remember to use the nested option if using the content ID option!');\n }\n\n if (this.nested === true) {\n // Force transition overlap if nested\n this.options.transition = 'overlap';\n // Remove appropriate classes if already assigned in markup\n this.$element.removeClass('is-transition-push');\n }\n\n this.$element.addClass(`is-transition-${this.options.transition} is-closed`);\n\n // Find triggers that affect this element and add aria-expanded to them\n this.$triggers = $(document)\n .find('[data-open=\"'+id+'\"], [data-close=\"'+id+'\"], [data-toggle=\"'+id+'\"]')\n .attr('aria-expanded', 'false')\n .attr('aria-controls', id);\n\n // Get position by checking for related CSS class\n this.position = this.$element.is('.position-left, .position-top, .position-right, .position-bottom') ? this.$element.attr('class').match(/position\\-(left|top|right|bottom)/)[1] : this.position;\n\n // Add an overlay over the content if necessary\n if (this.options.contentOverlay === true) {\n var overlay = document.createElement('div');\n var overlayPosition = $(this.$element).css(\"position\") === 'fixed' ? 'is-overlay-fixed' : 'is-overlay-absolute';\n overlay.setAttribute('class', 'js-off-canvas-overlay ' + overlayPosition);\n this.$overlay = $(overlay);\n if(overlayPosition === 'is-overlay-fixed') {\n $(this.$overlay).insertAfter(this.$element);\n } else {\n this.$content.append(this.$overlay);\n }\n }\n\n // Get the revealOn option from the class.\n var revealOnRegExp = new RegExp(RegExpEscape(this.options.revealClass) + '([^\\\\s]+)', 'g');\n var revealOnClass = revealOnRegExp.exec(this.$element[0].className);\n if (revealOnClass) {\n this.options.isRevealed = true;\n this.options.revealOn = this.options.revealOn || revealOnClass[1];\n }\n\n // Ensure the `reveal-on-*` class is set.\n if (this.options.isRevealed === true && this.options.revealOn) {\n this.$element.first().addClass(`${this.options.revealClass}${this.options.revealOn}`);\n this._setMQChecker();\n }\n\n if (this.options.transitionTime) {\n this.$element.css('transition-duration', this.options.transitionTime);\n }\n\n // Find fixed elements that should stay fixed while off-canvas is opened\n this.$sticky = this.$content.find('[data-off-canvas-sticky]');\n if (this.$sticky.length > 0 && this.options.transition === 'push') {\n // If there's at least one match force contentScroll:false because the absolute top value doesn't get recalculated on scroll\n // Limit to push transition since there's no transform scope for overlap\n this.options.contentScroll = false;\n }\n\n let inCanvasFor = this.$element.attr('class').match(/\\bin-canvas-for-(\\w+)/);\n if (inCanvasFor && inCanvasFor.length === 2) {\n // Set `inCanvasOn` option if found in-canvas-for-[BREAKPONT] CSS class\n this.options.inCanvasOn = inCanvasFor[1];\n } else if (this.options.inCanvasOn) {\n // Ensure the CSS class is set\n this.$element.addClass(`in-canvas-for-${this.options.inCanvasOn}`);\n }\n\n if (this.options.inCanvasOn) {\n this._checkInCanvas();\n }\n\n // Initally remove all transition/position CSS classes from off-canvas content container.\n this._removeContentClasses();\n }\n\n /**\n * Adds event handlers to the off-canvas wrapper and the exit overlay.\n * @function\n * @private\n */\n _events() {\n this.$element.off('.zf.trigger .zf.offCanvas').on({\n 'open.zf.trigger': this.open.bind(this),\n 'close.zf.trigger': this.close.bind(this),\n 'toggle.zf.trigger': this.toggle.bind(this),\n 'keydown.zf.offCanvas': this._handleKeyboard.bind(this)\n });\n\n if (this.options.closeOnClick === true) {\n var $target = this.options.contentOverlay ? this.$overlay : this.$content;\n $target.on({'click.zf.offCanvas': this.close.bind(this)});\n }\n\n if (this.options.inCanvasOn) {\n $(window).on('changed.zf.mediaquery', () => {\n this._checkInCanvas();\n });\n }\n\n }\n\n /**\n * Applies event listener for elements that will reveal at certain breakpoints.\n * @private\n */\n _setMQChecker() {\n var _this = this;\n\n this.onLoadListener = onLoad($(window), function () {\n if (MediaQuery.atLeast(_this.options.revealOn)) {\n _this.reveal(true);\n }\n });\n\n $(window).on('changed.zf.mediaquery', function () {\n if (MediaQuery.atLeast(_this.options.revealOn)) {\n _this.reveal(true);\n } else {\n _this.reveal(false);\n }\n });\n }\n\n /**\n * Checks if InCanvas on current breakpoint and adjust off-canvas accordingly\n * @private\n */\n _checkInCanvas() {\n this.isInCanvas = MediaQuery.atLeast(this.options.inCanvasOn);\n if (this.isInCanvas === true) {\n this.close();\n }\n }\n\n /**\n * Removes the CSS transition/position classes of the off-canvas content container.\n * Removing the classes is important when another off-canvas gets opened that uses the same content container.\n * @param {Boolean} hasReveal - true if related off-canvas element is revealed.\n * @private\n */\n _removeContentClasses(hasReveal) {\n if (typeof hasReveal !== 'boolean') {\n this.$content.removeClass(this.contentClasses.base.join(' '));\n } else if (hasReveal === false) {\n this.$content.removeClass(`has-reveal-${this.position}`);\n }\n }\n\n /**\n * Adds the CSS transition/position classes of the off-canvas content container, based on the opening off-canvas element.\n * Beforehand any transition/position class gets removed.\n * @param {Boolean} hasReveal - true if related off-canvas element is revealed.\n * @private\n */\n _addContentClasses(hasReveal) {\n this._removeContentClasses(hasReveal);\n if (typeof hasReveal !== 'boolean') {\n this.$content.addClass(`has-transition-${this.options.transition} has-position-${this.position}`);\n } else if (hasReveal === true) {\n this.$content.addClass(`has-reveal-${this.position}`);\n }\n }\n\n /**\n * Preserves the fixed behavior of sticky elements on opening an off-canvas with push transition.\n * Since the off-canvas container has got a transform scope in such a case, it is done by calculating position absolute values.\n * @private\n */\n _fixStickyElements() {\n this.$sticky.each((_, el) => {\n const $el = $(el);\n\n // If sticky element is currently fixed, adjust its top value to match absolute position due to transform scope\n // Limit to push transition because postion:fixed works without problems for overlap (no transform scope)\n if ($el.css('position') === 'fixed') {\n\n // Save current inline styling to restore it if undoing the absolute fixing\n let topVal = parseInt($el.css('top'), 10);\n $el.data('offCanvasSticky', { top: topVal });\n\n let absoluteTopVal = $(document).scrollTop() + topVal;\n $el.css({ top: `${absoluteTopVal}px`, width: '100%', transition: 'none' });\n }\n });\n }\n\n /**\n * Restores the original fixed styling of sticky elements after having closed an off-canvas that got pseudo fixed beforehand.\n * This reverts the changes of _fixStickyElements()\n * @private\n */\n _unfixStickyElements() {\n this.$sticky.each((_, el) => {\n const $el = $(el);\n let stickyData = $el.data('offCanvasSticky');\n\n // If sticky element has got data object with prior values (meaning it was originally fixed) restore these values once off-canvas is closed\n if (typeof stickyData === 'object') {\n $el.css({ top: `${stickyData.top}px`, width: '', transition: '' })\n $el.data('offCanvasSticky', '');\n }\n });\n }\n\n /**\n * Handles the revealing/hiding the off-canvas at breakpoints, not the same as open.\n * @param {Boolean} isRevealed - true if element should be revealed.\n * @function\n */\n reveal(isRevealed) {\n if (isRevealed) {\n this.close();\n this.isRevealed = true;\n this.$element.attr('aria-hidden', 'false');\n this.$element.off('open.zf.trigger toggle.zf.trigger');\n this.$element.removeClass('is-closed');\n } else {\n this.isRevealed = false;\n this.$element.attr('aria-hidden', 'true');\n this.$element.off('open.zf.trigger toggle.zf.trigger').on({\n 'open.zf.trigger': this.open.bind(this),\n 'toggle.zf.trigger': this.toggle.bind(this)\n });\n this.$element.addClass('is-closed');\n }\n this._addContentClasses(isRevealed);\n }\n\n /**\n * Stops scrolling of the body when OffCanvas is open on mobile Safari and other troublesome browsers.\n * @function\n * @private\n */\n _stopScrolling(event) {\n return false;\n }\n\n /**\n * Save current finger y-position\n * @param event\n * @private\n */\n _recordScrollable(event) {\n const elem = this;\n elem.lastY = event.touches[0].pageY;\n }\n\n /**\n * Prevent further scrolling when it hits the edges\n * @param event\n * @private\n */\n _preventDefaultAtEdges(event) {\n const elem = this;\n const _this = event.data;\n const delta = elem.lastY - event.touches[0].pageY;\n elem.lastY = event.touches[0].pageY;\n\n if (!_this._canScroll(delta, elem)) {\n event.preventDefault();\n }\n }\n\n /**\n * Handle continuous scrolling of scrollbox\n * Don't bubble up to _preventDefaultAtEdges\n * @param event\n * @private\n */\n _scrollboxTouchMoved(event) {\n const elem = this;\n const _this = event.data;\n const parent = elem.closest('[data-off-canvas], [data-off-canvas-scrollbox-outer]');\n const delta = elem.lastY - event.touches[0].pageY;\n parent.lastY = elem.lastY = event.touches[0].pageY;\n\n event.stopPropagation();\n\n if (!_this._canScroll(delta, elem)) {\n if (!_this._canScroll(delta, parent)) {\n event.preventDefault();\n } else {\n parent.scrollTop += delta;\n }\n }\n }\n\n /**\n * Detect possibility of scrolling\n * @param delta\n * @param elem\n * @returns boolean\n * @private\n */\n _canScroll(delta, elem) {\n const up = delta < 0;\n const down = delta > 0;\n const allowUp = elem.scrollTop > 0;\n const allowDown = elem.scrollTop < elem.scrollHeight - elem.clientHeight;\n return up && allowUp || down && allowDown;\n }\n\n /**\n * Opens the off-canvas menu.\n * @function\n * @param {Object} event - Event object passed from listener.\n * @param {jQuery} trigger - element that triggered the off-canvas to open.\n * @fires OffCanvas#opened\n * @todo also trigger 'open' event?\n */\n open(event, trigger) {\n if (this.$element.hasClass('is-open') || this.isRevealed || this.isInCanvas) { return; }\n var _this = this;\n\n if (trigger) {\n this.$lastTrigger = trigger;\n }\n\n if (this.options.forceTo === 'top') {\n window.scrollTo(0, 0);\n } else if (this.options.forceTo === 'bottom') {\n window.scrollTo(0,document.body.scrollHeight);\n }\n\n if (this.options.transitionTime && this.options.transition !== 'overlap') {\n this.$element.siblings('[data-off-canvas-content]').css('transition-duration', this.options.transitionTime);\n } else {\n this.$element.siblings('[data-off-canvas-content]').css('transition-duration', '');\n }\n\n this.$element.addClass('is-open').removeClass('is-closed');\n\n this.$triggers.attr('aria-expanded', 'true');\n this.$element.attr('aria-hidden', 'false');\n\n this.$content.addClass('is-open-' + this.position);\n\n // If `contentScroll` is set to false, add class and disable scrolling on touch devices.\n if (this.options.contentScroll === false) {\n $('body').addClass('is-off-canvas-open').on('touchmove', this._stopScrolling);\n this.$element.on('touchstart', this._recordScrollable);\n this.$element.on('touchmove', this, this._preventDefaultAtEdges);\n this.$element.on('touchstart', '[data-off-canvas-scrollbox]', this._recordScrollable);\n this.$element.on('touchmove', '[data-off-canvas-scrollbox]', this, this._scrollboxTouchMoved);\n }\n\n if (this.options.contentOverlay === true) {\n this.$overlay.addClass('is-visible');\n }\n\n if (this.options.closeOnClick === true && this.options.contentOverlay === true) {\n this.$overlay.addClass('is-closable');\n }\n\n if (this.options.autoFocus === true) {\n this.$element.one(transitionend(this.$element), function() {\n if (!_this.$element.hasClass('is-open')) {\n return; // exit if prematurely closed\n }\n var canvasFocus = _this.$element.find('[data-autofocus]');\n if (canvasFocus.length) {\n canvasFocus.eq(0).focus();\n } else {\n _this.$element.find('a, button').eq(0).focus();\n }\n });\n }\n\n if (this.options.trapFocus === true) {\n this.$content.attr('tabindex', '-1');\n Keyboard.trapFocus(this.$element);\n }\n\n if (this.options.transition === 'push') {\n this._fixStickyElements();\n }\n\n this._addContentClasses();\n\n /**\n * Fires when the off-canvas menu opens.\n * @event OffCanvas#opened\n */\n this.$element.trigger('opened.zf.offCanvas');\n\n /**\n * Fires when the off-canvas menu open transition is done.\n * @event OffCanvas#openedEnd\n */\n this.$element.one(transitionend(this.$element), () => {\n this.$element.trigger('openedEnd.zf.offCanvas');\n });\n }\n\n /**\n * Closes the off-canvas menu.\n * @function\n * @param {Function} cb - optional cb to fire after closure.\n * @fires OffCanvas#close\n * @fires OffCanvas#closed\n */\n close(cb) {\n if (!this.$element.hasClass('is-open') || this.isRevealed) { return; }\n\n /**\n * Fires when the off-canvas menu closes.\n * @event OffCanvas#close\n */\n this.$element.trigger('close.zf.offCanvas');\n\n var _this = this;\n\n this.$element.removeClass('is-open');\n\n this.$element.attr('aria-hidden', 'true');\n\n this.$content.removeClass('is-open-left is-open-top is-open-right is-open-bottom');\n\n if (this.options.contentOverlay === true) {\n this.$overlay.removeClass('is-visible');\n }\n\n if (this.options.closeOnClick === true && this.options.contentOverlay === true) {\n this.$overlay.removeClass('is-closable');\n }\n\n this.$triggers.attr('aria-expanded', 'false');\n\n\n // Listen to transitionEnd: add class, re-enable scrolling and release focus when done.\n this.$element.one(transitionend(this.$element), (e) => {\n\n this.$element.addClass('is-closed');\n this._removeContentClasses();\n\n if (this.options.transition === 'push') {\n this._unfixStickyElements();\n }\n\n // If `contentScroll` is set to false, remove class and re-enable scrolling on touch devices.\n if (this.options.contentScroll === false) {\n $('body').removeClass('is-off-canvas-open').off('touchmove', this._stopScrolling);\n this.$element.off('touchstart', this._recordScrollable);\n this.$element.off('touchmove', this._preventDefaultAtEdges);\n this.$element.off('touchstart', '[data-off-canvas-scrollbox]', this._recordScrollable);\n this.$element.off('touchmove', '[data-off-canvas-scrollbox]', this._scrollboxTouchMoved);\n }\n\n if (this.options.trapFocus === true) {\n this.$content.removeAttr('tabindex');\n Keyboard.releaseFocus(this.$element);\n }\n\n /**\n * Fires when the off-canvas menu close transition is done.\n * @event OffCanvas#closed\n */\n this.$element.trigger('closed.zf.offCanvas');\n });\n }\n\n /**\n * Toggles the off-canvas menu open or closed.\n * @function\n * @param {Object} event - Event object passed from listener.\n * @param {jQuery} trigger - element that triggered the off-canvas to open.\n */\n toggle(event, trigger) {\n if (this.$element.hasClass('is-open')) {\n this.close(event, trigger);\n }\n else {\n this.open(event, trigger);\n }\n }\n\n /**\n * Handles keyboard input when detected. When the escape key is pressed, the off-canvas menu closes, and focus is restored to the element that opened the menu.\n * @function\n * @private\n */\n _handleKeyboard(e) {\n Keyboard.handleKey(e, 'OffCanvas', {\n close: () => {\n this.close();\n this.$lastTrigger.focus();\n return true;\n },\n handled: () => {\n e.preventDefault();\n }\n });\n }\n\n /**\n * Destroys the OffCanvas plugin.\n * @function\n */\n _destroy() {\n this.close();\n this.$element.off('.zf.trigger .zf.offCanvas');\n this.$overlay.off('.zf.offCanvas');\n if (this.onLoadListener) $(window).off(this.onLoadListener);\n }\n}\n\nOffCanvas.defaults = {\n /**\n * Allow the user to click outside of the menu to close it.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnClick: true,\n\n /**\n * Adds an overlay on top of `[data-off-canvas-content]`.\n * @option\n * @type {boolean}\n * @default true\n */\n contentOverlay: true,\n\n /**\n * Target an off-canvas content container by ID that may be placed anywhere. If null the closest content container will be taken.\n * @option\n * @type {?string}\n * @default null\n */\n contentId: null,\n\n /**\n * Define the off-canvas element is nested in an off-canvas content. This is required when using the contentId option for a nested element.\n * @option\n * @type {boolean}\n * @default null\n */\n nested: null,\n\n /**\n * Enable/disable scrolling of the main content when an off canvas panel is open.\n * @option\n * @type {boolean}\n * @default true\n */\n contentScroll: true,\n\n /**\n * Amount of time the open and close transition requires, including the appropriate milliseconds (`ms`) or seconds (`s`) unit (e.g. `500ms`, `.75s`) If none selected, pulls from body style.\n * @option\n * @type {string}\n * @default null\n */\n transitionTime: null,\n\n /**\n * Type of transition for the OffCanvas menu. Options are 'push', 'detached' or 'slide'.\n * @option\n * @type {string}\n * @default push\n */\n transition: 'push',\n\n /**\n * Force the page to scroll to top or bottom on open.\n * @option\n * @type {?string}\n * @default null\n */\n forceTo: null,\n\n /**\n * Allow the OffCanvas to remain open for certain breakpoints.\n * @option\n * @type {boolean}\n * @default false\n */\n isRevealed: false,\n\n /**\n * Breakpoint at which to reveal. JS will use a RegExp to target standard classes, if changing classnames, pass your class with the `revealClass` option.\n * @option\n * @type {?string}\n * @default null\n */\n revealOn: null,\n\n /**\n * Breakpoint at which the off-canvas gets moved into canvas content and acts as regular page element.\n * @option\n * @type {?string}\n * @default null\n */\n inCanvasOn: null,\n\n /**\n * Force focus to the offcanvas on open. If true, will focus the opening trigger on close.\n * @option\n * @type {boolean}\n * @default true\n */\n autoFocus: true,\n\n /**\n * Class used to force an OffCanvas to remain open. Foundation defaults for this are `reveal-for-large` & `reveal-for-medium`.\n * @option\n * @type {string}\n * @default reveal-for-\n * @todo improve the regex testing for this.\n */\n revealClass: 'reveal-for-',\n\n /**\n * Triggers optional focus trapping when opening an OffCanvas. Sets tabindex of [data-off-canvas-content] to -1 for accessibility purposes.\n * @option\n * @type {boolean}\n * @default false\n */\n trapFocus: false\n}\n\nexport {OffCanvas};\n","import { Box } from './foundation.util.box';\nimport { Plugin } from './foundation.core.plugin';\nimport { rtl as Rtl } from './foundation.core.utils';\n\nconst POSITIONS = ['left', 'right', 'top', 'bottom'];\nconst VERTICAL_ALIGNMENTS = ['top', 'bottom', 'center'];\nconst HORIZONTAL_ALIGNMENTS = ['left', 'right', 'center'];\n\nconst ALIGNMENTS = {\n 'left': VERTICAL_ALIGNMENTS,\n 'right': VERTICAL_ALIGNMENTS,\n 'top': HORIZONTAL_ALIGNMENTS,\n 'bottom': HORIZONTAL_ALIGNMENTS\n}\n\nfunction nextItem(item, array) {\n var currentIdx = array.indexOf(item);\n if(currentIdx === array.length - 1) {\n return array[0];\n } else {\n return array[currentIdx + 1];\n }\n}\n\n\nclass Positionable extends Plugin {\n /**\n * Abstract class encapsulating the tether-like explicit positioning logic\n * including repositioning based on overlap.\n * Expects classes to define defaults for vOffset, hOffset, position,\n * alignment, allowOverlap, and allowBottomOverlap. They can do this by\n * extending the defaults, or (for now recommended due to the way docs are\n * generated) by explicitly declaring them.\n *\n **/\n\n _init() {\n this.triedPositions = {};\n this.position = this.options.position === 'auto' ? this._getDefaultPosition() : this.options.position;\n this.alignment = this.options.alignment === 'auto' ? this._getDefaultAlignment() : this.options.alignment;\n this.originalPosition = this.position;\n this.originalAlignment = this.alignment;\n }\n\n _getDefaultPosition () {\n return 'bottom';\n }\n\n _getDefaultAlignment() {\n switch(this.position) {\n case 'bottom':\n case 'top':\n return Rtl() ? 'right' : 'left';\n case 'left':\n case 'right':\n return 'bottom';\n }\n }\n\n /**\n * Adjusts the positionable possible positions by iterating through alignments\n * and positions.\n * @function\n * @private\n */\n _reposition() {\n if(this._alignmentsExhausted(this.position)) {\n this.position = nextItem(this.position, POSITIONS);\n this.alignment = ALIGNMENTS[this.position][0];\n } else {\n this._realign();\n }\n }\n\n /**\n * Adjusts the dropdown pane possible positions by iterating through alignments\n * on the current position.\n * @function\n * @private\n */\n _realign() {\n this._addTriedPosition(this.position, this.alignment)\n this.alignment = nextItem(this.alignment, ALIGNMENTS[this.position])\n }\n\n _addTriedPosition(position, alignment) {\n this.triedPositions[position] = this.triedPositions[position] || []\n this.triedPositions[position].push(alignment);\n }\n\n _positionsExhausted() {\n var isExhausted = true;\n for(var i = 0; i < POSITIONS.length; i++) {\n isExhausted = isExhausted && this._alignmentsExhausted(POSITIONS[i]);\n }\n return isExhausted;\n }\n\n _alignmentsExhausted(position) {\n return this.triedPositions[position] && this.triedPositions[position].length == ALIGNMENTS[position].length;\n }\n\n\n // When we're trying to center, we don't want to apply offset that's going to\n // take us just off center, so wrap around to return 0 for the appropriate\n // offset in those alignments. TODO: Figure out if we want to make this\n // configurable behavior... it feels more intuitive, especially for tooltips, but\n // it's possible someone might actually want to start from center and then nudge\n // slightly off.\n _getVOffset() {\n return this.options.vOffset;\n }\n\n _getHOffset() {\n return this.options.hOffset;\n }\n\n _setPosition($anchor, $element, $parent) {\n if($anchor.attr('aria-expanded') === 'false'){ return false; }\n\n if (!this.options.allowOverlap) {\n // restore original position & alignment before checking overlap\n this.position = this.originalPosition;\n this.alignment = this.originalAlignment;\n }\n\n $element.offset(Box.GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));\n\n if(!this.options.allowOverlap) {\n var minOverlap = 100000000;\n // default coordinates to how we start, in case we can't figure out better\n var minCoordinates = {position: this.position, alignment: this.alignment};\n while(!this._positionsExhausted()) {\n let overlap = Box.OverlapArea($element, $parent, false, false, this.options.allowBottomOverlap);\n if(overlap === 0) {\n return;\n }\n\n if(overlap < minOverlap) {\n minOverlap = overlap;\n minCoordinates = {position: this.position, alignment: this.alignment};\n }\n\n this._reposition();\n\n $element.offset(Box.GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));\n }\n // If we get through the entire loop, there was no non-overlapping\n // position available. Pick the version with least overlap.\n this.position = minCoordinates.position;\n this.alignment = minCoordinates.alignment;\n $element.offset(Box.GetExplicitOffsets($element, $anchor, this.position, this.alignment, this._getVOffset(), this._getHOffset()));\n }\n }\n\n}\n\nPositionable.defaults = {\n /**\n * Position of positionable relative to anchor. Can be left, right, bottom, top, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n position: 'auto',\n /**\n * Alignment of positionable relative to anchor. Can be left, right, bottom, top, center, or auto.\n * @option\n * @type {string}\n * @default 'auto'\n */\n alignment: 'auto',\n /**\n * Allow overlap of container/window. If false, dropdown positionable first\n * try to position as defined by data-position and data-alignment, but\n * reposition if it would cause an overflow.\n * @option\n * @type {boolean}\n * @default false\n */\n allowOverlap: false,\n /**\n * Allow overlap of only the bottom of the container. This is the most common\n * behavior for dropdowns, allowing the dropdown to extend the bottom of the\n * screen but not otherwise influence or break out of the container.\n * @option\n * @type {boolean}\n * @default true\n */\n allowBottomOverlap: true,\n /**\n * Number of pixels the positionable should be separated vertically from anchor\n * @option\n * @type {number}\n * @default 0\n */\n vOffset: 0,\n /**\n * Number of pixels the positionable should be separated horizontally from anchor\n * @option\n * @type {number}\n * @default 0\n */\n hOffset: 0,\n}\n\nexport {Positionable};\n","import $ from 'jquery';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin }from './foundation.core.plugin';\n\nimport { Accordion } from './foundation.accordion';\nimport { Tabs } from './foundation.tabs';\n\n// The plugin matches the plugin classes with these plugin instances.\nvar MenuPlugins = {\n tabs: {\n cssClass: 'tabs',\n plugin: Tabs,\n open: (plugin, target) => plugin.selectTab(target),\n close: null /* not supported */,\n toggle: null /* not supported */,\n },\n accordion: {\n cssClass: 'accordion',\n plugin: Accordion,\n open: (plugin, target) => plugin.down($(target)),\n close: (plugin, target) => plugin.up($(target)),\n toggle: (plugin, target) => plugin.toggle($(target)),\n }\n};\n\n\n/**\n * ResponsiveAccordionTabs module.\n * @module foundation.responsiveAccordionTabs\n * @requires foundation.util.motion\n * @requires foundation.accordion\n * @requires foundation.tabs\n */\n\nclass ResponsiveAccordionTabs extends Plugin{\n constructor(element, options) {\n super(element, options);\n return this.options.reflow && this.storezfData || this;\n }\n\n /**\n * Creates a new instance of a responsive accordion tabs.\n * @class\n * @name ResponsiveAccordionTabs\n * @fires ResponsiveAccordionTabs#init\n * @param {jQuery} element - jQuery object to make into Responsive Accordion Tabs.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = $(element);\n this.$element.data('zfPluginBase', this);\n this.options = $.extend({}, ResponsiveAccordionTabs.defaults, this.$element.data(), options);\n\n this.rules = this.$element.data('responsive-accordion-tabs');\n this.currentMq = null;\n this.currentRule = null;\n this.currentPlugin = null;\n this.className = 'ResponsiveAccordionTabs'; // ie9 back compat\n if (!this.$element.attr('id')) {\n this.$element.attr('id',GetYoDigits(6, 'responsiveaccordiontabs'));\n }\n\n this._init();\n this._events();\n }\n\n /**\n * Initializes the Menu by parsing the classes from the 'data-responsive-accordion-tabs' attribute on the element.\n * @function\n * @private\n */\n _init() {\n MediaQuery._init();\n\n // The first time an Interchange plugin is initialized, this.rules is converted from a string of \"classes\" to an object of rules\n if (typeof this.rules === 'string') {\n let rulesTree = {};\n\n // Parse rules from \"classes\" pulled from data attribute\n let rules = this.rules.split(' ');\n\n // Iterate through every rule found\n for (let i = 0; i < rules.length; i++) {\n let rule = rules[i].split('-');\n let ruleSize = rule.length > 1 ? rule[0] : 'small';\n let rulePlugin = rule.length > 1 ? rule[1] : rule[0];\n\n if (MenuPlugins[rulePlugin] !== null) {\n rulesTree[ruleSize] = MenuPlugins[rulePlugin];\n }\n }\n\n this.rules = rulesTree;\n }\n\n this._getAllOptions();\n\n if (!$.isEmptyObject(this.rules)) {\n this._checkMediaQueries();\n }\n }\n\n _getAllOptions() {\n //get all defaults and options\n var _this = this;\n _this.allOptions = {};\n for (var key in MenuPlugins) {\n if (MenuPlugins.hasOwnProperty(key)) {\n var obj = MenuPlugins[key];\n try {\n var dummyPlugin = $('');\n var tmpPlugin = new obj.plugin(dummyPlugin,_this.options);\n for (var keyKey in tmpPlugin.options) {\n if (tmpPlugin.options.hasOwnProperty(keyKey) && keyKey !== 'zfPlugin') {\n var objObj = tmpPlugin.options[keyKey];\n _this.allOptions[keyKey] = objObj;\n }\n }\n tmpPlugin.destroy();\n }\n catch(e) {\n }\n }\n }\n }\n\n /**\n * Initializes events for the Menu.\n * @function\n * @private\n */\n _events() {\n this._changedZfMediaQueryHandler = this._checkMediaQueries.bind(this);\n $(window).on('changed.zf.mediaquery', this._changedZfMediaQueryHandler);\n }\n\n /**\n * Checks the current screen width against available media queries. If the media query has changed, and the plugin needed has changed, the plugins will swap out.\n * @function\n * @private\n */\n _checkMediaQueries() {\n var matchedMq, _this = this;\n // Iterate through each rule and find the last matching rule\n $.each(this.rules, function(key) {\n if (MediaQuery.atLeast(key)) {\n matchedMq = key;\n }\n });\n\n // No match? No dice\n if (!matchedMq) return;\n\n // Plugin already initialized? We good\n if (this.currentPlugin instanceof this.rules[matchedMq].plugin) return;\n\n // Remove existing plugin-specific CSS classes\n $.each(MenuPlugins, function(key, value) {\n _this.$element.removeClass(value.cssClass);\n });\n\n // Add the CSS class for the new plugin\n this.$element.addClass(this.rules[matchedMq].cssClass);\n\n // Create an instance of the new plugin\n if (this.currentPlugin) {\n //don't know why but on nested elements data zfPlugin get's lost\n if (!this.currentPlugin.$element.data('zfPlugin') && this.storezfData) this.currentPlugin.$element.data('zfPlugin',this.storezfData);\n this.currentPlugin.destroy();\n }\n this._handleMarkup(this.rules[matchedMq].cssClass);\n this.currentRule = this.rules[matchedMq];\n this.currentPlugin = new this.currentRule.plugin(this.$element, this.options);\n this.storezfData = this.currentPlugin.$element.data('zfPlugin');\n\n }\n\n _handleMarkup(toSet){\n var _this = this, fromString = 'accordion';\n var $panels = $('[data-tabs-content='+this.$element.attr('id')+']');\n if ($panels.length) fromString = 'tabs';\n if (fromString === toSet) {\n return;\n }\n\n var tabsTitle = _this.allOptions.linkClass?_this.allOptions.linkClass:'tabs-title';\n var tabsPanel = _this.allOptions.panelClass?_this.allOptions.panelClass:'tabs-panel';\n\n this.$element.removeAttr('role');\n var $liHeads = this.$element.children('.'+tabsTitle+',[data-accordion-item]').removeClass(tabsTitle).removeClass('accordion-item').removeAttr('data-accordion-item');\n var $liHeadsA = $liHeads.children('a').removeClass('accordion-title');\n\n if (fromString === 'tabs') {\n $panels = $panels.children('.'+tabsPanel).removeClass(tabsPanel).removeAttr('role').removeAttr('aria-hidden').removeAttr('aria-labelledby');\n $panels.children('a').removeAttr('role').removeAttr('aria-controls').removeAttr('aria-selected');\n } else {\n $panels = $liHeads.children('[data-tab-content]').removeClass('accordion-content');\n }\n\n $panels.css({display:'',visibility:''});\n $liHeads.css({display:'',visibility:''});\n if (toSet === 'accordion') {\n $panels.each(function(key,value){\n $(value).appendTo($liHeads.get(key)).addClass('accordion-content').attr('data-tab-content','').removeClass('is-active').css({height:''});\n $('[data-tabs-content='+_this.$element.attr('id')+']').after('
    ').detach();\n $liHeads.addClass('accordion-item').attr('data-accordion-item','');\n $liHeadsA.addClass('accordion-title');\n });\n } else if (toSet === 'tabs') {\n var $tabsContent = $('[data-tabs-content='+_this.$element.attr('id')+']');\n var $placeholder = $('#tabs-placeholder-'+_this.$element.attr('id'));\n if ($placeholder.length) {\n $tabsContent = $('
    ').insertAfter($placeholder).attr('data-tabs-content',_this.$element.attr('id'));\n $placeholder.remove();\n } else {\n $tabsContent = $('
    ').insertAfter(_this.$element).attr('data-tabs-content',_this.$element.attr('id'));\n }\n $panels.each(function(key,value){\n var tempValue = $(value).appendTo($tabsContent).addClass(tabsPanel);\n var hash = $liHeadsA.get(key).hash.slice(1);\n var id = $(value).attr('id') || GetYoDigits(6, 'accordion');\n if (hash !== id) {\n if (hash !== '') {\n $(value).attr('id',hash);\n } else {\n hash = id;\n $(value).attr('id',hash);\n $($liHeadsA.get(key)).attr('href',$($liHeadsA.get(key)).attr('href').replace('#','')+'#'+hash);\n }\n }\n var isActive = $($liHeads.get(key)).hasClass('is-active');\n if (isActive) {\n tempValue.addClass('is-active');\n }\n });\n $liHeads.addClass(tabsTitle);\n };\n }\n\n /**\n * Opens the plugin pane defined by `target`.\n * @param {jQuery | String} target - jQuery object or string of the id of the pane to open.\n * @see Accordion.down\n * @see Tabs.selectTab\n * @function\n */\n open(_target) {\n if (this.currentRule && typeof this.currentRule.open === 'function') {\n return this.currentRule.open(this.currentPlugin, ...arguments);\n }\n }\n\n /**\n * Closes the plugin pane defined by `target`. Not availaible for Tabs.\n * @param {jQuery | String} target - jQuery object or string of the id of the pane to close.\n * @see Accordion.up\n * @function\n */\n close(_target) {\n if (this.currentRule && typeof this.currentRule.close === 'function') {\n return this.currentRule.close(this.currentPlugin, ...arguments);\n }\n }\n\n /**\n * Toggles the plugin pane defined by `target`. Not availaible for Tabs.\n * @param {jQuery | String} target - jQuery object or string of the id of the pane to toggle.\n * @see Accordion.toggle\n * @function\n */\n toggle(_target) {\n if (this.currentRule && typeof this.currentRule.toggle === 'function') {\n return this.currentRule.toggle(this.currentPlugin, ...arguments);\n }\n }\n\n /**\n * Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out.\n * @function\n */\n _destroy() {\n if (this.currentPlugin) this.currentPlugin.destroy();\n $(window).off('changed.zf.mediaquery', this._changedZfMediaQueryHandler);\n }\n}\n\nResponsiveAccordionTabs.defaults = {};\n\nexport {ResponsiveAccordionTabs};\n","import $ from 'jquery';\n\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\n\nimport { DropdownMenu } from './foundation.dropdownMenu';\nimport { Drilldown } from './foundation.drilldown';\nimport { AccordionMenu } from './foundation.accordionMenu';\n\nlet MenuPlugins = {\n dropdown: {\n cssClass: 'dropdown',\n plugin: DropdownMenu\n },\n drilldown: {\n cssClass: 'drilldown',\n plugin: Drilldown\n },\n accordion: {\n cssClass: 'accordion-menu',\n plugin: AccordionMenu\n }\n};\n\n // import \"foundation.util.triggers.js\";\n\n\n/**\n * ResponsiveMenu module.\n * @module foundation.responsiveMenu\n * @requires foundation.util.triggers\n * @requires foundation.util.mediaQuery\n */\n\nclass ResponsiveMenu extends Plugin {\n /**\n * Creates a new instance of a responsive menu.\n * @class\n * @name ResponsiveMenu\n * @fires ResponsiveMenu#init\n * @param {jQuery} element - jQuery object to make into a dropdown menu.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = $(element);\n this.rules = this.$element.data('responsive-menu');\n this.currentMq = null;\n this.currentPlugin = null;\n this.className = 'ResponsiveMenu'; // ie9 back compat\n\n this._init();\n this._events();\n }\n\n /**\n * Initializes the Menu by parsing the classes from the 'data-ResponsiveMenu' attribute on the element.\n * @function\n * @private\n */\n _init() {\n\n MediaQuery._init();\n // The first time an Interchange plugin is initialized, this.rules is converted from a string of \"classes\" to an object of rules\n if (typeof this.rules === 'string') {\n let rulesTree = {};\n\n // Parse rules from \"classes\" pulled from data attribute\n let rules = this.rules.split(' ');\n\n // Iterate through every rule found\n for (let i = 0; i < rules.length; i++) {\n let rule = rules[i].split('-');\n let ruleSize = rule.length > 1 ? rule[0] : 'small';\n let rulePlugin = rule.length > 1 ? rule[1] : rule[0];\n\n if (MenuPlugins[rulePlugin] !== null) {\n rulesTree[ruleSize] = MenuPlugins[rulePlugin];\n }\n }\n\n this.rules = rulesTree;\n }\n\n if (!$.isEmptyObject(this.rules)) {\n this._checkMediaQueries();\n }\n // Add data-mutate since children may need it.\n this.$element.attr('data-mutate', (this.$element.attr('data-mutate') || GetYoDigits(6, 'responsive-menu')));\n }\n\n /**\n * Initializes events for the Menu.\n * @function\n * @private\n */\n _events() {\n var _this = this;\n\n $(window).on('changed.zf.mediaquery', function() {\n _this._checkMediaQueries();\n });\n // $(window).on('resize.zf.ResponsiveMenu', function() {\n // _this._checkMediaQueries();\n // });\n }\n\n /**\n * Checks the current screen width against available media queries. If the media query has changed, and the plugin needed has changed, the plugins will swap out.\n * @function\n * @private\n */\n _checkMediaQueries() {\n var matchedMq, _this = this;\n // Iterate through each rule and find the last matching rule\n $.each(this.rules, function(key) {\n if (MediaQuery.atLeast(key)) {\n matchedMq = key;\n }\n });\n\n // No match? No dice\n if (!matchedMq) return;\n\n // Plugin already initialized? We good\n if (this.currentPlugin instanceof this.rules[matchedMq].plugin) return;\n\n // Remove existing plugin-specific CSS classes\n $.each(MenuPlugins, function(key, value) {\n _this.$element.removeClass(value.cssClass);\n });\n\n // Add the CSS class for the new plugin\n this.$element.addClass(this.rules[matchedMq].cssClass);\n\n // Create an instance of the new plugin\n if (this.currentPlugin) this.currentPlugin.destroy();\n this.currentPlugin = new this.rules[matchedMq].plugin(this.$element, {});\n }\n\n /**\n * Destroys the instance of the current plugin on this element, as well as the window resize handler that switches the plugins out.\n * @function\n */\n _destroy() {\n this.currentPlugin.destroy();\n $(window).off('.zf.ResponsiveMenu');\n }\n}\n\nResponsiveMenu.defaults = {};\n\nexport {ResponsiveMenu};\n","import $ from 'jquery';\n\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Motion } from './foundation.util.motion';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * ResponsiveToggle module.\n * @module foundation.responsiveToggle\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.motion\n */\n\nclass ResponsiveToggle extends Plugin {\n /**\n * Creates a new instance of Tab Bar.\n * @class\n * @name ResponsiveToggle\n * @fires ResponsiveToggle#init\n * @param {jQuery} element - jQuery object to attach tab bar functionality to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = $(element);\n this.options = $.extend({}, ResponsiveToggle.defaults, this.$element.data(), options);\n this.className = 'ResponsiveToggle'; // ie9 back compat\n\n this._init();\n this._events();\n }\n\n /**\n * Initializes the tab bar by finding the target element, toggling element, and running update().\n * @function\n * @private\n */\n _init() {\n MediaQuery._init();\n var targetID = this.$element.data('responsive-toggle');\n if (!targetID) {\n console.error('Your tab bar needs an ID of a Menu as the value of data-tab-bar.');\n }\n\n this.$targetMenu = $(`#${targetID}`);\n this.$toggler = this.$element.find('[data-toggle]').filter(function() {\n var target = $(this).data('toggle');\n return (target === targetID || target === \"\");\n });\n this.options = $.extend({}, this.options, this.$targetMenu.data());\n\n // If they were set, parse the animation classes\n if(this.options.animate) {\n let input = this.options.animate.split(' ');\n\n this.animationIn = input[0];\n this.animationOut = input[1] || null;\n }\n\n this._update();\n }\n\n /**\n * Adds necessary event handlers for the tab bar to work.\n * @function\n * @private\n */\n _events() {\n var _this = this;\n\n this._updateMqHandler = this._update.bind(this);\n\n $(window).on('changed.zf.mediaquery', this._updateMqHandler);\n\n this.$toggler.on('click.zf.responsiveToggle', this.toggleMenu.bind(this));\n }\n\n /**\n * Checks the current media query to determine if the tab bar should be visible or hidden.\n * @function\n * @private\n */\n _update() {\n // Mobile\n if (!MediaQuery.atLeast(this.options.hideFor)) {\n this.$element.show();\n this.$targetMenu.hide();\n }\n\n // Desktop\n else {\n this.$element.hide();\n this.$targetMenu.show();\n }\n }\n\n /**\n * Toggles the element attached to the tab bar. The toggle only happens if the screen is small enough to allow it.\n * @function\n * @fires ResponsiveToggle#toggled\n */\n toggleMenu() {\n if (!MediaQuery.atLeast(this.options.hideFor)) {\n /**\n * Fires when the element attached to the tab bar toggles.\n * @event ResponsiveToggle#toggled\n */\n if(this.options.animate) {\n if (this.$targetMenu.is(':hidden')) {\n Motion.animateIn(this.$targetMenu, this.animationIn, () => {\n this.$element.trigger('toggled.zf.responsiveToggle');\n this.$targetMenu.find('[data-mutate]').triggerHandler('mutateme.zf.trigger');\n });\n }\n else {\n Motion.animateOut(this.$targetMenu, this.animationOut, () => {\n this.$element.trigger('toggled.zf.responsiveToggle');\n });\n }\n }\n else {\n this.$targetMenu.toggle(0);\n this.$targetMenu.find('[data-mutate]').trigger('mutateme.zf.trigger');\n this.$element.trigger('toggled.zf.responsiveToggle');\n }\n }\n };\n\n _destroy() {\n this.$element.off('.zf.responsiveToggle');\n this.$toggler.off('.zf.responsiveToggle');\n\n $(window).off('changed.zf.mediaquery', this._updateMqHandler);\n }\n}\n\nResponsiveToggle.defaults = {\n /**\n * The breakpoint after which the menu is always shown, and the tab bar is hidden.\n * @option\n * @type {string}\n * @default 'medium'\n */\n hideFor: 'medium',\n\n /**\n * To decide if the toggle should be animated or not.\n * @option\n * @type {boolean}\n * @default false\n */\n animate: false\n};\n\nexport { ResponsiveToggle };\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Motion } from './foundation.util.motion';\nimport { Triggers } from './foundation.util.triggers';\nimport { Touch } from './foundation.util.touch'\n\n/**\n * Reveal module.\n * @module foundation.reveal\n * @requires foundation.util.keyboard\n * @requires foundation.util.touch\n * @requires foundation.util.triggers\n * @requires foundation.util.mediaQuery\n * @requires foundation.util.motion if using animations\n */\n\nclass Reveal extends Plugin {\n /**\n * Creates a new instance of Reveal.\n * @class\n * @name Reveal\n * @param {jQuery} element - jQuery object to use for the modal.\n * @param {Object} options - optional parameters.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Reveal.defaults, this.$element.data(), options);\n this.className = 'Reveal'; // ie9 back compat\n this._init();\n\n // Touch and Triggers init are idempotent, just need to make sure they are initialized\n Touch.init($);\n Triggers.init($);\n\n Keyboard.register('Reveal', {\n 'ESCAPE': 'close',\n });\n }\n\n /**\n * Initializes the modal by adding the overlay and close buttons, (if selected).\n * @private\n */\n _init() {\n MediaQuery._init();\n this.id = this.$element.attr('id');\n this.isActive = false;\n this.cached = {mq: MediaQuery.current};\n\n this.$anchor = $(`[data-open=\"${this.id}\"]`).length ? $(`[data-open=\"${this.id}\"]`) : $(`[data-toggle=\"${this.id}\"]`);\n this.$anchor.attr({\n 'aria-controls': this.id,\n 'aria-haspopup': 'dialog',\n 'tabindex': 0\n });\n\n if (this.options.fullScreen || this.$element.hasClass('full')) {\n this.options.fullScreen = true;\n this.options.overlay = false;\n }\n if (this.options.overlay && !this.$overlay) {\n this.$overlay = this._makeOverlay(this.id);\n }\n\n this.$element.attr({\n 'role': 'dialog',\n 'aria-hidden': true,\n 'data-yeti-box': this.id,\n 'data-resize': this.id\n });\n\n if(this.$overlay) {\n this.$element.detach().appendTo(this.$overlay);\n } else {\n this.$element.detach().appendTo($(this.options.appendTo));\n this.$element.addClass('without-overlay');\n }\n this._events();\n if (this.options.deepLink && window.location.hash === ( `#${this.id}`)) {\n this.onLoadListener = onLoad($(window), () => this.open());\n }\n }\n\n /**\n * Creates an overlay div to display behind the modal.\n * @private\n */\n _makeOverlay() {\n var additionalOverlayClasses = '';\n\n if (this.options.additionalOverlayClasses) {\n additionalOverlayClasses = ' ' + this.options.additionalOverlayClasses;\n }\n\n return $('
    ')\n .addClass('reveal-overlay' + additionalOverlayClasses)\n .appendTo(this.options.appendTo);\n }\n\n /**\n * Updates position of modal\n * TODO: Figure out if we actually need to cache these values or if it doesn't matter\n * @private\n */\n _updatePosition() {\n var width = this.$element.outerWidth();\n var outerWidth = $(window).width();\n var height = this.$element.outerHeight();\n var outerHeight = $(window).height();\n var left, top = null;\n if (this.options.hOffset === 'auto') {\n left = parseInt((outerWidth - width) / 2, 10);\n } else {\n left = parseInt(this.options.hOffset, 10);\n }\n if (this.options.vOffset === 'auto') {\n if (height > outerHeight) {\n top = parseInt(Math.min(100, outerHeight / 10), 10);\n } else {\n top = parseInt((outerHeight - height) / 4, 10);\n }\n } else if (this.options.vOffset !== null) {\n top = parseInt(this.options.vOffset, 10);\n }\n\n if (top !== null) {\n this.$element.css({top: top + 'px'});\n }\n\n // only worry about left if we don't have an overlay or we have a horizontal offset,\n // otherwise we're perfectly in the middle\n if (!this.$overlay || (this.options.hOffset !== 'auto')) {\n this.$element.css({left: left + 'px'});\n this.$element.css({margin: '0px'});\n }\n\n }\n\n /**\n * Adds event handlers for the modal.\n * @private\n */\n _events() {\n var _this = this;\n\n this.$element.on({\n 'open.zf.trigger': this.open.bind(this),\n 'close.zf.trigger': (event, $element) => {\n if ((event.target === _this.$element[0]) ||\n ($(event.target).parents('[data-closable]')[0] === $element)) { // only close reveal when it's explicitly called\n return this.close.apply(this);\n }\n },\n 'toggle.zf.trigger': this.toggle.bind(this),\n 'resizeme.zf.trigger': function() {\n _this._updatePosition();\n }\n });\n\n if (this.options.closeOnClick && this.options.overlay) {\n this.$overlay.off('.zf.reveal').on('click.zf.dropdown tap.zf.dropdown', function(e) {\n if (e.target === _this.$element[0] ||\n $.contains(_this.$element[0], e.target) ||\n !$.contains(document, e.target)) {\n return;\n }\n _this.close();\n });\n }\n if (this.options.deepLink) {\n $(window).on(`hashchange.zf.reveal:${this.id}`, this._handleState.bind(this));\n }\n }\n\n /**\n * Handles modal methods on back/forward button clicks or any other event that triggers hashchange.\n * @private\n */\n _handleState(e) {\n if(window.location.hash === ( '#' + this.id) && !this.isActive){ this.open(); }\n else{ this.close(); }\n }\n\n /**\n * Disables the scroll when Reveal is shown to prevent the background from shifting\n * @param {number} scrollTop - Scroll to visually apply, window current scroll by default\n */\n _disableScroll(scrollTop) {\n scrollTop = scrollTop || $(window).scrollTop();\n if ($(document).height() > $(window).height()) {\n $(\"html\")\n .css(\"top\", -scrollTop);\n }\n }\n\n /**\n * Reenables the scroll when Reveal closes\n * @param {number} scrollTop - Scroll to restore, html \"top\" property by default (as set by `_disableScroll`)\n */\n _enableScroll(scrollTop) {\n scrollTop = scrollTop || parseInt($(\"html\").css(\"top\"));\n if ($(document).height() > $(window).height()) {\n $(\"html\")\n .css(\"top\", \"\");\n $(window).scrollTop(-scrollTop);\n }\n }\n\n\n /**\n * Opens the modal controlled by `this.$anchor`, and closes all others by default.\n * @function\n * @fires Reveal#closeme\n * @fires Reveal#open\n */\n open() {\n // either update or replace browser history\n const hash = `#${this.id}`;\n if (this.options.deepLink && window.location.hash !== hash) {\n\n if (window.history.pushState) {\n if (this.options.updateHistory) {\n window.history.pushState({}, '', hash);\n } else {\n window.history.replaceState({}, '', hash);\n }\n } else {\n window.location.hash = hash;\n }\n }\n\n // Remember anchor that opened it to set focus back later, have general anchors as fallback\n this.$activeAnchor = $(document.activeElement).is(this.$anchor) ? $(document.activeElement) : this.$anchor;\n\n this.isActive = true;\n\n // Make elements invisible, but remove display: none so we can get size and positioning\n this.$element\n .css({ 'visibility': 'hidden' })\n .show()\n .scrollTop(0);\n if (this.options.overlay) {\n this.$overlay.css({'visibility': 'hidden'}).show();\n }\n\n this._updatePosition();\n\n this.$element\n .hide()\n .css({ 'visibility': '' });\n\n if(this.$overlay) {\n this.$overlay.css({'visibility': ''}).hide();\n if(this.$element.hasClass('fast')) {\n this.$overlay.addClass('fast');\n } else if (this.$element.hasClass('slow')) {\n this.$overlay.addClass('slow');\n }\n }\n\n\n if (!this.options.multipleOpened) {\n /**\n * Fires immediately before the modal opens.\n * Closes any other modals that are currently open\n * @event Reveal#closeme\n */\n this.$element.trigger('closeme.zf.reveal', this.id);\n }\n\n if ($('.reveal:visible').length === 0) {\n this._disableScroll();\n }\n\n var _this = this;\n\n // Motion UI method of reveal\n if (this.options.animationIn) {\n function afterAnimation(){\n _this.$element\n .attr({\n 'aria-hidden': false,\n 'tabindex': -1\n })\n .focus();\n _this._addGlobalClasses();\n Keyboard.trapFocus(_this.$element);\n }\n if (this.options.overlay) {\n Motion.animateIn(this.$overlay, 'fade-in');\n }\n Motion.animateIn(this.$element, this.options.animationIn, () => {\n if(this.$element) { // protect against object having been removed\n this.focusableElements = Keyboard.findFocusable(this.$element);\n afterAnimation();\n }\n });\n }\n // jQuery method of reveal\n else {\n if (this.options.overlay) {\n this.$overlay.show(0);\n }\n this.$element.show(this.options.showDelay);\n }\n\n // handle accessibility\n this.$element\n .attr({\n 'aria-hidden': false,\n 'tabindex': -1\n })\n .focus();\n Keyboard.trapFocus(this.$element);\n\n this._addGlobalClasses();\n\n this._addGlobalListeners();\n\n /**\n * Fires when the modal has successfully opened.\n * @event Reveal#open\n */\n this.$element.trigger('open.zf.reveal');\n }\n\n /**\n * Adds classes and listeners on document required by open modals.\n *\n * The following classes are added and updated:\n * - `.is-reveal-open` - Prevents the scroll on document\n * - `.zf-has-scroll` - Displays a disabled scrollbar on document if required like if the\n * scroll was not disabled. This prevent a \"shift\" of the page content due\n * the scrollbar disappearing when the modal opens.\n *\n * @private\n */\n _addGlobalClasses() {\n const updateScrollbarClass = () => {\n $('html').toggleClass('zf-has-scroll', !!($(document).height() > $(window).height()));\n };\n\n this.$element.on('resizeme.zf.trigger.revealScrollbarListener', () => updateScrollbarClass());\n updateScrollbarClass();\n $('html').addClass('is-reveal-open');\n }\n\n /**\n * Removes classes and listeners on document that were required by open modals.\n * @private\n */\n _removeGlobalClasses() {\n this.$element.off('resizeme.zf.trigger.revealScrollbarListener');\n $('html').removeClass('is-reveal-open');\n $('html').removeClass('zf-has-scroll');\n }\n\n /**\n * Adds extra event handlers for the body and window if necessary.\n * @private\n */\n _addGlobalListeners() {\n var _this = this;\n if(!this.$element) { return; } // If we're in the middle of cleanup, don't freak out\n this.focusableElements = Keyboard.findFocusable(this.$element);\n\n if (!this.options.overlay && this.options.closeOnClick && !this.options.fullScreen) {\n $('body').on('click.zf.dropdown tap.zf.dropdown', function(e) {\n if (e.target === _this.$element[0] ||\n $.contains(_this.$element[0], e.target) ||\n !$.contains(document, e.target)) { return; }\n _this.close();\n });\n }\n\n if (this.options.closeOnEsc) {\n $(window).on('keydown.zf.reveal', function(e) {\n Keyboard.handleKey(e, 'Reveal', {\n close: function() {\n if (_this.options.closeOnEsc) {\n _this.close();\n }\n }\n });\n });\n }\n }\n\n /**\n * Closes the modal.\n * @function\n * @fires Reveal#closed\n */\n close() {\n if (!this.isActive || !this.$element.is(':visible')) {\n return false;\n }\n var _this = this;\n\n // Motion UI method of hiding\n if (this.options.animationOut) {\n if (this.options.overlay) {\n Motion.animateOut(this.$overlay, 'fade-out');\n }\n\n Motion.animateOut(this.$element, this.options.animationOut, finishUp);\n }\n // jQuery method of hiding\n else {\n this.$element.hide(this.options.hideDelay);\n\n if (this.options.overlay) {\n this.$overlay.hide(0, finishUp);\n }\n else {\n finishUp();\n }\n }\n\n // Conditionals to remove extra event listeners added on open\n if (this.options.closeOnEsc) {\n $(window).off('keydown.zf.reveal');\n }\n\n if (!this.options.overlay && this.options.closeOnClick) {\n $('body').off('click.zf.dropdown tap.zf.dropdown');\n }\n\n this.$element.off('keydown.zf.reveal');\n\n function finishUp() {\n\n // Get the current top before the modal is closed and restore the scroll after.\n // TODO: use component properties instead of HTML properties\n // See https://github.com/foundation/foundation-sites/pull/10786\n var scrollTop = parseInt($(\"html\").css(\"top\"));\n\n if ($('.reveal:visible').length === 0) {\n _this._removeGlobalClasses(); // also remove .is-reveal-open from the html element when there is no opened reveal\n }\n\n Keyboard.releaseFocus(_this.$element);\n\n _this.$element.attr('aria-hidden', true);\n\n if ($('.reveal:visible').length === 0) {\n _this._enableScroll(scrollTop);\n }\n\n /**\n * Fires when the modal is done closing.\n * @event Reveal#closed\n */\n _this.$element.trigger('closed.zf.reveal');\n }\n\n /**\n * Resets the modal content\n * This prevents a running video to keep going in the background\n */\n if (this.options.resetOnClose) {\n this.$element.html(this.$element.html());\n }\n\n this.isActive = false;\n // If deepLink and we did not switched to an other modal...\n if (_this.options.deepLink && window.location.hash === `#${this.id}`) {\n // Remove the history hash\n if (window.history.replaceState) {\n const urlWithoutHash = window.location.pathname + window.location.search;\n if (this.options.updateHistory) {\n window.history.pushState({}, '', urlWithoutHash); // remove the hash\n } else {\n window.history.replaceState('', document.title, urlWithoutHash);\n }\n } else {\n window.location.hash = '';\n }\n }\n\n this.$activeAnchor.focus();\n }\n\n /**\n * Toggles the open/closed state of a modal.\n * @function\n */\n toggle() {\n if (this.isActive) {\n this.close();\n } else {\n this.open();\n }\n };\n\n /**\n * Destroys an instance of a modal.\n * @function\n */\n _destroy() {\n if (this.options.overlay) {\n this.$element.appendTo($(this.options.appendTo)); // move $element outside of $overlay to prevent error unregisterPlugin()\n this.$overlay.hide().off().remove();\n }\n this.$element.hide().off();\n this.$anchor.off('.zf');\n $(window).off(`.zf.reveal:${this.id}`)\n if (this.onLoadListener) $(window).off(this.onLoadListener);\n\n if ($('.reveal:visible').length === 0) {\n this._removeGlobalClasses(); // also remove .is-reveal-open from the html element when there is no opened reveal\n }\n };\n}\n\nReveal.defaults = {\n /**\n * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide.\n * @option\n * @type {string}\n * @default ''\n */\n animationIn: '',\n /**\n * Motion-UI class to use for animated elements. If none used, defaults to simple show/hide.\n * @option\n * @type {string}\n * @default ''\n */\n animationOut: '',\n /**\n * Time, in ms, to delay the opening of a modal after a click if no animation used.\n * @option\n * @type {number}\n * @default 0\n */\n showDelay: 0,\n /**\n * Time, in ms, to delay the closing of a modal after a click if no animation used.\n * @option\n * @type {number}\n * @default 0\n */\n hideDelay: 0,\n /**\n * Allows a click on the body/overlay to close the modal.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnClick: true,\n /**\n * Allows the modal to close if the user presses the `ESCAPE` key.\n * @option\n * @type {boolean}\n * @default true\n */\n closeOnEsc: true,\n /**\n * If true, allows multiple modals to be displayed at once.\n * @option\n * @type {boolean}\n * @default false\n */\n multipleOpened: false,\n /**\n * Distance, in pixels, the modal should push down from the top of the screen.\n * @option\n * @type {number|string}\n * @default auto\n */\n vOffset: 'auto',\n /**\n * Distance, in pixels, the modal should push in from the side of the screen.\n * @option\n * @type {number|string}\n * @default auto\n */\n hOffset: 'auto',\n /**\n * Allows the modal to be fullscreen, completely blocking out the rest of the view. JS checks for this as well.\n * @option\n * @type {boolean}\n * @default false\n */\n fullScreen: false,\n /**\n * Allows the modal to generate an overlay div, which will cover the view when modal opens.\n * @option\n * @type {boolean}\n * @default true\n */\n overlay: true,\n /**\n * Allows the modal to remove and reinject markup on close. Should be true if using video elements w/o using provider's api, otherwise, videos will continue to play in the background.\n * @option\n * @type {boolean}\n * @default false\n */\n resetOnClose: false,\n /**\n * Link the location hash to the modal.\n * Set the location hash when the modal is opened/closed, and open/close the modal when the location changes.\n * @option\n * @type {boolean}\n * @default false\n */\n deepLink: false,\n /**\n * If `deepLink` is enabled, update the browser history with the open modal\n * @option\n * @default false\n */\n updateHistory: false,\n /**\n * Allows the modal to append to custom div.\n * @option\n * @type {string}\n * @default \"body\"\n */\n appendTo: \"body\",\n /**\n * Allows adding additional class names to the reveal overlay.\n * @option\n * @type {string}\n * @default ''\n */\n additionalOverlayClasses: ''\n};\n\nexport {Reveal};\n","import $ from 'jquery';\nimport { GetYoDigits } from './foundation.core.utils';\nimport { Plugin } from './foundation.core.plugin';\n\n/**\n * SmoothScroll module.\n * @module foundation.smoothScroll\n */\nclass SmoothScroll extends Plugin {\n /**\n * Creates a new instance of SmoothScroll.\n * @class\n * @name SmoothScroll\n * @fires SmoothScroll#init\n * @param {Object} element - jQuery object to add the trigger to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, SmoothScroll.defaults, this.$element.data(), options);\n this.className = 'SmoothScroll'; // ie9 back compat\n\n this._init();\n }\n\n /**\n * Initialize the SmoothScroll plugin\n * @private\n */\n _init() {\n const id = this.$element[0].id || GetYoDigits(6, 'smooth-scroll');\n this.$element.attr({ id });\n\n this._events();\n }\n\n /**\n * Initializes events for SmoothScroll.\n * @private\n */\n _events() {\n this._linkClickListener = this._handleLinkClick.bind(this);\n this.$element.on('click.zf.smoothScroll', this._linkClickListener);\n this.$element.on('click.zf.smoothScroll', 'a[href^=\"#\"]', this._linkClickListener);\n }\n\n /**\n * Handle the given event to smoothly scroll to the anchor pointed by the event target.\n * @param {*} e - event\n * @function\n * @private\n */\n _handleLinkClick(e) {\n // Follow the link if it does not point to an anchor.\n if (!$(e.currentTarget).is('a[href^=\"#\"]')) return;\n\n const arrival = e.currentTarget.getAttribute('href');\n\n this._inTransition = true;\n\n SmoothScroll.scrollToLoc(arrival, this.options, () => {\n this._inTransition = false;\n });\n\n e.preventDefault();\n };\n\n /**\n * Function to scroll to a given location on the page.\n * @param {String} loc - A properly formatted jQuery id selector. Example: '#foo'\n * @param {Object} options - The options to use.\n * @param {Function} callback - The callback function.\n * @static\n * @function\n */\n static scrollToLoc(loc, options = SmoothScroll.defaults, callback) {\n const $loc = $(loc);\n\n // Do nothing if target does not exist to prevent errors\n if (!$loc.length) return false;\n\n var scrollPos = Math.round($loc.offset().top - options.threshold / 2 - options.offset);\n\n $('html, body').stop(true).animate(\n { scrollTop: scrollPos },\n options.animationDuration,\n options.animationEasing,\n () => {\n if (typeof callback === 'function'){\n callback();\n }\n }\n );\n }\n\n /**\n * Destroys the SmoothScroll instance.\n * @function\n */\n _destroy() {\n this.$element.off('click.zf.smoothScroll', this._linkClickListener)\n this.$element.off('click.zf.smoothScroll', 'a[href^=\"#\"]', this._linkClickListener);\n }\n}\n\n/**\n * Default settings for plugin.\n */\nSmoothScroll.defaults = {\n /**\n * Amount of time, in ms, the animated scrolling should take between locations.\n * @option\n * @type {number}\n * @default 500\n */\n animationDuration: 500,\n /**\n * Animation style to use when scrolling between locations. Can be `'swing'` or `'linear'`.\n * @option\n * @type {string}\n * @default 'linear'\n * @see {@link https://api.jquery.com/animate|Jquery animate}\n */\n animationEasing: 'linear',\n /**\n * Number of pixels to use as a marker for location changes.\n * @option\n * @type {number}\n * @default 50\n */\n threshold: 50,\n /**\n * Number of pixels to offset the scroll of the page on item click if using a sticky nav bar.\n * @option\n * @type {number}\n * @default 0\n */\n offset: 0\n}\n\nexport {SmoothScroll}\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad, GetYoDigits } from './foundation.core.utils';\nimport { MediaQuery } from './foundation.util.mediaQuery';\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * Sticky module.\n * @module foundation.sticky\n * @requires foundation.util.triggers\n * @requires foundation.util.mediaQuery\n */\n\nclass Sticky extends Plugin {\n /**\n * Creates a new instance of a sticky thing.\n * @class\n * @name Sticky\n * @param {jQuery} element - jQuery object to make sticky.\n * @param {Object} options - options object passed when creating the element programmatically.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Sticky.defaults, this.$element.data(), options);\n this.className = 'Sticky'; // ie9 back compat\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n\n this._init();\n }\n\n /**\n * Initializes the sticky element by adding classes, getting/setting dimensions, breakpoints and attributes\n * @function\n * @private\n */\n _init() {\n MediaQuery._init();\n\n var $parent = this.$element.parent('[data-sticky-container]'),\n id = this.$element[0].id || GetYoDigits(6, 'sticky'),\n _this = this;\n\n if($parent.length){\n this.$container = $parent;\n } else {\n this.wasWrapped = true;\n this.$element.wrap(this.options.container);\n this.$container = this.$element.parent();\n }\n this.$container.addClass(this.options.containerClass);\n\n this.$element.addClass(this.options.stickyClass).attr({ 'data-resize': id, 'data-mutate': id });\n if (this.options.anchor !== '') {\n $('#' + _this.options.anchor).attr({ 'data-mutate': id });\n }\n\n this.scrollCount = this.options.checkEvery;\n this.isStuck = false;\n this.onLoadListener = onLoad($(window), function () {\n //We calculate the container height to have correct values for anchor points offset calculation.\n _this.containerHeight = _this.$element.css(\"display\") == \"none\" ? 0 : _this.$element[0].getBoundingClientRect().height;\n _this.$container.css('height', _this.containerHeight);\n _this.elemHeight = _this.containerHeight;\n if (_this.options.anchor !== '') {\n _this.$anchor = $('#' + _this.options.anchor);\n } else {\n _this._parsePoints();\n }\n\n _this._setSizes(function () {\n var scroll = window.pageYOffset;\n _this._calc(false, scroll);\n //Unstick the element will ensure that proper classes are set.\n if (!_this.isStuck) {\n _this._removeSticky((scroll >= _this.topPoint) ? false : true);\n }\n });\n _this._events(id.split('-').reverse().join('-'));\n });\n }\n\n /**\n * If using multiple elements as anchors, calculates the top and bottom pixel values the sticky thing should stick and unstick on.\n * @function\n * @private\n */\n _parsePoints() {\n var top = this.options.topAnchor == \"\" ? 1 : this.options.topAnchor,\n btm = this.options.btmAnchor== \"\" ? document.documentElement.scrollHeight : this.options.btmAnchor,\n pts = [top, btm],\n breaks = {};\n for (var i = 0, len = pts.length; i < len && pts[i]; i++) {\n var pt;\n if (typeof pts[i] === 'number') {\n pt = pts[i];\n } else {\n var place = pts[i].split(':'),\n anchor = $(`#${place[0]}`);\n\n pt = anchor.offset().top;\n if (place[1] && place[1].toLowerCase() === 'bottom') {\n pt += anchor[0].getBoundingClientRect().height;\n }\n }\n breaks[i] = pt;\n }\n\n\n this.points = breaks;\n return;\n }\n\n /**\n * Adds event handlers for the scrolling element.\n * @private\n * @param {String} id - pseudo-random id for unique scroll event listener.\n */\n _events(id) {\n var _this = this,\n scrollListener = this.scrollListener = `scroll.zf.${id}`;\n if (this.isOn) { return; }\n if (this.canStick) {\n this.isOn = true;\n $(window).off(scrollListener)\n .on(scrollListener, function(e) {\n if (_this.scrollCount === 0) {\n _this.scrollCount = _this.options.checkEvery;\n _this._setSizes(function() {\n _this._calc(false, window.pageYOffset);\n });\n } else {\n _this.scrollCount--;\n _this._calc(false, window.pageYOffset);\n }\n });\n }\n\n this.$element.off('resizeme.zf.trigger')\n .on('resizeme.zf.trigger', function(e, el) {\n _this._eventsHandler(id);\n });\n\n this.$element.on('mutateme.zf.trigger', function (e, el) {\n _this._eventsHandler(id);\n });\n\n if(this.$anchor) {\n this.$anchor.on('mutateme.zf.trigger', function (e, el) {\n _this._eventsHandler(id);\n });\n }\n }\n\n /**\n * Handler for events.\n * @private\n * @param {String} id - pseudo-random id for unique scroll event listener.\n */\n _eventsHandler(id) {\n var _this = this,\n scrollListener = this.scrollListener = `scroll.zf.${id}`;\n\n _this._setSizes(function() {\n _this._calc(false);\n if (_this.canStick) {\n if (!_this.isOn) {\n _this._events(id);\n }\n } else if (_this.isOn) {\n _this._pauseListeners(scrollListener);\n }\n });\n }\n\n /**\n * Removes event handlers for scroll and change events on anchor.\n * @fires Sticky#pause\n * @param {String} scrollListener - unique, namespaced scroll listener attached to `window`\n */\n _pauseListeners(scrollListener) {\n this.isOn = false;\n $(window).off(scrollListener);\n\n /**\n * Fires when the plugin is paused due to resize event shrinking the view.\n * @event Sticky#pause\n * @private\n */\n this.$element.trigger('pause.zf.sticky');\n }\n\n /**\n * Called on every `scroll` event and on `_init`\n * fires functions based on booleans and cached values\n * @param {Boolean} checkSizes - true if plugin should recalculate sizes and breakpoints.\n * @param {Number} scroll - current scroll position passed from scroll event cb function. If not passed, defaults to `window.pageYOffset`.\n */\n _calc(checkSizes, scroll) {\n if (checkSizes) { this._setSizes(); }\n\n if (!this.canStick) {\n if (this.isStuck) {\n this._removeSticky(true);\n }\n return false;\n }\n\n if (!scroll) { scroll = window.pageYOffset; }\n\n if (scroll >= this.topPoint) {\n if (scroll <= this.bottomPoint) {\n if (!this.isStuck) {\n this._setSticky();\n }\n } else {\n if (this.isStuck) {\n this._removeSticky(false);\n }\n }\n } else {\n if (this.isStuck) {\n this._removeSticky(true);\n }\n }\n }\n\n /**\n * Causes the $element to become stuck.\n * Adds `position: fixed;`, and helper classes.\n * @fires Sticky#stuckto\n * @function\n * @private\n */\n _setSticky() {\n var _this = this,\n stickTo = this.options.stickTo,\n mrgn = stickTo === 'top' ? 'marginTop' : 'marginBottom',\n notStuckTo = stickTo === 'top' ? 'bottom' : 'top',\n css = {};\n\n css[mrgn] = `${this.options[mrgn]}em`;\n css[stickTo] = 0;\n css[notStuckTo] = 'auto';\n this.isStuck = true;\n this.$element.removeClass(`is-anchored is-at-${notStuckTo}`)\n .addClass(`is-stuck is-at-${stickTo}`)\n .css(css)\n /**\n * Fires when the $element has become `position: fixed;`\n * Namespaced to `top` or `bottom`, e.g. `sticky.zf.stuckto:top`\n * @event Sticky#stuckto\n */\n .trigger(`sticky.zf.stuckto:${stickTo}`);\n this.$element.on(\"transitionend webkitTransitionEnd oTransitionEnd otransitionend MSTransitionEnd\", function() {\n _this._setSizes();\n });\n }\n\n /**\n * Causes the $element to become unstuck.\n * Removes `position: fixed;`, and helper classes.\n * Adds other helper classes.\n * @param {Boolean} isTop - tells the function if the $element should anchor to the top or bottom of its $anchor element.\n * @fires Sticky#unstuckfrom\n * @private\n */\n _removeSticky(isTop) {\n var stickTo = this.options.stickTo,\n stickToTop = stickTo === 'top',\n css = {},\n anchorPt = (this.points ? this.points[1] - this.points[0] : this.anchorHeight) - this.elemHeight,\n mrgn = stickToTop ? 'marginTop' : 'marginBottom',\n topOrBottom = isTop ? 'top' : 'bottom';\n\n css[mrgn] = 0;\n\n css['bottom'] = 'auto';\n if(isTop) {\n css['top'] = 0;\n } else {\n css['top'] = anchorPt;\n }\n\n this.isStuck = false;\n this.$element.removeClass(`is-stuck is-at-${stickTo}`)\n .addClass(`is-anchored is-at-${topOrBottom}`)\n .css(css)\n /**\n * Fires when the $element has become anchored.\n * Namespaced to `top` or `bottom`, e.g. `sticky.zf.unstuckfrom:bottom`\n * @event Sticky#unstuckfrom\n */\n .trigger(`sticky.zf.unstuckfrom:${topOrBottom}`);\n }\n\n /**\n * Sets the $element and $container sizes for plugin.\n * Calls `_setBreakPoints`.\n * @param {Function} cb - optional callback function to fire on completion of `_setBreakPoints`.\n * @private\n */\n _setSizes(cb) {\n this.canStick = MediaQuery.is(this.options.stickyOn);\n if (!this.canStick) {\n if (cb && typeof cb === 'function') { cb(); }\n }\n\n var _this = this,\n newElemWidth = this.$container[0].getBoundingClientRect().width,\n comp = window.getComputedStyle(this.$container[0]),\n pdngl = parseInt(comp['padding-left'], 10),\n pdngr = parseInt(comp['padding-right'], 10);\n\n if (this.$anchor && this.$anchor.length) {\n this.anchorHeight = this.$anchor[0].getBoundingClientRect().height;\n } else {\n this._parsePoints();\n }\n\n this.$element.css({\n 'max-width': `${newElemWidth - pdngl - pdngr}px`\n });\n\n // Recalculate the height only if it is \"dynamic\"\n if (this.options.dynamicHeight || !this.containerHeight) {\n // Get the sticked element height and apply it to the container to \"hold the place\"\n var newContainerHeight = this.$element[0].getBoundingClientRect().height || this.containerHeight;\n newContainerHeight = this.$element.css(\"display\") == \"none\" ? 0 : newContainerHeight;\n this.$container.css('height', newContainerHeight);\n this.containerHeight = newContainerHeight;\n }\n this.elemHeight = this.containerHeight;\n\n if (!this.isStuck) {\n if (this.$element.hasClass('is-at-bottom')) {\n var anchorPt = (this.points ? this.points[1] - this.$container.offset().top : this.anchorHeight) - this.elemHeight;\n this.$element.css('top', anchorPt);\n }\n }\n\n this._setBreakPoints(this.containerHeight, function() {\n if (cb && typeof cb === 'function') { cb(); }\n });\n }\n\n /**\n * Sets the upper and lower breakpoints for the element to become sticky/unsticky.\n * @param {Number} elemHeight - px value for sticky.$element height, calculated by `_setSizes`.\n * @param {Function} cb - optional callback function to be called on completion.\n * @private\n */\n _setBreakPoints(elemHeight, cb) {\n if (!this.canStick) {\n if (cb && typeof cb === 'function') { cb(); }\n else { return false; }\n }\n var mTop = emCalc(this.options.marginTop),\n mBtm = emCalc(this.options.marginBottom),\n topPoint = this.points ? this.points[0] : this.$anchor.offset().top,\n bottomPoint = this.points ? this.points[1] : topPoint + this.anchorHeight,\n // topPoint = this.$anchor.offset().top || this.points[0],\n // bottomPoint = topPoint + this.anchorHeight || this.points[1],\n winHeight = window.innerHeight;\n\n if (this.options.stickTo === 'top') {\n topPoint -= mTop;\n bottomPoint -= (elemHeight + mTop);\n } else if (this.options.stickTo === 'bottom') {\n topPoint -= (winHeight - (elemHeight + mBtm));\n bottomPoint -= (winHeight - mBtm);\n } else {\n //this would be the stickTo: both option... tricky\n }\n\n this.topPoint = topPoint;\n this.bottomPoint = bottomPoint;\n\n if (cb && typeof cb === 'function') { cb(); }\n }\n\n /**\n * Destroys the current sticky element.\n * Resets the element to the top position first.\n * Removes event listeners, JS-added css properties and classes, and unwraps the $element if the JS added the $container.\n * @function\n */\n _destroy() {\n this._removeSticky(true);\n\n this.$element.removeClass(`${this.options.stickyClass} is-anchored is-at-top`)\n .css({\n height: '',\n top: '',\n bottom: '',\n 'max-width': ''\n })\n .off('resizeme.zf.trigger')\n .off('mutateme.zf.trigger');\n if (this.$anchor && this.$anchor.length) {\n this.$anchor.off('change.zf.sticky');\n }\n if (this.scrollListener) $(window).off(this.scrollListener)\n if (this.onLoadListener) $(window).off(this.onLoadListener)\n\n if (this.wasWrapped) {\n this.$element.unwrap();\n } else {\n this.$container.removeClass(this.options.containerClass)\n .css({\n height: ''\n });\n }\n }\n}\n\nSticky.defaults = {\n /**\n * Customizable container template. Add your own classes for styling and sizing.\n * @option\n * @type {string}\n * @default '<div data-sticky-container></div>'\n */\n container: '
    ',\n /**\n * Location in the view the element sticks to. Can be `'top'` or `'bottom'`.\n * @option\n * @type {string}\n * @default 'top'\n */\n stickTo: 'top',\n /**\n * If anchored to a single element, the id of that element.\n * @option\n * @type {string}\n * @default ''\n */\n anchor: '',\n /**\n * If using more than one element as anchor points, the id of the top anchor.\n * @option\n * @type {string}\n * @default ''\n */\n topAnchor: '',\n /**\n * If using more than one element as anchor points, the id of the bottom anchor.\n * @option\n * @type {string}\n * @default ''\n */\n btmAnchor: '',\n /**\n * Margin, in `em`'s to apply to the top of the element when it becomes sticky.\n * @option\n * @type {number}\n * @default 1\n */\n marginTop: 1,\n /**\n * Margin, in `em`'s to apply to the bottom of the element when it becomes sticky.\n * @option\n * @type {number}\n * @default 1\n */\n marginBottom: 1,\n /**\n * Breakpoint string that is the minimum screen size an element should become sticky.\n * @option\n * @type {string}\n * @default 'medium'\n */\n stickyOn: 'medium',\n /**\n * Class applied to sticky element, and removed on destruction. Foundation defaults to `sticky`.\n * @option\n * @type {string}\n * @default 'sticky'\n */\n stickyClass: 'sticky',\n /**\n * Class applied to sticky container. Foundation defaults to `sticky-container`.\n * @option\n * @type {string}\n * @default 'sticky-container'\n */\n containerClass: 'sticky-container',\n /**\n * If true (by default), keep the sticky container the same height as the element. Otherwise, the container height is set once and does not change.\n * @option\n * @type {boolean}\n * @default true\n */\n dynamicHeight: true,\n /**\n * Number of scroll events between the plugin's recalculating sticky points. Setting it to `0` will cause it to recalc every scroll event, setting it to `-1` will prevent recalc on scroll.\n * @option\n * @type {number}\n * @default -1\n */\n checkEvery: -1\n};\n\n/**\n * Helper function to calculate em values\n * @param Number {em} - number of em's to calculate into pixels\n */\nfunction emCalc(em) {\n return parseInt(window.getComputedStyle(document.body, null).fontSize, 10) * em;\n}\n\nexport {Sticky};\n","import $ from 'jquery';\nimport { Plugin } from './foundation.core.plugin';\nimport { onLoad } from './foundation.core.utils';\nimport { Keyboard } from './foundation.util.keyboard';\nimport { onImagesLoaded } from './foundation.util.imageLoader';\n/**\n * Tabs module.\n * @module foundation.tabs\n * @requires foundation.util.keyboard\n * @requires foundation.util.imageLoader if tabs contain images\n */\n\nclass Tabs extends Plugin {\n /**\n * Creates a new instance of tabs.\n * @class\n * @name Tabs\n * @fires Tabs#init\n * @param {jQuery} element - jQuery object to make into tabs.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Tabs.defaults, this.$element.data(), options);\n this.className = 'Tabs'; // ie9 back compat\n\n this._init();\n Keyboard.register('Tabs', {\n 'ENTER': 'open',\n 'SPACE': 'open',\n 'ARROW_RIGHT': 'next',\n 'ARROW_UP': 'previous',\n 'ARROW_DOWN': 'next',\n 'ARROW_LEFT': 'previous'\n // 'TAB': 'next',\n // 'SHIFT_TAB': 'previous'\n });\n }\n\n /**\n * Initializes the tabs by showing and focusing (if autoFocus=true) the preset active tab.\n * @private\n */\n _init() {\n var _this = this;\n this._isInitializing = true;\n\n this.$element.attr({'role': 'tablist'});\n this.$tabTitles = this.$element.find(`.${this.options.linkClass}`);\n this.$tabContent = $(`[data-tabs-content=\"${this.$element[0].id}\"]`);\n\n this.$tabTitles.each(function(){\n var $elem = $(this),\n $link = $elem.find('a'),\n isActive = $elem.hasClass(`${_this.options.linkActiveClass}`),\n hash = $link.attr('data-tabs-target') || $link[0].hash.slice(1),\n linkId = $link[0].id ? $link[0].id : `${hash}-label`,\n $tabContent = $(`#${hash}`);\n\n $elem.attr({'role': 'presentation'});\n\n $link.attr({\n 'role': 'tab',\n 'aria-controls': hash,\n 'aria-selected': isActive,\n 'id': linkId,\n 'tabindex': isActive ? '0' : '-1'\n });\n\n $tabContent.attr({\n 'role': 'tabpanel',\n 'aria-labelledby': linkId\n });\n\n // Save up the initial hash to return to it later when going back in history\n if (isActive) {\n _this._initialAnchor = `#${hash}`;\n }\n\n if(!isActive) {\n $tabContent.attr('aria-hidden', 'true');\n }\n\n if(isActive && _this.options.autoFocus){\n _this.onLoadListener = onLoad($(window), function() {\n $('html, body').animate({ scrollTop: $elem.offset().top }, _this.options.deepLinkSmudgeDelay, () => {\n $link.focus();\n });\n });\n }\n });\n\n if(this.options.matchHeight) {\n var $images = this.$tabContent.find('img');\n\n if ($images.length) {\n onImagesLoaded($images, this._setHeight.bind(this));\n } else {\n this._setHeight();\n }\n }\n\n // Current context-bound function to open tabs on page load or history hashchange\n this._checkDeepLink = () => {\n var anchor = window.location.hash;\n\n if (!anchor.length) {\n // If we are still initializing and there is no anchor, then there is nothing to do\n if (this._isInitializing) return;\n // Otherwise, move to the initial anchor\n if (this._initialAnchor) anchor = this._initialAnchor;\n }\n\n var anchorNoHash = anchor.indexOf('#') >= 0 ? anchor.slice(1) : anchor;\n var $anchor = anchorNoHash && $(`#${anchorNoHash}`);\n var $link = anchor && this.$element.find(`[href$=\"${anchor}\"],[data-tabs-target=\"${anchorNoHash}\"]`).first();\n // Whether the anchor element that has been found is part of this element\n var isOwnAnchor = !!($anchor.length && $link.length);\n\n if (isOwnAnchor) {\n // If there is an anchor for the hash, select it\n if ($anchor && $anchor.length && $link && $link.length) {\n this.selectTab($anchor, true);\n }\n // Otherwise, collapse everything\n else {\n this._collapse();\n }\n\n // Roll up a little to show the titles\n if (this.options.deepLinkSmudge) {\n var offset = this.$element.offset();\n $('html, body').animate({ scrollTop: offset.top - this.options.deepLinkSmudgeOffset}, this.options.deepLinkSmudgeDelay);\n }\n\n /**\n * Fires when the plugin has deeplinked at pageload\n * @event Tabs#deeplink\n */\n this.$element.trigger('deeplink.zf.tabs', [$link, $anchor]);\n }\n }\n\n //use browser to open a tab, if it exists in this tabset\n if (this.options.deepLink) {\n this._checkDeepLink();\n }\n\n this._events();\n\n this._isInitializing = false;\n }\n\n /**\n * Adds event handlers for items within the tabs.\n * @private\n */\n _events() {\n this._addKeyHandler();\n this._addClickHandler();\n this._setHeightMqHandler = null;\n\n if (this.options.matchHeight) {\n this._setHeightMqHandler = this._setHeight.bind(this);\n\n $(window).on('changed.zf.mediaquery', this._setHeightMqHandler);\n }\n\n if(this.options.deepLink) {\n $(window).on('hashchange', this._checkDeepLink);\n }\n }\n\n /**\n * Adds click handlers for items within the tabs.\n * @private\n */\n _addClickHandler() {\n var _this = this;\n\n this.$element\n .off('click.zf.tabs')\n .on('click.zf.tabs', `.${this.options.linkClass}`, function(e){\n e.preventDefault();\n _this._handleTabChange($(this));\n });\n }\n\n /**\n * Adds keyboard event handlers for items within the tabs.\n * @private\n */\n _addKeyHandler() {\n var _this = this;\n\n this.$tabTitles.off('keydown.zf.tabs').on('keydown.zf.tabs', function(e){\n if (e.which === 9) return;\n\n\n var $element = $(this),\n $elements = $element.parent('ul').children('li'),\n $prevElement,\n $nextElement;\n\n $elements.each(function(i) {\n if ($(this).is($element)) {\n if (_this.options.wrapOnKeys) {\n $prevElement = i === 0 ? $elements.last() : $elements.eq(i-1);\n $nextElement = i === $elements.length -1 ? $elements.first() : $elements.eq(i+1);\n } else {\n $prevElement = $elements.eq(Math.max(0, i-1));\n $nextElement = $elements.eq(Math.min(i+1, $elements.length-1));\n }\n return;\n }\n });\n\n // handle keyboard event with keyboard util\n Keyboard.handleKey(e, 'Tabs', {\n open: function() {\n $element.find('[role=\"tab\"]').focus();\n _this._handleTabChange($element);\n },\n previous: function() {\n $prevElement.find('[role=\"tab\"]').focus();\n _this._handleTabChange($prevElement);\n },\n next: function() {\n $nextElement.find('[role=\"tab\"]').focus();\n _this._handleTabChange($nextElement);\n },\n handled: function() {\n e.preventDefault();\n }\n });\n });\n }\n\n /**\n * Opens the tab `$targetContent` defined by `$target`. Collapses active tab.\n * @param {jQuery} $target - Tab to open.\n * @param {boolean} historyHandled - browser has already handled a history update\n * @fires Tabs#change\n * @function\n */\n _handleTabChange($target, historyHandled) {\n\n // With `activeCollapse`, if the target is the active Tab, collapse it.\n if ($target.hasClass(`${this.options.linkActiveClass}`)) {\n if(this.options.activeCollapse) {\n this._collapse();\n }\n return;\n }\n\n var $oldTab = this.$element.\n find(`.${this.options.linkClass}.${this.options.linkActiveClass}`),\n $tabLink = $target.find('[role=\"tab\"]'),\n target = $tabLink.attr('data-tabs-target'),\n anchor = target && target.length ? `#${target}` : $tabLink[0].hash,\n $targetContent = this.$tabContent.find(anchor);\n\n //close old tab\n this._collapseTab($oldTab);\n\n //open new tab\n this._openTab($target);\n\n //either replace or update browser history\n if (this.options.deepLink && !historyHandled) {\n if (this.options.updateHistory) {\n history.pushState({}, '', anchor);\n } else {\n history.replaceState({}, '', anchor);\n }\n }\n\n /**\n * Fires when the plugin has successfully changed tabs.\n * @event Tabs#change\n */\n this.$element.trigger('change.zf.tabs', [$target, $targetContent]);\n\n //fire to children a mutation event\n $targetContent.find(\"[data-mutate]\").trigger(\"mutateme.zf.trigger\");\n }\n\n /**\n * Opens the tab `$targetContent` defined by `$target`.\n * @param {jQuery} $target - Tab to open.\n * @function\n */\n _openTab($target) {\n var $tabLink = $target.find('[role=\"tab\"]'),\n hash = $tabLink.attr('data-tabs-target') || $tabLink[0].hash.slice(1),\n $targetContent = this.$tabContent.find(`#${hash}`);\n\n $target.addClass(`${this.options.linkActiveClass}`);\n\n $tabLink.attr({\n 'aria-selected': 'true',\n 'tabindex': '0'\n });\n\n $targetContent\n .addClass(`${this.options.panelActiveClass}`).removeAttr('aria-hidden');\n }\n\n /**\n * Collapses `$targetContent` defined by `$target`.\n * @param {jQuery} $target - Tab to collapse.\n * @function\n */\n _collapseTab($target) {\n var $target_anchor = $target\n .removeClass(`${this.options.linkActiveClass}`)\n .find('[role=\"tab\"]')\n .attr({\n 'aria-selected': 'false',\n 'tabindex': -1\n });\n\n $(`#${$target_anchor.attr('aria-controls')}`)\n .removeClass(`${this.options.panelActiveClass}`)\n .attr({ 'aria-hidden': 'true' })\n }\n\n /**\n * Collapses the active Tab.\n * @fires Tabs#collapse\n * @function\n */\n _collapse() {\n var $activeTab = this.$element.find(`.${this.options.linkClass}.${this.options.linkActiveClass}`);\n\n if ($activeTab.length) {\n this._collapseTab($activeTab);\n\n /**\n * Fires when the plugin has successfully collapsed tabs.\n * @event Tabs#collapse\n */\n this.$element.trigger('collapse.zf.tabs', [$activeTab]);\n }\n }\n\n /**\n * Public method for selecting a content pane to display.\n * @param {jQuery | String} elem - jQuery object or string of the id of the pane to display.\n * @param {boolean} historyHandled - browser has already handled a history update\n * @function\n */\n selectTab(elem, historyHandled) {\n var idStr, hashIdStr;\n\n if (typeof elem === 'object') {\n idStr = elem[0].id;\n } else {\n idStr = elem;\n }\n\n if (idStr.indexOf('#') < 0) {\n hashIdStr = `#${idStr}`;\n } else {\n hashIdStr = idStr;\n idStr = idStr.slice(1);\n }\n\n var $target = this.$tabTitles.has(`[href$=\"${hashIdStr}\"],[data-tabs-target=\"${idStr}\"]`).first();\n\n this._handleTabChange($target, historyHandled);\n };\n\n /**\n * Sets the height of each panel to the height of the tallest panel.\n * If enabled in options, gets called on media query change.\n * If loading content via external source, can be called directly or with _reflow.\n * If enabled with `data-match-height=\"true\"`, tabs sets to equal height\n * @function\n * @private\n */\n _setHeight() {\n var max = 0,\n _this = this; // Lock down the `this` value for the root tabs object\n\n if (!this.$tabContent) {\n return;\n }\n\n this.$tabContent\n .find(`.${this.options.panelClass}`)\n .css('height', '')\n .each(function() {\n\n var panel = $(this),\n isActive = panel.hasClass(`${_this.options.panelActiveClass}`); // get the options from the parent instead of trying to get them from the child\n\n if (!isActive) {\n panel.css({'visibility': 'hidden', 'display': 'block'});\n }\n\n var temp = this.getBoundingClientRect().height;\n\n if (!isActive) {\n panel.css({\n 'visibility': '',\n 'display': ''\n });\n }\n\n max = temp > max ? temp : max;\n })\n .css('height', `${max}px`);\n }\n\n /**\n * Destroys an instance of tabs.\n * @fires Tabs#destroyed\n */\n _destroy() {\n this.$element\n .find(`.${this.options.linkClass}`)\n .off('.zf.tabs').hide().end()\n .find(`.${this.options.panelClass}`)\n .hide();\n\n if (this.options.matchHeight) {\n if (this._setHeightMqHandler != null) {\n $(window).off('changed.zf.mediaquery', this._setHeightMqHandler);\n }\n }\n\n if (this.options.deepLink) {\n $(window).off('hashchange', this._checkDeepLink);\n }\n\n if (this.onLoadListener) {\n $(window).off(this.onLoadListener);\n }\n }\n}\n\nTabs.defaults = {\n /**\n * Link the location hash to the active pane.\n * Set the location hash when the active pane changes, and open the corresponding pane when the location changes.\n * @option\n * @type {boolean}\n * @default false\n */\n deepLink: false,\n\n /**\n * If `deepLink` is enabled, adjust the deep link scroll to make sure the top of the tab panel is visible\n * @option\n * @type {boolean}\n * @default false\n */\n deepLinkSmudge: false,\n\n /**\n * If `deepLinkSmudge` is enabled, animation time (ms) for the deep link adjustment\n * @option\n * @type {number}\n * @default 300\n */\n deepLinkSmudgeDelay: 300,\n\n /**\n * If `deepLinkSmudge` is enabled, animation offset from the top for the deep link adjustment\n * @option\n * @type {number}\n * @default 0\n */\n deepLinkSmudgeOffset: 0,\n\n /**\n * If `deepLink` is enabled, update the browser history with the open tab\n * @option\n * @type {boolean}\n * @default false\n */\n updateHistory: false,\n\n /**\n * Allows the window to scroll to content of active pane on load.\n * Not recommended if more than one tab panel per page.\n * @option\n * @type {boolean}\n * @default false\n */\n autoFocus: false,\n\n /**\n * Allows keyboard input to 'wrap' around the tab links.\n * @option\n * @type {boolean}\n * @default true\n */\n wrapOnKeys: true,\n\n /**\n * Allows the tab content panes to match heights if set to true.\n * @option\n * @type {boolean}\n * @default false\n */\n matchHeight: false,\n\n /**\n * Allows active tabs to collapse when clicked.\n * @option\n * @type {boolean}\n * @default false\n */\n activeCollapse: false,\n\n /**\n * Class applied to `li`'s in tab link list.\n * @option\n * @type {string}\n * @default 'tabs-title'\n */\n linkClass: 'tabs-title',\n\n /**\n * Class applied to the active `li` in tab link list.\n * @option\n * @type {string}\n * @default 'is-active'\n */\n linkActiveClass: 'is-active',\n\n /**\n * Class applied to the content containers.\n * @option\n * @type {string}\n * @default 'tabs-panel'\n */\n panelClass: 'tabs-panel',\n\n /**\n * Class applied to the active content container.\n * @option\n * @type {string}\n * @default 'is-active'\n */\n panelActiveClass: 'is-active'\n};\n\nexport {Tabs};\n","import $ from 'jquery';\nimport { Motion } from './foundation.util.motion';\nimport { Plugin } from './foundation.core.plugin';\nimport { RegExpEscape } from './foundation.core.utils';\nimport { Triggers } from './foundation.util.triggers';\n\n/**\n * Toggler module.\n * @module foundation.toggler\n * @requires foundation.util.motion\n * @requires foundation.util.triggers\n */\n\nclass Toggler extends Plugin {\n /**\n * Creates a new instance of Toggler.\n * @class\n * @name Toggler\n * @fires Toggler#init\n * @param {Object} element - jQuery object to add the trigger to.\n * @param {Object} options - Overrides to the default plugin settings.\n */\n _setup(element, options) {\n this.$element = element;\n this.options = $.extend({}, Toggler.defaults, element.data(), options);\n this.className = '';\n this.className = 'Toggler'; // ie9 back compat\n\n // Triggers init is idempotent, just need to make sure it is initialized\n Triggers.init($);\n\n this._init();\n this._events();\n }\n\n /**\n * Initializes the Toggler plugin by parsing the toggle class from data-toggler, or animation classes from data-animate.\n * @function\n * @private\n */\n _init() {\n // Collect triggers to set ARIA attributes to\n var id = this.$element[0].id,\n $triggers = $(`[data-open~=\"${id}\"], [data-close~=\"${id}\"], [data-toggle~=\"${id}\"]`);\n\n var input;\n // Parse animation classes if they were set\n if (this.options.animate) {\n input = this.options.animate.split(' ');\n\n this.animationIn = input[0];\n this.animationOut = input[1] || null;\n\n // - aria-expanded: according to the element visibility.\n $triggers.attr('aria-expanded', !this.$element.is(':hidden'));\n }\n // Otherwise, parse toggle class\n else {\n input = this.options.toggler;\n if (typeof input !== 'string' || !input.length) {\n throw new Error(`The 'toggler' option containing the target class is required, got \"${input}\"`);\n }\n // Allow for a . at the beginning of the string\n this.className = input[0] === '.' ? input.slice(1) : input;\n\n // - aria-expanded: according to the elements class set.\n $triggers.attr('aria-expanded', this.$element.hasClass(this.className));\n }\n\n // - aria-controls: adding the element id to it if not already in it.\n $triggers.each((index, trigger) => {\n const $trigger = $(trigger);\n const controls = $trigger.attr('aria-controls') || '';\n\n const containsId = new RegExp(`\\\\b${RegExpEscape(id)}\\\\b`).test(controls);\n if (!containsId) $trigger.attr('aria-controls', controls ? `${controls} ${id}` : id);\n });\n }\n\n /**\n * Initializes events for the toggle trigger.\n * @function\n * @private\n */\n _events() {\n this.$element.off('toggle.zf.trigger').on('toggle.zf.trigger', this.toggle.bind(this));\n }\n\n /**\n * Toggles the target class on the target element. An event is fired from the original trigger depending on if the resultant state was \"on\" or \"off\".\n * @function\n * @fires Toggler#on\n * @fires Toggler#off\n */\n toggle() {\n this[ this.options.animate ? '_toggleAnimate' : '_toggleClass']();\n }\n\n _toggleClass() {\n this.$element.toggleClass(this.className);\n\n var isOn = this.$element.hasClass(this.className);\n if (isOn) {\n /**\n * Fires if the target element has the class after a toggle.\n * @event Toggler#on\n */\n this.$element.trigger('on.zf.toggler');\n }\n else {\n /**\n * Fires if the target element does not have the class after a toggle.\n * @event Toggler#off\n */\n this.$element.trigger('off.zf.toggler');\n }\n\n this._updateARIA(isOn);\n this.$element.find('[data-mutate]').trigger('mutateme.zf.trigger');\n }\n\n _toggleAnimate() {\n var _this = this;\n\n if (this.$element.is(':hidden')) {\n Motion.animateIn(this.$element, this.animationIn, function() {\n _this._updateARIA(true);\n this.trigger('on.zf.toggler');\n this.find('[data-mutate]').trigger('mutateme.zf.trigger');\n });\n }\n else {\n Motion.animateOut(this.$element, this.animationOut, function() {\n _this._updateARIA(false);\n this.trigger('off.zf.toggler');\n this.find('[data-mutate]').trigger('mutateme.zf.trigger');\n });\n }\n }\n\n _updateARIA(isOn) {\n var id = this.$element[0].id;\n $(`[data-open=\"${id}\"], [data-close=\"${id}\"], [data-toggle=\"${id}\"]`)\n .attr({\n 'aria-expanded': isOn ? true : false\n });\n }\n\n /**\n * Destroys the instance of Toggler on the element.\n * @function\n */\n _destroy() {\n this.$element.off('.zf.toggler');\n }\n}\n\nToggler.defaults = {\n /**\n * Class of the element to toggle. It can be provided with or without \".\"\n * @option\n * @type {string}\n */\n toggler: undefined,\n /**\n * Tells the plugin if the element should animated when toggled.\n * @option\n * @type {boolean}\n * @default false\n */\n animate: false\n};\n\nexport {Toggler};\n","var Box = {\n ImNotTouchingYou: ImNotTouchingYou,\n OverlapArea: OverlapArea,\n GetDimensions: GetDimensions,\n GetExplicitOffsets: GetExplicitOffsets\n}\n\n/**\n * Compares the dimensions of an element to a container and determines collision events with container.\n * @function\n * @param {jQuery} element - jQuery object to test for collisions.\n * @param {jQuery} parent - jQuery object to use as bounding container.\n * @param {Boolean} lrOnly - set to true to check left and right values only.\n * @param {Boolean} tbOnly - set to true to check top and bottom values only.\n * @default if no parent object passed, detects collisions with `window`.\n * @returns {Boolean} - true if collision free, false if a collision in any direction.\n */\nfunction ImNotTouchingYou(element, parent, lrOnly, tbOnly, ignoreBottom) {\n return OverlapArea(element, parent, lrOnly, tbOnly, ignoreBottom) === 0;\n}\n\nfunction OverlapArea(element, parent, lrOnly, tbOnly, ignoreBottom) {\n var eleDims = GetDimensions(element),\n topOver, bottomOver, leftOver, rightOver;\n if (parent) {\n var parDims = GetDimensions(parent);\n\n bottomOver = (parDims.height + parDims.offset.top) - (eleDims.offset.top + eleDims.height);\n topOver = eleDims.offset.top - parDims.offset.top;\n leftOver = eleDims.offset.left - parDims.offset.left;\n rightOver = (parDims.width + parDims.offset.left) - (eleDims.offset.left + eleDims.width);\n }\n else {\n bottomOver = (eleDims.windowDims.height + eleDims.windowDims.offset.top) - (eleDims.offset.top + eleDims.height);\n topOver = eleDims.offset.top - eleDims.windowDims.offset.top;\n leftOver = eleDims.offset.left - eleDims.windowDims.offset.left;\n rightOver = eleDims.windowDims.width - (eleDims.offset.left + eleDims.width);\n }\n\n bottomOver = ignoreBottom ? 0 : Math.min(bottomOver, 0);\n topOver = Math.min(topOver, 0);\n leftOver = Math.min(leftOver, 0);\n rightOver = Math.min(rightOver, 0);\n\n if (lrOnly) {\n return leftOver + rightOver;\n }\n if (tbOnly) {\n return topOver + bottomOver;\n }\n\n // use sum of squares b/c we care about overlap area.\n return Math.sqrt((topOver * topOver) + (bottomOver * bottomOver) + (leftOver * leftOver) + (rightOver * rightOver));\n}\n\n/**\n * Uses native methods to return an object of dimension values.\n * @function\n * @param {jQuery || HTML} element - jQuery object or DOM element for which to get the dimensions. Can be any element other that document or window.\n * @returns {Object} - nested object of integer pixel values\n * TODO - if element is window, return only those values.\n */\nfunction GetDimensions(elem){\n elem = elem.length ? elem[0] : elem;\n\n if (elem === window || elem === document) {\n throw new Error(\"I'm sorry, Dave. I'm afraid I can't do that.\");\n }\n\n var rect = elem.getBoundingClientRect(),\n parRect = elem.parentNode.getBoundingClientRect(),\n winRect = document.body.getBoundingClientRect(),\n winY = window.pageYOffset,\n winX = window.pageXOffset;\n\n return {\n width: rect.width,\n height: rect.height,\n offset: {\n top: rect.top + winY,\n left: rect.left + winX\n },\n parentDims: {\n width: parRect.width,\n height: parRect.height,\n offset: {\n top: parRect.top + winY,\n left: parRect.left + winX\n }\n },\n windowDims: {\n width: winRect.width,\n height: winRect.height,\n offset: {\n top: winY,\n left: winX\n }\n }\n }\n}\n\n/**\n * Returns an object of top and left integer pixel values for dynamically rendered elements,\n * such as: Tooltip, Reveal, and Dropdown. Maintained for backwards compatibility, and where\n * you don't know alignment, but generally from\n * 6.4 forward you should use GetExplicitOffsets, as GetOffsets conflates position and alignment.\n * @function\n * @param {jQuery} element - jQuery object for the element being positioned.\n * @param {jQuery} anchor - jQuery object for the element's anchor point.\n * @param {String} position - a string relating to the desired position of the element, relative to it's anchor\n * @param {Number} vOffset - integer pixel value of desired vertical separation between anchor and element.\n * @param {Number} hOffset - integer pixel value of desired horizontal separation between anchor and element.\n * @param {Boolean} isOverflow - if a collision event is detected, sets to true to default the element to full width - any desired offset.\n * TODO alter/rewrite to work with `em` values as well/instead of pixels\n */\nfunction GetExplicitOffsets(element, anchor, position, alignment, vOffset, hOffset, isOverflow) {\n var $eleDims = GetDimensions(element),\n $anchorDims = anchor ? GetDimensions(anchor) : null;\n\n var topVal, leftVal;\n\n if ($anchorDims !== null) {\n // set position related attribute\n switch (position) {\n case 'top':\n topVal = $anchorDims.offset.top - ($eleDims.height + vOffset);\n break;\n case 'bottom':\n topVal = $anchorDims.offset.top + $anchorDims.height + vOffset;\n break;\n case 'left':\n leftVal = $anchorDims.offset.left - ($eleDims.width + hOffset);\n break;\n case 'right':\n leftVal = $anchorDims.offset.left + $anchorDims.width + hOffset;\n break;\n }\n\n // set alignment related attribute\n switch (position) {\n case 'top':\n case 'bottom':\n switch (alignment) {\n case 'left':\n leftVal = $anchorDims.offset.left + hOffset;\n break;\n case 'right':\n leftVal = $anchorDims.offset.left - $eleDims.width + $anchorDims.width - hOffset;\n break;\n case 'center':\n leftVal = isOverflow ? hOffset : (($anchorDims.offset.left + ($anchorDims.width / 2)) - ($eleDims.width / 2)) + hOffset;\n break;\n }\n break;\n case 'right':\n case 'left':\n switch (alignment) {\n case 'bottom':\n topVal = $anchorDims.offset.top - vOffset + $anchorDims.height - $eleDims.height;\n break;\n case 'top':\n topVal = $anchorDims.offset.top + vOffset\n break;\n case 'center':\n topVal = ($anchorDims.offset.top + vOffset + ($anchorDims.height / 2)) - ($eleDims.height / 2)\n break;\n }\n break;\n }\n }\n\n return {top: topVal, left: leftVal};\n}\n\nexport {Box};\n","import $ from 'jquery';\n\n/**\n * Runs a callback function when images are fully loaded.\n * @param {Object} images - Image(s) to check if loaded.\n * @param {Func} callback - Function to execute when image is fully loaded.\n */\nfunction onImagesLoaded(images, callback){\n var self = this,\n unloaded = images.length;\n\n if (unloaded === 0) {\n callback();\n }\n\n images.each(function(){\n // Check if image is loaded\n if (this.complete && typeof this.naturalWidth !== 'undefined') {\n singleImageLoaded();\n }\n else {\n // If the above check failed, simulate loading on detached element.\n var image = new Image();\n // Still count image as loaded if it finalizes with an error.\n var events = \"load.zf.images error.zf.images\";\n $(image).one(events, function me(event){\n // Unbind the event listeners. We're using 'one' but only one of the two events will have fired.\n $(this).off(events, me);\n singleImageLoaded();\n });\n image.src = $(this).attr('src');\n }\n });\n\n function singleImageLoaded() {\n unloaded--;\n if (unloaded === 0) {\n callback();\n }\n }\n}\n\nexport { onImagesLoaded };\n","/*******************************************\n * *\n * This util was created by Marius Olbertz *\n * Please thank Marius on GitHub /owlbertz *\n * or the web http://www.mariusolbertz.de/ *\n * *\n ******************************************/\n\nimport $ from 'jquery';\nimport { rtl as Rtl } from './foundation.core.utils';\n\nconst keyCodes = {\n 9: 'TAB',\n 13: 'ENTER',\n 27: 'ESCAPE',\n 32: 'SPACE',\n 35: 'END',\n 36: 'HOME',\n 37: 'ARROW_LEFT',\n 38: 'ARROW_UP',\n 39: 'ARROW_RIGHT',\n 40: 'ARROW_DOWN'\n}\n\nvar commands = {}\n\n// Functions pulled out to be referenceable from internals\nfunction findFocusable($element) {\n if(!$element) {return false; }\n return $element.find('a[href], area[href], input:not([disabled]), select:not([disabled]), textarea:not([disabled]), button:not([disabled]), iframe, object, embed, *[tabindex], *[contenteditable]').filter(function() {\n if (!$(this).is(':visible') || $(this).attr('tabindex') < 0) { return false; } //only have visible elements and those that have a tabindex greater or equal 0\n return true;\n })\n .sort( function( a, b ) {\n if ($(a).attr('tabindex') == $(b).attr('tabindex')) {\n return 0;\n }\n let aTabIndex = parseInt($(a).attr('tabindex')),\n bTabIndex = parseInt($(b).attr('tabindex'));\n // Undefined is treated the same as 0\n if (typeof $(a).attr('tabindex') == 'undefined' && bTabIndex > 0) {\n return 1;\n }\n if (typeof $(b).attr('tabindex') == 'undefined' && aTabIndex > 0) {\n return -1;\n }\n if (aTabIndex == 0 && bTabIndex > 0) {\n return 1;\n }\n if (bTabIndex == 0 && aTabIndex > 0) {\n return -1;\n }\n if (aTabIndex < bTabIndex) {\n return -1;\n }\n if (aTabIndex > bTabIndex) {\n return 1;\n }\n });\n}\n\nfunction parseKey(event) {\n var key = keyCodes[event.which || event.keyCode] || String.fromCharCode(event.which).toUpperCase();\n\n // Remove un-printable characters, e.g. for `fromCharCode` calls for CTRL only events\n key = key.replace(/\\W+/, '');\n\n if (event.shiftKey) key = `SHIFT_${key}`;\n if (event.ctrlKey) key = `CTRL_${key}`;\n if (event.altKey) key = `ALT_${key}`;\n\n // Remove trailing underscore, in case only modifiers were used (e.g. only `CTRL_ALT`)\n key = key.replace(/_$/, '');\n\n return key;\n}\n\nvar Keyboard = {\n keys: getKeyCodes(keyCodes),\n\n /**\n * Parses the (keyboard) event and returns a String that represents its key\n * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE\n * @param {Event} event - the event generated by the event handler\n * @return String key - String that represents the key pressed\n */\n parseKey: parseKey,\n\n /**\n * Handles the given (keyboard) event\n * @param {Event} event - the event generated by the event handler\n * @param {String} component - Foundation component's name, e.g. Slider or Reveal\n * @param {Objects} functions - collection of functions that are to be executed\n */\n handleKey(event, component, functions) {\n var commandList = commands[component],\n keyCode = this.parseKey(event),\n cmds,\n command,\n fn;\n\n if (!commandList) return console.warn('Component not defined!');\n\n // Ignore the event if it was already handled\n if (event.zfIsKeyHandled === true) return;\n\n // This component does not differentiate between ltr and rtl\n if (typeof commandList.ltr === 'undefined') {\n cmds = commandList; // use plain list\n } else { // merge ltr and rtl: if document is rtl, rtl overwrites ltr and vice versa\n if (Rtl()) cmds = $.extend({}, commandList.ltr, commandList.rtl);\n\n else cmds = $.extend({}, commandList.rtl, commandList.ltr);\n }\n command = cmds[keyCode];\n\n fn = functions[command];\n // Execute the handler if found\n if (fn && typeof fn === 'function') {\n var returnValue = fn.apply();\n\n // Mark the event as \"handled\" to prevent future handlings\n event.zfIsKeyHandled = true;\n\n // Execute function when event was handled\n if (functions.handled || typeof functions.handled === 'function') {\n functions.handled(returnValue);\n }\n } else {\n // Execute function when event was not handled\n if (functions.unhandled || typeof functions.unhandled === 'function') {\n functions.unhandled();\n }\n }\n },\n\n /**\n * Finds all focusable elements within the given `$element`\n * @param {jQuery} $element - jQuery object to search within\n * @return {jQuery} $focusable - all focusable elements within `$element`\n */\n\n findFocusable: findFocusable,\n\n /**\n * Returns the component name name\n * @param {Object} component - Foundation component, e.g. Slider or Reveal\n * @return String componentName\n */\n\n register(componentName, cmds) {\n commands[componentName] = cmds;\n },\n\n\n // TODO9438: These references to Keyboard need to not require global. Will 'this' work in this context?\n //\n /**\n * Traps the focus in the given element.\n * @param {jQuery} $element jQuery object to trap the foucs into.\n */\n trapFocus($element) {\n var $focusable = findFocusable($element),\n $firstFocusable = $focusable.eq(0),\n $lastFocusable = $focusable.eq(-1);\n\n $element.on('keydown.zf.trapfocus', function(event) {\n if (event.target === $lastFocusable[0] && parseKey(event) === 'TAB') {\n event.preventDefault();\n $firstFocusable.focus();\n }\n else if (event.target === $firstFocusable[0] && parseKey(event) === 'SHIFT_TAB') {\n event.preventDefault();\n $lastFocusable.focus();\n }\n });\n },\n /**\n * Releases the trapped focus from the given element.\n * @param {jQuery} $element jQuery object to release the focus for.\n */\n releaseFocus($element) {\n $element.off('keydown.zf.trapfocus');\n }\n}\n\n/*\n * Constants for easier comparing.\n * Can be used like Foundation.parseKey(event) === Foundation.keys.SPACE\n */\nfunction getKeyCodes(kcs) {\n var k = {};\n for (var kc in kcs) k[kcs[kc]] = kcs[kc];\n return k;\n}\n\nexport {Keyboard};\n","import $ from 'jquery';\n\n// Default set of media queries\nconst defaultQueries = {\n 'default' : 'only screen',\n landscape : 'only screen and (orientation: landscape)',\n portrait : 'only screen and (orientation: portrait)',\n retina : 'only screen and (-webkit-min-device-pixel-ratio: 2),' +\n 'only screen and (min--moz-device-pixel-ratio: 2),' +\n 'only screen and (-o-min-device-pixel-ratio: 2/1),' +\n 'only screen and (min-device-pixel-ratio: 2),' +\n 'only screen and (min-resolution: 192dpi),' +\n 'only screen and (min-resolution: 2dppx)'\n };\n\n\n// matchMedia() polyfill - Test a CSS media type/query in JS.\n// Authors & copyright © 2012: Scott Jehl, Paul Irish, Nicholas Zakas, David Knight. MIT license\n/* eslint-disable */\nwindow.matchMedia || (window.matchMedia = (function () {\n \"use strict\";\n\n // For browsers that support matchMedium api such as IE 9 and webkit\n var styleMedia = (window.styleMedia || window.media);\n\n // For those that don't support matchMedium\n if (!styleMedia) {\n var style = document.createElement('style'),\n script = document.getElementsByTagName('script')[0],\n info = null;\n\n style.type = 'text/css';\n style.id = 'matchmediajs-test';\n\n if (!script) {\n document.head.appendChild(style);\n } else {\n script.parentNode.insertBefore(style, script);\n }\n\n // 'style.currentStyle' is used by IE <= 8 and 'window.getComputedStyle' for all other browsers\n info = ('getComputedStyle' in window) && window.getComputedStyle(style, null) || style.currentStyle;\n\n styleMedia = {\n matchMedium: function (media) {\n var text = '@media ' + media + '{ #matchmediajs-test { width: 1px; } }';\n\n // 'style.styleSheet' is used by IE <= 8 and 'style.textContent' for all other browsers\n if (style.styleSheet) {\n style.styleSheet.cssText = text;\n } else {\n style.textContent = text;\n }\n\n // Test if media query is true or false\n return info.width === '1px';\n }\n };\n }\n\n return function(media) {\n return {\n matches: styleMedia.matchMedium(media || 'all'),\n media: media || 'all'\n };\n };\n})());\n/* eslint-enable */\n\nvar MediaQuery = {\n queries: [],\n\n current: '',\n\n /**\n * Initializes the media query helper, by extracting the breakpoint list from the CSS and activating the breakpoint watcher.\n * @function\n * @private\n */\n _init() {\n\n // make sure the initialization is only done once when calling _init() several times\n if (this.isInitialized === true) {\n return;\n } else {\n this.isInitialized = true;\n }\n\n var self = this;\n var $meta = $('meta.foundation-mq');\n if(!$meta.length){\n $('').appendTo(document.head);\n }\n\n var extractedStyles = $('.foundation-mq').css('font-family');\n var namedQueries;\n\n namedQueries = parseStyleToObject(extractedStyles);\n\n self.queries = []; // reset\n\n for (var key in namedQueries) {\n if(namedQueries.hasOwnProperty(key)) {\n self.queries.push({\n name: key,\n value: `only screen and (min-width: ${namedQueries[key]})`\n });\n }\n }\n\n this.current = this._getCurrentSize();\n\n this._watcher();\n },\n\n /**\n * Reinitializes the media query helper.\n * Useful if your CSS breakpoint configuration has just been loaded or has changed since the initialization.\n * @function\n * @private\n */\n _reInit() {\n this.isInitialized = false;\n this._init();\n },\n\n /**\n * Checks if the screen is at least as wide as a breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint to check.\n * @returns {Boolean} `true` if the breakpoint matches, `false` if it's smaller.\n */\n atLeast(size) {\n var query = this.get(size);\n\n if (query) {\n return window.matchMedia(query).matches;\n }\n\n return false;\n },\n\n /**\n * Checks if the screen is within the given breakpoint.\n * If smaller than the breakpoint of larger than its upper limit it returns false.\n * @function\n * @param {String} size - Name of the breakpoint to check.\n * @returns {Boolean} `true` if the breakpoint matches, `false` otherwise.\n */\n only(size) {\n return size === this._getCurrentSize();\n },\n\n /**\n * Checks if the screen is within a breakpoint or smaller.\n * @function\n * @param {String} size - Name of the breakpoint to check.\n * @returns {Boolean} `true` if the breakpoint matches, `false` if it's larger.\n */\n upTo(size) {\n const nextSize = this.next(size);\n\n // If the next breakpoint does not match, the screen is smaller than\n // the upper limit of this breakpoint.\n if (nextSize) {\n return !this.atLeast(nextSize);\n }\n\n // If there is no next breakpoint, the \"size\" breakpoint does not have\n // an upper limit and the screen will always be within it or smaller.\n return true;\n },\n\n /**\n * Checks if the screen matches to a breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint to check, either 'small only' or 'small'. Omitting 'only' falls back to using atLeast() method.\n * @returns {Boolean} `true` if the breakpoint matches, `false` if it does not.\n */\n is(size) {\n const parts = size.trim().split(' ').filter(p => !!p.length);\n const [bpSize, bpModifier = ''] = parts;\n\n // Only the breakpont\n if (bpModifier === 'only') {\n return this.only(bpSize);\n }\n // At least the breakpoint (included)\n if (!bpModifier || bpModifier === 'up') {\n return this.atLeast(bpSize);\n }\n // Up to the breakpoint (included)\n if (bpModifier === 'down') {\n return this.upTo(bpSize);\n }\n\n throw new Error(`\n Invalid breakpoint passed to MediaQuery.is().\n Expected a breakpoint name formatted like \" \", got \"${size}\".\n `);\n },\n\n /**\n * Gets the media query of a breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint to get.\n * @returns {String|null} - The media query of the breakpoint, or `null` if the breakpoint doesn't exist.\n */\n get(size) {\n for (var i in this.queries) {\n if(this.queries.hasOwnProperty(i)) {\n var query = this.queries[i];\n if (size === query.name) return query.value;\n }\n }\n\n return null;\n },\n\n /**\n * Get the breakpoint following the given breakpoint.\n * @function\n * @param {String} size - Name of the breakpoint.\n * @returns {String|null} - The name of the following breakpoint, or `null` if the passed breakpoint was the last one.\n */\n next(size) {\n const queryIndex = this.queries.findIndex((q) => this._getQueryName(q) === size);\n if (queryIndex === -1) {\n throw new Error(`\n Unknown breakpoint \"${size}\" passed to MediaQuery.next().\n Ensure it is present in your Sass \"$breakpoints\" setting.\n `);\n }\n\n const nextQuery = this.queries[queryIndex + 1];\n return nextQuery ? nextQuery.name : null;\n },\n\n /**\n * Returns the name of the breakpoint related to the given value.\n * @function\n * @private\n * @param {String|Object} value - Breakpoint name or query object.\n * @returns {String} Name of the breakpoint.\n */\n _getQueryName(value) {\n if (typeof value === 'string')\n return value;\n if (typeof value === 'object')\n return value.name;\n throw new TypeError(`\n Invalid value passed to MediaQuery._getQueryName().\n Expected a breakpoint name (String) or a breakpoint query (Object), got \"${value}\" (${typeof value})\n `);\n },\n\n /**\n * Gets the current breakpoint name by testing every breakpoint and returning the last one to match (the biggest one).\n * @function\n * @private\n * @returns {String} Name of the current breakpoint.\n */\n _getCurrentSize() {\n var matched;\n\n for (var i = 0; i < this.queries.length; i++) {\n var query = this.queries[i];\n\n if (window.matchMedia(query.value).matches) {\n matched = query;\n }\n }\n\n return matched && this._getQueryName(matched);\n },\n\n /**\n * Activates the breakpoint watcher, which fires an event on the window whenever the breakpoint changes.\n * @function\n * @private\n */\n _watcher() {\n $(window).off('resize.zf.mediaquery').on('resize.zf.mediaquery', () => {\n var newSize = this._getCurrentSize(), currentSize = this.current;\n\n if (newSize !== currentSize) {\n // Change the current media query\n this.current = newSize;\n\n // Broadcast the media query change on the window\n $(window).trigger('changed.zf.mediaquery', [newSize, currentSize]);\n }\n });\n }\n};\n\n\n\n// Thank you: https://github.com/sindresorhus/query-string\nfunction parseStyleToObject(str) {\n var styleObject = {};\n\n if (typeof str !== 'string') {\n return styleObject;\n }\n\n str = str.trim().slice(1, -1); // browsers re-quote string style values\n\n if (!str) {\n return styleObject;\n }\n\n styleObject = str.split('&').reduce(function(ret, param) {\n var parts = param.replace(/\\+/g, ' ').split('=');\n var key = parts[0];\n var val = parts[1];\n key = decodeURIComponent(key);\n\n // missing `=` should be `null`:\n // http://w3.org/TR/2012/WD-url-20120524/#collect-url-parameters\n val = typeof val === 'undefined' ? null : decodeURIComponent(val);\n\n if (!ret.hasOwnProperty(key)) {\n ret[key] = val;\n } else if (Array.isArray(ret[key])) {\n ret[key].push(val);\n } else {\n ret[key] = [ret[key], val];\n }\n return ret;\n }, {});\n\n return styleObject;\n}\n\nexport {MediaQuery};\n","import $ from 'jquery';\nimport { transitionend } from './foundation.core.utils';\n\n/**\n * Motion module.\n * @module foundation.motion\n */\n\nconst initClasses = ['mui-enter', 'mui-leave'];\nconst activeClasses = ['mui-enter-active', 'mui-leave-active'];\n\nconst Motion = {\n animateIn: function(element, animation, cb) {\n animate(true, element, animation, cb);\n },\n\n animateOut: function(element, animation, cb) {\n animate(false, element, animation, cb);\n }\n}\n\nfunction Move(duration, elem, fn){\n var anim, prog, start = null;\n // console.log('called');\n\n if (duration === 0) {\n fn.apply(elem);\n elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]);\n return;\n }\n\n function move(ts){\n if(!start) start = ts;\n // console.log(start, ts);\n prog = ts - start;\n fn.apply(elem);\n\n if(prog < duration){ anim = window.requestAnimationFrame(move, elem); }\n else{\n window.cancelAnimationFrame(anim);\n elem.trigger('finished.zf.animate', [elem]).triggerHandler('finished.zf.animate', [elem]);\n }\n }\n anim = window.requestAnimationFrame(move);\n}\n\n/**\n * Animates an element in or out using a CSS transition class.\n * @function\n * @private\n * @param {Boolean} isIn - Defines if the animation is in or out.\n * @param {Object} element - jQuery or HTML object to animate.\n * @param {String} animation - CSS class to use.\n * @param {Function} cb - Callback to run when animation is finished.\n */\nfunction animate(isIn, element, animation, cb) {\n element = $(element).eq(0);\n\n if (!element.length) return;\n\n var initClass = isIn ? initClasses[0] : initClasses[1];\n var activeClass = isIn ? activeClasses[0] : activeClasses[1];\n\n // Set up the animation\n reset();\n\n element\n .addClass(animation)\n .css('transition', 'none');\n\n requestAnimationFrame(() => {\n element.addClass(initClass);\n if (isIn) element.show();\n });\n\n // Start the animation\n requestAnimationFrame(() => {\n // will trigger the browser to synchronously calculate the style and layout\n // also called reflow or layout thrashing\n // see https://gist.github.com/paulirish/5d52fb081b3570c81e3a\n element[0].offsetWidth;\n element\n .css('transition', '')\n .addClass(activeClass);\n });\n\n // Clean up the animation when it finishes\n element.one(transitionend(element), finish);\n\n // Hides the element (for out animations), resets the element, and runs a callback\n function finish() {\n if (!isIn) element.hide();\n reset();\n if (cb) cb.apply(element);\n }\n\n // Resets transitions and removes motion-specific classes\n function reset() {\n element[0].style.transitionDuration = 0;\n element.removeClass(`${initClass} ${activeClass} ${animation}`);\n }\n}\n\nexport { Move, Motion };\n\n","import $ from 'jquery';\n\nconst Nest = {\n Feather(menu, type = 'zf') {\n menu.attr('role', 'menubar');\n menu.find('a').attr({'role': 'menuitem'});\n\n var items = menu.find('li').attr({'role': 'none'}),\n subMenuClass = `is-${type}-submenu`,\n subItemClass = `${subMenuClass}-item`,\n hasSubClass = `is-${type}-submenu-parent`,\n applyAria = (type !== 'accordion'); // Accordions handle their own ARIA attriutes.\n\n items.each(function() {\n var $item = $(this),\n $sub = $item.children('ul');\n\n if ($sub.length) {\n $item.addClass(hasSubClass);\n if(applyAria) {\n $item.children('a:first').attr({\n 'aria-haspopup': true,\n 'aria-label': $item.children('a:first').text()\n });\n // Note: Drilldowns behave differently in how they hide, and so need\n // additional attributes. We should look if this possibly over-generalized\n // utility (Nest) is appropriate when we rework menus in 6.4\n if(type === 'drilldown') {\n $item.attr({'aria-expanded': false});\n }\n }\n $sub\n .addClass(`submenu ${subMenuClass}`)\n .attr({\n 'data-submenu': '',\n 'role': 'menubar'\n });\n if(type === 'drilldown') {\n $sub.attr({'aria-hidden': true});\n }\n }\n\n if ($item.parent('[data-submenu]').length) {\n $item.addClass(`is-submenu-item ${subItemClass}`);\n }\n });\n\n return;\n },\n\n Burn(menu, type) {\n var //items = menu.find('li'),\n subMenuClass = `is-${type}-submenu`,\n subItemClass = `${subMenuClass}-item`,\n hasSubClass = `is-${type}-submenu-parent`;\n\n menu\n .find('>li, > li > ul, .menu, .menu > li, [data-submenu] > li')\n .removeClass(`${subMenuClass} ${subItemClass} ${hasSubClass} is-submenu-item submenu is-active`)\n .removeAttr('data-submenu').css('display', '');\n\n }\n}\n\nexport {Nest};\n","import $ from 'jquery';\n\nfunction Timer(elem, options, cb) {\n var _this = this,\n duration = options.duration,//options is an object for easily adding features later.\n nameSpace = Object.keys(elem.data())[0] || 'timer',\n remain = -1,\n start,\n timer;\n\n this.isPaused = false;\n\n this.restart = function() {\n remain = -1;\n clearTimeout(timer);\n this.start();\n }\n\n this.start = function() {\n this.isPaused = false;\n // if(!elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things.\n clearTimeout(timer);\n remain = remain <= 0 ? duration : remain;\n elem.data('paused', false);\n start = Date.now();\n timer = setTimeout(function(){\n if(options.infinite){\n _this.restart();//rerun the timer.\n }\n if (cb && typeof cb === 'function') { cb(); }\n }, remain);\n elem.trigger(`timerstart.zf.${nameSpace}`);\n }\n\n this.pause = function() {\n this.isPaused = true;\n //if(elem.data('paused')){ return false; }//maybe implement this sanity check if used for other things.\n clearTimeout(timer);\n elem.data('paused', true);\n var end = Date.now();\n remain = remain - (end - start);\n elem.trigger(`timerpaused.zf.${nameSpace}`);\n }\n}\n\nexport {Timer};\n","//**************************************************\n//**Work inspired by multiple jquery swipe plugins**\n//**Done by Yohai Ararat ***************************\n//**************************************************\n\nimport $ from 'jquery';\n\nvar Touch = {};\n\nvar startPosX,\n startPosY,\n startTime,\n elapsedTime,\n startEvent,\n isMoving = false,\n didMoved = false;\n\nfunction onTouchEnd(e) {\n this.removeEventListener('touchmove', onTouchMove);\n this.removeEventListener('touchend', onTouchEnd);\n\n // If the touch did not move, consider it as a \"tap\"\n if (!didMoved) {\n var tapEvent = $.Event('tap', startEvent || e);\n $(this).trigger(tapEvent);\n }\n\n startEvent = null;\n isMoving = false;\n didMoved = false;\n}\n\nfunction onTouchMove(e) {\n if (true === $.spotSwipe.preventDefault) { e.preventDefault(); }\n\n if(isMoving) {\n var x = e.touches[0].pageX;\n // var y = e.touches[0].pageY;\n var dx = startPosX - x;\n // var dy = startPosY - y;\n var dir;\n didMoved = true;\n elapsedTime = new Date().getTime() - startTime;\n if(Math.abs(dx) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {\n dir = dx > 0 ? 'left' : 'right';\n }\n // else if(Math.abs(dy) >= $.spotSwipe.moveThreshold && elapsedTime <= $.spotSwipe.timeThreshold) {\n // dir = dy > 0 ? 'down' : 'up';\n // }\n if(dir) {\n e.preventDefault();\n onTouchEnd.apply(this, arguments);\n $(this)\n .trigger($.Event('swipe', Object.assign({}, e)), dir)\n .trigger($.Event(`swipe${dir}`, Object.assign({}, e)));\n }\n }\n\n}\n\nfunction onTouchStart(e) {\n\n if (e.touches.length === 1) {\n startPosX = e.touches[0].pageX;\n startPosY = e.touches[0].pageY;\n startEvent = e;\n isMoving = true;\n didMoved = false;\n startTime = new Date().getTime();\n this.addEventListener('touchmove', onTouchMove, { passive : true === $.spotSwipe.preventDefault });\n this.addEventListener('touchend', onTouchEnd, false);\n }\n}\n\nfunction init() {\n this.addEventListener && this.addEventListener('touchstart', onTouchStart, { passive : true });\n}\n\nfunction teardown() {\n this.removeEventListener('touchstart', onTouchStart);\n}\n\nclass SpotSwipe {\n constructor($) {\n this.version = '1.0.0';\n this.enabled = 'ontouchstart' in document.documentElement;\n this.preventDefault = false;\n this.moveThreshold = 75;\n this.timeThreshold = 200;\n this.$ = $;\n this._init();\n }\n\n _init() {\n var $ = this.$;\n $.event.special.swipe = { setup: init };\n $.event.special.tap = { setup: init };\n\n $.each(['left', 'up', 'down', 'right'], function () {\n $.event.special[`swipe${this}`] = { setup: function(){\n $(this).on('swipe', $.noop);\n } };\n });\n }\n}\n\n/****************************************************\n * As far as I can tell, both setupSpotSwipe and *\n * setupTouchHandler should be idempotent, *\n * because they directly replace functions & *\n * values, and do not add event handlers directly. *\n ****************************************************/\n\nTouch.setupSpotSwipe = function($) {\n $.spotSwipe = new SpotSwipe($);\n};\n\n/****************************************************\n * Method for adding pseudo drag events to elements *\n ***************************************************/\nTouch.setupTouchHandler = function($) {\n $.fn.addTouch = function(){\n this.each(function(i,el){\n $(el).bind('touchstart touchmove touchend touchcancel', function(event) {\n //we pass the original event object because the jQuery event\n //object is normalized to w3c specs and does not provide the TouchList\n handleTouch(event);\n });\n });\n\n var handleTouch = function(event){\n var touches = event.changedTouches,\n first = touches[0],\n eventTypes = {\n touchstart: 'mousedown',\n touchmove: 'mousemove',\n touchend: 'mouseup'\n },\n type = eventTypes[event.type],\n simulatedEvent\n ;\n\n if('MouseEvent' in window && typeof window.MouseEvent === 'function') {\n simulatedEvent = new window.MouseEvent(type, {\n 'bubbles': true,\n 'cancelable': true,\n 'screenX': first.screenX,\n 'screenY': first.screenY,\n 'clientX': first.clientX,\n 'clientY': first.clientY\n });\n } else {\n simulatedEvent = document.createEvent('MouseEvent');\n simulatedEvent.initMouseEvent(type, true, true, window, 1, first.screenX, first.screenY, first.clientX, first.clientY, false, false, false, false, 0/*left*/, null);\n }\n first.target.dispatchEvent(simulatedEvent);\n };\n };\n};\n\nTouch.init = function ($) {\n\n if(typeof($.spotSwipe) === 'undefined') {\n Touch.setupSpotSwipe($);\n Touch.setupTouchHandler($);\n }\n};\n\nexport {Touch};\n","import $ from 'jquery';\nimport { onLoad } from './foundation.core.utils';\nimport { Motion } from './foundation.util.motion';\n\nconst MutationObserver = (function () {\n var prefixes = ['WebKit', 'Moz', 'O', 'Ms', ''];\n for (var i=0; i < prefixes.length; i++) {\n if (`${prefixes[i]}MutationObserver` in window) {\n return window[`${prefixes[i]}MutationObserver`];\n }\n }\n return false;\n}());\n\nconst triggers = (el, type) => {\n el.data(type).split(' ').forEach(id => {\n $(`#${id}`)[ type === 'close' ? 'trigger' : 'triggerHandler'](`${type}.zf.trigger`, [el]);\n });\n};\n\nvar Triggers = {\n Listeners: {\n Basic: {},\n Global: {}\n },\n Initializers: {}\n}\n\nTriggers.Listeners.Basic = {\n openListener: function() {\n triggers($(this), 'open');\n },\n closeListener: function() {\n let id = $(this).data('close');\n if (id) {\n triggers($(this), 'close');\n }\n else {\n $(this).trigger('close.zf.trigger');\n }\n },\n toggleListener: function() {\n let id = $(this).data('toggle');\n if (id) {\n triggers($(this), 'toggle');\n } else {\n $(this).trigger('toggle.zf.trigger');\n }\n },\n closeableListener: function(e) {\n let animation = $(this).data('closable');\n\n // Only close the first closable element. See https://git.io/zf-7833\n e.stopPropagation();\n\n if(animation !== ''){\n Motion.animateOut($(this), animation, function() {\n $(this).trigger('closed.zf');\n });\n }else{\n $(this).fadeOut().trigger('closed.zf');\n }\n },\n toggleFocusListener: function() {\n let id = $(this).data('toggle-focus');\n $(`#${id}`).triggerHandler('toggle.zf.trigger', [$(this)]);\n }\n};\n\n// Elements with [data-open] will reveal a plugin that supports it when clicked.\nTriggers.Initializers.addOpenListener = ($elem) => {\n $elem.off('click.zf.trigger', Triggers.Listeners.Basic.openListener);\n $elem.on('click.zf.trigger', '[data-open]', Triggers.Listeners.Basic.openListener);\n}\n\n// Elements with [data-close] will close a plugin that supports it when clicked.\n// If used without a value on [data-close], the event will bubble, allowing it to close a parent component.\nTriggers.Initializers.addCloseListener = ($elem) => {\n $elem.off('click.zf.trigger', Triggers.Listeners.Basic.closeListener);\n $elem.on('click.zf.trigger', '[data-close]', Triggers.Listeners.Basic.closeListener);\n}\n\n// Elements with [data-toggle] will toggle a plugin that supports it when clicked.\nTriggers.Initializers.addToggleListener = ($elem) => {\n $elem.off('click.zf.trigger', Triggers.Listeners.Basic.toggleListener);\n $elem.on('click.zf.trigger', '[data-toggle]', Triggers.Listeners.Basic.toggleListener);\n}\n\n// Elements with [data-closable] will respond to close.zf.trigger events.\nTriggers.Initializers.addCloseableListener = ($elem) => {\n $elem.off('close.zf.trigger', Triggers.Listeners.Basic.closeableListener);\n $elem.on('close.zf.trigger', '[data-closeable], [data-closable]', Triggers.Listeners.Basic.closeableListener);\n}\n\n// Elements with [data-toggle-focus] will respond to coming in and out of focus\nTriggers.Initializers.addToggleFocusListener = ($elem) => {\n $elem.off('focus.zf.trigger blur.zf.trigger', Triggers.Listeners.Basic.toggleFocusListener);\n $elem.on('focus.zf.trigger blur.zf.trigger', '[data-toggle-focus]', Triggers.Listeners.Basic.toggleFocusListener);\n}\n\n\n\n// More Global/complex listeners and triggers\nTriggers.Listeners.Global = {\n resizeListener: function($nodes) {\n if(!MutationObserver){//fallback for IE 9\n $nodes.each(function(){\n $(this).triggerHandler('resizeme.zf.trigger');\n });\n }\n //trigger all listening elements and signal a resize event\n $nodes.attr('data-events', \"resize\");\n },\n scrollListener: function($nodes) {\n if(!MutationObserver){//fallback for IE 9\n $nodes.each(function(){\n $(this).triggerHandler('scrollme.zf.trigger');\n });\n }\n //trigger all listening elements and signal a scroll event\n $nodes.attr('data-events', \"scroll\");\n },\n closeMeListener: function(e, pluginId){\n let plugin = e.namespace.split('.')[0];\n let plugins = $(`[data-${plugin}]`).not(`[data-yeti-box=\"${pluginId}\"]`);\n\n plugins.each(function(){\n let _this = $(this);\n _this.triggerHandler('close.zf.trigger', [_this]);\n });\n }\n}\n\n// Global, parses whole document.\nTriggers.Initializers.addClosemeListener = function(pluginName) {\n var yetiBoxes = $('[data-yeti-box]'),\n plugNames = ['dropdown', 'tooltip', 'reveal'];\n\n if(pluginName){\n if(typeof pluginName === 'string'){\n plugNames.push(pluginName);\n }else if(typeof pluginName === 'object' && typeof pluginName[0] === 'string'){\n plugNames = plugNames.concat(pluginName);\n }else{\n console.error('Plugin names must be strings');\n }\n }\n if(yetiBoxes.length){\n let listeners = plugNames.map((name) => {\n return `closeme.zf.${name}`;\n }).join(' ');\n\n $(window).off(listeners).on(listeners, Triggers.Listeners.Global.closeMeListener);\n }\n}\n\nfunction debounceGlobalListener(debounce, trigger, listener) {\n let timer, args = Array.prototype.slice.call(arguments, 3);\n $(window).off(trigger).on(trigger, function(e) {\n if (timer) { clearTimeout(timer); }\n timer = setTimeout(function(){\n listener.apply(null, args);\n }, debounce || 10);//default time to emit scroll event\n });\n}\n\nTriggers.Initializers.addResizeListener = function(debounce){\n let $nodes = $('[data-resize]');\n if($nodes.length){\n debounceGlobalListener(debounce, 'resize.zf.trigger', Triggers.Listeners.Global.resizeListener, $nodes);\n }\n}\n\nTriggers.Initializers.addScrollListener = function(debounce){\n let $nodes = $('[data-scroll]');\n if($nodes.length){\n debounceGlobalListener(debounce, 'scroll.zf.trigger', Triggers.Listeners.Global.scrollListener, $nodes);\n }\n}\n\nTriggers.Initializers.addMutationEventsListener = function($elem) {\n if(!MutationObserver){ return false; }\n let $nodes = $elem.find('[data-resize], [data-scroll], [data-mutate]');\n\n //element callback\n var listeningElementsMutation = function (mutationRecordsList) {\n var $target = $(mutationRecordsList[0].target);\n\n //trigger the event handler for the element depending on type\n switch (mutationRecordsList[0].type) {\n case \"attributes\":\n if ($target.attr(\"data-events\") === \"scroll\" && mutationRecordsList[0].attributeName === \"data-events\") {\n $target.triggerHandler('scrollme.zf.trigger', [$target, window.pageYOffset]);\n }\n if ($target.attr(\"data-events\") === \"resize\" && mutationRecordsList[0].attributeName === \"data-events\") {\n $target.triggerHandler('resizeme.zf.trigger', [$target]);\n }\n if (mutationRecordsList[0].attributeName === \"style\") {\n $target.closest(\"[data-mutate]\").attr(\"data-events\",\"mutate\");\n $target.closest(\"[data-mutate]\").triggerHandler('mutateme.zf.trigger', [$target.closest(\"[data-mutate]\")]);\n }\n break;\n\n case \"childList\":\n $target.closest(\"[data-mutate]\").attr(\"data-events\",\"mutate\");\n $target.closest(\"[data-mutate]\").triggerHandler('mutateme.zf.trigger', [$target.closest(\"[data-mutate]\")]);\n break;\n\n default:\n return false;\n //nothing\n }\n };\n\n if ($nodes.length) {\n //for each element that needs to listen for resizing, scrolling, or mutation add a single observer\n for (var i = 0; i <= $nodes.length - 1; i++) {\n var elementObserver = new MutationObserver(listeningElementsMutation);\n elementObserver.observe($nodes[i], { attributes: true, childList: true, characterData: false, subtree: true, attributeFilter: [\"data-events\", \"style\"] });\n }\n }\n}\n\nTriggers.Initializers.addSimpleListeners = function() {\n let $document = $(document);\n\n Triggers.Initializers.addOpenListener($document);\n Triggers.Initializers.addCloseListener($document);\n Triggers.Initializers.addToggleListener($document);\n Triggers.Initializers.addCloseableListener($document);\n Triggers.Initializers.addToggleFocusListener($document);\n\n}\n\nTriggers.Initializers.addGlobalListeners = function() {\n let $document = $(document);\n Triggers.Initializers.addMutationEventsListener($document);\n Triggers.Initializers.addResizeListener();\n Triggers.Initializers.addScrollListener();\n Triggers.Initializers.addClosemeListener();\n}\n\n\nTriggers.init = function ($, Foundation) {\n onLoad($(window), function () {\n if ($.triggersInitialized !== true) {\n Triggers.Initializers.addSimpleListeners();\n Triggers.Initializers.addGlobalListeners();\n $.triggersInitialized = true;\n }\n });\n\n if(Foundation) {\n Foundation.Triggers = Triggers;\n // Legacy included to be backwards compatible for now.\n Foundation.IHearYou = Triggers.Initializers.addGlobalListeners\n }\n}\n\nexport {Triggers};\n","/*!\n * jQuery JavaScript Library v3.6.0\n * https://jquery.com/\n *\n * Includes Sizzle.js\n * https://sizzlejs.com/\n *\n * Copyright OpenJS Foundation and other contributors\n * Released under the MIT license\n * https://jquery.org/license\n *\n * Date: 2021-03-02T17:08Z\n */\n( function( global, factory ) {\n\n\t\"use strict\";\n\n\tif ( typeof module === \"object\" && typeof module.exports === \"object\" ) {\n\n\t\t// For CommonJS and CommonJS-like environments where a proper `window`\n\t\t// is present, execute the factory and get jQuery.\n\t\t// For environments that do not have a `window` with a `document`\n\t\t// (such as Node.js), expose a factory as module.exports.\n\t\t// This accentuates the need for the creation of a real `window`.\n\t\t// e.g. var jQuery = require(\"jquery\")(window);\n\t\t// See ticket #14549 for more info.\n\t\tmodule.exports = global.document ?\n\t\t\tfactory( global, true ) :\n\t\t\tfunction( w ) {\n\t\t\t\tif ( !w.document ) {\n\t\t\t\t\tthrow new Error( \"jQuery requires a window with a document\" );\n\t\t\t\t}\n\t\t\t\treturn factory( w );\n\t\t\t};\n\t} else {\n\t\tfactory( global );\n\t}\n\n// Pass this if window is not defined yet\n} )( typeof window !== \"undefined\" ? window : this, function( window, noGlobal ) {\n\n// Edge <= 12 - 13+, Firefox <=18 - 45+, IE 10 - 11, Safari 5.1 - 9+, iOS 6 - 9.1\n// throw exceptions when non-strict code (e.g., ASP.NET 4.5) accesses strict mode\n// arguments.callee.caller (trac-13335). But as of jQuery 3.0 (2016), strict mode should be common\n// enough that all such attempts are guarded in a try block.\n\"use strict\";\n\nvar arr = [];\n\nvar getProto = Object.getPrototypeOf;\n\nvar slice = arr.slice;\n\nvar flat = arr.flat ? function( array ) {\n\treturn arr.flat.call( array );\n} : function( array ) {\n\treturn arr.concat.apply( [], array );\n};\n\n\nvar push = arr.push;\n\nvar indexOf = arr.indexOf;\n\nvar class2type = {};\n\nvar toString = class2type.toString;\n\nvar hasOwn = class2type.hasOwnProperty;\n\nvar fnToString = hasOwn.toString;\n\nvar ObjectFunctionString = fnToString.call( Object );\n\nvar support = {};\n\nvar isFunction = function isFunction( obj ) {\n\n\t\t// Support: Chrome <=57, Firefox <=52\n\t\t// In some browsers, typeof returns \"function\" for HTML elements\n\t\t// (i.e., `typeof document.createElement( \"object\" ) === \"function\"`).\n\t\t// We don't want to classify *any* DOM node as a function.\n\t\t// Support: QtWeb <=3.8.5, WebKit <=534.34, wkhtmltopdf tool <=0.12.5\n\t\t// Plus for old WebKit, typeof returns \"function\" for HTML collections\n\t\t// (e.g., `typeof document.getElementsByTagName(\"div\") === \"function\"`). (gh-4756)\n\t\treturn typeof obj === \"function\" && typeof obj.nodeType !== \"number\" &&\n\t\t\ttypeof obj.item !== \"function\";\n\t};\n\n\nvar isWindow = function isWindow( obj ) {\n\t\treturn obj != null && obj === obj.window;\n\t};\n\n\nvar document = window.document;\n\n\n\n\tvar preservedScriptAttributes = {\n\t\ttype: true,\n\t\tsrc: true,\n\t\tnonce: true,\n\t\tnoModule: true\n\t};\n\n\tfunction DOMEval( code, node, doc ) {\n\t\tdoc = doc || document;\n\n\t\tvar i, val,\n\t\t\tscript = doc.createElement( \"script\" );\n\n\t\tscript.text = code;\n\t\tif ( node ) {\n\t\t\tfor ( i in preservedScriptAttributes ) {\n\n\t\t\t\t// Support: Firefox 64+, Edge 18+\n\t\t\t\t// Some browsers don't support the \"nonce\" property on scripts.\n\t\t\t\t// On the other hand, just using `getAttribute` is not enough as\n\t\t\t\t// the `nonce` attribute is reset to an empty string whenever it\n\t\t\t\t// becomes browsing-context connected.\n\t\t\t\t// See https://github.com/whatwg/html/issues/2369\n\t\t\t\t// See https://html.spec.whatwg.org/#nonce-attributes\n\t\t\t\t// The `node.getAttribute` check was added for the sake of\n\t\t\t\t// `jQuery.globalEval` so that it can fake a nonce-containing node\n\t\t\t\t// via an object.\n\t\t\t\tval = node[ i ] || node.getAttribute && node.getAttribute( i );\n\t\t\t\tif ( val ) {\n\t\t\t\t\tscript.setAttribute( i, val );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tdoc.head.appendChild( script ).parentNode.removeChild( script );\n\t}\n\n\nfunction toType( obj ) {\n\tif ( obj == null ) {\n\t\treturn obj + \"\";\n\t}\n\n\t// Support: Android <=2.3 only (functionish RegExp)\n\treturn typeof obj === \"object\" || typeof obj === \"function\" ?\n\t\tclass2type[ toString.call( obj ) ] || \"object\" :\n\t\ttypeof obj;\n}\n/* global Symbol */\n// Defining this global in .eslintrc.json would create a danger of using the global\n// unguarded in another place, it seems safer to define global only for this module\n\n\n\nvar\n\tversion = \"3.6.0\",\n\n\t// Define a local copy of jQuery\n\tjQuery = function( selector, context ) {\n\n\t\t// The jQuery object is actually just the init constructor 'enhanced'\n\t\t// Need init if jQuery is called (just allow error to be thrown if not included)\n\t\treturn new jQuery.fn.init( selector, context );\n\t};\n\njQuery.fn = jQuery.prototype = {\n\n\t// The current version of jQuery being used\n\tjquery: version,\n\n\tconstructor: jQuery,\n\n\t// The default length of a jQuery object is 0\n\tlength: 0,\n\n\ttoArray: function() {\n\t\treturn slice.call( this );\n\t},\n\n\t// Get the Nth element in the matched element set OR\n\t// Get the whole matched element set as a clean array\n\tget: function( num ) {\n\n\t\t// Return all the elements in a clean array\n\t\tif ( num == null ) {\n\t\t\treturn slice.call( this );\n\t\t}\n\n\t\t// Return just the one element from the set\n\t\treturn num < 0 ? this[ num + this.length ] : this[ num ];\n\t},\n\n\t// Take an array of elements and push it onto the stack\n\t// (returning the new matched element set)\n\tpushStack: function( elems ) {\n\n\t\t// Build a new jQuery matched element set\n\t\tvar ret = jQuery.merge( this.constructor(), elems );\n\n\t\t// Add the old object onto the stack (as a reference)\n\t\tret.prevObject = this;\n\n\t\t// Return the newly-formed element set\n\t\treturn ret;\n\t},\n\n\t// Execute a callback for every element in the matched set.\n\teach: function( callback ) {\n\t\treturn jQuery.each( this, callback );\n\t},\n\n\tmap: function( callback ) {\n\t\treturn this.pushStack( jQuery.map( this, function( elem, i ) {\n\t\t\treturn callback.call( elem, i, elem );\n\t\t} ) );\n\t},\n\n\tslice: function() {\n\t\treturn this.pushStack( slice.apply( this, arguments ) );\n\t},\n\n\tfirst: function() {\n\t\treturn this.eq( 0 );\n\t},\n\n\tlast: function() {\n\t\treturn this.eq( -1 );\n\t},\n\n\teven: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn ( i + 1 ) % 2;\n\t\t} ) );\n\t},\n\n\todd: function() {\n\t\treturn this.pushStack( jQuery.grep( this, function( _elem, i ) {\n\t\t\treturn i % 2;\n\t\t} ) );\n\t},\n\n\teq: function( i ) {\n\t\tvar len = this.length,\n\t\t\tj = +i + ( i < 0 ? len : 0 );\n\t\treturn this.pushStack( j >= 0 && j < len ? [ this[ j ] ] : [] );\n\t},\n\n\tend: function() {\n\t\treturn this.prevObject || this.constructor();\n\t},\n\n\t// For internal use only.\n\t// Behaves like an Array's method, not like a jQuery method.\n\tpush: push,\n\tsort: arr.sort,\n\tsplice: arr.splice\n};\n\njQuery.extend = jQuery.fn.extend = function() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[ 0 ] || {},\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif ( typeof target === \"boolean\" ) {\n\t\tdeep = target;\n\n\t\t// Skip the boolean and the target\n\t\ttarget = arguments[ i ] || {};\n\t\ti++;\n\t}\n\n\t// Handle case when target is a string or something (possible in deep copy)\n\tif ( typeof target !== \"object\" && !isFunction( target ) ) {\n\t\ttarget = {};\n\t}\n\n\t// Extend jQuery itself if only one argument is passed\n\tif ( i === length ) {\n\t\ttarget = this;\n\t\ti--;\n\t}\n\n\tfor ( ; i < length; i++ ) {\n\n\t\t// Only deal with non-null/undefined values\n\t\tif ( ( options = arguments[ i ] ) != null ) {\n\n\t\t\t// Extend the base object\n\t\t\tfor ( name in options ) {\n\t\t\t\tcopy = options[ name ];\n\n\t\t\t\t// Prevent Object.prototype pollution\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif ( name === \"__proto__\" || target === copy ) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\tif ( deep && copy && ( jQuery.isPlainObject( copy ) ||\n\t\t\t\t\t( copyIsArray = Array.isArray( copy ) ) ) ) {\n\t\t\t\t\tsrc = target[ name ];\n\n\t\t\t\t\t// Ensure proper type for the source value\n\t\t\t\t\tif ( copyIsArray && !Array.isArray( src ) ) {\n\t\t\t\t\t\tclone = [];\n\t\t\t\t\t} else if ( !copyIsArray && !jQuery.isPlainObject( src ) ) {\n\t\t\t\t\t\tclone = {};\n\t\t\t\t\t} else {\n\t\t\t\t\t\tclone = src;\n\t\t\t\t\t}\n\t\t\t\t\tcopyIsArray = false;\n\n\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\ttarget[ name ] = jQuery.extend( deep, clone, copy );\n\n\t\t\t\t// Don't bring in undefined values\n\t\t\t\t} else if ( copy !== undefined ) {\n\t\t\t\t\ttarget[ name ] = copy;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\njQuery.extend( {\n\n\t// Unique for each copy of jQuery on the page\n\texpando: \"jQuery\" + ( version + Math.random() ).replace( /\\D/g, \"\" ),\n\n\t// Assume jQuery is ready without the ready module\n\tisReady: true,\n\n\terror: function( msg ) {\n\t\tthrow new Error( msg );\n\t},\n\n\tnoop: function() {},\n\n\tisPlainObject: function( obj ) {\n\t\tvar proto, Ctor;\n\n\t\t// Detect obvious negatives\n\t\t// Use toString instead of jQuery.type to catch host objects\n\t\tif ( !obj || toString.call( obj ) !== \"[object Object]\" ) {\n\t\t\treturn false;\n\t\t}\n\n\t\tproto = getProto( obj );\n\n\t\t// Objects with no prototype (e.g., `Object.create( null )`) are plain\n\t\tif ( !proto ) {\n\t\t\treturn true;\n\t\t}\n\n\t\t// Objects with prototype are plain iff they were constructed by a global Object function\n\t\tCtor = hasOwn.call( proto, \"constructor\" ) && proto.constructor;\n\t\treturn typeof Ctor === \"function\" && fnToString.call( Ctor ) === ObjectFunctionString;\n\t},\n\n\tisEmptyObject: function( obj ) {\n\t\tvar name;\n\n\t\tfor ( name in obj ) {\n\t\t\treturn false;\n\t\t}\n\t\treturn true;\n\t},\n\n\t// Evaluates a script in a provided context; falls back to the global one\n\t// if not specified.\n\tglobalEval: function( code, options, doc ) {\n\t\tDOMEval( code, { nonce: options && options.nonce }, doc );\n\t},\n\n\teach: function( obj, callback ) {\n\t\tvar length, i = 0;\n\n\t\tif ( isArrayLike( obj ) ) {\n\t\t\tlength = obj.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tfor ( i in obj ) {\n\t\t\t\tif ( callback.call( obj[ i ], i, obj[ i ] ) === false ) {\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn obj;\n\t},\n\n\t// results is for internal usage only\n\tmakeArray: function( arr, results ) {\n\t\tvar ret = results || [];\n\n\t\tif ( arr != null ) {\n\t\t\tif ( isArrayLike( Object( arr ) ) ) {\n\t\t\t\tjQuery.merge( ret,\n\t\t\t\t\ttypeof arr === \"string\" ?\n\t\t\t\t\t\t[ arr ] : arr\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tpush.call( ret, arr );\n\t\t\t}\n\t\t}\n\n\t\treturn ret;\n\t},\n\n\tinArray: function( elem, arr, i ) {\n\t\treturn arr == null ? -1 : indexOf.call( arr, elem, i );\n\t},\n\n\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t// push.apply(_, arraylike) throws on ancient WebKit\n\tmerge: function( first, second ) {\n\t\tvar len = +second.length,\n\t\t\tj = 0,\n\t\t\ti = first.length;\n\n\t\tfor ( ; j < len; j++ ) {\n\t\t\tfirst[ i++ ] = second[ j ];\n\t\t}\n\n\t\tfirst.length = i;\n\n\t\treturn first;\n\t},\n\n\tgrep: function( elems, callback, invert ) {\n\t\tvar callbackInverse,\n\t\t\tmatches = [],\n\t\t\ti = 0,\n\t\t\tlength = elems.length,\n\t\t\tcallbackExpect = !invert;\n\n\t\t// Go through the array, only saving the items\n\t\t// that pass the validator function\n\t\tfor ( ; i < length; i++ ) {\n\t\t\tcallbackInverse = !callback( elems[ i ], i );\n\t\t\tif ( callbackInverse !== callbackExpect ) {\n\t\t\t\tmatches.push( elems[ i ] );\n\t\t\t}\n\t\t}\n\n\t\treturn matches;\n\t},\n\n\t// arg is for internal usage only\n\tmap: function( elems, callback, arg ) {\n\t\tvar length, value,\n\t\t\ti = 0,\n\t\t\tret = [];\n\n\t\t// Go through the array, translating each of the items to their new values\n\t\tif ( isArrayLike( elems ) ) {\n\t\t\tlength = elems.length;\n\t\t\tfor ( ; i < length; i++ ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Go through every key on the object,\n\t\t} else {\n\t\t\tfor ( i in elems ) {\n\t\t\t\tvalue = callback( elems[ i ], i, arg );\n\n\t\t\t\tif ( value != null ) {\n\t\t\t\t\tret.push( value );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Flatten any nested arrays\n\t\treturn flat( ret );\n\t},\n\n\t// A global GUID counter for objects\n\tguid: 1,\n\n\t// jQuery.support is not used in Core but other projects attach their\n\t// properties to it so it needs to exist.\n\tsupport: support\n} );\n\nif ( typeof Symbol === \"function\" ) {\n\tjQuery.fn[ Symbol.iterator ] = arr[ Symbol.iterator ];\n}\n\n// Populate the class2type map\njQuery.each( \"Boolean Number String Function Array Date RegExp Object Error Symbol\".split( \" \" ),\n\tfunction( _i, name ) {\n\t\tclass2type[ \"[object \" + name + \"]\" ] = name.toLowerCase();\n\t} );\n\nfunction isArrayLike( obj ) {\n\n\t// Support: real iOS 8.2 only (not reproducible in simulator)\n\t// `in` check used to prevent JIT error (gh-2145)\n\t// hasOwn isn't used here due to false negatives\n\t// regarding Nodelist length in IE\n\tvar length = !!obj && \"length\" in obj && obj.length,\n\t\ttype = toType( obj );\n\n\tif ( isFunction( obj ) || isWindow( obj ) ) {\n\t\treturn false;\n\t}\n\n\treturn type === \"array\" || length === 0 ||\n\t\ttypeof length === \"number\" && length > 0 && ( length - 1 ) in obj;\n}\nvar Sizzle =\n/*!\n * Sizzle CSS Selector Engine v2.3.6\n * https://sizzlejs.com/\n *\n * Copyright JS Foundation and other contributors\n * Released under the MIT license\n * https://js.foundation/\n *\n * Date: 2021-02-16\n */\n( function( window ) {\nvar i,\n\tsupport,\n\tExpr,\n\tgetText,\n\tisXML,\n\ttokenize,\n\tcompile,\n\tselect,\n\toutermostContext,\n\tsortInput,\n\thasDuplicate,\n\n\t// Local document vars\n\tsetDocument,\n\tdocument,\n\tdocElem,\n\tdocumentIsHTML,\n\trbuggyQSA,\n\trbuggyMatches,\n\tmatches,\n\tcontains,\n\n\t// Instance-specific data\n\texpando = \"sizzle\" + 1 * new Date(),\n\tpreferredDoc = window.document,\n\tdirruns = 0,\n\tdone = 0,\n\tclassCache = createCache(),\n\ttokenCache = createCache(),\n\tcompilerCache = createCache(),\n\tnonnativeSelectorCache = createCache(),\n\tsortOrder = function( a, b ) {\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t}\n\t\treturn 0;\n\t},\n\n\t// Instance methods\n\thasOwn = ( {} ).hasOwnProperty,\n\tarr = [],\n\tpop = arr.pop,\n\tpushNative = arr.push,\n\tpush = arr.push,\n\tslice = arr.slice,\n\n\t// Use a stripped-down indexOf as it's faster than native\n\t// https://jsperf.com/thor-indexof-vs-for/5\n\tindexOf = function( list, elem ) {\n\t\tvar i = 0,\n\t\t\tlen = list.length;\n\t\tfor ( ; i < len; i++ ) {\n\t\t\tif ( list[ i ] === elem ) {\n\t\t\t\treturn i;\n\t\t\t}\n\t\t}\n\t\treturn -1;\n\t},\n\n\tbooleans = \"checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|\" +\n\t\t\"ismap|loop|multiple|open|readonly|required|scoped\",\n\n\t// Regular expressions\n\n\t// http://www.w3.org/TR/css3-selectors/#whitespace\n\twhitespace = \"[\\\\x20\\\\t\\\\r\\\\n\\\\f]\",\n\n\t// https://www.w3.org/TR/css-syntax-3/#ident-token-diagram\n\tidentifier = \"(?:\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace +\n\t\t\"?|\\\\\\\\[^\\\\r\\\\n\\\\f]|[\\\\w-]|[^\\0-\\\\x7f])+\",\n\n\t// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors\n\tattributes = \"\\\\[\" + whitespace + \"*(\" + identifier + \")(?:\" + whitespace +\n\n\t\t// Operator (capture 2)\n\t\t\"*([*^$|!~]?=)\" + whitespace +\n\n\t\t// \"Attribute values must be CSS identifiers [capture 5]\n\t\t// or strings [capture 3 or capture 4]\"\n\t\t\"*(?:'((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\"|(\" + identifier + \"))|)\" +\n\t\twhitespace + \"*\\\\]\",\n\n\tpseudos = \":(\" + identifier + \")(?:\\\\((\" +\n\n\t\t// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:\n\t\t// 1. quoted (capture 3; capture 4 or capture 5)\n\t\t\"('((?:\\\\\\\\.|[^\\\\\\\\'])*)'|\\\"((?:\\\\\\\\.|[^\\\\\\\\\\\"])*)\\\")|\" +\n\n\t\t// 2. simple (capture 6)\n\t\t\"((?:\\\\\\\\.|[^\\\\\\\\()[\\\\]]|\" + attributes + \")*)|\" +\n\n\t\t// 3. anything else (capture 2)\n\t\t\".*\" +\n\t\t\")\\\\)|)\",\n\n\t// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter\n\trwhitespace = new RegExp( whitespace + \"+\", \"g\" ),\n\trtrim = new RegExp( \"^\" + whitespace + \"+|((?:^|[^\\\\\\\\])(?:\\\\\\\\.)*)\" +\n\t\twhitespace + \"+$\", \"g\" ),\n\n\trcomma = new RegExp( \"^\" + whitespace + \"*,\" + whitespace + \"*\" ),\n\trcombinators = new RegExp( \"^\" + whitespace + \"*([>+~]|\" + whitespace + \")\" + whitespace +\n\t\t\"*\" ),\n\trdescend = new RegExp( whitespace + \"|>\" ),\n\n\trpseudo = new RegExp( pseudos ),\n\tridentifier = new RegExp( \"^\" + identifier + \"$\" ),\n\n\tmatchExpr = {\n\t\t\"ID\": new RegExp( \"^#(\" + identifier + \")\" ),\n\t\t\"CLASS\": new RegExp( \"^\\\\.(\" + identifier + \")\" ),\n\t\t\"TAG\": new RegExp( \"^(\" + identifier + \"|[*])\" ),\n\t\t\"ATTR\": new RegExp( \"^\" + attributes ),\n\t\t\"PSEUDO\": new RegExp( \"^\" + pseudos ),\n\t\t\"CHILD\": new RegExp( \"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\\\(\" +\n\t\t\twhitespace + \"*(even|odd|(([+-]|)(\\\\d*)n|)\" + whitespace + \"*(?:([+-]|)\" +\n\t\t\twhitespace + \"*(\\\\d+)|))\" + whitespace + \"*\\\\)|)\", \"i\" ),\n\t\t\"bool\": new RegExp( \"^(?:\" + booleans + \")$\", \"i\" ),\n\n\t\t// For use in libraries implementing .is()\n\t\t// We use this for POS matching in `select`\n\t\t\"needsContext\": new RegExp( \"^\" + whitespace +\n\t\t\t\"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\\\(\" + whitespace +\n\t\t\t\"*((?:-\\\\d)?\\\\d*)\" + whitespace + \"*\\\\)|)(?=[^-]|$)\", \"i\" )\n\t},\n\n\trhtml = /HTML$/i,\n\trinputs = /^(?:input|select|textarea|button)$/i,\n\trheader = /^h\\d$/i,\n\n\trnative = /^[^{]+\\{\\s*\\[native \\w/,\n\n\t// Easily-parseable/retrievable ID or TAG or CLASS selectors\n\trquickExpr = /^(?:#([\\w-]+)|(\\w+)|\\.([\\w-]+))$/,\n\n\trsibling = /[+~]/,\n\n\t// CSS escapes\n\t// http://www.w3.org/TR/CSS21/syndata.html#escaped-characters\n\trunescape = new RegExp( \"\\\\\\\\[\\\\da-fA-F]{1,6}\" + whitespace + \"?|\\\\\\\\([^\\\\r\\\\n\\\\f])\", \"g\" ),\n\tfunescape = function( escape, nonHex ) {\n\t\tvar high = \"0x\" + escape.slice( 1 ) - 0x10000;\n\n\t\treturn nonHex ?\n\n\t\t\t// Strip the backslash prefix from a non-hex escape sequence\n\t\t\tnonHex :\n\n\t\t\t// Replace a hexadecimal escape sequence with the encoded Unicode code point\n\t\t\t// Support: IE <=11+\n\t\t\t// For values outside the Basic Multilingual Plane (BMP), manually construct a\n\t\t\t// surrogate pair\n\t\t\thigh < 0 ?\n\t\t\t\tString.fromCharCode( high + 0x10000 ) :\n\t\t\t\tString.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );\n\t},\n\n\t// CSS string/identifier serialization\n\t// https://drafts.csswg.org/cssom/#common-serializing-idioms\n\trcssescape = /([\\0-\\x1f\\x7f]|^-?\\d)|^-$|[^\\0-\\x1f\\x7f-\\uFFFF\\w-]/g,\n\tfcssescape = function( ch, asCodePoint ) {\n\t\tif ( asCodePoint ) {\n\n\t\t\t// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER\n\t\t\tif ( ch === \"\\0\" ) {\n\t\t\t\treturn \"\\uFFFD\";\n\t\t\t}\n\n\t\t\t// Control characters and (dependent upon position) numbers get escaped as code points\n\t\t\treturn ch.slice( 0, -1 ) + \"\\\\\" +\n\t\t\t\tch.charCodeAt( ch.length - 1 ).toString( 16 ) + \" \";\n\t\t}\n\n\t\t// Other potentially-special ASCII characters get backslash-escaped\n\t\treturn \"\\\\\" + ch;\n\t},\n\n\t// Used for iframes\n\t// See setDocument()\n\t// Removing the function wrapper causes a \"Permission Denied\"\n\t// error in IE\n\tunloadHandler = function() {\n\t\tsetDocument();\n\t},\n\n\tinDisabledFieldset = addCombinator(\n\t\tfunction( elem ) {\n\t\t\treturn elem.disabled === true && elem.nodeName.toLowerCase() === \"fieldset\";\n\t\t},\n\t\t{ dir: \"parentNode\", next: \"legend\" }\n\t);\n\n// Optimize for push.apply( _, NodeList )\ntry {\n\tpush.apply(\n\t\t( arr = slice.call( preferredDoc.childNodes ) ),\n\t\tpreferredDoc.childNodes\n\t);\n\n\t// Support: Android<4.0\n\t// Detect silently failing push.apply\n\t// eslint-disable-next-line no-unused-expressions\n\tarr[ preferredDoc.childNodes.length ].nodeType;\n} catch ( e ) {\n\tpush = { apply: arr.length ?\n\n\t\t// Leverage slice if possible\n\t\tfunction( target, els ) {\n\t\t\tpushNative.apply( target, slice.call( els ) );\n\t\t} :\n\n\t\t// Support: IE<9\n\t\t// Otherwise append directly\n\t\tfunction( target, els ) {\n\t\t\tvar j = target.length,\n\t\t\t\ti = 0;\n\n\t\t\t// Can't trust NodeList.length\n\t\t\twhile ( ( target[ j++ ] = els[ i++ ] ) ) {}\n\t\t\ttarget.length = j - 1;\n\t\t}\n\t};\n}\n\nfunction Sizzle( selector, context, results, seed ) {\n\tvar m, i, elem, nid, match, groups, newSelector,\n\t\tnewContext = context && context.ownerDocument,\n\n\t\t// nodeType defaults to 9, since context defaults to document\n\t\tnodeType = context ? context.nodeType : 9;\n\n\tresults = results || [];\n\n\t// Return early from calls with invalid selector or context\n\tif ( typeof selector !== \"string\" || !selector ||\n\t\tnodeType !== 1 && nodeType !== 9 && nodeType !== 11 ) {\n\n\t\treturn results;\n\t}\n\n\t// Try to shortcut find operations (as opposed to filters) in HTML documents\n\tif ( !seed ) {\n\t\tsetDocument( context );\n\t\tcontext = context || document;\n\n\t\tif ( documentIsHTML ) {\n\n\t\t\t// If the selector is sufficiently simple, try using a \"get*By*\" DOM method\n\t\t\t// (excepting DocumentFragment context, where the methods don't exist)\n\t\t\tif ( nodeType !== 11 && ( match = rquickExpr.exec( selector ) ) ) {\n\n\t\t\t\t// ID selector\n\t\t\t\tif ( ( m = match[ 1 ] ) ) {\n\n\t\t\t\t\t// Document context\n\t\t\t\t\tif ( nodeType === 9 ) {\n\t\t\t\t\t\tif ( ( elem = context.getElementById( m ) ) ) {\n\n\t\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\t\tif ( elem.id === m ) {\n\t\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t// Element context\n\t\t\t\t\t} else {\n\n\t\t\t\t\t\t// Support: IE, Opera, Webkit\n\t\t\t\t\t\t// TODO: identify versions\n\t\t\t\t\t\t// getElementById can match elements by name instead of ID\n\t\t\t\t\t\tif ( newContext && ( elem = newContext.getElementById( m ) ) &&\n\t\t\t\t\t\t\tcontains( context, elem ) &&\n\t\t\t\t\t\t\telem.id === m ) {\n\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\treturn results;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t// Type selector\n\t\t\t\t} else if ( match[ 2 ] ) {\n\t\t\t\t\tpush.apply( results, context.getElementsByTagName( selector ) );\n\t\t\t\t\treturn results;\n\n\t\t\t\t// Class selector\n\t\t\t\t} else if ( ( m = match[ 3 ] ) && support.getElementsByClassName &&\n\t\t\t\t\tcontext.getElementsByClassName ) {\n\n\t\t\t\t\tpush.apply( results, context.getElementsByClassName( m ) );\n\t\t\t\t\treturn results;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Take advantage of querySelectorAll\n\t\t\tif ( support.qsa &&\n\t\t\t\t!nonnativeSelectorCache[ selector + \" \" ] &&\n\t\t\t\t( !rbuggyQSA || !rbuggyQSA.test( selector ) ) &&\n\n\t\t\t\t// Support: IE 8 only\n\t\t\t\t// Exclude object elements\n\t\t\t\t( nodeType !== 1 || context.nodeName.toLowerCase() !== \"object\" ) ) {\n\n\t\t\t\tnewSelector = selector;\n\t\t\t\tnewContext = context;\n\n\t\t\t\t// qSA considers elements outside a scoping root when evaluating child or\n\t\t\t\t// descendant combinators, which is not what we want.\n\t\t\t\t// In such cases, we work around the behavior by prefixing every selector in the\n\t\t\t\t// list with an ID selector referencing the scope context.\n\t\t\t\t// The technique has to be used as well when a leading combinator is used\n\t\t\t\t// as such selectors are not recognized by querySelectorAll.\n\t\t\t\t// Thanks to Andrew Dupont for this technique.\n\t\t\t\tif ( nodeType === 1 &&\n\t\t\t\t\t( rdescend.test( selector ) || rcombinators.test( selector ) ) ) {\n\n\t\t\t\t\t// Expand context for sibling selectors\n\t\t\t\t\tnewContext = rsibling.test( selector ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext;\n\n\t\t\t\t\t// We can use :scope instead of the ID hack if the browser\n\t\t\t\t\t// supports it & if we're not changing the context.\n\t\t\t\t\tif ( newContext !== context || !support.scope ) {\n\n\t\t\t\t\t\t// Capture the context ID, setting it first if necessary\n\t\t\t\t\t\tif ( ( nid = context.getAttribute( \"id\" ) ) ) {\n\t\t\t\t\t\t\tnid = nid.replace( rcssescape, fcssescape );\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tcontext.setAttribute( \"id\", ( nid = expando ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prefix every selector in the list\n\t\t\t\t\tgroups = tokenize( selector );\n\t\t\t\t\ti = groups.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tgroups[ i ] = ( nid ? \"#\" + nid : \":scope\" ) + \" \" +\n\t\t\t\t\t\t\ttoSelector( groups[ i ] );\n\t\t\t\t\t}\n\t\t\t\t\tnewSelector = groups.join( \",\" );\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tpush.apply( results,\n\t\t\t\t\t\tnewContext.querySelectorAll( newSelector )\n\t\t\t\t\t);\n\t\t\t\t\treturn results;\n\t\t\t\t} catch ( qsaError ) {\n\t\t\t\t\tnonnativeSelectorCache( selector, true );\n\t\t\t\t} finally {\n\t\t\t\t\tif ( nid === expando ) {\n\t\t\t\t\t\tcontext.removeAttribute( \"id\" );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// All others\n\treturn select( selector.replace( rtrim, \"$1\" ), context, results, seed );\n}\n\n/**\n * Create key-value caches of limited size\n * @returns {function(string, object)} Returns the Object data after storing it on itself with\n *\tproperty name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)\n *\tdeleting the oldest entry\n */\nfunction createCache() {\n\tvar keys = [];\n\n\tfunction cache( key, value ) {\n\n\t\t// Use (key + \" \") to avoid collision with native prototype properties (see Issue #157)\n\t\tif ( keys.push( key + \" \" ) > Expr.cacheLength ) {\n\n\t\t\t// Only keep the most recent entries\n\t\t\tdelete cache[ keys.shift() ];\n\t\t}\n\t\treturn ( cache[ key + \" \" ] = value );\n\t}\n\treturn cache;\n}\n\n/**\n * Mark a function for special use by Sizzle\n * @param {Function} fn The function to mark\n */\nfunction markFunction( fn ) {\n\tfn[ expando ] = true;\n\treturn fn;\n}\n\n/**\n * Support testing using an element\n * @param {Function} fn Passed the created element and returns a boolean result\n */\nfunction assert( fn ) {\n\tvar el = document.createElement( \"fieldset\" );\n\n\ttry {\n\t\treturn !!fn( el );\n\t} catch ( e ) {\n\t\treturn false;\n\t} finally {\n\n\t\t// Remove from its parent by default\n\t\tif ( el.parentNode ) {\n\t\t\tel.parentNode.removeChild( el );\n\t\t}\n\n\t\t// release memory in IE\n\t\tel = null;\n\t}\n}\n\n/**\n * Adds the same handler for all of the specified attrs\n * @param {String} attrs Pipe-separated list of attributes\n * @param {Function} handler The method that will be applied\n */\nfunction addHandle( attrs, handler ) {\n\tvar arr = attrs.split( \"|\" ),\n\t\ti = arr.length;\n\n\twhile ( i-- ) {\n\t\tExpr.attrHandle[ arr[ i ] ] = handler;\n\t}\n}\n\n/**\n * Checks document order of two siblings\n * @param {Element} a\n * @param {Element} b\n * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b\n */\nfunction siblingCheck( a, b ) {\n\tvar cur = b && a,\n\t\tdiff = cur && a.nodeType === 1 && b.nodeType === 1 &&\n\t\t\ta.sourceIndex - b.sourceIndex;\n\n\t// Use IE sourceIndex if available on both nodes\n\tif ( diff ) {\n\t\treturn diff;\n\t}\n\n\t// Check if b follows a\n\tif ( cur ) {\n\t\twhile ( ( cur = cur.nextSibling ) ) {\n\t\t\tif ( cur === b ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t}\n\n\treturn a ? 1 : -1;\n}\n\n/**\n * Returns a function to use in pseudos for input types\n * @param {String} type\n */\nfunction createInputPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn name === \"input\" && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for buttons\n * @param {String} type\n */\nfunction createButtonPseudo( type ) {\n\treturn function( elem ) {\n\t\tvar name = elem.nodeName.toLowerCase();\n\t\treturn ( name === \"input\" || name === \"button\" ) && elem.type === type;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for :enabled/:disabled\n * @param {Boolean} disabled true for :disabled; false for :enabled\n */\nfunction createDisabledPseudo( disabled ) {\n\n\t// Known :disabled false positives: fieldset[disabled] > legend:nth-of-type(n+2) :can-disable\n\treturn function( elem ) {\n\n\t\t// Only certain elements can match :enabled or :disabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-enabled\n\t\t// https://html.spec.whatwg.org/multipage/scripting.html#selector-disabled\n\t\tif ( \"form\" in elem ) {\n\n\t\t\t// Check for inherited disabledness on relevant non-disabled elements:\n\t\t\t// * listed form-associated elements in a disabled fieldset\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#category-listed\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-fe-disabled\n\t\t\t// * option elements in a disabled optgroup\n\t\t\t// https://html.spec.whatwg.org/multipage/forms.html#concept-option-disabled\n\t\t\t// All such elements have a \"form\" property.\n\t\t\tif ( elem.parentNode && elem.disabled === false ) {\n\n\t\t\t\t// Option elements defer to a parent optgroup if present\n\t\t\t\tif ( \"label\" in elem ) {\n\t\t\t\t\tif ( \"label\" in elem.parentNode ) {\n\t\t\t\t\t\treturn elem.parentNode.disabled === disabled;\n\t\t\t\t\t} else {\n\t\t\t\t\t\treturn elem.disabled === disabled;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Support: IE 6 - 11\n\t\t\t\t// Use the isDisabled shortcut property to check for disabled fieldset ancestors\n\t\t\t\treturn elem.isDisabled === disabled ||\n\n\t\t\t\t\t// Where there is no isDisabled, check manually\n\t\t\t\t\t/* jshint -W018 */\n\t\t\t\t\telem.isDisabled !== !disabled &&\n\t\t\t\t\tinDisabledFieldset( elem ) === disabled;\n\t\t\t}\n\n\t\t\treturn elem.disabled === disabled;\n\n\t\t// Try to winnow out elements that can't be disabled before trusting the disabled property.\n\t\t// Some victims get caught in our net (label, legend, menu, track), but it shouldn't\n\t\t// even exist on them, let alone have a boolean value.\n\t\t} else if ( \"label\" in elem ) {\n\t\t\treturn elem.disabled === disabled;\n\t\t}\n\n\t\t// Remaining elements are neither :enabled nor :disabled\n\t\treturn false;\n\t};\n}\n\n/**\n * Returns a function to use in pseudos for positionals\n * @param {Function} fn\n */\nfunction createPositionalPseudo( fn ) {\n\treturn markFunction( function( argument ) {\n\t\targument = +argument;\n\t\treturn markFunction( function( seed, matches ) {\n\t\t\tvar j,\n\t\t\t\tmatchIndexes = fn( [], seed.length, argument ),\n\t\t\t\ti = matchIndexes.length;\n\n\t\t\t// Match elements found at the specified indexes\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( seed[ ( j = matchIndexes[ i ] ) ] ) {\n\t\t\t\t\tseed[ j ] = !( matches[ j ] = seed[ j ] );\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t} );\n}\n\n/**\n * Checks a node for validity as a Sizzle context\n * @param {Element|Object=} context\n * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value\n */\nfunction testContext( context ) {\n\treturn context && typeof context.getElementsByTagName !== \"undefined\" && context;\n}\n\n// Expose support vars for convenience\nsupport = Sizzle.support = {};\n\n/**\n * Detects XML nodes\n * @param {Element|Object} elem An element or a document\n * @returns {Boolean} True iff elem is a non-HTML XML node\n */\nisXML = Sizzle.isXML = function( elem ) {\n\tvar namespace = elem && elem.namespaceURI,\n\t\tdocElem = elem && ( elem.ownerDocument || elem ).documentElement;\n\n\t// Support: IE <=8\n\t// Assume HTML when documentElement doesn't yet exist, such as inside loading iframes\n\t// https://bugs.jquery.com/ticket/4833\n\treturn !rhtml.test( namespace || docElem && docElem.nodeName || \"HTML\" );\n};\n\n/**\n * Sets document-related variables once based on the current document\n * @param {Element|Object} [doc] An element or document object to use to set the document\n * @returns {Object} Returns the current document\n */\nsetDocument = Sizzle.setDocument = function( node ) {\n\tvar hasCompare, subWindow,\n\t\tdoc = node ? node.ownerDocument || node : preferredDoc;\n\n\t// Return early if doc is invalid or already selected\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( doc == document || doc.nodeType !== 9 || !doc.documentElement ) {\n\t\treturn document;\n\t}\n\n\t// Update global variables\n\tdocument = doc;\n\tdocElem = document.documentElement;\n\tdocumentIsHTML = !isXML( document );\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+\n\t// Accessing iframe documents after unload throws \"permission denied\" errors (jQuery #13936)\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( preferredDoc != document &&\n\t\t( subWindow = document.defaultView ) && subWindow.top !== subWindow ) {\n\n\t\t// Support: IE 11, Edge\n\t\tif ( subWindow.addEventListener ) {\n\t\t\tsubWindow.addEventListener( \"unload\", unloadHandler, false );\n\n\t\t// Support: IE 9 - 10 only\n\t\t} else if ( subWindow.attachEvent ) {\n\t\t\tsubWindow.attachEvent( \"onunload\", unloadHandler );\n\t\t}\n\t}\n\n\t// Support: IE 8 - 11+, Edge 12 - 18+, Chrome <=16 - 25 only, Firefox <=3.6 - 31 only,\n\t// Safari 4 - 5 only, Opera <=11.6 - 12.x only\n\t// IE/Edge & older browsers don't support the :scope pseudo-class.\n\t// Support: Safari 6.0 only\n\t// Safari 6.0 supports :scope but it's an alias of :root there.\n\tsupport.scope = assert( function( el ) {\n\t\tdocElem.appendChild( el ).appendChild( document.createElement( \"div\" ) );\n\t\treturn typeof el.querySelectorAll !== \"undefined\" &&\n\t\t\t!el.querySelectorAll( \":scope fieldset div\" ).length;\n\t} );\n\n\t/* Attributes\n\t---------------------------------------------------------------------- */\n\n\t// Support: IE<8\n\t// Verify that getAttribute really returns attributes and not properties\n\t// (excepting IE8 booleans)\n\tsupport.attributes = assert( function( el ) {\n\t\tel.className = \"i\";\n\t\treturn !el.getAttribute( \"className\" );\n\t} );\n\n\t/* getElement(s)By*\n\t---------------------------------------------------------------------- */\n\n\t// Check if getElementsByTagName(\"*\") returns only elements\n\tsupport.getElementsByTagName = assert( function( el ) {\n\t\tel.appendChild( document.createComment( \"\" ) );\n\t\treturn !el.getElementsByTagName( \"*\" ).length;\n\t} );\n\n\t// Support: IE<9\n\tsupport.getElementsByClassName = rnative.test( document.getElementsByClassName );\n\n\t// Support: IE<10\n\t// Check if getElementById returns elements by name\n\t// The broken getElementById methods don't pick up programmatically-set names,\n\t// so use a roundabout getElementsByName test\n\tsupport.getById = assert( function( el ) {\n\t\tdocElem.appendChild( el ).id = expando;\n\t\treturn !document.getElementsByName || !document.getElementsByName( expando ).length;\n\t} );\n\n\t// ID filter and find\n\tif ( support.getById ) {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn elem.getAttribute( \"id\" ) === attrId;\n\t\t\t};\n\t\t};\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar elem = context.getElementById( id );\n\t\t\t\treturn elem ? [ elem ] : [];\n\t\t\t}\n\t\t};\n\t} else {\n\t\tExpr.filter[ \"ID\" ] = function( id ) {\n\t\t\tvar attrId = id.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\tvar node = typeof elem.getAttributeNode !== \"undefined\" &&\n\t\t\t\t\telem.getAttributeNode( \"id\" );\n\t\t\t\treturn node && node.value === attrId;\n\t\t\t};\n\t\t};\n\n\t\t// Support: IE 6 - 7 only\n\t\t// getElementById is not reliable as a find shortcut\n\t\tExpr.find[ \"ID\" ] = function( id, context ) {\n\t\t\tif ( typeof context.getElementById !== \"undefined\" && documentIsHTML ) {\n\t\t\t\tvar node, i, elems,\n\t\t\t\t\telem = context.getElementById( id );\n\n\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t// Verify the id attribute\n\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t}\n\n\t\t\t\t\t// Fall back on getElementsByName\n\t\t\t\t\telems = context.getElementsByName( id );\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile ( ( elem = elems[ i++ ] ) ) {\n\t\t\t\t\t\tnode = elem.getAttributeNode( \"id\" );\n\t\t\t\t\t\tif ( node && node.value === id ) {\n\t\t\t\t\t\t\treturn [ elem ];\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn [];\n\t\t\t}\n\t\t};\n\t}\n\n\t// Tag\n\tExpr.find[ \"TAG\" ] = support.getElementsByTagName ?\n\t\tfunction( tag, context ) {\n\t\t\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\t\t\treturn context.getElementsByTagName( tag );\n\n\t\t\t// DocumentFragment nodes don't have gEBTN\n\t\t\t} else if ( support.qsa ) {\n\t\t\t\treturn context.querySelectorAll( tag );\n\t\t\t}\n\t\t} :\n\n\t\tfunction( tag, context ) {\n\t\t\tvar elem,\n\t\t\t\ttmp = [],\n\t\t\t\ti = 0,\n\n\t\t\t\t// By happy coincidence, a (broken) gEBTN appears on DocumentFragment nodes too\n\t\t\t\tresults = context.getElementsByTagName( tag );\n\n\t\t\t// Filter out possible comments\n\t\t\tif ( tag === \"*\" ) {\n\t\t\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\ttmp.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn tmp;\n\t\t\t}\n\t\t\treturn results;\n\t\t};\n\n\t// Class\n\tExpr.find[ \"CLASS\" ] = support.getElementsByClassName && function( className, context ) {\n\t\tif ( typeof context.getElementsByClassName !== \"undefined\" && documentIsHTML ) {\n\t\t\treturn context.getElementsByClassName( className );\n\t\t}\n\t};\n\n\t/* QSA/matchesSelector\n\t---------------------------------------------------------------------- */\n\n\t// QSA and matchesSelector support\n\n\t// matchesSelector(:active) reports false when true (IE9/Opera 11.5)\n\trbuggyMatches = [];\n\n\t// qSa(:focus) reports false when true (Chrome 21)\n\t// We allow this because of a bug in IE8/9 that throws an error\n\t// whenever `document.activeElement` is accessed on an iframe\n\t// So, we allow :focus to pass through QSA all the time to avoid the IE error\n\t// See https://bugs.jquery.com/ticket/13378\n\trbuggyQSA = [];\n\n\tif ( ( support.qsa = rnative.test( document.querySelectorAll ) ) ) {\n\n\t\t// Build QSA regex\n\t\t// Regex strategy adopted from Diego Perini\n\t\tassert( function( el ) {\n\n\t\t\tvar input;\n\n\t\t\t// Select is set to empty string on purpose\n\t\t\t// This is to test IE's treatment of not explicitly\n\t\t\t// setting a boolean content attribute,\n\t\t\t// since its presence should be enough\n\t\t\t// https://bugs.jquery.com/ticket/12359\n\t\t\tdocElem.appendChild( el ).innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: IE8, Opera 11-12.16\n\t\t\t// Nothing should be selected when empty strings follow ^= or $= or *=\n\t\t\t// The test attribute must be unknown in Opera but \"safe\" for WinRT\n\t\t\t// https://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section\n\t\t\tif ( el.querySelectorAll( \"[msallowcapture^='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"[*^$]=\" + whitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Support: IE8\n\t\t\t// Boolean attributes and \"value\" are not treated correctly\n\t\t\tif ( !el.querySelectorAll( \"[selected]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*(?:value|\" + booleans + \")\" );\n\t\t\t}\n\n\t\t\t// Support: Chrome<29, Android<4.4, Safari<7.0+, iOS<7.0+, PhantomJS<1.9.8+\n\t\t\tif ( !el.querySelectorAll( \"[id~=\" + expando + \"-]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"~=\" );\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 15 - 18+\n\t\t\t// IE 11/Edge don't find elements on a `[name='']` query in some cases.\n\t\t\t// Adding a temporary attribute to the document before the selection works\n\t\t\t// around the issue.\n\t\t\t// Interestingly, IE 10 & older don't seem to have the issue.\n\t\t\tinput = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"name\", \"\" );\n\t\t\tel.appendChild( input );\n\t\t\tif ( !el.querySelectorAll( \"[name='']\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"\\\\[\" + whitespace + \"*name\" + whitespace + \"*=\" +\n\t\t\t\t\twhitespace + \"*(?:''|\\\"\\\")\" );\n\t\t\t}\n\n\t\t\t// Webkit/Opera - :checked should return selected option elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( !el.querySelectorAll( \":checked\" ).length ) {\n\t\t\t\trbuggyQSA.push( \":checked\" );\n\t\t\t}\n\n\t\t\t// Support: Safari 8+, iOS 8+\n\t\t\t// https://bugs.webkit.org/show_bug.cgi?id=136851\n\t\t\t// In-page `selector#id sibling-combinator selector` fails\n\t\t\tif ( !el.querySelectorAll( \"a#\" + expando + \"+*\" ).length ) {\n\t\t\t\trbuggyQSA.push( \".#.+[+~]\" );\n\t\t\t}\n\n\t\t\t// Support: Firefox <=3.6 - 5 only\n\t\t\t// Old Firefox doesn't throw on a badly-escaped identifier.\n\t\t\tel.querySelectorAll( \"\\\\\\f\" );\n\t\t\trbuggyQSA.push( \"[\\\\r\\\\n\\\\f]\" );\n\t\t} );\n\n\t\tassert( function( el ) {\n\t\t\tel.innerHTML = \"\" +\n\t\t\t\t\"\";\n\n\t\t\t// Support: Windows 8 Native Apps\n\t\t\t// The type and name attributes are restricted during .innerHTML assignment\n\t\t\tvar input = document.createElement( \"input\" );\n\t\t\tinput.setAttribute( \"type\", \"hidden\" );\n\t\t\tel.appendChild( input ).setAttribute( \"name\", \"D\" );\n\n\t\t\t// Support: IE8\n\t\t\t// Enforce case-sensitivity of name attribute\n\t\t\tif ( el.querySelectorAll( \"[name=d]\" ).length ) {\n\t\t\t\trbuggyQSA.push( \"name\" + whitespace + \"*[*^$|!~]?=\" );\n\t\t\t}\n\n\t\t\t// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)\n\t\t\t// IE8 throws error here and will not see later tests\n\t\t\tif ( el.querySelectorAll( \":enabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: IE9-11+\n\t\t\t// IE's :disabled selector does not pick up the children of disabled fieldsets\n\t\t\tdocElem.appendChild( el ).disabled = true;\n\t\t\tif ( el.querySelectorAll( \":disabled\" ).length !== 2 ) {\n\t\t\t\trbuggyQSA.push( \":enabled\", \":disabled\" );\n\t\t\t}\n\n\t\t\t// Support: Opera 10 - 11 only\n\t\t\t// Opera 10-11 does not throw on post-comma invalid pseudos\n\t\t\tel.querySelectorAll( \"*,:x\" );\n\t\t\trbuggyQSA.push( \",.*:\" );\n\t\t} );\n\t}\n\n\tif ( ( support.matchesSelector = rnative.test( ( matches = docElem.matches ||\n\t\tdocElem.webkitMatchesSelector ||\n\t\tdocElem.mozMatchesSelector ||\n\t\tdocElem.oMatchesSelector ||\n\t\tdocElem.msMatchesSelector ) ) ) ) {\n\n\t\tassert( function( el ) {\n\n\t\t\t// Check to see if it's possible to do matchesSelector\n\t\t\t// on a disconnected node (IE 9)\n\t\t\tsupport.disconnectedMatch = matches.call( el, \"*\" );\n\n\t\t\t// This should fail with an exception\n\t\t\t// Gecko does not error, returns false instead\n\t\t\tmatches.call( el, \"[s!='']:x\" );\n\t\t\trbuggyMatches.push( \"!=\", pseudos );\n\t\t} );\n\t}\n\n\trbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join( \"|\" ) );\n\trbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join( \"|\" ) );\n\n\t/* Contains\n\t---------------------------------------------------------------------- */\n\thasCompare = rnative.test( docElem.compareDocumentPosition );\n\n\t// Element contains another\n\t// Purposefully self-exclusive\n\t// As in, an element does not contain itself\n\tcontains = hasCompare || rnative.test( docElem.contains ) ?\n\t\tfunction( a, b ) {\n\t\t\tvar adown = a.nodeType === 9 ? a.documentElement : a,\n\t\t\t\tbup = b && b.parentNode;\n\t\t\treturn a === bup || !!( bup && bup.nodeType === 1 && (\n\t\t\t\tadown.contains ?\n\t\t\t\t\tadown.contains( bup ) :\n\t\t\t\t\ta.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16\n\t\t\t) );\n\t\t} :\n\t\tfunction( a, b ) {\n\t\t\tif ( b ) {\n\t\t\t\twhile ( ( b = b.parentNode ) ) {\n\t\t\t\t\tif ( b === a ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n\n\t/* Sorting\n\t---------------------------------------------------------------------- */\n\n\t// Document order sorting\n\tsortOrder = hasCompare ?\n\tfunction( a, b ) {\n\n\t\t// Flag for duplicate removal\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\t// Sort on method existence if only one input has compareDocumentPosition\n\t\tvar compare = !a.compareDocumentPosition - !b.compareDocumentPosition;\n\t\tif ( compare ) {\n\t\t\treturn compare;\n\t\t}\n\n\t\t// Calculate position if both inputs belong to the same document\n\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t// two documents; shallow comparisons work.\n\t\t// eslint-disable-next-line eqeqeq\n\t\tcompare = ( a.ownerDocument || a ) == ( b.ownerDocument || b ) ?\n\t\t\ta.compareDocumentPosition( b ) :\n\n\t\t\t// Otherwise we know they are disconnected\n\t\t\t1;\n\n\t\t// Disconnected nodes\n\t\tif ( compare & 1 ||\n\t\t\t( !support.sortDetached && b.compareDocumentPosition( a ) === compare ) ) {\n\n\t\t\t// Choose the first element that is related to our preferred document\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( a == document || a.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, a ) ) {\n\t\t\t\treturn -1;\n\t\t\t}\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\tif ( b == document || b.ownerDocument == preferredDoc &&\n\t\t\t\tcontains( preferredDoc, b ) ) {\n\t\t\t\treturn 1;\n\t\t\t}\n\n\t\t\t// Maintain original order\n\t\t\treturn sortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\t\t}\n\n\t\treturn compare & 4 ? -1 : 1;\n\t} :\n\tfunction( a, b ) {\n\n\t\t// Exit early if the nodes are identical\n\t\tif ( a === b ) {\n\t\t\thasDuplicate = true;\n\t\t\treturn 0;\n\t\t}\n\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\taup = a.parentNode,\n\t\t\tbup = b.parentNode,\n\t\t\tap = [ a ],\n\t\t\tbp = [ b ];\n\n\t\t// Parentless nodes are either documents or disconnected\n\t\tif ( !aup || !bup ) {\n\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\treturn a == document ? -1 :\n\t\t\t\tb == document ? 1 :\n\t\t\t\t/* eslint-enable eqeqeq */\n\t\t\t\taup ? -1 :\n\t\t\t\tbup ? 1 :\n\t\t\t\tsortInput ?\n\t\t\t\t( indexOf( sortInput, a ) - indexOf( sortInput, b ) ) :\n\t\t\t\t0;\n\n\t\t// If the nodes are siblings, we can do a quick check\n\t\t} else if ( aup === bup ) {\n\t\t\treturn siblingCheck( a, b );\n\t\t}\n\n\t\t// Otherwise we need full lists of their ancestors for comparison\n\t\tcur = a;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tap.unshift( cur );\n\t\t}\n\t\tcur = b;\n\t\twhile ( ( cur = cur.parentNode ) ) {\n\t\t\tbp.unshift( cur );\n\t\t}\n\n\t\t// Walk down the tree looking for a discrepancy\n\t\twhile ( ap[ i ] === bp[ i ] ) {\n\t\t\ti++;\n\t\t}\n\n\t\treturn i ?\n\n\t\t\t// Do a sibling check if the nodes have a common ancestor\n\t\t\tsiblingCheck( ap[ i ], bp[ i ] ) :\n\n\t\t\t// Otherwise nodes in our document sort first\n\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t// two documents; shallow comparisons work.\n\t\t\t/* eslint-disable eqeqeq */\n\t\t\tap[ i ] == preferredDoc ? -1 :\n\t\t\tbp[ i ] == preferredDoc ? 1 :\n\t\t\t/* eslint-enable eqeqeq */\n\t\t\t0;\n\t};\n\n\treturn document;\n};\n\nSizzle.matches = function( expr, elements ) {\n\treturn Sizzle( expr, null, null, elements );\n};\n\nSizzle.matchesSelector = function( elem, expr ) {\n\tsetDocument( elem );\n\n\tif ( support.matchesSelector && documentIsHTML &&\n\t\t!nonnativeSelectorCache[ expr + \" \" ] &&\n\t\t( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&\n\t\t( !rbuggyQSA || !rbuggyQSA.test( expr ) ) ) {\n\n\t\ttry {\n\t\t\tvar ret = matches.call( elem, expr );\n\n\t\t\t// IE 9's matchesSelector returns false on disconnected nodes\n\t\t\tif ( ret || support.disconnectedMatch ||\n\n\t\t\t\t// As well, disconnected nodes are said to be in a document\n\t\t\t\t// fragment in IE 9\n\t\t\t\telem.document && elem.document.nodeType !== 11 ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\t\t} catch ( e ) {\n\t\t\tnonnativeSelectorCache( expr, true );\n\t\t}\n\t}\n\n\treturn Sizzle( expr, document, null, [ elem ] ).length > 0;\n};\n\nSizzle.contains = function( context, elem ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( context.ownerDocument || context ) != document ) {\n\t\tsetDocument( context );\n\t}\n\treturn contains( context, elem );\n};\n\nSizzle.attr = function( elem, name ) {\n\n\t// Set document vars if needed\n\t// Support: IE 11+, Edge 17 - 18+\n\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t// two documents; shallow comparisons work.\n\t// eslint-disable-next-line eqeqeq\n\tif ( ( elem.ownerDocument || elem ) != document ) {\n\t\tsetDocument( elem );\n\t}\n\n\tvar fn = Expr.attrHandle[ name.toLowerCase() ],\n\n\t\t// Don't get fooled by Object.prototype properties (jQuery #13807)\n\t\tval = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?\n\t\t\tfn( elem, name, !documentIsHTML ) :\n\t\t\tundefined;\n\n\treturn val !== undefined ?\n\t\tval :\n\t\tsupport.attributes || !documentIsHTML ?\n\t\t\telem.getAttribute( name ) :\n\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\tval.value :\n\t\t\t\tnull;\n};\n\nSizzle.escape = function( sel ) {\n\treturn ( sel + \"\" ).replace( rcssescape, fcssescape );\n};\n\nSizzle.error = function( msg ) {\n\tthrow new Error( \"Syntax error, unrecognized expression: \" + msg );\n};\n\n/**\n * Document sorting and removing duplicates\n * @param {ArrayLike} results\n */\nSizzle.uniqueSort = function( results ) {\n\tvar elem,\n\t\tduplicates = [],\n\t\tj = 0,\n\t\ti = 0;\n\n\t// Unless we *know* we can detect duplicates, assume their presence\n\thasDuplicate = !support.detectDuplicates;\n\tsortInput = !support.sortStable && results.slice( 0 );\n\tresults.sort( sortOrder );\n\n\tif ( hasDuplicate ) {\n\t\twhile ( ( elem = results[ i++ ] ) ) {\n\t\t\tif ( elem === results[ i ] ) {\n\t\t\t\tj = duplicates.push( i );\n\t\t\t}\n\t\t}\n\t\twhile ( j-- ) {\n\t\t\tresults.splice( duplicates[ j ], 1 );\n\t\t}\n\t}\n\n\t// Clear input after sorting to release objects\n\t// See https://github.com/jquery/sizzle/pull/225\n\tsortInput = null;\n\n\treturn results;\n};\n\n/**\n * Utility function for retrieving the text value of an array of DOM nodes\n * @param {Array|Element} elem\n */\ngetText = Sizzle.getText = function( elem ) {\n\tvar node,\n\t\tret = \"\",\n\t\ti = 0,\n\t\tnodeType = elem.nodeType;\n\n\tif ( !nodeType ) {\n\n\t\t// If no nodeType, this is expected to be an array\n\t\twhile ( ( node = elem[ i++ ] ) ) {\n\n\t\t\t// Do not traverse comment nodes\n\t\t\tret += getText( node );\n\t\t}\n\t} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {\n\n\t\t// Use textContent for elements\n\t\t// innerText usage removed for consistency of new lines (jQuery #11153)\n\t\tif ( typeof elem.textContent === \"string\" ) {\n\t\t\treturn elem.textContent;\n\t\t} else {\n\n\t\t\t// Traverse its children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tret += getText( elem );\n\t\t\t}\n\t\t}\n\t} else if ( nodeType === 3 || nodeType === 4 ) {\n\t\treturn elem.nodeValue;\n\t}\n\n\t// Do not include comment or processing instruction nodes\n\n\treturn ret;\n};\n\nExpr = Sizzle.selectors = {\n\n\t// Can be adjusted by the user\n\tcacheLength: 50,\n\n\tcreatePseudo: markFunction,\n\n\tmatch: matchExpr,\n\n\tattrHandle: {},\n\n\tfind: {},\n\n\trelative: {\n\t\t\">\": { dir: \"parentNode\", first: true },\n\t\t\" \": { dir: \"parentNode\" },\n\t\t\"+\": { dir: \"previousSibling\", first: true },\n\t\t\"~\": { dir: \"previousSibling\" }\n\t},\n\n\tpreFilter: {\n\t\t\"ATTR\": function( match ) {\n\t\t\tmatch[ 1 ] = match[ 1 ].replace( runescape, funescape );\n\n\t\t\t// Move the given value to match[3] whether quoted or unquoted\n\t\t\tmatch[ 3 ] = ( match[ 3 ] || match[ 4 ] ||\n\t\t\t\tmatch[ 5 ] || \"\" ).replace( runescape, funescape );\n\n\t\t\tif ( match[ 2 ] === \"~=\" ) {\n\t\t\t\tmatch[ 3 ] = \" \" + match[ 3 ] + \" \";\n\t\t\t}\n\n\t\t\treturn match.slice( 0, 4 );\n\t\t},\n\n\t\t\"CHILD\": function( match ) {\n\n\t\t\t/* matches from matchExpr[\"CHILD\"]\n\t\t\t\t1 type (only|nth|...)\n\t\t\t\t2 what (child|of-type)\n\t\t\t\t3 argument (even|odd|\\d*|\\d*n([+-]\\d+)?|...)\n\t\t\t\t4 xn-component of xn+y argument ([+-]?\\d*n|)\n\t\t\t\t5 sign of xn-component\n\t\t\t\t6 x of xn-component\n\t\t\t\t7 sign of y-component\n\t\t\t\t8 y of y-component\n\t\t\t*/\n\t\t\tmatch[ 1 ] = match[ 1 ].toLowerCase();\n\n\t\t\tif ( match[ 1 ].slice( 0, 3 ) === \"nth\" ) {\n\n\t\t\t\t// nth-* requires argument\n\t\t\t\tif ( !match[ 3 ] ) {\n\t\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t\t}\n\n\t\t\t\t// numeric x and y parameters for Expr.filter.CHILD\n\t\t\t\t// remember that false/true cast respectively to 0/1\n\t\t\t\tmatch[ 4 ] = +( match[ 4 ] ?\n\t\t\t\t\tmatch[ 5 ] + ( match[ 6 ] || 1 ) :\n\t\t\t\t\t2 * ( match[ 3 ] === \"even\" || match[ 3 ] === \"odd\" ) );\n\t\t\t\tmatch[ 5 ] = +( ( match[ 7 ] + match[ 8 ] ) || match[ 3 ] === \"odd\" );\n\n\t\t\t\t// other types prohibit arguments\n\t\t\t} else if ( match[ 3 ] ) {\n\t\t\t\tSizzle.error( match[ 0 ] );\n\t\t\t}\n\n\t\t\treturn match;\n\t\t},\n\n\t\t\"PSEUDO\": function( match ) {\n\t\t\tvar excess,\n\t\t\t\tunquoted = !match[ 6 ] && match[ 2 ];\n\n\t\t\tif ( matchExpr[ \"CHILD\" ].test( match[ 0 ] ) ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\t// Accept quoted arguments as-is\n\t\t\tif ( match[ 3 ] ) {\n\t\t\t\tmatch[ 2 ] = match[ 4 ] || match[ 5 ] || \"\";\n\n\t\t\t// Strip excess characters from unquoted arguments\n\t\t\t} else if ( unquoted && rpseudo.test( unquoted ) &&\n\n\t\t\t\t// Get excess from tokenize (recursively)\n\t\t\t\t( excess = tokenize( unquoted, true ) ) &&\n\n\t\t\t\t// advance to the next closing parenthesis\n\t\t\t\t( excess = unquoted.indexOf( \")\", unquoted.length - excess ) - unquoted.length ) ) {\n\n\t\t\t\t// excess is a negative index\n\t\t\t\tmatch[ 0 ] = match[ 0 ].slice( 0, excess );\n\t\t\t\tmatch[ 2 ] = unquoted.slice( 0, excess );\n\t\t\t}\n\n\t\t\t// Return only captures needed by the pseudo filter method (type and argument)\n\t\t\treturn match.slice( 0, 3 );\n\t\t}\n\t},\n\n\tfilter: {\n\n\t\t\"TAG\": function( nodeNameSelector ) {\n\t\t\tvar nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn nodeNameSelector === \"*\" ?\n\t\t\t\tfunction() {\n\t\t\t\t\treturn true;\n\t\t\t\t} :\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn elem.nodeName && elem.nodeName.toLowerCase() === nodeName;\n\t\t\t\t};\n\t\t},\n\n\t\t\"CLASS\": function( className ) {\n\t\t\tvar pattern = classCache[ className + \" \" ];\n\n\t\t\treturn pattern ||\n\t\t\t\t( pattern = new RegExp( \"(^|\" + whitespace +\n\t\t\t\t\t\")\" + className + \"(\" + whitespace + \"|$)\" ) ) && classCache(\n\t\t\t\t\t\tclassName, function( elem ) {\n\t\t\t\t\t\t\treturn pattern.test(\n\t\t\t\t\t\t\t\ttypeof elem.className === \"string\" && elem.className ||\n\t\t\t\t\t\t\t\ttypeof elem.getAttribute !== \"undefined\" &&\n\t\t\t\t\t\t\t\t\telem.getAttribute( \"class\" ) ||\n\t\t\t\t\t\t\t\t\"\"\n\t\t\t\t\t\t\t);\n\t\t\t\t} );\n\t\t},\n\n\t\t\"ATTR\": function( name, operator, check ) {\n\t\t\treturn function( elem ) {\n\t\t\t\tvar result = Sizzle.attr( elem, name );\n\n\t\t\t\tif ( result == null ) {\n\t\t\t\t\treturn operator === \"!=\";\n\t\t\t\t}\n\t\t\t\tif ( !operator ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\n\t\t\t\tresult += \"\";\n\n\t\t\t\t/* eslint-disable max-len */\n\n\t\t\t\treturn operator === \"=\" ? result === check :\n\t\t\t\t\toperator === \"!=\" ? result !== check :\n\t\t\t\t\toperator === \"^=\" ? check && result.indexOf( check ) === 0 :\n\t\t\t\t\toperator === \"*=\" ? check && result.indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"$=\" ? check && result.slice( -check.length ) === check :\n\t\t\t\t\toperator === \"~=\" ? ( \" \" + result.replace( rwhitespace, \" \" ) + \" \" ).indexOf( check ) > -1 :\n\t\t\t\t\toperator === \"|=\" ? result === check || result.slice( 0, check.length + 1 ) === check + \"-\" :\n\t\t\t\t\tfalse;\n\t\t\t\t/* eslint-enable max-len */\n\n\t\t\t};\n\t\t},\n\n\t\t\"CHILD\": function( type, what, _argument, first, last ) {\n\t\t\tvar simple = type.slice( 0, 3 ) !== \"nth\",\n\t\t\t\tforward = type.slice( -4 ) !== \"last\",\n\t\t\t\tofType = what === \"of-type\";\n\n\t\t\treturn first === 1 && last === 0 ?\n\n\t\t\t\t// Shortcut for :nth-*(n)\n\t\t\t\tfunction( elem ) {\n\t\t\t\t\treturn !!elem.parentNode;\n\t\t\t\t} :\n\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tvar cache, uniqueCache, outerCache, node, nodeIndex, start,\n\t\t\t\t\t\tdir = simple !== forward ? \"nextSibling\" : \"previousSibling\",\n\t\t\t\t\t\tparent = elem.parentNode,\n\t\t\t\t\t\tname = ofType && elem.nodeName.toLowerCase(),\n\t\t\t\t\t\tuseCache = !xml && !ofType,\n\t\t\t\t\t\tdiff = false;\n\n\t\t\t\t\tif ( parent ) {\n\n\t\t\t\t\t\t// :(first|last|only)-(child|of-type)\n\t\t\t\t\t\tif ( simple ) {\n\t\t\t\t\t\t\twhile ( dir ) {\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\twhile ( ( node = node[ dir ] ) ) {\n\t\t\t\t\t\t\t\t\tif ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) {\n\n\t\t\t\t\t\t\t\t\t\treturn false;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t// Reverse direction for :only-* (if we haven't yet done so)\n\t\t\t\t\t\t\t\tstart = dir = type === \"only\" && !start && \"nextSibling\";\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tstart = [ forward ? parent.firstChild : parent.lastChild ];\n\n\t\t\t\t\t\t// non-xml :nth-child(...) stores cache data on `parent`\n\t\t\t\t\t\tif ( forward && useCache ) {\n\n\t\t\t\t\t\t\t// Seek `elem` from a previously-cached index\n\n\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\tnode = parent;\n\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\tdiff = nodeIndex && cache[ 2 ];\n\t\t\t\t\t\t\tnode = nodeIndex && parent.childNodes[ nodeIndex ];\n\n\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\n\t\t\t\t\t\t\t\t// Fallback to seeking `elem` from the start\n\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t// When found, cache indexes on `parent` and break\n\t\t\t\t\t\t\t\tif ( node.nodeType === 1 && ++diff && node === elem ) {\n\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, nodeIndex, diff ];\n\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Use previously-cached element index if available\n\t\t\t\t\t\t\tif ( useCache ) {\n\n\t\t\t\t\t\t\t\t// ...in a gzip-friendly way\n\t\t\t\t\t\t\t\tnode = elem;\n\t\t\t\t\t\t\t\touterCache = node[ expando ] || ( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\tcache = uniqueCache[ type ] || [];\n\t\t\t\t\t\t\t\tnodeIndex = cache[ 0 ] === dirruns && cache[ 1 ];\n\t\t\t\t\t\t\t\tdiff = nodeIndex;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t// xml :nth-child(...)\n\t\t\t\t\t\t\t// or :nth-last-child(...) or :nth(-last)?-of-type(...)\n\t\t\t\t\t\t\tif ( diff === false ) {\n\n\t\t\t\t\t\t\t\t// Use the same loop as above to seek `elem` from the start\n\t\t\t\t\t\t\t\twhile ( ( node = ++nodeIndex && node && node[ dir ] ||\n\t\t\t\t\t\t\t\t\t( diff = nodeIndex = 0 ) || start.pop() ) ) {\n\n\t\t\t\t\t\t\t\t\tif ( ( ofType ?\n\t\t\t\t\t\t\t\t\t\tnode.nodeName.toLowerCase() === name :\n\t\t\t\t\t\t\t\t\t\tnode.nodeType === 1 ) &&\n\t\t\t\t\t\t\t\t\t\t++diff ) {\n\n\t\t\t\t\t\t\t\t\t\t// Cache the index of each encountered element\n\t\t\t\t\t\t\t\t\t\tif ( useCache ) {\n\t\t\t\t\t\t\t\t\t\t\touterCache = node[ expando ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( node[ expando ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache = outerCache[ node.uniqueID ] ||\n\t\t\t\t\t\t\t\t\t\t\t\t( outerCache[ node.uniqueID ] = {} );\n\n\t\t\t\t\t\t\t\t\t\t\tuniqueCache[ type ] = [ dirruns, diff ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\tif ( node === elem ) {\n\t\t\t\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Incorporate the offset, then check against cycle size\n\t\t\t\t\t\tdiff -= last;\n\t\t\t\t\t\treturn diff === first || ( diff % first === 0 && diff / first >= 0 );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t},\n\n\t\t\"PSEUDO\": function( pseudo, argument ) {\n\n\t\t\t// pseudo-class names are case-insensitive\n\t\t\t// http://www.w3.org/TR/selectors/#pseudo-classes\n\t\t\t// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters\n\t\t\t// Remember that setFilters inherits from pseudos\n\t\t\tvar args,\n\t\t\t\tfn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||\n\t\t\t\t\tSizzle.error( \"unsupported pseudo: \" + pseudo );\n\n\t\t\t// The user may use createPseudo to indicate that\n\t\t\t// arguments are needed to create the filter function\n\t\t\t// just as Sizzle does\n\t\t\tif ( fn[ expando ] ) {\n\t\t\t\treturn fn( argument );\n\t\t\t}\n\n\t\t\t// But maintain support for old signatures\n\t\t\tif ( fn.length > 1 ) {\n\t\t\t\targs = [ pseudo, pseudo, \"\", argument ];\n\t\t\t\treturn Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?\n\t\t\t\t\tmarkFunction( function( seed, matches ) {\n\t\t\t\t\t\tvar idx,\n\t\t\t\t\t\t\tmatched = fn( seed, argument ),\n\t\t\t\t\t\t\ti = matched.length;\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tidx = indexOf( seed, matched[ i ] );\n\t\t\t\t\t\t\tseed[ idx ] = !( matches[ idx ] = matched[ i ] );\n\t\t\t\t\t\t}\n\t\t\t\t\t} ) :\n\t\t\t\t\tfunction( elem ) {\n\t\t\t\t\t\treturn fn( elem, 0, args );\n\t\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn fn;\n\t\t}\n\t},\n\n\tpseudos: {\n\n\t\t// Potentially complex pseudos\n\t\t\"not\": markFunction( function( selector ) {\n\n\t\t\t// Trim the selector passed to compile\n\t\t\t// to avoid treating leading and trailing\n\t\t\t// spaces as combinators\n\t\t\tvar input = [],\n\t\t\t\tresults = [],\n\t\t\t\tmatcher = compile( selector.replace( rtrim, \"$1\" ) );\n\n\t\t\treturn matcher[ expando ] ?\n\t\t\t\tmarkFunction( function( seed, matches, _context, xml ) {\n\t\t\t\t\tvar elem,\n\t\t\t\t\t\tunmatched = matcher( seed, null, xml, [] ),\n\t\t\t\t\t\ti = seed.length;\n\n\t\t\t\t\t// Match elements unmatched by `matcher`\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\t\t\t\t\tseed[ i ] = !( matches[ i ] = elem );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} ) :\n\t\t\t\tfunction( elem, _context, xml ) {\n\t\t\t\t\tinput[ 0 ] = elem;\n\t\t\t\t\tmatcher( input, null, xml, results );\n\n\t\t\t\t\t// Don't keep the element (issue #299)\n\t\t\t\t\tinput[ 0 ] = null;\n\t\t\t\t\treturn !results.pop();\n\t\t\t\t};\n\t\t} ),\n\n\t\t\"has\": markFunction( function( selector ) {\n\t\t\treturn function( elem ) {\n\t\t\t\treturn Sizzle( selector, elem ).length > 0;\n\t\t\t};\n\t\t} ),\n\n\t\t\"contains\": markFunction( function( text ) {\n\t\t\ttext = text.replace( runescape, funescape );\n\t\t\treturn function( elem ) {\n\t\t\t\treturn ( elem.textContent || getText( elem ) ).indexOf( text ) > -1;\n\t\t\t};\n\t\t} ),\n\n\t\t// \"Whether an element is represented by a :lang() selector\n\t\t// is based solely on the element's language value\n\t\t// being equal to the identifier C,\n\t\t// or beginning with the identifier C immediately followed by \"-\".\n\t\t// The matching of C against the element's language value is performed case-insensitively.\n\t\t// The identifier C does not have to be a valid language name.\"\n\t\t// http://www.w3.org/TR/selectors/#lang-pseudo\n\t\t\"lang\": markFunction( function( lang ) {\n\n\t\t\t// lang value must be a valid identifier\n\t\t\tif ( !ridentifier.test( lang || \"\" ) ) {\n\t\t\t\tSizzle.error( \"unsupported lang: \" + lang );\n\t\t\t}\n\t\t\tlang = lang.replace( runescape, funescape ).toLowerCase();\n\t\t\treturn function( elem ) {\n\t\t\t\tvar elemLang;\n\t\t\t\tdo {\n\t\t\t\t\tif ( ( elemLang = documentIsHTML ?\n\t\t\t\t\t\telem.lang :\n\t\t\t\t\t\telem.getAttribute( \"xml:lang\" ) || elem.getAttribute( \"lang\" ) ) ) {\n\n\t\t\t\t\t\telemLang = elemLang.toLowerCase();\n\t\t\t\t\t\treturn elemLang === lang || elemLang.indexOf( lang + \"-\" ) === 0;\n\t\t\t\t\t}\n\t\t\t\t} while ( ( elem = elem.parentNode ) && elem.nodeType === 1 );\n\t\t\t\treturn false;\n\t\t\t};\n\t\t} ),\n\n\t\t// Miscellaneous\n\t\t\"target\": function( elem ) {\n\t\t\tvar hash = window.location && window.location.hash;\n\t\t\treturn hash && hash.slice( 1 ) === elem.id;\n\t\t},\n\n\t\t\"root\": function( elem ) {\n\t\t\treturn elem === docElem;\n\t\t},\n\n\t\t\"focus\": function( elem ) {\n\t\t\treturn elem === document.activeElement &&\n\t\t\t\t( !document.hasFocus || document.hasFocus() ) &&\n\t\t\t\t!!( elem.type || elem.href || ~elem.tabIndex );\n\t\t},\n\n\t\t// Boolean properties\n\t\t\"enabled\": createDisabledPseudo( false ),\n\t\t\"disabled\": createDisabledPseudo( true ),\n\n\t\t\"checked\": function( elem ) {\n\n\t\t\t// In CSS3, :checked should return both checked and selected elements\n\t\t\t// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked\n\t\t\tvar nodeName = elem.nodeName.toLowerCase();\n\t\t\treturn ( nodeName === \"input\" && !!elem.checked ) ||\n\t\t\t\t( nodeName === \"option\" && !!elem.selected );\n\t\t},\n\n\t\t\"selected\": function( elem ) {\n\n\t\t\t// Accessing this property makes selected-by-default\n\t\t\t// options in Safari work properly\n\t\t\tif ( elem.parentNode ) {\n\t\t\t\t// eslint-disable-next-line no-unused-expressions\n\t\t\t\telem.parentNode.selectedIndex;\n\t\t\t}\n\n\t\t\treturn elem.selected === true;\n\t\t},\n\n\t\t// Contents\n\t\t\"empty\": function( elem ) {\n\n\t\t\t// http://www.w3.org/TR/selectors/#empty-pseudo\n\t\t\t// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),\n\t\t\t// but not by others (comment: 8; processing instruction: 7; etc.)\n\t\t\t// nodeType < 6 works because attributes (2) do not appear as children\n\t\t\tfor ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {\n\t\t\t\tif ( elem.nodeType < 6 ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t},\n\n\t\t\"parent\": function( elem ) {\n\t\t\treturn !Expr.pseudos[ \"empty\" ]( elem );\n\t\t},\n\n\t\t// Element/input types\n\t\t\"header\": function( elem ) {\n\t\t\treturn rheader.test( elem.nodeName );\n\t\t},\n\n\t\t\"input\": function( elem ) {\n\t\t\treturn rinputs.test( elem.nodeName );\n\t\t},\n\n\t\t\"button\": function( elem ) {\n\t\t\tvar name = elem.nodeName.toLowerCase();\n\t\t\treturn name === \"input\" && elem.type === \"button\" || name === \"button\";\n\t\t},\n\n\t\t\"text\": function( elem ) {\n\t\t\tvar attr;\n\t\t\treturn elem.nodeName.toLowerCase() === \"input\" &&\n\t\t\t\telem.type === \"text\" &&\n\n\t\t\t\t// Support: IE<8\n\t\t\t\t// New HTML5 attribute values (e.g., \"search\") appear with elem.type === \"text\"\n\t\t\t\t( ( attr = elem.getAttribute( \"type\" ) ) == null ||\n\t\t\t\t\tattr.toLowerCase() === \"text\" );\n\t\t},\n\n\t\t// Position-in-collection\n\t\t\"first\": createPositionalPseudo( function() {\n\t\t\treturn [ 0 ];\n\t\t} ),\n\n\t\t\"last\": createPositionalPseudo( function( _matchIndexes, length ) {\n\t\t\treturn [ length - 1 ];\n\t\t} ),\n\n\t\t\"eq\": createPositionalPseudo( function( _matchIndexes, length, argument ) {\n\t\t\treturn [ argument < 0 ? argument + length : argument ];\n\t\t} ),\n\n\t\t\"even\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"odd\": createPositionalPseudo( function( matchIndexes, length ) {\n\t\t\tvar i = 1;\n\t\t\tfor ( ; i < length; i += 2 ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"lt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ?\n\t\t\t\targument + length :\n\t\t\t\targument > length ?\n\t\t\t\t\tlength :\n\t\t\t\t\targument;\n\t\t\tfor ( ; --i >= 0; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} ),\n\n\t\t\"gt\": createPositionalPseudo( function( matchIndexes, length, argument ) {\n\t\t\tvar i = argument < 0 ? argument + length : argument;\n\t\t\tfor ( ; ++i < length; ) {\n\t\t\t\tmatchIndexes.push( i );\n\t\t\t}\n\t\t\treturn matchIndexes;\n\t\t} )\n\t}\n};\n\nExpr.pseudos[ \"nth\" ] = Expr.pseudos[ \"eq\" ];\n\n// Add button/input type pseudos\nfor ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {\n\tExpr.pseudos[ i ] = createInputPseudo( i );\n}\nfor ( i in { submit: true, reset: true } ) {\n\tExpr.pseudos[ i ] = createButtonPseudo( i );\n}\n\n// Easy API for creating new setFilters\nfunction setFilters() {}\nsetFilters.prototype = Expr.filters = Expr.pseudos;\nExpr.setFilters = new setFilters();\n\ntokenize = Sizzle.tokenize = function( selector, parseOnly ) {\n\tvar matched, match, tokens, type,\n\t\tsoFar, groups, preFilters,\n\t\tcached = tokenCache[ selector + \" \" ];\n\n\tif ( cached ) {\n\t\treturn parseOnly ? 0 : cached.slice( 0 );\n\t}\n\n\tsoFar = selector;\n\tgroups = [];\n\tpreFilters = Expr.preFilter;\n\n\twhile ( soFar ) {\n\n\t\t// Comma and first run\n\t\tif ( !matched || ( match = rcomma.exec( soFar ) ) ) {\n\t\t\tif ( match ) {\n\n\t\t\t\t// Don't consume trailing commas as valid\n\t\t\t\tsoFar = soFar.slice( match[ 0 ].length ) || soFar;\n\t\t\t}\n\t\t\tgroups.push( ( tokens = [] ) );\n\t\t}\n\n\t\tmatched = false;\n\n\t\t// Combinators\n\t\tif ( ( match = rcombinators.exec( soFar ) ) ) {\n\t\t\tmatched = match.shift();\n\t\t\ttokens.push( {\n\t\t\t\tvalue: matched,\n\n\t\t\t\t// Cast descendant combinators to space\n\t\t\t\ttype: match[ 0 ].replace( rtrim, \" \" )\n\t\t\t} );\n\t\t\tsoFar = soFar.slice( matched.length );\n\t\t}\n\n\t\t// Filters\n\t\tfor ( type in Expr.filter ) {\n\t\t\tif ( ( match = matchExpr[ type ].exec( soFar ) ) && ( !preFilters[ type ] ||\n\t\t\t\t( match = preFilters[ type ]( match ) ) ) ) {\n\t\t\t\tmatched = match.shift();\n\t\t\t\ttokens.push( {\n\t\t\t\t\tvalue: matched,\n\t\t\t\t\ttype: type,\n\t\t\t\t\tmatches: match\n\t\t\t\t} );\n\t\t\t\tsoFar = soFar.slice( matched.length );\n\t\t\t}\n\t\t}\n\n\t\tif ( !matched ) {\n\t\t\tbreak;\n\t\t}\n\t}\n\n\t// Return the length of the invalid excess\n\t// if we're just parsing\n\t// Otherwise, throw an error or return tokens\n\treturn parseOnly ?\n\t\tsoFar.length :\n\t\tsoFar ?\n\t\t\tSizzle.error( selector ) :\n\n\t\t\t// Cache the tokens\n\t\t\ttokenCache( selector, groups ).slice( 0 );\n};\n\nfunction toSelector( tokens ) {\n\tvar i = 0,\n\t\tlen = tokens.length,\n\t\tselector = \"\";\n\tfor ( ; i < len; i++ ) {\n\t\tselector += tokens[ i ].value;\n\t}\n\treturn selector;\n}\n\nfunction addCombinator( matcher, combinator, base ) {\n\tvar dir = combinator.dir,\n\t\tskip = combinator.next,\n\t\tkey = skip || dir,\n\t\tcheckNonElements = base && key === \"parentNode\",\n\t\tdoneName = done++;\n\n\treturn combinator.first ?\n\n\t\t// Check against closest ancestor/preceding element\n\t\tfunction( elem, context, xml ) {\n\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\treturn matcher( elem, context, xml );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t} :\n\n\t\t// Check against all ancestor/preceding elements\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar oldCache, uniqueCache, outerCache,\n\t\t\t\tnewCache = [ dirruns, doneName ];\n\n\t\t\t// We can't set arbitrary data on XML nodes, so they don't benefit from combinator caching\n\t\t\tif ( xml ) {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\tif ( matcher( elem, context, xml ) ) {\n\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\twhile ( ( elem = elem[ dir ] ) ) {\n\t\t\t\t\tif ( elem.nodeType === 1 || checkNonElements ) {\n\t\t\t\t\t\touterCache = elem[ expando ] || ( elem[ expando ] = {} );\n\n\t\t\t\t\t\t// Support: IE <9 only\n\t\t\t\t\t\t// Defend against cloned attroperties (jQuery gh-1709)\n\t\t\t\t\t\tuniqueCache = outerCache[ elem.uniqueID ] ||\n\t\t\t\t\t\t\t( outerCache[ elem.uniqueID ] = {} );\n\n\t\t\t\t\t\tif ( skip && skip === elem.nodeName.toLowerCase() ) {\n\t\t\t\t\t\t\telem = elem[ dir ] || elem;\n\t\t\t\t\t\t} else if ( ( oldCache = uniqueCache[ key ] ) &&\n\t\t\t\t\t\t\toldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {\n\n\t\t\t\t\t\t\t// Assign to newCache so results back-propagate to previous elements\n\t\t\t\t\t\t\treturn ( newCache[ 2 ] = oldCache[ 2 ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Reuse newcache so results back-propagate to previous elements\n\t\t\t\t\t\t\tuniqueCache[ key ] = newCache;\n\n\t\t\t\t\t\t\t// A match means we're done; a fail means we have to keep checking\n\t\t\t\t\t\t\tif ( ( newCache[ 2 ] = matcher( elem, context, xml ) ) ) {\n\t\t\t\t\t\t\t\treturn true;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn false;\n\t\t};\n}\n\nfunction elementMatcher( matchers ) {\n\treturn matchers.length > 1 ?\n\t\tfunction( elem, context, xml ) {\n\t\t\tvar i = matchers.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( !matchers[ i ]( elem, context, xml ) ) {\n\t\t\t\t\treturn false;\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn true;\n\t\t} :\n\t\tmatchers[ 0 ];\n}\n\nfunction multipleContexts( selector, contexts, results ) {\n\tvar i = 0,\n\t\tlen = contexts.length;\n\tfor ( ; i < len; i++ ) {\n\t\tSizzle( selector, contexts[ i ], results );\n\t}\n\treturn results;\n}\n\nfunction condense( unmatched, map, filter, context, xml ) {\n\tvar elem,\n\t\tnewUnmatched = [],\n\t\ti = 0,\n\t\tlen = unmatched.length,\n\t\tmapped = map != null;\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( elem = unmatched[ i ] ) ) {\n\t\t\tif ( !filter || filter( elem, context, xml ) ) {\n\t\t\t\tnewUnmatched.push( elem );\n\t\t\t\tif ( mapped ) {\n\t\t\t\t\tmap.push( i );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn newUnmatched;\n}\n\nfunction setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {\n\tif ( postFilter && !postFilter[ expando ] ) {\n\t\tpostFilter = setMatcher( postFilter );\n\t}\n\tif ( postFinder && !postFinder[ expando ] ) {\n\t\tpostFinder = setMatcher( postFinder, postSelector );\n\t}\n\treturn markFunction( function( seed, results, context, xml ) {\n\t\tvar temp, i, elem,\n\t\t\tpreMap = [],\n\t\t\tpostMap = [],\n\t\t\tpreexisting = results.length,\n\n\t\t\t// Get initial elements from seed or context\n\t\t\telems = seed || multipleContexts(\n\t\t\t\tselector || \"*\",\n\t\t\t\tcontext.nodeType ? [ context ] : context,\n\t\t\t\t[]\n\t\t\t),\n\n\t\t\t// Prefilter to get matcher input, preserving a map for seed-results synchronization\n\t\t\tmatcherIn = preFilter && ( seed || !selector ) ?\n\t\t\t\tcondense( elems, preMap, preFilter, context, xml ) :\n\t\t\t\telems,\n\n\t\t\tmatcherOut = matcher ?\n\n\t\t\t\t// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,\n\t\t\t\tpostFinder || ( seed ? preFilter : preexisting || postFilter ) ?\n\n\t\t\t\t\t// ...intermediate processing is necessary\n\t\t\t\t\t[] :\n\n\t\t\t\t\t// ...otherwise use results directly\n\t\t\t\t\tresults :\n\t\t\t\tmatcherIn;\n\n\t\t// Find primary matches\n\t\tif ( matcher ) {\n\t\t\tmatcher( matcherIn, matcherOut, context, xml );\n\t\t}\n\n\t\t// Apply postFilter\n\t\tif ( postFilter ) {\n\t\t\ttemp = condense( matcherOut, postMap );\n\t\t\tpostFilter( temp, [], context, xml );\n\n\t\t\t// Un-match failing elements by moving them back to matcherIn\n\t\t\ti = temp.length;\n\t\t\twhile ( i-- ) {\n\t\t\t\tif ( ( elem = temp[ i ] ) ) {\n\t\t\t\t\tmatcherOut[ postMap[ i ] ] = !( matcherIn[ postMap[ i ] ] = elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif ( seed ) {\n\t\t\tif ( postFinder || preFilter ) {\n\t\t\t\tif ( postFinder ) {\n\n\t\t\t\t\t// Get the final matcherOut by condensing this intermediate into postFinder contexts\n\t\t\t\t\ttemp = [];\n\t\t\t\t\ti = matcherOut.length;\n\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) ) {\n\n\t\t\t\t\t\t\t// Restore matcherIn since elem is not yet a final match\n\t\t\t\t\t\t\ttemp.push( ( matcherIn[ i ] = elem ) );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tpostFinder( null, ( matcherOut = [] ), temp, xml );\n\t\t\t\t}\n\n\t\t\t\t// Move matched elements from seed to results to keep them synchronized\n\t\t\t\ti = matcherOut.length;\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\tif ( ( elem = matcherOut[ i ] ) &&\n\t\t\t\t\t\t( temp = postFinder ? indexOf( seed, elem ) : preMap[ i ] ) > -1 ) {\n\n\t\t\t\t\t\tseed[ temp ] = !( results[ temp ] = elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Add elements to results, through postFinder if defined\n\t\t} else {\n\t\t\tmatcherOut = condense(\n\t\t\t\tmatcherOut === results ?\n\t\t\t\t\tmatcherOut.splice( preexisting, matcherOut.length ) :\n\t\t\t\t\tmatcherOut\n\t\t\t);\n\t\t\tif ( postFinder ) {\n\t\t\t\tpostFinder( null, results, matcherOut, xml );\n\t\t\t} else {\n\t\t\t\tpush.apply( results, matcherOut );\n\t\t\t}\n\t\t}\n\t} );\n}\n\nfunction matcherFromTokens( tokens ) {\n\tvar checkContext, matcher, j,\n\t\tlen = tokens.length,\n\t\tleadingRelative = Expr.relative[ tokens[ 0 ].type ],\n\t\timplicitRelative = leadingRelative || Expr.relative[ \" \" ],\n\t\ti = leadingRelative ? 1 : 0,\n\n\t\t// The foundational matcher ensures that elements are reachable from top-level context(s)\n\t\tmatchContext = addCombinator( function( elem ) {\n\t\t\treturn elem === checkContext;\n\t\t}, implicitRelative, true ),\n\t\tmatchAnyContext = addCombinator( function( elem ) {\n\t\t\treturn indexOf( checkContext, elem ) > -1;\n\t\t}, implicitRelative, true ),\n\t\tmatchers = [ function( elem, context, xml ) {\n\t\t\tvar ret = ( !leadingRelative && ( xml || context !== outermostContext ) ) || (\n\t\t\t\t( checkContext = context ).nodeType ?\n\t\t\t\t\tmatchContext( elem, context, xml ) :\n\t\t\t\t\tmatchAnyContext( elem, context, xml ) );\n\n\t\t\t// Avoid hanging onto element (issue #299)\n\t\t\tcheckContext = null;\n\t\t\treturn ret;\n\t\t} ];\n\n\tfor ( ; i < len; i++ ) {\n\t\tif ( ( matcher = Expr.relative[ tokens[ i ].type ] ) ) {\n\t\t\tmatchers = [ addCombinator( elementMatcher( matchers ), matcher ) ];\n\t\t} else {\n\t\t\tmatcher = Expr.filter[ tokens[ i ].type ].apply( null, tokens[ i ].matches );\n\n\t\t\t// Return special upon seeing a positional matcher\n\t\t\tif ( matcher[ expando ] ) {\n\n\t\t\t\t// Find the next relative operator (if any) for proper handling\n\t\t\t\tj = ++i;\n\t\t\t\tfor ( ; j < len; j++ ) {\n\t\t\t\t\tif ( Expr.relative[ tokens[ j ].type ] ) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn setMatcher(\n\t\t\t\t\ti > 1 && elementMatcher( matchers ),\n\t\t\t\t\ti > 1 && toSelector(\n\n\t\t\t\t\t// If the preceding token was a descendant combinator, insert an implicit any-element `*`\n\t\t\t\t\ttokens\n\t\t\t\t\t\t.slice( 0, i - 1 )\n\t\t\t\t\t\t.concat( { value: tokens[ i - 2 ].type === \" \" ? \"*\" : \"\" } )\n\t\t\t\t\t).replace( rtrim, \"$1\" ),\n\t\t\t\t\tmatcher,\n\t\t\t\t\ti < j && matcherFromTokens( tokens.slice( i, j ) ),\n\t\t\t\t\tj < len && matcherFromTokens( ( tokens = tokens.slice( j ) ) ),\n\t\t\t\t\tj < len && toSelector( tokens )\n\t\t\t\t);\n\t\t\t}\n\t\t\tmatchers.push( matcher );\n\t\t}\n\t}\n\n\treturn elementMatcher( matchers );\n}\n\nfunction matcherFromGroupMatchers( elementMatchers, setMatchers ) {\n\tvar bySet = setMatchers.length > 0,\n\t\tbyElement = elementMatchers.length > 0,\n\t\tsuperMatcher = function( seed, context, xml, results, outermost ) {\n\t\t\tvar elem, j, matcher,\n\t\t\t\tmatchedCount = 0,\n\t\t\t\ti = \"0\",\n\t\t\t\tunmatched = seed && [],\n\t\t\t\tsetMatched = [],\n\t\t\t\tcontextBackup = outermostContext,\n\n\t\t\t\t// We must always have either seed elements or outermost context\n\t\t\t\telems = seed || byElement && Expr.find[ \"TAG\" ]( \"*\", outermost ),\n\n\t\t\t\t// Use integer dirruns iff this is the outermost matcher\n\t\t\t\tdirrunsUnique = ( dirruns += contextBackup == null ? 1 : Math.random() || 0.1 ),\n\t\t\t\tlen = elems.length;\n\n\t\t\tif ( outermost ) {\n\n\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\toutermostContext = context == document || context || outermost;\n\t\t\t}\n\n\t\t\t// Add elements passing elementMatchers directly to results\n\t\t\t// Support: IE<9, Safari\n\t\t\t// Tolerate NodeList properties (IE: \"length\"; Safari: ) matching elements by id\n\t\t\tfor ( ; i !== len && ( elem = elems[ i ] ) != null; i++ ) {\n\t\t\t\tif ( byElement && elem ) {\n\t\t\t\t\tj = 0;\n\n\t\t\t\t\t// Support: IE 11+, Edge 17 - 18+\n\t\t\t\t\t// IE/Edge sometimes throw a \"Permission denied\" error when strict-comparing\n\t\t\t\t\t// two documents; shallow comparisons work.\n\t\t\t\t\t// eslint-disable-next-line eqeqeq\n\t\t\t\t\tif ( !context && elem.ownerDocument != document ) {\n\t\t\t\t\t\tsetDocument( elem );\n\t\t\t\t\t\txml = !documentIsHTML;\n\t\t\t\t\t}\n\t\t\t\t\twhile ( ( matcher = elementMatchers[ j++ ] ) ) {\n\t\t\t\t\t\tif ( matcher( elem, context || document, xml ) ) {\n\t\t\t\t\t\t\tresults.push( elem );\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( outermost ) {\n\t\t\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Track unmatched elements for set filters\n\t\t\t\tif ( bySet ) {\n\n\t\t\t\t\t// They will have gone through all possible matchers\n\t\t\t\t\tif ( ( elem = !matcher && elem ) ) {\n\t\t\t\t\t\tmatchedCount--;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Lengthen the array for every element, matched or not\n\t\t\t\t\tif ( seed ) {\n\t\t\t\t\t\tunmatched.push( elem );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// `i` is now the count of elements visited above, and adding it to `matchedCount`\n\t\t\t// makes the latter nonnegative.\n\t\t\tmatchedCount += i;\n\n\t\t\t// Apply set filters to unmatched elements\n\t\t\t// NOTE: This can be skipped if there are no unmatched elements (i.e., `matchedCount`\n\t\t\t// equals `i`), unless we didn't visit _any_ elements in the above loop because we have\n\t\t\t// no element matchers and no seed.\n\t\t\t// Incrementing an initially-string \"0\" `i` allows `i` to remain a string only in that\n\t\t\t// case, which will result in a \"00\" `matchedCount` that differs from `i` but is also\n\t\t\t// numerically zero.\n\t\t\tif ( bySet && i !== matchedCount ) {\n\t\t\t\tj = 0;\n\t\t\t\twhile ( ( matcher = setMatchers[ j++ ] ) ) {\n\t\t\t\t\tmatcher( unmatched, setMatched, context, xml );\n\t\t\t\t}\n\n\t\t\t\tif ( seed ) {\n\n\t\t\t\t\t// Reintegrate element matches to eliminate the need for sorting\n\t\t\t\t\tif ( matchedCount > 0 ) {\n\t\t\t\t\t\twhile ( i-- ) {\n\t\t\t\t\t\t\tif ( !( unmatched[ i ] || setMatched[ i ] ) ) {\n\t\t\t\t\t\t\t\tsetMatched[ i ] = pop.call( results );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Discard index placeholder values to get only actual matches\n\t\t\t\t\tsetMatched = condense( setMatched );\n\t\t\t\t}\n\n\t\t\t\t// Add matches to results\n\t\t\t\tpush.apply( results, setMatched );\n\n\t\t\t\t// Seedless set matches succeeding multiple successful matchers stipulate sorting\n\t\t\t\tif ( outermost && !seed && setMatched.length > 0 &&\n\t\t\t\t\t( matchedCount + setMatchers.length ) > 1 ) {\n\n\t\t\t\t\tSizzle.uniqueSort( results );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Override manipulation of globals by nested matchers\n\t\t\tif ( outermost ) {\n\t\t\t\tdirruns = dirrunsUnique;\n\t\t\t\toutermostContext = contextBackup;\n\t\t\t}\n\n\t\t\treturn unmatched;\n\t\t};\n\n\treturn bySet ?\n\t\tmarkFunction( superMatcher ) :\n\t\tsuperMatcher;\n}\n\ncompile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {\n\tvar i,\n\t\tsetMatchers = [],\n\t\telementMatchers = [],\n\t\tcached = compilerCache[ selector + \" \" ];\n\n\tif ( !cached ) {\n\n\t\t// Generate a function of recursive functions that can be used to check each element\n\t\tif ( !match ) {\n\t\t\tmatch = tokenize( selector );\n\t\t}\n\t\ti = match.length;\n\t\twhile ( i-- ) {\n\t\t\tcached = matcherFromTokens( match[ i ] );\n\t\t\tif ( cached[ expando ] ) {\n\t\t\t\tsetMatchers.push( cached );\n\t\t\t} else {\n\t\t\t\telementMatchers.push( cached );\n\t\t\t}\n\t\t}\n\n\t\t// Cache the compiled function\n\t\tcached = compilerCache(\n\t\t\tselector,\n\t\t\tmatcherFromGroupMatchers( elementMatchers, setMatchers )\n\t\t);\n\n\t\t// Save selector and tokenization\n\t\tcached.selector = selector;\n\t}\n\treturn cached;\n};\n\n/**\n * A low-level selection function that works with Sizzle's compiled\n * selector functions\n * @param {String|Function} selector A selector or a pre-compiled\n * selector function built with Sizzle.compile\n * @param {Element} context\n * @param {Array} [results]\n * @param {Array} [seed] A set of elements to match against\n */\nselect = Sizzle.select = function( selector, context, results, seed ) {\n\tvar i, tokens, token, type, find,\n\t\tcompiled = typeof selector === \"function\" && selector,\n\t\tmatch = !seed && tokenize( ( selector = compiled.selector || selector ) );\n\n\tresults = results || [];\n\n\t// Try to minimize operations if there is only one selector in the list and no seed\n\t// (the latter of which guarantees us context)\n\tif ( match.length === 1 ) {\n\n\t\t// Reduce context if the leading compound selector is an ID\n\t\ttokens = match[ 0 ] = match[ 0 ].slice( 0 );\n\t\tif ( tokens.length > 2 && ( token = tokens[ 0 ] ).type === \"ID\" &&\n\t\t\tcontext.nodeType === 9 && documentIsHTML && Expr.relative[ tokens[ 1 ].type ] ) {\n\n\t\t\tcontext = ( Expr.find[ \"ID\" ]( token.matches[ 0 ]\n\t\t\t\t.replace( runescape, funescape ), context ) || [] )[ 0 ];\n\t\t\tif ( !context ) {\n\t\t\t\treturn results;\n\n\t\t\t// Precompiled matchers will still verify ancestry, so step up a level\n\t\t\t} else if ( compiled ) {\n\t\t\t\tcontext = context.parentNode;\n\t\t\t}\n\n\t\t\tselector = selector.slice( tokens.shift().value.length );\n\t\t}\n\n\t\t// Fetch a seed set for right-to-left matching\n\t\ti = matchExpr[ \"needsContext\" ].test( selector ) ? 0 : tokens.length;\n\t\twhile ( i-- ) {\n\t\t\ttoken = tokens[ i ];\n\n\t\t\t// Abort if we hit a combinator\n\t\t\tif ( Expr.relative[ ( type = token.type ) ] ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( ( find = Expr.find[ type ] ) ) {\n\n\t\t\t\t// Search, expanding context for leading sibling combinators\n\t\t\t\tif ( ( seed = find(\n\t\t\t\t\ttoken.matches[ 0 ].replace( runescape, funescape ),\n\t\t\t\t\trsibling.test( tokens[ 0 ].type ) && testContext( context.parentNode ) ||\n\t\t\t\t\t\tcontext\n\t\t\t\t) ) ) {\n\n\t\t\t\t\t// If seed is empty or no tokens remain, we can return early\n\t\t\t\t\ttokens.splice( i, 1 );\n\t\t\t\t\tselector = seed.length && toSelector( tokens );\n\t\t\t\t\tif ( !selector ) {\n\t\t\t\t\t\tpush.apply( results, seed );\n\t\t\t\t\t\treturn results;\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Compile and execute a filtering function if one is not provided\n\t// Provide `match` to avoid retokenization if we modified the selector above\n\t( compiled || compile( selector, match ) )(\n\t\tseed,\n\t\tcontext,\n\t\t!documentIsHTML,\n\t\tresults,\n\t\t!context || rsibling.test( selector ) && testContext( context.parentNode ) || context\n\t);\n\treturn results;\n};\n\n// One-time assignments\n\n// Sort stability\nsupport.sortStable = expando.split( \"\" ).sort( sortOrder ).join( \"\" ) === expando;\n\n// Support: Chrome 14-35+\n// Always assume duplicates if they aren't passed to the comparison function\nsupport.detectDuplicates = !!hasDuplicate;\n\n// Initialize against the default document\nsetDocument();\n\n// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)\n// Detached nodes confoundingly follow *each other*\nsupport.sortDetached = assert( function( el ) {\n\n\t// Should return 1, but returns 4 (following)\n\treturn el.compareDocumentPosition( document.createElement( \"fieldset\" ) ) & 1;\n} );\n\n// Support: IE<8\n// Prevent attribute/property \"interpolation\"\n// https://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx\nif ( !assert( function( el ) {\n\tel.innerHTML = \"\";\n\treturn el.firstChild.getAttribute( \"href\" ) === \"#\";\n} ) ) {\n\taddHandle( \"type|href|height|width\", function( elem, name, isXML ) {\n\t\tif ( !isXML ) {\n\t\t\treturn elem.getAttribute( name, name.toLowerCase() === \"type\" ? 1 : 2 );\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use defaultValue in place of getAttribute(\"value\")\nif ( !support.attributes || !assert( function( el ) {\n\tel.innerHTML = \"\";\n\tel.firstChild.setAttribute( \"value\", \"\" );\n\treturn el.firstChild.getAttribute( \"value\" ) === \"\";\n} ) ) {\n\taddHandle( \"value\", function( elem, _name, isXML ) {\n\t\tif ( !isXML && elem.nodeName.toLowerCase() === \"input\" ) {\n\t\t\treturn elem.defaultValue;\n\t\t}\n\t} );\n}\n\n// Support: IE<9\n// Use getAttributeNode to fetch booleans when getAttribute lies\nif ( !assert( function( el ) {\n\treturn el.getAttribute( \"disabled\" ) == null;\n} ) ) {\n\taddHandle( booleans, function( elem, name, isXML ) {\n\t\tvar val;\n\t\tif ( !isXML ) {\n\t\t\treturn elem[ name ] === true ? name.toLowerCase() :\n\t\t\t\t( val = elem.getAttributeNode( name ) ) && val.specified ?\n\t\t\t\t\tval.value :\n\t\t\t\t\tnull;\n\t\t}\n\t} );\n}\n\nreturn Sizzle;\n\n} )( window );\n\n\n\njQuery.find = Sizzle;\njQuery.expr = Sizzle.selectors;\n\n// Deprecated\njQuery.expr[ \":\" ] = jQuery.expr.pseudos;\njQuery.uniqueSort = jQuery.unique = Sizzle.uniqueSort;\njQuery.text = Sizzle.getText;\njQuery.isXMLDoc = Sizzle.isXML;\njQuery.contains = Sizzle.contains;\njQuery.escapeSelector = Sizzle.escape;\n\n\n\n\nvar dir = function( elem, dir, until ) {\n\tvar matched = [],\n\t\ttruncate = until !== undefined;\n\n\twhile ( ( elem = elem[ dir ] ) && elem.nodeType !== 9 ) {\n\t\tif ( elem.nodeType === 1 ) {\n\t\t\tif ( truncate && jQuery( elem ).is( until ) ) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tmatched.push( elem );\n\t\t}\n\t}\n\treturn matched;\n};\n\n\nvar siblings = function( n, elem ) {\n\tvar matched = [];\n\n\tfor ( ; n; n = n.nextSibling ) {\n\t\tif ( n.nodeType === 1 && n !== elem ) {\n\t\t\tmatched.push( n );\n\t\t}\n\t}\n\n\treturn matched;\n};\n\n\nvar rneedsContext = jQuery.expr.match.needsContext;\n\n\n\nfunction nodeName( elem, name ) {\n\n\treturn elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();\n\n}\nvar rsingleTag = ( /^<([a-z][^\\/\\0>:\\x20\\t\\r\\n\\f]*)[\\x20\\t\\r\\n\\f]*\\/?>(?:<\\/\\1>|)$/i );\n\n\n\n// Implement the identical functionality for filter and not\nfunction winnow( elements, qualifier, not ) {\n\tif ( isFunction( qualifier ) ) {\n\t\treturn jQuery.grep( elements, function( elem, i ) {\n\t\t\treturn !!qualifier.call( elem, i, elem ) !== not;\n\t\t} );\n\t}\n\n\t// Single element\n\tif ( qualifier.nodeType ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( elem === qualifier ) !== not;\n\t\t} );\n\t}\n\n\t// Arraylike of elements (jQuery, arguments, Array)\n\tif ( typeof qualifier !== \"string\" ) {\n\t\treturn jQuery.grep( elements, function( elem ) {\n\t\t\treturn ( indexOf.call( qualifier, elem ) > -1 ) !== not;\n\t\t} );\n\t}\n\n\t// Filtered directly for both simple and complex selectors\n\treturn jQuery.filter( qualifier, elements, not );\n}\n\njQuery.filter = function( expr, elems, not ) {\n\tvar elem = elems[ 0 ];\n\n\tif ( not ) {\n\t\texpr = \":not(\" + expr + \")\";\n\t}\n\n\tif ( elems.length === 1 && elem.nodeType === 1 ) {\n\t\treturn jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [];\n\t}\n\n\treturn jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {\n\t\treturn elem.nodeType === 1;\n\t} ) );\n};\n\njQuery.fn.extend( {\n\tfind: function( selector ) {\n\t\tvar i, ret,\n\t\t\tlen = this.length,\n\t\t\tself = this;\n\n\t\tif ( typeof selector !== \"string\" ) {\n\t\t\treturn this.pushStack( jQuery( selector ).filter( function() {\n\t\t\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\t\t\tif ( jQuery.contains( self[ i ], this ) ) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} ) );\n\t\t}\n\n\t\tret = this.pushStack( [] );\n\n\t\tfor ( i = 0; i < len; i++ ) {\n\t\t\tjQuery.find( selector, self[ i ], ret );\n\t\t}\n\n\t\treturn len > 1 ? jQuery.uniqueSort( ret ) : ret;\n\t},\n\tfilter: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], false ) );\n\t},\n\tnot: function( selector ) {\n\t\treturn this.pushStack( winnow( this, selector || [], true ) );\n\t},\n\tis: function( selector ) {\n\t\treturn !!winnow(\n\t\t\tthis,\n\n\t\t\t// If this is a positional/relative selector, check membership in the returned set\n\t\t\t// so $(\"p:first\").is(\"p:last\") won't return true for a doc with two \"p\".\n\t\t\ttypeof selector === \"string\" && rneedsContext.test( selector ) ?\n\t\t\t\tjQuery( selector ) :\n\t\t\t\tselector || [],\n\t\t\tfalse\n\t\t).length;\n\t}\n} );\n\n\n// Initialize a jQuery object\n\n\n// A central reference to the root jQuery(document)\nvar rootjQuery,\n\n\t// A simple way to check for HTML strings\n\t// Prioritize #id over to avoid XSS via location.hash (#9521)\n\t// Strict HTML recognition (#11290: must start with <)\n\t// Shortcut simple #id case for speed\n\trquickExpr = /^(?:\\s*(<[\\w\\W]+>)[^>]*|#([\\w-]+))$/,\n\n\tinit = jQuery.fn.init = function( selector, context, root ) {\n\t\tvar match, elem;\n\n\t\t// HANDLE: $(\"\"), $(null), $(undefined), $(false)\n\t\tif ( !selector ) {\n\t\t\treturn this;\n\t\t}\n\n\t\t// Method init() accepts an alternate rootjQuery\n\t\t// so migrate can support jQuery.sub (gh-2101)\n\t\troot = root || rootjQuery;\n\n\t\t// Handle HTML strings\n\t\tif ( typeof selector === \"string\" ) {\n\t\t\tif ( selector[ 0 ] === \"<\" &&\n\t\t\t\tselector[ selector.length - 1 ] === \">\" &&\n\t\t\t\tselector.length >= 3 ) {\n\n\t\t\t\t// Assume that strings that start and end with <> are HTML and skip the regex check\n\t\t\t\tmatch = [ null, selector, null ];\n\n\t\t\t} else {\n\t\t\t\tmatch = rquickExpr.exec( selector );\n\t\t\t}\n\n\t\t\t// Match html or make sure no context is specified for #id\n\t\t\tif ( match && ( match[ 1 ] || !context ) ) {\n\n\t\t\t\t// HANDLE: $(html) -> $(array)\n\t\t\t\tif ( match[ 1 ] ) {\n\t\t\t\t\tcontext = context instanceof jQuery ? context[ 0 ] : context;\n\n\t\t\t\t\t// Option to run scripts is true for back-compat\n\t\t\t\t\t// Intentionally let the error be thrown if parseHTML is not present\n\t\t\t\t\tjQuery.merge( this, jQuery.parseHTML(\n\t\t\t\t\t\tmatch[ 1 ],\n\t\t\t\t\t\tcontext && context.nodeType ? context.ownerDocument || context : document,\n\t\t\t\t\t\ttrue\n\t\t\t\t\t) );\n\n\t\t\t\t\t// HANDLE: $(html, props)\n\t\t\t\t\tif ( rsingleTag.test( match[ 1 ] ) && jQuery.isPlainObject( context ) ) {\n\t\t\t\t\t\tfor ( match in context ) {\n\n\t\t\t\t\t\t\t// Properties of context are called as methods if possible\n\t\t\t\t\t\t\tif ( isFunction( this[ match ] ) ) {\n\t\t\t\t\t\t\t\tthis[ match ]( context[ match ] );\n\n\t\t\t\t\t\t\t// ...and otherwise set as attributes\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tthis.attr( match, context[ match ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\treturn this;\n\n\t\t\t\t// HANDLE: $(#id)\n\t\t\t\t} else {\n\t\t\t\t\telem = document.getElementById( match[ 2 ] );\n\n\t\t\t\t\tif ( elem ) {\n\n\t\t\t\t\t\t// Inject the element directly into the jQuery object\n\t\t\t\t\t\tthis[ 0 ] = elem;\n\t\t\t\t\t\tthis.length = 1;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\n\t\t\t// HANDLE: $(expr, $(...))\n\t\t\t} else if ( !context || context.jquery ) {\n\t\t\t\treturn ( context || root ).find( selector );\n\n\t\t\t// HANDLE: $(expr, context)\n\t\t\t// (which is just equivalent to: $(context).find(expr)\n\t\t\t} else {\n\t\t\t\treturn this.constructor( context ).find( selector );\n\t\t\t}\n\n\t\t// HANDLE: $(DOMElement)\n\t\t} else if ( selector.nodeType ) {\n\t\t\tthis[ 0 ] = selector;\n\t\t\tthis.length = 1;\n\t\t\treturn this;\n\n\t\t// HANDLE: $(function)\n\t\t// Shortcut for document ready\n\t\t} else if ( isFunction( selector ) ) {\n\t\t\treturn root.ready !== undefined ?\n\t\t\t\troot.ready( selector ) :\n\n\t\t\t\t// Execute immediately if ready is not present\n\t\t\t\tselector( jQuery );\n\t\t}\n\n\t\treturn jQuery.makeArray( selector, this );\n\t};\n\n// Give the init function the jQuery prototype for later instantiation\ninit.prototype = jQuery.fn;\n\n// Initialize central reference\nrootjQuery = jQuery( document );\n\n\nvar rparentsprev = /^(?:parents|prev(?:Until|All))/,\n\n\t// Methods guaranteed to produce a unique set when starting from a unique set\n\tguaranteedUnique = {\n\t\tchildren: true,\n\t\tcontents: true,\n\t\tnext: true,\n\t\tprev: true\n\t};\n\njQuery.fn.extend( {\n\thas: function( target ) {\n\t\tvar targets = jQuery( target, this ),\n\t\t\tl = targets.length;\n\n\t\treturn this.filter( function() {\n\t\t\tvar i = 0;\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tif ( jQuery.contains( this, targets[ i ] ) ) {\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\tclosest: function( selectors, context ) {\n\t\tvar cur,\n\t\t\ti = 0,\n\t\t\tl = this.length,\n\t\t\tmatched = [],\n\t\t\ttargets = typeof selectors !== \"string\" && jQuery( selectors );\n\n\t\t// Positional selectors never match, since there's no _selection_ context\n\t\tif ( !rneedsContext.test( selectors ) ) {\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tfor ( cur = this[ i ]; cur && cur !== context; cur = cur.parentNode ) {\n\n\t\t\t\t\t// Always skip document fragments\n\t\t\t\t\tif ( cur.nodeType < 11 && ( targets ?\n\t\t\t\t\t\ttargets.index( cur ) > -1 :\n\n\t\t\t\t\t\t// Don't pass non-elements to Sizzle\n\t\t\t\t\t\tcur.nodeType === 1 &&\n\t\t\t\t\t\t\tjQuery.find.matchesSelector( cur, selectors ) ) ) {\n\n\t\t\t\t\t\tmatched.push( cur );\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched.length > 1 ? jQuery.uniqueSort( matched ) : matched );\n\t},\n\n\t// Determine the position of an element within the set\n\tindex: function( elem ) {\n\n\t\t// No argument, return index in parent\n\t\tif ( !elem ) {\n\t\t\treturn ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;\n\t\t}\n\n\t\t// Index in selector\n\t\tif ( typeof elem === \"string\" ) {\n\t\t\treturn indexOf.call( jQuery( elem ), this[ 0 ] );\n\t\t}\n\n\t\t// Locate the position of the desired element\n\t\treturn indexOf.call( this,\n\n\t\t\t// If it receives a jQuery object, the first element is used\n\t\t\telem.jquery ? elem[ 0 ] : elem\n\t\t);\n\t},\n\n\tadd: function( selector, context ) {\n\t\treturn this.pushStack(\n\t\t\tjQuery.uniqueSort(\n\t\t\t\tjQuery.merge( this.get(), jQuery( selector, context ) )\n\t\t\t)\n\t\t);\n\t},\n\n\taddBack: function( selector ) {\n\t\treturn this.add( selector == null ?\n\t\t\tthis.prevObject : this.prevObject.filter( selector )\n\t\t);\n\t}\n} );\n\nfunction sibling( cur, dir ) {\n\twhile ( ( cur = cur[ dir ] ) && cur.nodeType !== 1 ) {}\n\treturn cur;\n}\n\njQuery.each( {\n\tparent: function( elem ) {\n\t\tvar parent = elem.parentNode;\n\t\treturn parent && parent.nodeType !== 11 ? parent : null;\n\t},\n\tparents: function( elem ) {\n\t\treturn dir( elem, \"parentNode\" );\n\t},\n\tparentsUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"parentNode\", until );\n\t},\n\tnext: function( elem ) {\n\t\treturn sibling( elem, \"nextSibling\" );\n\t},\n\tprev: function( elem ) {\n\t\treturn sibling( elem, \"previousSibling\" );\n\t},\n\tnextAll: function( elem ) {\n\t\treturn dir( elem, \"nextSibling\" );\n\t},\n\tprevAll: function( elem ) {\n\t\treturn dir( elem, \"previousSibling\" );\n\t},\n\tnextUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"nextSibling\", until );\n\t},\n\tprevUntil: function( elem, _i, until ) {\n\t\treturn dir( elem, \"previousSibling\", until );\n\t},\n\tsiblings: function( elem ) {\n\t\treturn siblings( ( elem.parentNode || {} ).firstChild, elem );\n\t},\n\tchildren: function( elem ) {\n\t\treturn siblings( elem.firstChild );\n\t},\n\tcontents: function( elem ) {\n\t\tif ( elem.contentDocument != null &&\n\n\t\t\t// Support: IE 11+\n\t\t\t// elements with no `data` attribute has an object\n\t\t\t// `contentDocument` with a `null` prototype.\n\t\t\tgetProto( elem.contentDocument ) ) {\n\n\t\t\treturn elem.contentDocument;\n\t\t}\n\n\t\t// Support: IE 9 - 11 only, iOS 7 only, Android Browser <=4.3 only\n\t\t// Treat the template element as a regular one in browsers that\n\t\t// don't support it.\n\t\tif ( nodeName( elem, \"template\" ) ) {\n\t\t\telem = elem.content || elem;\n\t\t}\n\n\t\treturn jQuery.merge( [], elem.childNodes );\n\t}\n}, function( name, fn ) {\n\tjQuery.fn[ name ] = function( until, selector ) {\n\t\tvar matched = jQuery.map( this, fn, until );\n\n\t\tif ( name.slice( -5 ) !== \"Until\" ) {\n\t\t\tselector = until;\n\t\t}\n\n\t\tif ( selector && typeof selector === \"string\" ) {\n\t\t\tmatched = jQuery.filter( selector, matched );\n\t\t}\n\n\t\tif ( this.length > 1 ) {\n\n\t\t\t// Remove duplicates\n\t\t\tif ( !guaranteedUnique[ name ] ) {\n\t\t\t\tjQuery.uniqueSort( matched );\n\t\t\t}\n\n\t\t\t// Reverse order for parents* and prev-derivatives\n\t\t\tif ( rparentsprev.test( name ) ) {\n\t\t\t\tmatched.reverse();\n\t\t\t}\n\t\t}\n\n\t\treturn this.pushStack( matched );\n\t};\n} );\nvar rnothtmlwhite = ( /[^\\x20\\t\\r\\n\\f]+/g );\n\n\n\n// Convert String-formatted options into Object-formatted ones\nfunction createOptions( options ) {\n\tvar object = {};\n\tjQuery.each( options.match( rnothtmlwhite ) || [], function( _, flag ) {\n\t\tobject[ flag ] = true;\n\t} );\n\treturn object;\n}\n\n/*\n * Create a callback list using the following parameters:\n *\n *\toptions: an optional list of space-separated options that will change how\n *\t\t\tthe callback list behaves or a more traditional option object\n *\n * By default a callback list will act like an event callback list and can be\n * \"fired\" multiple times.\n *\n * Possible options:\n *\n *\tonce:\t\t\twill ensure the callback list can only be fired once (like a Deferred)\n *\n *\tmemory:\t\t\twill keep track of previous values and will call any callback added\n *\t\t\t\t\tafter the list has been fired right away with the latest \"memorized\"\n *\t\t\t\t\tvalues (like a Deferred)\n *\n *\tunique:\t\t\twill ensure a callback can only be added once (no duplicate in the list)\n *\n *\tstopOnFalse:\tinterrupt callings when a callback returns false\n *\n */\njQuery.Callbacks = function( options ) {\n\n\t// Convert options from String-formatted to Object-formatted if needed\n\t// (we check in cache first)\n\toptions = typeof options === \"string\" ?\n\t\tcreateOptions( options ) :\n\t\tjQuery.extend( {}, options );\n\n\tvar // Flag to know if list is currently firing\n\t\tfiring,\n\n\t\t// Last fire value for non-forgettable lists\n\t\tmemory,\n\n\t\t// Flag to know if list was already fired\n\t\tfired,\n\n\t\t// Flag to prevent firing\n\t\tlocked,\n\n\t\t// Actual callback list\n\t\tlist = [],\n\n\t\t// Queue of execution data for repeatable lists\n\t\tqueue = [],\n\n\t\t// Index of currently firing callback (modified by add/remove as needed)\n\t\tfiringIndex = -1,\n\n\t\t// Fire callbacks\n\t\tfire = function() {\n\n\t\t\t// Enforce single-firing\n\t\t\tlocked = locked || options.once;\n\n\t\t\t// Execute callbacks for all pending executions,\n\t\t\t// respecting firingIndex overrides and runtime changes\n\t\t\tfired = firing = true;\n\t\t\tfor ( ; queue.length; firingIndex = -1 ) {\n\t\t\t\tmemory = queue.shift();\n\t\t\t\twhile ( ++firingIndex < list.length ) {\n\n\t\t\t\t\t// Run callback and check for early termination\n\t\t\t\t\tif ( list[ firingIndex ].apply( memory[ 0 ], memory[ 1 ] ) === false &&\n\t\t\t\t\t\toptions.stopOnFalse ) {\n\n\t\t\t\t\t\t// Jump to end and forget the data so .add doesn't re-fire\n\t\t\t\t\t\tfiringIndex = list.length;\n\t\t\t\t\t\tmemory = false;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Forget the data if we're done with it\n\t\t\tif ( !options.memory ) {\n\t\t\t\tmemory = false;\n\t\t\t}\n\n\t\t\tfiring = false;\n\n\t\t\t// Clean up if we're done firing for good\n\t\t\tif ( locked ) {\n\n\t\t\t\t// Keep an empty list if we have data for future add calls\n\t\t\t\tif ( memory ) {\n\t\t\t\t\tlist = [];\n\n\t\t\t\t// Otherwise, this object is spent\n\t\t\t\t} else {\n\t\t\t\t\tlist = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t},\n\n\t\t// Actual Callbacks object\n\t\tself = {\n\n\t\t\t// Add a callback or a collection of callbacks to the list\n\t\t\tadd: function() {\n\t\t\t\tif ( list ) {\n\n\t\t\t\t\t// If we have memory from a past run, we should fire after adding\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfiringIndex = list.length - 1;\n\t\t\t\t\t\tqueue.push( memory );\n\t\t\t\t\t}\n\n\t\t\t\t\t( function add( args ) {\n\t\t\t\t\t\tjQuery.each( args, function( _, arg ) {\n\t\t\t\t\t\t\tif ( isFunction( arg ) ) {\n\t\t\t\t\t\t\t\tif ( !options.unique || !self.has( arg ) ) {\n\t\t\t\t\t\t\t\t\tlist.push( arg );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else if ( arg && arg.length && toType( arg ) !== \"string\" ) {\n\n\t\t\t\t\t\t\t\t// Inspect recursively\n\t\t\t\t\t\t\t\tadd( arg );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} );\n\t\t\t\t\t} )( arguments );\n\n\t\t\t\t\tif ( memory && !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Remove a callback from the list\n\t\t\tremove: function() {\n\t\t\t\tjQuery.each( arguments, function( _, arg ) {\n\t\t\t\t\tvar index;\n\t\t\t\t\twhile ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {\n\t\t\t\t\t\tlist.splice( index, 1 );\n\n\t\t\t\t\t\t// Handle firing indexes\n\t\t\t\t\t\tif ( index <= firingIndex ) {\n\t\t\t\t\t\t\tfiringIndex--;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Check if a given callback is in the list.\n\t\t\t// If no argument is given, return whether or not list has callbacks attached.\n\t\t\thas: function( fn ) {\n\t\t\t\treturn fn ?\n\t\t\t\t\tjQuery.inArray( fn, list ) > -1 :\n\t\t\t\t\tlist.length > 0;\n\t\t\t},\n\n\t\t\t// Remove all callbacks from the list\n\t\t\tempty: function() {\n\t\t\t\tif ( list ) {\n\t\t\t\t\tlist = [];\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Disable .fire and .add\n\t\t\t// Abort any current/pending executions\n\t\t\t// Clear all callbacks and values\n\t\t\tdisable: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tlist = memory = \"\";\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tdisabled: function() {\n\t\t\t\treturn !list;\n\t\t\t},\n\n\t\t\t// Disable .fire\n\t\t\t// Also disable .add unless we have memory (since it would have no effect)\n\t\t\t// Abort any pending executions\n\t\t\tlock: function() {\n\t\t\t\tlocked = queue = [];\n\t\t\t\tif ( !memory && !firing ) {\n\t\t\t\t\tlist = memory = \"\";\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\t\t\tlocked: function() {\n\t\t\t\treturn !!locked;\n\t\t\t},\n\n\t\t\t// Call all callbacks with the given context and arguments\n\t\t\tfireWith: function( context, args ) {\n\t\t\t\tif ( !locked ) {\n\t\t\t\t\targs = args || [];\n\t\t\t\t\targs = [ context, args.slice ? args.slice() : args ];\n\t\t\t\t\tqueue.push( args );\n\t\t\t\t\tif ( !firing ) {\n\t\t\t\t\t\tfire();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// Call all the callbacks with the given arguments\n\t\t\tfire: function() {\n\t\t\t\tself.fireWith( this, arguments );\n\t\t\t\treturn this;\n\t\t\t},\n\n\t\t\t// To know if the callbacks have already been called at least once\n\t\t\tfired: function() {\n\t\t\t\treturn !!fired;\n\t\t\t}\n\t\t};\n\n\treturn self;\n};\n\n\nfunction Identity( v ) {\n\treturn v;\n}\nfunction Thrower( ex ) {\n\tthrow ex;\n}\n\nfunction adoptValue( value, resolve, reject, noValue ) {\n\tvar method;\n\n\ttry {\n\n\t\t// Check for promise aspect first to privilege synchronous behavior\n\t\tif ( value && isFunction( ( method = value.promise ) ) ) {\n\t\t\tmethod.call( value ).done( resolve ).fail( reject );\n\n\t\t// Other thenables\n\t\t} else if ( value && isFunction( ( method = value.then ) ) ) {\n\t\t\tmethod.call( value, resolve, reject );\n\n\t\t// Other non-thenables\n\t\t} else {\n\n\t\t\t// Control `resolve` arguments by letting Array#slice cast boolean `noValue` to integer:\n\t\t\t// * false: [ value ].slice( 0 ) => resolve( value )\n\t\t\t// * true: [ value ].slice( 1 ) => resolve()\n\t\t\tresolve.apply( undefined, [ value ].slice( noValue ) );\n\t\t}\n\n\t// For Promises/A+, convert exceptions into rejections\n\t// Since jQuery.when doesn't unwrap thenables, we can skip the extra checks appearing in\n\t// Deferred#then to conditionally suppress rejection.\n\t} catch ( value ) {\n\n\t\t// Support: Android 4.0 only\n\t\t// Strict mode functions invoked without .call/.apply get global-object context\n\t\treject.apply( undefined, [ value ] );\n\t}\n}\n\njQuery.extend( {\n\n\tDeferred: function( func ) {\n\t\tvar tuples = [\n\n\t\t\t\t// action, add listener, callbacks,\n\t\t\t\t// ... .then handlers, argument index, [final state]\n\t\t\t\t[ \"notify\", \"progress\", jQuery.Callbacks( \"memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"memory\" ), 2 ],\n\t\t\t\t[ \"resolve\", \"done\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 0, \"resolved\" ],\n\t\t\t\t[ \"reject\", \"fail\", jQuery.Callbacks( \"once memory\" ),\n\t\t\t\t\tjQuery.Callbacks( \"once memory\" ), 1, \"rejected\" ]\n\t\t\t],\n\t\t\tstate = \"pending\",\n\t\t\tpromise = {\n\t\t\t\tstate: function() {\n\t\t\t\t\treturn state;\n\t\t\t\t},\n\t\t\t\talways: function() {\n\t\t\t\t\tdeferred.done( arguments ).fail( arguments );\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\t\t\t\t\"catch\": function( fn ) {\n\t\t\t\t\treturn promise.then( null, fn );\n\t\t\t\t},\n\n\t\t\t\t// Keep pipe for back-compat\n\t\t\t\tpipe: function( /* fnDone, fnFail, fnProgress */ ) {\n\t\t\t\t\tvar fns = arguments;\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\t\t\t\t\t\tjQuery.each( tuples, function( _i, tuple ) {\n\n\t\t\t\t\t\t\t// Map tuples (progress, done, fail) to arguments (done, fail, progress)\n\t\t\t\t\t\t\tvar fn = isFunction( fns[ tuple[ 4 ] ] ) && fns[ tuple[ 4 ] ];\n\n\t\t\t\t\t\t\t// deferred.progress(function() { bind to newDefer or newDefer.notify })\n\t\t\t\t\t\t\t// deferred.done(function() { bind to newDefer or newDefer.resolve })\n\t\t\t\t\t\t\t// deferred.fail(function() { bind to newDefer or newDefer.reject })\n\t\t\t\t\t\t\tdeferred[ tuple[ 1 ] ]( function() {\n\t\t\t\t\t\t\t\tvar returned = fn && fn.apply( this, arguments );\n\t\t\t\t\t\t\t\tif ( returned && isFunction( returned.promise ) ) {\n\t\t\t\t\t\t\t\t\treturned.promise()\n\t\t\t\t\t\t\t\t\t\t.progress( newDefer.notify )\n\t\t\t\t\t\t\t\t\t\t.done( newDefer.resolve )\n\t\t\t\t\t\t\t\t\t\t.fail( newDefer.reject );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tnewDefer[ tuple[ 0 ] + \"With\" ](\n\t\t\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\t\t\tfn ? [ returned ] : arguments\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t} );\n\t\t\t\t\t\tfns = null;\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\t\t\t\tthen: function( onFulfilled, onRejected, onProgress ) {\n\t\t\t\t\tvar maxDepth = 0;\n\t\t\t\t\tfunction resolve( depth, deferred, handler, special ) {\n\t\t\t\t\t\treturn function() {\n\t\t\t\t\t\t\tvar that = this,\n\t\t\t\t\t\t\t\targs = arguments,\n\t\t\t\t\t\t\t\tmightThrow = function() {\n\t\t\t\t\t\t\t\t\tvar returned, then;\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.3\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-59\n\t\t\t\t\t\t\t\t\t// Ignore double-resolution attempts\n\t\t\t\t\t\t\t\t\tif ( depth < maxDepth ) {\n\t\t\t\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\treturned = handler.apply( that, args );\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.1\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-48\n\t\t\t\t\t\t\t\t\tif ( returned === deferred.promise() ) {\n\t\t\t\t\t\t\t\t\t\tthrow new TypeError( \"Thenable self-resolution\" );\n\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Support: Promises/A+ sections 2.3.3.1, 3.5\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-54\n\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-75\n\t\t\t\t\t\t\t\t\t// Retrieve `then` only once\n\t\t\t\t\t\t\t\t\tthen = returned &&\n\n\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.4\n\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-64\n\t\t\t\t\t\t\t\t\t\t// Only check objects and functions for thenability\n\t\t\t\t\t\t\t\t\t\t( typeof returned === \"object\" ||\n\t\t\t\t\t\t\t\t\t\t\ttypeof returned === \"function\" ) &&\n\t\t\t\t\t\t\t\t\t\treturned.then;\n\n\t\t\t\t\t\t\t\t\t// Handle a returned thenable\n\t\t\t\t\t\t\t\t\tif ( isFunction( then ) ) {\n\n\t\t\t\t\t\t\t\t\t\t// Special processors (notify) just wait for resolution\n\t\t\t\t\t\t\t\t\t\tif ( special ) {\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special )\n\t\t\t\t\t\t\t\t\t\t\t);\n\n\t\t\t\t\t\t\t\t\t\t// Normal processors (resolve) also hook into progress\n\t\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t\t// ...and disregard older resolution values\n\t\t\t\t\t\t\t\t\t\t\tmaxDepth++;\n\n\t\t\t\t\t\t\t\t\t\t\tthen.call(\n\t\t\t\t\t\t\t\t\t\t\t\treturned,\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Thrower, special ),\n\t\t\t\t\t\t\t\t\t\t\t\tresolve( maxDepth, deferred, Identity,\n\t\t\t\t\t\t\t\t\t\t\t\t\tdeferred.notifyWith )\n\t\t\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t// Handle all other returned values\n\t\t\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\tif ( handler !== Identity ) {\n\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\targs = [ returned ];\n\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t// Process the value(s)\n\t\t\t\t\t\t\t\t\t\t// Default process is resolve\n\t\t\t\t\t\t\t\t\t\t( special || deferred.resolveWith )( that, args );\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t},\n\n\t\t\t\t\t\t\t\t// Only normal processors (resolve) catch and reject exceptions\n\t\t\t\t\t\t\t\tprocess = special ?\n\t\t\t\t\t\t\t\t\tmightThrow :\n\t\t\t\t\t\t\t\t\tfunction() {\n\t\t\t\t\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\t\t\t\t\tmightThrow();\n\t\t\t\t\t\t\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t\t\t\t\t\t\tif ( jQuery.Deferred.exceptionHook ) {\n\t\t\t\t\t\t\t\t\t\t\t\tjQuery.Deferred.exceptionHook( e,\n\t\t\t\t\t\t\t\t\t\t\t\t\tprocess.stackTrace );\n\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.4.1\n\t\t\t\t\t\t\t\t\t\t\t// https://promisesaplus.com/#point-61\n\t\t\t\t\t\t\t\t\t\t\t// Ignore post-resolution exceptions\n\t\t\t\t\t\t\t\t\t\t\tif ( depth + 1 >= maxDepth ) {\n\n\t\t\t\t\t\t\t\t\t\t\t\t// Only substitute handlers pass on context\n\t\t\t\t\t\t\t\t\t\t\t\t// and multiple values (non-spec behavior)\n\t\t\t\t\t\t\t\t\t\t\t\tif ( handler !== Thrower ) {\n\t\t\t\t\t\t\t\t\t\t\t\t\tthat = undefined;\n\t\t\t\t\t\t\t\t\t\t\t\t\targs = [ e ];\n\t\t\t\t\t\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\t\t\t\t\t\tdeferred.rejectWith( that, args );\n\t\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t\t};\n\n\t\t\t\t\t\t\t// Support: Promises/A+ section 2.3.3.3.1\n\t\t\t\t\t\t\t// https://promisesaplus.com/#point-57\n\t\t\t\t\t\t\t// Re-resolve promises immediately to dodge false rejection from\n\t\t\t\t\t\t\t// subsequent errors\n\t\t\t\t\t\t\tif ( depth ) {\n\t\t\t\t\t\t\t\tprocess();\n\t\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t\t// Call an optional hook to record the stack, in case of exception\n\t\t\t\t\t\t\t\t// since it's otherwise lost when execution goes async\n\t\t\t\t\t\t\t\tif ( jQuery.Deferred.getStackHook ) {\n\t\t\t\t\t\t\t\t\tprocess.stackTrace = jQuery.Deferred.getStackHook();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\twindow.setTimeout( process );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t};\n\t\t\t\t\t}\n\n\t\t\t\t\treturn jQuery.Deferred( function( newDefer ) {\n\n\t\t\t\t\t\t// progress_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 0 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onProgress ) ?\n\t\t\t\t\t\t\t\t\tonProgress :\n\t\t\t\t\t\t\t\t\tIdentity,\n\t\t\t\t\t\t\t\tnewDefer.notifyWith\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// fulfilled_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 1 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onFulfilled ) ?\n\t\t\t\t\t\t\t\t\tonFulfilled :\n\t\t\t\t\t\t\t\t\tIdentity\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\t// rejected_handlers.add( ... )\n\t\t\t\t\t\ttuples[ 2 ][ 3 ].add(\n\t\t\t\t\t\t\tresolve(\n\t\t\t\t\t\t\t\t0,\n\t\t\t\t\t\t\t\tnewDefer,\n\t\t\t\t\t\t\t\tisFunction( onRejected ) ?\n\t\t\t\t\t\t\t\t\tonRejected :\n\t\t\t\t\t\t\t\t\tThrower\n\t\t\t\t\t\t\t)\n\t\t\t\t\t\t);\n\t\t\t\t\t} ).promise();\n\t\t\t\t},\n\n\t\t\t\t// Get a promise for this deferred\n\t\t\t\t// If obj is provided, the promise aspect is added to the object\n\t\t\t\tpromise: function( obj ) {\n\t\t\t\t\treturn obj != null ? jQuery.extend( obj, promise ) : promise;\n\t\t\t\t}\n\t\t\t},\n\t\t\tdeferred = {};\n\n\t\t// Add list-specific methods\n\t\tjQuery.each( tuples, function( i, tuple ) {\n\t\t\tvar list = tuple[ 2 ],\n\t\t\t\tstateString = tuple[ 5 ];\n\n\t\t\t// promise.progress = list.add\n\t\t\t// promise.done = list.add\n\t\t\t// promise.fail = list.add\n\t\t\tpromise[ tuple[ 1 ] ] = list.add;\n\n\t\t\t// Handle state\n\t\t\tif ( stateString ) {\n\t\t\t\tlist.add(\n\t\t\t\t\tfunction() {\n\n\t\t\t\t\t\t// state = \"resolved\" (i.e., fulfilled)\n\t\t\t\t\t\t// state = \"rejected\"\n\t\t\t\t\t\tstate = stateString;\n\t\t\t\t\t},\n\n\t\t\t\t\t// rejected_callbacks.disable\n\t\t\t\t\t// fulfilled_callbacks.disable\n\t\t\t\t\ttuples[ 3 - i ][ 2 ].disable,\n\n\t\t\t\t\t// rejected_handlers.disable\n\t\t\t\t\t// fulfilled_handlers.disable\n\t\t\t\t\ttuples[ 3 - i ][ 3 ].disable,\n\n\t\t\t\t\t// progress_callbacks.lock\n\t\t\t\t\ttuples[ 0 ][ 2 ].lock,\n\n\t\t\t\t\t// progress_handlers.lock\n\t\t\t\t\ttuples[ 0 ][ 3 ].lock\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// progress_handlers.fire\n\t\t\t// fulfilled_handlers.fire\n\t\t\t// rejected_handlers.fire\n\t\t\tlist.add( tuple[ 3 ].fire );\n\n\t\t\t// deferred.notify = function() { deferred.notifyWith(...) }\n\t\t\t// deferred.resolve = function() { deferred.resolveWith(...) }\n\t\t\t// deferred.reject = function() { deferred.rejectWith(...) }\n\t\t\tdeferred[ tuple[ 0 ] ] = function() {\n\t\t\t\tdeferred[ tuple[ 0 ] + \"With\" ]( this === deferred ? undefined : this, arguments );\n\t\t\t\treturn this;\n\t\t\t};\n\n\t\t\t// deferred.notifyWith = list.fireWith\n\t\t\t// deferred.resolveWith = list.fireWith\n\t\t\t// deferred.rejectWith = list.fireWith\n\t\t\tdeferred[ tuple[ 0 ] + \"With\" ] = list.fireWith;\n\t\t} );\n\n\t\t// Make the deferred a promise\n\t\tpromise.promise( deferred );\n\n\t\t// Call given func if any\n\t\tif ( func ) {\n\t\t\tfunc.call( deferred, deferred );\n\t\t}\n\n\t\t// All done!\n\t\treturn deferred;\n\t},\n\n\t// Deferred helper\n\twhen: function( singleValue ) {\n\t\tvar\n\n\t\t\t// count of uncompleted subordinates\n\t\t\tremaining = arguments.length,\n\n\t\t\t// count of unprocessed arguments\n\t\t\ti = remaining,\n\n\t\t\t// subordinate fulfillment data\n\t\t\tresolveContexts = Array( i ),\n\t\t\tresolveValues = slice.call( arguments ),\n\n\t\t\t// the primary Deferred\n\t\t\tprimary = jQuery.Deferred(),\n\n\t\t\t// subordinate callback factory\n\t\t\tupdateFunc = function( i ) {\n\t\t\t\treturn function( value ) {\n\t\t\t\t\tresolveContexts[ i ] = this;\n\t\t\t\t\tresolveValues[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;\n\t\t\t\t\tif ( !( --remaining ) ) {\n\t\t\t\t\t\tprimary.resolveWith( resolveContexts, resolveValues );\n\t\t\t\t\t}\n\t\t\t\t};\n\t\t\t};\n\n\t\t// Single- and empty arguments are adopted like Promise.resolve\n\t\tif ( remaining <= 1 ) {\n\t\t\tadoptValue( singleValue, primary.done( updateFunc( i ) ).resolve, primary.reject,\n\t\t\t\t!remaining );\n\n\t\t\t// Use .then() to unwrap secondary thenables (cf. gh-3000)\n\t\t\tif ( primary.state() === \"pending\" ||\n\t\t\t\tisFunction( resolveValues[ i ] && resolveValues[ i ].then ) ) {\n\n\t\t\t\treturn primary.then();\n\t\t\t}\n\t\t}\n\n\t\t// Multiple arguments are aggregated like Promise.all array elements\n\t\twhile ( i-- ) {\n\t\t\tadoptValue( resolveValues[ i ], updateFunc( i ), primary.reject );\n\t\t}\n\n\t\treturn primary.promise();\n\t}\n} );\n\n\n// These usually indicate a programmer mistake during development,\n// warn about them ASAP rather than swallowing them by default.\nvar rerrorNames = /^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;\n\njQuery.Deferred.exceptionHook = function( error, stack ) {\n\n\t// Support: IE 8 - 9 only\n\t// Console exists when dev tools are open, which can happen at any time\n\tif ( window.console && window.console.warn && error && rerrorNames.test( error.name ) ) {\n\t\twindow.console.warn( \"jQuery.Deferred exception: \" + error.message, error.stack, stack );\n\t}\n};\n\n\n\n\njQuery.readyException = function( error ) {\n\twindow.setTimeout( function() {\n\t\tthrow error;\n\t} );\n};\n\n\n\n\n// The deferred used on DOM ready\nvar readyList = jQuery.Deferred();\n\njQuery.fn.ready = function( fn ) {\n\n\treadyList\n\t\t.then( fn )\n\n\t\t// Wrap jQuery.readyException in a function so that the lookup\n\t\t// happens at the time of error handling instead of callback\n\t\t// registration.\n\t\t.catch( function( error ) {\n\t\t\tjQuery.readyException( error );\n\t\t} );\n\n\treturn this;\n};\n\njQuery.extend( {\n\n\t// Is the DOM ready to be used? Set to true once it occurs.\n\tisReady: false,\n\n\t// A counter to track how many items to wait for before\n\t// the ready event fires. See #6781\n\treadyWait: 1,\n\n\t// Handle when the DOM is ready\n\tready: function( wait ) {\n\n\t\t// Abort if there are pending holds or we're already ready\n\t\tif ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Remember that the DOM is ready\n\t\tjQuery.isReady = true;\n\n\t\t// If a normal DOM Ready event fired, decrement, and wait if need be\n\t\tif ( wait !== true && --jQuery.readyWait > 0 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// If there are functions bound, to execute\n\t\treadyList.resolveWith( document, [ jQuery ] );\n\t}\n} );\n\njQuery.ready.then = readyList.then;\n\n// The ready event handler and self cleanup method\nfunction completed() {\n\tdocument.removeEventListener( \"DOMContentLoaded\", completed );\n\twindow.removeEventListener( \"load\", completed );\n\tjQuery.ready();\n}\n\n// Catch cases where $(document).ready() is called\n// after the browser event has already occurred.\n// Support: IE <=9 - 10 only\n// Older IE sometimes signals \"interactive\" too soon\nif ( document.readyState === \"complete\" ||\n\t( document.readyState !== \"loading\" && !document.documentElement.doScroll ) ) {\n\n\t// Handle it asynchronously to allow scripts the opportunity to delay ready\n\twindow.setTimeout( jQuery.ready );\n\n} else {\n\n\t// Use the handy event callback\n\tdocument.addEventListener( \"DOMContentLoaded\", completed );\n\n\t// A fallback to window.onload, that will always work\n\twindow.addEventListener( \"load\", completed );\n}\n\n\n\n\n// Multifunctional method to get and set values of a collection\n// The value/s can optionally be executed if it's a function\nvar access = function( elems, fn, key, value, chainable, emptyGet, raw ) {\n\tvar i = 0,\n\t\tlen = elems.length,\n\t\tbulk = key == null;\n\n\t// Sets many values\n\tif ( toType( key ) === \"object\" ) {\n\t\tchainable = true;\n\t\tfor ( i in key ) {\n\t\t\taccess( elems, fn, i, key[ i ], true, emptyGet, raw );\n\t\t}\n\n\t// Sets one value\n\t} else if ( value !== undefined ) {\n\t\tchainable = true;\n\n\t\tif ( !isFunction( value ) ) {\n\t\t\traw = true;\n\t\t}\n\n\t\tif ( bulk ) {\n\n\t\t\t// Bulk operations run against the entire set\n\t\t\tif ( raw ) {\n\t\t\t\tfn.call( elems, value );\n\t\t\t\tfn = null;\n\n\t\t\t// ...except when executing function values\n\t\t\t} else {\n\t\t\t\tbulk = fn;\n\t\t\t\tfn = function( elem, _key, value ) {\n\t\t\t\t\treturn bulk.call( jQuery( elem ), value );\n\t\t\t\t};\n\t\t\t}\n\t\t}\n\n\t\tif ( fn ) {\n\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\tfn(\n\t\t\t\t\telems[ i ], key, raw ?\n\t\t\t\t\t\tvalue :\n\t\t\t\t\t\tvalue.call( elems[ i ], i, fn( elems[ i ], key ) )\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( chainable ) {\n\t\treturn elems;\n\t}\n\n\t// Gets\n\tif ( bulk ) {\n\t\treturn fn.call( elems );\n\t}\n\n\treturn len ? fn( elems[ 0 ], key ) : emptyGet;\n};\n\n\n// Matches dashed string for camelizing\nvar rmsPrefix = /^-ms-/,\n\trdashAlpha = /-([a-z])/g;\n\n// Used by camelCase as callback to replace()\nfunction fcamelCase( _all, letter ) {\n\treturn letter.toUpperCase();\n}\n\n// Convert dashed to camelCase; used by the css and data modules\n// Support: IE <=9 - 11, Edge 12 - 15\n// Microsoft forgot to hump their vendor prefix (#9572)\nfunction camelCase( string ) {\n\treturn string.replace( rmsPrefix, \"ms-\" ).replace( rdashAlpha, fcamelCase );\n}\nvar acceptData = function( owner ) {\n\n\t// Accepts only:\n\t// - Node\n\t// - Node.ELEMENT_NODE\n\t// - Node.DOCUMENT_NODE\n\t// - Object\n\t// - Any\n\treturn owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );\n};\n\n\n\n\nfunction Data() {\n\tthis.expando = jQuery.expando + Data.uid++;\n}\n\nData.uid = 1;\n\nData.prototype = {\n\n\tcache: function( owner ) {\n\n\t\t// Check if the owner object already has a cache\n\t\tvar value = owner[ this.expando ];\n\n\t\t// If not, create one\n\t\tif ( !value ) {\n\t\t\tvalue = {};\n\n\t\t\t// We can accept data for non-element nodes in modern browsers,\n\t\t\t// but we should not, see #8335.\n\t\t\t// Always return an empty object.\n\t\t\tif ( acceptData( owner ) ) {\n\n\t\t\t\t// If it is a node unlikely to be stringify-ed or looped over\n\t\t\t\t// use plain assignment\n\t\t\t\tif ( owner.nodeType ) {\n\t\t\t\t\towner[ this.expando ] = value;\n\n\t\t\t\t// Otherwise secure it in a non-enumerable property\n\t\t\t\t// configurable must be true to allow the property to be\n\t\t\t\t// deleted when data is removed\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty( owner, this.expando, {\n\t\t\t\t\t\tvalue: value,\n\t\t\t\t\t\tconfigurable: true\n\t\t\t\t\t} );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn value;\n\t},\n\tset: function( owner, data, value ) {\n\t\tvar prop,\n\t\t\tcache = this.cache( owner );\n\n\t\t// Handle: [ owner, key, value ] args\n\t\t// Always use camelCase key (gh-2257)\n\t\tif ( typeof data === \"string\" ) {\n\t\t\tcache[ camelCase( data ) ] = value;\n\n\t\t// Handle: [ owner, { properties } ] args\n\t\t} else {\n\n\t\t\t// Copy the properties one-by-one to the cache object\n\t\t\tfor ( prop in data ) {\n\t\t\t\tcache[ camelCase( prop ) ] = data[ prop ];\n\t\t\t}\n\t\t}\n\t\treturn cache;\n\t},\n\tget: function( owner, key ) {\n\t\treturn key === undefined ?\n\t\t\tthis.cache( owner ) :\n\n\t\t\t// Always use camelCase key (gh-2257)\n\t\t\towner[ this.expando ] && owner[ this.expando ][ camelCase( key ) ];\n\t},\n\taccess: function( owner, key, value ) {\n\n\t\t// In cases where either:\n\t\t//\n\t\t// 1. No key was specified\n\t\t// 2. A string key was specified, but no value provided\n\t\t//\n\t\t// Take the \"read\" path and allow the get method to determine\n\t\t// which value to return, respectively either:\n\t\t//\n\t\t// 1. The entire cache object\n\t\t// 2. The data stored at the key\n\t\t//\n\t\tif ( key === undefined ||\n\t\t\t\t( ( key && typeof key === \"string\" ) && value === undefined ) ) {\n\n\t\t\treturn this.get( owner, key );\n\t\t}\n\n\t\t// When the key is not a string, or both a key and value\n\t\t// are specified, set or extend (existing objects) with either:\n\t\t//\n\t\t// 1. An object of properties\n\t\t// 2. A key and value\n\t\t//\n\t\tthis.set( owner, key, value );\n\n\t\t// Since the \"set\" path can have two possible entry points\n\t\t// return the expected data based on which path was taken[*]\n\t\treturn value !== undefined ? value : key;\n\t},\n\tremove: function( owner, key ) {\n\t\tvar i,\n\t\t\tcache = owner[ this.expando ];\n\n\t\tif ( cache === undefined ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( key !== undefined ) {\n\n\t\t\t// Support array or space separated string of keys\n\t\t\tif ( Array.isArray( key ) ) {\n\n\t\t\t\t// If key is an array of keys...\n\t\t\t\t// We always set camelCase keys, so remove that.\n\t\t\t\tkey = key.map( camelCase );\n\t\t\t} else {\n\t\t\t\tkey = camelCase( key );\n\n\t\t\t\t// If a key with the spaces exists, use it.\n\t\t\t\t// Otherwise, create an array by matching non-whitespace\n\t\t\t\tkey = key in cache ?\n\t\t\t\t\t[ key ] :\n\t\t\t\t\t( key.match( rnothtmlwhite ) || [] );\n\t\t\t}\n\n\t\t\ti = key.length;\n\n\t\t\twhile ( i-- ) {\n\t\t\t\tdelete cache[ key[ i ] ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove the expando if there's no more data\n\t\tif ( key === undefined || jQuery.isEmptyObject( cache ) ) {\n\n\t\t\t// Support: Chrome <=35 - 45\n\t\t\t// Webkit & Blink performance suffers when deleting properties\n\t\t\t// from DOM nodes, so set to undefined instead\n\t\t\t// https://bugs.chromium.org/p/chromium/issues/detail?id=378607 (bug restricted)\n\t\t\tif ( owner.nodeType ) {\n\t\t\t\towner[ this.expando ] = undefined;\n\t\t\t} else {\n\t\t\t\tdelete owner[ this.expando ];\n\t\t\t}\n\t\t}\n\t},\n\thasData: function( owner ) {\n\t\tvar cache = owner[ this.expando ];\n\t\treturn cache !== undefined && !jQuery.isEmptyObject( cache );\n\t}\n};\nvar dataPriv = new Data();\n\nvar dataUser = new Data();\n\n\n\n//\tImplementation Summary\n//\n//\t1. Enforce API surface and semantic compatibility with 1.9.x branch\n//\t2. Improve the module's maintainability by reducing the storage\n//\t\tpaths to a single mechanism.\n//\t3. Use the same single mechanism to support \"private\" and \"user\" data.\n//\t4. _Never_ expose \"private\" data to user code (TODO: Drop _data, _removeData)\n//\t5. Avoid exposing implementation details on user objects (eg. expando properties)\n//\t6. Provide a clear path for implementation upgrade to WeakMap in 2014\n\nvar rbrace = /^(?:\\{[\\w\\W]*\\}|\\[[\\w\\W]*\\])$/,\n\trmultiDash = /[A-Z]/g;\n\nfunction getData( data ) {\n\tif ( data === \"true\" ) {\n\t\treturn true;\n\t}\n\n\tif ( data === \"false\" ) {\n\t\treturn false;\n\t}\n\n\tif ( data === \"null\" ) {\n\t\treturn null;\n\t}\n\n\t// Only convert to a number if it doesn't change the string\n\tif ( data === +data + \"\" ) {\n\t\treturn +data;\n\t}\n\n\tif ( rbrace.test( data ) ) {\n\t\treturn JSON.parse( data );\n\t}\n\n\treturn data;\n}\n\nfunction dataAttr( elem, key, data ) {\n\tvar name;\n\n\t// If nothing was found internally, try to fetch any\n\t// data from the HTML5 data-* attribute\n\tif ( data === undefined && elem.nodeType === 1 ) {\n\t\tname = \"data-\" + key.replace( rmultiDash, \"-$&\" ).toLowerCase();\n\t\tdata = elem.getAttribute( name );\n\n\t\tif ( typeof data === \"string\" ) {\n\t\t\ttry {\n\t\t\t\tdata = getData( data );\n\t\t\t} catch ( e ) {}\n\n\t\t\t// Make sure we set the data so it isn't changed later\n\t\t\tdataUser.set( elem, key, data );\n\t\t} else {\n\t\t\tdata = undefined;\n\t\t}\n\t}\n\treturn data;\n}\n\njQuery.extend( {\n\thasData: function( elem ) {\n\t\treturn dataUser.hasData( elem ) || dataPriv.hasData( elem );\n\t},\n\n\tdata: function( elem, name, data ) {\n\t\treturn dataUser.access( elem, name, data );\n\t},\n\n\tremoveData: function( elem, name ) {\n\t\tdataUser.remove( elem, name );\n\t},\n\n\t// TODO: Now that all calls to _data and _removeData have been replaced\n\t// with direct calls to dataPriv methods, these can be deprecated.\n\t_data: function( elem, name, data ) {\n\t\treturn dataPriv.access( elem, name, data );\n\t},\n\n\t_removeData: function( elem, name ) {\n\t\tdataPriv.remove( elem, name );\n\t}\n} );\n\njQuery.fn.extend( {\n\tdata: function( key, value ) {\n\t\tvar i, name, data,\n\t\t\telem = this[ 0 ],\n\t\t\tattrs = elem && elem.attributes;\n\n\t\t// Gets all values\n\t\tif ( key === undefined ) {\n\t\t\tif ( this.length ) {\n\t\t\t\tdata = dataUser.get( elem );\n\n\t\t\t\tif ( elem.nodeType === 1 && !dataPriv.get( elem, \"hasDataAttrs\" ) ) {\n\t\t\t\t\ti = attrs.length;\n\t\t\t\t\twhile ( i-- ) {\n\n\t\t\t\t\t\t// Support: IE 11 only\n\t\t\t\t\t\t// The attrs elements can be null (#14894)\n\t\t\t\t\t\tif ( attrs[ i ] ) {\n\t\t\t\t\t\t\tname = attrs[ i ].name;\n\t\t\t\t\t\t\tif ( name.indexOf( \"data-\" ) === 0 ) {\n\t\t\t\t\t\t\t\tname = camelCase( name.slice( 5 ) );\n\t\t\t\t\t\t\t\tdataAttr( elem, name, data[ name ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tdataPriv.set( elem, \"hasDataAttrs\", true );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\treturn data;\n\t\t}\n\n\t\t// Sets multiple values\n\t\tif ( typeof key === \"object\" ) {\n\t\t\treturn this.each( function() {\n\t\t\t\tdataUser.set( this, key );\n\t\t\t} );\n\t\t}\n\n\t\treturn access( this, function( value ) {\n\t\t\tvar data;\n\n\t\t\t// The calling jQuery object (element matches) is not empty\n\t\t\t// (and therefore has an element appears at this[ 0 ]) and the\n\t\t\t// `value` parameter was not undefined. An empty jQuery object\n\t\t\t// will result in `undefined` for elem = this[ 0 ] which will\n\t\t\t// throw an exception if an attempt to read a data cache is made.\n\t\t\tif ( elem && value === undefined ) {\n\n\t\t\t\t// Attempt to get data from the cache\n\t\t\t\t// The key will always be camelCased in Data\n\t\t\t\tdata = dataUser.get( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// Attempt to \"discover\" the data in\n\t\t\t\t// HTML5 custom data-* attrs\n\t\t\t\tdata = dataAttr( elem, key );\n\t\t\t\tif ( data !== undefined ) {\n\t\t\t\t\treturn data;\n\t\t\t\t}\n\n\t\t\t\t// We tried really hard, but the data doesn't exist.\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Set the data...\n\t\t\tthis.each( function() {\n\n\t\t\t\t// We always store the camelCased key\n\t\t\t\tdataUser.set( this, key, value );\n\t\t\t} );\n\t\t}, null, value, arguments.length > 1, null, true );\n\t},\n\n\tremoveData: function( key ) {\n\t\treturn this.each( function() {\n\t\t\tdataUser.remove( this, key );\n\t\t} );\n\t}\n} );\n\n\njQuery.extend( {\n\tqueue: function( elem, type, data ) {\n\t\tvar queue;\n\n\t\tif ( elem ) {\n\t\t\ttype = ( type || \"fx\" ) + \"queue\";\n\t\t\tqueue = dataPriv.get( elem, type );\n\n\t\t\t// Speed up dequeue by getting out quickly if this is just a lookup\n\t\t\tif ( data ) {\n\t\t\t\tif ( !queue || Array.isArray( data ) ) {\n\t\t\t\t\tqueue = dataPriv.access( elem, type, jQuery.makeArray( data ) );\n\t\t\t\t} else {\n\t\t\t\t\tqueue.push( data );\n\t\t\t\t}\n\t\t\t}\n\t\t\treturn queue || [];\n\t\t}\n\t},\n\n\tdequeue: function( elem, type ) {\n\t\ttype = type || \"fx\";\n\n\t\tvar queue = jQuery.queue( elem, type ),\n\t\t\tstartLength = queue.length,\n\t\t\tfn = queue.shift(),\n\t\t\thooks = jQuery._queueHooks( elem, type ),\n\t\t\tnext = function() {\n\t\t\t\tjQuery.dequeue( elem, type );\n\t\t\t};\n\n\t\t// If the fx queue is dequeued, always remove the progress sentinel\n\t\tif ( fn === \"inprogress\" ) {\n\t\t\tfn = queue.shift();\n\t\t\tstartLength--;\n\t\t}\n\n\t\tif ( fn ) {\n\n\t\t\t// Add a progress sentinel to prevent the fx queue from being\n\t\t\t// automatically dequeued\n\t\t\tif ( type === \"fx\" ) {\n\t\t\t\tqueue.unshift( \"inprogress\" );\n\t\t\t}\n\n\t\t\t// Clear up the last queue stop function\n\t\t\tdelete hooks.stop;\n\t\t\tfn.call( elem, next, hooks );\n\t\t}\n\n\t\tif ( !startLength && hooks ) {\n\t\t\thooks.empty.fire();\n\t\t}\n\t},\n\n\t// Not public - generate a queueHooks object, or return the current one\n\t_queueHooks: function( elem, type ) {\n\t\tvar key = type + \"queueHooks\";\n\t\treturn dataPriv.get( elem, key ) || dataPriv.access( elem, key, {\n\t\t\tempty: jQuery.Callbacks( \"once memory\" ).add( function() {\n\t\t\t\tdataPriv.remove( elem, [ type + \"queue\", key ] );\n\t\t\t} )\n\t\t} );\n\t}\n} );\n\njQuery.fn.extend( {\n\tqueue: function( type, data ) {\n\t\tvar setter = 2;\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tdata = type;\n\t\t\ttype = \"fx\";\n\t\t\tsetter--;\n\t\t}\n\n\t\tif ( arguments.length < setter ) {\n\t\t\treturn jQuery.queue( this[ 0 ], type );\n\t\t}\n\n\t\treturn data === undefined ?\n\t\t\tthis :\n\t\t\tthis.each( function() {\n\t\t\t\tvar queue = jQuery.queue( this, type, data );\n\n\t\t\t\t// Ensure a hooks for this queue\n\t\t\t\tjQuery._queueHooks( this, type );\n\n\t\t\t\tif ( type === \"fx\" && queue[ 0 ] !== \"inprogress\" ) {\n\t\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t\t}\n\t\t\t} );\n\t},\n\tdequeue: function( type ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.dequeue( this, type );\n\t\t} );\n\t},\n\tclearQueue: function( type ) {\n\t\treturn this.queue( type || \"fx\", [] );\n\t},\n\n\t// Get a promise resolved when queues of a certain type\n\t// are emptied (fx is the type by default)\n\tpromise: function( type, obj ) {\n\t\tvar tmp,\n\t\t\tcount = 1,\n\t\t\tdefer = jQuery.Deferred(),\n\t\t\telements = this,\n\t\t\ti = this.length,\n\t\t\tresolve = function() {\n\t\t\t\tif ( !( --count ) ) {\n\t\t\t\t\tdefer.resolveWith( elements, [ elements ] );\n\t\t\t\t}\n\t\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tobj = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\ttype = type || \"fx\";\n\n\t\twhile ( i-- ) {\n\t\t\ttmp = dataPriv.get( elements[ i ], type + \"queueHooks\" );\n\t\t\tif ( tmp && tmp.empty ) {\n\t\t\t\tcount++;\n\t\t\t\ttmp.empty.add( resolve );\n\t\t\t}\n\t\t}\n\t\tresolve();\n\t\treturn defer.promise( obj );\n\t}\n} );\nvar pnum = ( /[+-]?(?:\\d*\\.|)\\d+(?:[eE][+-]?\\d+|)/ ).source;\n\nvar rcssNum = new RegExp( \"^(?:([+-])=|)(\" + pnum + \")([a-z%]*)$\", \"i\" );\n\n\nvar cssExpand = [ \"Top\", \"Right\", \"Bottom\", \"Left\" ];\n\nvar documentElement = document.documentElement;\n\n\n\n\tvar isAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem );\n\t\t},\n\t\tcomposed = { composed: true };\n\n\t// Support: IE 9 - 11+, Edge 12 - 18+, iOS 10.0 - 10.2 only\n\t// Check attachment across shadow DOM boundaries when possible (gh-3504)\n\t// Support: iOS 10.0-10.2 only\n\t// Early iOS 10 versions support `attachShadow` but not `getRootNode`,\n\t// leading to errors. We need to check for `getRootNode`.\n\tif ( documentElement.getRootNode ) {\n\t\tisAttached = function( elem ) {\n\t\t\treturn jQuery.contains( elem.ownerDocument, elem ) ||\n\t\t\t\telem.getRootNode( composed ) === elem.ownerDocument;\n\t\t};\n\t}\nvar isHiddenWithinTree = function( elem, el ) {\n\n\t\t// isHiddenWithinTree might be called from jQuery#filter function;\n\t\t// in that case, element will be second argument\n\t\telem = el || elem;\n\n\t\t// Inline style trumps all\n\t\treturn elem.style.display === \"none\" ||\n\t\t\telem.style.display === \"\" &&\n\n\t\t\t// Otherwise, check computed style\n\t\t\t// Support: Firefox <=43 - 45\n\t\t\t// Disconnected elements can have computed display: none, so first confirm that elem is\n\t\t\t// in the document.\n\t\t\tisAttached( elem ) &&\n\n\t\t\tjQuery.css( elem, \"display\" ) === \"none\";\n\t};\n\n\n\nfunction adjustCSS( elem, prop, valueParts, tween ) {\n\tvar adjusted, scale,\n\t\tmaxIterations = 20,\n\t\tcurrentValue = tween ?\n\t\t\tfunction() {\n\t\t\t\treturn tween.cur();\n\t\t\t} :\n\t\t\tfunction() {\n\t\t\t\treturn jQuery.css( elem, prop, \"\" );\n\t\t\t},\n\t\tinitial = currentValue(),\n\t\tunit = valueParts && valueParts[ 3 ] || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" ),\n\n\t\t// Starting value computation is required for potential unit mismatches\n\t\tinitialInUnit = elem.nodeType &&\n\t\t\t( jQuery.cssNumber[ prop ] || unit !== \"px\" && +initial ) &&\n\t\t\trcssNum.exec( jQuery.css( elem, prop ) );\n\n\tif ( initialInUnit && initialInUnit[ 3 ] !== unit ) {\n\n\t\t// Support: Firefox <=54\n\t\t// Halve the iteration target value to prevent interference from CSS upper bounds (gh-2144)\n\t\tinitial = initial / 2;\n\n\t\t// Trust units reported by jQuery.css\n\t\tunit = unit || initialInUnit[ 3 ];\n\n\t\t// Iteratively approximate from a nonzero starting point\n\t\tinitialInUnit = +initial || 1;\n\n\t\twhile ( maxIterations-- ) {\n\n\t\t\t// Evaluate and update our best guess (doubling guesses that zero out).\n\t\t\t// Finish if the scale equals or crosses 1 (making the old*new product non-positive).\n\t\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\t\t\tif ( ( 1 - scale ) * ( 1 - ( scale = currentValue() / initial || 0.5 ) ) <= 0 ) {\n\t\t\t\tmaxIterations = 0;\n\t\t\t}\n\t\t\tinitialInUnit = initialInUnit / scale;\n\n\t\t}\n\n\t\tinitialInUnit = initialInUnit * 2;\n\t\tjQuery.style( elem, prop, initialInUnit + unit );\n\n\t\t// Make sure we update the tween properties later on\n\t\tvalueParts = valueParts || [];\n\t}\n\n\tif ( valueParts ) {\n\t\tinitialInUnit = +initialInUnit || +initial || 0;\n\n\t\t// Apply relative offset (+=/-=) if specified\n\t\tadjusted = valueParts[ 1 ] ?\n\t\t\tinitialInUnit + ( valueParts[ 1 ] + 1 ) * valueParts[ 2 ] :\n\t\t\t+valueParts[ 2 ];\n\t\tif ( tween ) {\n\t\t\ttween.unit = unit;\n\t\t\ttween.start = initialInUnit;\n\t\t\ttween.end = adjusted;\n\t\t}\n\t}\n\treturn adjusted;\n}\n\n\nvar defaultDisplayMap = {};\n\nfunction getDefaultDisplay( elem ) {\n\tvar temp,\n\t\tdoc = elem.ownerDocument,\n\t\tnodeName = elem.nodeName,\n\t\tdisplay = defaultDisplayMap[ nodeName ];\n\n\tif ( display ) {\n\t\treturn display;\n\t}\n\n\ttemp = doc.body.appendChild( doc.createElement( nodeName ) );\n\tdisplay = jQuery.css( temp, \"display\" );\n\n\ttemp.parentNode.removeChild( temp );\n\n\tif ( display === \"none\" ) {\n\t\tdisplay = \"block\";\n\t}\n\tdefaultDisplayMap[ nodeName ] = display;\n\n\treturn display;\n}\n\nfunction showHide( elements, show ) {\n\tvar display, elem,\n\t\tvalues = [],\n\t\tindex = 0,\n\t\tlength = elements.length;\n\n\t// Determine new display value for elements that need to change\n\tfor ( ; index < length; index++ ) {\n\t\telem = elements[ index ];\n\t\tif ( !elem.style ) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tdisplay = elem.style.display;\n\t\tif ( show ) {\n\n\t\t\t// Since we force visibility upon cascade-hidden elements, an immediate (and slow)\n\t\t\t// check is required in this first loop unless we have a nonempty display value (either\n\t\t\t// inline or about-to-be-restored)\n\t\t\tif ( display === \"none\" ) {\n\t\t\t\tvalues[ index ] = dataPriv.get( elem, \"display\" ) || null;\n\t\t\t\tif ( !values[ index ] ) {\n\t\t\t\t\telem.style.display = \"\";\n\t\t\t\t}\n\t\t\t}\n\t\t\tif ( elem.style.display === \"\" && isHiddenWithinTree( elem ) ) {\n\t\t\t\tvalues[ index ] = getDefaultDisplay( elem );\n\t\t\t}\n\t\t} else {\n\t\t\tif ( display !== \"none\" ) {\n\t\t\t\tvalues[ index ] = \"none\";\n\n\t\t\t\t// Remember what we're overwriting\n\t\t\t\tdataPriv.set( elem, \"display\", display );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Set the display of the elements in a second loop to avoid constant reflow\n\tfor ( index = 0; index < length; index++ ) {\n\t\tif ( values[ index ] != null ) {\n\t\t\telements[ index ].style.display = values[ index ];\n\t\t}\n\t}\n\n\treturn elements;\n}\n\njQuery.fn.extend( {\n\tshow: function() {\n\t\treturn showHide( this, true );\n\t},\n\thide: function() {\n\t\treturn showHide( this );\n\t},\n\ttoggle: function( state ) {\n\t\tif ( typeof state === \"boolean\" ) {\n\t\t\treturn state ? this.show() : this.hide();\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tif ( isHiddenWithinTree( this ) ) {\n\t\t\t\tjQuery( this ).show();\n\t\t\t} else {\n\t\t\t\tjQuery( this ).hide();\n\t\t\t}\n\t\t} );\n\t}\n} );\nvar rcheckableType = ( /^(?:checkbox|radio)$/i );\n\nvar rtagName = ( /<([a-z][^\\/\\0>\\x20\\t\\r\\n\\f]*)/i );\n\nvar rscriptType = ( /^$|^module$|\\/(?:java|ecma)script/i );\n\n\n\n( function() {\n\tvar fragment = document.createDocumentFragment(),\n\t\tdiv = fragment.appendChild( document.createElement( \"div\" ) ),\n\t\tinput = document.createElement( \"input\" );\n\n\t// Support: Android 4.0 - 4.3 only\n\t// Check state lost if the name is set (#11217)\n\t// Support: Windows Web Apps (WWA)\n\t// `name` and `type` must use .setAttribute for WWA (#14901)\n\tinput.setAttribute( \"type\", \"radio\" );\n\tinput.setAttribute( \"checked\", \"checked\" );\n\tinput.setAttribute( \"name\", \"t\" );\n\n\tdiv.appendChild( input );\n\n\t// Support: Android <=4.1 only\n\t// Older WebKit doesn't clone checked state correctly in fragments\n\tsupport.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;\n\n\t// Support: IE <=11 only\n\t// Make sure textarea (and checkbox) defaultValue is properly cloned\n\tdiv.innerHTML = \"\";\n\tsupport.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;\n\n\t// Support: IE <=9 only\n\t// IE <=9 replaces \";\n\tsupport.option = !!div.lastChild;\n} )();\n\n\n// We have to close these tags to support XHTML (#13200)\nvar wrapMap = {\n\n\t// XHTML parsers do not magically insert elements in the\n\t// same way that tag soup parsers do. So we cannot shorten\n\t// this by omitting or other required elements.\n\tthead: [ 1, \"\", \"
    \" ],\n\tcol: [ 2, \"\", \"
    \" ],\n\ttr: [ 2, \"\", \"
    \" ],\n\ttd: [ 3, \"\", \"
    \" ],\n\n\t_default: [ 0, \"\", \"\" ]\n};\n\nwrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;\nwrapMap.th = wrapMap.td;\n\n// Support: IE <=9 only\nif ( !support.option ) {\n\twrapMap.optgroup = wrapMap.option = [ 1, \"\" ];\n}\n\n\nfunction getAll( context, tag ) {\n\n\t// Support: IE <=9 - 11 only\n\t// Use typeof to avoid zero-argument method invocation on host objects (#15151)\n\tvar ret;\n\n\tif ( typeof context.getElementsByTagName !== \"undefined\" ) {\n\t\tret = context.getElementsByTagName( tag || \"*\" );\n\n\t} else if ( typeof context.querySelectorAll !== \"undefined\" ) {\n\t\tret = context.querySelectorAll( tag || \"*\" );\n\n\t} else {\n\t\tret = [];\n\t}\n\n\tif ( tag === undefined || tag && nodeName( context, tag ) ) {\n\t\treturn jQuery.merge( [ context ], ret );\n\t}\n\n\treturn ret;\n}\n\n\n// Mark scripts as having already been evaluated\nfunction setGlobalEval( elems, refElements ) {\n\tvar i = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\tdataPriv.set(\n\t\t\telems[ i ],\n\t\t\t\"globalEval\",\n\t\t\t!refElements || dataPriv.get( refElements[ i ], \"globalEval\" )\n\t\t);\n\t}\n}\n\n\nvar rhtml = /<|&#?\\w+;/;\n\nfunction buildFragment( elems, context, scripts, selection, ignored ) {\n\tvar elem, tmp, tag, wrap, attached, j,\n\t\tfragment = context.createDocumentFragment(),\n\t\tnodes = [],\n\t\ti = 0,\n\t\tl = elems.length;\n\n\tfor ( ; i < l; i++ ) {\n\t\telem = elems[ i ];\n\n\t\tif ( elem || elem === 0 ) {\n\n\t\t\t// Add nodes directly\n\t\t\tif ( toType( elem ) === \"object\" ) {\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );\n\n\t\t\t// Convert non-html into a text node\n\t\t\t} else if ( !rhtml.test( elem ) ) {\n\t\t\t\tnodes.push( context.createTextNode( elem ) );\n\n\t\t\t// Convert html into DOM nodes\n\t\t\t} else {\n\t\t\t\ttmp = tmp || fragment.appendChild( context.createElement( \"div\" ) );\n\n\t\t\t\t// Deserialize a standard representation\n\t\t\t\ttag = ( rtagName.exec( elem ) || [ \"\", \"\" ] )[ 1 ].toLowerCase();\n\t\t\t\twrap = wrapMap[ tag ] || wrapMap._default;\n\t\t\t\ttmp.innerHTML = wrap[ 1 ] + jQuery.htmlPrefilter( elem ) + wrap[ 2 ];\n\n\t\t\t\t// Descend through wrappers to the right content\n\t\t\t\tj = wrap[ 0 ];\n\t\t\t\twhile ( j-- ) {\n\t\t\t\t\ttmp = tmp.lastChild;\n\t\t\t\t}\n\n\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\tjQuery.merge( nodes, tmp.childNodes );\n\n\t\t\t\t// Remember the top-level container\n\t\t\t\ttmp = fragment.firstChild;\n\n\t\t\t\t// Ensure the created nodes are orphaned (#12392)\n\t\t\t\ttmp.textContent = \"\";\n\t\t\t}\n\t\t}\n\t}\n\n\t// Remove wrapper from fragment\n\tfragment.textContent = \"\";\n\n\ti = 0;\n\twhile ( ( elem = nodes[ i++ ] ) ) {\n\n\t\t// Skip elements already in the context collection (trac-4087)\n\t\tif ( selection && jQuery.inArray( elem, selection ) > -1 ) {\n\t\t\tif ( ignored ) {\n\t\t\t\tignored.push( elem );\n\t\t\t}\n\t\t\tcontinue;\n\t\t}\n\n\t\tattached = isAttached( elem );\n\n\t\t// Append to fragment\n\t\ttmp = getAll( fragment.appendChild( elem ), \"script\" );\n\n\t\t// Preserve script evaluation history\n\t\tif ( attached ) {\n\t\t\tsetGlobalEval( tmp );\n\t\t}\n\n\t\t// Capture executables\n\t\tif ( scripts ) {\n\t\t\tj = 0;\n\t\t\twhile ( ( elem = tmp[ j++ ] ) ) {\n\t\t\t\tif ( rscriptType.test( elem.type || \"\" ) ) {\n\t\t\t\t\tscripts.push( elem );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn fragment;\n}\n\n\nvar rtypenamespace = /^([^.]*)(?:\\.(.+)|)/;\n\nfunction returnTrue() {\n\treturn true;\n}\n\nfunction returnFalse() {\n\treturn false;\n}\n\n// Support: IE <=9 - 11+\n// focus() and blur() are asynchronous, except when they are no-op.\n// So expect focus to be synchronous when the element is already active,\n// and blur to be synchronous when the element is not already active.\n// (focus and blur are always synchronous in other supported browsers,\n// this just defines when we can count on it).\nfunction expectSync( elem, type ) {\n\treturn ( elem === safeActiveElement() ) === ( type === \"focus\" );\n}\n\n// Support: IE <=9 only\n// Accessing document.activeElement can throw unexpectedly\n// https://bugs.jquery.com/ticket/13393\nfunction safeActiveElement() {\n\ttry {\n\t\treturn document.activeElement;\n\t} catch ( err ) { }\n}\n\nfunction on( elem, types, selector, data, fn, one ) {\n\tvar origFn, type;\n\n\t// Types can be a map of types/handlers\n\tif ( typeof types === \"object\" ) {\n\n\t\t// ( types-Object, selector, data )\n\t\tif ( typeof selector !== \"string\" ) {\n\n\t\t\t// ( types-Object, data )\n\t\t\tdata = data || selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tfor ( type in types ) {\n\t\t\ton( elem, type, selector, data, types[ type ], one );\n\t\t}\n\t\treturn elem;\n\t}\n\n\tif ( data == null && fn == null ) {\n\n\t\t// ( types, fn )\n\t\tfn = selector;\n\t\tdata = selector = undefined;\n\t} else if ( fn == null ) {\n\t\tif ( typeof selector === \"string\" ) {\n\n\t\t\t// ( types, selector, fn )\n\t\t\tfn = data;\n\t\t\tdata = undefined;\n\t\t} else {\n\n\t\t\t// ( types, data, fn )\n\t\t\tfn = data;\n\t\t\tdata = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t}\n\tif ( fn === false ) {\n\t\tfn = returnFalse;\n\t} else if ( !fn ) {\n\t\treturn elem;\n\t}\n\n\tif ( one === 1 ) {\n\t\torigFn = fn;\n\t\tfn = function( event ) {\n\n\t\t\t// Can use an empty set, since event contains the info\n\t\t\tjQuery().off( event );\n\t\t\treturn origFn.apply( this, arguments );\n\t\t};\n\n\t\t// Use same guid so caller can remove using origFn\n\t\tfn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );\n\t}\n\treturn elem.each( function() {\n\t\tjQuery.event.add( this, types, fn, data, selector );\n\t} );\n}\n\n/*\n * Helper functions for managing events -- not part of the public interface.\n * Props to Dean Edwards' addEvent library for many of the ideas.\n */\njQuery.event = {\n\n\tglobal: {},\n\n\tadd: function( elem, types, handler, data, selector ) {\n\n\t\tvar handleObjIn, eventHandle, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.get( elem );\n\n\t\t// Only attach events to objects that accept data\n\t\tif ( !acceptData( elem ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Caller can pass in an object of custom data in lieu of the handler\n\t\tif ( handler.handler ) {\n\t\t\thandleObjIn = handler;\n\t\t\thandler = handleObjIn.handler;\n\t\t\tselector = handleObjIn.selector;\n\t\t}\n\n\t\t// Ensure that invalid selectors throw exceptions at attach time\n\t\t// Evaluate against documentElement in case elem is a non-element node (e.g., document)\n\t\tif ( selector ) {\n\t\t\tjQuery.find.matchesSelector( documentElement, selector );\n\t\t}\n\n\t\t// Make sure that the handler has a unique ID, used to find/remove it later\n\t\tif ( !handler.guid ) {\n\t\t\thandler.guid = jQuery.guid++;\n\t\t}\n\n\t\t// Init the element's event structure and main handler, if this is the first\n\t\tif ( !( events = elemData.events ) ) {\n\t\t\tevents = elemData.events = Object.create( null );\n\t\t}\n\t\tif ( !( eventHandle = elemData.handle ) ) {\n\t\t\teventHandle = elemData.handle = function( e ) {\n\n\t\t\t\t// Discard the second event of a jQuery.event.trigger() and\n\t\t\t\t// when an event is called after a page has unloaded\n\t\t\t\treturn typeof jQuery !== \"undefined\" && jQuery.event.triggered !== e.type ?\n\t\t\t\t\tjQuery.event.dispatch.apply( elem, arguments ) : undefined;\n\t\t\t};\n\t\t}\n\n\t\t// Handle multiple events separated by a space\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// There *must* be a type, no attaching namespace-only handlers\n\t\t\tif ( !type ) {\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// If event changes its type, use the special event handlers for the changed type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// If selector defined, determine special event api type, otherwise given type\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\n\t\t\t// Update special based on newly reset type\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\n\t\t\t// handleObj is passed to all event handlers\n\t\t\thandleObj = jQuery.extend( {\n\t\t\t\ttype: type,\n\t\t\t\torigType: origType,\n\t\t\t\tdata: data,\n\t\t\t\thandler: handler,\n\t\t\t\tguid: handler.guid,\n\t\t\t\tselector: selector,\n\t\t\t\tneedsContext: selector && jQuery.expr.match.needsContext.test( selector ),\n\t\t\t\tnamespace: namespaces.join( \".\" )\n\t\t\t}, handleObjIn );\n\n\t\t\t// Init the event handler queue if we're the first\n\t\t\tif ( !( handlers = events[ type ] ) ) {\n\t\t\t\thandlers = events[ type ] = [];\n\t\t\t\thandlers.delegateCount = 0;\n\n\t\t\t\t// Only use addEventListener if the special events handler returns false\n\t\t\t\tif ( !special.setup ||\n\t\t\t\t\tspecial.setup.call( elem, data, namespaces, eventHandle ) === false ) {\n\n\t\t\t\t\tif ( elem.addEventListener ) {\n\t\t\t\t\t\telem.addEventListener( type, eventHandle );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif ( special.add ) {\n\t\t\t\tspecial.add.call( elem, handleObj );\n\n\t\t\t\tif ( !handleObj.handler.guid ) {\n\t\t\t\t\thandleObj.handler.guid = handler.guid;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Add to the element's handler list, delegates in front\n\t\t\tif ( selector ) {\n\t\t\t\thandlers.splice( handlers.delegateCount++, 0, handleObj );\n\t\t\t} else {\n\t\t\t\thandlers.push( handleObj );\n\t\t\t}\n\n\t\t\t// Keep track of which events have ever been used, for event optimization\n\t\t\tjQuery.event.global[ type ] = true;\n\t\t}\n\n\t},\n\n\t// Detach an event or set of events from an element\n\tremove: function( elem, types, handler, selector, mappedTypes ) {\n\n\t\tvar j, origCount, tmp,\n\t\t\tevents, t, handleObj,\n\t\t\tspecial, handlers, type, namespaces, origType,\n\t\t\telemData = dataPriv.hasData( elem ) && dataPriv.get( elem );\n\n\t\tif ( !elemData || !( events = elemData.events ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Once for each type.namespace in types; type may be omitted\n\t\ttypes = ( types || \"\" ).match( rnothtmlwhite ) || [ \"\" ];\n\t\tt = types.length;\n\t\twhile ( t-- ) {\n\t\t\ttmp = rtypenamespace.exec( types[ t ] ) || [];\n\t\t\ttype = origType = tmp[ 1 ];\n\t\t\tnamespaces = ( tmp[ 2 ] || \"\" ).split( \".\" ).sort();\n\n\t\t\t// Unbind all events (on this namespace, if provided) for the element\n\t\t\tif ( !type ) {\n\t\t\t\tfor ( type in events ) {\n\t\t\t\t\tjQuery.event.remove( elem, type + types[ t ], handler, selector, true );\n\t\t\t\t}\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tspecial = jQuery.event.special[ type ] || {};\n\t\t\ttype = ( selector ? special.delegateType : special.bindType ) || type;\n\t\t\thandlers = events[ type ] || [];\n\t\t\ttmp = tmp[ 2 ] &&\n\t\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" );\n\n\t\t\t// Remove matching events\n\t\t\torigCount = j = handlers.length;\n\t\t\twhile ( j-- ) {\n\t\t\t\thandleObj = handlers[ j ];\n\n\t\t\t\tif ( ( mappedTypes || origType === handleObj.origType ) &&\n\t\t\t\t\t( !handler || handler.guid === handleObj.guid ) &&\n\t\t\t\t\t( !tmp || tmp.test( handleObj.namespace ) ) &&\n\t\t\t\t\t( !selector || selector === handleObj.selector ||\n\t\t\t\t\t\tselector === \"**\" && handleObj.selector ) ) {\n\t\t\t\t\thandlers.splice( j, 1 );\n\n\t\t\t\t\tif ( handleObj.selector ) {\n\t\t\t\t\t\thandlers.delegateCount--;\n\t\t\t\t\t}\n\t\t\t\t\tif ( special.remove ) {\n\t\t\t\t\t\tspecial.remove.call( elem, handleObj );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Remove generic event handler if we removed something and no more handlers exist\n\t\t\t// (avoids potential for endless recursion during removal of special event handlers)\n\t\t\tif ( origCount && !handlers.length ) {\n\t\t\t\tif ( !special.teardown ||\n\t\t\t\t\tspecial.teardown.call( elem, namespaces, elemData.handle ) === false ) {\n\n\t\t\t\t\tjQuery.removeEvent( elem, type, elemData.handle );\n\t\t\t\t}\n\n\t\t\t\tdelete events[ type ];\n\t\t\t}\n\t\t}\n\n\t\t// Remove data and the expando if it's no longer used\n\t\tif ( jQuery.isEmptyObject( events ) ) {\n\t\t\tdataPriv.remove( elem, \"handle events\" );\n\t\t}\n\t},\n\n\tdispatch: function( nativeEvent ) {\n\n\t\tvar i, j, ret, matched, handleObj, handlerQueue,\n\t\t\targs = new Array( arguments.length ),\n\n\t\t\t// Make a writable jQuery.Event from the native event object\n\t\t\tevent = jQuery.event.fix( nativeEvent ),\n\n\t\t\thandlers = (\n\t\t\t\tdataPriv.get( this, \"events\" ) || Object.create( null )\n\t\t\t)[ event.type ] || [],\n\t\t\tspecial = jQuery.event.special[ event.type ] || {};\n\n\t\t// Use the fix-ed jQuery.Event rather than the (read-only) native event\n\t\targs[ 0 ] = event;\n\n\t\tfor ( i = 1; i < arguments.length; i++ ) {\n\t\t\targs[ i ] = arguments[ i ];\n\t\t}\n\n\t\tevent.delegateTarget = this;\n\n\t\t// Call the preDispatch hook for the mapped type, and let it bail if desired\n\t\tif ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine handlers\n\t\thandlerQueue = jQuery.event.handlers.call( this, event, handlers );\n\n\t\t// Run delegates first; they may want to stop propagation beneath us\n\t\ti = 0;\n\t\twhile ( ( matched = handlerQueue[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tevent.currentTarget = matched.elem;\n\n\t\t\tj = 0;\n\t\t\twhile ( ( handleObj = matched.handlers[ j++ ] ) &&\n\t\t\t\t!event.isImmediatePropagationStopped() ) {\n\n\t\t\t\t// If the event is namespaced, then each handler is only invoked if it is\n\t\t\t\t// specially universal or its namespaces are a superset of the event's.\n\t\t\t\tif ( !event.rnamespace || handleObj.namespace === false ||\n\t\t\t\t\tevent.rnamespace.test( handleObj.namespace ) ) {\n\n\t\t\t\t\tevent.handleObj = handleObj;\n\t\t\t\t\tevent.data = handleObj.data;\n\n\t\t\t\t\tret = ( ( jQuery.event.special[ handleObj.origType ] || {} ).handle ||\n\t\t\t\t\t\thandleObj.handler ).apply( matched.elem, args );\n\n\t\t\t\t\tif ( ret !== undefined ) {\n\t\t\t\t\t\tif ( ( event.result = ret ) === false ) {\n\t\t\t\t\t\t\tevent.preventDefault();\n\t\t\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Call the postDispatch hook for the mapped type\n\t\tif ( special.postDispatch ) {\n\t\t\tspecial.postDispatch.call( this, event );\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\thandlers: function( event, handlers ) {\n\t\tvar i, handleObj, sel, matchedHandlers, matchedSelectors,\n\t\t\thandlerQueue = [],\n\t\t\tdelegateCount = handlers.delegateCount,\n\t\t\tcur = event.target;\n\n\t\t// Find delegate handlers\n\t\tif ( delegateCount &&\n\n\t\t\t// Support: IE <=9\n\t\t\t// Black-hole SVG instance trees (trac-13180)\n\t\t\tcur.nodeType &&\n\n\t\t\t// Support: Firefox <=42\n\t\t\t// Suppress spec-violating clicks indicating a non-primary pointer button (trac-3861)\n\t\t\t// https://www.w3.org/TR/DOM-Level-3-Events/#event-type-click\n\t\t\t// Support: IE 11 only\n\t\t\t// ...but not arrow key \"clicks\" of radio inputs, which can have `button` -1 (gh-2343)\n\t\t\t!( event.type === \"click\" && event.button >= 1 ) ) {\n\n\t\t\tfor ( ; cur !== this; cur = cur.parentNode || this ) {\n\n\t\t\t\t// Don't check non-elements (#13208)\n\t\t\t\t// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)\n\t\t\t\tif ( cur.nodeType === 1 && !( event.type === \"click\" && cur.disabled === true ) ) {\n\t\t\t\t\tmatchedHandlers = [];\n\t\t\t\t\tmatchedSelectors = {};\n\t\t\t\t\tfor ( i = 0; i < delegateCount; i++ ) {\n\t\t\t\t\t\thandleObj = handlers[ i ];\n\n\t\t\t\t\t\t// Don't conflict with Object.prototype properties (#13203)\n\t\t\t\t\t\tsel = handleObj.selector + \" \";\n\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] === undefined ) {\n\t\t\t\t\t\t\tmatchedSelectors[ sel ] = handleObj.needsContext ?\n\t\t\t\t\t\t\t\tjQuery( sel, this ).index( cur ) > -1 :\n\t\t\t\t\t\t\t\tjQuery.find( sel, this, null, [ cur ] ).length;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tif ( matchedSelectors[ sel ] ) {\n\t\t\t\t\t\t\tmatchedHandlers.push( handleObj );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\tif ( matchedHandlers.length ) {\n\t\t\t\t\t\thandlerQueue.push( { elem: cur, handlers: matchedHandlers } );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\t// Add the remaining (directly-bound) handlers\n\t\tcur = this;\n\t\tif ( delegateCount < handlers.length ) {\n\t\t\thandlerQueue.push( { elem: cur, handlers: handlers.slice( delegateCount ) } );\n\t\t}\n\n\t\treturn handlerQueue;\n\t},\n\n\taddProp: function( name, hook ) {\n\t\tObject.defineProperty( jQuery.Event.prototype, name, {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: true,\n\n\t\t\tget: isFunction( hook ) ?\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn hook( this.originalEvent );\n\t\t\t\t\t}\n\t\t\t\t} :\n\t\t\t\tfunction() {\n\t\t\t\t\tif ( this.originalEvent ) {\n\t\t\t\t\t\treturn this.originalEvent[ name ];\n\t\t\t\t\t}\n\t\t\t\t},\n\n\t\t\tset: function( value ) {\n\t\t\t\tObject.defineProperty( this, name, {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tconfigurable: true,\n\t\t\t\t\twritable: true,\n\t\t\t\t\tvalue: value\n\t\t\t\t} );\n\t\t\t}\n\t\t} );\n\t},\n\n\tfix: function( originalEvent ) {\n\t\treturn originalEvent[ jQuery.expando ] ?\n\t\t\toriginalEvent :\n\t\t\tnew jQuery.Event( originalEvent );\n\t},\n\n\tspecial: {\n\t\tload: {\n\n\t\t\t// Prevent triggered image.load events from bubbling to window.load\n\t\t\tnoBubble: true\n\t\t},\n\t\tclick: {\n\n\t\t\t// Utilize native event to ensure correct state for checkable inputs\n\t\t\tsetup: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Claim the first handler\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\t// dataPriv.set( el, \"click\", ... )\n\t\t\t\t\tleverageNative( el, \"click\", returnTrue );\n\t\t\t\t}\n\n\t\t\t\t// Return false to allow normal processing in the caller\n\t\t\t\treturn false;\n\t\t\t},\n\t\t\ttrigger: function( data ) {\n\n\t\t\t\t// For mutual compressibility with _default, replace `this` access with a local var.\n\t\t\t\t// `|| data` is dead code meant only to preserve the variable through minification.\n\t\t\t\tvar el = this || data;\n\n\t\t\t\t// Force setup before triggering a click\n\t\t\t\tif ( rcheckableType.test( el.type ) &&\n\t\t\t\t\tel.click && nodeName( el, \"input\" ) ) {\n\n\t\t\t\t\tleverageNative( el, \"click\" );\n\t\t\t\t}\n\n\t\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\t\treturn true;\n\t\t\t},\n\n\t\t\t// For cross-browser consistency, suppress native .click() on links\n\t\t\t// Also prevent it if we're currently inside a leveraged native-event stack\n\t\t\t_default: function( event ) {\n\t\t\t\tvar target = event.target;\n\t\t\t\treturn rcheckableType.test( target.type ) &&\n\t\t\t\t\ttarget.click && nodeName( target, \"input\" ) &&\n\t\t\t\t\tdataPriv.get( target, \"click\" ) ||\n\t\t\t\t\tnodeName( target, \"a\" );\n\t\t\t}\n\t\t},\n\n\t\tbeforeunload: {\n\t\t\tpostDispatch: function( event ) {\n\n\t\t\t\t// Support: Firefox 20+\n\t\t\t\t// Firefox doesn't alert if the returnValue field is not set.\n\t\t\t\tif ( event.result !== undefined && event.originalEvent ) {\n\t\t\t\t\tevent.originalEvent.returnValue = event.result;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Ensure the presence of an event listener that handles manually-triggered\n// synthetic events by interrupting progress until reinvoked in response to\n// *native* events that it fires directly, ensuring that state changes have\n// already occurred before other listeners are invoked.\nfunction leverageNative( el, type, expectSync ) {\n\n\t// Missing expectSync indicates a trigger call, which must force setup through jQuery.event.add\n\tif ( !expectSync ) {\n\t\tif ( dataPriv.get( el, type ) === undefined ) {\n\t\t\tjQuery.event.add( el, type, returnTrue );\n\t\t}\n\t\treturn;\n\t}\n\n\t// Register the controller as a special universal handler for all event namespaces\n\tdataPriv.set( el, type, false );\n\tjQuery.event.add( el, type, {\n\t\tnamespace: false,\n\t\thandler: function( event ) {\n\t\t\tvar notAsync, result,\n\t\t\t\tsaved = dataPriv.get( this, type );\n\n\t\t\tif ( ( event.isTrigger & 1 ) && this[ type ] ) {\n\n\t\t\t\t// Interrupt processing of the outer synthetic .trigger()ed event\n\t\t\t\t// Saved data should be false in such cases, but might be a leftover capture object\n\t\t\t\t// from an async native handler (gh-4350)\n\t\t\t\tif ( !saved.length ) {\n\n\t\t\t\t\t// Store arguments for use when handling the inner native event\n\t\t\t\t\t// There will always be at least one argument (an event object), so this array\n\t\t\t\t\t// will not be confused with a leftover capture object.\n\t\t\t\t\tsaved = slice.call( arguments );\n\t\t\t\t\tdataPriv.set( this, type, saved );\n\n\t\t\t\t\t// Trigger the native event and capture its result\n\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t// focus() and blur() are asynchronous\n\t\t\t\t\tnotAsync = expectSync( this, type );\n\t\t\t\t\tthis[ type ]();\n\t\t\t\t\tresult = dataPriv.get( this, type );\n\t\t\t\t\tif ( saved !== result || notAsync ) {\n\t\t\t\t\t\tdataPriv.set( this, type, false );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult = {};\n\t\t\t\t\t}\n\t\t\t\t\tif ( saved !== result ) {\n\n\t\t\t\t\t\t// Cancel the outer synthetic event\n\t\t\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t\t\t\tevent.preventDefault();\n\n\t\t\t\t\t\t// Support: Chrome 86+\n\t\t\t\t\t\t// In Chrome, if an element having a focusout handler is blurred by\n\t\t\t\t\t\t// clicking outside of it, it invokes the handler synchronously. If\n\t\t\t\t\t\t// that handler calls `.remove()` on the element, the data is cleared,\n\t\t\t\t\t\t// leaving `result` undefined. We need to guard against this.\n\t\t\t\t\t\treturn result && result.value;\n\t\t\t\t\t}\n\n\t\t\t\t// If this is an inner synthetic event for an event with a bubbling surrogate\n\t\t\t\t// (focus or blur), assume that the surrogate already propagated from triggering the\n\t\t\t\t// native event and prevent that from happening again here.\n\t\t\t\t// This technically gets the ordering wrong w.r.t. to `.trigger()` (in which the\n\t\t\t\t// bubbling surrogate propagates *after* the non-bubbling base), but that seems\n\t\t\t\t// less bad than duplication.\n\t\t\t\t} else if ( ( jQuery.event.special[ type ] || {} ).delegateType ) {\n\t\t\t\t\tevent.stopPropagation();\n\t\t\t\t}\n\n\t\t\t// If this is a native event triggered above, everything is now in order\n\t\t\t// Fire an inner synthetic event with the original arguments\n\t\t\t} else if ( saved.length ) {\n\n\t\t\t\t// ...and capture the result\n\t\t\t\tdataPriv.set( this, type, {\n\t\t\t\t\tvalue: jQuery.event.trigger(\n\n\t\t\t\t\t\t// Support: IE <=9 - 11+\n\t\t\t\t\t\t// Extend with the prototype to reset the above stopImmediatePropagation()\n\t\t\t\t\t\tjQuery.extend( saved[ 0 ], jQuery.Event.prototype ),\n\t\t\t\t\t\tsaved.slice( 1 ),\n\t\t\t\t\t\tthis\n\t\t\t\t\t)\n\t\t\t\t} );\n\n\t\t\t\t// Abort handling of the native event\n\t\t\t\tevent.stopImmediatePropagation();\n\t\t\t}\n\t\t}\n\t} );\n}\n\njQuery.removeEvent = function( elem, type, handle ) {\n\n\t// This \"if\" is needed for plain objects\n\tif ( elem.removeEventListener ) {\n\t\telem.removeEventListener( type, handle );\n\t}\n};\n\njQuery.Event = function( src, props ) {\n\n\t// Allow instantiation without the 'new' keyword\n\tif ( !( this instanceof jQuery.Event ) ) {\n\t\treturn new jQuery.Event( src, props );\n\t}\n\n\t// Event object\n\tif ( src && src.type ) {\n\t\tthis.originalEvent = src;\n\t\tthis.type = src.type;\n\n\t\t// Events bubbling up the document may have been marked as prevented\n\t\t// by a handler lower down the tree; reflect the correct value.\n\t\tthis.isDefaultPrevented = src.defaultPrevented ||\n\t\t\t\tsrc.defaultPrevented === undefined &&\n\n\t\t\t\t// Support: Android <=2.3 only\n\t\t\t\tsrc.returnValue === false ?\n\t\t\treturnTrue :\n\t\t\treturnFalse;\n\n\t\t// Create target properties\n\t\t// Support: Safari <=6 - 7 only\n\t\t// Target should not be a text node (#504, #13143)\n\t\tthis.target = ( src.target && src.target.nodeType === 3 ) ?\n\t\t\tsrc.target.parentNode :\n\t\t\tsrc.target;\n\n\t\tthis.currentTarget = src.currentTarget;\n\t\tthis.relatedTarget = src.relatedTarget;\n\n\t// Event type\n\t} else {\n\t\tthis.type = src;\n\t}\n\n\t// Put explicitly provided properties onto the event object\n\tif ( props ) {\n\t\tjQuery.extend( this, props );\n\t}\n\n\t// Create a timestamp if incoming event doesn't have one\n\tthis.timeStamp = src && src.timeStamp || Date.now();\n\n\t// Mark it as fixed\n\tthis[ jQuery.expando ] = true;\n};\n\n// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding\n// https://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html\njQuery.Event.prototype = {\n\tconstructor: jQuery.Event,\n\tisDefaultPrevented: returnFalse,\n\tisPropagationStopped: returnFalse,\n\tisImmediatePropagationStopped: returnFalse,\n\tisSimulated: false,\n\n\tpreventDefault: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isDefaultPrevented = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.preventDefault();\n\t\t}\n\t},\n\tstopPropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isPropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopPropagation();\n\t\t}\n\t},\n\tstopImmediatePropagation: function() {\n\t\tvar e = this.originalEvent;\n\n\t\tthis.isImmediatePropagationStopped = returnTrue;\n\n\t\tif ( e && !this.isSimulated ) {\n\t\t\te.stopImmediatePropagation();\n\t\t}\n\n\t\tthis.stopPropagation();\n\t}\n};\n\n// Includes all common event props including KeyEvent and MouseEvent specific props\njQuery.each( {\n\taltKey: true,\n\tbubbles: true,\n\tcancelable: true,\n\tchangedTouches: true,\n\tctrlKey: true,\n\tdetail: true,\n\teventPhase: true,\n\tmetaKey: true,\n\tpageX: true,\n\tpageY: true,\n\tshiftKey: true,\n\tview: true,\n\t\"char\": true,\n\tcode: true,\n\tcharCode: true,\n\tkey: true,\n\tkeyCode: true,\n\tbutton: true,\n\tbuttons: true,\n\tclientX: true,\n\tclientY: true,\n\toffsetX: true,\n\toffsetY: true,\n\tpointerId: true,\n\tpointerType: true,\n\tscreenX: true,\n\tscreenY: true,\n\ttargetTouches: true,\n\ttoElement: true,\n\ttouches: true,\n\twhich: true\n}, jQuery.event.addProp );\n\njQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( type, delegateType ) {\n\tjQuery.event.special[ type ] = {\n\n\t\t// Utilize native event if possible so blur/focus sequence is correct\n\t\tsetup: function() {\n\n\t\t\t// Claim the first handler\n\t\t\t// dataPriv.set( this, \"focus\", ... )\n\t\t\t// dataPriv.set( this, \"blur\", ... )\n\t\t\tleverageNative( this, type, expectSync );\n\n\t\t\t// Return false to allow normal processing in the caller\n\t\t\treturn false;\n\t\t},\n\t\ttrigger: function() {\n\n\t\t\t// Force setup before trigger\n\t\t\tleverageNative( this, type );\n\n\t\t\t// Return non-false to allow normal event-path propagation\n\t\t\treturn true;\n\t\t},\n\n\t\t// Suppress native focus or blur as it's already being fired\n\t\t// in leverageNative.\n\t\t_default: function() {\n\t\t\treturn true;\n\t\t},\n\n\t\tdelegateType: delegateType\n\t};\n} );\n\n// Create mouseenter/leave events using mouseover/out and event-time checks\n// so that event delegation works in jQuery.\n// Do the same for pointerenter/pointerleave and pointerover/pointerout\n//\n// Support: Safari 7 only\n// Safari sends mouseenter too often; see:\n// https://bugs.chromium.org/p/chromium/issues/detail?id=470258\n// for the description of the bug (it existed in older Chrome versions as well).\njQuery.each( {\n\tmouseenter: \"mouseover\",\n\tmouseleave: \"mouseout\",\n\tpointerenter: \"pointerover\",\n\tpointerleave: \"pointerout\"\n}, function( orig, fix ) {\n\tjQuery.event.special[ orig ] = {\n\t\tdelegateType: fix,\n\t\tbindType: fix,\n\n\t\thandle: function( event ) {\n\t\t\tvar ret,\n\t\t\t\ttarget = this,\n\t\t\t\trelated = event.relatedTarget,\n\t\t\t\thandleObj = event.handleObj;\n\n\t\t\t// For mouseenter/leave call the handler if related is outside the target.\n\t\t\t// NB: No relatedTarget if the mouse left/entered the browser window\n\t\t\tif ( !related || ( related !== target && !jQuery.contains( target, related ) ) ) {\n\t\t\t\tevent.type = handleObj.origType;\n\t\t\t\tret = handleObj.handler.apply( this, arguments );\n\t\t\t\tevent.type = fix;\n\t\t\t}\n\t\t\treturn ret;\n\t\t}\n\t};\n} );\n\njQuery.fn.extend( {\n\n\ton: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn );\n\t},\n\tone: function( types, selector, data, fn ) {\n\t\treturn on( this, types, selector, data, fn, 1 );\n\t},\n\toff: function( types, selector, fn ) {\n\t\tvar handleObj, type;\n\t\tif ( types && types.preventDefault && types.handleObj ) {\n\n\t\t\t// ( event ) dispatched jQuery.Event\n\t\t\thandleObj = types.handleObj;\n\t\t\tjQuery( types.delegateTarget ).off(\n\t\t\t\thandleObj.namespace ?\n\t\t\t\t\thandleObj.origType + \".\" + handleObj.namespace :\n\t\t\t\t\thandleObj.origType,\n\t\t\t\thandleObj.selector,\n\t\t\t\thandleObj.handler\n\t\t\t);\n\t\t\treturn this;\n\t\t}\n\t\tif ( typeof types === \"object\" ) {\n\n\t\t\t// ( types-object [, selector] )\n\t\t\tfor ( type in types ) {\n\t\t\t\tthis.off( type, selector, types[ type ] );\n\t\t\t}\n\t\t\treturn this;\n\t\t}\n\t\tif ( selector === false || typeof selector === \"function\" ) {\n\n\t\t\t// ( types [, fn] )\n\t\t\tfn = selector;\n\t\t\tselector = undefined;\n\t\t}\n\t\tif ( fn === false ) {\n\t\t\tfn = returnFalse;\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.remove( this, types, fn, selector );\n\t\t} );\n\t}\n} );\n\n\nvar\n\n\t// Support: IE <=10 - 11, Edge 12 - 13 only\n\t// In IE/Edge using regex groups here causes severe slowdowns.\n\t// See https://connect.microsoft.com/IE/feedback/details/1736512/\n\trnoInnerhtml = /\\s*$/g;\n\n// Prefer a tbody over its parent table for containing new rows\nfunction manipulationTarget( elem, content ) {\n\tif ( nodeName( elem, \"table\" ) &&\n\t\tnodeName( content.nodeType !== 11 ? content : content.firstChild, \"tr\" ) ) {\n\n\t\treturn jQuery( elem ).children( \"tbody\" )[ 0 ] || elem;\n\t}\n\n\treturn elem;\n}\n\n// Replace/restore the type attribute of script elements for safe DOM manipulation\nfunction disableScript( elem ) {\n\telem.type = ( elem.getAttribute( \"type\" ) !== null ) + \"/\" + elem.type;\n\treturn elem;\n}\nfunction restoreScript( elem ) {\n\tif ( ( elem.type || \"\" ).slice( 0, 5 ) === \"true/\" ) {\n\t\telem.type = elem.type.slice( 5 );\n\t} else {\n\t\telem.removeAttribute( \"type\" );\n\t}\n\n\treturn elem;\n}\n\nfunction cloneCopyEvent( src, dest ) {\n\tvar i, l, type, pdataOld, udataOld, udataCur, events;\n\n\tif ( dest.nodeType !== 1 ) {\n\t\treturn;\n\t}\n\n\t// 1. Copy private data: events, handlers, etc.\n\tif ( dataPriv.hasData( src ) ) {\n\t\tpdataOld = dataPriv.get( src );\n\t\tevents = pdataOld.events;\n\n\t\tif ( events ) {\n\t\t\tdataPriv.remove( dest, \"handle events\" );\n\n\t\t\tfor ( type in events ) {\n\t\t\t\tfor ( i = 0, l = events[ type ].length; i < l; i++ ) {\n\t\t\t\t\tjQuery.event.add( dest, type, events[ type ][ i ] );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// 2. Copy user data\n\tif ( dataUser.hasData( src ) ) {\n\t\tudataOld = dataUser.access( src );\n\t\tudataCur = jQuery.extend( {}, udataOld );\n\n\t\tdataUser.set( dest, udataCur );\n\t}\n}\n\n// Fix IE bugs, see support tests\nfunction fixInput( src, dest ) {\n\tvar nodeName = dest.nodeName.toLowerCase();\n\n\t// Fails to persist the checked state of a cloned checkbox or radio button.\n\tif ( nodeName === \"input\" && rcheckableType.test( src.type ) ) {\n\t\tdest.checked = src.checked;\n\n\t// Fails to return the selected option to the default selected state when cloning options\n\t} else if ( nodeName === \"input\" || nodeName === \"textarea\" ) {\n\t\tdest.defaultValue = src.defaultValue;\n\t}\n}\n\nfunction domManip( collection, args, callback, ignored ) {\n\n\t// Flatten any nested arrays\n\targs = flat( args );\n\n\tvar fragment, first, scripts, hasScripts, node, doc,\n\t\ti = 0,\n\t\tl = collection.length,\n\t\tiNoClone = l - 1,\n\t\tvalue = args[ 0 ],\n\t\tvalueIsFunction = isFunction( value );\n\n\t// We can't cloneNode fragments that contain checked, in WebKit\n\tif ( valueIsFunction ||\n\t\t\t( l > 1 && typeof value === \"string\" &&\n\t\t\t\t!support.checkClone && rchecked.test( value ) ) ) {\n\t\treturn collection.each( function( index ) {\n\t\t\tvar self = collection.eq( index );\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\targs[ 0 ] = value.call( this, index, self.html() );\n\t\t\t}\n\t\t\tdomManip( self, args, callback, ignored );\n\t\t} );\n\t}\n\n\tif ( l ) {\n\t\tfragment = buildFragment( args, collection[ 0 ].ownerDocument, false, collection, ignored );\n\t\tfirst = fragment.firstChild;\n\n\t\tif ( fragment.childNodes.length === 1 ) {\n\t\t\tfragment = first;\n\t\t}\n\n\t\t// Require either new content or an interest in ignored elements to invoke the callback\n\t\tif ( first || ignored ) {\n\t\t\tscripts = jQuery.map( getAll( fragment, \"script\" ), disableScript );\n\t\t\thasScripts = scripts.length;\n\n\t\t\t// Use the original fragment for the last item\n\t\t\t// instead of the first because it can end up\n\t\t\t// being emptied incorrectly in certain situations (#8070).\n\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\tnode = fragment;\n\n\t\t\t\tif ( i !== iNoClone ) {\n\t\t\t\t\tnode = jQuery.clone( node, true, true );\n\n\t\t\t\t\t// Keep references to cloned scripts for later restoration\n\t\t\t\t\tif ( hasScripts ) {\n\n\t\t\t\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t\t\t\t// push.apply(_, arraylike) throws on ancient WebKit\n\t\t\t\t\t\tjQuery.merge( scripts, getAll( node, \"script\" ) );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tcallback.call( collection[ i ], node, i );\n\t\t\t}\n\n\t\t\tif ( hasScripts ) {\n\t\t\t\tdoc = scripts[ scripts.length - 1 ].ownerDocument;\n\n\t\t\t\t// Reenable scripts\n\t\t\t\tjQuery.map( scripts, restoreScript );\n\n\t\t\t\t// Evaluate executable scripts on first document insertion\n\t\t\t\tfor ( i = 0; i < hasScripts; i++ ) {\n\t\t\t\t\tnode = scripts[ i ];\n\t\t\t\t\tif ( rscriptType.test( node.type || \"\" ) &&\n\t\t\t\t\t\t!dataPriv.access( node, \"globalEval\" ) &&\n\t\t\t\t\t\tjQuery.contains( doc, node ) ) {\n\n\t\t\t\t\t\tif ( node.src && ( node.type || \"\" ).toLowerCase() !== \"module\" ) {\n\n\t\t\t\t\t\t\t// Optional AJAX dependency, but won't run scripts if not present\n\t\t\t\t\t\t\tif ( jQuery._evalUrl && !node.noModule ) {\n\t\t\t\t\t\t\t\tjQuery._evalUrl( node.src, {\n\t\t\t\t\t\t\t\t\tnonce: node.nonce || node.getAttribute( \"nonce\" )\n\t\t\t\t\t\t\t\t}, doc );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tDOMEval( node.textContent.replace( rcleanScript, \"\" ), node, doc );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn collection;\n}\n\nfunction remove( elem, selector, keepData ) {\n\tvar node,\n\t\tnodes = selector ? jQuery.filter( selector, elem ) : elem,\n\t\ti = 0;\n\n\tfor ( ; ( node = nodes[ i ] ) != null; i++ ) {\n\t\tif ( !keepData && node.nodeType === 1 ) {\n\t\t\tjQuery.cleanData( getAll( node ) );\n\t\t}\n\n\t\tif ( node.parentNode ) {\n\t\t\tif ( keepData && isAttached( node ) ) {\n\t\t\t\tsetGlobalEval( getAll( node, \"script\" ) );\n\t\t\t}\n\t\t\tnode.parentNode.removeChild( node );\n\t\t}\n\t}\n\n\treturn elem;\n}\n\njQuery.extend( {\n\thtmlPrefilter: function( html ) {\n\t\treturn html;\n\t},\n\n\tclone: function( elem, dataAndEvents, deepDataAndEvents ) {\n\t\tvar i, l, srcElements, destElements,\n\t\t\tclone = elem.cloneNode( true ),\n\t\t\tinPage = isAttached( elem );\n\n\t\t// Fix IE cloning issues\n\t\tif ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&\n\t\t\t\t!jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// We eschew Sizzle here for performance reasons: https://jsperf.com/getall-vs-sizzle/2\n\t\t\tdestElements = getAll( clone );\n\t\t\tsrcElements = getAll( elem );\n\n\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\tfixInput( srcElements[ i ], destElements[ i ] );\n\t\t\t}\n\t\t}\n\n\t\t// Copy the events from the original to the clone\n\t\tif ( dataAndEvents ) {\n\t\t\tif ( deepDataAndEvents ) {\n\t\t\t\tsrcElements = srcElements || getAll( elem );\n\t\t\t\tdestElements = destElements || getAll( clone );\n\n\t\t\t\tfor ( i = 0, l = srcElements.length; i < l; i++ ) {\n\t\t\t\t\tcloneCopyEvent( srcElements[ i ], destElements[ i ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tcloneCopyEvent( elem, clone );\n\t\t\t}\n\t\t}\n\n\t\t// Preserve script evaluation history\n\t\tdestElements = getAll( clone, \"script\" );\n\t\tif ( destElements.length > 0 ) {\n\t\t\tsetGlobalEval( destElements, !inPage && getAll( elem, \"script\" ) );\n\t\t}\n\n\t\t// Return the cloned set\n\t\treturn clone;\n\t},\n\n\tcleanData: function( elems ) {\n\t\tvar data, elem, type,\n\t\t\tspecial = jQuery.event.special,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = elems[ i ] ) !== undefined; i++ ) {\n\t\t\tif ( acceptData( elem ) ) {\n\t\t\t\tif ( ( data = elem[ dataPriv.expando ] ) ) {\n\t\t\t\t\tif ( data.events ) {\n\t\t\t\t\t\tfor ( type in data.events ) {\n\t\t\t\t\t\t\tif ( special[ type ] ) {\n\t\t\t\t\t\t\t\tjQuery.event.remove( elem, type );\n\n\t\t\t\t\t\t\t// This is a shortcut to avoid jQuery.event.remove's overhead\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tjQuery.removeEvent( elem, type, data.handle );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataPriv.expando ] = undefined;\n\t\t\t\t}\n\t\t\t\tif ( elem[ dataUser.expando ] ) {\n\n\t\t\t\t\t// Support: Chrome <=35 - 45+\n\t\t\t\t\t// Assign undefined instead of using delete, see Data#remove\n\t\t\t\t\telem[ dataUser.expando ] = undefined;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n} );\n\njQuery.fn.extend( {\n\tdetach: function( selector ) {\n\t\treturn remove( this, selector, true );\n\t},\n\n\tremove: function( selector ) {\n\t\treturn remove( this, selector );\n\t},\n\n\ttext: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\treturn value === undefined ?\n\t\t\t\tjQuery.text( this ) :\n\t\t\t\tthis.empty().each( function() {\n\t\t\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\t\t\tthis.textContent = value;\n\t\t\t\t\t}\n\t\t\t\t} );\n\t\t}, null, value, arguments.length );\n\t},\n\n\tappend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.appendChild( elem );\n\t\t\t}\n\t\t} );\n\t},\n\n\tprepend: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {\n\t\t\t\tvar target = manipulationTarget( this, elem );\n\t\t\t\ttarget.insertBefore( elem, target.firstChild );\n\t\t\t}\n\t\t} );\n\t},\n\n\tbefore: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this );\n\t\t\t}\n\t\t} );\n\t},\n\n\tafter: function() {\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tif ( this.parentNode ) {\n\t\t\t\tthis.parentNode.insertBefore( elem, this.nextSibling );\n\t\t\t}\n\t\t} );\n\t},\n\n\tempty: function() {\n\t\tvar elem,\n\t\t\ti = 0;\n\n\t\tfor ( ; ( elem = this[ i ] ) != null; i++ ) {\n\t\t\tif ( elem.nodeType === 1 ) {\n\n\t\t\t\t// Prevent memory leaks\n\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\n\t\t\t\t// Remove any remaining nodes\n\t\t\t\telem.textContent = \"\";\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tclone: function( dataAndEvents, deepDataAndEvents ) {\n\t\tdataAndEvents = dataAndEvents == null ? false : dataAndEvents;\n\t\tdeepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;\n\n\t\treturn this.map( function() {\n\t\t\treturn jQuery.clone( this, dataAndEvents, deepDataAndEvents );\n\t\t} );\n\t},\n\n\thtml: function( value ) {\n\t\treturn access( this, function( value ) {\n\t\t\tvar elem = this[ 0 ] || {},\n\t\t\t\ti = 0,\n\t\t\t\tl = this.length;\n\n\t\t\tif ( value === undefined && elem.nodeType === 1 ) {\n\t\t\t\treturn elem.innerHTML;\n\t\t\t}\n\n\t\t\t// See if we can take a shortcut and just use innerHTML\n\t\t\tif ( typeof value === \"string\" && !rnoInnerhtml.test( value ) &&\n\t\t\t\t!wrapMap[ ( rtagName.exec( value ) || [ \"\", \"\" ] )[ 1 ].toLowerCase() ] ) {\n\n\t\t\t\tvalue = jQuery.htmlPrefilter( value );\n\n\t\t\t\ttry {\n\t\t\t\t\tfor ( ; i < l; i++ ) {\n\t\t\t\t\t\telem = this[ i ] || {};\n\n\t\t\t\t\t\t// Remove element nodes and prevent memory leaks\n\t\t\t\t\t\tif ( elem.nodeType === 1 ) {\n\t\t\t\t\t\t\tjQuery.cleanData( getAll( elem, false ) );\n\t\t\t\t\t\t\telem.innerHTML = value;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\telem = 0;\n\n\t\t\t\t// If using innerHTML throws an exception, use the fallback method\n\t\t\t\t} catch ( e ) {}\n\t\t\t}\n\n\t\t\tif ( elem ) {\n\t\t\t\tthis.empty().append( value );\n\t\t\t}\n\t\t}, null, value, arguments.length );\n\t},\n\n\treplaceWith: function() {\n\t\tvar ignored = [];\n\n\t\t// Make the changes, replacing each non-ignored context element with the new content\n\t\treturn domManip( this, arguments, function( elem ) {\n\t\t\tvar parent = this.parentNode;\n\n\t\t\tif ( jQuery.inArray( this, ignored ) < 0 ) {\n\t\t\t\tjQuery.cleanData( getAll( this ) );\n\t\t\t\tif ( parent ) {\n\t\t\t\t\tparent.replaceChild( elem, this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t// Force callback invocation\n\t\t}, ignored );\n\t}\n} );\n\njQuery.each( {\n\tappendTo: \"append\",\n\tprependTo: \"prepend\",\n\tinsertBefore: \"before\",\n\tinsertAfter: \"after\",\n\treplaceAll: \"replaceWith\"\n}, function( name, original ) {\n\tjQuery.fn[ name ] = function( selector ) {\n\t\tvar elems,\n\t\t\tret = [],\n\t\t\tinsert = jQuery( selector ),\n\t\t\tlast = insert.length - 1,\n\t\t\ti = 0;\n\n\t\tfor ( ; i <= last; i++ ) {\n\t\t\telems = i === last ? this : this.clone( true );\n\t\t\tjQuery( insert[ i ] )[ original ]( elems );\n\n\t\t\t// Support: Android <=4.0 only, PhantomJS 1 only\n\t\t\t// .get() because push.apply(_, arraylike) throws on ancient WebKit\n\t\t\tpush.apply( ret, elems.get() );\n\t\t}\n\n\t\treturn this.pushStack( ret );\n\t};\n} );\nvar rnumnonpx = new RegExp( \"^(\" + pnum + \")(?!px)[a-z%]+$\", \"i\" );\n\nvar getStyles = function( elem ) {\n\n\t\t// Support: IE <=11 only, Firefox <=30 (#15098, #14150)\n\t\t// IE throws on elements created in popups\n\t\t// FF meanwhile throws on frame elements through \"defaultView.getComputedStyle\"\n\t\tvar view = elem.ownerDocument.defaultView;\n\n\t\tif ( !view || !view.opener ) {\n\t\t\tview = window;\n\t\t}\n\n\t\treturn view.getComputedStyle( elem );\n\t};\n\nvar swap = function( elem, options, callback ) {\n\tvar ret, name,\n\t\told = {};\n\n\t// Remember the old values, and insert the new ones\n\tfor ( name in options ) {\n\t\told[ name ] = elem.style[ name ];\n\t\telem.style[ name ] = options[ name ];\n\t}\n\n\tret = callback.call( elem );\n\n\t// Revert the old values\n\tfor ( name in options ) {\n\t\telem.style[ name ] = old[ name ];\n\t}\n\n\treturn ret;\n};\n\n\nvar rboxStyle = new RegExp( cssExpand.join( \"|\" ), \"i\" );\n\n\n\n( function() {\n\n\t// Executing both pixelPosition & boxSizingReliable tests require only one layout\n\t// so they're executed at the same time to save the second computation.\n\tfunction computeStyleTests() {\n\n\t\t// This is a singleton, we need to execute it only once\n\t\tif ( !div ) {\n\t\t\treturn;\n\t\t}\n\n\t\tcontainer.style.cssText = \"position:absolute;left:-11111px;width:60px;\" +\n\t\t\t\"margin-top:1px;padding:0;border:0\";\n\t\tdiv.style.cssText =\n\t\t\t\"position:relative;display:block;box-sizing:border-box;overflow:scroll;\" +\n\t\t\t\"margin:auto;border:1px;padding:1px;\" +\n\t\t\t\"width:60%;top:1%\";\n\t\tdocumentElement.appendChild( container ).appendChild( div );\n\n\t\tvar divStyle = window.getComputedStyle( div );\n\t\tpixelPositionVal = divStyle.top !== \"1%\";\n\n\t\t// Support: Android 4.0 - 4.3 only, Firefox <=3 - 44\n\t\treliableMarginLeftVal = roundPixelMeasures( divStyle.marginLeft ) === 12;\n\n\t\t// Support: Android 4.0 - 4.3 only, Safari <=9.1 - 10.1, iOS <=7.0 - 9.3\n\t\t// Some styles come back with percentage values, even though they shouldn't\n\t\tdiv.style.right = \"60%\";\n\t\tpixelBoxStylesVal = roundPixelMeasures( divStyle.right ) === 36;\n\n\t\t// Support: IE 9 - 11 only\n\t\t// Detect misreporting of content dimensions for box-sizing:border-box elements\n\t\tboxSizingReliableVal = roundPixelMeasures( divStyle.width ) === 36;\n\n\t\t// Support: IE 9 only\n\t\t// Detect overflow:scroll screwiness (gh-3699)\n\t\t// Support: Chrome <=64\n\t\t// Don't get tricked when zoom affects offsetWidth (gh-4029)\n\t\tdiv.style.position = \"absolute\";\n\t\tscrollboxSizeVal = roundPixelMeasures( div.offsetWidth / 3 ) === 12;\n\n\t\tdocumentElement.removeChild( container );\n\n\t\t// Nullify the div so it wouldn't be stored in the memory and\n\t\t// it will also be a sign that checks already performed\n\t\tdiv = null;\n\t}\n\n\tfunction roundPixelMeasures( measure ) {\n\t\treturn Math.round( parseFloat( measure ) );\n\t}\n\n\tvar pixelPositionVal, boxSizingReliableVal, scrollboxSizeVal, pixelBoxStylesVal,\n\t\treliableTrDimensionsVal, reliableMarginLeftVal,\n\t\tcontainer = document.createElement( \"div\" ),\n\t\tdiv = document.createElement( \"div\" );\n\n\t// Finish early in limited (non-browser) environments\n\tif ( !div.style ) {\n\t\treturn;\n\t}\n\n\t// Support: IE <=9 - 11 only\n\t// Style of cloned element affects source element cloned (#8908)\n\tdiv.style.backgroundClip = \"content-box\";\n\tdiv.cloneNode( true ).style.backgroundClip = \"\";\n\tsupport.clearCloneStyle = div.style.backgroundClip === \"content-box\";\n\n\tjQuery.extend( support, {\n\t\tboxSizingReliable: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn boxSizingReliableVal;\n\t\t},\n\t\tpixelBoxStyles: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelBoxStylesVal;\n\t\t},\n\t\tpixelPosition: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn pixelPositionVal;\n\t\t},\n\t\treliableMarginLeft: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn reliableMarginLeftVal;\n\t\t},\n\t\tscrollboxSize: function() {\n\t\t\tcomputeStyleTests();\n\t\t\treturn scrollboxSizeVal;\n\t\t},\n\n\t\t// Support: IE 9 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Behavior in IE 9 is more subtle than in newer versions & it passes\n\t\t// some versions of this test; make sure not to make it pass there!\n\t\t//\n\t\t// Support: Firefox 70+\n\t\t// Only Firefox includes border widths\n\t\t// in computed dimensions. (gh-4529)\n\t\treliableTrDimensions: function() {\n\t\t\tvar table, tr, trChild, trStyle;\n\t\t\tif ( reliableTrDimensionsVal == null ) {\n\t\t\t\ttable = document.createElement( \"table\" );\n\t\t\t\ttr = document.createElement( \"tr\" );\n\t\t\t\ttrChild = document.createElement( \"div\" );\n\n\t\t\t\ttable.style.cssText = \"position:absolute;left:-11111px;border-collapse:separate\";\n\t\t\t\ttr.style.cssText = \"border:1px solid\";\n\n\t\t\t\t// Support: Chrome 86+\n\t\t\t\t// Height set through cssText does not get applied.\n\t\t\t\t// Computed height then comes back as 0.\n\t\t\t\ttr.style.height = \"1px\";\n\t\t\t\ttrChild.style.height = \"9px\";\n\n\t\t\t\t// Support: Android 8 Chrome 86+\n\t\t\t\t// In our bodyBackground.html iframe,\n\t\t\t\t// display for all div elements is set to \"inline\",\n\t\t\t\t// which causes a problem only in Android 8 Chrome 86.\n\t\t\t\t// Ensuring the div is display: block\n\t\t\t\t// gets around this issue.\n\t\t\t\ttrChild.style.display = \"block\";\n\n\t\t\t\tdocumentElement\n\t\t\t\t\t.appendChild( table )\n\t\t\t\t\t.appendChild( tr )\n\t\t\t\t\t.appendChild( trChild );\n\n\t\t\t\ttrStyle = window.getComputedStyle( tr );\n\t\t\t\treliableTrDimensionsVal = ( parseInt( trStyle.height, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderTopWidth, 10 ) +\n\t\t\t\t\tparseInt( trStyle.borderBottomWidth, 10 ) ) === tr.offsetHeight;\n\n\t\t\t\tdocumentElement.removeChild( table );\n\t\t\t}\n\t\t\treturn reliableTrDimensionsVal;\n\t\t}\n\t} );\n} )();\n\n\nfunction curCSS( elem, name, computed ) {\n\tvar width, minWidth, maxWidth, ret,\n\n\t\t// Support: Firefox 51+\n\t\t// Retrieving style before computed somehow\n\t\t// fixes an issue with getting wrong values\n\t\t// on detached elements\n\t\tstyle = elem.style;\n\n\tcomputed = computed || getStyles( elem );\n\n\t// getPropertyValue is needed for:\n\t// .css('filter') (IE 9 only, #12537)\n\t// .css('--customProperty) (#3144)\n\tif ( computed ) {\n\t\tret = computed.getPropertyValue( name ) || computed[ name ];\n\n\t\tif ( ret === \"\" && !isAttached( elem ) ) {\n\t\t\tret = jQuery.style( elem, name );\n\t\t}\n\n\t\t// A tribute to the \"awesome hack by Dean Edwards\"\n\t\t// Android Browser returns percentage for some values,\n\t\t// but width seems to be reliably pixels.\n\t\t// This is against the CSSOM draft spec:\n\t\t// https://drafts.csswg.org/cssom/#resolved-values\n\t\tif ( !support.pixelBoxStyles() && rnumnonpx.test( ret ) && rboxStyle.test( name ) ) {\n\n\t\t\t// Remember the original values\n\t\t\twidth = style.width;\n\t\t\tminWidth = style.minWidth;\n\t\t\tmaxWidth = style.maxWidth;\n\n\t\t\t// Put in the new values to get a computed value out\n\t\t\tstyle.minWidth = style.maxWidth = style.width = ret;\n\t\t\tret = computed.width;\n\n\t\t\t// Revert the changed values\n\t\t\tstyle.width = width;\n\t\t\tstyle.minWidth = minWidth;\n\t\t\tstyle.maxWidth = maxWidth;\n\t\t}\n\t}\n\n\treturn ret !== undefined ?\n\n\t\t// Support: IE <=9 - 11 only\n\t\t// IE returns zIndex value as an integer.\n\t\tret + \"\" :\n\t\tret;\n}\n\n\nfunction addGetHookIf( conditionFn, hookFn ) {\n\n\t// Define the hook, we'll check on the first run if it's really needed.\n\treturn {\n\t\tget: function() {\n\t\t\tif ( conditionFn() ) {\n\n\t\t\t\t// Hook not needed (or it's not possible to use it due\n\t\t\t\t// to missing dependency), remove it.\n\t\t\t\tdelete this.get;\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Hook needed; redefine it so that the support test is not executed again.\n\t\t\treturn ( this.get = hookFn ).apply( this, arguments );\n\t\t}\n\t};\n}\n\n\nvar cssPrefixes = [ \"Webkit\", \"Moz\", \"ms\" ],\n\temptyStyle = document.createElement( \"div\" ).style,\n\tvendorProps = {};\n\n// Return a vendor-prefixed property or undefined\nfunction vendorPropName( name ) {\n\n\t// Check for vendor prefixed names\n\tvar capName = name[ 0 ].toUpperCase() + name.slice( 1 ),\n\t\ti = cssPrefixes.length;\n\n\twhile ( i-- ) {\n\t\tname = cssPrefixes[ i ] + capName;\n\t\tif ( name in emptyStyle ) {\n\t\t\treturn name;\n\t\t}\n\t}\n}\n\n// Return a potentially-mapped jQuery.cssProps or vendor prefixed property\nfunction finalPropName( name ) {\n\tvar final = jQuery.cssProps[ name ] || vendorProps[ name ];\n\n\tif ( final ) {\n\t\treturn final;\n\t}\n\tif ( name in emptyStyle ) {\n\t\treturn name;\n\t}\n\treturn vendorProps[ name ] = vendorPropName( name ) || name;\n}\n\n\nvar\n\n\t// Swappable if display is none or starts with table\n\t// except \"table\", \"table-cell\", or \"table-caption\"\n\t// See here for display values: https://developer.mozilla.org/en-US/docs/CSS/display\n\trdisplayswap = /^(none|table(?!-c[ea]).+)/,\n\trcustomProp = /^--/,\n\tcssShow = { position: \"absolute\", visibility: \"hidden\", display: \"block\" },\n\tcssNormalTransform = {\n\t\tletterSpacing: \"0\",\n\t\tfontWeight: \"400\"\n\t};\n\nfunction setPositiveNumber( _elem, value, subtract ) {\n\n\t// Any relative (+/-) values have already been\n\t// normalized at this point\n\tvar matches = rcssNum.exec( value );\n\treturn matches ?\n\n\t\t// Guard against undefined \"subtract\", e.g., when used as in cssHooks\n\t\tMath.max( 0, matches[ 2 ] - ( subtract || 0 ) ) + ( matches[ 3 ] || \"px\" ) :\n\t\tvalue;\n}\n\nfunction boxModelAdjustment( elem, dimension, box, isBorderBox, styles, computedVal ) {\n\tvar i = dimension === \"width\" ? 1 : 0,\n\t\textra = 0,\n\t\tdelta = 0;\n\n\t// Adjustment may not be necessary\n\tif ( box === ( isBorderBox ? \"border\" : \"content\" ) ) {\n\t\treturn 0;\n\t}\n\n\tfor ( ; i < 4; i += 2 ) {\n\n\t\t// Both box models exclude margin\n\t\tif ( box === \"margin\" ) {\n\t\t\tdelta += jQuery.css( elem, box + cssExpand[ i ], true, styles );\n\t\t}\n\n\t\t// If we get here with a content-box, we're seeking \"padding\" or \"border\" or \"margin\"\n\t\tif ( !isBorderBox ) {\n\n\t\t\t// Add padding\n\t\t\tdelta += jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\n\t\t\t// For \"border\" or \"margin\", add border\n\t\t\tif ( box !== \"padding\" ) {\n\t\t\t\tdelta += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\n\t\t\t// But still keep track of it otherwise\n\t\t\t} else {\n\t\t\t\textra += jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\n\t\t// If we get here with a border-box (content + padding + border), we're seeking \"content\" or\n\t\t// \"padding\" or \"margin\"\n\t\t} else {\n\n\t\t\t// For \"content\", subtract padding\n\t\t\tif ( box === \"content\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"padding\" + cssExpand[ i ], true, styles );\n\t\t\t}\n\n\t\t\t// For \"content\" or \"padding\", subtract border\n\t\t\tif ( box !== \"margin\" ) {\n\t\t\t\tdelta -= jQuery.css( elem, \"border\" + cssExpand[ i ] + \"Width\", true, styles );\n\t\t\t}\n\t\t}\n\t}\n\n\t// Account for positive content-box scroll gutter when requested by providing computedVal\n\tif ( !isBorderBox && computedVal >= 0 ) {\n\n\t\t// offsetWidth/offsetHeight is a rounded sum of content, padding, scroll gutter, and border\n\t\t// Assuming integer scroll gutter, subtract the rest and round down\n\t\tdelta += Math.max( 0, Math.ceil(\n\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\tcomputedVal -\n\t\t\tdelta -\n\t\t\textra -\n\t\t\t0.5\n\n\t\t// If offsetWidth/offsetHeight is unknown, then we can't determine content-box scroll gutter\n\t\t// Use an explicit zero to avoid NaN (gh-3964)\n\t\t) ) || 0;\n\t}\n\n\treturn delta;\n}\n\nfunction getWidthOrHeight( elem, dimension, extra ) {\n\n\t// Start with computed style\n\tvar styles = getStyles( elem ),\n\n\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-4322).\n\t\t// Fake content-box until we know it's needed to know the true value.\n\t\tboxSizingNeeded = !support.boxSizingReliable() || extra,\n\t\tisBorderBox = boxSizingNeeded &&\n\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\tvalueIsBorderBox = isBorderBox,\n\n\t\tval = curCSS( elem, dimension, styles ),\n\t\toffsetProp = \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 );\n\n\t// Support: Firefox <=54\n\t// Return a confounding non-pixel value or feign ignorance, as appropriate.\n\tif ( rnumnonpx.test( val ) ) {\n\t\tif ( !extra ) {\n\t\t\treturn val;\n\t\t}\n\t\tval = \"auto\";\n\t}\n\n\n\t// Support: IE 9 - 11 only\n\t// Use offsetWidth/offsetHeight for when box sizing is unreliable.\n\t// In those cases, the computed value can be trusted to be border-box.\n\tif ( ( !support.boxSizingReliable() && isBorderBox ||\n\n\t\t// Support: IE 10 - 11+, Edge 15 - 18+\n\t\t// IE/Edge misreport `getComputedStyle` of table rows with width/height\n\t\t// set in CSS while `offset*` properties report correct values.\n\t\t// Interestingly, in some cases IE 9 doesn't suffer from this issue.\n\t\t!support.reliableTrDimensions() && nodeName( elem, \"tr\" ) ||\n\n\t\t// Fall back to offsetWidth/offsetHeight when value is \"auto\"\n\t\t// This happens for inline elements with no explicit setting (gh-3571)\n\t\tval === \"auto\" ||\n\n\t\t// Support: Android <=4.1 - 4.3 only\n\t\t// Also use offsetWidth/offsetHeight for misreported inline dimensions (gh-3602)\n\t\t!parseFloat( val ) && jQuery.css( elem, \"display\", false, styles ) === \"inline\" ) &&\n\n\t\t// Make sure the element is visible & connected\n\t\telem.getClientRects().length ) {\n\n\t\tisBorderBox = jQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\";\n\n\t\t// Where available, offsetWidth/offsetHeight approximate border box dimensions.\n\t\t// Where not available (e.g., SVG), assume unreliable box-sizing and interpret the\n\t\t// retrieved value as a content box dimension.\n\t\tvalueIsBorderBox = offsetProp in elem;\n\t\tif ( valueIsBorderBox ) {\n\t\t\tval = elem[ offsetProp ];\n\t\t}\n\t}\n\n\t// Normalize \"\" and auto\n\tval = parseFloat( val ) || 0;\n\n\t// Adjust for the element's box model\n\treturn ( val +\n\t\tboxModelAdjustment(\n\t\t\telem,\n\t\t\tdimension,\n\t\t\textra || ( isBorderBox ? \"border\" : \"content\" ),\n\t\t\tvalueIsBorderBox,\n\t\t\tstyles,\n\n\t\t\t// Provide the current computed size to request scroll gutter calculation (gh-3589)\n\t\t\tval\n\t\t)\n\t) + \"px\";\n}\n\njQuery.extend( {\n\n\t// Add in style property hooks for overriding the default\n\t// behavior of getting and setting a style property\n\tcssHooks: {\n\t\topacity: {\n\t\t\tget: function( elem, computed ) {\n\t\t\t\tif ( computed ) {\n\n\t\t\t\t\t// We should always get a number back from opacity\n\t\t\t\t\tvar ret = curCSS( elem, \"opacity\" );\n\t\t\t\t\treturn ret === \"\" ? \"1\" : ret;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\t// Don't automatically add \"px\" to these possibly-unitless properties\n\tcssNumber: {\n\t\t\"animationIterationCount\": true,\n\t\t\"columnCount\": true,\n\t\t\"fillOpacity\": true,\n\t\t\"flexGrow\": true,\n\t\t\"flexShrink\": true,\n\t\t\"fontWeight\": true,\n\t\t\"gridArea\": true,\n\t\t\"gridColumn\": true,\n\t\t\"gridColumnEnd\": true,\n\t\t\"gridColumnStart\": true,\n\t\t\"gridRow\": true,\n\t\t\"gridRowEnd\": true,\n\t\t\"gridRowStart\": true,\n\t\t\"lineHeight\": true,\n\t\t\"opacity\": true,\n\t\t\"order\": true,\n\t\t\"orphans\": true,\n\t\t\"widows\": true,\n\t\t\"zIndex\": true,\n\t\t\"zoom\": true\n\t},\n\n\t// Add in properties whose names you wish to fix before\n\t// setting or getting the value\n\tcssProps: {},\n\n\t// Get and set the style property on a DOM Node\n\tstyle: function( elem, name, value, extra ) {\n\n\t\t// Don't set styles on text and comment nodes\n\t\tif ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Make sure that we're working with the right name\n\t\tvar ret, type, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name ),\n\t\t\tstyle = elem.style;\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to query the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Gets hook for the prefixed version, then unprefixed version\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// Check if we're setting a value\n\t\tif ( value !== undefined ) {\n\t\t\ttype = typeof value;\n\n\t\t\t// Convert \"+=\" or \"-=\" to relative numbers (#7345)\n\t\t\tif ( type === \"string\" && ( ret = rcssNum.exec( value ) ) && ret[ 1 ] ) {\n\t\t\t\tvalue = adjustCSS( elem, name, ret );\n\n\t\t\t\t// Fixes bug #9237\n\t\t\t\ttype = \"number\";\n\t\t\t}\n\n\t\t\t// Make sure that null and NaN values aren't set (#7116)\n\t\t\tif ( value == null || value !== value ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// If a number was passed in, add the unit (except for certain CSS properties)\n\t\t\t// The isCustomProp check can be removed in jQuery 4.0 when we only auto-append\n\t\t\t// \"px\" to a few hardcoded values.\n\t\t\tif ( type === \"number\" && !isCustomProp ) {\n\t\t\t\tvalue += ret && ret[ 3 ] || ( jQuery.cssNumber[ origName ] ? \"\" : \"px\" );\n\t\t\t}\n\n\t\t\t// background-* props affect original clone's values\n\t\t\tif ( !support.clearCloneStyle && value === \"\" && name.indexOf( \"background\" ) === 0 ) {\n\t\t\t\tstyle[ name ] = \"inherit\";\n\t\t\t}\n\n\t\t\t// If a hook was provided, use that value, otherwise just set the specified value\n\t\t\tif ( !hooks || !( \"set\" in hooks ) ||\n\t\t\t\t( value = hooks.set( elem, value, extra ) ) !== undefined ) {\n\n\t\t\t\tif ( isCustomProp ) {\n\t\t\t\t\tstyle.setProperty( name, value );\n\t\t\t\t} else {\n\t\t\t\t\tstyle[ name ] = value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t} else {\n\n\t\t\t// If a hook was provided get the non-computed value from there\n\t\t\tif ( hooks && \"get\" in hooks &&\n\t\t\t\t( ret = hooks.get( elem, false, extra ) ) !== undefined ) {\n\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\t// Otherwise just get the value from the style object\n\t\t\treturn style[ name ];\n\t\t}\n\t},\n\n\tcss: function( elem, name, extra, styles ) {\n\t\tvar val, num, hooks,\n\t\t\torigName = camelCase( name ),\n\t\t\tisCustomProp = rcustomProp.test( name );\n\n\t\t// Make sure that we're working with the right name. We don't\n\t\t// want to modify the value if it is a CSS custom property\n\t\t// since they are user-defined.\n\t\tif ( !isCustomProp ) {\n\t\t\tname = finalPropName( origName );\n\t\t}\n\n\t\t// Try prefixed name followed by the unprefixed name\n\t\thooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];\n\n\t\t// If a hook was provided get the computed value from there\n\t\tif ( hooks && \"get\" in hooks ) {\n\t\t\tval = hooks.get( elem, true, extra );\n\t\t}\n\n\t\t// Otherwise, if a way to get the computed value exists, use that\n\t\tif ( val === undefined ) {\n\t\t\tval = curCSS( elem, name, styles );\n\t\t}\n\n\t\t// Convert \"normal\" to computed value\n\t\tif ( val === \"normal\" && name in cssNormalTransform ) {\n\t\t\tval = cssNormalTransform[ name ];\n\t\t}\n\n\t\t// Make numeric if forced or a qualifier was provided and val looks numeric\n\t\tif ( extra === \"\" || extra ) {\n\t\t\tnum = parseFloat( val );\n\t\t\treturn extra === true || isFinite( num ) ? num || 0 : val;\n\t\t}\n\n\t\treturn val;\n\t}\n} );\n\njQuery.each( [ \"height\", \"width\" ], function( _i, dimension ) {\n\tjQuery.cssHooks[ dimension ] = {\n\t\tget: function( elem, computed, extra ) {\n\t\t\tif ( computed ) {\n\n\t\t\t\t// Certain elements can have dimension info if we invisibly show them\n\t\t\t\t// but it must have a current display style that would benefit\n\t\t\t\treturn rdisplayswap.test( jQuery.css( elem, \"display\" ) ) &&\n\n\t\t\t\t\t// Support: Safari 8+\n\t\t\t\t\t// Table columns in Safari have non-zero offsetWidth & zero\n\t\t\t\t\t// getBoundingClientRect().width unless display is changed.\n\t\t\t\t\t// Support: IE <=11 only\n\t\t\t\t\t// Running getBoundingClientRect on a disconnected node\n\t\t\t\t\t// in IE throws an error.\n\t\t\t\t\t( !elem.getClientRects().length || !elem.getBoundingClientRect().width ) ?\n\t\t\t\t\tswap( elem, cssShow, function() {\n\t\t\t\t\t\treturn getWidthOrHeight( elem, dimension, extra );\n\t\t\t\t\t} ) :\n\t\t\t\t\tgetWidthOrHeight( elem, dimension, extra );\n\t\t\t}\n\t\t},\n\n\t\tset: function( elem, value, extra ) {\n\t\t\tvar matches,\n\t\t\t\tstyles = getStyles( elem ),\n\n\t\t\t\t// Only read styles.position if the test has a chance to fail\n\t\t\t\t// to avoid forcing a reflow.\n\t\t\t\tscrollboxSizeBuggy = !support.scrollboxSize() &&\n\t\t\t\t\tstyles.position === \"absolute\",\n\n\t\t\t\t// To avoid forcing a reflow, only fetch boxSizing if we need it (gh-3991)\n\t\t\t\tboxSizingNeeded = scrollboxSizeBuggy || extra,\n\t\t\t\tisBorderBox = boxSizingNeeded &&\n\t\t\t\t\tjQuery.css( elem, \"boxSizing\", false, styles ) === \"border-box\",\n\t\t\t\tsubtract = extra ?\n\t\t\t\t\tboxModelAdjustment(\n\t\t\t\t\t\telem,\n\t\t\t\t\t\tdimension,\n\t\t\t\t\t\textra,\n\t\t\t\t\t\tisBorderBox,\n\t\t\t\t\t\tstyles\n\t\t\t\t\t) :\n\t\t\t\t\t0;\n\n\t\t\t// Account for unreliable border-box dimensions by comparing offset* to computed and\n\t\t\t// faking a content-box to get border and padding (gh-3699)\n\t\t\tif ( isBorderBox && scrollboxSizeBuggy ) {\n\t\t\t\tsubtract -= Math.ceil(\n\t\t\t\t\telem[ \"offset\" + dimension[ 0 ].toUpperCase() + dimension.slice( 1 ) ] -\n\t\t\t\t\tparseFloat( styles[ dimension ] ) -\n\t\t\t\t\tboxModelAdjustment( elem, dimension, \"border\", false, styles ) -\n\t\t\t\t\t0.5\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// Convert to pixels if value adjustment is needed\n\t\t\tif ( subtract && ( matches = rcssNum.exec( value ) ) &&\n\t\t\t\t( matches[ 3 ] || \"px\" ) !== \"px\" ) {\n\n\t\t\t\telem.style[ dimension ] = value;\n\t\t\t\tvalue = jQuery.css( elem, dimension );\n\t\t\t}\n\n\t\t\treturn setPositiveNumber( elem, value, subtract );\n\t\t}\n\t};\n} );\n\njQuery.cssHooks.marginLeft = addGetHookIf( support.reliableMarginLeft,\n\tfunction( elem, computed ) {\n\t\tif ( computed ) {\n\t\t\treturn ( parseFloat( curCSS( elem, \"marginLeft\" ) ) ||\n\t\t\t\telem.getBoundingClientRect().left -\n\t\t\t\t\tswap( elem, { marginLeft: 0 }, function() {\n\t\t\t\t\t\treturn elem.getBoundingClientRect().left;\n\t\t\t\t\t} )\n\t\t\t) + \"px\";\n\t\t}\n\t}\n);\n\n// These hooks are used by animate to expand properties\njQuery.each( {\n\tmargin: \"\",\n\tpadding: \"\",\n\tborder: \"Width\"\n}, function( prefix, suffix ) {\n\tjQuery.cssHooks[ prefix + suffix ] = {\n\t\texpand: function( value ) {\n\t\t\tvar i = 0,\n\t\t\t\texpanded = {},\n\n\t\t\t\t// Assumes a single number if not a string\n\t\t\t\tparts = typeof value === \"string\" ? value.split( \" \" ) : [ value ];\n\n\t\t\tfor ( ; i < 4; i++ ) {\n\t\t\t\texpanded[ prefix + cssExpand[ i ] + suffix ] =\n\t\t\t\t\tparts[ i ] || parts[ i - 2 ] || parts[ 0 ];\n\t\t\t}\n\n\t\t\treturn expanded;\n\t\t}\n\t};\n\n\tif ( prefix !== \"margin\" ) {\n\t\tjQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;\n\t}\n} );\n\njQuery.fn.extend( {\n\tcss: function( name, value ) {\n\t\treturn access( this, function( elem, name, value ) {\n\t\t\tvar styles, len,\n\t\t\t\tmap = {},\n\t\t\t\ti = 0;\n\n\t\t\tif ( Array.isArray( name ) ) {\n\t\t\t\tstyles = getStyles( elem );\n\t\t\t\tlen = name.length;\n\n\t\t\t\tfor ( ; i < len; i++ ) {\n\t\t\t\t\tmap[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );\n\t\t\t\t}\n\n\t\t\t\treturn map;\n\t\t\t}\n\n\t\t\treturn value !== undefined ?\n\t\t\t\tjQuery.style( elem, name, value ) :\n\t\t\t\tjQuery.css( elem, name );\n\t\t}, name, value, arguments.length > 1 );\n\t}\n} );\n\n\nfunction Tween( elem, options, prop, end, easing ) {\n\treturn new Tween.prototype.init( elem, options, prop, end, easing );\n}\njQuery.Tween = Tween;\n\nTween.prototype = {\n\tconstructor: Tween,\n\tinit: function( elem, options, prop, end, easing, unit ) {\n\t\tthis.elem = elem;\n\t\tthis.prop = prop;\n\t\tthis.easing = easing || jQuery.easing._default;\n\t\tthis.options = options;\n\t\tthis.start = this.now = this.cur();\n\t\tthis.end = end;\n\t\tthis.unit = unit || ( jQuery.cssNumber[ prop ] ? \"\" : \"px\" );\n\t},\n\tcur: function() {\n\t\tvar hooks = Tween.propHooks[ this.prop ];\n\n\t\treturn hooks && hooks.get ?\n\t\t\thooks.get( this ) :\n\t\t\tTween.propHooks._default.get( this );\n\t},\n\trun: function( percent ) {\n\t\tvar eased,\n\t\t\thooks = Tween.propHooks[ this.prop ];\n\n\t\tif ( this.options.duration ) {\n\t\t\tthis.pos = eased = jQuery.easing[ this.easing ](\n\t\t\t\tpercent, this.options.duration * percent, 0, 1, this.options.duration\n\t\t\t);\n\t\t} else {\n\t\t\tthis.pos = eased = percent;\n\t\t}\n\t\tthis.now = ( this.end - this.start ) * eased + this.start;\n\n\t\tif ( this.options.step ) {\n\t\t\tthis.options.step.call( this.elem, this.now, this );\n\t\t}\n\n\t\tif ( hooks && hooks.set ) {\n\t\t\thooks.set( this );\n\t\t} else {\n\t\t\tTween.propHooks._default.set( this );\n\t\t}\n\t\treturn this;\n\t}\n};\n\nTween.prototype.init.prototype = Tween.prototype;\n\nTween.propHooks = {\n\t_default: {\n\t\tget: function( tween ) {\n\t\t\tvar result;\n\n\t\t\t// Use a property on the element directly when it is not a DOM element,\n\t\t\t// or when there is no matching style property that exists.\n\t\t\tif ( tween.elem.nodeType !== 1 ||\n\t\t\t\ttween.elem[ tween.prop ] != null && tween.elem.style[ tween.prop ] == null ) {\n\t\t\t\treturn tween.elem[ tween.prop ];\n\t\t\t}\n\n\t\t\t// Passing an empty string as a 3rd parameter to .css will automatically\n\t\t\t// attempt a parseFloat and fallback to a string if the parse fails.\n\t\t\t// Simple values such as \"10px\" are parsed to Float;\n\t\t\t// complex values such as \"rotate(1rad)\" are returned as-is.\n\t\t\tresult = jQuery.css( tween.elem, tween.prop, \"\" );\n\n\t\t\t// Empty strings, null, undefined and \"auto\" are converted to 0.\n\t\t\treturn !result || result === \"auto\" ? 0 : result;\n\t\t},\n\t\tset: function( tween ) {\n\n\t\t\t// Use step hook for back compat.\n\t\t\t// Use cssHook if its there.\n\t\t\t// Use .style if available and use plain properties where available.\n\t\t\tif ( jQuery.fx.step[ tween.prop ] ) {\n\t\t\t\tjQuery.fx.step[ tween.prop ]( tween );\n\t\t\t} else if ( tween.elem.nodeType === 1 && (\n\t\t\t\tjQuery.cssHooks[ tween.prop ] ||\n\t\t\t\t\ttween.elem.style[ finalPropName( tween.prop ) ] != null ) ) {\n\t\t\t\tjQuery.style( tween.elem, tween.prop, tween.now + tween.unit );\n\t\t\t} else {\n\t\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t\t}\n\t\t}\n\t}\n};\n\n// Support: IE <=9 only\n// Panic based approach to setting things on disconnected nodes\nTween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {\n\tset: function( tween ) {\n\t\tif ( tween.elem.nodeType && tween.elem.parentNode ) {\n\t\t\ttween.elem[ tween.prop ] = tween.now;\n\t\t}\n\t}\n};\n\njQuery.easing = {\n\tlinear: function( p ) {\n\t\treturn p;\n\t},\n\tswing: function( p ) {\n\t\treturn 0.5 - Math.cos( p * Math.PI ) / 2;\n\t},\n\t_default: \"swing\"\n};\n\njQuery.fx = Tween.prototype.init;\n\n// Back compat <1.8 extension point\njQuery.fx.step = {};\n\n\n\n\nvar\n\tfxNow, inProgress,\n\trfxtypes = /^(?:toggle|show|hide)$/,\n\trrun = /queueHooks$/;\n\nfunction schedule() {\n\tif ( inProgress ) {\n\t\tif ( document.hidden === false && window.requestAnimationFrame ) {\n\t\t\twindow.requestAnimationFrame( schedule );\n\t\t} else {\n\t\t\twindow.setTimeout( schedule, jQuery.fx.interval );\n\t\t}\n\n\t\tjQuery.fx.tick();\n\t}\n}\n\n// Animations created synchronously will run synchronously\nfunction createFxNow() {\n\twindow.setTimeout( function() {\n\t\tfxNow = undefined;\n\t} );\n\treturn ( fxNow = Date.now() );\n}\n\n// Generate parameters to create a standard animation\nfunction genFx( type, includeWidth ) {\n\tvar which,\n\t\ti = 0,\n\t\tattrs = { height: type };\n\n\t// If we include width, step value is 1 to do all cssExpand values,\n\t// otherwise step value is 2 to skip over Left and Right\n\tincludeWidth = includeWidth ? 1 : 0;\n\tfor ( ; i < 4; i += 2 - includeWidth ) {\n\t\twhich = cssExpand[ i ];\n\t\tattrs[ \"margin\" + which ] = attrs[ \"padding\" + which ] = type;\n\t}\n\n\tif ( includeWidth ) {\n\t\tattrs.opacity = attrs.width = type;\n\t}\n\n\treturn attrs;\n}\n\nfunction createTween( value, prop, animation ) {\n\tvar tween,\n\t\tcollection = ( Animation.tweeners[ prop ] || [] ).concat( Animation.tweeners[ \"*\" ] ),\n\t\tindex = 0,\n\t\tlength = collection.length;\n\tfor ( ; index < length; index++ ) {\n\t\tif ( ( tween = collection[ index ].call( animation, prop, value ) ) ) {\n\n\t\t\t// We're done with this property\n\t\t\treturn tween;\n\t\t}\n\t}\n}\n\nfunction defaultPrefilter( elem, props, opts ) {\n\tvar prop, value, toggle, hooks, oldfire, propTween, restoreDisplay, display,\n\t\tisBox = \"width\" in props || \"height\" in props,\n\t\tanim = this,\n\t\torig = {},\n\t\tstyle = elem.style,\n\t\thidden = elem.nodeType && isHiddenWithinTree( elem ),\n\t\tdataShow = dataPriv.get( elem, \"fxshow\" );\n\n\t// Queue-skipping animations hijack the fx hooks\n\tif ( !opts.queue ) {\n\t\thooks = jQuery._queueHooks( elem, \"fx\" );\n\t\tif ( hooks.unqueued == null ) {\n\t\t\thooks.unqueued = 0;\n\t\t\toldfire = hooks.empty.fire;\n\t\t\thooks.empty.fire = function() {\n\t\t\t\tif ( !hooks.unqueued ) {\n\t\t\t\t\toldfire();\n\t\t\t\t}\n\t\t\t};\n\t\t}\n\t\thooks.unqueued++;\n\n\t\tanim.always( function() {\n\n\t\t\t// Ensure the complete handler is called before this completes\n\t\t\tanim.always( function() {\n\t\t\t\thooks.unqueued--;\n\t\t\t\tif ( !jQuery.queue( elem, \"fx\" ).length ) {\n\t\t\t\t\thooks.empty.fire();\n\t\t\t\t}\n\t\t\t} );\n\t\t} );\n\t}\n\n\t// Detect show/hide animations\n\tfor ( prop in props ) {\n\t\tvalue = props[ prop ];\n\t\tif ( rfxtypes.test( value ) ) {\n\t\t\tdelete props[ prop ];\n\t\t\ttoggle = toggle || value === \"toggle\";\n\t\t\tif ( value === ( hidden ? \"hide\" : \"show\" ) ) {\n\n\t\t\t\t// Pretend to be hidden if this is a \"show\" and\n\t\t\t\t// there is still data from a stopped show/hide\n\t\t\t\tif ( value === \"show\" && dataShow && dataShow[ prop ] !== undefined ) {\n\t\t\t\t\thidden = true;\n\n\t\t\t\t// Ignore all other no-op show/hide data\n\t\t\t\t} else {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t}\n\t\t\torig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );\n\t\t}\n\t}\n\n\t// Bail out if this is a no-op like .hide().hide()\n\tpropTween = !jQuery.isEmptyObject( props );\n\tif ( !propTween && jQuery.isEmptyObject( orig ) ) {\n\t\treturn;\n\t}\n\n\t// Restrict \"overflow\" and \"display\" styles during box animations\n\tif ( isBox && elem.nodeType === 1 ) {\n\n\t\t// Support: IE <=9 - 11, Edge 12 - 15\n\t\t// Record all 3 overflow attributes because IE does not infer the shorthand\n\t\t// from identically-valued overflowX and overflowY and Edge just mirrors\n\t\t// the overflowX value there.\n\t\topts.overflow = [ style.overflow, style.overflowX, style.overflowY ];\n\n\t\t// Identify a display type, preferring old show/hide data over the CSS cascade\n\t\trestoreDisplay = dataShow && dataShow.display;\n\t\tif ( restoreDisplay == null ) {\n\t\t\trestoreDisplay = dataPriv.get( elem, \"display\" );\n\t\t}\n\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\tif ( display === \"none\" ) {\n\t\t\tif ( restoreDisplay ) {\n\t\t\t\tdisplay = restoreDisplay;\n\t\t\t} else {\n\n\t\t\t\t// Get nonempty value(s) by temporarily forcing visibility\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t\trestoreDisplay = elem.style.display || restoreDisplay;\n\t\t\t\tdisplay = jQuery.css( elem, \"display\" );\n\t\t\t\tshowHide( [ elem ] );\n\t\t\t}\n\t\t}\n\n\t\t// Animate inline elements as inline-block\n\t\tif ( display === \"inline\" || display === \"inline-block\" && restoreDisplay != null ) {\n\t\t\tif ( jQuery.css( elem, \"float\" ) === \"none\" ) {\n\n\t\t\t\t// Restore the original display value at the end of pure show/hide animations\n\t\t\t\tif ( !propTween ) {\n\t\t\t\t\tanim.done( function() {\n\t\t\t\t\t\tstyle.display = restoreDisplay;\n\t\t\t\t\t} );\n\t\t\t\t\tif ( restoreDisplay == null ) {\n\t\t\t\t\t\tdisplay = style.display;\n\t\t\t\t\t\trestoreDisplay = display === \"none\" ? \"\" : display;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tstyle.display = \"inline-block\";\n\t\t\t}\n\t\t}\n\t}\n\n\tif ( opts.overflow ) {\n\t\tstyle.overflow = \"hidden\";\n\t\tanim.always( function() {\n\t\t\tstyle.overflow = opts.overflow[ 0 ];\n\t\t\tstyle.overflowX = opts.overflow[ 1 ];\n\t\t\tstyle.overflowY = opts.overflow[ 2 ];\n\t\t} );\n\t}\n\n\t// Implement show/hide animations\n\tpropTween = false;\n\tfor ( prop in orig ) {\n\n\t\t// General show/hide setup for this element animation\n\t\tif ( !propTween ) {\n\t\t\tif ( dataShow ) {\n\t\t\t\tif ( \"hidden\" in dataShow ) {\n\t\t\t\t\thidden = dataShow.hidden;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdataShow = dataPriv.access( elem, \"fxshow\", { display: restoreDisplay } );\n\t\t\t}\n\n\t\t\t// Store hidden/visible for toggle so `.stop().toggle()` \"reverses\"\n\t\t\tif ( toggle ) {\n\t\t\t\tdataShow.hidden = !hidden;\n\t\t\t}\n\n\t\t\t// Show elements before animating them\n\t\t\tif ( hidden ) {\n\t\t\t\tshowHide( [ elem ], true );\n\t\t\t}\n\n\t\t\t/* eslint-disable no-loop-func */\n\n\t\t\tanim.done( function() {\n\n\t\t\t\t/* eslint-enable no-loop-func */\n\n\t\t\t\t// The final step of a \"hide\" animation is actually hiding the element\n\t\t\t\tif ( !hidden ) {\n\t\t\t\t\tshowHide( [ elem ] );\n\t\t\t\t}\n\t\t\t\tdataPriv.remove( elem, \"fxshow\" );\n\t\t\t\tfor ( prop in orig ) {\n\t\t\t\t\tjQuery.style( elem, prop, orig[ prop ] );\n\t\t\t\t}\n\t\t\t} );\n\t\t}\n\n\t\t// Per-property setup\n\t\tpropTween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );\n\t\tif ( !( prop in dataShow ) ) {\n\t\t\tdataShow[ prop ] = propTween.start;\n\t\t\tif ( hidden ) {\n\t\t\t\tpropTween.end = propTween.start;\n\t\t\t\tpropTween.start = 0;\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction propFilter( props, specialEasing ) {\n\tvar index, name, easing, value, hooks;\n\n\t// camelCase, specialEasing and expand cssHook pass\n\tfor ( index in props ) {\n\t\tname = camelCase( index );\n\t\teasing = specialEasing[ name ];\n\t\tvalue = props[ index ];\n\t\tif ( Array.isArray( value ) ) {\n\t\t\teasing = value[ 1 ];\n\t\t\tvalue = props[ index ] = value[ 0 ];\n\t\t}\n\n\t\tif ( index !== name ) {\n\t\t\tprops[ name ] = value;\n\t\t\tdelete props[ index ];\n\t\t}\n\n\t\thooks = jQuery.cssHooks[ name ];\n\t\tif ( hooks && \"expand\" in hooks ) {\n\t\t\tvalue = hooks.expand( value );\n\t\t\tdelete props[ name ];\n\n\t\t\t// Not quite $.extend, this won't overwrite existing keys.\n\t\t\t// Reusing 'index' because we have the correct \"name\"\n\t\t\tfor ( index in value ) {\n\t\t\t\tif ( !( index in props ) ) {\n\t\t\t\t\tprops[ index ] = value[ index ];\n\t\t\t\t\tspecialEasing[ index ] = easing;\n\t\t\t\t}\n\t\t\t}\n\t\t} else {\n\t\t\tspecialEasing[ name ] = easing;\n\t\t}\n\t}\n}\n\nfunction Animation( elem, properties, options ) {\n\tvar result,\n\t\tstopped,\n\t\tindex = 0,\n\t\tlength = Animation.prefilters.length,\n\t\tdeferred = jQuery.Deferred().always( function() {\n\n\t\t\t// Don't match elem in the :animated selector\n\t\t\tdelete tick.elem;\n\t\t} ),\n\t\ttick = function() {\n\t\t\tif ( stopped ) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t\tvar currentTime = fxNow || createFxNow(),\n\t\t\t\tremaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),\n\n\t\t\t\t// Support: Android 2.3 only\n\t\t\t\t// Archaic crash bug won't allow us to use `1 - ( 0.5 || 0 )` (#12497)\n\t\t\t\ttemp = remaining / animation.duration || 0,\n\t\t\t\tpercent = 1 - temp,\n\t\t\t\tindex = 0,\n\t\t\t\tlength = animation.tweens.length;\n\n\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\tanimation.tweens[ index ].run( percent );\n\t\t\t}\n\n\t\t\tdeferred.notifyWith( elem, [ animation, percent, remaining ] );\n\n\t\t\t// If there's more to do, yield\n\t\t\tif ( percent < 1 && length ) {\n\t\t\t\treturn remaining;\n\t\t\t}\n\n\t\t\t// If this was an empty animation, synthesize a final progress notification\n\t\t\tif ( !length ) {\n\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t}\n\n\t\t\t// Resolve the animation and report its conclusion\n\t\t\tdeferred.resolveWith( elem, [ animation ] );\n\t\t\treturn false;\n\t\t},\n\t\tanimation = deferred.promise( {\n\t\t\telem: elem,\n\t\t\tprops: jQuery.extend( {}, properties ),\n\t\t\topts: jQuery.extend( true, {\n\t\t\t\tspecialEasing: {},\n\t\t\t\teasing: jQuery.easing._default\n\t\t\t}, options ),\n\t\t\toriginalProperties: properties,\n\t\t\toriginalOptions: options,\n\t\t\tstartTime: fxNow || createFxNow(),\n\t\t\tduration: options.duration,\n\t\t\ttweens: [],\n\t\t\tcreateTween: function( prop, end ) {\n\t\t\t\tvar tween = jQuery.Tween( elem, animation.opts, prop, end,\n\t\t\t\t\tanimation.opts.specialEasing[ prop ] || animation.opts.easing );\n\t\t\t\tanimation.tweens.push( tween );\n\t\t\t\treturn tween;\n\t\t\t},\n\t\t\tstop: function( gotoEnd ) {\n\t\t\t\tvar index = 0,\n\n\t\t\t\t\t// If we are going to the end, we want to run all the tweens\n\t\t\t\t\t// otherwise we skip this part\n\t\t\t\t\tlength = gotoEnd ? animation.tweens.length : 0;\n\t\t\t\tif ( stopped ) {\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t\tstopped = true;\n\t\t\t\tfor ( ; index < length; index++ ) {\n\t\t\t\t\tanimation.tweens[ index ].run( 1 );\n\t\t\t\t}\n\n\t\t\t\t// Resolve when we played the last frame; otherwise, reject\n\t\t\t\tif ( gotoEnd ) {\n\t\t\t\t\tdeferred.notifyWith( elem, [ animation, 1, 0 ] );\n\t\t\t\t\tdeferred.resolveWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t} else {\n\t\t\t\t\tdeferred.rejectWith( elem, [ animation, gotoEnd ] );\n\t\t\t\t}\n\t\t\t\treturn this;\n\t\t\t}\n\t\t} ),\n\t\tprops = animation.props;\n\n\tpropFilter( props, animation.opts.specialEasing );\n\n\tfor ( ; index < length; index++ ) {\n\t\tresult = Animation.prefilters[ index ].call( animation, elem, props, animation.opts );\n\t\tif ( result ) {\n\t\t\tif ( isFunction( result.stop ) ) {\n\t\t\t\tjQuery._queueHooks( animation.elem, animation.opts.queue ).stop =\n\t\t\t\t\tresult.stop.bind( result );\n\t\t\t}\n\t\t\treturn result;\n\t\t}\n\t}\n\n\tjQuery.map( props, createTween, animation );\n\n\tif ( isFunction( animation.opts.start ) ) {\n\t\tanimation.opts.start.call( elem, animation );\n\t}\n\n\t// Attach callbacks from options\n\tanimation\n\t\t.progress( animation.opts.progress )\n\t\t.done( animation.opts.done, animation.opts.complete )\n\t\t.fail( animation.opts.fail )\n\t\t.always( animation.opts.always );\n\n\tjQuery.fx.timer(\n\t\tjQuery.extend( tick, {\n\t\t\telem: elem,\n\t\t\tanim: animation,\n\t\t\tqueue: animation.opts.queue\n\t\t} )\n\t);\n\n\treturn animation;\n}\n\njQuery.Animation = jQuery.extend( Animation, {\n\n\ttweeners: {\n\t\t\"*\": [ function( prop, value ) {\n\t\t\tvar tween = this.createTween( prop, value );\n\t\t\tadjustCSS( tween.elem, prop, rcssNum.exec( value ), tween );\n\t\t\treturn tween;\n\t\t} ]\n\t},\n\n\ttweener: function( props, callback ) {\n\t\tif ( isFunction( props ) ) {\n\t\t\tcallback = props;\n\t\t\tprops = [ \"*\" ];\n\t\t} else {\n\t\t\tprops = props.match( rnothtmlwhite );\n\t\t}\n\n\t\tvar prop,\n\t\t\tindex = 0,\n\t\t\tlength = props.length;\n\n\t\tfor ( ; index < length; index++ ) {\n\t\t\tprop = props[ index ];\n\t\t\tAnimation.tweeners[ prop ] = Animation.tweeners[ prop ] || [];\n\t\t\tAnimation.tweeners[ prop ].unshift( callback );\n\t\t}\n\t},\n\n\tprefilters: [ defaultPrefilter ],\n\n\tprefilter: function( callback, prepend ) {\n\t\tif ( prepend ) {\n\t\t\tAnimation.prefilters.unshift( callback );\n\t\t} else {\n\t\t\tAnimation.prefilters.push( callback );\n\t\t}\n\t}\n} );\n\njQuery.speed = function( speed, easing, fn ) {\n\tvar opt = speed && typeof speed === \"object\" ? jQuery.extend( {}, speed ) : {\n\t\tcomplete: fn || !fn && easing ||\n\t\t\tisFunction( speed ) && speed,\n\t\tduration: speed,\n\t\teasing: fn && easing || easing && !isFunction( easing ) && easing\n\t};\n\n\t// Go to the end state if fx are off\n\tif ( jQuery.fx.off ) {\n\t\topt.duration = 0;\n\n\t} else {\n\t\tif ( typeof opt.duration !== \"number\" ) {\n\t\t\tif ( opt.duration in jQuery.fx.speeds ) {\n\t\t\t\topt.duration = jQuery.fx.speeds[ opt.duration ];\n\n\t\t\t} else {\n\t\t\t\topt.duration = jQuery.fx.speeds._default;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Normalize opt.queue - true/undefined/null -> \"fx\"\n\tif ( opt.queue == null || opt.queue === true ) {\n\t\topt.queue = \"fx\";\n\t}\n\n\t// Queueing\n\topt.old = opt.complete;\n\n\topt.complete = function() {\n\t\tif ( isFunction( opt.old ) ) {\n\t\t\topt.old.call( this );\n\t\t}\n\n\t\tif ( opt.queue ) {\n\t\t\tjQuery.dequeue( this, opt.queue );\n\t\t}\n\t};\n\n\treturn opt;\n};\n\njQuery.fn.extend( {\n\tfadeTo: function( speed, to, easing, callback ) {\n\n\t\t// Show any hidden elements after setting opacity to 0\n\t\treturn this.filter( isHiddenWithinTree ).css( \"opacity\", 0 ).show()\n\n\t\t\t// Animate to the value specified\n\t\t\t.end().animate( { opacity: to }, speed, easing, callback );\n\t},\n\tanimate: function( prop, speed, easing, callback ) {\n\t\tvar empty = jQuery.isEmptyObject( prop ),\n\t\t\toptall = jQuery.speed( speed, easing, callback ),\n\t\t\tdoAnimation = function() {\n\n\t\t\t\t// Operate on a copy of prop so per-property easing won't be lost\n\t\t\t\tvar anim = Animation( this, jQuery.extend( {}, prop ), optall );\n\n\t\t\t\t// Empty animations, or finishing resolves immediately\n\t\t\t\tif ( empty || dataPriv.get( this, \"finish\" ) ) {\n\t\t\t\t\tanim.stop( true );\n\t\t\t\t}\n\t\t\t};\n\n\t\tdoAnimation.finish = doAnimation;\n\n\t\treturn empty || optall.queue === false ?\n\t\t\tthis.each( doAnimation ) :\n\t\t\tthis.queue( optall.queue, doAnimation );\n\t},\n\tstop: function( type, clearQueue, gotoEnd ) {\n\t\tvar stopQueue = function( hooks ) {\n\t\t\tvar stop = hooks.stop;\n\t\t\tdelete hooks.stop;\n\t\t\tstop( gotoEnd );\n\t\t};\n\n\t\tif ( typeof type !== \"string\" ) {\n\t\t\tgotoEnd = clearQueue;\n\t\t\tclearQueue = type;\n\t\t\ttype = undefined;\n\t\t}\n\t\tif ( clearQueue ) {\n\t\t\tthis.queue( type || \"fx\", [] );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar dequeue = true,\n\t\t\t\tindex = type != null && type + \"queueHooks\",\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tdata = dataPriv.get( this );\n\n\t\t\tif ( index ) {\n\t\t\t\tif ( data[ index ] && data[ index ].stop ) {\n\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tfor ( index in data ) {\n\t\t\t\t\tif ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {\n\t\t\t\t\t\tstopQueue( data[ index ] );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this &&\n\t\t\t\t\t( type == null || timers[ index ].queue === type ) ) {\n\n\t\t\t\t\ttimers[ index ].anim.stop( gotoEnd );\n\t\t\t\t\tdequeue = false;\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Start the next in the queue if the last step wasn't forced.\n\t\t\t// Timers currently will call their complete callbacks, which\n\t\t\t// will dequeue but only if they were gotoEnd.\n\t\t\tif ( dequeue || !gotoEnd ) {\n\t\t\t\tjQuery.dequeue( this, type );\n\t\t\t}\n\t\t} );\n\t},\n\tfinish: function( type ) {\n\t\tif ( type !== false ) {\n\t\t\ttype = type || \"fx\";\n\t\t}\n\t\treturn this.each( function() {\n\t\t\tvar index,\n\t\t\t\tdata = dataPriv.get( this ),\n\t\t\t\tqueue = data[ type + \"queue\" ],\n\t\t\t\thooks = data[ type + \"queueHooks\" ],\n\t\t\t\ttimers = jQuery.timers,\n\t\t\t\tlength = queue ? queue.length : 0;\n\n\t\t\t// Enable finishing flag on private data\n\t\t\tdata.finish = true;\n\n\t\t\t// Empty the queue first\n\t\t\tjQuery.queue( this, type, [] );\n\n\t\t\tif ( hooks && hooks.stop ) {\n\t\t\t\thooks.stop.call( this, true );\n\t\t\t}\n\n\t\t\t// Look for any active animations, and finish them\n\t\t\tfor ( index = timers.length; index--; ) {\n\t\t\t\tif ( timers[ index ].elem === this && timers[ index ].queue === type ) {\n\t\t\t\t\ttimers[ index ].anim.stop( true );\n\t\t\t\t\ttimers.splice( index, 1 );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Look for any animations in the old queue and finish them\n\t\t\tfor ( index = 0; index < length; index++ ) {\n\t\t\t\tif ( queue[ index ] && queue[ index ].finish ) {\n\t\t\t\t\tqueue[ index ].finish.call( this );\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Turn off finishing flag\n\t\t\tdelete data.finish;\n\t\t} );\n\t}\n} );\n\njQuery.each( [ \"toggle\", \"show\", \"hide\" ], function( _i, name ) {\n\tvar cssFn = jQuery.fn[ name ];\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn speed == null || typeof speed === \"boolean\" ?\n\t\t\tcssFn.apply( this, arguments ) :\n\t\t\tthis.animate( genFx( name, true ), speed, easing, callback );\n\t};\n} );\n\n// Generate shortcuts for custom animations\njQuery.each( {\n\tslideDown: genFx( \"show\" ),\n\tslideUp: genFx( \"hide\" ),\n\tslideToggle: genFx( \"toggle\" ),\n\tfadeIn: { opacity: \"show\" },\n\tfadeOut: { opacity: \"hide\" },\n\tfadeToggle: { opacity: \"toggle\" }\n}, function( name, props ) {\n\tjQuery.fn[ name ] = function( speed, easing, callback ) {\n\t\treturn this.animate( props, speed, easing, callback );\n\t};\n} );\n\njQuery.timers = [];\njQuery.fx.tick = function() {\n\tvar timer,\n\t\ti = 0,\n\t\ttimers = jQuery.timers;\n\n\tfxNow = Date.now();\n\n\tfor ( ; i < timers.length; i++ ) {\n\t\ttimer = timers[ i ];\n\n\t\t// Run the timer and safely remove it when done (allowing for external removal)\n\t\tif ( !timer() && timers[ i ] === timer ) {\n\t\t\ttimers.splice( i--, 1 );\n\t\t}\n\t}\n\n\tif ( !timers.length ) {\n\t\tjQuery.fx.stop();\n\t}\n\tfxNow = undefined;\n};\n\njQuery.fx.timer = function( timer ) {\n\tjQuery.timers.push( timer );\n\tjQuery.fx.start();\n};\n\njQuery.fx.interval = 13;\njQuery.fx.start = function() {\n\tif ( inProgress ) {\n\t\treturn;\n\t}\n\n\tinProgress = true;\n\tschedule();\n};\n\njQuery.fx.stop = function() {\n\tinProgress = null;\n};\n\njQuery.fx.speeds = {\n\tslow: 600,\n\tfast: 200,\n\n\t// Default speed\n\t_default: 400\n};\n\n\n// Based off of the plugin by Clint Helfers, with permission.\n// https://web.archive.org/web/20100324014747/http://blindsignals.com/index.php/2009/07/jquery-delay/\njQuery.fn.delay = function( time, type ) {\n\ttime = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;\n\ttype = type || \"fx\";\n\n\treturn this.queue( type, function( next, hooks ) {\n\t\tvar timeout = window.setTimeout( next, time );\n\t\thooks.stop = function() {\n\t\t\twindow.clearTimeout( timeout );\n\t\t};\n\t} );\n};\n\n\n( function() {\n\tvar input = document.createElement( \"input\" ),\n\t\tselect = document.createElement( \"select\" ),\n\t\topt = select.appendChild( document.createElement( \"option\" ) );\n\n\tinput.type = \"checkbox\";\n\n\t// Support: Android <=4.3 only\n\t// Default value for a checkbox should be \"on\"\n\tsupport.checkOn = input.value !== \"\";\n\n\t// Support: IE <=11 only\n\t// Must access selectedIndex to make default options select\n\tsupport.optSelected = opt.selected;\n\n\t// Support: IE <=11 only\n\t// An input loses its value after becoming a radio\n\tinput = document.createElement( \"input\" );\n\tinput.value = \"t\";\n\tinput.type = \"radio\";\n\tsupport.radioValue = input.value === \"t\";\n} )();\n\n\nvar boolHook,\n\tattrHandle = jQuery.expr.attrHandle;\n\njQuery.fn.extend( {\n\tattr: function( name, value ) {\n\t\treturn access( this, jQuery.attr, name, value, arguments.length > 1 );\n\t},\n\n\tremoveAttr: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.removeAttr( this, name );\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tattr: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set attributes on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Fallback to prop when attributes are not supported\n\t\tif ( typeof elem.getAttribute === \"undefined\" ) {\n\t\t\treturn jQuery.prop( elem, name, value );\n\t\t}\n\n\t\t// Attribute hooks are determined by the lowercase version\n\t\t// Grab necessary hook if one is defined\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\t\t\thooks = jQuery.attrHooks[ name.toLowerCase() ] ||\n\t\t\t\t( jQuery.expr.match.bool.test( name ) ? boolHook : undefined );\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( value === null ) {\n\t\t\t\tjQuery.removeAttr( elem, name );\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\telem.setAttribute( name, value + \"\" );\n\t\t\treturn value;\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\tret = jQuery.find.attr( elem, name );\n\n\t\t// Non-existent attributes return null, we normalize to undefined\n\t\treturn ret == null ? undefined : ret;\n\t},\n\n\tattrHooks: {\n\t\ttype: {\n\t\t\tset: function( elem, value ) {\n\t\t\t\tif ( !support.radioValue && value === \"radio\" &&\n\t\t\t\t\tnodeName( elem, \"input\" ) ) {\n\t\t\t\t\tvar val = elem.value;\n\t\t\t\t\telem.setAttribute( \"type\", value );\n\t\t\t\t\tif ( val ) {\n\t\t\t\t\t\telem.value = val;\n\t\t\t\t\t}\n\t\t\t\t\treturn value;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t},\n\n\tremoveAttr: function( elem, value ) {\n\t\tvar name,\n\t\t\ti = 0,\n\n\t\t\t// Attribute names can contain non-HTML whitespace characters\n\t\t\t// https://html.spec.whatwg.org/multipage/syntax.html#attributes-2\n\t\t\tattrNames = value && value.match( rnothtmlwhite );\n\n\t\tif ( attrNames && elem.nodeType === 1 ) {\n\t\t\twhile ( ( name = attrNames[ i++ ] ) ) {\n\t\t\t\telem.removeAttribute( name );\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Hooks for boolean attributes\nboolHook = {\n\tset: function( elem, value, name ) {\n\t\tif ( value === false ) {\n\n\t\t\t// Remove boolean attributes when set to false\n\t\t\tjQuery.removeAttr( elem, name );\n\t\t} else {\n\t\t\telem.setAttribute( name, name );\n\t\t}\n\t\treturn name;\n\t}\n};\n\njQuery.each( jQuery.expr.match.bool.source.match( /\\w+/g ), function( _i, name ) {\n\tvar getter = attrHandle[ name ] || jQuery.find.attr;\n\n\tattrHandle[ name ] = function( elem, name, isXML ) {\n\t\tvar ret, handle,\n\t\t\tlowercaseName = name.toLowerCase();\n\n\t\tif ( !isXML ) {\n\n\t\t\t// Avoid an infinite loop by temporarily removing this function from the getter\n\t\t\thandle = attrHandle[ lowercaseName ];\n\t\t\tattrHandle[ lowercaseName ] = ret;\n\t\t\tret = getter( elem, name, isXML ) != null ?\n\t\t\t\tlowercaseName :\n\t\t\t\tnull;\n\t\t\tattrHandle[ lowercaseName ] = handle;\n\t\t}\n\t\treturn ret;\n\t};\n} );\n\n\n\n\nvar rfocusable = /^(?:input|select|textarea|button)$/i,\n\trclickable = /^(?:a|area)$/i;\n\njQuery.fn.extend( {\n\tprop: function( name, value ) {\n\t\treturn access( this, jQuery.prop, name, value, arguments.length > 1 );\n\t},\n\n\tremoveProp: function( name ) {\n\t\treturn this.each( function() {\n\t\t\tdelete this[ jQuery.propFix[ name ] || name ];\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tprop: function( elem, name, value ) {\n\t\tvar ret, hooks,\n\t\t\tnType = elem.nodeType;\n\n\t\t// Don't get/set properties on text, comment and attribute nodes\n\t\tif ( nType === 3 || nType === 8 || nType === 2 ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {\n\n\t\t\t// Fix name and attach hooks\n\t\t\tname = jQuery.propFix[ name ] || name;\n\t\t\thooks = jQuery.propHooks[ name ];\n\t\t}\n\n\t\tif ( value !== undefined ) {\n\t\t\tif ( hooks && \"set\" in hooks &&\n\t\t\t\t( ret = hooks.set( elem, value, name ) ) !== undefined ) {\n\t\t\t\treturn ret;\n\t\t\t}\n\n\t\t\treturn ( elem[ name ] = value );\n\t\t}\n\n\t\tif ( hooks && \"get\" in hooks && ( ret = hooks.get( elem, name ) ) !== null ) {\n\t\t\treturn ret;\n\t\t}\n\n\t\treturn elem[ name ];\n\t},\n\n\tpropHooks: {\n\t\ttabIndex: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\t// Support: IE <=9 - 11 only\n\t\t\t\t// elem.tabIndex doesn't always return the\n\t\t\t\t// correct value when it hasn't been explicitly set\n\t\t\t\t// https://web.archive.org/web/20141116233347/http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/\n\t\t\t\t// Use proper attribute retrieval(#12072)\n\t\t\t\tvar tabindex = jQuery.find.attr( elem, \"tabindex\" );\n\n\t\t\t\tif ( tabindex ) {\n\t\t\t\t\treturn parseInt( tabindex, 10 );\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\trfocusable.test( elem.nodeName ) ||\n\t\t\t\t\trclickable.test( elem.nodeName ) &&\n\t\t\t\t\telem.href\n\t\t\t\t) {\n\t\t\t\t\treturn 0;\n\t\t\t\t}\n\n\t\t\t\treturn -1;\n\t\t\t}\n\t\t}\n\t},\n\n\tpropFix: {\n\t\t\"for\": \"htmlFor\",\n\t\t\"class\": \"className\"\n\t}\n} );\n\n// Support: IE <=11 only\n// Accessing the selectedIndex property\n// forces the browser to respect setting selected\n// on the option\n// The getter ensures a default option is selected\n// when in an optgroup\n// eslint rule \"no-unused-expressions\" is disabled for this code\n// since it considers such accessions noop\nif ( !support.optSelected ) {\n\tjQuery.propHooks.selected = {\n\t\tget: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent && parent.parentNode ) {\n\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t}\n\t\t\treturn null;\n\t\t},\n\t\tset: function( elem ) {\n\n\t\t\t/* eslint no-unused-expressions: \"off\" */\n\n\t\t\tvar parent = elem.parentNode;\n\t\t\tif ( parent ) {\n\t\t\t\tparent.selectedIndex;\n\n\t\t\t\tif ( parent.parentNode ) {\n\t\t\t\t\tparent.parentNode.selectedIndex;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\njQuery.each( [\n\t\"tabIndex\",\n\t\"readOnly\",\n\t\"maxLength\",\n\t\"cellSpacing\",\n\t\"cellPadding\",\n\t\"rowSpan\",\n\t\"colSpan\",\n\t\"useMap\",\n\t\"frameBorder\",\n\t\"contentEditable\"\n], function() {\n\tjQuery.propFix[ this.toLowerCase() ] = this;\n} );\n\n\n\n\n\t// Strip and collapse whitespace according to HTML spec\n\t// https://infra.spec.whatwg.org/#strip-and-collapse-ascii-whitespace\n\tfunction stripAndCollapse( value ) {\n\t\tvar tokens = value.match( rnothtmlwhite ) || [];\n\t\treturn tokens.join( \" \" );\n\t}\n\n\nfunction getClass( elem ) {\n\treturn elem.getAttribute && elem.getAttribute( \"class\" ) || \"\";\n}\n\nfunction classesToArray( value ) {\n\tif ( Array.isArray( value ) ) {\n\t\treturn value;\n\t}\n\tif ( typeof value === \"string\" ) {\n\t\treturn value.match( rnothtmlwhite ) || [];\n\t}\n\treturn [];\n}\n\njQuery.fn.extend( {\n\taddClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).addClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\t\t\t\t\t\tif ( cur.indexOf( \" \" + clazz + \" \" ) < 0 ) {\n\t\t\t\t\t\t\tcur += clazz + \" \";\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\tremoveClass: function( value ) {\n\t\tvar classes, elem, cur, curValue, clazz, j, finalValue,\n\t\t\ti = 0;\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( j ) {\n\t\t\t\tjQuery( this ).removeClass( value.call( this, j, getClass( this ) ) );\n\t\t\t} );\n\t\t}\n\n\t\tif ( !arguments.length ) {\n\t\t\treturn this.attr( \"class\", \"\" );\n\t\t}\n\n\t\tclasses = classesToArray( value );\n\n\t\tif ( classes.length ) {\n\t\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\t\tcurValue = getClass( elem );\n\n\t\t\t\t// This expression is here for better compressibility (see addClass)\n\t\t\t\tcur = elem.nodeType === 1 && ( \" \" + stripAndCollapse( curValue ) + \" \" );\n\n\t\t\t\tif ( cur ) {\n\t\t\t\t\tj = 0;\n\t\t\t\t\twhile ( ( clazz = classes[ j++ ] ) ) {\n\n\t\t\t\t\t\t// Remove *all* instances\n\t\t\t\t\t\twhile ( cur.indexOf( \" \" + clazz + \" \" ) > -1 ) {\n\t\t\t\t\t\t\tcur = cur.replace( \" \" + clazz + \" \", \" \" );\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\t// Only assign if different to avoid unneeded rendering.\n\t\t\t\t\tfinalValue = stripAndCollapse( cur );\n\t\t\t\t\tif ( curValue !== finalValue ) {\n\t\t\t\t\t\telem.setAttribute( \"class\", finalValue );\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this;\n\t},\n\n\ttoggleClass: function( value, stateVal ) {\n\t\tvar type = typeof value,\n\t\t\tisValidValue = type === \"string\" || Array.isArray( value );\n\n\t\tif ( typeof stateVal === \"boolean\" && isValidValue ) {\n\t\t\treturn stateVal ? this.addClass( value ) : this.removeClass( value );\n\t\t}\n\n\t\tif ( isFunction( value ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).toggleClass(\n\t\t\t\t\tvalue.call( this, i, getClass( this ), stateVal ),\n\t\t\t\t\tstateVal\n\t\t\t\t);\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar className, i, self, classNames;\n\n\t\t\tif ( isValidValue ) {\n\n\t\t\t\t// Toggle individual class names\n\t\t\t\ti = 0;\n\t\t\t\tself = jQuery( this );\n\t\t\t\tclassNames = classesToArray( value );\n\n\t\t\t\twhile ( ( className = classNames[ i++ ] ) ) {\n\n\t\t\t\t\t// Check each className given, space separated list\n\t\t\t\t\tif ( self.hasClass( className ) ) {\n\t\t\t\t\t\tself.removeClass( className );\n\t\t\t\t\t} else {\n\t\t\t\t\t\tself.addClass( className );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t// Toggle whole class name\n\t\t\t} else if ( value === undefined || type === \"boolean\" ) {\n\t\t\t\tclassName = getClass( this );\n\t\t\t\tif ( className ) {\n\n\t\t\t\t\t// Store className if set\n\t\t\t\t\tdataPriv.set( this, \"__className__\", className );\n\t\t\t\t}\n\n\t\t\t\t// If the element has a class name or if we're passed `false`,\n\t\t\t\t// then remove the whole classname (if there was one, the above saved it).\n\t\t\t\t// Otherwise bring back whatever was previously saved (if anything),\n\t\t\t\t// falling back to the empty string if nothing was stored.\n\t\t\t\tif ( this.setAttribute ) {\n\t\t\t\t\tthis.setAttribute( \"class\",\n\t\t\t\t\t\tclassName || value === false ?\n\t\t\t\t\t\t\t\"\" :\n\t\t\t\t\t\t\tdataPriv.get( this, \"__className__\" ) || \"\"\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t} );\n\t},\n\n\thasClass: function( selector ) {\n\t\tvar className, elem,\n\t\t\ti = 0;\n\n\t\tclassName = \" \" + selector + \" \";\n\t\twhile ( ( elem = this[ i++ ] ) ) {\n\t\t\tif ( elem.nodeType === 1 &&\n\t\t\t\t( \" \" + stripAndCollapse( getClass( elem ) ) + \" \" ).indexOf( className ) > -1 ) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n} );\n\n\n\n\nvar rreturn = /\\r/g;\n\njQuery.fn.extend( {\n\tval: function( value ) {\n\t\tvar hooks, ret, valueIsFunction,\n\t\t\telem = this[ 0 ];\n\n\t\tif ( !arguments.length ) {\n\t\t\tif ( elem ) {\n\t\t\t\thooks = jQuery.valHooks[ elem.type ] ||\n\t\t\t\t\tjQuery.valHooks[ elem.nodeName.toLowerCase() ];\n\n\t\t\t\tif ( hooks &&\n\t\t\t\t\t\"get\" in hooks &&\n\t\t\t\t\t( ret = hooks.get( elem, \"value\" ) ) !== undefined\n\t\t\t\t) {\n\t\t\t\t\treturn ret;\n\t\t\t\t}\n\n\t\t\t\tret = elem.value;\n\n\t\t\t\t// Handle most common string cases\n\t\t\t\tif ( typeof ret === \"string\" ) {\n\t\t\t\t\treturn ret.replace( rreturn, \"\" );\n\t\t\t\t}\n\n\t\t\t\t// Handle cases where value is null/undef or number\n\t\t\t\treturn ret == null ? \"\" : ret;\n\t\t\t}\n\n\t\t\treturn;\n\t\t}\n\n\t\tvalueIsFunction = isFunction( value );\n\n\t\treturn this.each( function( i ) {\n\t\t\tvar val;\n\n\t\t\tif ( this.nodeType !== 1 ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif ( valueIsFunction ) {\n\t\t\t\tval = value.call( this, i, jQuery( this ).val() );\n\t\t\t} else {\n\t\t\t\tval = value;\n\t\t\t}\n\n\t\t\t// Treat null/undefined as \"\"; convert numbers to string\n\t\t\tif ( val == null ) {\n\t\t\t\tval = \"\";\n\n\t\t\t} else if ( typeof val === \"number\" ) {\n\t\t\t\tval += \"\";\n\n\t\t\t} else if ( Array.isArray( val ) ) {\n\t\t\t\tval = jQuery.map( val, function( value ) {\n\t\t\t\t\treturn value == null ? \"\" : value + \"\";\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\thooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];\n\n\t\t\t// If set returns undefined, fall back to normal setting\n\t\t\tif ( !hooks || !( \"set\" in hooks ) || hooks.set( this, val, \"value\" ) === undefined ) {\n\t\t\t\tthis.value = val;\n\t\t\t}\n\t\t} );\n\t}\n} );\n\njQuery.extend( {\n\tvalHooks: {\n\t\toption: {\n\t\t\tget: function( elem ) {\n\n\t\t\t\tvar val = jQuery.find.attr( elem, \"value\" );\n\t\t\t\treturn val != null ?\n\t\t\t\t\tval :\n\n\t\t\t\t\t// Support: IE <=10 - 11 only\n\t\t\t\t\t// option.text throws exceptions (#14686, #14858)\n\t\t\t\t\t// Strip and collapse whitespace\n\t\t\t\t\t// https://html.spec.whatwg.org/#strip-and-collapse-whitespace\n\t\t\t\t\tstripAndCollapse( jQuery.text( elem ) );\n\t\t\t}\n\t\t},\n\t\tselect: {\n\t\t\tget: function( elem ) {\n\t\t\t\tvar value, option, i,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tindex = elem.selectedIndex,\n\t\t\t\t\tone = elem.type === \"select-one\",\n\t\t\t\t\tvalues = one ? null : [],\n\t\t\t\t\tmax = one ? index + 1 : options.length;\n\n\t\t\t\tif ( index < 0 ) {\n\t\t\t\t\ti = max;\n\n\t\t\t\t} else {\n\t\t\t\t\ti = one ? index : 0;\n\t\t\t\t}\n\n\t\t\t\t// Loop through all the selected options\n\t\t\t\tfor ( ; i < max; i++ ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t// IE8-9 doesn't update selected after form reset (#2551)\n\t\t\t\t\tif ( ( option.selected || i === index ) &&\n\n\t\t\t\t\t\t\t// Don't return options that are disabled or in a disabled optgroup\n\t\t\t\t\t\t\t!option.disabled &&\n\t\t\t\t\t\t\t( !option.parentNode.disabled ||\n\t\t\t\t\t\t\t\t!nodeName( option.parentNode, \"optgroup\" ) ) ) {\n\n\t\t\t\t\t\t// Get the specific value for the option\n\t\t\t\t\t\tvalue = jQuery( option ).val();\n\n\t\t\t\t\t\t// We don't need an array for one selects\n\t\t\t\t\t\tif ( one ) {\n\t\t\t\t\t\t\treturn value;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Multi-Selects return an array\n\t\t\t\t\t\tvalues.push( value );\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\treturn values;\n\t\t\t},\n\n\t\t\tset: function( elem, value ) {\n\t\t\t\tvar optionSet, option,\n\t\t\t\t\toptions = elem.options,\n\t\t\t\t\tvalues = jQuery.makeArray( value ),\n\t\t\t\t\ti = options.length;\n\n\t\t\t\twhile ( i-- ) {\n\t\t\t\t\toption = options[ i ];\n\n\t\t\t\t\t/* eslint-disable no-cond-assign */\n\n\t\t\t\t\tif ( option.selected =\n\t\t\t\t\t\tjQuery.inArray( jQuery.valHooks.option.get( option ), values ) > -1\n\t\t\t\t\t) {\n\t\t\t\t\t\toptionSet = true;\n\t\t\t\t\t}\n\n\t\t\t\t\t/* eslint-enable no-cond-assign */\n\t\t\t\t}\n\n\t\t\t\t// Force browsers to behave consistently when non-matching value is set\n\t\t\t\tif ( !optionSet ) {\n\t\t\t\t\telem.selectedIndex = -1;\n\t\t\t\t}\n\t\t\t\treturn values;\n\t\t\t}\n\t\t}\n\t}\n} );\n\n// Radios and checkboxes getter/setter\njQuery.each( [ \"radio\", \"checkbox\" ], function() {\n\tjQuery.valHooks[ this ] = {\n\t\tset: function( elem, value ) {\n\t\t\tif ( Array.isArray( value ) ) {\n\t\t\t\treturn ( elem.checked = jQuery.inArray( jQuery( elem ).val(), value ) > -1 );\n\t\t\t}\n\t\t}\n\t};\n\tif ( !support.checkOn ) {\n\t\tjQuery.valHooks[ this ].get = function( elem ) {\n\t\t\treturn elem.getAttribute( \"value\" ) === null ? \"on\" : elem.value;\n\t\t};\n\t}\n} );\n\n\n\n\n// Return jQuery for attributes-only inclusion\n\n\nsupport.focusin = \"onfocusin\" in window;\n\n\nvar rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,\n\tstopPropagationCallback = function( e ) {\n\t\te.stopPropagation();\n\t};\n\njQuery.extend( jQuery.event, {\n\n\ttrigger: function( event, data, elem, onlyHandlers ) {\n\n\t\tvar i, cur, tmp, bubbleType, ontype, handle, special, lastElement,\n\t\t\teventPath = [ elem || document ],\n\t\t\ttype = hasOwn.call( event, \"type\" ) ? event.type : event,\n\t\t\tnamespaces = hasOwn.call( event, \"namespace\" ) ? event.namespace.split( \".\" ) : [];\n\n\t\tcur = lastElement = tmp = elem = elem || document;\n\n\t\t// Don't do events on text and comment nodes\n\t\tif ( elem.nodeType === 3 || elem.nodeType === 8 ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// focus/blur morphs to focusin/out; ensure we're not firing them right now\n\t\tif ( rfocusMorph.test( type + jQuery.event.triggered ) ) {\n\t\t\treturn;\n\t\t}\n\n\t\tif ( type.indexOf( \".\" ) > -1 ) {\n\n\t\t\t// Namespaced trigger; create a regexp to match event type in handle()\n\t\t\tnamespaces = type.split( \".\" );\n\t\t\ttype = namespaces.shift();\n\t\t\tnamespaces.sort();\n\t\t}\n\t\tontype = type.indexOf( \":\" ) < 0 && \"on\" + type;\n\n\t\t// Caller can pass in a jQuery.Event object, Object, or just an event type string\n\t\tevent = event[ jQuery.expando ] ?\n\t\t\tevent :\n\t\t\tnew jQuery.Event( type, typeof event === \"object\" && event );\n\n\t\t// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)\n\t\tevent.isTrigger = onlyHandlers ? 2 : 3;\n\t\tevent.namespace = namespaces.join( \".\" );\n\t\tevent.rnamespace = event.namespace ?\n\t\t\tnew RegExp( \"(^|\\\\.)\" + namespaces.join( \"\\\\.(?:.*\\\\.|)\" ) + \"(\\\\.|$)\" ) :\n\t\t\tnull;\n\n\t\t// Clean up the event in case it is being reused\n\t\tevent.result = undefined;\n\t\tif ( !event.target ) {\n\t\t\tevent.target = elem;\n\t\t}\n\n\t\t// Clone any incoming data and prepend the event, creating the handler arg list\n\t\tdata = data == null ?\n\t\t\t[ event ] :\n\t\t\tjQuery.makeArray( data, [ event ] );\n\n\t\t// Allow special events to draw outside the lines\n\t\tspecial = jQuery.event.special[ type ] || {};\n\t\tif ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {\n\t\t\treturn;\n\t\t}\n\n\t\t// Determine event propagation path in advance, per W3C events spec (#9951)\n\t\t// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)\n\t\tif ( !onlyHandlers && !special.noBubble && !isWindow( elem ) ) {\n\n\t\t\tbubbleType = special.delegateType || type;\n\t\t\tif ( !rfocusMorph.test( bubbleType + type ) ) {\n\t\t\t\tcur = cur.parentNode;\n\t\t\t}\n\t\t\tfor ( ; cur; cur = cur.parentNode ) {\n\t\t\t\teventPath.push( cur );\n\t\t\t\ttmp = cur;\n\t\t\t}\n\n\t\t\t// Only add window if we got to document (e.g., not plain obj or detached DOM)\n\t\t\tif ( tmp === ( elem.ownerDocument || document ) ) {\n\t\t\t\teventPath.push( tmp.defaultView || tmp.parentWindow || window );\n\t\t\t}\n\t\t}\n\n\t\t// Fire handlers on the event path\n\t\ti = 0;\n\t\twhile ( ( cur = eventPath[ i++ ] ) && !event.isPropagationStopped() ) {\n\t\t\tlastElement = cur;\n\t\t\tevent.type = i > 1 ?\n\t\t\t\tbubbleType :\n\t\t\t\tspecial.bindType || type;\n\n\t\t\t// jQuery handler\n\t\t\thandle = ( dataPriv.get( cur, \"events\" ) || Object.create( null ) )[ event.type ] &&\n\t\t\t\tdataPriv.get( cur, \"handle\" );\n\t\t\tif ( handle ) {\n\t\t\t\thandle.apply( cur, data );\n\t\t\t}\n\n\t\t\t// Native handler\n\t\t\thandle = ontype && cur[ ontype ];\n\t\t\tif ( handle && handle.apply && acceptData( cur ) ) {\n\t\t\t\tevent.result = handle.apply( cur, data );\n\t\t\t\tif ( event.result === false ) {\n\t\t\t\t\tevent.preventDefault();\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\tevent.type = type;\n\n\t\t// If nobody prevented the default action, do it now\n\t\tif ( !onlyHandlers && !event.isDefaultPrevented() ) {\n\n\t\t\tif ( ( !special._default ||\n\t\t\t\tspecial._default.apply( eventPath.pop(), data ) === false ) &&\n\t\t\t\tacceptData( elem ) ) {\n\n\t\t\t\t// Call a native DOM method on the target with the same name as the event.\n\t\t\t\t// Don't do default actions on window, that's where global variables be (#6170)\n\t\t\t\tif ( ontype && isFunction( elem[ type ] ) && !isWindow( elem ) ) {\n\n\t\t\t\t\t// Don't re-trigger an onFOO event when we call its FOO() method\n\t\t\t\t\ttmp = elem[ ontype ];\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = null;\n\t\t\t\t\t}\n\n\t\t\t\t\t// Prevent re-triggering of the same event, since we already bubbled it above\n\t\t\t\t\tjQuery.event.triggered = type;\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.addEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\telem[ type ]();\n\n\t\t\t\t\tif ( event.isPropagationStopped() ) {\n\t\t\t\t\t\tlastElement.removeEventListener( type, stopPropagationCallback );\n\t\t\t\t\t}\n\n\t\t\t\t\tjQuery.event.triggered = undefined;\n\n\t\t\t\t\tif ( tmp ) {\n\t\t\t\t\t\telem[ ontype ] = tmp;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn event.result;\n\t},\n\n\t// Piggyback on a donor event to simulate a different one\n\t// Used only for `focus(in | out)` events\n\tsimulate: function( type, elem, event ) {\n\t\tvar e = jQuery.extend(\n\t\t\tnew jQuery.Event(),\n\t\t\tevent,\n\t\t\t{\n\t\t\t\ttype: type,\n\t\t\t\tisSimulated: true\n\t\t\t}\n\t\t);\n\n\t\tjQuery.event.trigger( e, null, elem );\n\t}\n\n} );\n\njQuery.fn.extend( {\n\n\ttrigger: function( type, data ) {\n\t\treturn this.each( function() {\n\t\t\tjQuery.event.trigger( type, data, this );\n\t\t} );\n\t},\n\ttriggerHandler: function( type, data ) {\n\t\tvar elem = this[ 0 ];\n\t\tif ( elem ) {\n\t\t\treturn jQuery.event.trigger( type, data, elem, true );\n\t\t}\n\t}\n} );\n\n\n// Support: Firefox <=44\n// Firefox doesn't have focus(in | out) events\n// Related ticket - https://bugzilla.mozilla.org/show_bug.cgi?id=687787\n//\n// Support: Chrome <=48 - 49, Safari <=9.0 - 9.1\n// focus(in | out) events fire after focus & blur events,\n// which is spec violation - http://www.w3.org/TR/DOM-Level-3-Events/#events-focusevent-event-order\n// Related ticket - https://bugs.chromium.org/p/chromium/issues/detail?id=449857\nif ( !support.focusin ) {\n\tjQuery.each( { focus: \"focusin\", blur: \"focusout\" }, function( orig, fix ) {\n\n\t\t// Attach a single capturing handler on the document while someone wants focusin/focusout\n\t\tvar handler = function( event ) {\n\t\t\tjQuery.event.simulate( fix, event.target, jQuery.event.fix( event ) );\n\t\t};\n\n\t\tjQuery.event.special[ fix ] = {\n\t\t\tsetup: function() {\n\n\t\t\t\t// Handle: regular nodes (via `this.ownerDocument`), window\n\t\t\t\t// (via `this.document`) & document (via `this`).\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix );\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.addEventListener( orig, handler, true );\n\t\t\t\t}\n\t\t\t\tdataPriv.access( doc, fix, ( attaches || 0 ) + 1 );\n\t\t\t},\n\t\t\tteardown: function() {\n\t\t\t\tvar doc = this.ownerDocument || this.document || this,\n\t\t\t\t\tattaches = dataPriv.access( doc, fix ) - 1;\n\n\t\t\t\tif ( !attaches ) {\n\t\t\t\t\tdoc.removeEventListener( orig, handler, true );\n\t\t\t\t\tdataPriv.remove( doc, fix );\n\n\t\t\t\t} else {\n\t\t\t\t\tdataPriv.access( doc, fix, attaches );\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t} );\n}\nvar location = window.location;\n\nvar nonce = { guid: Date.now() };\n\nvar rquery = ( /\\?/ );\n\n\n\n// Cross-browser xml parsing\njQuery.parseXML = function( data ) {\n\tvar xml, parserErrorElem;\n\tif ( !data || typeof data !== \"string\" ) {\n\t\treturn null;\n\t}\n\n\t// Support: IE 9 - 11 only\n\t// IE throws on parseFromString with invalid input.\n\ttry {\n\t\txml = ( new window.DOMParser() ).parseFromString( data, \"text/xml\" );\n\t} catch ( e ) {}\n\n\tparserErrorElem = xml && xml.getElementsByTagName( \"parsererror\" )[ 0 ];\n\tif ( !xml || parserErrorElem ) {\n\t\tjQuery.error( \"Invalid XML: \" + (\n\t\t\tparserErrorElem ?\n\t\t\t\tjQuery.map( parserErrorElem.childNodes, function( el ) {\n\t\t\t\t\treturn el.textContent;\n\t\t\t\t} ).join( \"\\n\" ) :\n\t\t\t\tdata\n\t\t) );\n\t}\n\treturn xml;\n};\n\n\nvar\n\trbracket = /\\[\\]$/,\n\trCRLF = /\\r?\\n/g,\n\trsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,\n\trsubmittable = /^(?:input|select|textarea|keygen)/i;\n\nfunction buildParams( prefix, obj, traditional, add ) {\n\tvar name;\n\n\tif ( Array.isArray( obj ) ) {\n\n\t\t// Serialize array item.\n\t\tjQuery.each( obj, function( i, v ) {\n\t\t\tif ( traditional || rbracket.test( prefix ) ) {\n\n\t\t\t\t// Treat each array item as a scalar.\n\t\t\t\tadd( prefix, v );\n\n\t\t\t} else {\n\n\t\t\t\t// Item is non-scalar (array or object), encode its numeric index.\n\t\t\t\tbuildParams(\n\t\t\t\t\tprefix + \"[\" + ( typeof v === \"object\" && v != null ? i : \"\" ) + \"]\",\n\t\t\t\t\tv,\n\t\t\t\t\ttraditional,\n\t\t\t\t\tadd\n\t\t\t\t);\n\t\t\t}\n\t\t} );\n\n\t} else if ( !traditional && toType( obj ) === \"object\" ) {\n\n\t\t// Serialize object item.\n\t\tfor ( name in obj ) {\n\t\t\tbuildParams( prefix + \"[\" + name + \"]\", obj[ name ], traditional, add );\n\t\t}\n\n\t} else {\n\n\t\t// Serialize scalar item.\n\t\tadd( prefix, obj );\n\t}\n}\n\n// Serialize an array of form elements or a set of\n// key/values into a query string\njQuery.param = function( a, traditional ) {\n\tvar prefix,\n\t\ts = [],\n\t\tadd = function( key, valueOrFunction ) {\n\n\t\t\t// If value is a function, invoke it and use its return value\n\t\t\tvar value = isFunction( valueOrFunction ) ?\n\t\t\t\tvalueOrFunction() :\n\t\t\t\tvalueOrFunction;\n\n\t\t\ts[ s.length ] = encodeURIComponent( key ) + \"=\" +\n\t\t\t\tencodeURIComponent( value == null ? \"\" : value );\n\t\t};\n\n\tif ( a == null ) {\n\t\treturn \"\";\n\t}\n\n\t// If an array was passed in, assume that it is an array of form elements.\n\tif ( Array.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {\n\n\t\t// Serialize the form elements\n\t\tjQuery.each( a, function() {\n\t\t\tadd( this.name, this.value );\n\t\t} );\n\n\t} else {\n\n\t\t// If traditional, encode the \"old\" way (the way 1.3.2 or older\n\t\t// did it), otherwise encode params recursively.\n\t\tfor ( prefix in a ) {\n\t\t\tbuildParams( prefix, a[ prefix ], traditional, add );\n\t\t}\n\t}\n\n\t// Return the resulting serialization\n\treturn s.join( \"&\" );\n};\n\njQuery.fn.extend( {\n\tserialize: function() {\n\t\treturn jQuery.param( this.serializeArray() );\n\t},\n\tserializeArray: function() {\n\t\treturn this.map( function() {\n\n\t\t\t// Can add propHook for \"elements\" to filter or add form elements\n\t\t\tvar elements = jQuery.prop( this, \"elements\" );\n\t\t\treturn elements ? jQuery.makeArray( elements ) : this;\n\t\t} ).filter( function() {\n\t\t\tvar type = this.type;\n\n\t\t\t// Use .is( \":disabled\" ) so that fieldset[disabled] works\n\t\t\treturn this.name && !jQuery( this ).is( \":disabled\" ) &&\n\t\t\t\trsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&\n\t\t\t\t( this.checked || !rcheckableType.test( type ) );\n\t\t} ).map( function( _i, elem ) {\n\t\t\tvar val = jQuery( this ).val();\n\n\t\t\tif ( val == null ) {\n\t\t\t\treturn null;\n\t\t\t}\n\n\t\t\tif ( Array.isArray( val ) ) {\n\t\t\t\treturn jQuery.map( val, function( val ) {\n\t\t\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t\t\t} );\n\t\t\t}\n\n\t\t\treturn { name: elem.name, value: val.replace( rCRLF, \"\\r\\n\" ) };\n\t\t} ).get();\n\t}\n} );\n\n\nvar\n\tr20 = /%20/g,\n\trhash = /#.*$/,\n\trantiCache = /([?&])_=[^&]*/,\n\trheaders = /^(.*?):[ \\t]*([^\\r\\n]*)$/mg,\n\n\t// #7653, #8125, #8152: local protocol detection\n\trlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,\n\trnoContent = /^(?:GET|HEAD)$/,\n\trprotocol = /^\\/\\//,\n\n\t/* Prefilters\n\t * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)\n\t * 2) These are called:\n\t * - BEFORE asking for a transport\n\t * - AFTER param serialization (s.data is a string if s.processData is true)\n\t * 3) key is the dataType\n\t * 4) the catchall symbol \"*\" can be used\n\t * 5) execution will start with transport dataType and THEN continue down to \"*\" if needed\n\t */\n\tprefilters = {},\n\n\t/* Transports bindings\n\t * 1) key is the dataType\n\t * 2) the catchall symbol \"*\" can be used\n\t * 3) selection will start with transport dataType and THEN go to \"*\" if needed\n\t */\n\ttransports = {},\n\n\t// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression\n\tallTypes = \"*/\".concat( \"*\" ),\n\n\t// Anchor tag for parsing the document origin\n\toriginAnchor = document.createElement( \"a\" );\n\noriginAnchor.href = location.href;\n\n// Base \"constructor\" for jQuery.ajaxPrefilter and jQuery.ajaxTransport\nfunction addToPrefiltersOrTransports( structure ) {\n\n\t// dataTypeExpression is optional and defaults to \"*\"\n\treturn function( dataTypeExpression, func ) {\n\n\t\tif ( typeof dataTypeExpression !== \"string\" ) {\n\t\t\tfunc = dataTypeExpression;\n\t\t\tdataTypeExpression = \"*\";\n\t\t}\n\n\t\tvar dataType,\n\t\t\ti = 0,\n\t\t\tdataTypes = dataTypeExpression.toLowerCase().match( rnothtmlwhite ) || [];\n\n\t\tif ( isFunction( func ) ) {\n\n\t\t\t// For each dataType in the dataTypeExpression\n\t\t\twhile ( ( dataType = dataTypes[ i++ ] ) ) {\n\n\t\t\t\t// Prepend if requested\n\t\t\t\tif ( dataType[ 0 ] === \"+\" ) {\n\t\t\t\t\tdataType = dataType.slice( 1 ) || \"*\";\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).unshift( func );\n\n\t\t\t\t// Otherwise append\n\t\t\t\t} else {\n\t\t\t\t\t( structure[ dataType ] = structure[ dataType ] || [] ).push( func );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t};\n}\n\n// Base inspection function for prefilters and transports\nfunction inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {\n\n\tvar inspected = {},\n\t\tseekingTransport = ( structure === transports );\n\n\tfunction inspect( dataType ) {\n\t\tvar selected;\n\t\tinspected[ dataType ] = true;\n\t\tjQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {\n\t\t\tvar dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );\n\t\t\tif ( typeof dataTypeOrTransport === \"string\" &&\n\t\t\t\t!seekingTransport && !inspected[ dataTypeOrTransport ] ) {\n\n\t\t\t\toptions.dataTypes.unshift( dataTypeOrTransport );\n\t\t\t\tinspect( dataTypeOrTransport );\n\t\t\t\treturn false;\n\t\t\t} else if ( seekingTransport ) {\n\t\t\t\treturn !( selected = dataTypeOrTransport );\n\t\t\t}\n\t\t} );\n\t\treturn selected;\n\t}\n\n\treturn inspect( options.dataTypes[ 0 ] ) || !inspected[ \"*\" ] && inspect( \"*\" );\n}\n\n// A special extend for ajax options\n// that takes \"flat\" options (not to be deep extended)\n// Fixes #9887\nfunction ajaxExtend( target, src ) {\n\tvar key, deep,\n\t\tflatOptions = jQuery.ajaxSettings.flatOptions || {};\n\n\tfor ( key in src ) {\n\t\tif ( src[ key ] !== undefined ) {\n\t\t\t( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];\n\t\t}\n\t}\n\tif ( deep ) {\n\t\tjQuery.extend( true, target, deep );\n\t}\n\n\treturn target;\n}\n\n/* Handles responses to an ajax request:\n * - finds the right dataType (mediates between content-type and expected dataType)\n * - returns the corresponding response\n */\nfunction ajaxHandleResponses( s, jqXHR, responses ) {\n\n\tvar ct, type, finalDataType, firstDataType,\n\t\tcontents = s.contents,\n\t\tdataTypes = s.dataTypes;\n\n\t// Remove auto dataType and get content-type in the process\n\twhile ( dataTypes[ 0 ] === \"*\" ) {\n\t\tdataTypes.shift();\n\t\tif ( ct === undefined ) {\n\t\t\tct = s.mimeType || jqXHR.getResponseHeader( \"Content-Type\" );\n\t\t}\n\t}\n\n\t// Check if we're dealing with a known content-type\n\tif ( ct ) {\n\t\tfor ( type in contents ) {\n\t\t\tif ( contents[ type ] && contents[ type ].test( ct ) ) {\n\t\t\t\tdataTypes.unshift( type );\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\t// Check to see if we have a response for the expected dataType\n\tif ( dataTypes[ 0 ] in responses ) {\n\t\tfinalDataType = dataTypes[ 0 ];\n\t} else {\n\n\t\t// Try convertible dataTypes\n\t\tfor ( type in responses ) {\n\t\t\tif ( !dataTypes[ 0 ] || s.converters[ type + \" \" + dataTypes[ 0 ] ] ) {\n\t\t\t\tfinalDataType = type;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif ( !firstDataType ) {\n\t\t\t\tfirstDataType = type;\n\t\t\t}\n\t\t}\n\n\t\t// Or just use first one\n\t\tfinalDataType = finalDataType || firstDataType;\n\t}\n\n\t// If we found a dataType\n\t// We add the dataType to the list if needed\n\t// and return the corresponding response\n\tif ( finalDataType ) {\n\t\tif ( finalDataType !== dataTypes[ 0 ] ) {\n\t\t\tdataTypes.unshift( finalDataType );\n\t\t}\n\t\treturn responses[ finalDataType ];\n\t}\n}\n\n/* Chain conversions given the request and the original response\n * Also sets the responseXXX fields on the jqXHR instance\n */\nfunction ajaxConvert( s, response, jqXHR, isSuccess ) {\n\tvar conv2, current, conv, tmp, prev,\n\t\tconverters = {},\n\n\t\t// Work with a copy of dataTypes in case we need to modify it for conversion\n\t\tdataTypes = s.dataTypes.slice();\n\n\t// Create converters map with lowercased keys\n\tif ( dataTypes[ 1 ] ) {\n\t\tfor ( conv in s.converters ) {\n\t\t\tconverters[ conv.toLowerCase() ] = s.converters[ conv ];\n\t\t}\n\t}\n\n\tcurrent = dataTypes.shift();\n\n\t// Convert to each sequential dataType\n\twhile ( current ) {\n\n\t\tif ( s.responseFields[ current ] ) {\n\t\t\tjqXHR[ s.responseFields[ current ] ] = response;\n\t\t}\n\n\t\t// Apply the dataFilter if provided\n\t\tif ( !prev && isSuccess && s.dataFilter ) {\n\t\t\tresponse = s.dataFilter( response, s.dataType );\n\t\t}\n\n\t\tprev = current;\n\t\tcurrent = dataTypes.shift();\n\n\t\tif ( current ) {\n\n\t\t\t// There's only work to do if current dataType is non-auto\n\t\t\tif ( current === \"*\" ) {\n\n\t\t\t\tcurrent = prev;\n\n\t\t\t// Convert response if prev dataType is non-auto and differs from current\n\t\t\t} else if ( prev !== \"*\" && prev !== current ) {\n\n\t\t\t\t// Seek a direct converter\n\t\t\t\tconv = converters[ prev + \" \" + current ] || converters[ \"* \" + current ];\n\n\t\t\t\t// If none found, seek a pair\n\t\t\t\tif ( !conv ) {\n\t\t\t\t\tfor ( conv2 in converters ) {\n\n\t\t\t\t\t\t// If conv2 outputs current\n\t\t\t\t\t\ttmp = conv2.split( \" \" );\n\t\t\t\t\t\tif ( tmp[ 1 ] === current ) {\n\n\t\t\t\t\t\t\t// If prev can be converted to accepted input\n\t\t\t\t\t\t\tconv = converters[ prev + \" \" + tmp[ 0 ] ] ||\n\t\t\t\t\t\t\t\tconverters[ \"* \" + tmp[ 0 ] ];\n\t\t\t\t\t\t\tif ( conv ) {\n\n\t\t\t\t\t\t\t\t// Condense equivalence converters\n\t\t\t\t\t\t\t\tif ( conv === true ) {\n\t\t\t\t\t\t\t\t\tconv = converters[ conv2 ];\n\n\t\t\t\t\t\t\t\t// Otherwise, insert the intermediate dataType\n\t\t\t\t\t\t\t\t} else if ( converters[ conv2 ] !== true ) {\n\t\t\t\t\t\t\t\t\tcurrent = tmp[ 0 ];\n\t\t\t\t\t\t\t\t\tdataTypes.unshift( tmp[ 1 ] );\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Apply converter (if not an equivalence)\n\t\t\t\tif ( conv !== true ) {\n\n\t\t\t\t\t// Unless errors are allowed to bubble, catch and return them\n\t\t\t\t\tif ( conv && s.throws ) {\n\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t} else {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tresponse = conv( response );\n\t\t\t\t\t\t} catch ( e ) {\n\t\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\t\tstate: \"parsererror\",\n\t\t\t\t\t\t\t\terror: conv ? e : \"No conversion from \" + prev + \" to \" + current\n\t\t\t\t\t\t\t};\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn { state: \"success\", data: response };\n}\n\njQuery.extend( {\n\n\t// Counter for holding the number of active queries\n\tactive: 0,\n\n\t// Last-Modified header cache for next request\n\tlastModified: {},\n\tetag: {},\n\n\tajaxSettings: {\n\t\turl: location.href,\n\t\ttype: \"GET\",\n\t\tisLocal: rlocalProtocol.test( location.protocol ),\n\t\tglobal: true,\n\t\tprocessData: true,\n\t\tasync: true,\n\t\tcontentType: \"application/x-www-form-urlencoded; charset=UTF-8\",\n\n\t\t/*\n\t\ttimeout: 0,\n\t\tdata: null,\n\t\tdataType: null,\n\t\tusername: null,\n\t\tpassword: null,\n\t\tcache: null,\n\t\tthrows: false,\n\t\ttraditional: false,\n\t\theaders: {},\n\t\t*/\n\n\t\taccepts: {\n\t\t\t\"*\": allTypes,\n\t\t\ttext: \"text/plain\",\n\t\t\thtml: \"text/html\",\n\t\t\txml: \"application/xml, text/xml\",\n\t\t\tjson: \"application/json, text/javascript\"\n\t\t},\n\n\t\tcontents: {\n\t\t\txml: /\\bxml\\b/,\n\t\t\thtml: /\\bhtml/,\n\t\t\tjson: /\\bjson\\b/\n\t\t},\n\n\t\tresponseFields: {\n\t\t\txml: \"responseXML\",\n\t\t\ttext: \"responseText\",\n\t\t\tjson: \"responseJSON\"\n\t\t},\n\n\t\t// Data converters\n\t\t// Keys separate source (or catchall \"*\") and destination types with a single space\n\t\tconverters: {\n\n\t\t\t// Convert anything to text\n\t\t\t\"* text\": String,\n\n\t\t\t// Text to html (true = no transformation)\n\t\t\t\"text html\": true,\n\n\t\t\t// Evaluate text as a json expression\n\t\t\t\"text json\": JSON.parse,\n\n\t\t\t// Parse text as xml\n\t\t\t\"text xml\": jQuery.parseXML\n\t\t},\n\n\t\t// For options that shouldn't be deep extended:\n\t\t// you can add your own custom options here if\n\t\t// and when you create one that shouldn't be\n\t\t// deep extended (see ajaxExtend)\n\t\tflatOptions: {\n\t\t\turl: true,\n\t\t\tcontext: true\n\t\t}\n\t},\n\n\t// Creates a full fledged settings object into target\n\t// with both ajaxSettings and settings fields.\n\t// If target is omitted, writes into ajaxSettings.\n\tajaxSetup: function( target, settings ) {\n\t\treturn settings ?\n\n\t\t\t// Building a settings object\n\t\t\tajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :\n\n\t\t\t// Extending ajaxSettings\n\t\t\tajaxExtend( jQuery.ajaxSettings, target );\n\t},\n\n\tajaxPrefilter: addToPrefiltersOrTransports( prefilters ),\n\tajaxTransport: addToPrefiltersOrTransports( transports ),\n\n\t// Main method\n\tajax: function( url, options ) {\n\n\t\t// If url is an object, simulate pre-1.5 signature\n\t\tif ( typeof url === \"object\" ) {\n\t\t\toptions = url;\n\t\t\turl = undefined;\n\t\t}\n\n\t\t// Force options to be an object\n\t\toptions = options || {};\n\n\t\tvar transport,\n\n\t\t\t// URL without anti-cache param\n\t\t\tcacheURL,\n\n\t\t\t// Response headers\n\t\t\tresponseHeadersString,\n\t\t\tresponseHeaders,\n\n\t\t\t// timeout handle\n\t\t\ttimeoutTimer,\n\n\t\t\t// Url cleanup var\n\t\t\turlAnchor,\n\n\t\t\t// Request state (becomes false upon send and true upon completion)\n\t\t\tcompleted,\n\n\t\t\t// To know if global events are to be dispatched\n\t\t\tfireGlobals,\n\n\t\t\t// Loop variable\n\t\t\ti,\n\n\t\t\t// uncached part of the url\n\t\t\tuncached,\n\n\t\t\t// Create the final options object\n\t\t\ts = jQuery.ajaxSetup( {}, options ),\n\n\t\t\t// Callbacks context\n\t\t\tcallbackContext = s.context || s,\n\n\t\t\t// Context for global events is callbackContext if it is a DOM node or jQuery collection\n\t\t\tglobalEventContext = s.context &&\n\t\t\t\t( callbackContext.nodeType || callbackContext.jquery ) ?\n\t\t\t\tjQuery( callbackContext ) :\n\t\t\t\tjQuery.event,\n\n\t\t\t// Deferreds\n\t\t\tdeferred = jQuery.Deferred(),\n\t\t\tcompleteDeferred = jQuery.Callbacks( \"once memory\" ),\n\n\t\t\t// Status-dependent callbacks\n\t\t\tstatusCode = s.statusCode || {},\n\n\t\t\t// Headers (they are sent all at once)\n\t\t\trequestHeaders = {},\n\t\t\trequestHeadersNames = {},\n\n\t\t\t// Default abort message\n\t\t\tstrAbort = \"canceled\",\n\n\t\t\t// Fake xhr\n\t\t\tjqXHR = {\n\t\t\t\treadyState: 0,\n\n\t\t\t\t// Builds headers hashtable if needed\n\t\t\t\tgetResponseHeader: function( key ) {\n\t\t\t\t\tvar match;\n\t\t\t\t\tif ( completed ) {\n\t\t\t\t\t\tif ( !responseHeaders ) {\n\t\t\t\t\t\t\tresponseHeaders = {};\n\t\t\t\t\t\t\twhile ( ( match = rheaders.exec( responseHeadersString ) ) ) {\n\t\t\t\t\t\t\t\tresponseHeaders[ match[ 1 ].toLowerCase() + \" \" ] =\n\t\t\t\t\t\t\t\t\t( responseHeaders[ match[ 1 ].toLowerCase() + \" \" ] || [] )\n\t\t\t\t\t\t\t\t\t\t.concat( match[ 2 ] );\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t\tmatch = responseHeaders[ key.toLowerCase() + \" \" ];\n\t\t\t\t\t}\n\t\t\t\t\treturn match == null ? null : match.join( \", \" );\n\t\t\t\t},\n\n\t\t\t\t// Raw string\n\t\t\t\tgetAllResponseHeaders: function() {\n\t\t\t\t\treturn completed ? responseHeadersString : null;\n\t\t\t\t},\n\n\t\t\t\t// Caches the header\n\t\t\t\tsetRequestHeader: function( name, value ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\tname = requestHeadersNames[ name.toLowerCase() ] =\n\t\t\t\t\t\t\trequestHeadersNames[ name.toLowerCase() ] || name;\n\t\t\t\t\t\trequestHeaders[ name ] = value;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Overrides response content-type header\n\t\t\t\toverrideMimeType: function( type ) {\n\t\t\t\t\tif ( completed == null ) {\n\t\t\t\t\t\ts.mimeType = type;\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Status-dependent callbacks\n\t\t\t\tstatusCode: function( map ) {\n\t\t\t\t\tvar code;\n\t\t\t\t\tif ( map ) {\n\t\t\t\t\t\tif ( completed ) {\n\n\t\t\t\t\t\t\t// Execute the appropriate callbacks\n\t\t\t\t\t\t\tjqXHR.always( map[ jqXHR.status ] );\n\t\t\t\t\t\t} else {\n\n\t\t\t\t\t\t\t// Lazy-add the new callbacks in a way that preserves old ones\n\t\t\t\t\t\t\tfor ( code in map ) {\n\t\t\t\t\t\t\t\tstatusCode[ code ] = [ statusCode[ code ], map[ code ] ];\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t\treturn this;\n\t\t\t\t},\n\n\t\t\t\t// Cancel the request\n\t\t\t\tabort: function( statusText ) {\n\t\t\t\t\tvar finalText = statusText || strAbort;\n\t\t\t\t\tif ( transport ) {\n\t\t\t\t\t\ttransport.abort( finalText );\n\t\t\t\t\t}\n\t\t\t\t\tdone( 0, finalText );\n\t\t\t\t\treturn this;\n\t\t\t\t}\n\t\t\t};\n\n\t\t// Attach deferreds\n\t\tdeferred.promise( jqXHR );\n\n\t\t// Add protocol if not provided (prefilters might expect it)\n\t\t// Handle falsy url in the settings object (#10093: consistency with old signature)\n\t\t// We also use the url parameter if available\n\t\ts.url = ( ( url || s.url || location.href ) + \"\" )\n\t\t\t.replace( rprotocol, location.protocol + \"//\" );\n\n\t\t// Alias method option to type as per ticket #12004\n\t\ts.type = options.method || options.type || s.method || s.type;\n\n\t\t// Extract dataTypes list\n\t\ts.dataTypes = ( s.dataType || \"*\" ).toLowerCase().match( rnothtmlwhite ) || [ \"\" ];\n\n\t\t// A cross-domain request is in order when the origin doesn't match the current origin.\n\t\tif ( s.crossDomain == null ) {\n\t\t\turlAnchor = document.createElement( \"a\" );\n\n\t\t\t// Support: IE <=8 - 11, Edge 12 - 15\n\t\t\t// IE throws exception on accessing the href property if url is malformed,\n\t\t\t// e.g. http://example.com:80x/\n\t\t\ttry {\n\t\t\t\turlAnchor.href = s.url;\n\n\t\t\t\t// Support: IE <=8 - 11 only\n\t\t\t\t// Anchor's host property isn't correctly set when s.url is relative\n\t\t\t\turlAnchor.href = urlAnchor.href;\n\t\t\t\ts.crossDomain = originAnchor.protocol + \"//\" + originAnchor.host !==\n\t\t\t\t\turlAnchor.protocol + \"//\" + urlAnchor.host;\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// If there is an error parsing the URL, assume it is crossDomain,\n\t\t\t\t// it can be rejected by the transport if it is invalid\n\t\t\t\ts.crossDomain = true;\n\t\t\t}\n\t\t}\n\n\t\t// Convert data if not already a string\n\t\tif ( s.data && s.processData && typeof s.data !== \"string\" ) {\n\t\t\ts.data = jQuery.param( s.data, s.traditional );\n\t\t}\n\n\t\t// Apply prefilters\n\t\tinspectPrefiltersOrTransports( prefilters, s, options, jqXHR );\n\n\t\t// If request was aborted inside a prefilter, stop there\n\t\tif ( completed ) {\n\t\t\treturn jqXHR;\n\t\t}\n\n\t\t// We can fire global events as of now if asked to\n\t\t// Don't fire events if jQuery.event is undefined in an AMD-usage scenario (#15118)\n\t\tfireGlobals = jQuery.event && s.global;\n\n\t\t// Watch for a new set of requests\n\t\tif ( fireGlobals && jQuery.active++ === 0 ) {\n\t\t\tjQuery.event.trigger( \"ajaxStart\" );\n\t\t}\n\n\t\t// Uppercase the type\n\t\ts.type = s.type.toUpperCase();\n\n\t\t// Determine if request has content\n\t\ts.hasContent = !rnoContent.test( s.type );\n\n\t\t// Save the URL in case we're toying with the If-Modified-Since\n\t\t// and/or If-None-Match header later on\n\t\t// Remove hash to simplify url manipulation\n\t\tcacheURL = s.url.replace( rhash, \"\" );\n\n\t\t// More options handling for requests with no content\n\t\tif ( !s.hasContent ) {\n\n\t\t\t// Remember the hash so we can put it back\n\t\t\tuncached = s.url.slice( cacheURL.length );\n\n\t\t\t// If data is available and should be processed, append data to url\n\t\t\tif ( s.data && ( s.processData || typeof s.data === \"string\" ) ) {\n\t\t\t\tcacheURL += ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + s.data;\n\n\t\t\t\t// #9682: remove data so that it's not used in an eventual retry\n\t\t\t\tdelete s.data;\n\t\t\t}\n\n\t\t\t// Add or update anti-cache param if needed\n\t\t\tif ( s.cache === false ) {\n\t\t\t\tcacheURL = cacheURL.replace( rantiCache, \"$1\" );\n\t\t\t\tuncached = ( rquery.test( cacheURL ) ? \"&\" : \"?\" ) + \"_=\" + ( nonce.guid++ ) +\n\t\t\t\t\tuncached;\n\t\t\t}\n\n\t\t\t// Put hash and anti-cache on the URL that will be requested (gh-1732)\n\t\t\ts.url = cacheURL + uncached;\n\n\t\t// Change '%20' to '+' if this is encoded form body content (gh-2658)\n\t\t} else if ( s.data && s.processData &&\n\t\t\t( s.contentType || \"\" ).indexOf( \"application/x-www-form-urlencoded\" ) === 0 ) {\n\t\t\ts.data = s.data.replace( r20, \"+\" );\n\t\t}\n\n\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\tif ( s.ifModified ) {\n\t\t\tif ( jQuery.lastModified[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-Modified-Since\", jQuery.lastModified[ cacheURL ] );\n\t\t\t}\n\t\t\tif ( jQuery.etag[ cacheURL ] ) {\n\t\t\t\tjqXHR.setRequestHeader( \"If-None-Match\", jQuery.etag[ cacheURL ] );\n\t\t\t}\n\t\t}\n\n\t\t// Set the correct header, if data is being sent\n\t\tif ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {\n\t\t\tjqXHR.setRequestHeader( \"Content-Type\", s.contentType );\n\t\t}\n\n\t\t// Set the Accepts header for the server, depending on the dataType\n\t\tjqXHR.setRequestHeader(\n\t\t\t\"Accept\",\n\t\t\ts.dataTypes[ 0 ] && s.accepts[ s.dataTypes[ 0 ] ] ?\n\t\t\t\ts.accepts[ s.dataTypes[ 0 ] ] +\n\t\t\t\t\t( s.dataTypes[ 0 ] !== \"*\" ? \", \" + allTypes + \"; q=0.01\" : \"\" ) :\n\t\t\t\ts.accepts[ \"*\" ]\n\t\t);\n\n\t\t// Check for headers option\n\t\tfor ( i in s.headers ) {\n\t\t\tjqXHR.setRequestHeader( i, s.headers[ i ] );\n\t\t}\n\n\t\t// Allow custom headers/mimetypes and early abort\n\t\tif ( s.beforeSend &&\n\t\t\t( s.beforeSend.call( callbackContext, jqXHR, s ) === false || completed ) ) {\n\n\t\t\t// Abort if not done already and return\n\t\t\treturn jqXHR.abort();\n\t\t}\n\n\t\t// Aborting is no longer a cancellation\n\t\tstrAbort = \"abort\";\n\n\t\t// Install callbacks on deferreds\n\t\tcompleteDeferred.add( s.complete );\n\t\tjqXHR.done( s.success );\n\t\tjqXHR.fail( s.error );\n\n\t\t// Get transport\n\t\ttransport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );\n\n\t\t// If no transport, we auto-abort\n\t\tif ( !transport ) {\n\t\t\tdone( -1, \"No Transport\" );\n\t\t} else {\n\t\t\tjqXHR.readyState = 1;\n\n\t\t\t// Send global event\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxSend\", [ jqXHR, s ] );\n\t\t\t}\n\n\t\t\t// If request was aborted inside ajaxSend, stop there\n\t\t\tif ( completed ) {\n\t\t\t\treturn jqXHR;\n\t\t\t}\n\n\t\t\t// Timeout\n\t\t\tif ( s.async && s.timeout > 0 ) {\n\t\t\t\ttimeoutTimer = window.setTimeout( function() {\n\t\t\t\t\tjqXHR.abort( \"timeout\" );\n\t\t\t\t}, s.timeout );\n\t\t\t}\n\n\t\t\ttry {\n\t\t\t\tcompleted = false;\n\t\t\t\ttransport.send( requestHeaders, done );\n\t\t\t} catch ( e ) {\n\n\t\t\t\t// Rethrow post-completion exceptions\n\t\t\t\tif ( completed ) {\n\t\t\t\t\tthrow e;\n\t\t\t\t}\n\n\t\t\t\t// Propagate others as results\n\t\t\t\tdone( -1, e );\n\t\t\t}\n\t\t}\n\n\t\t// Callback for when everything is done\n\t\tfunction done( status, nativeStatusText, responses, headers ) {\n\t\t\tvar isSuccess, success, error, response, modified,\n\t\t\t\tstatusText = nativeStatusText;\n\n\t\t\t// Ignore repeat invocations\n\t\t\tif ( completed ) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tcompleted = true;\n\n\t\t\t// Clear timeout if it exists\n\t\t\tif ( timeoutTimer ) {\n\t\t\t\twindow.clearTimeout( timeoutTimer );\n\t\t\t}\n\n\t\t\t// Dereference transport for early garbage collection\n\t\t\t// (no matter how long the jqXHR object will be used)\n\t\t\ttransport = undefined;\n\n\t\t\t// Cache response headers\n\t\t\tresponseHeadersString = headers || \"\";\n\n\t\t\t// Set readyState\n\t\t\tjqXHR.readyState = status > 0 ? 4 : 0;\n\n\t\t\t// Determine if successful\n\t\t\tisSuccess = status >= 200 && status < 300 || status === 304;\n\n\t\t\t// Get response data\n\t\t\tif ( responses ) {\n\t\t\t\tresponse = ajaxHandleResponses( s, jqXHR, responses );\n\t\t\t}\n\n\t\t\t// Use a noop converter for missing script but not if jsonp\n\t\t\tif ( !isSuccess &&\n\t\t\t\tjQuery.inArray( \"script\", s.dataTypes ) > -1 &&\n\t\t\t\tjQuery.inArray( \"json\", s.dataTypes ) < 0 ) {\n\t\t\t\ts.converters[ \"text script\" ] = function() {};\n\t\t\t}\n\n\t\t\t// Convert no matter what (that way responseXXX fields are always set)\n\t\t\tresponse = ajaxConvert( s, response, jqXHR, isSuccess );\n\n\t\t\t// If successful, handle type chaining\n\t\t\tif ( isSuccess ) {\n\n\t\t\t\t// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.\n\t\t\t\tif ( s.ifModified ) {\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"Last-Modified\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.lastModified[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t\tmodified = jqXHR.getResponseHeader( \"etag\" );\n\t\t\t\t\tif ( modified ) {\n\t\t\t\t\t\tjQuery.etag[ cacheURL ] = modified;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// if no content\n\t\t\t\tif ( status === 204 || s.type === \"HEAD\" ) {\n\t\t\t\t\tstatusText = \"nocontent\";\n\n\t\t\t\t// if not modified\n\t\t\t\t} else if ( status === 304 ) {\n\t\t\t\t\tstatusText = \"notmodified\";\n\n\t\t\t\t// If we have data, let's convert it\n\t\t\t\t} else {\n\t\t\t\t\tstatusText = response.state;\n\t\t\t\t\tsuccess = response.data;\n\t\t\t\t\terror = response.error;\n\t\t\t\t\tisSuccess = !error;\n\t\t\t\t}\n\t\t\t} else {\n\n\t\t\t\t// Extract error from statusText and normalize for non-aborts\n\t\t\t\terror = statusText;\n\t\t\t\tif ( status || !statusText ) {\n\t\t\t\t\tstatusText = \"error\";\n\t\t\t\t\tif ( status < 0 ) {\n\t\t\t\t\t\tstatus = 0;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\t// Set data for the fake xhr object\n\t\t\tjqXHR.status = status;\n\t\t\tjqXHR.statusText = ( nativeStatusText || statusText ) + \"\";\n\n\t\t\t// Success/Error\n\t\t\tif ( isSuccess ) {\n\t\t\t\tdeferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );\n\t\t\t} else {\n\t\t\t\tdeferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );\n\t\t\t}\n\n\t\t\t// Status-dependent callbacks\n\t\t\tjqXHR.statusCode( statusCode );\n\t\t\tstatusCode = undefined;\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( isSuccess ? \"ajaxSuccess\" : \"ajaxError\",\n\t\t\t\t\t[ jqXHR, s, isSuccess ? success : error ] );\n\t\t\t}\n\n\t\t\t// Complete\n\t\t\tcompleteDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );\n\n\t\t\tif ( fireGlobals ) {\n\t\t\t\tglobalEventContext.trigger( \"ajaxComplete\", [ jqXHR, s ] );\n\n\t\t\t\t// Handle the global AJAX counter\n\t\t\t\tif ( !( --jQuery.active ) ) {\n\t\t\t\t\tjQuery.event.trigger( \"ajaxStop\" );\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn jqXHR;\n\t},\n\n\tgetJSON: function( url, data, callback ) {\n\t\treturn jQuery.get( url, data, callback, \"json\" );\n\t},\n\n\tgetScript: function( url, callback ) {\n\t\treturn jQuery.get( url, undefined, callback, \"script\" );\n\t}\n} );\n\njQuery.each( [ \"get\", \"post\" ], function( _i, method ) {\n\tjQuery[ method ] = function( url, data, callback, type ) {\n\n\t\t// Shift arguments if data argument was omitted\n\t\tif ( isFunction( data ) ) {\n\t\t\ttype = type || callback;\n\t\t\tcallback = data;\n\t\t\tdata = undefined;\n\t\t}\n\n\t\t// The url can be an options object (which then must have .url)\n\t\treturn jQuery.ajax( jQuery.extend( {\n\t\t\turl: url,\n\t\t\ttype: method,\n\t\t\tdataType: type,\n\t\t\tdata: data,\n\t\t\tsuccess: callback\n\t\t}, jQuery.isPlainObject( url ) && url ) );\n\t};\n} );\n\njQuery.ajaxPrefilter( function( s ) {\n\tvar i;\n\tfor ( i in s.headers ) {\n\t\tif ( i.toLowerCase() === \"content-type\" ) {\n\t\t\ts.contentType = s.headers[ i ] || \"\";\n\t\t}\n\t}\n} );\n\n\njQuery._evalUrl = function( url, options, doc ) {\n\treturn jQuery.ajax( {\n\t\turl: url,\n\n\t\t// Make this explicit, since user can override this through ajaxSetup (#11264)\n\t\ttype: \"GET\",\n\t\tdataType: \"script\",\n\t\tcache: true,\n\t\tasync: false,\n\t\tglobal: false,\n\n\t\t// Only evaluate the response if it is successful (gh-4126)\n\t\t// dataFilter is not invoked for failure responses, so using it instead\n\t\t// of the default converter is kludgy but it works.\n\t\tconverters: {\n\t\t\t\"text script\": function() {}\n\t\t},\n\t\tdataFilter: function( response ) {\n\t\t\tjQuery.globalEval( response, options, doc );\n\t\t}\n\t} );\n};\n\n\njQuery.fn.extend( {\n\twrapAll: function( html ) {\n\t\tvar wrap;\n\n\t\tif ( this[ 0 ] ) {\n\t\t\tif ( isFunction( html ) ) {\n\t\t\t\thtml = html.call( this[ 0 ] );\n\t\t\t}\n\n\t\t\t// The elements to wrap the target around\n\t\t\twrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );\n\n\t\t\tif ( this[ 0 ].parentNode ) {\n\t\t\t\twrap.insertBefore( this[ 0 ] );\n\t\t\t}\n\n\t\t\twrap.map( function() {\n\t\t\t\tvar elem = this;\n\n\t\t\t\twhile ( elem.firstElementChild ) {\n\t\t\t\t\telem = elem.firstElementChild;\n\t\t\t\t}\n\n\t\t\t\treturn elem;\n\t\t\t} ).append( this );\n\t\t}\n\n\t\treturn this;\n\t},\n\n\twrapInner: function( html ) {\n\t\tif ( isFunction( html ) ) {\n\t\t\treturn this.each( function( i ) {\n\t\t\t\tjQuery( this ).wrapInner( html.call( this, i ) );\n\t\t\t} );\n\t\t}\n\n\t\treturn this.each( function() {\n\t\t\tvar self = jQuery( this ),\n\t\t\t\tcontents = self.contents();\n\n\t\t\tif ( contents.length ) {\n\t\t\t\tcontents.wrapAll( html );\n\n\t\t\t} else {\n\t\t\t\tself.append( html );\n\t\t\t}\n\t\t} );\n\t},\n\n\twrap: function( html ) {\n\t\tvar htmlIsFunction = isFunction( html );\n\n\t\treturn this.each( function( i ) {\n\t\t\tjQuery( this ).wrapAll( htmlIsFunction ? html.call( this, i ) : html );\n\t\t} );\n\t},\n\n\tunwrap: function( selector ) {\n\t\tthis.parent( selector ).not( \"body\" ).each( function() {\n\t\t\tjQuery( this ).replaceWith( this.childNodes );\n\t\t} );\n\t\treturn this;\n\t}\n} );\n\n\njQuery.expr.pseudos.hidden = function( elem ) {\n\treturn !jQuery.expr.pseudos.visible( elem );\n};\njQuery.expr.pseudos.visible = function( elem ) {\n\treturn !!( elem.offsetWidth || elem.offsetHeight || elem.getClientRects().length );\n};\n\n\n\n\njQuery.ajaxSettings.xhr = function() {\n\ttry {\n\t\treturn new window.XMLHttpRequest();\n\t} catch ( e ) {}\n};\n\nvar xhrSuccessStatus = {\n\n\t\t// File protocol always yields status code 0, assume 200\n\t\t0: 200,\n\n\t\t// Support: IE <=9 only\n\t\t// #1450: sometimes IE returns 1223 when it should be 204\n\t\t1223: 204\n\t},\n\txhrSupported = jQuery.ajaxSettings.xhr();\n\nsupport.cors = !!xhrSupported && ( \"withCredentials\" in xhrSupported );\nsupport.ajax = xhrSupported = !!xhrSupported;\n\njQuery.ajaxTransport( function( options ) {\n\tvar callback, errorCallback;\n\n\t// Cross domain only allowed if supported through XMLHttpRequest\n\tif ( support.cors || xhrSupported && !options.crossDomain ) {\n\t\treturn {\n\t\t\tsend: function( headers, complete ) {\n\t\t\t\tvar i,\n\t\t\t\t\txhr = options.xhr();\n\n\t\t\t\txhr.open(\n\t\t\t\t\toptions.type,\n\t\t\t\t\toptions.url,\n\t\t\t\t\toptions.async,\n\t\t\t\t\toptions.username,\n\t\t\t\t\toptions.password\n\t\t\t\t);\n\n\t\t\t\t// Apply custom fields if provided\n\t\t\t\tif ( options.xhrFields ) {\n\t\t\t\t\tfor ( i in options.xhrFields ) {\n\t\t\t\t\t\txhr[ i ] = options.xhrFields[ i ];\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\t// Override mime type if needed\n\t\t\t\tif ( options.mimeType && xhr.overrideMimeType ) {\n\t\t\t\t\txhr.overrideMimeType( options.mimeType );\n\t\t\t\t}\n\n\t\t\t\t// X-Requested-With header\n\t\t\t\t// For cross-domain requests, seeing as conditions for a preflight are\n\t\t\t\t// akin to a jigsaw puzzle, we simply never set it to be sure.\n\t\t\t\t// (it can always be set on a per-request basis or even using ajaxSetup)\n\t\t\t\t// For same-domain requests, won't change header if already provided.\n\t\t\t\tif ( !options.crossDomain && !headers[ \"X-Requested-With\" ] ) {\n\t\t\t\t\theaders[ \"X-Requested-With\" ] = \"XMLHttpRequest\";\n\t\t\t\t}\n\n\t\t\t\t// Set headers\n\t\t\t\tfor ( i in headers ) {\n\t\t\t\t\txhr.setRequestHeader( i, headers[ i ] );\n\t\t\t\t}\n\n\t\t\t\t// Callback\n\t\t\t\tcallback = function( type ) {\n\t\t\t\t\treturn function() {\n\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\tcallback = errorCallback = xhr.onload =\n\t\t\t\t\t\t\t\txhr.onerror = xhr.onabort = xhr.ontimeout =\n\t\t\t\t\t\t\t\t\txhr.onreadystatechange = null;\n\n\t\t\t\t\t\t\tif ( type === \"abort\" ) {\n\t\t\t\t\t\t\t\txhr.abort();\n\t\t\t\t\t\t\t} else if ( type === \"error\" ) {\n\n\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t// On a manual native abort, IE9 throws\n\t\t\t\t\t\t\t\t// errors on any property access that is not readyState\n\t\t\t\t\t\t\t\tif ( typeof xhr.status !== \"number\" ) {\n\t\t\t\t\t\t\t\t\tcomplete( 0, \"error\" );\n\t\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\t\tcomplete(\n\n\t\t\t\t\t\t\t\t\t\t// File: protocol always yields status 0; see #8605, #14207\n\t\t\t\t\t\t\t\t\t\txhr.status,\n\t\t\t\t\t\t\t\t\t\txhr.statusText\n\t\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tcomplete(\n\t\t\t\t\t\t\t\t\txhrSuccessStatus[ xhr.status ] || xhr.status,\n\t\t\t\t\t\t\t\t\txhr.statusText,\n\n\t\t\t\t\t\t\t\t\t// Support: IE <=9 only\n\t\t\t\t\t\t\t\t\t// IE9 has no XHR2 but throws on binary (trac-11426)\n\t\t\t\t\t\t\t\t\t// For XHR2 non-text, let the caller handle it (gh-2498)\n\t\t\t\t\t\t\t\t\t( xhr.responseType || \"text\" ) !== \"text\" ||\n\t\t\t\t\t\t\t\t\ttypeof xhr.responseText !== \"string\" ?\n\t\t\t\t\t\t\t\t\t\t{ binary: xhr.response } :\n\t\t\t\t\t\t\t\t\t\t{ text: xhr.responseText },\n\t\t\t\t\t\t\t\t\txhr.getAllResponseHeaders()\n\t\t\t\t\t\t\t\t);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t};\n\n\t\t\t\t// Listen to events\n\t\t\t\txhr.onload = callback();\n\t\t\t\terrorCallback = xhr.onerror = xhr.ontimeout = callback( \"error\" );\n\n\t\t\t\t// Support: IE 9 only\n\t\t\t\t// Use onreadystatechange to replace onabort\n\t\t\t\t// to handle uncaught aborts\n\t\t\t\tif ( xhr.onabort !== undefined ) {\n\t\t\t\t\txhr.onabort = errorCallback;\n\t\t\t\t} else {\n\t\t\t\t\txhr.onreadystatechange = function() {\n\n\t\t\t\t\t\t// Check readyState before timeout as it changes\n\t\t\t\t\t\tif ( xhr.readyState === 4 ) {\n\n\t\t\t\t\t\t\t// Allow onerror to be called first,\n\t\t\t\t\t\t\t// but that will not handle a native abort\n\t\t\t\t\t\t\t// Also, save errorCallback to a variable\n\t\t\t\t\t\t\t// as xhr.onerror cannot be accessed\n\t\t\t\t\t\t\twindow.setTimeout( function() {\n\t\t\t\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\t\t\t\terrorCallback();\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t} );\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t}\n\n\t\t\t\t// Create the abort callback\n\t\t\t\tcallback = callback( \"abort\" );\n\n\t\t\t\ttry {\n\n\t\t\t\t\t// Do send the request (this may raise an exception)\n\t\t\t\t\txhr.send( options.hasContent && options.data || null );\n\t\t\t\t} catch ( e ) {\n\n\t\t\t\t\t// #14683: Only rethrow if this hasn't been notified as an error yet\n\t\t\t\t\tif ( callback ) {\n\t\t\t\t\t\tthrow e;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t},\n\n\t\t\tabort: function() {\n\t\t\t\tif ( callback ) {\n\t\t\t\t\tcallback();\n\t\t\t\t}\n\t\t\t}\n\t\t};\n\t}\n} );\n\n\n\n\n// Prevent auto-execution of scripts when no explicit dataType was provided (See gh-2432)\njQuery.ajaxPrefilter( function( s ) {\n\tif ( s.crossDomain ) {\n\t\ts.contents.script = false;\n\t}\n} );\n\n// Install script dataType\njQuery.ajaxSetup( {\n\taccepts: {\n\t\tscript: \"text/javascript, application/javascript, \" +\n\t\t\t\"application/ecmascript, application/x-ecmascript\"\n\t},\n\tcontents: {\n\t\tscript: /\\b(?:java|ecma)script\\b/\n\t},\n\tconverters: {\n\t\t\"text script\": function( text ) {\n\t\t\tjQuery.globalEval( text );\n\t\t\treturn text;\n\t\t}\n\t}\n} );\n\n// Handle cache's special case and crossDomain\njQuery.ajaxPrefilter( \"script\", function( s ) {\n\tif ( s.cache === undefined ) {\n\t\ts.cache = false;\n\t}\n\tif ( s.crossDomain ) {\n\t\ts.type = \"GET\";\n\t}\n} );\n\n// Bind script tag hack transport\njQuery.ajaxTransport( \"script\", function( s ) {\n\n\t// This transport only deals with cross domain or forced-by-attrs requests\n\tif ( s.crossDomain || s.scriptAttrs ) {\n\t\tvar script, callback;\n\t\treturn {\n\t\t\tsend: function( _, complete ) {\n\t\t\t\tscript = jQuery( \"